date: 2026-07-24 procedure: adopting-updates node: papermc-despawned-items outcome: completed hub_version: 1.5.1 hub_commit: a6d7e68
Process Report — adopting-updates, 2026-07-24
A full, honest account of running a fairyfox system procedure. The point is to improve the system — so say what was rough even if the run succeeded. Standard:
notes/reference/process-reports.md.
Outcome in one line
Adopted the hub standards span 0.20.2 → 1.5.1 in full (3 releases: 0.21.0 / 1.4.0 / 1.5.0), including a real, validated Docker local-first adoption that fixed a previously written-off Testcontainers↔Docker incompat; paired full compliance pass followed.
What was done
- Refreshed the git-ignored hub mirror (
697bc5c → a6d7e68, clean fast-forward). Hub VERSION1.5.1; last-adopted anchor0.20.2from the newest prior report. - Scoped the diff off the new
hub/standards/CHANGELOG.md(not a file diff) across the span — 0.21.0 (checklists-are-contracts, mandate-ledger), 1.4.0 (complete/phase-by-default, 20-badge set, docs-site enforcement), 1.5.0 (Docker). Readauthorizations.yml: the standingadopt-standards-by-defaultgrant pre-authorises the whole set → adopt-by-default, skip the confirmation pause, keep the verification floor. - Applied: refreshed 17 mirrored reference standards; vendored 5 new standards +
VERIFY-INDEX; added the Docker mesh rule to CLAUDE.md. Verified via
git diffthat no project-specific content was clobbered. - Docker (1.5.0's headline, and the one genuinely new capability): confirmed Docker
29.5.3 works locally, vendored
Dockerfile/compose.yaml/.dockerignore, and validated a full green./gradlew build(12m33s) in-container with the Testcontainers MariaDB tests actually executing (3/3, previously skipped on the Windows host). - Recorded: changelog, session log, this report, manifest rows; ran the paired compliance pass.
Deviation from the runbook: the manifest's per-row Verify was done in the paired compliance pass (the owner explicitly ordered "updates in-full THEN full compliance"), not inline in adopt step 3a — the two were run back-to-back as one session, one combined record.
What went well
- The standards CHANGELOG.md (new since our last anchor) is exactly the "what changed upstream" signal the runbook wants — reading it beat any file diff, and its per-release grouping mapped cleanly onto adopt decisions.
- The
adopt-standards-by-defaultledger entry removed all ambiguity about whether to wait — the whole span was pre-authorised. - Most reference copies are verbatim canonical with no real local divergence, so a
wholesale refresh +
git diffreview was safe and fast. - Much of 0.21.0/1.4.0 was already enshrined in CLAUDE.md (checklists, mandate-ledger, phase-by-default, ship contract, full-CI gate, 20-badge README) — the adoption was mostly "file the reference copy + manifest row," confirming the node had kept pace informally.
What went wrong / friction
- Docker validation vs. the agent harness. The MCP PowerShell tool kills the whole
process tree at ~125 s, and even
Start-Process-detached children were reaped when the launching call timed out. A 12-minute./gradlew buildis impossible to run foreground. The working pattern wasdocker compose up -d(a dockerd-owned container that outlives the CLI/session), then polldocker inspect+docker logs. Worth capturing in thedockeroragent-toolingstandard as the canonical way to run a long containerised task from an agent with a short per-call timeout. - DooD networking gotcha is real and undocumented in
docker.md: a Testcontainers container publishes its port on the host daemon, sogetHost()returnslocalhost(= the build container, not the host). The fix (extra_hosts: host.docker.internal:host-gateway+TESTCONTAINERS_HOST_OVERRIDE=host.docker.internal) is non-obvious and cost a design pass to get right.docker.md's "Windows↔Linux gotchas" list mentions CRLF/mounts/platform pins but not the Testcontainers-over-DooD host-override — the single most likely thing to bite a JVM node adopting this standard. - Version-anchor optics. The hub jumped 0.x → 1.5.x during the span; the standards CHANGELOG "starts at 0.21.0" while the root VERSION reads 1.5.1, which momentarily looks like a mismatch. It reconciles (the CHANGELOG spans the releases), but a one-line note in the CHANGELOG header tying its top entry to the root VERSION would remove the double-take.
Suggestions / feedback
docker.md: add a short "running a long build in a container from an agent" note (dockerd-ownedup -d+ poll, not a foreground/runtied to a short-timeout shell), and add the Testcontainers-over-DooD host-override to the Windows↔Linux gotchas list with the exacthost-gateway+TESTCONTAINERS_HOST_OVERRIDErecipe.CHANGELOG.mdheader: state "top entry corresponds to root VERSION X.Y.Z" so an adopter can sanity-check the anchor at a glance.
Environment
Windows dev box, PowerShell via Windows-MCP (agent-tooling mesh rule; Cowork bash sandbox
avoided). JVM/Gradle/Kotlin Paper plugin (Gradle 9.6.1 wrapper, Kotlin 2.4.0, Paper API
1.21.11, Java 21). Docker Desktop 29.5.3 (Linux containers, compose v5.1.4). Arrived on dev,
clean, up to date with origin, mid-flight on an unreleased v1.5.0. Node already had the
express-auth machinery and most 0.21.0/1.4.0 behaviours in CLAUDE.md.