Files
felhom.eu/REPORT-backlog-triage-2026-10-03.md

7.4 KiB
Raw Permalink Blame History

REPORT — backlog triage, 2026-10-03

Paperwork session. No machine touched. No release. No golden. Other repos read only. Baseline: felhom.eu main 9305288 (verified). Commits: A 9e2786c · B 71b8c8c · C 9f77865 · D 33bbf8e · E (this commit).

The Part table

Part Done? Changed from the brief, and why
A — four roadmap items Done. R-808 (box OS security updates), R-809 (legal + business papers), R-810 (independence, spike), R-811 (second login step). Findings filed beside two: R-812 (no box receives OS security updates), R-813 (website: no privacy notice, terms or imprint). 00 gained three §E/§G gap rows and a new §H "Business & legal". CONTEXT records the request first. R-810 and R-811 got no register finding: nothing about them is false today (one password is a stated limitation, 00 §E).
B — finished rows out + gate Done. 125 rows with an id and 20 without moved to CLOSED-ITEMS.md (one dated section, each naming git show 9e2786c:…). Open rows normalised to one shape. Narratives (campaign write-ups, rulings, old ranking paragraphs) moved word for word to documentation/archive/OPEN-ITEMS-narratives-2026-10-03.md. closed_register_gate.py RULE 3. Workflow text in PROMPT-TEMPLATE.md §N.7/§N.5 and CLAUDE.md. Loose notes: verdict per file in backlog/README.md. 14 rows with an OPEN verdict were found finished and moved — each checked by me against live source (list below). 11 rows with a finished verdict stayed open, narrowed, because they name work no other row carries (R-451, R-579, R-610, R-618, R-621, R-635, R-691, R-707, R-719, R-723, R-738). Two loose notes stay in place (other repos link to their path). There is no "Deliverables" line in the template; §N.5's "report which rows" line gained "closed (and moved), narrowed".
C — category + severity Done. Columns ` ID
D — clean ROADMAP Done. 161 → 124 lines, 81 → 42 KB. Intentions re-sorted P2/P3/P4, each names its 00 row. 33 items + the pre-invite checklist → ROADMAP-HISTORY.md. UPDATE-ARC collapsed. Pre-invite list → pointer to STATUS. R-48 was SHIPPED (controller v0.154.0) though the roadmap still listed it as an idea. Fixing one_register_gate.py to read suffix ids found R-50b — a finding that lived only in the roadmap; moved to the register.
E — ranking + recommendation Done. documentation/audits/backlog-triage-2026-10-03/RECOMMENDATION.md and one decision in STATUS. The top list is 29 rows: every P2. No P1 exists, so severity alone fills the 20–30.

Headline numbers

  • OPEN-ITEMS.md: 442 rows with an id + 22 without, 824 KB, 932 lines → 326 rows, all with an id, ≈540 KB.
  • Moved to CLOSED-ITEMS.md: 125 + 20. Marked VERIFY: 11. New rows: 11 (R-812..R-819, R-50b moved in).
  • Category × severity (P2/P3/P4; no P1): Install 2/11/5 · Apps 0/15/21 · App updates 0/12/7 · Backup 12/24/20 · Storage 0/7/5 · Security 3/23/3 · Box system 3/11/3 · Monitoring 2/16/6 · Hub 1/7/13 · Business 4/0/3 · Process 0/4/83 — totals 27 / 130 / 169.

Claims in the brief that turned out wrong

  1. The row counts. Measured at 9305288 with a split that skips pipes inside backticks: 442 id rows (not 444) plus 22 rows with no id the count missed. By leading verdict: 113 finished (107 CLOSED + SHIPPED 2, FIXED 1, RULED 1, EXECUTED 1, ANSWERED 1), plus 4 DECIDED and 1 "✅ CLOSED" — 118 for the new gate; 195 READY (not ~129); OPEN 74 + NARROWED 10; WAITING-ON-OPERATOR 15; WATCHING 15. "~125 unreadable" was wrong: in those six-column tables the state is the THIRD column — the script read the last one, which is the owner. Only 18 rows needed a person: 5 because of a pipe in prose, 13 because their state word was undefined.
  2. "Nothing updates the host or guest OS" — TRUE for boxes, with two nuances: the installer points the host at the no-subscription repository "so the box can pull security updates" and then says "No upgrades are run"; the guest's Docker engine is current only on the day the golden is baked. The one apt full-upgrade in the project is a by-hand step for the off-site endpoint ep0.
  3. "The website has no legal pages" — TRUE. Worse than stated: the contact form asks for data-processing consent and links to no notice.
  4. "No document answers the independence question" — PARTLY WRONG. The LOST-hub half is answered (architecture/_recovery-inventory-2026-07-28.md §D2.4; 07 §8 row 11b), and 01 §7 rules that the customer owns the domain. Leaving, export and hand-over are answered nowhere — R-810 keeps those.
  5. "No gate refuses a closed row in OPEN-ITEMS" — TRUE. One more gate had the same blind spot in another shape: instructions_gate.py read the state by position and would have misread the new layout; fixed.

Rows found finished and moved (verified by me, evidence in each CLOSED entry)

R-123, R-131, R-202, R-229, R-272, R-295, R-343, R-369, R-398, R-500, R-506, R-572, R-590, R-800.

Gates — new rules and decoys, each seen red

  • closed_register_gate.py RULE 3 — red on the real register before the move (118 convicted). Decoy finished-row-in-open passed the old gate; convicts now. Genuine article (READY, prose says "closed") passes.
  • register_shape_gate.py RULES 5–8 — five decoys (old-shape row, near-miss category, P3-LOW as Sev, undefined state word, pipe outside backticks): all five passed the old gate; all convict now.
  • one_register_gate.py — suffix ids and backtick-aware split; decoy suffix-id-row passed the old gate.
  • Suite: test_gate_decoys.py 29/29; test_instructions_gate.py 73/73; repo_gates.py --fast OK at every commit.

Rules carried out of closed rows

21 sentences that stated a rule and had no other home → CONTEXT.md ("Rules carried out of rows closed 2026-10-03"); the three decisions among them (R-245, R-303, R-312) → 07 §11 as [DESIGN].

Observations

  1. scripts/check_stands.py is red and runs in no runner (2 dangling ids before today, 3 more after rows closed). FILED: R-819.
  2. 09 decision 56 and R-745 disagree about the controller self-update's roll-back target. FILED: R-817.
  3. Two changelogs cite R-330/R-331 for other findings. FILED: R-818.
  4. F-DIAG's six off-site failure messages have never been seen on a real failure. FILED: R-816.
  5. Two July watch rows had no id and no recorded outcome (a Storage Box deletion; the first GC on the off-site datastore). FILED: R-814, R-815.
  6. One stray duplicate owner word ("operator") in R-209a's broken extra cell was dropped in normalising; every other word of every open row is kept (checked by a token diff). NOT-A-FINDING: a duplicated cell, not content.

Teardown

Provisioned nothing.