Skip to content

srv3_host_effect_apply: import the ten names it uses bare (witness outside the gate closure stopped resolving) - #13275

Merged
gunbai-bot[bot] merged 2 commits into
mainfrom
session/quiet-gull-508
Oct 4, 2026
Merged

gunbai-bot[bot] merged 2 commits into
mainfrom
session/quiet-gull-508

Conversation

@gunbai-bot

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

Copy link
Copy Markdown
Contributor

What was wrong

On main 296061a898, test.claim.srv3_seeded_install_media does not resolve, and neither does anything else that reaches gunbc.srv3_host_effect_apply. The refusals are two effect summary incomplete errors in srv3_nbd_proxy_serve_apply, one per callee:

  • gunbc.srv3_nbd_proxy_serve_intent srv3_nbd_proxy_serve_host_effect
  • gunbc.nbd_proxy_virtual_media_install actuator_image_unresolved_reason

The witness is outside the required gate closure, so no lane runs it and every lane stays green.

Earliest unjustified boundary (DESIGN §6b)

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_apply imports all ten names from their six declaring modules. No import cycle: none of the six reaches this module.
  • The ten roster rows move ActiveDebt -> Retired { cause: ImportsFixed }.
  • A receipt is appended to the existing row gunbc.recurring_failure_mode witness_outside_gate_closure_falsified_by_other_file. No new row: this is that class, with bare_reference_channel_declines_a_pull_in_silence as 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 with claim_batch built from the tree in the same dispatch and GUNBC_MEMORY_BUDGET_BYTES forwarded by name (ctrl-build printed forwarding env: GUNBC_MEMORY_BUDGET_BYTES).

Arm Module / roster bytes Exit Result
Head 4b1506c849 this PR 0 resolved; 5 of 5 claims PASS; 0 effect-summary refusals
Control both files at 296061a898 bytes (sha256 checked against git show) 1 resolve failed with the two refusals above; 0 claims run
Mixed module at main, rows retired 1 gate refuses all ten pairs as RetiredImportsFixedButCarried

The 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_batch run per witness entry, all claims in the file named. "Main" is both files at 296061a898 bytes.

Witness module Claims Main Head
test.claim.host_convergence_census_witness 12 exit 0, 12 PASS exit 0, 12 PASS
test.claim.srv3_install_media_fetch 6 exit 1, resolve failed (5 refusals), 0 run exit 0, 6 PASS
test.claim.srv3_os_install_actuate 7 exit 1, resolve failed (2 refusals), 0 run exit 0, 7 PASS
test.claim.srv3_host_effect_apply_witness 22 exit 1, resolve failed (2 refusals), 0 run exit 0, 22 PASS
  • Every main refusal is effect summary incomplete inside gunbc.srv3_host_effect_apply; no red has an unrelated cause.
  • Which callees refuse differs per entry (six of the ten rostered names appear across the three), because it is whatever that entry's closure did not realize.
  • The census witness passing on both trees shows the instrument can report green on main.

Not covered

  • All executed arms ran the module and roster as of 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_scope and srv3_os_install_actuate_workflow witnesses were not run.
  • The module still references other names without listing them; those resolve inside its import closure and are not rostered debt, so they are left alone.
  • The main arms were produced on the runner by reverting the two files in place (sha256 checked against git show 296061a898), not by checking out main.

🤖 Generated with Claude Code

gunbc-ci-auto-heal and others added 2 commits October 4, 2026 13:15
…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 briansrls left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 RetiredImportsFixedButCarried for the ten identities, proving the roster transition is not ceremonial;
  • host_convergence_census remains 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.

@gunbai-bot
gunbai-bot Bot added this pull request to the merge queue Oct 4, 2026
Merged via the queue into main with commit 78b4a16 Oct 4, 2026
4 checks passed
@gunbai-bot
gunbai-bot Bot deleted the session/quiet-gull-508 branch October 4, 2026 16:34
@briansrls
briansrls restored the session/quiet-gull-508 branch October 4, 2026 16:39
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.

1 participant