Repository navigation
Conversation
…ns and attributable bindings for the five newer units, endpoints, procurement at seven The router table the operator pasted on 2026-09-05 holds seven Static, Active Spark reservations. Two were enrolled (srv5/srv6), two were named but not enrolled (srv7/srv8, SPARK-PAIR-1), and three were unknown to the model. This lands the network half of adoption for all five newer units: - gunbc.fleet_intent_network: operator_host_srv9/srv10/srv11 assigned in ascending address order (spark-0c75 .236, spark-3336 .237, spark-b66c .238), and host-lan endpoint rows for srv7..srv11 joined into the topology. - gunbc.spark.dgx_procurement: reservation rows (MAC, address, label) for the five, router bindings under an attributable OperatorAllocation dated 2026-09-05, the roster at seven, the intent at unit_count 7 with the batch history in its note. - gunbc.spark.cell_role: NO role for the five, recorded as a refusal rather than an omission: srv7/srv8 hold an undischarged llama.cpp RPC peer reservation the disjointness wall keeps out of the serving roster, and the serving desired state is still per-host Ollama, not the pair deployment the operator wants. Roles land with the pair-serving promotion and the fabric observation that decides pairing. Witnesses: dgx_spark 4/4 (also repairs the row still asserting the pre-August .222/.223 addresses against data that says .226/.225), cell-role retirement 4/4, fleet_intent_network typechecks with 0 blocking; the intent-network witness file resolves bare names only on the whole-population route and cannot execute by entry closure on main either, so its new srv7..srv11 row is evidence on CI. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FbXKcgqW4Jx7e78BPWc8ci
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 97eb6f1023
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| srv7_router_binding, | ||
| srv8_router_binding, | ||
| srv9_router_binding, | ||
| srv10_router_binding, | ||
| srv11_router_binding, |
There was a problem hiding this comment.
Enroll host keys before widening the observation scope
Adding srv7–srv11 to dgx_spark_router_bindings also adds them to spark_serving_observation_scope(), so the spark_observe workflow now attempts all five through an exclusive known-hosts anchor. fleet_host_key_enrollments still contains only srv1–srv6, so strict host-key checking refuses each new connection and spark_serving_observe_ci_with_context exits nonzero when any observation fails; consequently, even an observation intended to inspect the established srv5/srv6 serving pair can no longer complete. Enroll verified keys for these endpoints or keep them out of this observation denominator until that prerequisite is available.
Useful? React with 👍 / 👎.
| srv7_host_lan_endpoint, | ||
| srv8_host_lan_endpoint, | ||
| srv9_host_lan_endpoint, | ||
| srv10_host_lan_endpoint, | ||
| srv11_host_lan_endpoint, |
There was a problem hiding this comment.
Add the newly enrolled hosts to the fleet reach roster
These endpoint entries enroll srv7–srv11 into the network topology, but fleet_reach_probe_targets remains the hard-coded srv1–srv6 list. The production host reach/identity probe, host-key scan, and fleet receipt collector all iterate that unchanged roster, so none of the five newly enrolled hosts will be scanned, probed, or represented in convergence collection. Extend or derive the reach roster as part of this enrollment.
Useful? React with 👍 / 👎.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
… the CI cost re-cut (#10631) * The harness roster names the pair heads through fleet endpoint rows: srv6 and srv9, not .232 The heads moved. .232 (srv7) was the first pair's front door and stayed in harness_engine_replica_addresses as a bare literal after Group B's head became srv9 (.236); nothing observed it until a dispatch on srv1 refused against it on 2026-09-05 while .225 and .236 both advertised the model. The roster now names both heads through gunbc.fleet_intent_network endpoint rows, and its annotation cites the authority it derives from once that module is on main: gunbc.spark.pair_serving_desired spark_pair_serving_head (spark-pair-serving, #10540). The srv9/srv10/srv11 identity slots and the srv7..srv11 LAN endpoint rows are ported from that branch verbatim so it merges onto them unchanged. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019iXPtAqzPaNBZbaaM5rxrY * The harness roster is derived from the pair heads through the fleet topology; no address is authored #10540 put gunbc.spark.pair_serving_desired on main, so the roster stops naming endpoint rows and asks spark_pair_serving_head for each serving group, then gunbc.fleet_intent_network host_lan_address for that host's LAN endpoint. A head with no endpoint row makes the roster HarnessReplicasUnresolved, which the backend observer, dispatch selection, the belt preflight and every harness entry refuse on naming the host -- never a shorter list. The seed helpers over the authored list (replica_index / address / engine_backend_url) are deleted; the pick is harness_replica_pick over whatever roster is handed in. The LAN locality is still this module's choice and is annotated as the next move: the fabric owes a locus-to-locus resolution (dispatching host -> head front door), the relation fleet_locus_ssh_target already computes for ssh. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019iXPtAqzPaNBZbaaM5rxrY * Roadmap curation: thirty stale rows superseded with their successors named, five landed rows signed off, the CI cost re-cut The dispatch view showed 15 ready, 49 upcoming, 0 done: nothing had ever been signed off, and most of the ready set was either work merged this week or rows whose subject the 2026-08-15 floor cut deleted. Superseded (identity and id kept so edges still resolve; SupersededLine names what answers now): - ci-cost x15 (five-minute gate, warm admission, materialization, phased process, scoped worker, discovery snapshot, streaming, witness bundle, lens suite, arc ledger, ...) -> DESIGN Building & checks floor cut, re-cut as ci-required-run-cost against the live four-phase --required-ci run, measured on its own rows. - ci-placement x5 -> the 48-job ci.yml and two-host placement no longer exist. - ci-observation x2 (event grouping, collapse watchdog) -> the deleted job log; honest progress stays on observation-scoped-run-consumer. - roadmap-runtime x5 -> the harness replaced Codex (dispatch_harness_selection, operator ruling 2026-09-04); identity-join -> launch identity + roadmap event log; ready-override -> ManualReady + operator cause. - judgment x2 -> criterion reviewers + goal auditor on the fixed engine. - fleet-spark-host-enrollment -> #10512/#10517 rows and pair_serving_desired (#10540); serving stays open. Signed off with executed evidence (witness module/fn, run) and handback PRs: harness-thinking-and-write-briefs, roadmap-verify-to-publish-phase, roadmap-round-strip-pulse-follows-the-worker, roadmap-continuation-turn-label, roadmap-round-strip-percolator. The harness row's contract is re-pointed at the roster witness #10627 renamed. Not touched, deliberately: self-host (v1 delete half is parked by the v1 maintenance standing), namespace, compute, ci-control, toolchain, shell, source-intent. Those are the operator's call or are the work itself. The nine "closing-contract" ready rows are derived from nodes lacking a closing validation and follow. ROADMAP.md regenerated by generated_artifact_gate main_wet. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019iXPtAqzPaNBZbaaM5rxrY --------- Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
See the commit message. Part 1 of the Spark pair-serving program: network half of adoption for srv7..srv11. Cell roles deliberately held (undischarged RPC peer reservation on srv7/srv8; desired state is not yet pair serving). Next: fabric observation to derive pairing, then promote pair serving (DeepSeek V4 Flash) to desired.
🤖 Generated with Claude Code
https://claude.ai/code/session_01FbXKcgqW4Jx7e78BPWc8ci