Repository navigation
Conversation
…yped ruling reservation, and the placement projection split from the commitment census
gunbc.spark.serving_subject names who can hold a Spark unit for serving, out of
identities the corpus already has: PairServingUnitOn { group } (the pair
deployment has no identity distinct from the group it claims) and
PlacedServingArm { arm } (the GLM canary, whose pair claim on group B was
withdrawn). It records the first half of the operator's 2026-09-12 ruling --
group B is GLM's -- as a SparkServingReservation whose basis is a typed
ServingRulingCitation and whose hosts derive from the observed cage.
gunbc.spark.host_commitment splits its cause vocabulary at the type level into
ObservedCommitment and DeclaredCommitment so a fold can answer which of a
host's causes were observed and which were ruled. It answers two questions from
one census: the new-placement question (spark_unplaced_hosts,
admit_unplaced_host -- observed causes only, consumed by the build and probe
lanes) and admissibility to a serving subject (spark_serving_admissible_hosts --
a host is admissible to S iff every cause on it is held by S). Production:
the pair unit on A sees srv5-8, the canary subject sees srv9-12, no unit is
free of every cause, and the build lane still sees srv10-12.
The uncommitted projections are deleted rather than kept beside the new names;
the build and probe lanes move to the placement seam, which is the census.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01VXarFkzvfHF1gzaWbM1rwg
…g-derived A claimed serving group is desired state and a cell role is an operator decision; neither is an observation of the host, so Observed/Declared was a false name for the outer split (parent review). What the four held causes share is that an owning authority holds a standing on the machine which a fleet-side event ends; a ruling-derived cause is held by nothing on the fleet and ends only when the ruling is superseded. The second-half citation of the 2026-09-12 ruling now sits beside the first. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VXarFkzvfHF1gzaWbM1rwg
…by identity FleetSnapshot drops host_count and carries the subject and its admissible identities, derived through gunbc.spark.host_commitment. fleet_fit_of walks the members and refuses naming the identities it had and the slots it could not fill; both topology generators enumerate over the carried set; the evidence key hashes the identities; the shape names the hosts it may be bound within. The host fit becomes its own hard-bounded axis so a subject with an unread footprint can no longer skip it. One serving subject, two artifact versions: group_a_served_artifact_transition records the ruling's second half (V4 Flash -> V4.1 Flash on the pair unit on group A, 2026-09-12). lineage_predecessor and transition_step_successor were checked and are not inhabitable for this relation; no successor edge and no incarnation identity is minted. Both DeepSeek fields resolve their artifact and fleet through the row; GLM resolves through the canary subject. Production: V4.1 and V4 Flash see srv5-8; GLM sees srv9-12; a planted eight-rank V4.1 shape is NoFeasible on group A and NeedsEvidence over an eight-host fixture. The ledger row records the specimen-site climb. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VXarFkzvfHF1gzaWbM1rwg
The floor's citation wall refused decl_ref(..., "planted_tp8_v4_1"): the witness module declares no such name. The planted field now cites the test fn that owns it, as the host_commitment witness already does for its fixture arm. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VXarFkzvfHF1gzaWbM1rwg
The no_redundancy annotation still named spark_fleet_snapshot, which this change deletes, and attributed width feasibility to the weight-fit axis alone now that the host fit is its own axis (review 65911). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VXarFkzvfHF1gzaWbM1rwg
|
Closing: this is an auto-opened PR on It carries nothing main lacks — DSV41-9 is complete: #11107 (half one) and #11308 (half two). If anything on this branch turns out to be wanted, it should be re-proposed from a fresh branch off main rather than resurrected here. 🤖 Generated with Claude Code |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8325d9f0f1
ℹ️ 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".
| replicas: replica_shapes_loop(degree: selected.candidate.topology.tensor_parallel_degree, remaining: selected.candidate.topology.replica_count, acc: []), | ||
| hosts_required: hosts_consumed(c: selected.candidate), | ||
| hosts_unassigned: selected.input.evidence.fleet.host_count - hosts_consumed(c: selected.candidate), | ||
| hosts_admissible: selected.input.evidence.fleet.admissible_hosts, |
There was a problem hiding this comment.
Bind the evidence subject to the candidate field
When a caller combines a field for one deployment with another subject's evidence (for example, deepseek_candidate_field with glm_canary_evidence_current), nothing in ServingDeploymentDecisionInput detects the mismatch. Once the other evidence is sufficient, host-fit is evaluated against the wrong subject's hosts and this line emits those hosts as admissible for the selected DeepSeek shape. Carry the subject on the field/domain and require it to match the fleet subject before selection.
Useful? React with 👍 / 👎.
| fn rank_slots_left_after(required: Nat, members: List<HostIdentity>) -> Nat { | ||
| fold(members, init: required, f: (left, _h) => if left == 0 { left } else { left - 1 }) |
There was a problem hiding this comment.
Count distinct admissible hosts
If FleetSnapshot.admissible_hosts contains the same HostIdentity more than once, this fold consumes one required rank for every list entry, so a deployment can be reported as fitting without enough distinct machines. The topology generators likewise use count(fleet.admissible_hosts), propagating the same overstatement into the candidate domain. Normalize the list by identity or reject duplicate identities before treating it as a set.
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. |
Auto-opened by session-dashboard for session
nimble-bear-399.Pushing to
session/nimble-bear-399advances this PR.Worker attestation
Before flipping this PR to ready for review, confirm each item:
npm test,cargo test) and the result.Closes #Ndirective.Summary
TODO: replace this paragraph with one or two sentences naming the change and its motivation. Reviewers read this first.
Test plan