Decisions

The decisions in force, one file each under decisions/. Format and rules are in STYLE.

This table is generated. Edit an entry under decisions/, then run tools/split-decisions.sh --index oops-libs. A number resolves to exactly one file.

# decision status date
🟢 D001 A separate repository for what every project needs and none owns decided 2026-08-29
🟢 D002 One shared build stamp decided 2026-08-29
🟢 D004 Documentation is embedded, and the page list stays in the consumer decided 2026-08-29
🟢 D005 The markdown renderer is written here decided 2026-08-29
🟢 D006 Logging is tracing, and every destination past stderr is a feature decided 2026-08-29
🟢 D007 The platform's own directory is the default layout decided 2026-09-26
🟢 D008 Domain code stays out decided 2026-08-29
🟢 D009 The nowhere-to-write case is a parameter decided 2026-08-29
🟢 D010 Logging levels are defined once, in the shared conventions decided 2026-08-29
🟢 D013 One directory for the collection, not one per tool decided 2026-08-30
🟢 D014 A data root and a cache root decided 2026-08-30
🟢 D015 A shared directory is not a shared file decided 2026-09-09
meaning
🟢 settled, and the reasoning rests on something checkable
🟡 assumed or proposed - made without input, and in the review queue
🔴 reversed, superseded or blocked
⚪ no status recorded

A date with ~ is not recorded - it is worked out from the dated entries either side, because an entry between two of them was written between their dates. ~ alone is a day both neighbours agree on; ~a..b is a span, and no day inside it is claimed; ~>a and ~<a are entries with a dated neighbour on only one side. A bare - has no dated entry either side to reason from.