Skip to content

feat(file): Move's source and RemoveAll's target consume — phase 3 closes without remainder - #606

Merged
David-Noble-at-work merged 1 commit into
developfrom
move-and-removeall-consume
Aug 22, 2026
Merged

David-Noble-at-work merged 1 commit into
developfrom
move-and-removeall-consume

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

Phase 3, C2 of resource-construction (#585) — the closing PR.

The last mutators

file.Move(source *Regular, destination_path, on_missing) — a move destroys the source location: the
source claims, and success marks it Gone with the destroyer stamp, so a later consumer of the
moved-away source gets the narrated verdict. file.RemoveAll(target *Directory, on_missing, prune, boundary) — policy-gated like its siblings, missing-target pin covering both directions. Backup
delegates through the typed Move. Every file-scheme mutator is now a resource-typed consumer.

The sweep

source_path → source, path → target across six star scripts, writ adopt, and writ migrate. The
strict case caught one more fixture (test_mkdir_and_remove_all — mid-run tree, removed by name) —
re-authored to consume mkdir's promise. Migrate's layer registration authors plan-space rels; one recorded
kind-looseness: it moves a directory through the *Regular-typed claim (dispatch observes the actual
kind; kind-honest directory-move claims ride 3.6).

Verified

  • make check — 103 ok, 0 failures
  • make vet GOOS=windows; gofmt clean; expectation: green stays green

With this merge, phase 3 is complete — every ruling from the claims-taxonomy design carries standing CI
evidence. Refs #585, #581.

…loses without remainder

Phase 3, C2 of the resource-construction plan (#585) -- the last file-scheme mutators join the ruled
model, and every mutator is now a resource-typed consumer.

file.Move takes source *Regular with on_missing (stop default): a move destroys the source location, so
the source claims required intent, and success marks its entry Gone with the destroyer stamp -- a later
consumer of the moved-away source sees the narrated verdict. file.RemoveAll takes target *Directory with
on_missing, policy-gated like its siblings; its missing-target pin rewrites to both directions (Stop
errors, Ignore no-ops). Backup delegates through the typed Move. The params rename source_path -> source
and path -> target across the star scripts, writ adopt, and writ migrate.

The strict case caught one more star: test_mkdir_and_remove_all created its tree mid-run and removed it
by name, promise-less -- re-authored so remove_all consumes mkdir's promise, the ordering riding the edge.
writ migrate's layer registration now authors its consumed source in plan space; one kind-looseness is
recorded there: the registration moves a DIRECTORY through the *Regular-typed claim -- dispatch observes
the actual kind (candidateOfMode) and the rename handles either; kind-honest claims for directory moves
ride the 3.6 method-classification work.

Verified with make check (103 packages ok, 0 failures) and make vet under GOOS windows. Phase 3 of the
plan is complete: stateless intent rows, scoped verification, resource-typed mutators across the board,
and the consumed-Gone guard with the narrated verdict, every ruling carrying standing CI evidence.

Refs #585, #581.
@David-Noble-at-work David-Noble-at-work self-assigned this Aug 22, 2026
@David-Noble-at-work
David-Noble-at-work merged commit c8898be into develop Aug 22, 2026
8 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the move-and-removeall-consume branch August 22, 2026 05:23
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.

1 participant