From ed9ec6df71064a18aba014ada88c847149df4a40 Mon Sep 17 00:00:00 2001 From: Nick Date: Mon, 7 Sep 2026 18:42:54 +0100 Subject: [PATCH] =?UTF-8?q?feat(docs):=20living=20PRDs=20=E2=80=94=20gener?= =?UTF-8?q?ated=20state=20sections=20+=20staleness=20gate=20for=20pipeline?= =?UTF-8?q?=20and=20TUI=20(#204)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AGENTS.md | 4 ++-- PRD.md | 4 ++-- docs/pipeline-prd.md | 2 +- henxels.yaml | 9 +++++++++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index a7cb4cc7..497efa61 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -20,14 +20,14 @@ Only use `git commit --no-verify` in a genuine emergency: it bypasses the hooks - The umbrella impact map is complete and truthful — every module mapped, no phantom entries (in ./config/umbrellas.json) - Umbrella canaries exist in the repo — the propagation gate cannot reference ghosts (in ./config/umbrellas.json) - The umbrella dependency graph stays a DAG — reflexive updates cannot cycle (in ./config/umbrellas.json) - - The bug-fix discharge contract is a governed doc — it exists, is markdown, and changes are deliberate (in ./docs/bugfix-contract.md) - The discharge checker ships with the repo — red-first enforcement is structural (in ./scripts) - Discharge checker and its CI wiring change together - Every workflow is registered in the pipeline registry — new pipeline machinery ships with documentation (in ./.gitea/workflows/*.yml) - Every TUI surface is registered — no silent UI growth (in ./src/rune/*tui*.py) - New rune modules ship with tests or a canary — no ungoverned code surfaces (in ./src/rune/*.py) - +- PRDs are living documents — their generated state sections regenerate identically from governed sources +- PRD staleness is a CI failure — docs rot is silent failure (in ./scripts/gen_prd_state.py) ### Behaviours diff --git a/PRD.md b/PRD.md index b2a7bc66..6b26f78b 100644 --- a/PRD.md +++ b/PRD.md @@ -1,6 +1,6 @@ # Rune TUI — Product Requirements Document (PRD) -**Last Updated**: 2026-08-30 +**Last Updated**: 2026-09-07 **Version**: v0.45.1 **Status**: Active Development @@ -13,7 +13,7 @@ Rune is a stateful coding assistant with a Textual-based TUI. It connects to loc --- -**Version**: v0.54.0 · **HEAD**: c00c009 · **Regenerated**: 2026-09-07 +**Version**: v0.54.0 · **HEAD**: 3e0b748 · **Regenerated**: 2026-09-07 ### Governed TUI surfaces (docs/tui-registry.md) diff --git a/docs/pipeline-prd.md b/docs/pipeline-prd.md index 0dba69b7..126c8a09 100644 --- a/docs/pipeline-prd.md +++ b/docs/pipeline-prd.md @@ -42,7 +42,7 @@ the contract surface saying it may. - `henxels.yaml` + `henxels_checks.py` — the auditable contract surface -**Version**: v0.54.0 · **HEAD**: c00c009 · **Regenerated**: 2026-09-07 +**Version**: v0.54.0 · **HEAD**: 3e0b748 · **Regenerated**: 2026-09-07 ### Impact map (config/umbrellas.json — enforced complete by henxels) diff --git a/henxels.yaml b/henxels.yaml index 2d2ecac9..7a3fee2a 100644 --- a/henxels.yaml +++ b/henxels.yaml @@ -70,3 +70,12 @@ henxels: in: ./src/rune/*.py new_rune_modules_have_canary_or_test_coverage: true + + - henxel: "PRDs are living documents — their generated state sections regenerate identically from governed sources" + changed_with: + when: ./config/umbrellas.json + expect: ./docs/pipeline-prd.md + + - henxel: "PRD staleness is a CI failure — docs rot is silent failure" + in: ./scripts/gen_prd_state.py + required_files: [gen_prd_state.py]