This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

The orphan sweep silently deletes committed reading records. With an orphaned stage present and its record already in the ledger, an ingest whose payload fails at the type check deleted a committed record from the durable tier and printed only the type error: the rolled-back and cleared-stage fields are dropped on the error path, and the JSON render emits an error object without them, because the surface renders those fields only when a refusal record exists. The code's own comment says this must not happen. It is the worst shape a defect can take here, because the loss is durable, silent, and triggered by a payload that was itself refused: an operator sees a validation error and has no way to learn that a record was destroyed while it was being reported.

issueresolvedcriticaliss-2608311517509690

The orphan sweep silently deletes committed reading records. With an orphaned stage present and its record already in the ledger, an ingest whose payload fails at the type check deleted a committed record from the durable tier and printed only the type error: the rolled-back and cleared-stage fields are dropped on the error path, and the JSON render emits an error object without them, because the surface renders those fields only when a refusal record exists. The code's own comment says this must not happen. It is the worst shape a defect can take here, because the loss is durable, silent, and triggered by a payload that was itself refused: an operator sees a validation error and has no way to learn that a record was destroyed while it was being reported.

Grounds

  • pursued: validate-then-mutate makes the invariant structural rather than rendered; if a refused ingest ever again removes a ledger record, TestARefusedRunLeavesTheOrphanInPlace and TestIngestDisclosesTheOrphanItLeftOnRefusal go red

Frontmatter

idiss-2608311517509690
typeissue
lifecycleresolved
severitycritical

mentions2