Repository navigation
srv3_host_effect_apply: import the ten names it uses bare (witness outside the gate closure stopped resolving) - #13275
Conversation
…ir debt rows test.claim.srv3_seeded_install_media (outside the gate closure) did not resolve on main 296061a: two effect-summary-incomplete refusals in srv3_nbd_proxy_serve_apply, zero claims run, every required lane green. Earliest unjustified boundary: #12114 gave the import-free module one import line, turning the bare-reference channel off for the file; #12205 rostered the ten names it left unimported as ActiveDebt. The repair is the import header. The effect join's refusal was correct and is untouched. Receipt appended to gunbc.recurring_failure_mode witness_outside_gate_closure_falsified_by_other_file. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…y results Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
briansrls
left a comment
There was a problem hiding this comment.
Reviewed exact head 4d3e7a7b27f9a6e12e0f315c06e0b9d4f5bd5d8f.
APPROVE.
The repair is at the owning boundary. srv3_host_effect_apply now imports exactly the ten names that were rostered as unimported debt, from their six declaring modules; no host-effect or reconciliation semantics are changed. The ten corresponding roster rows move one-for-one from ActiveDebt to Retired { cause: ImportsFixed }, so the retirement standing remains mechanically checked rather than deleting the historical identities.
The evidence is discriminating:
- the repaired module plus retired rows resolves the four affected witness entries and all 40 named claims pass;
- restoring both files to main reproduces only the effect-summary-incomplete refusals;
- restoring the module while retaining the retirements produces
RetiredImportsFixedButCarriedfor the ten identities, proving the roster transition is not ceremonial; host_convergence_censusremains 12/12 on both sides, demonstrating how the main defect survived a green instrument rather than attributing unrelated breakage to the change.
Appending this as a receipt to witness_outside_gate_closure_falsified_by_other_file is the correct classification. It is a new specimen of the existing class and names the specific mechanism, bare_reference_channel_declines_a_pull_in_silence; a second RFM row would fork the meaning.
The final commit changes only that receipt text. The executable code and roster were exercised at its parent, and all four exact-head checks (floor, generated, emit-build, witnesses) are green. The unrun wet/real-execution witnesses are not load-bearing for an import-header-only repair whose directly affected consumers were executed.
No semantic blocker remains.
What was wrong
On main
296061a898,test.claim.srv3_seeded_install_mediadoes not resolve, and neither does anything else that reachesgunbc.srv3_host_effect_apply. The refusals are twoeffect summary incompleteerrors insrv3_nbd_proxy_serve_apply, one per callee:gunbc.srv3_nbd_proxy_serve_intentsrv3_nbd_proxy_serve_host_effectgunbc.nbd_proxy_virtual_media_installactuator_image_unresolved_reasonThe witness is outside the required gate closure, so no lane runs it and every lane stays green.
Earliest unjustified boundary (DESIGN §6b)
gunbc.srv3_host_effect_applyone import line. A file with an import line has the bare-reference channel off, so the two callee modules, which nothing else in the closure pulled, stopped being realized.ActiveDebtinv2.workflow.floor_unimported_bare_provider_debt_roster.The effect join's refusal is correct and is not touched. The owning link is the module's import header.
Change
gunbc.srv3_host_effect_applyimports all ten names from their six declaring modules. No import cycle: none of the six reaches this module.ActiveDebt->Retired { cause: ImportsFixed }.gunbc.recurring_failure_modewitness_outside_gate_closure_falsified_by_other_file. No new row: this is that class, withbare_reference_channel_declines_a_pull_in_silenceas the mechanism.Independent of #13247; the seeded-media builder is not touched.
Executed receipt
Instrument:
claim_batch --source-root dag --source-root src/v2 --entry dag/test/claim/srv3/srv3_seeded_install_media_witness_test.dag --functions <the five claims>. Each arm ran on BuildBuddy withclaim_batchbuilt from the tree in the same dispatch andGUNBC_MEMORY_BUDGET_BYTESforwarded by name (ctrl-build printedforwarding env: GUNBC_MEMORY_BUDGET_BYTES).4b1506c849296061a898bytes (sha256 checked againstgit show)RetiredImportsFixedButCarriedThe mixed arm shows each of the ten retirements is individually discriminated by the gate.
The other importers of the repaired module
Same dispatch shape, one
claim_batchrun per witness entry, all claims in the file named. "Main" is both files at296061a898bytes.test.claim.host_convergence_census_witnesstest.claim.srv3_install_media_fetchtest.claim.srv3_os_install_actuatetest.claim.srv3_host_effect_apply_witnesseffect summary incompleteinsidegunbc.srv3_host_effect_apply; no red has an unrelated cause.Not covered
4b1506c849. The current head differs from it only in the text of the failure-mode receipt, which was not re-executed.srv3_install_media_fetch_real_execution,srv3_os_install_actuate_scopeandsrv3_os_install_actuate_workflowwitnesses were not run.git show 296061a898), not by checking out main.🤖 Generated with Claude Code