Skip to content

Commit 4e91f34

Browse files
committed
docs(changeset): state the narrowing's reason as the discriminator argument, and name the two exits that are not healthy
The changeset for this PR justifies leaving every non-stranded parent-resume exit at `warn`. The justification it now gives is the one this seam can actually stand behind: those exits carry no `'stranded'` discriminator, and `'stranded'` is the single exit that journals a repair snapshot — so it is the single exit an operator can act on, and grading by the engine's own verdict is what keeps `error` readable rather than skimmed. That is a claim about what the seam KNOWS, and the changeset now says so, plus the two exits that are known NOT to have left the parent healthy: * a THROWN parent resume carries no discriminator at all, and #15555 documents a window in which a throw landing between the journal and the stamp hides a parent that is genuinely stranded. This seam leaves that arm at `warn` deliberately and that card tracks it. * the CLAIM-PATH store failure states in its own envelope text that whether the suspension was consumed is UNKNOWN, and settles it by retry — which an up-bubble has no retrier to perform. "Not consumed" is the guarantee of the strict-load store failure alone, never of every store failure. Text only: no source, no pins and no ledger move, so the measured behaviour and both mutation legs are untouched. A blanket "the parent is still parked and resumable" would have read as a platform guarantee across all three exits, and release notes are built from this file. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XpTx2tbq3pZRYAdoGt6E6Y
1 parent 8f481c2 commit 4e91f34

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

.changeset/subflow-bubble-stranded-parent.md

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,20 @@ from the outside, which is the durability class.
1616
`AutomationResult.status` discriminator: `'stranded'` is reported at `error`,
1717
naming the parent run and the `restoreConsumedSuspension` verb that repairs it.
1818
Every other parent-resume failure — a concurrent resume, an unreachable store,
19-
a thrown resume — stays at `warn` unchanged, because on those exits the parent
20-
is still parked and resumable.
19+
a thrown resume — stays at `warn` unchanged, on a narrower ground: those exits
20+
carry no `'stranded'` discriminator. `'stranded'` is the one exit that journals
21+
a repair snapshot, so it is the one an operator can act on, and grading by the
22+
engine's own verdict is what keeps `error` readable.
23+
24+
⚠️ That is a statement about what this seam can KNOW, not a guarantee that
25+
every other exit left the parent healthy. Two exits are known not to be:
26+
27+
- a **thrown** parent resume carries no discriminator at all, and #15555
28+
documents a window in which a throw between the journal and the stamp hides a
29+
parent that IS stranded. Left at `warn` deliberately, for that card;
30+
- the **claim-path** store failure reports, in its own envelope text, that
31+
whether the suspension was consumed is UNKNOWN — it relies on a retry to
32+
settle it, and an up-bubble has no retrier. ("Not consumed" is the guarantee
33+
of the strict-load store failure only, not of every store failure.)
2134

2235
⚠️ This is the log half only. What the child's resumer is told is unchanged.

0 commit comments

Comments
 (0)