From ebef802820b0c897261313019c9ca52d83707ec0 Mon Sep 17 00:00:00 2001 From: Brian Searls <11205878+briansrls@users.noreply.github.com> Date: Sun, 20 Sep 2026 22:46:57 +0000 Subject: [PATCH 1/2] Offer binary_expr before match/if/loop, so a block heading a binary chain can parse dag_grammar_expr_expr is an ordered Choice that offered match_expr, if_expr and loop_expr before binary_expr. But dag_grammar_primary_expr_core's final three alternatives already ARE those productions, so a block-shaped expression is a legal binary operand by construction. The ordering denied it: given `match a { ... } && b` the choice committed to match_expr, which succeeded having consumed the match alone, and `&& b` reached no production -- the parse ended with tokens remaining. Nothing was unrepresentable; the alternative that represents it was never offered. fn_literal, block_expr and arrow_lambda stay above binary_expr, where they already were: primary_expr_core admits a braced field-initializer list, so a block offered below could be taken as a record literal instead. The first tokens of match/if/loop are disjoint from those three, so moving them below changes nothing between them. Evidence, against the live grammar rather than a model of it: the new witness v2.test.parse.block_expr_as_binary_operand_parse runs source text through dag_prepared_grammar. Two arms are red before this change -- a match and an if heading a binary chain -- and three controls are green on both sides: each block form standing alone, and an operand that was never block-shaped. Whole-corpus census moves 829 file refusals to 650; 193 leave the parse stage and 14 of those land deeper, at body lowering or normalize, which is the signature of a wall moving back rather than vanishing. Not established, and stated rather than assumed: that a bare block form produces the same NODE as before, since the controls assert parsing and not shape; and whether the trailing match/if/loop alternatives are now unreachable, which holds exactly if binary_expr never fails where they would succeed. They are retained rather than deleted because that argument is not made here. Co-Authored-By: Claude Opus 5 (1M context) --- src/v2/extdeps/languages/dag.dag | 39 +++++-- ...lock_expr_as_binary_operand_parse_test.dag | 100 ++++++++++++++++++ 2 files changed, 132 insertions(+), 7 deletions(-) create mode 100644 src/v2/test/claim/parse/block_expr_as_binary_operand_parse_test.dag diff --git a/src/v2/extdeps/languages/dag.dag b/src/v2/extdeps/languages/dag.dag index 442c3b69731..2d485932319 100644 --- a/src/v2/extdeps/languages/dag.dag +++ b/src/v2/extdeps/languages/dag.dag @@ -1079,20 +1079,45 @@ fn dag_grammar_let_expr() -> GrammarExpr { ) } +// THE ORDER IS THE MEANING HERE, SO IT IS ARGUED RATHER THAN LEFT TO READ AS ARBITRARY. +// +// `Choice` is ordered and the first alternative that succeeds is taken, so an alternative placed +// above a longer one that shares its prefix denies the longer one. `binary_expr` descends to +// `dag_grammar_primary_expr_core`, whose final alternatives are `match_expr`, `if_expr` and +// `loop_expr` -- a block-shaped expression is therefore ALREADY a legal binary operand by +// construction. While those three stood above `binary_expr`, `match a { ... } && b` committed to +// `match_expr`, which succeeded having consumed the match alone and left `&& b` reaching no +// production: the parse ended with tokens remaining. Nothing was unrepresentable; the alternative +// that represents it was never offered. +// +// `fn_literal`, `block_expr` and `arrow_lambda` stay ABOVE `binary_expr`, where they already were. +// That is not incidental: `primary_expr_core` admits a braced field-initializer list, so a +// `block_expr` offered after `binary_expr` could be taken as a record literal instead. Their first +// tokens are disjoint from `match`/`if`/`loop`, so moving those three below changes nothing +// between them. +// +// WHAT IS NOT ESTABLISHED: whether the trailing `match_expr`/`if_expr`/`loop_expr` alternatives are +// now unreachable, which they are exactly if `binary_expr` never fails where they would succeed. +// That argument is not made here, so they are retained rather than deleted; establishing it is +// what would license removing them. +// +// Evidence: `v2.test.parse.block_expr_as_binary_operand_parse` -- two arms red before this reorder +// (a `match` and an `if` heading a binary chain), three controls green on both sides (each block +// form standing alone, and an operand that was never block-shaped). fn dag_grammar_expr_expr() -> GrammarExpr { dag_grammar_choice( - left: dag_grammar_nonterminal(production: ^dag_production_match_expr), + left: dag_grammar_nonterminal(production: ^dag_production_fn_literal), right: dag_grammar_choice( - left: dag_grammar_nonterminal(production: ^dag_production_if_expr), + left: dag_grammar_nonterminal(production: ^dag_production_block_expr), right: dag_grammar_choice( - left: dag_grammar_nonterminal(production: ^dag_production_loop_expr), + left: dag_grammar_nonterminal(production: ^dag_production_arrow_lambda), right: dag_grammar_choice( - left: dag_grammar_nonterminal(production: ^dag_production_fn_literal), + left: dag_grammar_nonterminal(production: ^dag_production_binary_expr), right: dag_grammar_choice( - left: dag_grammar_nonterminal(production: ^dag_production_block_expr), + left: dag_grammar_nonterminal(production: ^dag_production_match_expr), right: dag_grammar_choice( - left: dag_grammar_nonterminal(production: ^dag_production_arrow_lambda), - right: dag_grammar_nonterminal(production: ^dag_production_binary_expr) + left: dag_grammar_nonterminal(production: ^dag_production_if_expr), + right: dag_grammar_nonterminal(production: ^dag_production_loop_expr) ) ) ) diff --git a/src/v2/test/claim/parse/block_expr_as_binary_operand_parse_test.dag b/src/v2/test/claim/parse/block_expr_as_binary_operand_parse_test.dag new file mode 100644 index 00000000000..2104115169a --- /dev/null +++ b/src/v2/test/claim/parse/block_expr_as_binary_operand_parse_test.dag @@ -0,0 +1,100 @@ +module v2.test.parse.block_expr_as_binary_operand_parse + +import v2.compiler.parse { parse_module_prepared } +import v2.compiler.program_assembly { dag_prepared_grammar } +import v2.compiler.tokenize { tokenize } +import v2.extdeps.languages.dag { dag_lex } +import v2.std.diagnostic { Accepted, Outcome, Rejected, bind_outcome } +import v2.std.logic { Bool } +import v2.std.live_tree { LiveTreeDisposition, SubstrateInputsOnly } +import v2.std.node { Node } + +data live_tree_disposition: LiveTreeDisposition = SubstrateInputsOnly + +// THE DEFECT THESE ARMS DISCRIMINATE, AND WHY IT IS AN ORDERING FACT RATHER THAN A MISSING FORM. +// +// `dag_grammar_expr_expr` is an ordered choice whose first alternatives are `match_expr`, +// `if_expr` and `loop_expr`, with `binary_expr` last. `dag_grammar_primary_expr_core` ALREADY +// reaches all three of those same productions as its final alternatives, so a block-shaped +// expression is a legal binary operand by construction. The ordering is what denies it: given +// `match a { ... } && b`, the `expr` choice commits to `match_expr`, that production succeeds +// having consumed the match alone, and the `&& b` that follows reaches no production -- the parse +// ends with tokens remaining. Nothing about the operand is unrepresentable; the alternative that +// could represent it is never offered. +// +// WHY THE RED IS AUTHORABLE HERE (DESIGN 4b, the top-rung question). The forbidden state is a +// source text the accepted corpus cannot contain, because a module spelling it does not parse -- +// so no corpus fixture could carry it. It is perfectly representable as SOURCE HANDED TO THE +// PARSER, which is what these arms do: the grammar under judgment is the live +// `dag_prepared_grammar`, not a mirror of it, and the text is a value. +// +// WHAT EACH ARM ESTABLISHES, so a later reader does not mistake the set for one claim: +// - the two REDs are the defect, one per block form (`match` and `if`) heading a binary chain; +// before the reorder both are Rejected and both arms fail. +// - `bare_match_still_parses` and `bare_if_still_parses` are the controls that make the reorder +// a repair rather than a trade: a block form standing alone as a whole expression, which is +// how nearly every such expression in the corpus is written, must keep parsing. +// - `ordinary_binary_still_parses` holds the other side: an operand that was never block-shaped +// is unaffected. +// A change that satisfied the REDs by making block forms parse ONLY as binary operands would take +// the controls red, which is the discrimination the pair exists to provide. + +fn g_tokenize_parse(text: String, file: Symbol) -> Outcome { + match dag_prepared_grammar() { + Rejected { diagnostics: d } => Rejected { diagnostics: d } + Accepted { value: prepared, diagnostics: residue } => + bind_outcome( + o: tokenize(text: text, file: file, rules: dag_lex()), + f: fn(token_stream) { + match parse_module_prepared( + tokens: token_stream, + prepared: prepared, + validation_residue: residue + ) { + Rejected { diagnostics: r } => Rejected { diagnostics: r } + Accepted { value: artifact, diagnostics: d } => + Accepted { value: artifact.tree, diagnostics: d } + } + } + ) + } +} + +fn g_parse_accepted(text: String, file: Symbol) -> Bool { + match g_tokenize_parse(text: text, file: file) { + Accepted { value: _, diagnostics: _ } => true + Rejected { diagnostics: _ } => false + } +} + +// The shape read from a real refusing site: `dag/gunbc/fleet/fleet_fan_wiring_witness.dag` closes +// one match and opens the next as the right operand of `&&`. +data match_as_binary_operand_source: String = "module probe.match_binary\n\nfn f(a: Int) -> Bool {\n match a {\n _ => true\n } && true\n}\n" + +data if_as_binary_operand_source: String = "module probe.if_binary\n\nfn f(a: Bool) -> Bool {\n if a {\n true\n } else {\n false\n } && true\n}\n" + +data bare_match_source: String = "module probe.bare_match\n\nfn f(a: Int) -> Bool {\n match a {\n _ => true\n }\n}\n" + +data bare_if_source: String = "module probe.bare_if\n\nfn f(a: Bool) -> Bool {\n if a {\n true\n } else {\n false\n }\n}\n" + +data ordinary_binary_source: String = "module probe.ordinary_binary\n\nfn f(a: Bool) -> Bool {\n a && true\n}\n" + +test fn match_heading_a_binary_chain_parses_holds() -> Bool { + g_parse_accepted(text: match_as_binary_operand_source, file: ^probe_match_binary) +} + +test fn if_heading_a_binary_chain_parses_holds() -> Bool { + g_parse_accepted(text: if_as_binary_operand_source, file: ^probe_if_binary) +} + +test fn bare_match_still_parses_holds() -> Bool { + g_parse_accepted(text: bare_match_source, file: ^probe_bare_match) +} + +test fn bare_if_still_parses_holds() -> Bool { + g_parse_accepted(text: bare_if_source, file: ^probe_bare_if) +} + +test fn ordinary_binary_still_parses_holds() -> Bool { + g_parse_accepted(text: ordinary_binary_source, file: ^probe_ordinary_binary) +} From 80b79e1f5654db4bdfa886f7cc76834565b8aa52 Mon Sep 17 00:00:00 2001 From: "gunbai-bot[bot]" <289086189+gunbai-bot[bot]@users.noreply.github.com> Date: Sun, 20 Sep 2026 23:30:16 +0000 Subject: [PATCH 2/2] chore: regenerate drifted generated artifacts (ci auto-heal) Ledger-Repair-Judged: docs/design-rung-drops.md Heal-Candidate-Run: 35542724612 --- ROADMAP.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ROADMAP.md b/ROADMAP.md index 348c9538632..9e9de4dd75f 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -10,7 +10,7 @@ Parked context (non-dispatchable): [compiler algorithm survey](docs/plans/compil The graph has sixteen lanes: SCM compatibility · namespace · P-derive · observation · placement · compute · CI cost · CI control · generated artefacts · v1 exit (four finish lines: compiler fixed point, interpreter deleted, products v1-free, zero hand-maintained Rust) · shell · roadmap runtime · fleet/hygiene · judgment · hermetic toolchain · compiler-guarantee (the DESIGN §4b ladder climbs; rung STATE lives in the guarantee claims carrier and is emitted, never restated in tickets — [gap analysis](docs/plans/compiler-guarantee-recovery-gap-analysis.md)). The three independent SCM R0 models, the separate P−1 evidence carrier, R1 compatibility-shape extraction, and P0 user-contract/landing spine are accepted; the operator-authored P1 proof-kernel node is active and fail-closed pending its first discriminating closing validation, while P2 and later product lanes remain parked. The toolchain pin model is an independent root. The P-derive receipt feeds the emitter fixed point, so the v1 chain nests under it. Compute owns the one contract everything else asks for work through — an exact subject in, a typed ending and the outputs it promised back out — and it sits ABOVE CI rather than inside it, because owning CI, converging the fleet, serving models and eventually judging changes are four consumers of one fabric, not four execution systems. It grounds on the signed realization spine rather than minting a second scheduler beside it. CI control owns who starts, queues and hands out required work and how its result reaches GitHub; CI cost owns how much computation that work performs. Fleet owns whether a merge to main becomes applied machine state and whether that question has one answer. Node fields define boundary, first slice, RED control, exclusions, owner, and handback. -**Focused view — the compute fabric + the infrastructure stabilisation lanes + fleet convergence from main + the harness, roadmap workflow and dashboard lanes.** 136 active deliverable(s) in other lanes are declared in the authority and hidden here; nothing is deleted or parked by focusing. Clear `roadmap_focus_selection` in `dag/gunbc/roadmap/roadmap_authority.dag` to restore the full page. 11 of the rows below are NOT lane deliverables — they are prerequisites pulled in from other lanes because lane work is blocked on them: commit-writer-admission, shell-gate-migration, shell-effectplan-to-bash, shell-typed-invocation, placement-compile-pool-envelope, placement-live-roster-preflight, observation-scoped-run-consumer, observation-scoped-run-seed-growth-justification, observation-scoped-run-seed-growth-justification-closing-contract, fleet-spark-host-enrollment, confidence-semantic-impact-query. Hidden lanes remain readable through their carriers: [docs/plans/namespace-cut-replacement-plan.md](docs/plans/namespace-cut-replacement-plan.md) · [docs/plans/dag-scm-design.md](docs/plans/dag-scm-design.md) · [docs/plans/native-scm-cas-fit-and-consumer-cut.md](docs/plans/native-scm-cas-fit-and-consumer-cut.md) · [docs/plans/namespace-unique-on-chain-operational-plan.md](docs/plans/namespace-unique-on-chain-operational-plan.md) · [docs/plans/v2-self-hosting.md](docs/plans/v2-self-hosting.md) · [src/v2/compiler/05_emit.dag](src/v2/compiler/05_emit.dag) · [docs/plans/progress-observation-design.md](docs/plans/progress-observation-design.md) · [src/v2/compiler/self_host/candidate_generation.dag](src/v2/compiler/self_host/candidate_generation.dag) · [src/v2/compiler/self_host/stage0_production_target.dag](src/v2/compiler/self_host/stage0_production_target.dag) · [src/v2/compiler/self_host/wet_receipt_enrollment.dag](src/v2/compiler/self_host/wet_receipt_enrollment.dag) · [src/v2/workflow/rust_crate_partition.dag](src/v2/workflow/rust_crate_partition.dag) · [src/v2/compiler/self_host/v2_emitter_direct_rust_door_contract.dag](src/v2/compiler/self_host/v2_emitter_direct_rust_door_contract.dag) · [dag/gunbc/v1/v1_deletion_plan.dag](dag/gunbc/v1/v1_deletion_plan.dag) · [dag/gunbc/stage0/stage0_rust_host_observation.dag](dag/gunbc/stage0/stage0_rust_host_observation.dag) · [docs/plans/witness-realization-plan.md](docs/plans/witness-realization-plan.md) · [src/v1/05_emit_rust.dag](src/v1/05_emit_rust.dag) · [dag/gunbc/v1/v1_interpreter_primitive_surface.dag](dag/gunbc/v1/v1_interpreter_primitive_surface.dag) · [docs/plans/shell-to-dag-residual-census-and-arc-completion.md](docs/plans/shell-to-dag-residual-census-and-arc-completion.md) · [docs/plans/roadmap-workspace-ux-plan.md](docs/plans/roadmap-workspace-ux-plan.md) · [docs/plans/hermetic-tool-provisioning-design.md](docs/plans/hermetic-tool-provisioning-design.md) · [dag/gunbc/capability_binding.dag](dag/gunbc/capability_binding.dag) · [dag/gunbc/roadmap/roadmap_component.dag](dag/gunbc/roadmap/roadmap_component.dag) · [dag/gunbc/design_document.dag](dag/gunbc/design_document.dag) · [docs/plans/compiler-guarantee-recovery-gap-analysis.md](docs/plans/compiler-guarantee-recovery-gap-analysis.md) · [docs/plans/cardinality-refinement.md](docs/plans/cardinality-refinement.md) · [docs/plans/typed-module-cross-run-materialization.md](docs/plans/typed-module-cross-run-materialization.md) · [dag/gunbc/roadmap/roadmap_authority.dag](dag/gunbc/roadmap/roadmap_authority.dag) · [dag/test/claim/closing/namespace_reference_derived_producer_bounded_closing_contract_witness_test.dag](dag/test/claim/closing/namespace_reference_derived_producer_bounded_closing_contract_witness_test.dag) · [dag/test/claim/closing/2_scm_native_write_spine_acceptance_closing_contract_witness_test.dag](dag/test/claim/closing/2_scm_native_write_spine_acceptance_closing_contract_witness_test.dag) · [dag/test/claim/closing/2_scm_native_authority_program_closing_contract_witness_test.dag](dag/test/claim/closing/2_scm_native_authority_program_closing_contract_witness_test.dag) · [dag/test/claim/closing/namespace_cross_file_provenance_closing_contract_witness_test.dag](dag/test/claim/closing/namespace_cross_file_provenance_closing_contract_witness_test.dag) · [dag/test/claim/closing/v1_materialization_kernel_closing_contract_witness_test.dag](dag/test/claim/closing/v1_materialization_kernel_closing_contract_witness_test.dag) · [dag/test/claim/closing/gate_refusal_reason_survives_wrapper_closing_contract_witness_test.dag](dag/test/claim/closing/gate_refusal_reason_survives_wrapper_closing_contract_witness_test.dag) · [dag/test/claim/closing/toolchain_pin_model_closing_contract_witness_test.dag](dag/test/claim/closing/toolchain_pin_model_closing_contract_witness_test.dag) · [dag/test/claim/closing/instrument_motion_physical_qualification_closing_contract_witness_test.dag](dag/test/claim/closing/instrument_motion_physical_qualification_closing_contract_witness_test.dag) · [dag/test/claim/closing/instrument_rendered_control_coverage_closing_contract_witness_test.dag](dag/test/claim/closing/instrument_rendered_control_coverage_closing_contract_witness_test.dag) · [dag/test/claim/closing/discarded_bool_result_wall_closing_contract_witness_test.dag](dag/test/claim/closing/discarded_bool_result_wall_closing_contract_witness_test.dag) · [dag/test/claim/closing/ladder_probe_corpus_closing_contract_witness_test.dag](dag/test/claim/closing/ladder_probe_corpus_closing_contract_witness_test.dag) · [dag/test/claim/closing/method_established_surface_wall_closing_contract_witness_test.dag](dag/test/claim/closing/method_established_surface_wall_closing_contract_witness_test.dag) · [dag/test/claim/closing/call_label_and_surplus_wall_closing_contract_witness_test.dag](dag/test/claim/closing/call_label_and_surplus_wall_closing_contract_witness_test.dag) · [dag/test/claim/closing/declared_conformance_ground_fragment_closing_contract_witness_test.dag](dag/test/claim/closing/declared_conformance_ground_fragment_closing_contract_witness_test.dag) · [dag/test/claim/closing/v2_self_grounding_frontier_closing_contract_witness_test.dag](dag/test/claim/closing/v2_self_grounding_frontier_closing_contract_witness_test.dag) · [dag/test/claim/closing/interpreter_primitive_roster_closing_contract_witness_test.dag](dag/test/claim/closing/interpreter_primitive_roster_closing_contract_witness_test.dag) · [dag/test/claim/closing/unforgeable_construction_capability_closing_contract_witness_test.dag](dag/test/claim/closing/unforgeable_construction_capability_closing_contract_witness_test.dag) · [dag/test/claim/closing/typed_store_cold_warm_measurement_closing_contract_witness_test.dag](dag/test/claim/closing/typed_store_cold_warm_measurement_closing_contract_witness_test.dag) · [dag/test/claim/closing/compiler_identity_invariant_under_corpus_commit_closing_contract_witness_test.dag](dag/test/claim/closing/compiler_identity_invariant_under_corpus_commit_closing_contract_witness_test.dag). +**Focused view — the compute fabric + the infrastructure stabilisation lanes + fleet convergence from main + the harness, roadmap workflow and dashboard lanes.** 143 active deliverable(s) in other lanes are declared in the authority and hidden here; nothing is deleted or parked by focusing. Clear `roadmap_focus_selection` in `dag/gunbc/roadmap/roadmap_authority.dag` to restore the full page. 11 of the rows below are NOT lane deliverables — they are prerequisites pulled in from other lanes because lane work is blocked on them: commit-writer-admission, shell-gate-migration, shell-effectplan-to-bash, shell-typed-invocation, placement-compile-pool-envelope, placement-live-roster-preflight, observation-scoped-run-consumer, observation-scoped-run-seed-growth-justification, observation-scoped-run-seed-growth-justification-closing-contract, fleet-spark-host-enrollment, confidence-semantic-impact-query. Hidden lanes remain readable through their carriers: [docs/plans/namespace-cut-replacement-plan.md](docs/plans/namespace-cut-replacement-plan.md) · [docs/plans/dag-scm-design.md](docs/plans/dag-scm-design.md) · [docs/plans/native-scm-cas-fit-and-consumer-cut.md](docs/plans/native-scm-cas-fit-and-consumer-cut.md) · [docs/plans/namespace-unique-on-chain-operational-plan.md](docs/plans/namespace-unique-on-chain-operational-plan.md) · [docs/plans/v2-self-hosting.md](docs/plans/v2-self-hosting.md) · [src/v2/compiler/05_emit.dag](src/v2/compiler/05_emit.dag) · [docs/plans/progress-observation-design.md](docs/plans/progress-observation-design.md) · [src/v2/compiler/self_host/candidate_generation.dag](src/v2/compiler/self_host/candidate_generation.dag) · [src/v2/compiler/self_host/stage0_production_target.dag](src/v2/compiler/self_host/stage0_production_target.dag) · [src/v2/compiler/self_host/wet_receipt_enrollment.dag](src/v2/compiler/self_host/wet_receipt_enrollment.dag) · [src/v2/workflow/rust_crate_partition.dag](src/v2/workflow/rust_crate_partition.dag) · [src/v2/compiler/self_host/v2_emitter_direct_rust_door_contract.dag](src/v2/compiler/self_host/v2_emitter_direct_rust_door_contract.dag) · [dag/gunbc/v1/v1_deletion_plan.dag](dag/gunbc/v1/v1_deletion_plan.dag) · [dag/gunbc/stage0/stage0_rust_host_observation.dag](dag/gunbc/stage0/stage0_rust_host_observation.dag) · [docs/plans/witness-realization-plan.md](docs/plans/witness-realization-plan.md) · [src/v1/05_emit_rust.dag](src/v1/05_emit_rust.dag) · [dag/gunbc/v1/v1_interpreter_primitive_surface.dag](dag/gunbc/v1/v1_interpreter_primitive_surface.dag) · [docs/plans/shell-to-dag-residual-census-and-arc-completion.md](docs/plans/shell-to-dag-residual-census-and-arc-completion.md) · [docs/plans/roadmap-workspace-ux-plan.md](docs/plans/roadmap-workspace-ux-plan.md) · [docs/plans/hermetic-tool-provisioning-design.md](docs/plans/hermetic-tool-provisioning-design.md) · [dag/gunbc/capability_binding.dag](dag/gunbc/capability_binding.dag) · [dag/gunbc/roadmap/roadmap_component.dag](dag/gunbc/roadmap/roadmap_component.dag) · [dag/gunbc/design_document.dag](dag/gunbc/design_document.dag) · [docs/plans/compiler-guarantee-recovery-gap-analysis.md](docs/plans/compiler-guarantee-recovery-gap-analysis.md) · [docs/plans/cardinality-refinement.md](docs/plans/cardinality-refinement.md) · [docs/plans/typed-module-cross-run-materialization.md](docs/plans/typed-module-cross-run-materialization.md) · [dag/gunbc/roadmap/roadmap_authority.dag](dag/gunbc/roadmap/roadmap_authority.dag) · [dag/test/claim/closing/namespace_reference_derived_producer_bounded_closing_contract_witness_test.dag](dag/test/claim/closing/namespace_reference_derived_producer_bounded_closing_contract_witness_test.dag) · [dag/test/claim/closing/2_scm_native_write_spine_acceptance_closing_contract_witness_test.dag](dag/test/claim/closing/2_scm_native_write_spine_acceptance_closing_contract_witness_test.dag) · [dag/test/claim/closing/2_scm_native_authority_program_closing_contract_witness_test.dag](dag/test/claim/closing/2_scm_native_authority_program_closing_contract_witness_test.dag) · [dag/test/claim/closing/namespace_cross_file_provenance_closing_contract_witness_test.dag](dag/test/claim/closing/namespace_cross_file_provenance_closing_contract_witness_test.dag) · [dag/test/claim/closing/v1_materialization_kernel_closing_contract_witness_test.dag](dag/test/claim/closing/v1_materialization_kernel_closing_contract_witness_test.dag) · [dag/test/claim/closing/gate_refusal_reason_survives_wrapper_closing_contract_witness_test.dag](dag/test/claim/closing/gate_refusal_reason_survives_wrapper_closing_contract_witness_test.dag) · [dag/test/claim/closing/toolchain_pin_model_closing_contract_witness_test.dag](dag/test/claim/closing/toolchain_pin_model_closing_contract_witness_test.dag) · [dag/test/claim/closing/instrument_motion_physical_qualification_closing_contract_witness_test.dag](dag/test/claim/closing/instrument_motion_physical_qualification_closing_contract_witness_test.dag) · [dag/test/claim/closing/instrument_rendered_control_coverage_closing_contract_witness_test.dag](dag/test/claim/closing/instrument_rendered_control_coverage_closing_contract_witness_test.dag) · [dag/test/claim/closing/discarded_bool_result_wall_closing_contract_witness_test.dag](dag/test/claim/closing/discarded_bool_result_wall_closing_contract_witness_test.dag) · [dag/test/claim/closing/ladder_probe_corpus_closing_contract_witness_test.dag](dag/test/claim/closing/ladder_probe_corpus_closing_contract_witness_test.dag) · [dag/test/claim/closing/method_established_surface_wall_closing_contract_witness_test.dag](dag/test/claim/closing/method_established_surface_wall_closing_contract_witness_test.dag) · [dag/test/claim/closing/call_label_and_surplus_wall_closing_contract_witness_test.dag](dag/test/claim/closing/call_label_and_surplus_wall_closing_contract_witness_test.dag) · [dag/test/claim/closing/declared_conformance_ground_fragment_closing_contract_witness_test.dag](dag/test/claim/closing/declared_conformance_ground_fragment_closing_contract_witness_test.dag) · [dag/test/claim/closing/v2_self_grounding_frontier_closing_contract_witness_test.dag](dag/test/claim/closing/v2_self_grounding_frontier_closing_contract_witness_test.dag) · [dag/test/claim/closing/interpreter_primitive_roster_closing_contract_witness_test.dag](dag/test/claim/closing/interpreter_primitive_roster_closing_contract_witness_test.dag) · [dag/test/claim/closing/unforgeable_construction_capability_closing_contract_witness_test.dag](dag/test/claim/closing/unforgeable_construction_capability_closing_contract_witness_test.dag) · [dag/test/claim/closing/typed_store_cold_warm_measurement_closing_contract_witness_test.dag](dag/test/claim/closing/typed_store_cold_warm_measurement_closing_contract_witness_test.dag) · [dag/test/claim/closing/compiler_identity_invariant_under_corpus_commit_closing_contract_witness_test.dag](dag/test/claim/closing/compiler_identity_invariant_under_corpus_commit_closing_contract_witness_test.dag). - [x] **Run the worker on DeepSeek V4 Flash with thinking on, straight at the engines, from briefs it can finish** — The harness posts to the Spark vLLM engines directly on the chat-completions shape with Think Max as the request switch, decodes inline reasoning client-side, replays it, and derives its deadline from the engine's own decode rate. A write brief names files small enough to hold whole and the decisions already made. Why: A day of runs with 0 files changed: briefs naming one file when the change spans its importers, a co-tenanted router killing every long step, a deadline that could not cover max_tokens, and agents deliberating modeling decisions a brief should have made. [authority](dag/gunbc/harness/harness_cli.dag) — ✓ signed off: operator curation 2026-09-06 (session 019iXPtAqzPaNBZbaaM5rxrY) - [x] **The roadmap commits, verifies, and opens the pull request itself once verification passes** — After the provider completes, the belt commits the attempt worktree, verifies the committed head in a detached checkout, admits publication only on a ValidationPassed receipt for that exact head, and the token-holding helper pushes the branch and opens the pull request, then answers with what GitHub shows. Why: Verification was checking out an uncommitted worktree's head, publication never consulted the verdict, and no operation existed to push or create a pull request, so every attempt stalled in the Agent segment and a human harvested by hand. [authority](dag/gunbc/roadmap/roadmap_publish_admission.dag) — ✓ signed off: operator curation 2026-09-06 (session 019iXPtAqzPaNBZbaaM5rxrY)