Skip to content

Arm launch step timeout from the arms' readiness deadline; NVFP4 skips the rank-asymmetric fused_moe autotune - #13319

Merged
gunbai-bot[bot] merged 610 commits into
mainfrom
session/cool-carp-342-readiness
Oct 6, 2026
Merged

gunbai-bot[bot] merged 610 commits into
mainfrom
session/cool-carp-342-readiness

Conversation

@gunbai-bot

@gunbai-bot gunbai-bot Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #13040 (GLM Group A staircase), for the NVFP4 diagnostic launch.

Launch-step timeout tied to the arms' readiness deadline

  • The arm launch step's timeout-minutes was a literal 60, below the 3600 s front-door wait it encloses. Run 37190290418 was killed between apply and verdict, leaving neither a commit nor a rollback.
  • arm_launch_step_needed_minutes() computes the needed time: the longest arm VLLM_ENGINE_READY_TIMEOUT_S, read by the front door's own engine_ready_timeout_for, plus 30 minutes for apply and 20 for rollback.
  • The workflow renders the Duration literal arm_launch_step_timeout_minutes = 110. Witness w_the_launch_step_timeout_covers_every_arms_readiness checks it is at least the derivation.
  • It is a literal only because the refinement-cast wall refuses a computed Int-to-Duration cast. The named trigger is a declared conversion.

NVFP4 arm: VLLM_FLASHINFER_AUTOTUNE_SKIP_OPS=trtllm::fused_moe::gemm1,trtllm::fused_moe::gemm2

  • New extdeps.vllm.environment row, citing the pinned image's sources. MoERunner.get_cache_key_extras keys tactics by tp/ep/cluster rank, and the sparse-MLA pre-tune runs on the leader only.
  • Without the variable, the synchronized autotune deadlocks the non-leader ranks.
  • Cost, stated on the row: rank 0 runs its tuned tactic and ranks 1-3 run the heuristic one, so NVFP4 throughput from this arm is a lower bound.
  • Failure mode filed: a_leader_only_pre_tune_seeds_a_rank_keyed_cache.

Witnesses: group_arm_launch 20/20, workflow_dispatch_input 42/42, run remotely at an exact SHA.

🤖 Generated with Claude Code

Brian Searls and others added 30 commits October 2, 2026 14:34
…opulations

The authority projection asked every node a question of a whole population:
the accepted set filtered every receipt per declared node, the live-receipt
join filtered every declared node per receipt, the ghost count compared every
rendered node against every sanctioned node, and the markdown tree filtered
every edge per node for its parents and every node per parent for its
children. Each is now one index built where the population is in scope
(receipts_by_node, roadmap_nodes_by_id, roadmap_parent_index moved to the
model as the one parent index, roadmap_primary_children_index), and the
closing-contract minting skips the lineage walk and dependency read for nodes
whose node-local gaps already rule them out
(readiness_may_be_only_contract_missing: a necessary condition; node_readiness
still decides).

frontier_sets_projection 58,033 -> 30,777 eval steps; closing-contract
candidates 82,686 -> 42,382; roadmap_authority_projection 141,565 -> 59,666.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…old stylesheet seams

Every page row asked its prerequisites, which of them are closed and (on the
tree) its children of the raw node and edge lists, and every band asked the
whole membership relation per hierarchy question. A page now indexes its graph
once (gunbc.roadmap_presentation RowGraph: lineage, parents, closed ids;
roadmap_page PageTree adds primary children) and the banding reads one
RoadmapMembershipIndex built by the page (daily_workspace_view_in). The
sandbox's fixture frame reads an empty membership relation instead of the
authority's, which named none of its rows and was reached only through a
parameter default.

The served folds gain supplied-stylesheet seams that production delegates
through (roadmap_page_for_projection_launch_with_stylesheet,
roadmap_daily_workspace_page_for_projection_observed_stale_with_stylesheet,
sandbox_page_with_stylesheet); the altitude, serve daily-plan and sandbox
gallery claims render through them with the stylesheet they never read
supplied empty.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…de half as a census

The page, row and frontier claims rendered the whole projected authority
(~1.5M eval steps each) to inspect a handful of rows. They now render the
served folds over a projection holding exactly the declared rows they name
(test.claim.roadmap.roadmap_authority_subtree_fixture), and
witness_authority_document_carries_every_active_declared_row proves, without
rendering, that the projection carries every active declared row and every row
a subtree claim names.

