Development record
On the refusal path the ingest result's pending_stages is set from the orphan list gathered before the refusal and is never recomputed after rollbackThisRun runs, so it can name the refused run's own stage as pending although that stage was just cleared. The disclosure the surface renders is then wrong by one entry in exactly the case it exists to describe. Found while pinning the ingest help's sentences (iss-2609020843067458). Fix: recompute or filter the pending list after the run's own rollback, and pin it with the same end-to-end refusal test that now proves the record set.
On the refusal path the ingest result's pending_stages is set from the orphan list gathered before the refusal and is never recomputed after rollbackThisRun runs, so it can name the refused run's own stage as pending although that stage was just cleared. The disclosure the surface renders is then wrong by one entry in exactly the case it exists to describe. Found while pinning the ingest help's sentences (iss-2609020843067458). Fix: recompute or filter the pending list after the run's own rollback, and pin it with the same end-to-end refusal test that now proves the record set.
Grounds
- pursued: the expectation is that pending_stages names only stages still standing after the invocation; the falsifier is a refusal whose own earlier attempt left a stage reporting that stage as pending after clearing it, which the end-to-end refusal test now asserts against.
Frontmatter
| id | iss-2609020848468450 |
|---|---|
| type | issue |
| lifecycle | resolved |
| severity | minor |
.abcd/work/issues/resolved/iss-2609020848468450-on-a-refusal-pending-stages-can-name-the.md
open on GitHub ↗ · commit history ↗
mentions1
- iss-2609020843067458The ingest verb's terminal help still claims a refusal deletes nothing, and gives the orphan sweep one outcome where the code has two. iss-2608311518199679 named three false sentences in the same Long field and its fix reaches two of them; the durability sentence reads "written or deleted" without the qualification that makes it true, and the sweep sentence carries the committed-tier delete without the case in which there is none. A refusal after the run's identity is proven calls rollbackThisRun on every path, which removes the never-committed reading records of an earlier attempt at the same run id from the committed ledger — so "leaves its refusal record and nothing else" describes a verb that makes no delete, and the verb makes one. rollbackRun returns without touching anything when the run's commit marker is present, and sweepOrphanStages clears the stage regardless, so a sweep over a leftover stage rolls nothing back and the help promises a rollback that does not come. The neighbouring "before that point nothing is written anywhere" is false of the stage root and its lock, which are created before the payload is read; the claim is about the durable tier. Because docs/reference/cli/commands.md is generated from the Long field, each of these is wrong at the terminal and on the reference page at once.