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>
16 lines
500 B
Markdown
16 lines
500 B
Markdown
# Decisions
|
|
|
|
## Index
|
|
- [x](#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.
|