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
53 lines
2.6 KiB
Plaintext
53 lines
2.6 KiB
Plaintext
=== 1. registry:2 on 127.0.0.1:5000
|
|
registry /v2/ http=200
|
|
=== 2. GOOD tag 1.0.0 = the real glance image retagged
|
|
localhost:5000/drill/glance:1.0.0
|
|
=== 3. BAD tag 1.0.1 = starts, stays up, never serves
|
|
sha256:91c3018c4706e1061b590899adcdb4d92063f82dacf7d662c77472bb878d1f4b
|
|
localhost:5000/drill/glance:1.0.1
|
|
=== 4. tags in the store (1.0.2 deliberately ABSENT for the pull-fail leg)
|
|
{"name":"drill/glance","tags":["1.0.1","1.0.0"]}
|
|
|
|
manifest 1.0.2 (must be 404): 404
|
|
zz_drill_tmp_test.go:23: OK CompareImageRefs("localhost:5000/drill/glance:1.0.0","localhost:5000/drill/glance:1.0.1") = (-1,true)
|
|
zz_drill_tmp_test.go:23: OK CompareImageRefs("localhost:5000/drill/glance:1.0.1","localhost:5000/drill/glance:1.0.0") = (1,true)
|
|
zz_drill_tmp_test.go:23: OK CompareImageRefs("localhost:5000/drill/glance:1.0.0","localhost:5000/drill/glance:1.0.0") = (0,true)
|
|
zz_drill_tmp_test.go:23: OK CompareImageRefs("localhost:5000/drill/glance:1.0.0","localhost:5000/drill/glance:1.0.2") = (-1,true)
|
|
zz_drill_tmp_test.go:23: OK CompareImageRefs("localhost:5000/drill/glance:1.0.0","glanceapp/glance:1.0.1") = (0,false)
|
|
--- PASS: TestDrillNightCompareLocalRegistryRefs (0.00s)
|
|
PASS
|
|
ok gitea.dooplex.hu/admin/felhom-controller/internal/stacks 0.007s
|
|
=== drill/pdf:1.0.0 = the real bentopdf image retagged (for the pull-fail leg B2)
|
|
localhost:5000/drill/pdf:1.0.0
|
|
=== drill/glance:1.0.2 = the FIXED next version (for B6: the way out forwards)
|
|
localhost:5000/drill/glance:1.0.2
|
|
=== store contents now
|
|
drill/glance: {"name":"drill/glance","tags":["1.0.1","1.0.2","1.0.0"]}
|
|
|
|
drill/pdf: {"name":"drill/pdf","tags":["1.0.0"]}
|
|
|
|
=== drill/pdf:1.0.1 must be ABSENT (the pull-fail tag)
|
|
manifest drill/pdf:1.0.1 = 404 (must be 404)
|
|
localhost:5000/drill/paste:2.0.0
|
|
localhost:5000/drill/paste:2.0.1
|
|
drill/paste 2.0.0 + 2.0.1 <- privatebin/pdo:2.0.6
|
|
localhost:5000/drill/pdf:2.0.0
|
|
localhost:5000/drill/pdf:2.0.1
|
|
drill/pdf 2.0.0 + 2.0.1 <- ghcr.io/alam00000/bentopdf:v2.8.6
|
|
localhost:5000/drill/wishes:2.0.0
|
|
localhost:5000/drill/wishes:2.0.1
|
|
drill/wishes 2.0.0 + 2.0.1 <- ghcr.io/cmintey/wishlist:v0.67.0
|
|
localhost:5000/drill/status:2.0.0
|
|
localhost:5000/drill/status:2.0.1
|
|
drill/status 2.0.0 + 2.0.1 <- louislam/uptime-kuma:2.5.1
|
|
localhost:5000/drill/gist:2.0.0
|
|
localhost:5000/drill/gist:2.0.1
|
|
drill/gist 2.0.0 + 2.0.1 <- ghcr.io/thomiceli/opengist:1.13
|
|
=== store now:
|
|
{"repositories":["drill/gist","drill/glance","drill/paste","drill/pdf","drill/status","drill/wishes"]}
|
|
|
|
=== drill/pdf tags (1.0.1 must STILL be absent for B2):
|
|
{"name":"drill/pdf","tags":["2.0.0","2.0.1","1.0.0"]}
|
|
|
|
drill/pdf:1.0.1 = 404 (must be 404)
|