Historical 2026-08-06 evidence of a guild tracker becoming a player picker, in-game objective, and human-review evidence; current authority is comfy-quest.
Split browser authoring, compact gameplay runtime, and Quest Lab rehearsal around one certified file contract; OMEN listen-host mutation passed while the identical i5 peer failed closed.
Curation is now measured instead of vibes: a depth veto catches camera-against-wall frames with zero keeper loss, and the notebook lets the operator move thresholds and watch winners reorder
Cut a Gateway-only release (image m31-questlab-20260808-r1, still admitting the frozen mod m30-rolecontrol-20260723-r1) and rehearsed it locally rather than on the public origin. The route answered 200 where production 404s, X-QuestLab-Sha256 equalled the mounted file's digest -- proving it serves the mount and not the image copy -- and editing the mounted file changed the served digest with no restart, proving the mtime re-read. The onboarding, lab_target step and the hooked-vs-bound note all served. Two recreate traps recorded in the Publish-WorkbenchAssets header: the app reads a plain Urls config key that beats ASPNETCORE_URLS, and without it the host binds localhost inside the container -- status Up, Now listening in the log, no errors, and every request through the published port returns an empty reply. And the Postgres connection errors on startup are normal for this container, which carries no connection string and serves the static pages anyway. Promote-GatewayImage.ps1 cannot ship this: it targets comfy-p7 with a compose root, an environment file and a container name that do not exist on the AM4 host, and that VM is terminated. Delivery to lj-workbench has no tooling yet.
Chasing the container env var for the tome mount turned up three things. (1) /questlab returns 404 on the public origin: the running image is lumberjacks-gateway:m31-workbench-20260729-r2, pinned since 2026-08-01, and predates the route entirely -- so publishing questlab.html to the mount fixes nothing, and the earlier claim that this needed only an env var and a container recreate was wrong. It needs a Gateway image cut and promote. (2) The catalog's nav has been linking to that 404 since the questlab nav entry shipped; adding it to NAV_ROUTES today caught it, and because verify-live is Gate 4 the publish script now fails closed rather than shipping a page that links to a 404. (3) docker inspect shows lj-workbench carries no com.docker.compose.* labels, and no compose file exists in baseline, lumberjacks or isolate -- it was started by a bare docker run, so the only definition of a live public container was the container itself. Full spec captured in the Publish-WorkbenchAssets.ps1 header.
First in-game run of the quest lane. All four combat seams fired in one fight (OnDeath, Damage, RPC_Damage, Stagger), so combat joins harvest as witnessed. Startup logged '2 quests loaded (1 armed)' and the seeded quest completed twice on Greyling kills, with the Quests tab reporting fired-2-times and a live cooldown. The creature-naming fix showed correct: console printed $enemy_greyling with no prefab name beside it, because the token already contains Greyling. FOUND AND FIXED: the last-kill diagnostic read 'matched nothing' for a kill that matched fine but was on cooldown -- OnCreatureKilled returns empty for both cases -- which sends a creator to edit a target that was never wrong, the exact wrong-place-to-look failure the line exists to prevent. It now names the quest and the seconds remaining, deciding would-this-have-matched by dry-firing the real matcher.
The creature-naming rule -- the load-bearing half of the 08-07 bug fix -- was pure string work living beside Character and HitData, so the only way to check it was to launch Valheim and kill something. Extracted to Core/LabCreatureNaming.cs, Unity-free and linked into ComfyNetworkSense.Tests; LabKillWatch and LabObserve.Clean now delegate to it so there is one home for the rule. The Greydwarf_Elite vs $enemy_greydwarfbrute case is a test rather than a ritual. Also tested LabQuestSeed.EnsureSeeded, whose never-overwrite guarantee protects a creator's authored quests from a re-run of lab_setup and had zero coverage -- including that the check is keyed on any *.json, so a renamed draft also suppresses the seed.