Skip to content

Work-chain adjudication and generic Permit presentation (v3.6.0)#49

Merged
sftimeless merged 3 commits into
mainfrom
codex/ai-ptx-pr07-verifier
Jul 23, 2026
Merged

Work-chain adjudication and generic Permit presentation (v3.6.0)#49
sftimeless merged 3 commits into
mainfrom
codex/ai-ptx-pr07-verifier

Conversation

@sftimeless

Copy link
Copy Markdown
Member

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

  • Four adjudicators for 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 signed resource_attributes; value replay against value_max_minor/max_uses; scope population hashes; manifest/authority-set hash cross-checks)
  • Tamper, omission, reorder, and cross-project vectors resolve to disproved; missing material to insufficient_evidence; unsupported versions to unverifiable_scope
  • Presentation is structurally non-authorizing: work_chain never imports the presentation module and verify_work_chain_pack takes no presentation argument — titles cannot influence claim selection, JSON verdicts, exit codes, or cryptographic validation
  • Titles derive only from signed semantic facts + the vendored registry (registry digests re-validated); realtime renders AI Permit — Realtime session and no speech-verb title exists anywhere; unknown → generic, historical → "specific title unavailable"
  • Fully offline: no network imports in the new adjudicators; CLI auto-detect keyed strictly on version + profile
  • Version 3.6.0 (additive claim-registry roll-forward; prior registry hash preserved in the historical set)

Review 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 disproved claim dominates unverifiable_scope (1 beats 2, mirroring verdict precedence), a runner that executes the canonical conformance corpus, and a KEEL_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.whl builds.

🤖 Generated with Claude Code

sftimeless and others added 3 commits July 22, 2026 05:05
…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>
@sftimeless
sftimeless merged commit 0ea0011 into main Jul 23, 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.

1 participant