Skip to content

v21.0.0: adopt CIRISPersist v42.0.0 + CIRISVerify v15.0.0 - #577

Merged
emooreatx merged 1 commit into
mainfrom
adopt-persist-v42
Sep 7, 2026
Merged

v21.0.0: adopt CIRISPersist v42.0.0 + CIRISVerify v15.0.0#577
emooreatx merged 1 commit into
mainfrom
adopt-persist-v42

Conversation

@emooreatx

Copy link
Copy Markdown
Contributor

A MAJOR, because it amends a held contract — CIRISServer is on v20.3.0 (#545 closed) — by moving the wheel floor to ciris-persist>=42,<43 and re-pinning the whole CIRISVerify graph to v15. Nothing in edge's public API changed shape; the break is the floor and the linked substrate graph.

persist v42.0.0 — three refusals, each read against edge's code

refusal edge exposed? how established
#811 agent member under a plain conferral no longer steward-bound → community refused No (production) pair room rosters owners as founder, never agents; node members exempt by persist's rule; edge calls none of the drifted predicate/fold functions
#814 p3 config:admission/config:transport above self refused No no config:* dimension anywhere in edge
#815 dimensions case-sensitive per segment No every edge dimension lowercase; confirmed by executionchat_message_federates + chat_two_person_community drive real admission of every chat: row against v42 and pass

The #811 residual was test fixtures rostering an agent under a plain delegates_to. The full suite ran against v42 and none reddened — nothing needed fixing. All four persist ABI constants unchanged; the floor moves for the major alone.

verify v15.0.0 — the break is #[non_exhaustive], and it's the one edge asked for

The code diff is additive — FedCode::new + with_* builders, OwnedNode::new, and AdmittedHybridKey::admit(&code, pulled), now the only constructor of a hybrid registration input (fail-closed on a code with no commitment). That's the class fix CIRISVerify#274 asked for. The MAJOR is that FedCode and OwnedNode are #[non_exhaustive]: edge had thirteen FedCode literals plus one OwnedNode, all moved to the constructors. CodeAdmission's doc points hosts at admit instead of the free function they had to remember to call.

Worth knowing for the next such bump: cargo check --lib caught none of the fourteen — all were in test code, and --lib doesn't compile #[cfg(test)]. The compile gate after a dependency bump is --all-targets. (Recorded in memory.)

Verify trio moves in lockstep to v15.0.0, matching persist v42's own pin.

Verification

  • Persist tag verified from the remote to deref to the exact staged tree (refs/tags/v42.0.0^{}13aa634) before the pin flipped rev→tag
  • cargo tree -i: one copy each of persist 42.0.0, verify-core/keyring/crypto 15.0.0, leviculum 0.25.0+ciris.1
  • clippy -D warnings clean on pyo3-full --all-targets
  • 1461 lib + 1867 integration tests (67 binaries), every cargo exit captured
  • evidence TSV regenerated for 21.0.0; evidence_tsv_matches_emitted green on the final tree

🤖 Generated with Claude Code

https://claude.ai/code/session_01NGkrcZ7Fgor8taio1YXVxB

A MAJOR because it amends a held contract: CIRISServer is on v20.3.0
(CIRISServer#545 closed), and this cut moves the wheel floor to
ciris-persist>=42,<43 and re-pins the whole CIRISVerify graph to v15. A
consumer holding persist 41 or verify 14 in the same process cannot take it
without moving too. Nothing in edge's public API changed shape.

## persist v42.0.0 — three refusals of previously-valid input, each read
## against edge's code rather than assumed

#811 — an agent member whose only incoming edge is a plain (unmarked)
conferral is no longer steward-bound; its community is refused at the write
gate. NOT EXPOSED in production: edge's only authored community is the pair
chat room, which rosters the two OWNERS (users, as founder), never agents; and
persist exempts node members outright. Edge calls none of is_steward_bound /
steward_bindings_of / live_delegation_granters, so the predicate/fold drift
never ran here. The residual was test fixtures rostering an agent under a
plain delegates_to — the full suite ran against v42 and none reddened.

#814 part 3 — config:admission / config:transport above self refused. NOT
EXPOSED: edge names no config:* dimension anywhere.

#815 — dimensions case-sensitive, per segment. NOT EXPOSED: every edge
dimension is lowercase. Confirmed by execution: chat_message_federates and
chat_two_person_community drive real admission of every chat: row against
v42 and pass.

All four persist ABI constants unchanged; the floor moves for the major.

## verify v15.0.0 — the break is #[non_exhaustive], and it is the one edge
## asked for (CIRISVerify#274)

The code diff is additive: FedCode::new + with_* builders, OwnedNode::new,
and AdmittedHybridKey::admit(&code, pulled) — the ONLY constructor of a hybrid
registration input, fail-closed when the code carries no commitment, so an
unchecked input cannot exist to be passed anywhere. The MAJOR is that FedCode
AND OwnedNode are now #[non_exhaustive]. Edge had thirteen FedCode literals
(contact.rs x9, role_matrix_gauntlet.rs x2, tests/chat_harness_dx.rs x2) plus
one OwnedNode; all use the constructors now. CodeAdmission's doc points hosts
at AdmittedHybridKey::admit instead of the free function they merely had to
remember to call.

Worth recording for the next such bump: `cargo check --lib` caught NONE of the
fourteen — every literal was in test code, and --lib does not compile
#[cfg(test)]. The compile gate after a dependency bump is --all-targets.

All three verify crates move to v15.0.0 in lockstep, matching persist v42's
own pin. cargo tree -i: one copy each.

## Verification

The persist tag was verified from the remote to deref to the exact tree this
was staged, built and tested against (refs/tags/v42.0.0^{} -> 13aa634) before
the pin flipped from rev to tag. clippy -D warnings clean on pyo3-full
--all-targets; 1461 lib + 1867 integration tests (67 binaries), every cargo
exit captured; evidence TSV regenerated for 21.0.0.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NGkrcZ7Fgor8taio1YXVxB
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@emooreatx
emooreatx merged commit 6174b20 into main Sep 7, 2026
26 checks passed
@emooreatx
emooreatx deleted the adopt-persist-v42 branch September 7, 2026 16:56
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