Design records
Durable rationale for load-bearing decisions. A DR records why, so future contributors change decisions knowingly rather than accidentally. DRs are immutable once accepted; a reversal is a new DR that supersedes the old one.
Format: see TEMPLATE.md. IDs are DR-NNNN, allocated
sequentially, never reused.
| ID | Title | Status |
|---|---|---|
| DR-0001 | Vendored identity copies, not package distribution | accepted |
| DR-0002 | Slice identity lives in the declaration, not the tools | accepted |
| DR-0003 | Two-lane distribution: sync PRs + PR-time gate | accepted |
| DR-0004 | Normalised content hashing | accepted |
| DR-0005 | The tag is the release: immutable, SHA-anchored, retractable | accepted |
| DR-0006 | Pull reconciliation with optional push hints | accepted |
| DR-0007 | ADO and GitHub Actions as peer backends behind a port interface | accepted; service ops superseded by DR-0014/15 |
| DR-0008 | Declarative migrations with deterministic verification | accepted |
| DR-0009 | Content adapters: identity copy by default, named transforms by declaration | accepted |
| DR-0010 | Scope changes are reviewed PR events, never automatic | accepted |
| DR-0011 | One CLI; dependency-free consumer gate path | accepted |
| DR-0012 | One consumer config file per slice under .vendkit/ |
accepted |
| DR-0013 | Seeded files: a scaffold-once lifecycle class | accepted |
| DR-0014 | Detection and delivery split by an exec handler protocol | accepted |
| DR-0015 | SCM and CI axes; formats not services | accepted |
| DR-0016 | The engine becomes a pinned, checksummed artefact (INV-6 revision) | accepted (effective with DR-0017) |
| DR-0017 | Single engine implementation in Go; scenario kit as parity ratchet | accepted |
| DR-0018 | Versioned docs site from a pure-Go static generator | accepted |
| DR-0019 | .vendkit/ splits into consumer/ and publisher/; publisher paths become defaults |
accepted |
| DR-0020 | Slim the machinery slice: the engine ships as artefact only | accepted |