Backlog triage Part D: ROADMAP cleaned (161 -> 123 lines, 81 -> 42 KB): intentions re-sorted P2/P3/P4, each names its 00 row; 33 shipped/killed/closed/moved items + the pre-invite checklist -> ROADMAP-HISTORY; UPDATE-ARC collapsed; one_register_gate reads suffix ids (R-50b found, moved to OPEN-ITEMS; decoy seen red)
gates / gates (push) Successful in 31s

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
2026-10-03 09:22:30 +02:00
parent 9f77865c2a
commit 33bbf8e94a
7 changed files with 140 additions and 121 deletions
+8
View File
@@ -1,3 +1,11 @@
## one-register reads suffix ids and splits on pipes outside code (2026-10-03, backlog triage, Part D)
- `one_register_gate.py`: the id pattern was `R-(\d+)`, so ROADMAP rows R-27b, R-27c and R-50b were never read;
and its naive split read R-50b's state from inside `create\|reconcile\|grant`. Both fixed (suffix ids;
`register_table.split_cells`). The fix convicted R-50b at once — a finding that lived only in `ROADMAP.md`; it
moved to `OPEN-ITEMS.md`. Decoy `one-register/suffix-id-row`: **passed the old gate — seen red**, convicts now.
- `instructions_gate.py`: `ROADMAP-HISTORY.md` counts as history, like the narratives archive.
## Every open row has a category and a severity (2026-10-03, backlog triage, Part C)
- `register_shape_gate.py` **RULES 5–8**: a register row splits (pipes outside backticks) into exactly the cells its
+8 -5
View File
@@ -558,11 +558,14 @@ def register_state(workspace_root):
# 2026-10-03: the register's narrative sections (campaign write-ups, rulings, ranking
# paragraphs) moved word for word to this archive. An id cited only there — R-153, named in the
# 2026-08-02 intake paragraph and in felhom.eu/CLAUDE.md — is history, not "a reference to nothing".
narr = os.path.join(workspace_root, "felhom.eu", "documentation", "archive",
"OPEN-ITEMS-narratives-2026-10-03.md")
if os.path.exists(narr):
with io_open(narr) as fh:
hist_text += "\n" + fh.read()
# ROADMAP-HISTORY.md is the same kind of record for the roadmap: an id the 2026-10-03 clean-up moved
# there (a shipped or killed intention) is history too.
for narr in (os.path.join(workspace_root, "felhom.eu", "documentation", "archive",
"OPEN-ITEMS-narratives-2026-10-03.md"),
os.path.join(base, "ROADMAP-HISTORY.md")):
if os.path.exists(narr):
with io_open(narr) as fh:
hist_text += "\n" + fh.read()
mentioned = set(re.findall(r"\bR-\d+[a-z]?\b", reg_text)) | set(
re.findall(r"\bR-\d+[a-z]?\b", hist_text)
) | set(re.findall(r"\bR-\d+[a-z]?\b", closed_text))
+9 -3
View File
@@ -37,11 +37,14 @@ import os
import re
import sys
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import register_table # noqa: E402
ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
ROADMAP = os.path.join(ROOT, "documentation", "backlog", "ROADMAP.md")
REGISTER = os.path.join(ROOT, "documentation", "backlog", "OPEN-ITEMS.md")
ROW = re.compile(r"^\|\s*\*{0,2}R-(\d+)\*{0,2}\s*\|")
ROW = re.compile(r"^\|\s*\*{0,2}R-(\d+[a-z]?)\*{0,2}\s*\|") # 2026-10-03: a suffix id (R-27b, R-27c, R-50b) was skipped unchecked
# DONE and IDEA are matched against the row's STATE cell only, never the whole row: the body of a
# finding routinely contains the word "shipped" while describing something else.
# BANKED and PROVEN-LIVE are this project's own done-words and were found by running the gate: a row
@@ -58,8 +61,11 @@ def rows(path):
m = ROW.match(line)
if not m:
continue
cells = line.split("|")
state = cells[4].strip() if len(cells) > 4 else ""
# 2026-10-03: split on pipes OUTSIDE backticks (`register_table.split_cells`). R-50b's item
# carries `create\|reconcile\|grant` in code, and the naive split read its STATE from the
# middle of that — so the row was judged on words that were not its state at all.
cells = register_table.split_cells(line) or []
state = cells[3].strip() if len(cells) > 3 else ""
yield m.group(1), state, line
+9
View File
@@ -240,6 +240,15 @@ decoy("closed-register/open-row-closed-word (BY DESIGN)", "closed_register_gate.
append_to(_OPEN_REG, _open_row("R-907", "**READY — RE-RANKED UP 2026-08-03 (R-86 closed)**")),
expect="accept")
# --- one-register (2026-10-03): an open ROADMAP row whose id carries a LETTER SUFFIX ------------
# The gate's id pattern was `R-(\d+)`, so R-27b, R-27c and R-50b were never read. Fixing it convicted
# R-50b at once — a finding that had lived only in ROADMAP.md. This decoy is that shape. (one-register
# stays in decoy_coverage_gate's EXEMPT list for R-424's hole — a finding filed under `idea` — which
# this decoy does not close.)
decoy("one-register/suffix-id-row", "one_register_gate.py",
append_to(os.path.join(ROOT, "documentation", "backlog", "ROADMAP.md"),
u"\n| R-905b | **A finding filed only here.** | S | READY — 2026-10-03 | none |\n"))
# --- hub-copy: an ENGLISH retrieval promise, planted in the bundle (R-558) -----------------------
#
# TWO SHAPES AT ONCE, and the second is why this decoy exists at all.