Project layout¶
The DADR format does not mandate a directory structure. DADRock uses this one, created by dadrock init:
dadr/
inbox/
country-exclusions.md
ledger/
income-preprocessing.md
drop-missing-treatment.md
archive/
deprecated-cohort-filter.md
templates/
candidate.md # optional
tasks/
runs/
.gitignore
| Directory | Contents |
|---|---|
dadr/inbox/ |
Candidates: proposals awaiting review |
dadr/ledger/ |
Decisions in force: accepted records without successors |
dadr/archive/ |
Records kept but no longer in force: rejected records and superseded records |
dadr/templates/ |
Optional template overrides for new candidates |
dadr/tasks/ |
Optional project-specific agent workflows and overrides of built-in tasks (dadr/tasks/<task-id>.md: YAML front matter for the manifest, Markdown body for the prompt) |
dadr/runs/ |
Agent-run inputs, results, and logs; ignored by version control |
dadrock accept changes a candidate's status to accepted and moves the file from dadr/inbox/ to dadr/ledger/. dadrock reject changes it to rejected and moves it to dadr/archive/. The id never changes. Superseding a decision, by accepting its successor or with dadrock supersede, appends the successor's id to the predecessor's successors and moves the predecessor to dadr/archive/; its status stays accepted.
Filenames carry no meaning: DADRock identifies a record by its id, never by its filename (specification §5). It names a new record after its title, income-preprocessing.md, and adds the short id, income-preprocessing-01938b8e4d70.md, only when the inbox already has that name. Accepting, rejecting, and superseding keep the filename and change only the folder; the short id is added only when the target folder already has that name. A name that another record leaves in the same operation counts as free, so a successor with its predecessor's title takes the predecessor's filename in the ledger. Renaming a record file does not change the record.
The directory is a convenience: the front matter is authoritative. dadrock validate warns when a record sits in a directory that does not match its status and successors. Moving a file breaks relative Markdown links to its path; record wikilinks use ids and are unaffected. Use dadrock config to inspect the resolved layout. Keep the record directories in version control; run state may contain pasted context and source excerpts and is ignored by default. Clear agent runs, in the project menu of the web interface, deletes dadr/runs/.
Earlier versions of DADRock used candidates/, accepted/, and rejected/. DADRock no longer reads those directories: move candidates to inbox/, current decisions to ledger/, and rejected and superseded records to archive/.