2d69c61556
gates / gates (push) Successful in 27s
The operator's request of 2026-10-01 recorded in CONTEXT with the reviewer's defaults (new apps only; the 53 get a read-only gap page). The pilot: the draft caught R-752 and R-755, missed R-737 and (for a new app) R-738; the sharpened and new rows then found R-762 (wger serves no static files or photos), R-763 (strangers sign up, guest accounts), R-764 (no mail). Also R-758 (8 mem_limit under the sum), R-759 (wger's open record rows), R-760 (vikunja healthcheck), R-761 (logo comment). R-755 note. Register 392 -> 399. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
61 lines
4.2 KiB
Markdown
61 lines
4.2 KiB
Markdown
# REPORT — the new-app checklist: in the catalog, a gate, piloted on wger (2026-10-01, evening)
|
||
|
||
Architecture read: `documentation/architecture/09-update-architecture.md` §3 (decisions 13, 22, 37, 42, 45–50, 61) and
|
||
§6.5. Evidence: `documentation/audits/new-app-checklist-2026-10-01/README.md` (the full write-up).
|
||
|
||
## The Part table
|
||
|
||
| part | result | changed from the brief, and why |
|
||
|---|---|---|
|
||
| A — checklist in the catalog | **done** — `NEW-APP-CHECKLIST.md` 60 rows / 10 groups; `onboarding/_TEMPLATE.md`; CLAUDE.md, REUSE.md §5, README point to it | 7 rows added, 16 sharpened, 9 wrong claims fixed (below). A `since` column per id (B's date rule) |
|
||
| B — the gate | **done** — `scripts/check-onboarding.py`, gate `onboarding` in `--fast` (hook + CI); 16 decoys, all judged right; 5 gate mutants each turn the suite red | the 53 are exempt **by name**, not "new since commit X": CI fetches at depth 1 and cannot diff (R-452). Evidence in `felhom.eu/` is checked where that repo sits beside the catalog (the hook) and printed as NOT CHECKED where it does not (CI). Rows inside an HTML comment do not count; an empty evidence directory does not count |
|
||
| C — wger pilot | **done** — both records filled; table below | the restore round trip (2.5) could not be measured: no per-app backup press exists outside an Update (R-648) — open, R-759 |
|
||
| D — gap page | **done** — `onboarding/EXISTING-APPS-GAPS.md` from `scripts/onboarding_gaps.py` | none |
|
||
|
||
**The date rule (B.1):** each checklist id carries `since`; a record answers every id with `since` ≤ its `opened:`.
|
||
`opened:` must be on or after 2026-10-01 and not in the future, so a later id binds only apps opened after it. Residual:
|
||
an author can date `opened:` back to the cut-off to skip ids added since — the gate cannot see that; review can.
|
||
|
||
## Claims in the draft that were wrong
|
||
|
||
3.3 "32 apps" (33 today) · 5.2 "romm OOM at +76 s (decision 22)" (no such figure anywhere; R-635) · 5.3 "gate" (no gate;
|
||
8 templates differ, R-758) · 6.2 "35 of 53 update at night" (not reproducible; 38 carry a ladder) · 8.3 logo address
|
||
(`.webp` vs the controller's `.svg`/`.png`, R-761) · 1.6's how could not show R-737 · 1.4's how has nothing to run for
|
||
an app at its newest tag · 0.4's packet capture is not in our kit · 2.6's R-756 is an unexplained venue case (R-442
|
||
added). Duplicates of gates now name the gate (1.1, 2.1, 3.3, 4.2, 6.2, 8.1, 9.4).
|
||
|
||
## The pilot — the four problems
|
||
|
||
| problem | caught by | the draft's how? |
|
||
|---|---|---|
|
||
| R-737 JWT key | 1.6, 3.9 (new), 0.7 | **missed** — web login worked |
|
||
| R-738 no migration | 1.4, 1.7 (new), 6.1 | **only if an update existed** — not for a new app |
|
||
| R-752 lock-out → everyone | 3.6 | **caught** |
|
||
| R-755 dev server | 1.5, 1.7 | **caught** |
|
||
|
||
**And three more, found by the new rows on the LIVE wger template (9202, drill catalog):** R-762 no CSS/JS and no
|
||
uploaded photo is ever served (404); R-763 a stranger signs up after the setup, and every anonymous dashboard visit
|
||
creates a guest account; R-764 mail goes to the console. Not fixed: this task changes no template.
|
||
|
||
## Gap page headline (of 53)
|
||
|
||
Fit 52 · images/DB 53 · storage 38 · accounts 39 · health 49 · resources 24 · updates 26 · mail — (6 mapped) · text 52.
|
||
|
||
## Rows
|
||
|
||
Opened **R-758** (8 `mem_limit` ≠ sum), **R-759** (wger's open record rows), **R-760** (vikunja healthcheck),
|
||
**R-761** (logo comment), **R-762** (P2, wger static + media), **R-763** (P2, wger strangers + guests), **R-764**
|
||
(wger mail). Narrowed: none. Note added to R-755 (same server question as R-762). Closed: none.
|
||
**Register 392 → 399.** STATUS updated.
|
||
|
||
## Live work and teardown
|
||
|
||
9202 only, drill catalog `e9f50b5` (repointed, then restored to live `6d72c09` — three controls each way). wger
|
||
installed and removed twice through the product. **Machine:** no wger container, volume or image left; sampler files
|
||
removed. **Host:** nothing. **Hub:** untouched. Secrets never printed; evidence scanned for their values.
|
||
|
||
## Gates
|
||
|
||
Catalog: `catalog_gates.py --fast` all OK (11 gates); `test_gate_decoys.py` 121 cases OK; `test_catalog_gates.py` OK;
|
||
`decoy_coverage_gate.py` 0 unaccounted. felhom.eu: `repo_gates.py --fast` — see the commit. No `--no-verify`.
|