Skip to content

cybernode: land #406 on release/phase1 with the registry fix its drift gate asks for - #407

Merged
cyberia-apparatus merged 6 commits into
release/phase1from
fix/cybernode-drift
Nov 1, 2026
Merged

cyberia-apparatus merged 6 commits into
release/phase1from
fix/cybernode-drift

Conversation

@cyberia-apparatus

@cyberia-apparatus cyberia-apparatus commented Oct 27, 2026 •

Copy link
Copy Markdown

What

The owner's soft3#406 (feat/cybernode, 58920a8) plus one fix, d49849a. Proposed for release/phase1. The owner's branch is not touched: when this merges, #406's head is in release/phase1, so #406 closes as merged.

The fix. #406 fails its own drift gate: run 40517639036 reports layer 7 component missing from the home ladder: soft3 / 1 drift(s). On release/phase1 b55f8aa the same gate is green. #406 moved rung 7 to cybernode on site/layers/index.html but did not change release/components.toml. d49849a brings the registry and the chart into line with the ladder #406 drew (proposals/cybernode.md §5 1–2, § 7.1):

  • release/components.toml
    • The existing cybernode entry was the old private ops repository, so it becomes apparatus (§ 7.1).
    • A new cybernode product takes layer 7, role network.
    • soft3 loses layer and role: it is the stack and is not a rung.
    • foculus, radio, sync and solong are now part_of = "cybernode".
    • The header comment says 7 cybernode (network).
  • site/chart/index.html: the rung-7 node, its 8 edges and LADDER say cybernode.
  • status.md: a [[cybernode]] row, which the checker requires for every product.

Verified

  • python3 -I site/check-components.py at d49849a: components: 81 in registry, 40 ladder chips, 50 chart nodes, 30 siblings — no drift. At 58920a8 it printed 1 drift(s).
  • cybernode is public and readable by the train (gh api repos/cyberia-to/cybernode: visibility: public), so the sibling pin 52538a6 can be checked out.

Remains: why this is not merged yet

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 cybernode release/phase1 5a2f4a2 (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.

  • Deletions: cybernode: the node leaves soft3 (proposals/cybernode.md C2–C4, executed 2026-10-27) #406's deletions of the moved code win. That covers crate/src/{chain,genesis,node}, crate/tests/pussy_identity.rs and deploy/chain/, including agent-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 … and soft3 conformance check chain forward to cybernode::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 names cybernode, because cargo reads profiles only from this root manifest and the node's code is in that crate now.
  • crate/Cargo.lock is release/phase1's and is not regenerated. It is still stale against the manifest, as noted above.
  • release/phase1.toml: cybernode is pinned at release/phase1 5a2f4a2. This follows hemera's precedent of a non-default-branch pin. The pin matches cybernode main only once the owner lands release/phase1 there.
  • Not on this branch: candidate.yml is release/phase1's. proposals/cybernode.md stays executed, with § 9.
  • Checks run locally: python3 -m unittest discover -s release -p "test_*.py" passed (55 tests). site/check-components.py reports no drift.
  • Still open: the compile proof of the moved node. Against the release/phase1 pins, cargo check stops at lens 392abe7 (no gpu/), then at bbg a3c9a0c (no rs/vendor/fjall), then at bbg ^0.3 against 0.2.1. Landing on cybernode main is 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

mastercyb and others added 2 commits October 27, 2026 14:03
…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>
@cyberia-apparatus cyberia-apparatus added queue worker PR not yet reviewed by an agent wide lane: wide — contract, shared crate, release line (deliver.md § lanes) labels Oct 27, 2026
cyberia-apparatus added a commit that referenced this pull request Oct 27, 2026
plan: session 152 — C4, #406 carried by #407
…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>
cyberia-apparatus added a commit that referenced this pull request Oct 27, 2026
…40525967811)

40522989900's manager release/phase1 pins no cybernode sibling, so soft3 never resolved.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
cyberia-apparatus added a commit that referenced this pull request Oct 27, 2026
plan: session 154 — C4 rehearsal re-dispatched with #407 as manager
cyberia-apparatus added a commit that referenced this pull request Oct 27, 2026
plan: session 155 — C4 holds #407 until the node's tests are gated
cyberia-apparatus added a commit that referenced this pull request Oct 27, 2026
plan: session 160 — C4, #407's rehearsal read in full (two new stack reds from #406)
@cyberia-apparatus

