test(ata): reject hostile constraint-map coercion before scoring - #718
seonghobae wants to merge 1 commit into
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@opencode-agent address Fresh exact-current reconciliation + GREEN handoff for issue #683 / Draft #718. Immediately before any write refetch source head, live protected The branch is now 13 protected-main commits behind but has exactly one unique fail-first test path. Reconcile protected main non-destructively first; preserve the valid RED history from CI run Implement the minimum GREEN after reconciliation:
Do not widen into CAT/test-design Rust ownership (#721/#629), |
|
@opencode-agent address Reacquire the bounded source-writer lease for Draft #718 / issue #683 only if a final refetch still shows source head Fresh compare is diverged: this branch has exactly one unique fail-first test path and is 17 protected-main commits behind, merge base The valid RED already reached the intended public boundary: malformed/hostile
Do not widen into #721/#629 CAT numerical ownership, |
|
Closing as superseded by #726. Exact verification before closure: #718 changes only |
Fail-first trust-boundary slice for #683
Protected
mainat branch creation and final pre-PR refetch:640de7dd39d944749b92b1a88bafa8e1787a0847.PR #682 is now protected-main behavior and safely validates the top-level
contentlabel array before item-information work. The remaining ATA semantic controls still usestr(...)/int(...)coercion for content-constraint maps, exposure maps, and scalar controls after psychometric item-information computation. Those conversions can execute caller-defined callbacks and silently accept booleans/fractional values outside the documented finite semantic domains.This Draft adds only intentional public-boundary RED tests proving:
min_per_content/max_per_contentkeys and counts are rejected without invoking__str__,__repr__,__int__, or__index__;exposure_countsidentities are rejected without arbitrary integer conversion;seedandexposure_maxcontrols fail as non-integers; anditem_information_matrix()executes.The tests use callback counters and a counted numeric boundary so setup/import/fixture failure cannot be mistaken for valid RED.
Minimum GREEN after exact RED proof
min_per_content/max_per_contentkeys against the same accepted string scalar domain ascontent, and values as bounded non-Boolean exact integers before numeric scoring.exposure_countskeys/counts and scalarseed/exposure_maxwithout arbitrary coercion callbacks. Preserve accepted built-in and NumPy scalar forms only where the public contract already intends them.item_information_matrix()whenever the value can be validated from bank metadata/control inputs alone.Do not widen this slice into CAT/test-assembly Rust numerical ownership (#629), top-1 ranking work, a new ATA optimizer, dependencies/workflows, version/release, hosted state, or canonical #604 documentation. Keep Draft through RED→GREEN. Advances #683.