Repository navigation
v1 closeout mega branch - #13641
v1 closeout mega branch#13641
Conversation
# Conflicts: # src/v1/stage0/src/v1_compiler_emit_rust.rs
# Conflicts: # dag/gunbc/instruments/native_emission_controls.dag
# Conflicts: # dag/gunbc/auth/privileged_effect_census.dag
# Conflicts: # src/v2/std/symbol_index.dag
# Conflicts: # dag/gunbc/instruments/native_emission_controls.dag
# Conflicts: # dag/gunbc/instruments/native_emission_controls.dag
# Conflicts: # dag/gunbc/instruments/native_emission_controls.dag
…aven-357 # Conflicts: # src/v2/workflow/floor_pure_producer_share.dag
… main. GitHub refused the hand-edited 30-input file; emission from fleet_converge_dispatch_inputs is the repair. dashboard-deploy now requires refs/heads/main and environment srv1-production so a branch dispatch cannot wet-deploy production. Co-authored-by: Cursor <cursoragent@cursor.com>
…ay outside the closeout) deep-cat-540 recuts it onto main after #13641. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Review 78408: regeneration had folded a sold-out Spark roster into target options: [] while spark_* modes stayed selectable. Restoring srv5-srv12 would invent enrolled hosts. Emission now drops the target input and spark_* mode options, and refuses any remaining empty InputChoice. Co-authored-by: Cursor <cursoragent@cursor.com>
…ndary. A branch dispatch runs that branch's YAML, so a github.ref if is not a trust boundary. dashboard-deploy, approval-broker-dark-install and microvm-controller-install now name srv1-production; the required GitHub setting (main-only deployment branches, required reviewers) is modeled with an unobserved readback. Checkout is the event sha. Co-authored-by: Cursor <cursoragent@cursor.com>
… on 5c0d9d5 The composed closeout tip (the #13663 revert and #13664's fixed head folded) could not regenerate itself: claim_executor --required-regen refused with Stage0EmittedEdgesNotCovered (62 emitted edge endpoints with no stage0 crate) and the committed mirrors did not build a seed. Two generation-1 facts explain both, and both are repaired in this set rather than worked around. First, the regen's coverage check reads the host-shell roster from the TREE's src/v1/stage0/src/lib.rs (required_regen_host: closure_modules(lib.rs)), not from the seed. The integration-side regen from the d9368e8 seed, an emitter predating the crate planner (#13597), rewrote lib.rs without the three pub mod lines #13597's head 3674580 carried for gunbc_crate_partition, gunbc_emitted_crate_workspace and v1_compiler_emitted_workspace, while their mirrors and .dag sources stayed. Restoring the three declarations lets the regen run; the regenerated lib.rs then lists them canonically, which is the only change this set makes to lib.rs. Second, --required-regen renders v1_rt.rs from the SEED's compiled-in runtime rows, so a boot seed older than the tree's runtime_rust.dag emits a candidate without the host-budget join that the tree's memory_governor mirror consumes, and generation 1 does not build (the closeout history records the same provisional step at 42954d2). The committed v1_rt.rs is kept for generation 1; generation 2, whose seed carries the tip's rows, emits it identically, so v1_rt.rs is unchanged here. Recipe, on a shallow clone of 5c0d9d5 on srv1, each step under systemd-run --user --scope -p MemoryMax=80G -p MemorySwapMax=0: boot seed built from 3674580; main_wet; lib.rs roster repair; required-regen with the boot seed (first_generation_equal=false, 244-file candidate); install; v1_rt.rs restored; then the tip's own seed: build, main_wet, required-regen (generation 1: divergent, candidate installed; generation 2: first_generation_equal=true). No .dag file changes. The projections are main_wet's output over the composed tree: fleet-converge.yml regenerated from its 21-row authority (the committed 30-input file was drift), ROADMAP.md and docs/plans/native-obligation-population.md for #13664's recut, docs/design-rung-drops.md for the supersession, .gitattributes for the plan projection's merge driver. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…he administrator roster is empty; refuse an empty choice at emission (port of ffe8a90) The fixed-point regeneration on 5c0d9d5 faithfully emitted .github/workflows/fleet-converge.yml with `target: type: choice, options: []`, because gunbc.spark.credential_workflow spark_administrator_credential_roster has been empty since 2026-10-10 (every Spark sold) and gunbc.fleet_converge_workflow had no wall for an empty closed choice. GitHub rejects a choice input without options, so the regenerated workflow would have been undispatchable in every mode, not only the seven spark_* modes that read inputs.target; the previously committed file was drift the other way (hand-kept srv5..srv12 options for hosts no longer enrolled). Review 78408 on gunbc#13660 found this, and snappy-stag-26 fixed the authority there at ffe8a90; that PR is ruled outside the closeout at its WIF scope, so this commit ports exactly the empty-roster hunk and nothing of the WIF or environment changes. What changes in the authority: fleet_converge_spark_target_modes names the seven modes that consume the target; fleet_converge_dispatchable_modes() drops them while fleet_converge_spark_target_options is empty, and fleet_converge_mode_options is derived from it; the dispatch inputs are now fleet_converge_dispatch_input_rows filtered by fleet_converge_dispatch_inputs, which omits `target` while the roster is empty; fleet_converge_empty_choice_input_names() enumerates every InputChoice with no options over the four DispatchInputType variants, and expected_fleet_converge_yml() refuses emission with those names before the input-count check (DESIGN section 5: refuse, do not emit options: []). The witness every_dispatch_option_is_a_wire_value_of_the_vocabulary joins the options to the dispatchable modes, and empty_spark_roster_does_not_emit_an_empty_choice_or_spark_dispatch_modes pins the current roster state. The fleet_workflow_steps.dag hunk of ffe8a90 is not needed here: the closeout's ci_fleet_wif_auth_step_when already passes if_condition by name. The regenerated fleet-converge.yml is main_wet's output over this authority with the fixed-point seed; the stage0 mirrors are unchanged (the module is not in the emitted population) and required-regen stays at first_generation_equal=true. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Composed head |
…5477471759: close #13664 without folding, branch preserved; projections regenerated next
# Conflicts: # .github/workflows/fleet-converge.yml # dag/gunbc/fleet/fleet_converge_workflow.dag # docs/design-rung-drops.md
… (name + branch-or-tag rules), so the srv1-production standing can be discharged by a faithful GET (review 78420) Review 78420 on gunbc#13660 (folded here at 60c9457) found that extdeps.github.deployment_environments modeled the deployment-branch policy as SelectedRefs { refs: ["refs/heads/main"] }, while the API carries no refs: the environment object's deployment_branch_policy is null or { protected_branches, custom_branch_policies }, and the custom rules live at GET /repos/{owner}/{repo}/environments/{name}/deployment-branch-policies as branch_policies rows { name, type } with type "branch" or "tag". A reading of the real API can therefore never match the modeled refs, so gunbc.auth.github_deployment_environment's standing could never move from Unobserved to Holds (DESIGN section 3: model what the API actually returns; section 5: a check that cannot be discharged is not a boundary). The model now carries DeploymentBranchPolicyRule { name, ref_type: PolicyRefBranch | PolicyRefTag } under SelectedBranchesAndTags { rules }, the srv1-production requirement is the single branch rule named main with required reviewers, the restriction predicate requires exactly one rule that is a branch named main, and the read obligation names both GETs and the shapes they return. The witness gains a supplied-value control: a tag rule named main and a two-rule policy are not the main-branch boundary, the single branch rule is. Standing stays Unobserved until the operator applies the setting and its readback lands; that flip is the first follow-up on main. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…13664, fold of #13660) Same recipe as f8c3fa4, on a shallow clone of dbdc9d2 with the previous fixed-point seed as the boot seed (srv1, logs8): main_wet exit 0; required-regen generation 0 drifted gunbc_cli_dispatch_surface.rs (gunbc.cli_dispatch_surface is touched by #13660), generation 1 drifted gunbc_cli_dispatch_generated.rs, generation 2 first_generation_equal=true planned=169 executed=169 adjudicated=169 declared_divergent=1 [main.rs]; verify (dry main) exit 0; rebuild; gunbc test //gunbc/instruments:v2-native-cli exit 0 (emit and build exit_status=0 warning_count=0 wall_s=611, discriminating red on v2_cli_compile_cli) and //gunbc/instruments:self-host exit 0 (wall_s=716, red on v2_compiler_compile). The projections resolved toward #13660's side in the merge (ROADMAP.md, fleet-converge.yml, docs/design-rung-drops.md) were byte-identical to main_wet's output, so only .gitattributes and the two cli_dispatch mirrors change here. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
|
Composition receipts for the head neat-wolf-604 is fast-forwarding to,
— sent from smart-gull-336 |
|
Required run on the final composed head 2bf8735: witnesses success (run 38043137616, 09:56 to 10:18): seed build, self-host emit and build exit_status=0 warning_count=0 wall_s=585, v2-native-cli exit_status=0 wall_s=512, fresh product receipts, slot-grain MEMORY RECEIPTs on srv3-07 (still the pre-convergence 26/25 GiB + swap slot, as stated above under item 4). GitHub admits the merge (mergeStateStatus CLEAN before the review decision). Ready for the operator's landing decision; neat-wolf-604 files the ask. — sent from smart-gull-336 |
…perties. Rebase onto #13641 left stream_properties using exit_hook without declaring it, so the headless spawn claims could not resolve. Co-authored-by: Cursor <cursoragent@cursor.com>
…it executor (#13670) * Headless Claude dispatch: print argv, systemd unit, stream-json projection. When the harness has no spark, ExecutorDefault can admit Claude if custody is present; events stay in the belt's Codex envelope. Credential converge on srv1 remains an operator decision. Co-authored-by: Cursor <cursoragent@cursor.com> * Address review 78387: one Claude event mapping, explicit executor, transmit effort. parse_codex_jsonl now classifies bounded Claude stream-json via claude_code_line_codex_kind; jq only bounds those lines. ExecutorDefault stays a harness refusal. Print argv carries --effort. Co-authored-by: Cursor <cursoragent@cursor.com> * Address review 78389: emit tmux event pipe only for tmux containers. Claude and harness systemd spawn no longer derive readiness from tee/pipe emission or refuse as tmux-event-pipe-emit. Co-authored-by: Cursor <cursoragent@cursor.com> * Replace CodexProviderEventKind with a provider-neutral classifier. Delete the Codex-named event vocabulary at the root. One typed classifier decides observe, skip, or refuse; jq only bounds and preserves fields. Co-authored-by: Cursor <cursoragent@cursor.com> * Refuse fabricated Claude projector fields and malformed tool-use content. jq no longer fills is_error or subtype; the typed reader refuses a missing or non-boolean is_error. Assistant and user content that is not a well-formed block list is unreadable rather than treated as no tool use. Co-authored-by: Cursor <cursoragent@cursor.com> * Thread closeout ExecStopPost through the split stdout/stderr unit properties. Rebase onto #13641 left stream_properties using exit_hook without declaring it, so the headless spawn claims could not resolve. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: gunbc-ci-auto-heal <gunbc-ci-auto-heal@users.noreply.github.com> Co-authored-by: Cursor <cursoragent@cursor.com>
Composition
The head is
2bf8735ecb5(composition A, under review 5474794145):b5bd6a535e4).60c9457f902(dbdc9d294e4). Make fleet-converge branch-agnostic and parseable #13660 is closed as superseded; run 38038258991 created real jobs from this composition.fecc974293e).Stage0 regeneration (one regen, at the fixed point)
5c0d9d5d667.first_generation_equal=true, planned/executed/adjudicated 169, declared_divergent=1 (main.rs), verify exit 0.lib.rs. A regen from a seed older than the crate planner had stripped threepub modlines from it. The restore is canonical.Instruments (srv1, fixed-point seed)
gunbc test //gunbc/instruments:v2-native-cliv2_cli_compile_cli; controls heldgunbc test //gunbc/instruments:self-hostv2_compiler_compile; poison specimen refusedThe full table is in the #13675 body.
fleet-converge
ffe8a90a591; none of Make fleet-converge branch-agnostic and parseable #13660's other changes).gcp-iam-convergealso fires forbranch_run_grant.hetzner-cloud-controlis minted through the branch-dispatch pool.Not yet discharged
Item 4 is deferred to after landing: enforcing 22/21 GiB with zero swap on the runners. The convergence dispatch needs the repaired
fleet-converge.ymlon main first. Until then, receipts read the old 26/25 GiB + swap slot.Terminal ledger
Every PR open when the closeout started on 2026-10-09, plus every PR opened during it, now has one of these outcomes. Generated from GitHub state and from ancestry checks against this branch.
Folded into this branch (122): head is an ancestor of the branch, PR closed as superseded
#12942, #13072, #13108, #13126, #13202, #13210, #13224, #13225, #13243, #13247, #13255, #13260, #13307, #13308, #13320, #13325, #13328, #13333, #13346, #13351, #13357, #13359, #13379, #13380, #13406, #13412, #13425, #13428, #13429, #13436, #13438, #13442, #13453, #13454, #13460, #13469, #13472, #13496, #13497, #13501, #13502, #13503, #13507, #13511, #13513, #13516, #13517, #13519, #13520, #13544, #13545, #13548, #13549, #13550, #13554, #13560, #13563, #13565, #13566, #13567, #13568, #13569, #13570, #13571, #13574, #13575, #13577, #13579, #13580, #13582, #13583, #13584, #13585, #13586, #13587, #13588, #13590, #13591, #13593, #13595, #13596, #13597, #13598, #13599, #13600, #13601, #13602, #13603, #13604, #13607, #13609, #13610, #13611, #13613, #13615, #13616, #13618, #13621, #13622, #13625, #13626, #13633, #13635, #13636, #13643, #13644, #13646, #13649, #13650, #13651, #13653, #13655, #13657, #13658, #13659, #13660, #13661, #13665, #13666, #13667, #13668, #13669
Folded, then taken back out
Closed without folding (74)
length/count on a null or wron…Landed on main directly during the closeout window, before main was frozen (6)
#13334, #13509, #13559, #13581, #13619, #13627
Still open
🤖 Generated with Claude Code