Copy link
Copy Markdown
Author

Diagnostic 40547036801 (diag/simulation-lock 47f8f20, never merged) ran on #407's stand: soft3 f16cc0f, 40446879208's overrides, cybernode at cybernode#1 31fca56. Both stack reds that #406 introduced in rehearsal 40525967811 close there:

  • simulation-gate: success, using simulation's lock re-resolved from the committed one (sha256 7ca0d5c4…). The diff adds cybernode 0.1.0 and makes soft3 0.11.0 depend on cybernode. 16 scenarios ran with 0 fail; the only reds are economy's 2 expected reds.
  • stack-chain-genesis: success: pussy particle bae85f40…, chain.snap: 54 entries, no drift, with cybernode#1's chain_snap_path().

The lock is cyberia-to/simulation#2, a draft from the fork that the owner merges. It must merge in step with soft3 main reaching 0.11, because the train checks out simulation at main HEAD. Until then rehearsals take it by simulation=pull/2/head. #407 still waits on cybernode#1, and then on the pin, the cybernode-tests gate and a rehearsal.

…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.
@cyberia-apparatus

Copy link
Copy Markdown
Author

Session 162 (C4): the cybernode-tests gate is on this PR, and its rehearsal is dispatched.

  • 4041b37 adds the product gate cybernode-tests in release/train_gates.py. It runs cargo test --locked in cybernode/rs, with SOFT3_CONFORMANCE_DIR=<soft3>/conformance set explicitly and a 1800 s budget. It sits where the node's tests ran before cybernode: the node leaves soft3 (proposals/cybernode.md C2–C4, executed 2026-10-27) #406, between soft3-tests and soft3-release, so the gate order G16a depends on is unchanged. When the cybernode checkout is missing, the gate is recorded as blocked rather than skipped. Two unit tests cover it in release/test_train.py.
  • PR gates on 4041b37: Release engine success (run 40553578257) and Components registry success (run 40553578073).
  • Rehearsal 40553564510 (--ref fix/cybernode-drift, cut=false) uses 40446879208's overrides with soft3=4041b37, cybernode=pull/1/head (31fca56) and simulation=pull/2/head (5518998).
  • Targets: cybernode-tests green with 314 passed on all four building legs; soft3-tests, soft3-release and node-status no worse than in 40446879208; stack-chain-genesis and simulation-gate green again.

This PR still does not merge. After the rehearsal is read, the cybernode pin moves to cybernode#1's merge commit (the owner's), and then it merges.

cyberia-apparatus added a commit that referenced this pull request Oct 27, 2026
plan: session 162 — C4, cybernode-tests gate on #407, rehearsal 40553564510
@cyberia-apparatus

Copy link
Copy Markdown
Author

C4 (director session 163): rehearsal 40553564510, four platform legs read.

