Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
Scratch 9202 — the four held catalog fixes proven (2026-10-06 morning)
Venue: scratch guest 9202 on demo-hp, controller set BY HAND to 0.299.0 (was 0.296.0; allowed only there), pointed at the
drill catalog admin/app-catalog-drill = live catalog d955df1 + the five held commits (c5674ce), by tools/repoint.py
(09 §6.5: saved copy controller.yaml.pre-morning1006, cache removed, restart). Controls: demo-hp's 9201 cache and the
live catalog's main both stayed d955df1. Every request went through the SIMULATED tunnel: a curl container at
172.16.253.2 (cloudflared's address, the only one traefik trusts for forwarded headers) sending
X-Forwarded-For: <forged>, <visitor> — the stranger changed the forged leftmost entry on every try.
| App (row) | With the fix | Control: the line removed from the stack's compose, restart through the product |
|---|---|---|
| nextcloud (R-776) | 6 wrong WebDAV logins → occ security:bruteforce:attempts: visitor 6, every forged address 0, the tunnel 0, traefik 0 |
visitor 0 (traefik 0 too: this nextcloud keeps its throttle in Redis, so where the control's tries were counted was not found) |
| nextcloud (R-613) | status.php = {"installed":true,"maintenance":false,…}; the controller's state running with the new probe |
— |
| vikunja (R-776) | stranger: 10 × 403 then 429; household 200 | stranger the same; household 429 |
| zipline (R-776) | stranger: 7 × 400 then 429; household 200 | stranger the same; household 429 |
| kimai (R-776) | stranger: 5 × wrong then THROTTLED; household ok | stranger the same; household THROTTLED |
So with the fix each app throttles the VISITOR, a stranger cannot escape by forging the leftmost address, and the household is not locked out by a stranger; without it the household is.
Teardown: each app removed through the product (keep drive data, drop backups), its own folders under the scratch
drive removed by name (teardown.txt); controller.yaml restored byte-identical (cmp); the tools and password files
deleted in the guest. 9202's controller stays on 0.299.0 (newer than before; /etc/felhom-controller-image.pre-morning1006
holds the old line). The drill repo keeps the tested branch. Host demo-hp and the hub: nothing changed.
Said plainly: a log filter used during this work drops lines containing „perl" (locale noise) — it also dropped the
paperless-* containers from one docker ps, which made it look as if paperless started during the work. It did not:
it has run since 2026-10-06 00:30:09Z (docker inspect StartedAt), before any of this.