Work-chain adjudication and generic Permit presentation (v3.6.0)#49
Merged
Conversation
…uard - tests/test_work_chain_corpus_conformance.py runs the vendored canonical corpus end-to-end: 4 parity mutations assert their expected failure codes; the valid pack and 4 divergent mutations assert corpus expectations under xfail(strict=True) documenting the corpus authoring defects (no embedded key manifest, placeholder signatures, mutations not population-recommitted). A regenerated corpus flips them to XPASS and forces promotion to full parity. Every mutation is additionally asserted to fail closed regardless of code. - work_chain exit codes: a disproved claim now dominates unverifiable_scope (exit 1 beats 2), mirroring verdict precedence; regression tests added. - tests/test_work_chain_report_codes.py adds a KEEL_PERMIT_PTX_ROOT-gated parity test hashing every vendored Permit-to-X artifact against the canonical keel-permit checkout (KEEL_REQUIRE_GOLDEN_CORPUS to force). Review follow-up: P2-1 (runner half), P2-8, P2-3 (verifier leg) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The bundled CRLs rot on the CAs' own schedule (GlobalSign ~13d, DigiCert ~21d) while CI guards a 7-day window; the pinned snapshots expired 2026-07-29, red-lighting every job on this PR. Refreshed via scripts/refresh_tsa_trust_bundle.py: each CRL re-verified against its vendored issuer certificate, live DigiCert and GlobalSign receipts covered 3/3 CRL windows, earliest next_update now 2026-08-12 (20 days headroom). Trust-bundle hash and embedded release manifest regenerated for 3.6.0. Unrelated to the work-chain adjudicators; routine release chore. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Offline adjudication for the Permit-to-Work evidence pack, plus the generic Permit presentation renderer. Pairs with keel-api's producer PR as one coordinated release (Gate C): work-chain claims are not independently verifiable until this release ships.
Contents
work-chain.v1:permit.work_authority_manifest.v1,permit.work_child_containment.v1,permit_chain.execution_authorized_at_boundary.v1,permit.work_value_conservation.v1— each recomputes rather than trusting pack assertions (child request vs authority constraints from signedresource_attributes; value replay againstvalue_max_minor/max_uses; scope population hashes; manifest/authority-set hash cross-checks)disproved; missing material toinsufficient_evidence; unsupported versions tounverifiable_scopework_chainnever imports the presentation module andverify_work_chain_packtakes no presentation argument — titles cannot influence claim selection, JSON verdicts, exit codes, or cryptographic validationAI Permit — Realtime sessionand no speech-verb title exists anywhere; unknown → generic, historical → "specific title unavailable"version+profileReview provenance
Independently adversarially reviewed, then verified across three further rounds (converged; final closure audit GO). Fixes landed in-branch during that arc: exit-code precedence so a
disprovedclaim dominatesunverifiable_scope(1 beats 2, mirroring verdict precedence), a runner that executes the canonical conformance corpus, and aKEEL_PERMIT_PTX_ROOT-gated cross-repo parity test.Known-deferred (explicit)
The canonical corpus ships placeholder signatures and no embedded key manifest, so five of its expectations are asserted under
xfail(strict=True)with the divergence documented in the test module. A regenerated corpus flips them to XPASS and fails the suite, forcing promotion to full parity — the ratchet is deliberate. A non-xfail sweep additionally asserts no mutation ever verifies, so fail-open regressions are caught regardless.Local verification
Full suite 578 passed / 38 skipped / 5 xfailed (the ratchet); cross-repo parity against merged keel-permit with
KEEL_REQUIRE_GOLDEN_CORPUS=1(forced, not skipped) 20 passed; self-check + release-manifest + version-parity 56 passed;keel_verifier-3.6.0-py3-none-any.whlbuilds.🤖 Generated with Claude Code