Stand (sources.json, x86_64 linux): soft3 4041b37 (this PR's head), cybernode 31fca56 (cybernode#1), simulation 5518998 (simulation#2), and the rest as 40446879208's overrides (state/c4-gate/overrides.txt).

leg soft3-tests cybernode-tests soft3-release node-status other reds receipt sha256
x86_64-unknown-linux-gnu green green, 314 passed / 0 failed / 1 ignored green green phase1-pins, release-notes-source (as before) bc261717
aarch64-unknown-linux-gnu green green, 314 / 0 / 1 green green the same a95a9ed4
aarch64-apple-darwin green green, 314 / 0 / 1 green green the same 39b507fb
x86_64-apple-darwin green green, 314 / 0 / 1 green green the same ed20eca4
  • Every gate is green or red exactly as in 40446879208, and the only new gate is cybernode-tests, which is green. exit_code: 0, warnings: false.
  • 314 / 0 equals soft3-tests' 314 before the move (C2 acceptance). committed_chain_snap_matches_this_build ... ok, so the snapshot is read from soft3's conformance/.

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 cybernode pin has moved to its merge commit.

@cyberia-apparatus

Copy link
Copy Markdown
Author

C4 receipt: the stack leg of rehearsal 40553564510 (session 166)

Stand (candidate-stack/receipt/sources.json, rehearsal: true): soft3 4041b37 (this PR's head), cybernode pull/1/head → 31fca56, simulation pull/2/head → 5518998. Stack job 122363639791 ran 17:45:45 → 19:21:15 (95.5 min of 210).

Compared gate by gate with release-validation.json of 40446879208 (the baseline before the move):

gate 40553564510 40446879208
cybernode-tests (new) green, exit 0, warnings: false. Lib 310 passed / 0 failed / 1 ignored, then 2 + 1 + 1, for 314 passed —
stack-chain-genesis green green
simulation-gate green green
conformance-snapshot, soft3-tests, soft3-release, node-status green green
stack-bbg, cybergraph, file, foculus, hemera, lens, nox, radio, tok, tru, vault green green
stack-mudra red: tests/domain_compat.rs:11 the same red
stack-neuron red: cannot update the lock file … --locked the same red
stack-zheng red: the_shipped_final_proof_is_at_most_64_kib… (wrap/tests.rs:135) the same red (L3b)
phase1-pins, release-notes-source red red

sha256 of release-validation.json starts 973aa5ab…; sha256 of logs/cybernode-tests.txt starts 41768573….

This PR causes no red. The four platform legs were read in session 163 (comment 6450505737). This PR's checks are green (drift, test) and it is CLEAN.

Not merged yet: the cybernode pin must point at a commit on cybernode main. Today it would be 52538a6, which has no rs/Cargo.lock, so cybernode-tests would go red. That waits on the owner merging cybernode#1 (31fca56). After that: move the pin to the merge commit, then merge this PR. simulation#2 merges once soft3 main reaches 0.11.

@cyberia-apparatus

Copy link
Copy Markdown
Author

Conflict-free again (director session 168). #423 (main 3045d54 → release/phase1) made this PR dirty: both sides renamed CLAUDE.md → AGENTS.md, and GitHub's merge check treats the rename/rename as a conflict.

  • db54c19 merges release/phase1 611791b into fix/cybernode-drift (ort, clean; git merge-tree exit 0). The merged AGENTS.md is this PR's blob 3eedb35, a superset of release/phase1's 513321e (the crate/ row, the cybernode boundary, the node-status note).
  • What comes in from release/phase1: 6 files, +116/−6, all docs, proposals and the plan. No code, specs, lock or workflow change, so rehearsal 40553564510's receipts (comment 6451673696) still hold for the code.
  • On db54c19: mergeable_state: clean, check runs drift success, test success.

This still waits on the owner's cybernode#1. Next: move the cybernode pin to its merge commit, run a check, then merge.

@cyberia-apparatus

Copy link
Copy Markdown
Author

Held out of pussy's genesis: decision D15 (director session 411).

Measured (git merge-tree: release/phase1 523a84d against this head db54c19, merge-base 611791b, 2026-10-27): GitHub reports this PR as dirty. There are 8 conflicts: crate/Cargo.toml (content), plus 7 modify/delete. #407 deletes these files, and release/phase1 has since changed them in 7 commits:

commit row files
a6e9b8f, 6868695 P2, D14: the settlement halt is named crate/src/chain/economy/{run,settle}.rs, crate/src/chain/tests/economy.rs
8dd2a91 P2a: release overflow-checks for soft3 and cyber-tru crate/Cargo.toml (root profile)
27f41e9, 66029b2, 687f86b, 981776a P3, P3d, P3e: the two-host pussy stand deploy/chain/* (new deploy/chain/agent-a/)

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 cyberia-apparatus. The P2a profile has to name cybernode in soft3's root Cargo.toml, since a profile in a dependency is ignored. deploy/chain also needs a new home. The result is a node of a new shape, and it would need a full re-qualification before the freeze (2026-11-02 00:00 UTC).

Decided (D15): pussy's genesis runs the node that was qualified. That node is the soft3 crate at release/phase1 b6f22dc, green on all five legs of rehearsal 41201610001, and agent-a already runs it. C4 lands after the genesis attempt (2026-11-05 13:37 UTC) through that port, with the P2 halt test carried verbatim and a check that the overflow profile applies to the node binary. Until then:

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>
@cyberia-apparatus
cyberia-apparatus merged commit 8a3090b into release/phase1 Nov 1, 2026
2 checks passed
cyberia-apparatus added a commit that referenced this pull request Nov 1, 2026
… since 611791b on cybernode release/phase1 5a2f4a2 (cybernode#2–#4)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked draft with a named blocker wide lane: wide — contract, shared crate, release line (deliver.md § lanes)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants