Repository navigation
The harness roster is derived from the pair heads through the fleet topology; no address is authored - #10627
Merged
Conversation
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. |
…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
…opology; 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
briansrls
force-pushed
the
harness-roster-from-spark
branch
from
September 6, 2026 00:27
ac81a2e to
ba25e0a
Compare
briansrls
added a commit
that referenced
this pull request
Sep 6, 2026
… 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>
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.
Why
The Spark pair heads moved.
harness_engine_replica_addressescarried"192.168.1.232"(srv7, the first pair's old front door) as a bare literal. Measured from srv1 on 2026-09-05:.225(srv6) and.236(srv9) advertisedeepseek-v4-flash:iq3s-spliton :30000;.232does not. Nothing observed the literal until a dispatch refused against it.What (rebased onto main after #10540)
gunbc.harness.harness_wire:harness_engine_replica_roster()= for each group inspark_pair_serving_groups,spark_pair_serving_head(group)→host_lan_address(host). Result isHarnessReplicasResolved { addresses }orHarnessReplicasUnresolved { hosts }when a head has no LAN endpoint row. The authored list and the seed helpers over it (harness_engine_replica_index/_address,harness_engine_backend_url) are deleted;harness_replica_pick(seed, replicas)is the one pick.gunbc.fleet_intent_network:host_lan_address(host) -> NonEmptyStr?reads the topology's endpoints (HostOperatingSystem role, Lan locality), enumerated arms, no wildcard.gunbc.harness.harness_backend:HarnessRosterUnresolved { hosts }arm; the backend observer,harness_serving_backend_url, dispatch selection (roadmap_dispatch_actuator) and the belt provider preflight (roadmap_belt_actuate) refuse on it naming the host.the_replica_roster_derives_from_the_pair_heads(two heads, .225 and .236, seeds spread; RED on Unresolved or a collapsed list); review-guidance spread test usesharness_replica_pickover a fixture roster.Annotated next move (not here)
The LAN locality is still chosen by the harness. The fabric owes a locus-to-locus resolution (dispatching host → head front door), the same relation
fleet_locus_ssh_targetcomputes for ssh; when it exists the roster asks it and stops namingLan. Brief handed to the operator separately.Verified
gunbc compile --target dag: 0 blocking onharness_cli,roadmap_serve,roadmap_belt_tick_cli.claim_batch --hermetic:harness_chat_shape_test11/11,harness_review_guidance_test3/3.🤖 Generated with Claude Code
https://claude.ai/code/session_019iXPtAqzPaNBZbaaM5rxrY