Skip to content

fix(reflection): reject incomplete or coerced Judge decisions - #35

Merged
xiaour merged 1 commit into
xiaour:mainfrom
BigDataDZ:codex/judge-verdict-validation
Oct 16, 2026
Merged

xiaour merged 1 commit into
xiaour:mainfrom
BigDataDZ:codex/judge-verdict-validation

Conversation

@BigDataDZ

Copy link
Copy Markdown
Collaborator

The Judge parser accepted a verdict when any one decision field was boolean, then coerced all decisions with Boolean(...). As a result, consistentWithData:"false" could pass an answer and needsReplan:"false" could trigger a production replan. Require actual JSON booleans for all three decisions before accepting a verdict.

Partial or wrongly typed verdicts now take the existing degraded/pending path. Valid positive and negative verdicts, fenced/prose-wrapped JSON, optional reason/hint and extra properties keep their behavior. Independent numeric validation and refusal replanning remain effective. Update the eval documentation accordingly.

Validation: 26 expected regression failures reproduced before the fix; focused reflection/eval suites 56/56 passed; full npm test 533 tests (521 passed, 12 optional skips, 0 failures); npm run lint 0 errors / 7 existing warnings; npm run eval 8/8 fixtures with 2 L3 judgments pending. Independent review approved the exact commit; parent reran all 56 focused tests. No external model calls were used. PR CI includes real PostgreSQL, Chromium and both Docker builds.

@xiaour
xiaour merged commit f83a094 into xiaour:main Oct 16, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants