0.3.56: adopt ciris-server 0.5.190 - #64
Merged
Merged
Conversation
0.3.56. Pin v0.5.188 → v0.5.189 (ca4896b); substrate follows to edge v18.10.0 + persist v38.6.0 + verify v13.6.1. Two things in this cut land directly on ciris-status, which is why the record above the pin says so rather than reciting a changelog. THE DUPLICATE STORM IS FIXED (CIRISPersist#771). This node's own canonical peer refused 7,536 attestation envelopes in a six-hour window — 428 distinct rows re-sent up to 82 times each — because `put_attestation` reported an already-held row as `federation_backend`, a backend ERROR. The sender never learned the row had landed, so it retried forever: 58% of all refusals on that node, and pure churn on the transport this crate exists to watch. persist v38.6.0 returns `AlreadyHeld` and edge routes it to `ApplyOutcome::Duplicate` — counted, not swallowed. THE ACTOR/NODE KEY SPLIT (CC 3.4.7.3). ciris-status IS a fabric node, so this is its identity too. A node's substrate identity used to be whatever key the host handed it; in the embedded fold that is an `agent`-typed key, so the transport identity, `self_key_id` and the de-admission self all named a key carrying agency. persist's agency gate constrains only a NODE-ONLY recipient, so the fusion did not blur "infrastructure must not have agency" — it switched the rule off. A node now mints its own `<alias>-node` key and provisioning is a readiness gate: edge must not start on a half identity. Also in the substrate bump: edge v18.10.0 splits the ADVERTISED id from the transport-identity STORAGE key (CIRISEdge#541). Worth knowing for an operator of this node specifically — coupling those across an identity move makes a keystore-backed deployment miss its stored entry, regenerate, and silently change its destination hash, invalidating every saved peer route with no error anywhere. Gates: clippy clean (--all-targets -D warnings), 110 tests, fmt clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6nEV7rs9P6YS6TvL2FUUV
Supersedes the 0.5.189 pin this branch carried and the mechanical `autorepin/ciris-server-v0.5.190` branch, which bumped the version and the tag without touching the record above the pin. Both changes in one place, so the record does not skip a version. 0.5.189 is what this crate has the stake in — the duplicate storm it was watching (7,536 refusals in six hours on its own canonical peer, 428 rows re-sent up to 82x) and the actor/node key split, which is ciris-status's identity too because ciris-status IS a fabric node. 0.5.190 rides along and changes nothing operationally here: it is the Android install fix. ciris-status installs the manylinux wheel and never sees the universal one, so that cut is inherited rather than consumed. Recorded anyway, because the pin moved and a record that skips a version is a record that has started drifting — which is the exact failure the block above this pin already documents at v0.5.187, where the record had drifted to v0.5.117 while the pin read v0.5.187. Gates: clippy clean (--all-targets -D warnings), 110 tests, fmt clean. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01L6nEV7rs9P6YS6TvL2FUUV
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
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.
Pin
v0.5.188→v0.5.189(ca4896b). Substrate follows: edge v18.10.0 + persist v38.6.0 + verify v13.6.1.Why this one matters here
The duplicate storm is fixed (CIRISPersist#771). This node's own canonical peer refused 7,536 attestation envelopes in six hours — 428 distinct rows re-sent up to 82× each — because
put_attestationreported an already-held row asfederation_backend, a backend error. The sender never learned the row had landed, so it retried forever: 58% of all refusals on that node, and pure churn on the transport this crate exists to watch.The actor/node key split (CC 3.4.7.3, CIRISConstitution#95). ciris-status is a fabric node, so this is its identity too. A node's substrate identity used to be whatever key the host handed it — in the embedded fold, an
agent-typed key. persist's agency gate constrains only a node-only recipient, so the fusion didn't blur "infrastructure must not have agency", it switched the rule off. A node now mints its own<alias>-nodekey, and provisioning is a readiness gate.Worth knowing for an operator of this node
edge v18.10.0 splits the advertised id from the transport-identity storage key (CIRISEdge#541). Coupling those across an identity move makes a keystore-backed deployment miss its stored entry, regenerate, and silently change its destination hash — invalidating every saved peer route, with no error anywhere.
Gates
clippy clean (
--all-targets -D warnings) · 110 tests · fmt clean🤖 Generated with Claude Code
https://claude.ai/code/session_01L6nEV7rs9P6YS6TvL2FUUV