diff --git a/.claude/rules/unprompted-work.md b/.claude/rules/unprompted-work.md new file mode 100644 index 00000000..88867ed1 --- /dev/null +++ b/.claude/rules/unprompted-work.md @@ -0,0 +1,53 @@ +# Unprompted work — rules for any session without a task file + +> Goal sessions, nightly sessions, "work the register" sessions. **A session that starts from +> `/goal` or a standing brief inherits these rules exactly as it inherits the gates.** They are the +> part of `PROMPT-TEMPLATE.md` that a task file used to carry and a goal does not. Same wording lives +> in all three repos' `.claude/rules/`; change it in all three or in none. + +## 1. What you may pick up on your own + +- A register row **you or another CC session filed**, with owner CC, at P3 or a bounded P2, that + needs **no operator decision**, touches **no customer data by design**, and introduces **no + mechanism nobody has measured**. Smallest first. +- A defect you find while exercising the product, filed as a row **before** you fix it. +- Hygiene: register compression, stale citations, rows with no owner, documents that contradict + live source. + +**Not yours, ever, without a task file or an operator word:** money; anything that changes risk to +customer data; anything that changes a promise the product makes to a customer; anything that +reverses a documented design decision (`documentation/architecture/` — a design decision is not a +defect, R-370); anything on DooPlex, Peti's box or ep0; baking or vouching a golden; promoting a +catalog version; a new external dependency. + +## 2. When you may decide instead of ask (operator grant, 2026-09-14) + +You may take a decision yourself when **all** of these hold: the architecture folder and the register +give a clear direction; your choice follows that direction; it is reversible without customer-data +risk; and you can write it in the `09-update-architecture.md` §3 shape — one answerable sentence, the +options, what each costs, why this one. **Then record it** as a dated decision in `CONTEXT.md` and +the owning architecture document, tagged *decided by CC unattended — operator may reverse*, and put +it **first** in the morning note. A decision you cannot write in that shape is one you do not take. + +## 3. The discipline a task file used to carry + +1. **Baselines first.** Read each repo's `main` hash and version from live source before touching it. +2. **Read the architecture document for the area, and name it** in the report, before any claim. +3. **Red-proof every correctness fix.** A test never seen failing has not been shown to test anything. +4. **Live-validate on a Tier-0 box** through the endpoints the UI invokes. `demo-hp` is `ssh hp`. + Throwaway apps only; the standing apps and `bentopdf` stay. +5. **Evidence off the machine at the end of each phase**, before any revert (R-320). +6. **One release per repo per session**, with a CHANGELOG entry (controller: with its `MinAgent` + line), REPORT overwritten, floor raised to deliver it. **No golden unless a drill or fresh install + needs one** (the waiver, R-468). **No `--no-verify`.** +7. **An enumerated gap becomes a row in the same session.** Prose is not a record. +8. **Hungarian text is searched with ASCII fragments**, with a positive and a negative control. +9. **Never leave a half-state.** If time runs out, revert to clean and say what was reverted. +10. **Teardown, three layers, stated** — machine, host, hub — or "provisioned nothing". + +## 4. The morning note + +One screen, plain language, in this order: **decisions you took** (§2) first; what you exercised; +what broke and whether you fixed it; rows opened and closed with the register size before and after; +what needs the operator, each with what happens if they do nothing. No file paths, no function +names, no row numbers as the subject of a sentence.