The Work File
One piece of work = one folder at .genius/<slug>/ (a ## Working Genius section in CLAUDE.md/AGENTS.md may pin a different parent): the snapshot <slug>.md, the work's current truth, bounded; the log <slug>.log.md, everything that happened on the way, append-only; the contract CONTRACT.md, what binds the slices not yet built; and the work's own artifacts. The shape of all of it — templates, the compaction question, the ceiling and its instrument, the invariant, the link rules — is FILE-FORMAT.md, the one home for those rules; the backlog's shape is BACKLOG-FORMAT.md, and the measurements behind the rules are FORMAT-EDGES.md.
The concept: the files, not conversation memory, carry the work — and what a work knows grows by three different laws, so it gets three files with three different rules. Conflate any two and the file grows with every discovery until nobody reads it closely, which is how a record dies while still being written to.
What that takes:
- Read the snapshot before acting; write the moment a decision lands. It outranks whatever you remember about the work. Re-read it after your own context is compacted: a session summarised mid-slice is a new cold reader, and the file is the truth.
- Reading scope stays with the work at hand. Starting or resuming costs three reads: list
.genius/ for the slug, read that snapshot, read .genius/DECIDED.md if settled ground might be at stake. CONTRACT.md is a fourth, earned when you are about to build, attack or verify against it. Every other slug's files stay closed, and the log stays unopened unless a specific question forces it in — and an anchor to link is never such a question: measure.py anchors <slug> lists every ## key and what already links it, because a log opened whole stays in the context to the end of the work. A project with two finished works and one with two hundred cost a session the same.
- The contract changes by version, never by patch. Requirements moving mid-build is the normal case. A change of shape — criteria, scope, slices, seams — is the new version whole in
CONTRACT.md, the old whole in the log with what overturned it, one changelog line in the snapshot; a single value that measured differently is the errata skill's line-level supersede, no bump. So a change costs the same at churn one and churn ten.
- Compaction is part of closing, and it has an object. Every slice close, contract bump and stage close puts the format's one question to each snapshot line — does this line still constrain work that isn't finished? — and routes the answer; without the question, "compact to current truth" is satisfied by changing nothing. The invariant — nothing leaves except into the log or
CONTRACT.md, a link left behind — licenses the snapshot alone: the in-flight log is never compacted or tidied, because a kill-reason shortened to a verdict has been destroyed. Tenacity distills a done work's log once, by one announced rule; /distill catches up older done work; /compact catches up a snapshot that drifted.
- The snapshot is the only path anyone has to know. Every section links the log entries that back it. A cold session that must trawl the log to act is the sign that state leaked into history.
- A slice's evidence rides the commit that closes it: the code, the log entry naming per criterion what ran and what it showed, the snapshot compacted — one commit where
.genius/ is committed, the same moment where it is gitignored. The evidence goes in the log, not the commit message: a message can't be corrected, linked, read in the diff, or survive a squash. A close is one write per file, composed before it is written, because every tool call re-reads the whole context.
- Absence is the record. A stage the user didn't type has no section and no log entry; not typing a stage is the decision, and when work goes wrong later the missing section is the first suspect.
- Assumptions are visible. A decision made without the user is an
assumed: <question> → <answer> line in Open, surfaced at next contact — an honest assumption beats a hollow confirmation. Consumed, it moves to the log with what consumed it.
- Derived work gets its line the moment it's spotted. An edge worth testing, a refactor worth doing, a question worth its own work: one line in
.genius/BACKLOG.md, in the backlog format's shape, in any stage — a seed, not a plan. /genius lights these up; Tenacity sweeps a work's leftover Open items there; starting one removes its line, the new work file its home now.
- What binds is rewritten; what records is appended to. The snapshot, the index line, the glossary term get rewritten in place; the log gets appended to and otherwise left alone, because its worth is that it is what was written then. The
errata skill holds the discipline; /reconcile sweeps the drift no session tripped over.
- How the sentences are written — for a cold reader and the owner both — is the
record-prose skill's discipline, one place for every document under .genius/.
- Checkpoints are live, and parsable. Each is a real exchange with the user — a model answering its own interview confirms nothing. Where you are asking for a decision, lead with it and keep the sentences short — at Wonder the story you offer for correction is the ask, at Discernment the consequences played back are — because a dense report buys agreement rather than judgement.
A done work's folder stays in place, the snapshot compacted at close-out to what history needs, its post-mortem line indexed into .genius/HISTORY.md (the tenacity skill writes it). Abandoning honestly (stage: done, post-mortem abandoned — <reason>) beats a zombie file.
1---2name: genius-file3description: Read and update Working Genius work files — the work's folder holding the bounded snapshot a cold session acts on, the append-only log behind it, and the contract that binds the unbuilt slices. Use when a stage skill needs the work-file discipline, when the user asks what work is in flight or where a piece of work left off, or before resuming any work tracked under .genius/.4---56# The Work File78One piece of work = one folder at `.genius/<slug>/` (a `## Working Genius` section in `CLAUDE.md`/`AGENTS.md` may pin a different parent): the **snapshot** `<slug>.md`, the work's current truth, bounded; the **log** `<slug>.log.md`, everything that happened on the way, append-only; the **contract** `CONTRACT.md`, what binds the slices not yet built; and the work's own artifacts. The shape of all of it — templates, the compaction question, the ceiling and its instrument, the invariant, the link rules — is [FILE-FORMAT.md](FILE-FORMAT.md), the one home for those rules; the backlog's shape is [BACKLOG-FORMAT.md](BACKLOG-FORMAT.md), and the measurements behind the rules are [FORMAT-EDGES.md](FORMAT-EDGES.md).910The concept: **the files, not conversation memory, carry the work — and what a work knows grows by three different laws, so it gets three files with three different rules.** Conflate any two and the file grows with every discovery until nobody reads it closely, which is how a record dies while still being written to.1112What that takes:1314- **Read the snapshot before acting; write the moment a decision lands.** It outranks whatever you remember about the work. **Re-read it after your own context is compacted**: a session summarised mid-slice is a new cold reader, and the file is the truth.15- **Reading scope stays with the work at hand.** Starting or resuming costs three reads: list `.genius/` for the slug, read that snapshot, read `.genius/DECIDED.md` if settled ground might be at stake. `CONTRACT.md` is a fourth, earned when you are about to build, attack or verify against it. Every other slug's files stay closed, and the log stays unopened unless a specific question forces it in — and an anchor to link is never such a question: `measure.py anchors <slug>` lists every `##` key and what already links it, because a log opened whole stays in the context to the end of the work. A project with two finished works and one with two hundred cost a session the same.16- **The contract changes by version, never by patch.** Requirements moving mid-build is the normal case. A change of *shape* — criteria, scope, slices, seams — is the new version whole in `CONTRACT.md`, the old whole in the log with what overturned it, one changelog line in the snapshot; a single value that measured differently is the `errata` skill's line-level supersede, no bump. So a change costs the same at churn one and churn ten.17- **Compaction is part of closing, and it has an object.** Every slice close, contract bump and stage close puts the format's one question to each snapshot line — *does this line still constrain work that isn't finished?* — and routes the answer; without the question, "compact to current truth" is satisfied by changing nothing. The invariant — nothing leaves except into the log or `CONTRACT.md`, a link left behind — licenses the snapshot alone: the in-flight log is never compacted or tidied, because a kill-reason shortened to a verdict has been destroyed. Tenacity distills a *done* work's log once, by one announced rule; `/distill` catches up older done work; `/compact` catches up a snapshot that drifted.18- **The snapshot is the only path anyone has to know.** Every section links the log entries that back it. A cold session that must trawl the log to act is the sign that state leaked into history.19- **A slice's evidence rides the commit that closes it**: the code, the log entry naming per criterion what ran and what it showed, the snapshot compacted — one commit where `.genius/` is committed, the same moment where it is gitignored. The evidence goes in the log, not the commit message: a message can't be corrected, linked, read in the diff, or survive a squash. A close is one write per file, composed before it is written, because every tool call re-reads the whole context.20- **Absence is the record.** A stage the user didn't type has no section and no log entry; not typing a stage *is* the decision, and when work goes wrong later the missing section is the first suspect.21- **Assumptions are visible.** A decision made without the user is an `assumed: <question> → <answer>` line in Open, surfaced at next contact — an honest assumption beats a hollow confirmation. Consumed, it moves to the log with what consumed it.22- **Derived work gets its line the moment it's spotted.** An edge worth testing, a refactor worth doing, a question worth its own work: one line in `.genius/BACKLOG.md`, in the backlog format's shape, in any stage — a seed, not a plan. `/genius` lights these up; Tenacity sweeps a work's leftover Open items there; starting one removes its line, the new work file its home now.23- **What binds is rewritten; what records is appended to.** The snapshot, the index line, the glossary term get rewritten in place; the log gets appended to and otherwise left alone, because its worth is that it is what was written then. The `errata` skill holds the discipline; `/reconcile` sweeps the drift no session tripped over.24- **How the sentences are written** — for a cold reader and the owner both — is the `record-prose` skill's discipline, one place for every document under `.genius/`.25- **Checkpoints are live, and parsable.** Each is a real exchange with the user — a model answering its own interview confirms nothing. Where you are asking for a decision, lead with it and keep the sentences short — at Wonder the story you offer for correction *is* the ask, at Discernment the consequences played back *are* — because a dense report buys agreement rather than judgement.2627A done work's folder stays in place, the snapshot compacted at close-out to what history needs, its post-mortem line indexed into `.genius/HISTORY.md` (the `tenacity` skill writes it). Abandoning honestly (`stage: done`, post-mortem `abandoned — <reason>`) beats a zombie file.