dira 45 entries · updated 2026-08-14

Why this codebase is the way it is.

Every decision, the alternatives that lost, and the reasoning — kept as the work happened, not written up afterwards.

35 settled 8 active 0 staged 2 open questions

Execution status is a join with kazi and is derived at read time, never stored. No kazi join is available here, so these are the ledger's own states.

int-an intent — a direction the work serves dec-a decision, with the alternatives it ruled out qst-an open question, which can block work cst-a standing constraint note-a thought not yet any of the other four
int-0001 The why of a decision survives the session that made it 3 settled1 in motion
int-0002 Zero-ceremony operation — one binary, no server, no daemon 9 settled1 in motion
int-0003 Replace the tool pile — kazi + dira + a subset of skills is the whole stack 3 settled1 in motion
Not arising from an intent in this ledger 24 entries
cst-0003Inheritance is one-way and read-time only — private context never lands in a public ledgeractive dec-0007OSS core free forever; individuals buy the apps once; teams subscribe; hosted never requiredaccepted · to be planned dec-0008dira integrates with kazi only through kazi's existing --json contract and hooksblocked by a question dec-0011Cross-boundary parent refs publish opaquely, and resolution reports three statesaccepted · to be planned dec-0015The derived cache stays honest by content hash, not by modification timeaccepted · to be planned dec-0018Withheld is a declared first-class state, marked in the instrument hueaccepted · to be planned dec-0019The upheld option is the ruling, not an alternative — the renderer derives, never inventsaccepted · to be planned dec-0020A "token" in brief.max_tokens is dira's own conservative estimate, not a model's tokenizeraccepted · to be planned dec-0021The regex tier stages decisions only, and `alternatives` is required except when stagedaccepted · to be planned dec-0022Confirming a regex-staged decision promotes it to the semantic tier; it does not accept itaccepted · to be planned dec-0023The tier-2 handoff cannot ride PreCompact stdout, which reaches only the compaction summariseraccepted · to be planned dec-0024`n` disposes of the capture, not the option; a decision against something is still a `y`accepted · to be planned dec-0025Confirm writes `confirmed_by: human` and nothing else; the entry stays `staged` until extraction fills itaccepted · to be planned dec-0027dira reads session metadata to derive attention drift, locally and never transmittedaccepted · to be planned dec-0028Import measures a corpus before importing it, and offers indexing when the yield is nothingaccepted · to be planned dec-0030Pin kazi's emitted portfolio/status contract now, instead of waiting on qst-0005accepted · to be planned dec-0031Mirror kazi's Astro + GitHub Pages site architecture for dira.sire.runaccepted · to be planned note-0001Two fidelity gaps found by running `dira why` against the real ledgeractive qst-0001How does a public repo ledger resolve a parent ref that lives in a private ledger?answered qst-0002Is attention drift derived from ledger writes only, or from session metadata?answered qst-0003Does bulk-importing an existing ADR corpus produce a useful ledger, or a second pile?answered qst-0004Is the name "dira" clear of collisions on the channels that matter?answered qst-0005Will kazi accept the two upstream additions dira's seams still depend on?open qst-0006The edge set has no way to say "narrows without replacing", so authors reach for supersedesopen
⚠ Drift

3 active intents have no parent. Work with no stated purpose is visible here by construction — int-0001, int-0002, int-0003 serve nothing recorded. Either link them upward, or ask why they exist.

This page wrote itself. Every entry was captured by a coding agent as the work happened — nobody typed it up afterwards, and nobody re-reads it: it comes back to you at the start of the next session, and argues if you contradict it.

Keep your own →