Adds scripts/decisions_lib.py, the shared parser for ErsatzTV decision records (docs/decisions.md + docs/decisions/*.md). Parses H2 sections into Record dataclasses, distinguishing migrated records (visible metadata block: key/status/since/supersedes/superseded-by + Rule/ Signals/Mechanics) from legacy-unmigrated ones with no metadata line. scripts/ is now an importable package (scripts/__init__.py, scripts/tests/__init__.py) so later tools can `import scripts.decisions_lib`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
500 B
500 B
Decisions
Index
- (#y)
2026-07-17 — Migrated example (#406)
key: ci.runner-placement · status: active · since: 2026-07-17 · supersedes: none · superseded-by: none
Rule: Every CI services container gets an explicit cap.
Signals: ci, runners · paths: .gitea/workflows/docker-build.yml · issues: #390 #406
Mechanics: docs/ci-cd.md → CI lanes
Rationale prose here.
2026-07-11 — Legacy unmigrated example (#231)
Some prose with no metadata line at all.