Skip to content

fix(bench): stable CELLD_NODE + lab same-host supersede (pre-v4) - #1456

Open
danielsmithdevelopment wants to merge 11 commits into
cursor/comparison-board-063-2725from
cursor/fleet-stable-node-soak-2725
Open

danielsmithdevelopment wants to merge 11 commits into
cursor/comparison-board-063-2725from
cursor/fleet-stable-node-soak-2725

Conversation

@danielsmithdevelopment

@danielsmithdevelopment danielsmithdevelopment commented Oct 31, 2026 •

Copy link
Copy Markdown
Owner

Summary

Pre-v4 availability path on stable CELLD_NODE, with a lab celld that carries the agreed product order (not stock 0.6.3).

Product order

  1. Incarnation + same-host supersede (pid + start ticks + boot_id; cross-host wait/refuse)
  2. Lease-sweep / bounded maintenance
  3. Alive ≠ ready
  4. Authorizing overnight soak on that binary (cycles ≥ 1000, 0 readyFails, 0 selfFences)
  5. Only then v4 N=1000

This PR

  • Stable CELLD_NODE soak harness + strict SOAK_GATES
  • Baseline unfixed stock soak (node-soak-baseline-unfixed-0.6.3.json) — non-authorizing
  • vendor/celld-lab: tip 0.6.3 + alive/sweep + host_process + same-host supersede claim path
  • Lab smoke 12 cycles: 0/0 with supersede log lines
  • Authorizing attempt 1 aborted at ~100 cycles after correlated dual node_lease_watchdog_fence following a ~17.7 min host suspend gap (not supersede) — see node-soak-lab-authorizing-suspend-aborted.json
  • Harness: count each self-fence once; wait TTL once per fence exit
  • Authorizing soak restarted on lab CELLD_BIN → node-soak-lab-authorizing.json

Lab build

cargo build -p celld --release --manifest-path vendor/celld-lab/Cargo.toml
CELLD_BIN=$PWD/vendor/celld-lab/target/release/celld npm run benchmark:fleet-node-soak
Open in Web Open in Cursor 

cursoragent and others added 9 commits October 31, 2026 22:53
Stop minting a fresh node id on every restart (v3's 712-registration
spiral on stock 0.6.3 without lease-sweep). Board defaults to fleet_A/
fleet_B with post-fence TTL wait; FLEET_PHASED_FRESH_NODE_IDS=1 restores
legacy. Add deploy-aware soak that asserts unique nodes/* ≤2 under
rebuild pressure before the next N=1000.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
240 rebuild cycles on stock 0.6.3 with stable CELLD_NODE: unique nodes/*
stayed at 2 (primary gate pass). Record 14 self-fences + 6 ready flakes
honestly; score ok on node ceiling, not zero readyFails.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Primary gate PASS (unique nodes=2 over 240/~3.75h); note ready flakes and
self-fence recoveries without claiming upstream GC or authorizing v4.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Node-ceiling-only passed the multi-hour soak but ready≈2.5% and
self-fence≈5.8% each already beat the board's 2% ceiling. Require all
three: nodes≤2, readyFail rate≤0.5%, selfFence rate≤0.5%. Re-score
evidence as failed_v4_rate_gates; document stable+incarnation+sweep+
alive path; do not start v4 until measured_v4_ready.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Require ≥1000 cycles for measured_v4_ready (600 rule-of-three floor;
Wilson zero-event needs ~765). Report Wilson 95% UBs with each rate.
Define incarnation supersede only when pid+startTime+bootId prove the
old same-host process is gone; cross-host wait/refuse. Order before v4
frozen in SOAK_GATES.md.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
At 1000 cycles, Wilson UB≤0.5% means no readyFails and no selfFences —
one stray event (~0.56% UB) fails. Keep that bar deliberately for v4
headroom after v2/v3; do not relax to ~1% after the fact.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Align STATUS and run-node-soak honesty with SOAK_GATES: at n=1000,
Wilson UB≤0.5% means 0 readyFails and 0 selfFences.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Stop unfixed overnight soak (cannot authorize v4); land baseline evidence
at 60/1000 with readyFails=2 selfFences=2. Add vendor/celld-lab from stock
0.6.3 with /alive + timed readiness, maintenance phase budget, and lease
host_process stamps for upcoming same-host supersede.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Wire incarnation supersede into predecessor recovery, dead-leader sweep,
and initial lease CAS: fence/replace only when expiry passed or same-host
pid+start+boot proves the prior process is gone; live/cross-host wait TTL.
12-cycle lab smoke: 0 readyFails, 0 selfFences with supersede log lines.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
@cursor cursor Bot changed the title fix(bench): stable CELLD_NODE default + pre-v4 node soak harness fix(bench): stable CELLD_NODE + lab same-host supersede (pre-v4) Nov 1, 2026
cursoragent and others added 2 commits November 1, 2026 07:33
Sticky lastExit.selfFence re-waited TTL every restart and risked re-counting.
Abort evidence documents correlated dual watchdog fences after ~17m host gap
(not supersede) on the first lab authorizing attempt.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>
Second attempt hit the same correlated watchdog fence after ~15m VM
pause while the agent was idle on a 30m progress timer.

Co-authored-by: Daniel Smith <danielsmithdevelopment@gmail.com>

This branch has not been deployed

No deployments
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.

2 participants