witness_authority_daily_workspace_serializes found both its bands in the
stylesheet's [data-band=...] selectors, and the live authority has no done row;
it now pins a real ready row's band, and witness_page_places_done_node_in_done_bucket
pins the done band on a fixture. witness_projection_is_active_only reads the
projected rows through the emitter's own per-row predicates instead of
serializing every row to markdown.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- gunbc.spark.native_experiment_apply: main (#12952) split unreached legs out
  of SparkPairHostApplyFailed into SparkPairHostUnreached. Every match here now
  handles Unreached exactly as Failed, which preserves the pre-split behavior
  (an unreached leg refuses/halts with its cause).
- shell_dag_codex_app_server_trip_script witness: main (#12973) deleted
  codex_press_account_trip_script. Re-pointed trip_surface at the typed
  invocation under the file's own sanctioned exception, using the projection
  codex_app_server_press_witness_test already uses. Claims are unchanged.
  The control-word and sentinel arms now pass and leave the expected-red chunk;
  the adversarial codex_home arm still fails and stays enrolled.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t exercise the promoted ceiling

ServingSubjectKey (length-prefixed preimage + content digest, exact-preimage equality) keys quality,
calibration, cache fit and incumbent. Quality compares only on the same acceptance-manifest digest;
calibration must sustain the promoted max_num_seqs, read realized transport, and record zero stalls.
Policy states the operator-approved thresholds.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…apabilitySubject

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Review findings (73856/73709): five tools/tests/*.py had no .dag authority and no
consumer (DESIGN §6 unmodeled realization); 26 committed .log/.json receipts
transcribed instrument output (§6 name the instrument). The plan docs now name
the .dag entries that re-derive the results.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The two clauses read independent facts of the projected rows; held in one
claim they cost 77,539 eval steps against the 72,300 budget. Apart they are
69,622 (witness_projection_is_active_only) and 67,264
(witness_projection_carries_no_operator_todo), which now also reads the
preamble paragraphs the former markdown form covered.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
sandbox_page_with(stylesheet, sections) is the page fold sandbox_page delegates
to with sandbox_sections(); the gallery-and-live claim renders it over the two
sections it asserts on, so it still reads the page's client asset and header
without building the other six sections (102,684 -> 31,976 eval steps). The
real page stays rendered whole by witness_sandbox_renders_register_depths and
witness_sandbox_carries_auditioner_control.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The live and refused renders share no assertion; one claim paid for both
tables. witness_shell_live_task_refusal_marks_its_row now carries the refused
arm.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Ledger-Repair-Judged: docs/design-rung-drops.md
Ledger-Rows-Repaired: docs/design-rung-drops.md edited_bin_witness_wet_rows_not_executed_by_ci
Heal-Candidate-Run: 37023043211
…; mints read it from the profile

ModelLaunchPolicy is sole-constructor with no public mint and carries its checkpoint; the derived
ServingLaunchProfile inherits it, and serving_subject_for_launch / arm_memory_fit_subject_for_launch /
memory_proof_subject_for_launch take no second checkpoint. plan_arm_launch_for and
arm_memory_fit_experiment_plan refuse a profile derived from another checkpoint's row. The four inline
GLM policy copies are glm53_native_launch_policy; the unconsumed checkpoint_launch_policy is deleted.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…and the config reading consume it

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…file

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…her's gate

The page indexed its graph for scheduling while the launch admission's
readiness gate walked lineage and scanned every edge and node per row over the
same rows. gunbc.roadmap_spawner now owns the indexed graph (ReadinessGraph:
lineage by id, parents by child, closed ids) and node_readiness_in_graph, the
one readiness over it; the presentation's row graph is that graph, and
LaunchGraphProjected carries it, so the admission's node find is a lookup and
its readiness gate reads the same value the page reads. node_unmet_parent_ids
keeps its list form for single-node callers.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
# Conflicts:
#	dag/gunbc/spark/serving_arm.dag
… binding comment states who passes the wall

v41_group_a_intent is one row read by the plan and by the unit render, so every V4.1 rank renders
Restart=no, StartLimitBurst=1, RuntimeMaxSec at the derived bound, and no [Install]. A witness goes red
under a normal-serving render (verified). The WHO IT BINDS block on plan_arm_launch_under_memory_fit now
says every arm passes the wall and V4.1 is admitted only as a bounded experiment because its terms are open.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbc-ci-auto-heal and others added 4 commits October 5, 2026 01:49
…art (apply and restore), so the rollback's own restart is not refused by StartLimitBurst; witness and transport-wait follow

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… wait (engine ready deadline, no second number) shared by the front door and a per-rank NCCL announcement wait before every readback, fresh and recovery

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ement repairs

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ed refused on an unloaded head unit (run 37254736596) and stopped both apply and rollback on srv6

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbc-ci-auto-heal and others added 4 commits October 5, 2026 07:34
…art site, one absolute readiness deadline per incarnation, the probed incarnation checked before and after every probe and bound into the readback, the deployment env (autotune skip-ops) in successor and performance identity

- gunbc.spark.deliberate_unit_start: load-state, reset-failed if loaded, restart -- typed legs for the incumbent restore (restore_spark_serving_units), the same HostOperation rows rendered into the apply and rollback scripts; HostOperation gains SystemctlRestart and SystemctlResetFailed over the existing extdeps operations
- spark_native_incarnation_wait: deadline = the incarnation's StartedAt + VLLM_ENGINE_READY_TIMEOUT_S on its own host, shared by the announcement and the front door; identity/running/restarts checked before and after every probe including a successful one; probes name the captured id; one log capture per transport probe; the observed id is printed and the readback refuses a verified rank whose incarnation differs
- SparkPairHostApplied carries wire and stdout as fields; consumers read stdout as data
- serving_deployment_env_key enters group_arm_row_successor and a new AxisDeploymentEnv on ServingPerformanceSubject; the GLM load receipt states the autotune policy and its lower-bound reading

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…; minutes appear only at the workflow Step (review 76345)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…s (annotations are module-item grain only; emit-build refused it inside the body)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…rite/prepare script, typed deliberate_unit_start_leg, wait/finish script; the shell rendering of the start is removed (review 76352, ruled by valiant-crab-775)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot

gunbai-bot Bot commented Oct 5, 2026

Copy link
Copy Markdown
Contributor Author

Review 76352, string-assembled shell. Two parts, ruled by valiant-crab-775:

  1. Deliberate start: fixed in 0c72892. The start now has one realization, the typed HostOperation legs in gunbc.spark.deliberate_unit_start deliberate_unit_start_leg. The apply and rollback no longer spell it in shell. Each is split into a write/prepare script, the typed start leg, and a wait/finish script (spark_native_apply_sequence, spark_native_rollback_sequence), and the shell rendering is deleted. deliberate_unit_start_witness_test w_no_stage_script_spells_a_start pins it.

  2. The incarnation poll loop stays under the existing feature:remote-shell-body-emission marker. Its trigger is General orchestration intent to Bash emit fold over grammar rows #5828.

    • Its missing carrier is a real language capability: there is no modeled sleep or poll-until step, which is exactly the bounded remote operation sequence General orchestration intent to Bash emit fold over grammar rows #5828 tracks.
    • Moving the loop executor-side, so each poll is a typed leg, is not a substitute. It would put the deadline on the executor's clock. That undoes the side-chat ruling's finding 1, which anchors the one readiness deadline to the incarnation's own StartedAt on the host that runs it, so no clock is compared across hosts.
    • When General orchestration intent to Bash emit fold over grammar rows #5828 lands, the loop becomes a projection of that sequence with the same anchored deadline.

— sent from cool-carp-342

gunbc-ci-auto-heal and others added 3 commits October 5, 2026 08:18
…ts its moved-axis claim

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…es the launch-step derivation (no zero), and the readiness bound is a std.measure Second through the incarnation wait, unwrapped only where the shell text renders (review 76374)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…akes its unit (a zero-arg field call is not a call), the readiness fold is Nat throughout, a witness binding no longer shadows 'with'

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Oct 5, 2026
…he arm converge: the converge's apply runs write-unit script, typed deliberate start, wait script; the converge's readback binds every verified rank to its awaited incarnation and waits under one deadline anchored to the incarnation's start; the retired rollback/preserve paths stay deleted

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbc-ci-auto-heal and others added 2 commits October 5, 2026 10:18
…it captures (id, absolute deadline) and the front door is rendered from that carried value, never resolving or deriving again; the wait loop only observes and gunbc.spark.awaited_incarnation decides (a success after the deadline refuses); executed-path reds for replacement after readback, success after the deadline, and a transport near the deadline with the front door down (side-chat ruling at 43cc61a)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… carry the clock's refinement, the parse refuses a negative instant, and a red pins it (review 76436)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
gunbai-bot Bot pushed a commit that referenced this pull request Oct 5, 2026
… converge's readback decides each rank's transport wait from its trace, binds the readback to the awaited incarnation, and hands the head's awaited value to the front door, which never recaptures or re-derives

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 5, 2026
@gunbai-bot
gunbai-bot Bot removed this pull request from the merge queue due to a manual request Oct 5, 2026
gunbc-ci-auto-heal and others added 4 commits October 5, 2026 14:04
…oted is a pipe into yes(1), an endless writer that held the front-door leg's ssh channel open after a successful probe until the step timeout (run 37304585650); a red pins the quoting

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…refusing typed (WaitLegOutlivedBound -> AwaitedLegOutlivedBound) instead of an open session the step timeout ends; one privileged-session route shared by the plain and bounded legs; a red sweeps every rendered stage script for echoed words the shell reads as a pipe, redirect or command

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…against 72300 in floor run 37322697664): an exact cheap path for plain-word arguments, and the sweep cut by stage into three bounded claims

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…apped only where the refusal is rendered (review 76631)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 5, 2026
Merged via the queue into main with commit 81df793 Oct 6, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/cool-carp-342-readiness branch October 6, 2026 10:24
gunbai-bot Bot pushed a commit that referenced this pull request Oct 6, 2026
…-way against readiness's tip b7914eb so the squash adds no spurious conflicts; the mode description keeps this branch's converge sentence; fleet-converge.yml regenerated next

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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.

0 participants