From 585a7cba22cf9391b45c4415ed4b37e96ba9acc0 Mon Sep 17 00:00:00 2001 From: kisfenyo Date: Thu, 24 Sep 2026 00:23:42 +0200 Subject: [PATCH] CONTEXT + REPORT: the night shift of 2026-09-23 (test record, 12 steps) Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS --- CONTEXT.md | 5 +++++ REPORT.md | 30 +++++++++++++++--------------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/CONTEXT.md b/CONTEXT.md index 194e489..fd58c09 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -2,6 +2,11 @@ > Created with the REUSE.md rollout (2026-07-03). History: `CHANGELOG.md`; format spec: `README.md`. +- **2026-09-24 (night 2026-09-23) — THE TEST RECORD.** An `image:` move needs a proven `update_ladder:` entry + (`scripts/ladder.py`; gates `check-test-record.py` + `check-test-record-move.py`; the only writer + `upgrade-test.py --write-ladder`). 21 older moves backfilled; 12 steps published tonight. Harness v3: box fixtures + on the bench (`upgrade_boxport.py`), anon memory (`09` decision 22), `files_may_change`. Open: R-652, R-653, + R-655 (adventurelog), R-656; the box does not read the ladder yet (`09` §6.4 part 5). - **2026-07-12 — `:latest` banned from catalog — pin rule recorded.** 5 templates pinned (bentopdf v2.8.6, calibre-web v4.0.6 = running digest on 9201, papra 26.6.1-rootless, recipe-importer v0.9.11, termix 2.5.0; all digest-equal to that day's `:latest` — no-op for running apps). Standing rule in CLAUDE.md + gate `scripts/check-image-pins.py` (run after any compose change). Deployed apps pin to their RUNNING digest; pin ≠ upgrade. - **2026-07-03 — CLAUDE.md expanded** (repo purpose, push-to-main deploy contract, pointers); still intentionally light. - **2026-07-03 — `REUSE.md` exists at the repo root** (catalog conventions, healthcheck families, canonical example app = paperless-ngx, traps); maintenance rule active: update it in the same commit that changes a catalog-wide convention. diff --git a/REPORT.md b/REPORT.md index ee8ee0e..5a2f187 100644 --- a/REPORT.md +++ b/REPORT.md @@ -1,22 +1,22 @@ -# REPORT — the test record and its gate (night 2026-09-23, Part B) +# REPORT — the test record, and 12 steps published with it (night shift 2026-09-23) -`09-update-architecture.md` §3 decision 13, §6.4 part 4 and the catalog half of part 6. Night record: -`felhom.eu/documentation/audits/DRILL-night-2026-09-23.md`; evidence `…/night-2026-09-23/B*`. +`09-update-architecture.md` §3 decisions 13, 21–23; §6.4 part 4 and the catalog half of part 6. Night record: +`felhom.eu/documentation/audits/DRILL-night-2026-09-23.md`. ## Not done, or changed -- The brief's "`check-image-resolvable.py` already resolves digests" is only half true: it asks `docker - manifest inspect` whether a ref EXISTS and discards the digest. The digest comes from the new - `image_digest.py`, whose answer equals Docker's `RepoDigests` on a box (positive control). -- The move gate uses the network in the hook — for moved refs only. Decided by CC unattended (it is the - only way a push-time "digest matches the registry now" can be asked); operator may reverse. -- Backfilled digests are TODAY's registry answer, not a measurement of the image that was tested. -- Step definitions for intermediate steps (`steps/.yml`, part 5) are not written — no app has two - steps yet. +- adventurelog v0.13.0 NOT moved (R-655): our frontend healthcheck override names `/nodejs/bin/node`, gone in + v0.13.0; with it dropped, the backend's start-time `download-countries` crash-looped on a cut-short download. +- gitea inconclusive (installer, R-624). Step files `steps/.yml` (part 5) not written. +- `check-image-resolvable.py` does not keep digests; `image_digest.py` was written for that. ## What shipped -Format + spike, two gates (16 decoys, 3 red-proofs), the writer (5 tests), harness v3 (box fixtures on -the bench; files_may_change), `image_digest.py`, the backfill (21 proven). +- Gates + format + writer + backfill: `6db08a5` (CI 920). R-612 wishlist 512M, R-613 uptime-kuma + `UPTIME_KUMA_DB_TYPE=sqlite`: `a5a729a`. Harness fixes: `1263773`, nextcloud fixture wait. +- Published with records: romm 5.3.1 (`7ff4e68`) and mariadb 11.8 (`431cdec`), ghost 6.65.0 (`e6afab9`), + wishlist v0.67.1 + opengist 1.15 (`657c83f`), navidrome 0.64.1 (`76cc1f5`), komga 1.27.1 + 768M (`fc1becc`), + n8n 2.41.1 (`04b63db`), emby 4.11.0.3 (`8d573ad`), kimai mariadb 11.8 (`376b2c3`), immich-ML v3.2.2 + (`b82b7c6`), nextcloud 34.0.4 (`5d49a11`, files_may_change). ## Gates -`catalog_gates.py --fast` all OK; `test_gate_decoys.py` 80 cases OK; `test_ladder_writer.py` OK; -`test_catalog_gates.py` OK after this commit (its shallow-clone case needs the new scripts committed). +`catalog_gates.py --fast` OK on every push (the move gate judged each move on the registry); decoys 80 OK; +`test_ladder_writer.py` OK; `test_catalog_gates.py` OK (its table test had been stale since two gates ago).