Skip to content

promote: consumer-side verdict-map coverage guard (#91)#92

Merged
ericckzhou merged 1 commit into
mainfrom
dev
Jun 7, 2026
Merged

promote: consumer-side verdict-map coverage guard (#91)#92
ericckzhou merged 1 commit into
mainfrom
dev

Conversation

@ericckzhou

Copy link
Copy Markdown
Owner

Promotes the dev integration branch to main.

Summary:

  • Adds tests/meta/test_verdict_consumer_coverage.py — an anti-entropy guard asserting the two consumer-side tables that turn a Verdict into a CI signal stay total over the enum:
    • render._EXIT_CODES covers every verdict (so exit_code_for can never KeyError on a real verdict — "one exit code your CI can gate on" stays a code, not a crash) and maps only to documented verdict-derived codes (0/1/2/4).
    • diff._QUALITY_RANK partitions the enum into ranked verdicts plus exactly the two deliberately off-ladder ones (INVALID_EVAL, INSUFFICIENT), so a new verdict can't silently fall off the ladder and suppress a diff regression as OTHER_CHANGE.

Validation:

Notes:

  • Tests-only; no runtime behavior changes. Closes the seam left by the producer-side guard (test_resolver_branch_count.py) and the frozen-enum guard (test_verdict_models.py).

…num (#91)

The resolver's verdict growth is guarded (test_resolver_branch_count) and the
enum is frozen (test_verdict_models), but the consumer tables that turn a
Verdict into a CI signal had no totality guard. A new verdict class could be
wired into the enum + resolver while a downstream map silently went out of sync:

- render._EXIT_CODES is indexed directly, so a missing verdict KeyErrors at
  run time when that verdict reaches the CLI — the "one exit code your CI can
  gate on" contract becomes a crash.
- diff._QUALITY_RANK is read with .get(), so a missing verdict silently falls
  off the ladder and is reported as OTHER_CHANGE, suppressing a regression.

Add tests/meta/test_verdict_consumer_coverage.py: _EXIT_CODES must cover every
Verdict and map only to documented verdict-derived codes (0/1/2/4); _QUALITY_RANK
must partition the enum into ranked verdicts plus exactly the two deliberately
off-ladder ones (INVALID_EVAL, INSUFFICIENT). No runtime behavior changes.
@ericckzhou ericckzhou merged commit e15e2b0 into main Jun 7, 2026
2 checks passed
ericckzhou added a commit that referenced this pull request Jun 12, 2026
Promote the post-0.6.4 evidence-preservation hardening to a tagged patch release.

- Read-only commands no longer load the model stack (#84, #87)

- doctor is store-backend aware; fails exit 3 on unregistered scheme (#85)

- Anti-entropy guards + doc-freshness tripwires (#90, #92, #94); agent-context fix (#86)

Bumps pyproject.toml, falsifyai/__init__.py, test_version.py, uv.lock; reconciles CHANGELOG [Unreleased] into [0.6.5] and refreshes README status/roadmap.
ericckzhou added a commit that referenced this pull request Jun 12, 2026
CLI hygiene (read-only commands off the model stack, #84/#87), store-aware doctor (#85), anti-entropy guards + doc-freshness tripwires (#90/#92/#94), agent-context fix (#86). Version 0.6.5; release gate green.
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.

1 participant