From 86adbcaf8a0bb30f0d751cc55a1a97812b54459c Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Fri, 9 Oct 2026 18:10:19 +0200 Subject: [PATCH] rules: "The system poster stays true" (section 6, all five copies identical) The shared rule file carries the same wording in felhom.eu, felhom-controller, felhom-agent, app-catalog-felhom.eu and the workspace root on DooPlex -- "change all five or none" -- so this is this repo's copy of a rule added in felhom.eu a08bd3cbd5. A session that changes a fact listed in architecture/felhom-system-poster.facts.md (a machine, a role, a traffic path, a backup tier, a time, a retention, a key, a known gap) updates that file in the same commit; fixes the poster's text if the change is text only; or adds "System poster needs a refresh: " to STATUS. The report names which of the three it did. The poster is drawn in Claude Design and nothing in the repo renders it, so scripts/poster_facts_gate.py only WARNS when the facts outrun the drawing -- it never fails a push, because a refresh needs the operator and another tool. Verified identical to the other four copies by diff, before and after. --- .claude/rules/unprompted-work.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.claude/rules/unprompted-work.md b/.claude/rules/unprompted-work.md index b2f1a11..9a82377 100644 --- a/.claude/rules/unprompted-work.md +++ b/.claude/rules/unprompted-work.md @@ -73,3 +73,19 @@ that no longer exists. Each edit is named in the report (file, line, before, aft operator's word: loosen a safety rule, a fence, a „never", a protected machine, a secret rule, or a review step; or remove a rule. When in doubt, it is a rule change, and it goes to the operator. If Claude Code's own permission check asks before such an edit, wait for the operator's click; if it refuses, record that and file the exact line. + +## 6. The system poster stays true + +**A session that changes a fact listed in `architecture/felhom-system-poster.facts.md` (a machine, a +role, a traffic path, a backup tier, a time, a retention, a key, a known gap) updates that file in +the same commit.** If the change is text only, it also edits the matching text in +`felhom-system-poster.html`. If it needs a new drawing, it adds the line +**"System poster needs a refresh: "** to `STATUS.md`'s "waiting on the operator" list. +**The session report names which of the three it did.** + +Why the three-way split: the poster is a drawing made in Claude Design, and **nothing in this +repository renders it** — unlike `where-felhom-stands.html`, which has `render_stands.py`. So the +facts file is the source of truth and the drawing trails it. `scripts/poster_facts_gate.py` warns +when the facts file has a newer commit than the poster; it **never fails a push**, because a refresh +needs the operator and another tool, and a gate nobody can clear is a gate people learn to route +around.