da20722e76
gates / gates (push) Successful in 27s
INTERIM CHECKPOINT — evidence off the machine at the end of the phase that produced it (R-320), not at the end of the session. Phases 2-5 follow in a later commit. Phase 0, all three mechanisms proven with their controls: - the fleet floor to 0.261.0 with its declared MinAgent — both demo boxes in 13 s, the hub logging `managed floor SERVED ... from declared (golden 0.258.0)`. - a PRIVATE DRILL CATALOG (admin/app-catalog-drill), so that broken, dummy, cross-repo and engine-major edges can be measured without the live catalog ever carrying one. Positive control quoted, and two negative controls: the live catalog's main and both real boxes' caches unchanged. - a throwaway image store on the scratch guest, which is what makes an UNATTENDED HOLD measurable at all: an edge that PASSES the within-a-major test and still fails. CompareImageRefs was proven to order host:port/ references by RUNNING it (4 positive cases + 1 negative control), not by reading it. Phase 1: real within-a-major upstream edges walked on guest 9202 through the product's own guarded Update, each app seeded and read back through its OWN front door (R-156), with a per-edge verdict record in 09's shape. `inconclusive` is never collapsed into `failed`. TWO INSTRUMENT FIXES, both in this repo's own evidence code: - 00-api-recipe.md said the app page is /app/<n>; it is /apps/<n>, and every call it described 404s. Corrected, with the session-expiry note that cost the same time. - unattended-caller.py's follow() read update_phase/updating off the API ENVELOPE, so both were always None and EVERY followed update ran to its 900 s timeout and was then recorded `timeout` and never-press-again. Fixed before B1 relied on it. R-623. No controller, agent or hub code was written. The live catalog carries no broken reference. Gates: repo_gates.py --fast — all 15 OK, exit 0. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
65 lines
6.4 KiB
Plaintext
65 lines
6.4 KiB
Plaintext
PROBE SWEEP 2 — the .felhom.yml controller probe vs the compose's OWN healthcheck
|
|
catalog f5f6a152b513, 2026-09-21. Purely static: both live in the SAME template, so where
|
|
both exist and disagree on PORT or PATH, one of them is wrong — no runtime needed.
|
|
|
|
actualbudget felhom(port=['5006'],path=[]) compose(port=['5006'],path=['/']) -> agree
|
|
adventurelog felhom(port=['8000'],path=['/api/']) compose(port=['3000', '8000'],path=['/api/\\']) -> DISAGREE:PATH
|
|
audiobookshelf felhom(port=['80'],path=['/healthcheck']) compose(port=['80'],path=['/healthcheck']) -> agree
|
|
bentopdf felhom(port=['8080'],path=[]) compose(port=['8080'],path=[]) -> agree
|
|
bookstack felhom(port=['80'],path=[]) compose(port=['80'],path=[]) -> agree
|
|
calcom felhom(port=['3000'],path=['/api/auth/providers']) compose(port=['3000'],path=['/api/auth/providers']) -> agree
|
|
calibre-web felhom(port=['8083'],path=[]) compose(port=['8083'],path=[]) -> agree
|
|
claper felhom(port=['4000'],path=[]) compose(port=['4000'],path=[]) -> agree
|
|
code-server felhom(port=['8443'],path=['/healthz']) compose(port=['8443'],path=['/healthz']) -> agree
|
|
crafty-controller felhom(port=['8443'],path=[]) compose(port=None,path=None) -> compose has no http healthcheck
|
|
docmost felhom(port=['3000'],path=[]) compose(port=['3000'],path=['/']) -> agree
|
|
emby felhom(port=['8096'],path=['/emby/system/ping']) compose(port=['8096'],path=['/emby/system/ping']) -> agree
|
|
ghost felhom(port=['2368'],path=[]) compose(port=['2368'],path=['/']) -> agree
|
|
gitea felhom(port=['3000'],path=['/api/healthz']) compose(port=['3000'],path=['/api/healthz']) -> agree
|
|
glance felhom(port=['8080'],path=[]) compose(port=['8080'],path=[]) -> agree
|
|
gokapi felhom(port=['53842'],path=[]) compose(port=['53842'],path=[]) -> agree
|
|
grafana felhom(port=['3000'],path=['/api/health']) compose(port=['3000'],path=['/api/health']) -> agree
|
|
gramps-web felhom(port=['5000'],path=[]) compose(port=['5000'],path=[]) -> agree
|
|
home-assistant felhom(port=['8123'],path=['/api/']) compose(port=['8123'],path=['/manifest.json']) -> DISAGREE:PATH
|
|
homebox felhom(port=['7745'],path=['/api/v1/status']) compose(port=['7745'],path=['/api/v1/status']) -> agree
|
|
homepage felhom(port=['3000'],path=[]) compose(port=['3000'],path=[]) -> agree
|
|
immich felhom(port=['2283'],path=['/api/server/ping']) compose(port=['2283', '3003'],path=['/api/server/ping', '/ping']) -> agree
|
|
jellyfin felhom(port=['8096'],path=['/health']) compose(port=['8096'],path=['/health']) -> agree
|
|
kimai felhom(port=['8001'],path=[]) compose(port=['8001'],path=[]) -> agree
|
|
komga felhom(port=['25600'],path=['/actuator/health']) compose(port=['25600'],path=['/actuator/health']) -> agree
|
|
mealie felhom(port=['9000'],path=[]) compose(port=None,path=None) -> compose has no http healthcheck
|
|
n8n felhom(port=['5678'],path=['/healthz']) compose(port=['5678'],path=['/healthz']) -> agree
|
|
navidrome felhom(port=['4533'],path=['/ping']) compose(port=['4533'],path=['/ping']) -> agree
|
|
nextcloud felhom(port=['80'],path=['/status.php']) compose(port=['80'],path=['/status.php']) -> agree
|
|
onlyoffice felhom(port=['80'],path=['/healthcheck']) compose(port=['80'],path=['/healthcheck']) -> agree
|
|
opengist felhom(port=['6157'],path=['/healthcheck']) compose(port=['6157'],path=['/healthcheck']) -> agree
|
|
outline felhom(port=['3000'],path=['/_health']) compose(port=['3000'],path=['/_health']) -> agree
|
|
paperless-ngx felhom(port=['8000'],path=[]) compose(port=['8000'],path=[]) -> agree
|
|
papra felhom(port=['1221'],path=[]) compose(port=['1221'],path=[]) -> agree
|
|
plant-it felhom(port=['8080'],path=['/api/info']) compose(port=['8080'],path=['/api/info']) -> agree
|
|
plex felhom(port=['32400'],path=['/identity']) compose(port=['32400'],path=['/identity']) -> agree
|
|
privatebin felhom(port=['8080'],path=[]) compose(port=['8080'],path=[]) -> agree
|
|
radarr felhom(port=['7878'],path=['/ping']) compose(port=['7878'],path=['/ping']) -> agree
|
|
rallly felhom(port=['3000'],path=[]) compose(port=['3000'],path=[]) -> agree
|
|
recipe-importer felhom(port=['8000'],path=['/health']) compose(port=['8000'],path=['/health']) -> agree
|
|
romm felhom(port=['8080'],path=[]) compose(port=['8080'],path=['/']) -> agree
|
|
seerr felhom(port=['5055'],path=['/api/v1/status']) compose(port=['5055'],path=['/api/v1/status']) -> agree
|
|
sonarr felhom(port=['8989'],path=['/ping']) compose(port=['8989'],path=['/ping']) -> agree
|
|
sparkyfitness felhom(port=['80'],path=[]) compose(port=['3010', '80'],path=['/', '/api/health']) -> agree
|
|
tandoor felhom(port=['8080'],path=['/accounts/login/']) compose(port=['80'],path=['/accounts/login/']) -> DISAGREE:PORT
|
|
termix felhom(port=['8080'],path=[]) compose(port=['8080'],path=[]) -> agree
|
|
uptime-kuma felhom(port=['3001'],path=[]) compose(port=None,path=None) -> compose has no http healthcheck
|
|
vaultwarden felhom(port=['80'],path=['/alive']) compose(port=['80'],path=['/alive']) -> agree
|
|
vikunja felhom(port=['3456'],path=['/api/v1/info']) compose(port=None,path=None) -> compose has no http healthcheck
|
|
wanderer felhom(port=['3000'],path=[]) compose(port=['3000', '7700', '8090'],path=['/', '/health']) -> agree
|
|
wger felhom(port=['80'],path=[]) compose(port=['8000'],path=[]) -> DISAGREE:PORT
|
|
wishlist felhom(port=['3000'],path=[]) compose(port=['3000'],path=[]) -> agree
|
|
zipline felhom(port=['3000'],path=['/api/health']) compose(port=['3000'],path=['/api/healthcheck']) -> DISAGREE:PATH
|
|
|
|
DISAGREEMENTS: 5
|
|
adventurelog DISAGREE:PATH felhom=['8000'],['/api/'] compose=['3000', '8000'],['/api/\\']
|
|
home-assistant DISAGREE:PATH felhom=['8123'],['/api/'] compose=['8123'],['/manifest.json']
|
|
tandoor DISAGREE:PORT felhom=['8080'],['/accounts/login/'] compose=['80'],['/accounts/login/']
|
|
wger DISAGREE:PORT felhom=['80'],[] compose=['8000'],[]
|
|
zipline DISAGREE:PATH felhom=['3000'],['/api/health'] compose=['3000'],['/api/healthcheck']
|