Repository navigation
cybernode: land #406 on release/phase1 with the registry fix its drift gate asks for - #407
Conversation
…ted 2026-10-27)
crate/src/{chain,genesis,node,wallet,network,bin}, crate/tests, deploy/,
audit/chain/ and the seven node specs now live in cyberia-to/cybernode (carved
with history from this branch). soft3 0.11 is the facade: pub use
cybernode::{chain,genesis,network,node,wallet}; the binary forwards the node
verbs to cybernode::cli for one release. cybernode is a sibling in
release/phase1.toml; the ladder, status, README, specs index and the agent rules
say rung 7 is cybernode; the proposal closes with § 9 and the receipt
cybernode/audit/move-2026-10-27.md.
the registry follows the ladder #406 moved: cybernode is the layer-7 product, soft3 the stack without a rung, the rung-7 parts are part of cybernode, and the old ops entry is apparatus (proposals/cybernode.md § 7.1). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…de (#406) #406 moved the node into the cybernode crate but left crate/Cargo.lock without a cybernode entry, so soft3-tests and soft3-release (--locked) could not resolve. This lock is the one the build service resolved on the train's stand: diagnostic run 40519917254 (diag/cybernode-406-lock), soft3 at d49849a, cybernode at its pin 52538a6. Before sha256 cb7c91ab…, after e4e90704…; cargo test --locked and cargo build --release --locked both finished there. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…40525967811) 40522989900's manager release/phase1 pins no cybernode sibling, so soft3 never resolved. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
plan: session 154 — C4 rehearsal re-dispatched with #407 as manager
plan: session 155 — C4 holds #407 until the node's tests are gated
|
Diagnostic 40547036801 (
The lock is cyberia-to/simulation#2, a draft from the fork that the owner merges. It must merge in step with soft3 |
…rnode/rs (C4, #406) soft3#406 moved the node and its ~314 tests to cybernode/rs, so soft3-tests now runs only 2 tests. Run the node's suite from the cybernode checkout in the slot soft3-tests used to hold, blocked if the checkout is missing.
|
Session 162 (C4): the
This PR still does not merge. After the rehearsal is read, the |
plan: session 162 — C4, cybernode-tests gate on #407, rehearsal 40553564510
|
C4 (director session 163): rehearsal 40553564510, four platform legs read. Stand (
Remains: the stack leg is still running. Its targets are stack-chain-genesis and simulation-gate green, and every other stack gate no worse than 40446879208. This PR merges after that, once cybernode#1 has merged and the |
|
C4 receipt: the stack leg of rehearsal 40553564510 (session 166) Stand ( Compared gate by gate with
sha256 of This PR causes no red. The four platform legs were read in session 163 (comment 6450505737). This PR's checks are green ( Not merged yet: the |
|
Conflict-free again (director session 168). #423 (
This still waits on the owner's cybernode#1. Next: move the |
docs(director): plan — session 168, #407 conflict-free again
|
Held out of pussy's genesis: decision D15 (director session 411). Measured (
Re-syncing this PR therefore means porting those 7 commits into cybernode as a fork PR stacked on cybernode#1, because cybernode is read-only to Decided (D15): pussy's genesis runs the node that was qualified. That node is the soft3 crate at
Second opinion: fable (2026-10-31, #1) answered the same way, B. The only thing that would flip this: if the owner says pussy's genesis must run the cybernode-shaped node, then the genesis date moves, not the freeze. |
…k since 611791b lives on cybernode release/phase1 release/phase1 added node work after 611791b, the base #406 was cut from. That work is ported to cybernode release/phase1 (cybernode#2, #3, #4 → 5a2f4a2): soft3 a6e9b8f, 6868695 (P2 settlement halt), 8dd2a91 (P2a), 27f41e9 (P3 stand, deploy/chain/agent-a), 66029b2 (P3d), 687f86b, 981776a, 4e556ab, daac4ab (P3e soft3-chain-check → cybernode-check), c898465, f191052 (pussy pins), 2c21b25, 2393617, 3f4f5f1 (P3b pussy-rc genesis). Each file's delta equals soft3's after the move's renames. Resolution: - #406's deletions of the moved node code win (crate/src/{chain,genesis,node}, crate/tests/pussy_identity.rs, deploy/chain/ with agent-a/). - crate/src/bin/soft3.rs stays the facade: `soft3 genesis` and `soft3 conformance` forward to cybernode::cli::run, which carries the pussy-rc help text and the pins check since cybernode 5a2f4a2. - crate/Cargo.toml: the cybernode path dependency plus release/phase1's ureq, serde, the mudra dev-dependency, the hemera opt-level and the P2a overflow-checks profile; the profile also names cybernode, because cargo reads profiles from this root manifest only and the node's code is that crate now. - crate/Cargo.lock is release/phase1's, not regenerated. - release/phase1.toml: cybernode pinned at release/phase1 5a2f4a2. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
What
The owner's soft3#406 (
feat/cybernode,58920a8) plus one fix,d49849a. Proposed forrelease/phase1. The owner's branch is not touched: when this merges, #406's head is inrelease/phase1, so #406 closes as merged.The fix. #406 fails its own
driftgate: run 40517639036 reportslayer 7 component missing from the home ladder: soft3/1 drift(s). Onrelease/phase1b55f8aathe same gate is green. #406 moved rung 7 to cybernode onsite/layers/index.htmlbut did not changerelease/components.toml.d49849abrings the registry and the chart into line with the ladder #406 drew (proposals/cybernode.md §5 1–2, § 7.1):release/components.tomlcybernodeentry was the old private ops repository, so it becomesapparatus(§ 7.1).cybernodeproduct takes layer 7, role network.soft3loseslayerandrole: it is the stack and is not a rung.part_of = "cybernode".7 cybernode (network).site/chart/index.html: the rung-7 node, its 8 edges andLADDERsay cybernode.status.md: a[[cybernode]]row, which the checker requires for every product.Verified
python3 -I site/check-components.pyatd49849a:components: 81 in registry, 40 ladder chips, 50 chart nodes, 30 siblings — no drift. At58920a8it printed1 drift(s).cybernodeis public and readable by the train (gh api repos/cyberia-to/cybernode:visibility: public), so the sibling pin52538a6can be checked out.Remains: why this is not merged yet
crate/Cargo.lockis stale. cybernode: the node leaves soft3 (proposals/cybernode.md C2–C4, executed 2026-10-27) #406 swapped about 20 dependencies incrate/Cargo.tomlforcybernode(path../../cybernode/rs). The lock has 0name = "cybernode"entries. The train'ssoft3-testsandsoft3-releaseruncargo … --lockedincrate/(release/train_gates.py:304-305), so this head is red on every leg until the lock follows the manifest.That lock comes from the build service. Diagnostic branch
diag/cybernode-406-lock(b1fba54= this head plus one workflow, never merged) lays out the train's stand:soft3set to this branch;release/phase1.toml, so cybernode52538a6is a sibling.It then resolves the lock and runs
cargo test --lockedandcargo build --release --locked. The resolved lock is committed here from its artifact.After that, the D3 gate is a rehearsal with
soft3=fix/cybernode-driftand the same overrides. soft3-tests, soft3-release and node-status must be no worse than in 40446879208. Only then does this merge.The
cybernode → cyber"compose" edge still lists the cratesoft3. cyber consumes the facade, which re-exports cybernode, so this is left as is.cybernode: the node leaves soft3 (proposals/cybernode.md C2–C4, executed 2026-10-27) #406's own notes: chain: formalized requirements — ids, cases, the map and the counter #243, fix(chain): a corrupted body never invalidates the honest header — §5.5 commitment first (C2a) #350, test(economy): three open findings as failing tests — red until the spec decisions land (owner) #234 and test(node): proof verification at /v2/frame admission, end to end #167 touch moved files and will need rebasing onto cybernode after this lands.
Update 2026-11-01: merge of release/phase1
2159ced(cc5978a)release/phase1 added about 1,000 lines of node work after
611791b, the base #406 was cut from. That work now lives on cybernoderelease/phase15a2f4a2(cybernode#2, #3, #4). Each soft3 commit is ported with its hash in the subject:a6e9b8f,6868695(P2 settlement halt);8dd2a91(P2a);27f41e9(P3 stand,deploy/chain/agent-a);66029b2(P3d);687f86b,981776a,4e556ab,daac4ab(P3e,soft3-chain-check→cybernode-check);c898465,f191052(pussy pins);2c21b25,2393617,3f4f5f1(P3b pussy-rc genesis). For every file, the delta matches soft3's once the move's renames are applied.crate/src/{chain,genesis,node},crate/tests/pussy_identity.rsanddeploy/chain/, includingagent-a/.crate/src/bin/soft3.rs: stays cybernode: the node leaves soft3 (proposals/cybernode.md C2–C4, executed 2026-10-27) #406's facade.soft3 genesis …andsoft3 conformance check chainforward tocybernode::cli::run, which carries the pussy-rc help text and the pins check.crate/Cargo.toml: keeps the cybernode path dependency. It also keeps release/phase1's additions: ureq, serde, the mudra dev-dependency, the hemera opt-level, and the P2a overflow-checks profile. The profile now also namescybernode, because cargo reads profiles only from this root manifest and the node's code is in that crate now.crate/Cargo.lockis release/phase1's and is not regenerated. It is still stale against the manifest, as noted above.release/phase1.toml: cybernode is pinned atrelease/phase15a2f4a2. This follows hemera's precedent of a non-default-branch pin. The pin matches cybernodemainonly once the owner lands release/phase1 there.candidate.ymlis release/phase1's.proposals/cybernode.mdstaysexecuted, with § 9.python3 -m unittest discover -s release -p "test_*.py"passed (55 tests).site/check-components.pyreports no drift.cargo checkstops at lens392abe7(nogpu/), then at bbga3c9a0c(nors/vendor/fjall), then atbbg ^0.3against 0.2.1. Landing on cybernodemainis the owner's.Risk
Wide: the node's code leaves this repository, and the binary forwards node verbs to
cybernode::cli. #406 states that the moved modules are byte-identical (cybernode/audit/move-2026-10-27.md). The rehearsal is the receipt that the facade builds and the node tests still pass on the stand. Until then this stays unmerged. The freeze is 2026-11-02 00:00 UTC.🤖 Generated with Claude Code