fix(v1.7.2): close JACKAL checker request contracts + package inventory tuple - #9
Merged
Merged
Conversation
…ry tuple Discharge the eight Gate-0 semantic-premise blockers documented in docs/superpowers/plans/2026-08-17-jackal-gate0-checker-contract.md, regenerate all v1.7.2 evidence on frozen bytes, and rebuild the Apple-Silicon macOS package with the coherent archival tuple. Semantic fixes: * Blocker A: add `receipt-context-unsupported` to REASON_CLASSES so all four raise sites (`variant`/`epoch` selection, non-string variant) print a stable reason under regular Python; previously the assert in `Refusal.__init__` fired and silently downgraded to `verifier-internal` under normal Python while `-O` accepted the raw class — a two-Python divergence in the stable refusal taxonomy. New guard: `tests/claim_receipt_context_unsupported_v172_test.py` locks the invariant with unit + CLI cases for v1.7.0 int_cert, arbitrary int/range epochs, unknown/non-string variants under both normal Python and `-O`, plus a cross-context substitution control (9/9 PASS). * Blocker B: migrate `tests/fail_closed_sweep.py` to the coherent v1.7.2 tuple (current checker + current inventory + `range_proof_identity_v172. json` + epoch v1.7.2). 21/21 rows refuse cleanly; no `formal-*` leak. * Blocker C: migrate `tests/seal_audit_receipts_v150.py` to the genuine archival tuple (archival checker `05c3518…de8a`, archival inventory `18ff7b1d…ba6`, archival proof identity, epoch v1.5.0). 5/5 archival probes PASS with correct refusal classes. * Blocker D: `NON-CLAIMS.txt` states archival replay requires both the historical checker AND the historical coverage inventory; `PROVENANCE-RECEIPT.txt` records the archival inventory path/digest; `release/claim/SPEC.md` §10 enumerates the four context tuples’ CLI arguments; `release/compat/v172_floor.json` and the code-authoritative `formal_receipt.proof_compatibility_policy_document()` add `inventory_file`/`inventory_file_sha256` to every `archival_v1` entry and the file matches the code exactly (`test_code_authority_matches_ committed_compatibility_record` PASS). * Blocker E: `run_gates_v172.py` preflight now `require_digest`s the installed v1.7.0 coverage inventory (not only the checker); the fresh extract gate directly pins the packaged archival checker AND archival inventory bytes and refuses a current/archive inventory collision. New contract assertions in `tests/release_wiring_v172_contract_test.py` and `tests/package_contract_v172_test.py` lock both requirements. * Blocker F: final publication check adds `! -L` to `! -e` on `$FINAL_PKG` and `$FINAL_TARBALL` so a dangling symlink race cannot smuggle a target through `mv`. `test_final_publication_refuses_ dangling_symlink` + `test_final_publication_dangling_symlink_ regression` guard both. * Blocker G: `tests/plugin_context_matrix_v172_test.py` runs the plugin CLI end-to-end for the closed context matrix — current range receipt accepted, current int-cert accepted, archival v1.5.0 receipt accepted via `jackal_verify_receipt`, cross-context epoch swap refused, v1.7.0 int_cert refused with stable `proof-compatibility`, `jackal_verify_ bundle` actually invoked with report transcript, plus a stable refusal when the JACKAL_V170_RUNTIME env points at an empty tree. 9/9 PASS. * Blocker H: `repin_v172.py --write` on frozen bytes; rebuild package. Superseded pre-fix packages preserved under `release/dist/.superseded- v172-*` and `release/dist/.prebuild-preserve-*`, not deleted. Evidence — full aggregate driver green: * `python3.11 release/tools/run_gates_v172.py` → `GATES: PASS (68 gates)` (44 min wall). Every gate — preflight, lake-build, proof-identity contracts (range/int-cert/gaussian), current + optimized suites, Lean int-premise contract, engine self-test (104/104), positive corpus, negative controls, aba-mutations, mutations-11 (11/11), formal-status-gate, seven rational-variant releases, rational-receipt output (current + `-O`), gaussian emitter/checker/mutations/receipt, receipt-semantic-mutations (42/42), plugin-smoke, output-path-safety, fail-closed-sweep (21/21), seal-audit (83/83), seal-audit-receipts (5/5), exact-verify (34+91), branch-discontinuity (19/19), evidence-verify (GAUSSIAN_EVIDENCE_PASS), compat-floor, evidence- determinism, claim-router-output (current + `-O`), claim-hostile (108/108), claim-dogfood (18/18), claim-aba (7 layers), int-cert matrix (31/31) / aba / differential (5/5) / release, package-contract, package-build, package-fresh-extract-parity, archival-range-replay, archival-int-cert-revocation, and manifest-v172-final. * `python3 release/tools/repin_v172.py --check` → `REPIN_V172_CHECK_PASS rows=40` before and after the build. Final v1.7.2 package (frozen, 79 files, Apple-Silicon macOS only): * tarball_sha256 = 6b5f09eb82aa4257dda3e4dca09eed1b6f8b8834b19a4d852e50dd8250f04518 * SHA256SUMS root = 328121533382ed9b9d3e58315bb90e867ea4c24e0520b18c3268f7f8e27b9300 * MANIFEST.sha256 = b8927e72606ca103f1b5eb39b2da2a0a7306047d8365b55001bb15fdb252c149 Load-bearing pinned identities preserved: * Anubis compiler a733565f237df171e7cf93b9b37700a42d8713576818fd92f8cd23a8ad7a69e2 * jackal-native evaluator 20b80827d3c5c2a5d0d5d6f5a84c692f230fb0f55b9c7d1fcad02a1d0b3a1083 * current range checker f7a82524d082b51a8d66f9bed653b9c8da51b5424386659c9048b9c0ae276545 * current int checker f8347cbd18d520852aff56920d41f5e5b496ff192f584e41d84d1a818ff29617 * archival range checker 05c3518b836f239712f897c483a2ddadad9f544e0887b1b7bb1424a27289de8a * archival range inventory 18ff7b1d428dbc6f807fd4de27751ba415b33ef0b356088d7fa316ed74bb0ba6 * revoked v1.7.0 int checker c858e3bfc0ff2809a808170caabbf090077cb54996e76f065dbcd26ffb067d49 (deliberately absent from package) Non-claims (unchanged): * Apple-Silicon macOS only; unsigned, not notarized. * No universal correctness, source-to-native refinement, input-truth, operating-system, or authenticated-builder claim. * Archived v1 range identity replay requires the exact historical checker AND historical coverage inventory bytes; reversed intervals refuse. * Archived v1 composed-integral identity is historical revocation evidence only; its request-unbound checker is not shipped or admitted; every v1.7.0 int-certificate receipt refuses formal replay. Base: 7a834ef (feat: add fail-closed JACKAL Codex plugin (#8)).
|
Important Review available on request
Reviews should be triggered manually for repositories with fewer than 10 stars. Select Trigger review above or comment ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 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 |
….py, refresh CI claim fixture, loosen mac timing assertion Three narrow CI-only fixes on top of the v1.7.2 Gate-0 commit; each was observed on the initial hosted run of PR #9 and is verified locally. * `.github/workflows/gaussian-proof-gate.yml` — call `release/tools/range_proof_identity.py` for the `range` and `int-cert` lanes. The Gate-0 slice introduced this lane-specific generator (documented in its own docstring: "The stable proof-identity engine remains in gaussian_proof_identity.py so archival v1 identity bytes and their generator remain untouched. This lane-specific entrypoint supplies only the new v2 lane contracts and records itself as the generator."), and the committed `range_proof_identity_v172.json` records that generator. Reproduces locally as `FAIL proof identity drift: $.source_closure.aggregate_sha256` under the old command; both lanes PASS with the correct tool. * `release/evidence/ci_claim_fixture_v160/bundle.json` + `pins.json` — regenerated against the current inference registry (`e7134ec3…082`); the Gate-0 registry added `formal.integral` as a new admissible fn. The exact-lane bundle contents are byte-preserved apart from `registries.inference_registry_sha256` and the recomputed `bundle_digest_sha256=6467fcd3…35bd` / `bundle_sha256=b8eb6893…5f68`. Local `python3 -I -S -B release/tools/ci_claim_admission.py` → `CI_CLAIM_ADMISSION_PASS checks=3` (fixture-bundle-hash, positive-replay, tamper-refusal all PASS with the intended semantic reason `node-id-mismatch`). * `tests/codex_plugin/test_runtime_provisioner.py` — `test_stream_download_interrupts_one_blocking_read_at_total_deadline` loosens the elapsed-time upper bound from 0.15s to 0.5s. Hosted mac arm64 runners observed 0.17s of scheduling jitter on top of the 0.05s deadline (`AssertionError: 0.17095866700014994 not less than 0.15`). The test's intent — the interrupt fires within a small multiple of the total timeout, not a broken-deadline multi-second wait — is preserved; a genuinely broken deadline would elapse many seconds. Repin re-check: `REPIN_V172_CHECK_PASS rows=40`. Package/frozen identities from the previous commit remain unchanged.
AnubisQuantumCipher
pushed a commit
that referenced
this pull request
Aug 18, 2026
Records the honest state of the program after this session: * Gate-0 v1.7.2: SHIPPED (PR #9 merged into master 54461bb, tag v1.7.2 at that merge SHA, four-asset release published and byte-cmp read-back verified). * Navier v1.8.0: PARTIAL — isolated snapshot + Gate-0 merge pushed to feat/navier-stokes-v180 (af8d507); ship blocked on Anubis 30s timeout in the mutation sweep, Lean rebuild in this worktree, and Navier-identity regeneration. * W2-W11: OPEN with concrete next actions. No unauthorized external comms sent; no new public repository created; no financial or legal filing executed.
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.
Discharges the eight Gate-0 semantic-premise blockers documented in
docs/superpowers/plans/2026-08-17-jackal-gate0-checker-contract.md.Ships a coherent v1.7.2 Apple-Silicon macOS package with the archival
inventory tuple explicitly pinned across code, docs, and gates.
Summary of load-bearing changes
receipt-context-unsupportedadded toREASON_CLASSESintools/claim_bundle_verify.py. Before:Refusal("receipt-context-unsupported", …)hit the
assert cls in REASON_CLASSES, so normal Python silently downgraded toverifier-internalwhile-Oaccepted the raw class — a two-Python taxonomydivergence.
tests/claim_receipt_context_unsupported_v172_test.pylocks theinvariant with unit + CLI cases for v1.7.0 int_cert, arbitrary int/range epochs,
unknown/non-string variants, under both plain Python and
-O, plus a cross-contextsubstitution control (9/9 PASS).
tests/fail_closed_sweep.pymigrated to coherent v1.7.2 tuple(current checker + current inventory +
range_proof_identity_v172.json+ epochv1.7.2). 21/21 rows refuse cleanly; no
formal-*leak.tests/seal_audit_receipts_v150.pymigrated to genuine archivaltuple (archival checker
05c3518…de8a, archival inventory18ff7b1d…ba6,archival proof identity, epoch v1.5.0). 5/5 archival probes PASS.
NON-CLAIMS.txtstates archival replay needs both historicalchecker AND historical coverage inventory;
PROVENANCE-RECEIPT.txtrecords thearchival inventory path/digest;
release/claim/SPEC.md§10 enumerates all fourcontext tuples' CLI arguments;
release/compat/v172_floor.jsonand thecode-authoritative
formal_receipt.proof_compatibility_policy_document()gaininventory_file/inventory_file_sha256on everyarchival_v1entry.run_gates_v172.pypreflight nowrequire_digests the installedv1.7.0 coverage inventory (not only the checker); the fresh extract gate directly
pins the packaged archival checker AND archival inventory bytes and refuses a
current/archive inventory collision. New contract assertions in
tests/release_wiring_v172_contract_test.pyandtests/package_contract_v172_test.py.! -Lto! -eon$FINAL_PKGand
$FINAL_TARBALLso a dangling symlink race cannot smuggle a target throughmv.Regression tests:
test_final_publication_refuses_dangling_symlink+test_final_publication_dangling_symlink_regression.tests/plugin_context_matrix_v172_test.pyruns the plugin CLIend-to-end for the closed context matrix — current range receipt accepted,
current int-cert accepted, archival v1.5.0 receipt accepted via
jackal_verify_receipt, cross-context epoch swap refused, v1.7.0 int_cert refusedwith stable
proof-compatibility,jackal_verify_bundleactually invoked withreport transcript, plus stable refusal when the JACKAL_V170_RUNTIME env points at
an empty tree. 9/9 PASS.
repin_v172.py --writeon frozen bytes; rebuilt package. Twosuperseded pre-fix package snapshots preserved under
release/dist/.superseded-*and
release/dist/.prebuild-preserve-*, not deleted.Evidence — full aggregate driver green
python3.11 release/tools/run_gates_v172.py→GATES: PASS (68 gates)(about 44minutes wall). Every gate: preflight, lake-build, proof-identity contracts
(range/int-cert/gaussian), current + optimized suites, Lean int-premise contract,
engine self-test (104/104), positive corpus, negative controls, aba-mutations,
mutations-11 (11/11), formal-status-gate, seven rational-variant releases,
rational-receipt output (current +
-O), gaussian emitter/checker/mutations/receipt,receipt-semantic-mutations (42/42), plugin-smoke, output-path-safety, fail-closed-sweep
(21/21), seal-audit (83/83), seal-audit-receipts (5/5), exact-verify (34 + 91),
branch-discontinuity (19/19), evidence-verify (GAUSSIAN_EVIDENCE_PASS), compat-floor,
evidence-determinism, claim-router-output (current +
-O), claim-hostile (108/108),claim-dogfood (18/18), claim-aba (7 layers), int-cert matrix (31/31) / aba /
differential (5/5) / release, package-contract, package-build,
package-fresh-extract-parity, archival-range-replay, archival-int-cert-revocation, and
manifest-v172-final.
python3 release/tools/repin_v172.py --check→REPIN_V172_CHECK_PASS rows=40before and after the build.
Final v1.7.2 package
Apple-Silicon macOS only, 79 files:
6b5f09eb82aa4257dda3e4dca09eed1b6f8b8834b19a4d852e50dd8250f04518328121533382ed9b9d3e58315bb90e867ea4c24e0520b18c3268f7f8e27b9300b8927e72606ca103f1b5eb39b2da2a0a7306047d8365b55001bb15fdb252c149Non-claims (unchanged)
operating-system, or authenticated-builder claim.
historical coverage inventory bytes; reversed intervals refuse.
request-unbound checker is not shipped or admitted; every v1.7.0 int-certificate
receipt refuses formal replay.
Reproduce
Base:
7a834efbd6fff816a781a7bc3ac4d255f103574d(feat: add fail-closed JACKAL Codex plugin (#8)).