dira decision memory for AI coding agents
$dira whydec-0033
dec-0033Add a reject disposition that tombstones an entry without freeing its idstaged 2026-09-03
✗ Make dira supersede accept a staged targetsupersede's meaning is already load-bearing elsewhere: docs/lore.md L-0003 and dec-0002 tie it to a decision genuinely being replaced by another decision, which is what dira check cites back at relitigation.
✗ Keep deletion as the only way to retire a staged entry, as todayDeletion is the exact mechanism that frees the id for reuse -- issue #35's bug.
dec-0033Add a reject disposition that tombstones an entry without freeing its id
✗Make dira supersede accept a staged target
✗Keep deletion as the only way to retire a staged entry, as today
dec-0033 ◆ staged 2026-09-03

Add a reject disposition that tombstones an entry without freeing its id

Triage finding, 2026-09-02, from GH issues #35 and #36. Today the only way to remove a bad auto-capture (regex misfire, quoted duplicate of an existing decision) is to delete the file, which frees its number for reuse (#35) and which dira supersede refuses to touch because the target is state: staged, not confirmed (#36, with a misleading error: 'answer and 1 is never a verdict'). Proposed: a distill disposition (or a dira log/distill verb) that marks an entry rejected/tombstoned in place -- id retained, content marked disposed of -- so a junk capture can be cleared without either freeing its number or leaving an orphaned staged entry with no path to closure. Pair with a clearer supersede error naming the actual precondition ('entry state must be confirmed, not staged') instead of the current cryptic message.

Alternatives on record — 2

✗Make dira supersede accept a staged targetrefused supersede's meaning is already load-bearing elsewhere: docs/lore.md L-0003 and dec-0002 tie it to a decision genuinely being replaced by another decision, which is what dira check cites back at relitigation.

Overloading it to also mean 'discard a non-decision auto-capture' gives the verb two unrelated meanings the enforcer would have to distinguish.

✗Keep deletion as the only way to retire a staged entry, as todayrefused Deletion is the exact mechanism that frees the id for reuse -- issue #35's bug.

Keeping it as the only retirement path guarantees #35 and #36 keep recurring together.

revisit ifthe monotonic counter (dec-0032) ships and id reuse stops being possible even via deletion, at which point deletion may be safe to keep as the sole retirement path and this decision should be revisited

Every decision in this repo is recorded like this one.

Keep your own →