Skip to content

feat(op): the consumed-Gone guard with the narrated verdict; Skip is dropped — phase 3's docket completes - #605

Merged
David-Noble-at-work merged 1 commit into
developfrom
consumed-gone-guard
Aug 22, 2026
Merged

David-Noble-at-work merged 1 commit into
developfrom
consumed-gone-guard

Conversation

@David-Noble-at-work

Copy link
Copy Markdown
Contributor

Phase 3, PR D of resource-construction (#585) — the docket's final
item.

Skip is dropped (ruled)

Undo was never the problem — a skipped unit ran nothing, so there is nothing to undo. The forward side
was: nil promises downstream, and a trace that cannot tell "skipped" from "ran and produced nothing"
without marker machinery Ignore never needs. Choose cases already express optional steps structurally.
The enum is {Stop 0, Ignore 1}; "skip" refuses at parse, pinned.

The destroyer stamp

MarkGone(r, destroyerID) — the mutator's authorship, symmetric with producerID; the trace row gains
destroyed_by. Reactive Gone transitions stamp nothing.

The guard, at the ruled seam

Method.Invoke, post-conversion, pre-forward-call: a consumed Gone entry warns and routes by the
caller's policy (found among the converted arguments by type). Stop fails on the narrated verdict —
"consumes X, destroyed by unit N before it could run" — and Ignore proceeds to the provider. The
consumer sees the state; it never rediscovers the loss through its own I/O.

The scenarios

Scenario 1 now asserts the narrated verdict (file.copy.*destroyed by) — the delete-then-copy
question you posed at the start of this feature, answered end to end exactly as ruled. The new
gone-tolerance scenario pins Ignore: two removes, the second on_missing="ignore", one deletion + one
recorded no-op, green run.

Verified

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

Refs #585, #581.

…dropped -- phase 3's docket completes

Phase 3, PR D of the resource-construction plan (#585).

Skip is DROPPED (USER ruling, 2026-08-22). Its undo story was trivially clean -- a skipped unit never
dispatched, so nothing to undo, just move on -- but the forward side killed it: a skipped unit's promise
consumers would see nil (misattributing the downstream failure), and the trace could not tell "skipped"
from "ran and produced nothing" without marker machinery that Ignore never needs. Choose cases already
express optional steps structurally, with their claims judged only when hit. The enum is {Stop 0,
Ignore 1}; "skip" refuses at parse, pinned; re-adding later is purely additive.

The destroyer stamp lands: MarkGone(r, destroyerID) records the mutator's authorship, symmetric with
producerID -- file's delete family threads the activation's CallerID through markEntryGone -- and the
trace row gains destroyed_by (reporting metadata; reactive Gone transitions stamp nothing).

The guard lands at the ruled seam -- Method.Invoke, after conversion (the earliest point the complete
consumed set exists) and before the forward call: a consumed entry the catalog knows is Gone WARNS and
routes by the caller's policy, found among the converted arguments by type. Stop fails the dispatch on
the narrated verdict -- "consumes X, destroyed by unit N before it could run" -- and Ignore proceeds, the
provider handling the absence. The consumer sees the state; it never rediscovers the loss through its own
I/O.

Judgment scenario 1 sharpens to assert the narrated verdict (expect_error "file.copy.*destroyed by") --
the full ruled semantics of the delete-then-copy question, proven end to end, exactly as predicted when
the scenario was authored. The new gone-tolerance scenario pins Ignore: two removes of one file, the
second on_missing="ignore", one deletion plus one recorded no-op, run succeeds. The design doc's
consumption table and taxonomy update to the delivered, two-policy state.

Verified with make check (103 packages ok, 0 failures) and make vet under GOOS windows.

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 f7a169b into develop Aug 22, 2026
8 checks passed
@David-Noble-at-work
David-Noble-at-work deleted the consumed-gone-guard branch August 22, 2026 03:51
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