Release BK — stage-380 — 2-PR Docker hygiene + CI gate
Closes the source-only-test gap that v0.51.84 (#2470) opened. The :ro mount + chown -h ... {} + regression silently shipped through 5800+ green pytests — this release adds a real Docker runtime smoke gate that builds, mounts, and health-checks every compose variant on every PR.
Fixed
- #2490 by @nesquena-hermes — Multi-container Docker startup is no longer broken by the v0.51.84
:romount onhermes-agent-src.docker_init.bashnow stages the agent source into/tmp/hermes-agent-buildvia rsync (with a cp -a fallback) and runs theuv pip installagainst that writable copy, leaving the underlying:romount untouched. Caught by the new smoke gate (below) on its very first CI run against its own PR.
Infrastructure
- #2490 by @nesquena-hermes — Add a Docker runtime smoke gate (
.github/workflows/docker-smoke.yml) triggered on PRs touchingDockerfile,docker_init.bash,docker-compose*.yml,.dockerignore, or.env.docker.example. Validates every compose file parses, then matrix-runs single / two-container / three-container variants end-to-end against a real Docker daemon: rebuilds the local Dockerfile, brings the stack up with a 120s health window, probes/health, and greps startup logs for known-bad signatures (EROFS,Traceback,PermissionError,error_exit,!! ERROR,!! Exiting script, etc.). Per-run project names + EXIT-trap teardown for safe concurrency on self-hosted runners.
Added
- #2482 by @Michaelyklam (refs #2453) — Add a durable source/API boundary inventory for the WebUI's remaining Hermes Agent source dependencies: chat execution, runtime events, profiles, goals, slash/plugin commands, provider/auth/model catalogs, redaction parity, and imported Agent/Gateway sessions. The new RFC tracks the replacement API contracts needed before the source mount can be removed.
Changed
- #2482 by @Michaelyklam (refs #2453) — Make the multi-container source boundary more explicit: Docker docs and README link the boundary inventory, and
docker_init.bashemits a startup warning when the WebUI sees a writable agent-source mount instead of the default read-onlyhermes-agent-srcmount.
Verification
- pytest: 5894 passed, 6 skipped, 3 xpassed, 0 failed
- Docker runtime smoke: single ✓, two-container ✓, three-container ✓ (the gate that's being added validated itself)
- Opus advisor: SHIP — verified merged
docker_init.bashregion order (warning → staging copy → install → cleanup), CHANGELOG hygiene, BAD_PATTERNS includes the new error markers - CI: 3.11 / 3.12 / 3.13 all green plus 4 Docker smoke jobs all green
- Tag SHA verified against merge commit