# Layout Every work directory is a name and a "do not". Agents read `~//AGENTS.md` before writing into that directory. | Dir | Purpose | Do not | |-----|---------|--------| | `src` | Git repos. One project per directory. | Loose files, notes, downloads | | `research` | Kept notes, write-ups, literature reviews | Clones, throwaway scripts, PDFs dumped at the root | | `lab` | Experiments that are not repos yet | Finished write-ups (promote to research), real projects (promote to src) | | `tmp` | Disposable work in dated subdirs | Anything you would mourn; secrets | | `dl` | Downloads inbox | Long-term storage; a directory named `Downloads` | | `edu` | Coursework, lectures, assigned reading | Personal research notes | | `lit` | Books and texts | Notes *about* books (those go in research) | | `sci` | Papers and datasets | Write-ups of papers (those go in research) | | `pics` | Images | Reorganizing unless asked | | `vids` | Video | Reorganizing unless asked | | `music` | Audio | Reorganizing unless asked | ## How work moves ``` dl --sort--> the dest directory lab --if it becomes a repo--> src/ lab --if it becomes a kept note--> research/ tmp --when the session ends--> delete ``` `tmp` uses dated names: `~/tmp/2026-08-14-topic`. If a dated dir is still there a week later, it should have been promoted or deleted. ## Protected directories These exist to be kept. An agent never deletes them, never `mv`s them to trash, and never suggests wiping them to free space: `src`, `dl`, `edu`, `lit`, `music`, `pics`, `sci`, `vids` `tmp` is the only directory machina will describe as wipe-safe. `lab` can be cleaned by hand, topic by topic, not as a unit. ## Names that must not appear - `bin/` anywhere. Scripts go in `~/.local/bin`. - `dev/` under `$HOME`. Development is `~/src`. - `Downloads/` or `downloads/`. The inbox is `~/dl`. Creating a new top-level name under `$HOME` is a decision, not a convenience. On Kris's machines it needs `sudo` if you are an agent. `machina install` is the one program allowed to create the names in TREE.md. ## XDG Config and state follow the [XDG Base Directory][xdg] spec. | Kind | Path | Holds | |------|------|-------| | Config | `$XDG_CONFIG_HOME/model/` | Shared facts (model standard) | | Config | `$XDG_CONFIG_HOME/machina/` | Machine index | | State | `$XDG_STATE_HOME/model/` | `log.csv` | | Exec | `~/.local/bin/` | `machina` and the check-tool links | If `XDG_CONFIG_HOME` or `XDG_STATE_HOME` is unset, the defaults are `~/.config` and `~/.local/state`. [xdg]: https://specifications.freedesktop.org/basedir-spec/latest/