The cheapest status system ever built: where a file lives says what
state it’s in. Four directories cover a personal working life:
inbox/ (unprocessed), active/ (current focus), later/
(simmering), archived/ (done or dormant). Moving a file is the
workflow. No status fields to maintain, no dashboard to update, and an
agent can read your whole situation with ls.
You’ve met this before. This is GTD’s contexts and someday/maybe
lists, filed into a filesystem, and it’s how ops teams have always
used directory conventions (incoming/, processing/, done/) to
make state visible without a database.
The habits
Everything lands in exactly one place. A project is in active/
or later/, never both. Ambiguity about where a thing lives is
ambiguity about whether you’re doing it.
Moves are decisions, so moves are proposals. The agent proposes
(“these five active projects are untouched in 30+ days; move to
later/?”), you approve the list, then it moves. Location changes
are exactly the kind of small irreversible-feeling action that
wants a human glance.
archived/ is read-only by convention. Done work stays findable
and stops nagging. Nothing in archived ever asks for attention
again unless you go get it.
Keep the top level closed. New top-level directories are a
structural decision, not a filing decision. The agent asks first.
(Domains that outgrow this earn a real home; that’s a deliberate
graduation, not drift.)
Try it
TRY IT Status field rot
you
My vault is a mess. I can't tell what I'm working on anymore.
agent
The vault needs a way to say what state things are in. There are two places state can live: in the files, or in where the files are.
Pick the agent's next move, then see where it leads:
you
A month later: the dashboard says 9 active projects. At least four of those haven't been touched since it was written.
agent
The fields were set once and never maintained: every status change needs an edit nobody makes, and the dashboard is a copy of the copies. Two representations of state, both drifting, neither trusted.
the baseline
Status fields are state you have to remember to maintain, and a dashboard is a cache of them. Both rot quietly: the vault now lies in two places instead of being ambiguous in one.
agent
Moves applied per your edits to the list. Now: ls active/ shows six folders. That IS your answer to "what am I working on," no dashboard needed, and it can't drift because the location isn't a label about the file, it's where the file is. Monthly, I'll propose a sweep of untouched actives to later/.
you
Six. That's already two more than the truth. Move weekend-synth and the blog redesign to later/.
correct
Location can't disagree with itself: moving the file is the status update, ls is the dashboard, and the honest answer surfaced immediately, including the two projects the user demoted on sight.
you
Where did my grant application notes go? They were in the root last week.
agent
I archived them: last touched five months ago. I didn't know the deadline is next month and the long gap was the grant cycle, not abandonment. I sorted your commitments by my heuristics, silently, and now you can't find things where you left them.
plausible but wrong
Right structure, wrong process: filing is deciding what things mean to their owner, and a silent bulk refile makes those calls unsupervised. Moves are proposals: the list before the move is the entire safety mechanism.
Do it by hand
Make the four directories, move what you have into them, and notice
the side effect: ls active/ is now an honest answer to “what am I
actually working on?” Probably the first one you’ve had in a while.
Try it with your agent
Set up lifecycle directories in my vault: inbox/, active/, later/,archived/. Then propose a filing for every existing note: show methe full move list (file → destination, one line of reasoning each)and wait for my approval before moving anything. Add to the supported projectinstruction file (`AGENTS.md`, `CLAUDE.md`, or its documented equivalent):location is state (the four directories and what they mean), movesare always proposed as a list before execution, archived/ isread-only, and no new top-level directories without asking. Show methe instruction-file diff first.
Watch out
Status frontmatter duplicating location: if active/ and
status: active can disagree, they will. Let location carry the
state; add fields only for what location can’t say (waiting-for,
next-action).
The bloated active/: fifteen “active” projects is a lie told in
directory form. The periodic sweep to later/ is the honesty
mechanism. Let the agent propose it monthly.
Silent agent moves: an agent that refiles without showing the
list is reorganizing your commitments unsupervised. Proposals
first, always.