Cut v1.3.1 catalog (absorb ir-formal-grammar drift; signed)#20
Conversation
The 2 commits since the v1.3.0 cut (2ec87ad) modified one spec file. PR #10 added the `Bridge target pinning: the shim-poisoning vector` normative subsection to ir-formal-grammar without a follow-up catalog cut, leaving the v1.3.0 catalog's recorded CID stale. CI's `recompute-spec-cids --verify` is currently red. This commit re-bakes the catalog as v1.3.1 (re-sync only) with the new property CID and signs the new attestation under the same foundation v0 key. v1.3.1 catalog CID: blake3-512:dab2eca97eaea7cc107b1ff3f2326094d804a5e91749bf8e9caa36cd049dc0ae1cb65afb353af8fcd271f87e9e0fc7e7710ec6a68666da6a11f802bc304ff799 Re-minted spec CIDs (drift caused by the 2 commits since v1.3.0): ir-formal-grammar 99f09163...e37cc4bb -> fc26a82b...29b72f42c The other 19 spec CIDs are unchanged. v1.3.1 is a pure re-sync over v1.3.0; no protocol-level changes. v1.3.0 mementos and .proof bundles remain valid; v1.3.0's CID `5a3129f4...205d24c7` stays attestable via .provekit/catalog-signatures/v1.3.0.json for anyone pinned to it. Consumer surfaces migrated: - implementations/rust/provekit-cli/src/protocol.rs:24 EXPECTED_CATALOG_CID = dab2eca9...304ff799 - implementations/rust/provekit-cli/src/protocol.rs:47 EMBEDDED_CATALOG_SIGNATURE = catalog-signature-v1.3.1.json - implementations/rust/provekit-cli/assets/protocol-catalog.json refreshed with v1.3.1 catalog - implementations/rust/provekit-cli/assets/catalog-signature-v1.3.1.json new attestation - .provekit/catalog-signatures/v1.3.1.json canonical attestation - tools/foundation-keygen: V1_3_1_DECLARED_AT + sign_catalog_v1_3_1 binary parameterized via existing build_signed_attestation_for - tools/recompute-spec-cids: comment + print line bumped to v1.3.1 - docs/launch/bluepaper.md (S0 + Appendix A + version log entry) Verified empirically: $ provekit verify-protocol --signed expected : blake3-512:dab2eca9...304ff799 actual : blake3-512:dab2eca9...304ff799 attested CID : blake3-512:dab2eca9...304ff799 signer (pubkey) : ed25519:IVL40Zt5HSRFMkLhXy6rbLfP+ntqXtMAl5YOBpiB2xI= CID match : ok attested CID : ok signer match : ok signature : ok status : match $ cargo run --release --manifest-path tools/recompute-spec-cids/Cargo.toml -- --verify exit 0 (workspace conformance with on-disk catalog) $ cargo test -p provekit-cli protocol:: 12/12 pass (incl. embedded_catalog_recomputes_to_expected_cid + embedded_signature_verifies_against_embedded_pubkey) Both conformance modes pass: CLI-internal-state + workspace-on-disk. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
Warning Rate limit exceeded
To keep reviews running without waiting, you can enable usage-based add-on for your organization. This allows additional reviews beyond the hourly cap. Account admins can enable it under billing. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (11)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Review rate limit: 0/1 reviews remaining, refill in 36 minutes and 33 seconds.Comment |
# Conflicts: # docs/launch/bluepaper.md
There was a problem hiding this comment.
Pull request overview
Cuts protocol catalog v1.3.1 as a signed “re-sync” over v1.3.0 to absorb the ir-formal-grammar spec-CID drift (from PR #10) and restore green recompute-spec-cids --verify / verify-protocol --signed checks.
Changes:
- Re-bakes the protocol catalog to v1.3.1 (updated
ir-formal-grammarCID, bumpeddeclaredAt, refreshed_unsignedmetadata). - Adds a new foundation-keygen signer binary and declaredAt constant for v1.3.1.
- Updates the Rust CLI embedded catalog/signature assets and expected catalog CID; updates launch bluepaper pinned CID/changelog.
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tools/recompute-spec-cids/src/main.rs | Updates target version labeling/output to v1.3.1. |
| tools/foundation-keygen/src/lib.rs | Adds V1_3_1_DECLARED_AT constant used for deterministic signing. |
| tools/foundation-keygen/src/bin/sign_catalog_v1_3_1.rs | New signer utility to generate .provekit/catalog-signatures/v1.3.1.json. |
| tools/foundation-keygen/Cargo.toml | Registers sign-catalog-v1-3-1 binary target. |
| protocol/specs/2026-04-30-protocol-catalog.json | Updates catalog version/declaredAt and re-bakes ir-formal-grammar CID; adds v1.3.1 _unsigned summary. |
| implementations/rust/provekit-cli/src/protocol.rs | Bumps EXPECTED_CATALOG_CID and embedded signature asset reference to v1.3.1. |
| implementations/rust/provekit-cli/src/main.rs | Updates verify-protocol --signed help text to v1.3.1 signature asset. |
| implementations/rust/provekit-cli/assets/protocol-catalog.json | Refreshes embedded catalog JSON to v1.3.1 to match expected CID. |
| implementations/rust/provekit-cli/assets/catalog-signature-v1.3.1.json | Adds embedded v1.3.1 signed attestation JSON. |
| .provekit/catalog-signatures/v1.3.1.json | Adds committed v1.3.1 signed attestation JSON. |
| docs/launch/bluepaper.md | Updates pinned catalog CID references and appends v1.3.1 changelog entry. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…366) (#387) * fix(baselines): resolve P1 review concerns from #293/#326 inline Closes #366 partial (generator + BridgeV14 kit work). P1 concerns addressed: #1 Critical (CodeRabbit) — apply_builtin dead ctor0 branch: removed the unreachable `a == 0` guard introduced by `let a = if arity == 0 { 1 }`. Now arity=0 (serde default) correctly means unary; the ctor0 path is gone. #5 Major (Copilot) — gte double-wrap: the old gte arm applied ctor1(left, ctor1(sig, s)) in both branches of a dead if/else. Fixed to ctor1(left, s) — the property applied directly to the input variable, not to the builtin result. #9 + #11 (CodeRabbit Major) — rust in lang list causes duplicate rust-std-baseline-v1: removed "rust" from the hard-coded langs array. rust is already minted by provekit-baseline-rust-std (#292). rust.toml kept as reference but is not read by this binary. #13 (Copilot) — silent skip on missing config changed to panic: a missing config is always a repo error, not a runtime skip. #14 (Copilot) — unknown predicate kind silently skipped changed to panic: unknown kinds indicate a stale config or missing handler, not a soft warning. #15 (Copilot Major) — missing gte.args.left defaulting to signature changed to panic: malformed configs must not silently produce wrong-but-passing baselines. #19 (CodeRabbit Major) — PHP Minter.php mintBridgeV14 now validates and normalizes the tagged-union target before signing. Extra keys are stripped; missing kind or cid fails with InvalidArgumentException. #20 (CodeRabbit Critical) — Python bridge_v14.py missing `import base64` added. The base64 module is used at line 101 but was not imported. BridgeV14 kit work (from #326, unique to that branch): - C kit: bridge_v14.c + self_contracts.h header - PHP kit: Minter.php (+ validation fix above) - Per-kit BridgeV14 in cpp, csharp, go, python, ruby, swift, ts, zig Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(baselines): regenerate 11 per-kit std baseline catalogs Baselines minted by `mint-all-baselines` against the corrected orchestrator (P1 fixes from previous commit). Rust excluded from this binary — handled by provekit-baseline-rust-std. 11 kits minted: c, cpp, csharp, go, java, php, python, ruby, swift, typescript, zig. CIDs: c blake3-512:6a30a452... cpp blake3-512:64fc0845... csharp blake3-512:e221722e... go blake3-512:efa64a6c... java blake3-512:22a41119... php blake3-512:93028afd... python blake3-512:224e0cbe... ruby blake3-512:1c52edaf... swift blake3-512:313ab922... typescript blake3-512:9da2bdff... zig blake3-512:5f7e1f73... These are byte-deterministic: same seed (FOUNDATION_V0_SEED = [0x42; 32]), same configs, same produced_at timestamp. Regeneration on any platform with the corrected binary must produce identical CIDs. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * chore(baseline-std): silence dead-code warnings + document rust.toml exclusion - Rename ctorN -> ctor_n (snake_case, fixes non_snake_case warning) - Add #[allow(dead_code)] to ctor0/ctor2 with explanatory comment; they are scaffolding for future N-ary predicate kinds, not bugs - Add comment to configs/rust.toml explaining it is intentionally excluded from the mint_all_baselines langs list — Rust baselines are owned by provekit-baseline-rust-std (#292) to avoid duplicate rust-std-baseline-v1 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Summary
v1.3.1 patch bump over v1.3.0. Re-sync only; no protocol-level changes. Absorbs
ir-formal-grammarspec-CID drift introduced by PR #10 (theBridge target pinning: the shim-poisoning vectornormative subsection landed without a follow-up catalog cut). CI'srecompute-spec-cids --verifywas failing on main; this PR re-bakes the catalog and re-signs under the v0 foundation key.New catalog CID
Drifts absorbed
Exactly one spec drifted between v1.3.0 (2026-05-02 15:00Z) and v1.3.1 (2026-05-02 17:00Z):
ir-formal-grammarblake3-512:99f091633181eda7ad1798c15316c49c829899f8622146fae5de698dfbe36bd6038d45da334514c87b8e978739b538ab61f96c44093624c60d7a242ae37cc4bbblake3-512:fc26a82bc5e40b2bc96c0cacc5831a063239452137dad9cbb52f3ca21b13d20c0538093bd4810eb620cc2a1003522ab4f4796d339bcfdfe16128b2129b72f42cThe other 19 spec CIDs are unchanged. v1.3.0 mementos and
.proofbundles remain valid; v1.3.0's CID5a3129f4...205d24c7stays attestable via.provekit/catalog-signatures/v1.3.0.jsonfor anyone pinned to it.Verification (locally, on this branch)
provekit verify-protocol --signedreports match/ok/ok/ok locally on this branch.Files touched
protocol/specs/2026-04-30-protocol-catalog.json(version, declaredAt, ir-formal-grammar property,_unsignedrotated)tools/foundation-keygen/Cargo.toml(newsign-catalog-v1-3-1bin entry)tools/foundation-keygen/src/lib.rs(newV1_3_1_DECLARED_ATconst)tools/foundation-keygen/src/bin/sign_catalog_v1_3_1.rs(new)tools/recompute-spec-cids/src/main.rs(target comment + print line bumped to v1.3.1).provekit/catalog-signatures/v1.3.1.json(new; canonical attestation)implementations/rust/provekit-cli/assets/catalog-signature-v1.3.1.json(new)implementations/rust/provekit-cli/assets/protocol-catalog.json(refreshed)implementations/rust/provekit-cli/src/protocol.rs(EXPECTED_CATALOG_CID,EMBEDDED_CATALOG_SIGNATUREfilename, comments)implementations/rust/provekit-cli/src/main.rs(docstring v1.3.0 -> v1.3.1)docs/launch/bluepaper.md(S0 CID, Appendix A entry, v1.3.1 changelog entry)Out of scope (noticed, not fixed here)
Makefilelines 26-35 still pin "Catalog v1.2.0" with the v1.2.0 CID. The v1.3.0 cut already left this stale; rolling it forward is a separate concern (touchesmake conformanceinvariants and pinned mint CIDs). Flagging here for a follow-up PR.Test plan
recompute-spec-cids --verifyis green (was red on main)make catalog-verifygreen on the merge commitmake conformancegreen (caveat: per above, Makefile pins are still on v1.2.0; the catalog gate itself passes)cargo test -p provekit-cli protocol::12/12 (incl.embedded_catalog_recomputes_to_expected_cidandembedded_signature_verifies_against_embedded_pubkey)