# Exercise 04: write an ADR Record a decision the way this project does — context, decision, consequences, a status with a date — for a change you would propose, and learn what a good record leaves behind. - Page: - Updated: 2026-09-25 - From the Sri Guru Granth Sahib Ji — Knowledge Base wiki. Sri Guru Granth Sahib Ji is quoted verbatim, cited by Ang, and never altered. --- **Goal.** Write an architecture decision record that would pass review. **Needs.** a text editor. 30 minutes. ## 1. Read three Read [ADR-0008](https://docs.gurbanisoul.com/adr/0008-dataset-by-pin/) (short, one decision, consequences that name a cost), [ADR-0006](https://docs.gurbanisoul.com/adr/0006-bani-registry-over-verbatim-corpus/) (a numbered decision with proof and gates) and [ADR-0012](https://docs.gurbanisoul.com/adr/0012-docs-site/) (a decision that extends an earlier one and says so). Note the shape: **Context** (what was true and what hurt), **Decision** (what is now true, in the present tense), **Consequences** (what got better, what it costs, what it forbids). ## 2. Pick a decision Something you actually believe the project should decide. Two starters if you need them: - *The wiki's posters carry a `verified` commit; should every Mermaid diagram too?* - *`/api/random` is `no-store`; should a seeded Hukam be cacheable for a day?* ## 3. Write it Create `docs/adr/0013-.md` with the frontmatter the other records use (`title`, `description`, `sidebar.order`), the H1 `ADR-0013: …`, a `**Status:** proposed (YYYY-MM-DD)` line, and the three headings. Keep it under a page. Then run: ```bash make docs-check ``` Expected: `0 error(s)` — the gate checks the frontmatter and every link you added. Open the [Decisions](https://docs.gurbanisoul.com/adr/) page on a local build (`make docs-dev`) and find your record on the timeline with its status. ## 4. Decide what to do with it If you meant it, open a pull request; the record's status becomes `accepted` with the merge date. If it was practice, delete the file — but keep the habit. ## Self-check ```quiz Q: A decision was made in a chat and everyone agreed. Does it need an ADR? - Yes if a future engineer would need to know why the code is the way it is ✓ — the record is for the reader in a year, not for today - No, the code is the record — code shows what, not why - Only if it changes the API — the data model, the pipeline and the process all have records here Q: An accepted ADR turns out to be wrong. What do you do? - Write a new ADR that supersedes it and says so; leave the old one in place ✓ — records are never edited after acceptance - Edit the old ADR to the new decision — that erases the history the record exists to keep - Delete it — the numbering and the links would break, and the reasoning would be lost ```