From 9090c7fa87af5057c5840a8d712ad089d98ed490 Mon Sep 17 00:00:00 2001 From: itswl Date: Tue, 27 Oct 2026 17:09:26 +0800 Subject: [PATCH] =?UTF-8?q?release:=200.9.0=20=E2=80=94=20the=20quickstart?= =?UTF-8?q?=20points=20at=20the=20loop=20whose=20recovery=20says=20what=20?= =?UTF-8?q?it=20could=20not=20establish?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The six image lines move from 0.8.1 to 0.9.0, pinned by the OCI index digests GHCR serves for the tags, read anonymously after the release run for the tag finished green on every job; :latest carries the same four. Nothing in 0.9.0 is something this file depends on, so the comment keeps saying it needs 0.8.0 or newer and points at the newest. The only compose key added since 0.8.1 is the lease length, left at its default here. Run the way a stranger does, from an empty directory: pulled by digest, boards up, the demo's nine steps with the press executed and demo exit 0, down -v. Read back from the running images: the investigator's posture is no-credentials with the metadata question asked and answered no; the probe is in the image; the pipe's lease is 120 seconds. Rollback: re-pin to the 0.8.1 digests; 0.8.1 ignores the pending_signatures table. --- docker-compose.quickstart.yml | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/docker-compose.quickstart.yml b/docker-compose.quickstart.yml index 511b4c6..346aa61 100644 --- a/docker-compose.quickstart.yml +++ b/docker-compose.quickstart.yml @@ -46,14 +46,15 @@ # and the opt-in dollar ceiling set below, and whose investigator refuses an # unsigned approve, which is why the pipe and the investigator both carry the # action secret. This file needs all of that, so it cannot point at anything -# older than 0.8.0; it points at 0.8.1, the same loop with the CodeQL findings -# closed and alarms that try again, because a stranger should start on the newest. +# older than 0.8.0; it points at 0.9.0, the same loop with a recovery that says +# what it could not establish and a posture measured rather than assumed, +# because a stranger should start on the newest. name: hookstack services: hookrelay: - image: ghcr.io/itswl/hookrelay:0.8.1@sha256:44962ab9486c7da34f8c40f790c9bf005e839d0be78e57b671b52ca007c671ff + image: ghcr.io/itswl/hookrelay:0.9.0@sha256:b3563f5a21fc1519c38d395fa3beb3e3712bd8d8bc3453889be0577fca6eef6c container_name: hs-hookrelay restart: unless-stopped environment: @@ -101,7 +102,7 @@ services: - sink hookjudge: - image: ghcr.io/itswl/hookjudge:0.8.1@sha256:c7fe6a8dbb3fdaf80e2f92953e615fc91bcde4bae808c1253fef386543931737 + image: ghcr.io/itswl/hookjudge:0.9.0@sha256:178d4772f7b03d351960b0809aee8c46d56ec411a0faa5fa4deecb47bfea0124 container_name: hs-hookjudge restart: unless-stopped environment: @@ -134,7 +135,7 @@ services: # operator would actually have received. It runs from the pipe's own image # because that image now carries it — one fewer thing to pull, and no mount. sink: - image: ghcr.io/itswl/hookrelay:0.8.1@sha256:44962ab9486c7da34f8c40f790c9bf005e839d0be78e57b671b52ca007c671ff + image: ghcr.io/itswl/hookrelay:0.9.0@sha256:b3563f5a21fc1519c38d395fa3beb3e3712bd8d8bc3453889be0577fca6eef6c container_name: hs-sink restart: unless-stopped command: ["python", "-u", "/app/examples/sink.py"] @@ -147,7 +148,7 @@ services: # exactly the hop a real deployment makes to a custom bot's incoming URL. # `ops-feishu` in the baked config is `type: bridge` and points here. lark-bridge: - image: ghcr.io/itswl/lark-bridge:0.8.1@sha256:463abefc7b5d9ee10429f01ec49c2d2464b567c1cd4d0c21aa0cbf4bf52d6396 + image: ghcr.io/itswl/lark-bridge:0.9.0@sha256:c06ba60ae25c5d9484118f187a0ea6502bdf9c2d2cda51f2afd1e26c0ade9a31 container_name: hs-lark-bridge restart: unless-stopped environment: @@ -165,7 +166,7 @@ services: # not a model: it reports itself as `stub-4o-mini`. Point the judge's AI vars # at a real provider and this stops being used. stub-ai: - image: ghcr.io/itswl/hookjudge:0.8.1@sha256:c7fe6a8dbb3fdaf80e2f92953e615fc91bcde4bae808c1253fef386543931737 + image: ghcr.io/itswl/hookjudge:0.9.0@sha256:178d4772f7b03d351960b0809aee8c46d56ec411a0faa5fa4deecb47bfea0124 container_name: hs-stub-ai restart: unless-stopped command: ["python", "-u", "/app/examples/stub_ai.py"] @@ -177,7 +178,7 @@ services: # pipe to the same channels; the disk alert in demo.sh also proposes a # two-step procedure the approve button runs against the allowlist below. hookprobe: - image: ghcr.io/itswl/hookprobe:0.8.1@sha256:6f14234326a85962306bf04650c86bebe1216748f0f6a54df91e3555cebf3c7d + image: ghcr.io/itswl/hookprobe:0.9.0@sha256:850241ef6acd0ec13f46ce2b9f5b7a49bd4ea9e4785f3d0c915f792dd4c1f8e1 container_name: hs-hookprobe restart: unless-stopped # The agent executes arbitrary bash, so the container is bounded even in a