Skip to content

feat(op): pre-flight binds pending resources to the run's root — phase 2 closes - #601

Merged
David-Noble-at-work merged 1 commit into
developfrom
run-root-binding
Aug 21, 2026
Merged

David-Noble-at-work merged 1 commit into
developfrom
run-root-binding

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

Phase 2, PR 3 of resource-construction — the activation binding
(§5.5), ruled load-bearing by the run-from-elsewhere caveat. Closes #584.

The binding

The executor's pre-flight resolve pass re-bases every pending entry onto the run's environment and
re-binds root-relative schemes rel-first through the new op.RootBinder seam: identity (the rel)
unchanged, root becomes the run's, native form derives. file.Resource implements BindRoot;
Resolve's abs-first rebind — the documented inverse — flips rel-first. Verification stays
mark-don't-fail; phase 3 owns the transition-failure consequence.

The proof

Two pins, both sharp: a graph planned under root A, executed under root B. The trace records B as the
binding; the claimed rel is Active when the file exists only under B (the plan root never held it),
and Gone when it exists only under A, with the dispatch failing. PR 1 made the identity payload
relocatable; this PR makes the verification relocatable — the two halves of "one graph, any machine."

Phase 2 closes

Rel identity (#596) + the plan-space grammar and authoring migration (#600) + the binding (here). During
this phase the Windows CI leg went 28 known failures → 0 and #547 closed. Step 4's consumer sweep
completed across the three PRs.

Verified

  • make check — 103 ok, 0 failures (both binding pins, every scenario star)
  • make vet GOOS=windows
  • gofmt clean; Windows expectation: green stays green

Refs #546, #585.

…se 2 closes

Phase 2, PR 3 of the resource-construction plan (#584) -- the activation binding the run-from-elsewhere
ruling made load-bearing: a graph is planned or loaded in whatever environment happened to construct its
resource objects, but every location fact about them belongs to the root the RUN binds.

The executor's pre-flight resolve pass now re-bases every pending entry onto the run's environment and
re-binds root-relative schemes rel-first through the new op.RootBinder seam: identity (the rel) is
unchanged, the root becomes the run's, the native form derives. file.Resource implements BindRoot, and
Resolve's abs-first rebind -- the documented inverse, which preserved the construction-time machine
location -- flips rel-first. The verification consequence stays mark-don't-fail; phase 3 owns the
transition-failure semantics.

Pinned in both directions: a graph planned under root A and executed under root B verifies and observes
under B. The trace records B as the binding; the claimed rel is Active when the file exists only under B
(the plan root never held it), and Gone when it exists only under A (with the dispatch failing to find
it). PR 1 made the identity payload relocatable; this PR makes the verification relocatable -- the two
halves of "one graph, any machine."

Phase 2 is complete: rel identity (#596), the plan-space grammar and authoring migration (#600), and the
binding (this PR). The Windows CI leg went 28 known failures to zero during this phase and #547 closed;
step 4's consumer sweep finished across the three PRs (readback in PR 1, providers already on the
accessor, Resolve's rebind here). Closes #584.

Verified with make check (103 packages ok, 0 failures) and make vet under GOOS windows. Windows
expectation: green stays green.

Refs #546, #585.
@David-Noble-at-work David-Noble-at-work self-assigned this Aug 21, 2026
@David-Noble-at-work
David-Noble-at-work merged commit 70d540c into develop Aug 21, 2026
8 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the run-root-binding branch August 21, 2026 22:25
David-Noble-at-work added a commit that referenced this pull request Aug 22, 2026
…ion (#607)

The plan and design documents catch up with the campaign through phase 3 (#582-#585 delivered; #586-#587
remain).

The plan (resource-construction.md): status in-progress; the phase-2/3 headings carry the merged PR
numbers (#596/#600/#601; #602-#606); delivered markers on the docket's items 4/5, judgment scenario 1,
and the fail-fast scenario; the directive-inventory rulings gain an execution-status note (the wire
rename ran; the planner/struct_param/lifetime removals are chartered, not executed); the divergence table
records which rows phases 0-3 resolved and which are phase 4's subject; phase 5's already-satisfied items
are marked.

4-resource-management.md: the header's staging note now says phases 0-3 are in the tree; SS2's
execution-time summary reflects bind-then-scoped-verify; SS3's delivered note extends to C2 (#606) --
every file-scheme mutator is a resource-typed consumer; SS5.4 marks the {id, uri} intent row delivered
(#602); SS9 gains rulings 12-14 (claims taxonomy with Skip dropped, scoped verification, resource-typed
mutation targets). The status companion records the landed phases and narrows outstanding work to
#586 + #587.

4.1-resource-identity.md: identity never changes after construction -- the three "Resolve updates the
cached URI" passages are replaced, the interface sketch corrects to Resolve() error with the RootBinder
seam named, and file's opaque catalog identity (file:<rel>) is disambiguated from the rendered
hierarchical form in SS2 and SS6. The status companion gains the rel-identity completion row.

3.5.4-file-provider.md: the mutator table carries the landed signatures (typed targets, on_missing
defaults), a consumption-model paragraph ties the mutators to the claims taxonomy, and the SymbolicLink
row records lstat existence. 2-execution-graph.md: Run's description includes the pre-flight binding
pass and per-scope claim verification.

Refs #581.

Co-authored-by: David Noble <[email protected]>
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.

Identity is rel: git-model plan-space paths; migrate the authoring surfaces

1 participant