Repository navigation
test: daemon-starting suites refuse on a developer machine; make verify-full-container - #643
Merged
Merged
Conversation
golimpio
force-pushed
the
atlas/plan-526-no-host-daemon-tests
branch
2 times, most recently
from
October 12, 2026 03:02
05c1c36 to
7d0d1b9
Compare
…fy-full-container (PLAN-526) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed on an unreadable process table (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ne's answer (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…r that lived through the suite (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ite (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ies (found by pure-antelope) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… child as a second daemon (PLAN-526) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…from a daemon by PF_FORKNOEXEC (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rge-tree -X, and runs as a non-root user (found by pure-antelope) On main the container run failed 7 tests for environmental reasons: no history or tags in the one-commit snapshot (TestLifecycleSaveCost, the v0.0.0 version in TestSmoke_ServeReplacementResumesByName), bookworm's git 2.39 lacking merge-tree -X, and root defeating the chmod-unwritable tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ll-container as it now is Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…s, for diagnosis (PLAN-526) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…error out of the log Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…pid (comm) header (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…hed results (PLAN-526) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- verify-full-container fails when its watcher sees no daemon at all (cmd/smoke always starts one), reads any non-count as an unread table, keeps the packaging loop's status from its last file, cleans its input dir on any exit, and runs docker in the background so its trap can fire; - a go/parser test pins separateenv.RequireForTestMain as the first statement of each daemon-starting TestMain, which CI and the container, both separate environments, could never notice missing; - docs: the verify message names cmd/smoke, the CHANGELOG no longer claims a pinned git, CONTRIBUTING says the verify image has no client CLIs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ll ends on the engine's gone answer (PLAN-526 review) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
golimpio
force-pushed
the
atlas/plan-526-no-host-daemon-tests
branch
from
October 12, 2026 12:09
b6c8a82 to
56a80d5
Compare
golimpio
approved these changes
Oct 12, 2026
golimpio
left a comment
Contributor
There was a problem hiding this comment.
Approved under the owner's delegation. Bar met at 56a80d5: independent agent review PASS (should-fixes folded), peer review by serene-antelope, all 10 CI checks green on this exact head, make verify-full-container green on this exact head (uncached; cmd/smoke ran 121 s; at most one plumb daemon; none left; container gone), outer-wrapper SIGTERM control PASS, mutation-tested guard wiring and census.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A developer machine should run exactly one plumb daemon: the one its sessions use. Two test suites start plumb daemons of their own:
cmd/smoke(theintegrationtag, so part ofmake verify-full);cmd/clientsmoke(theclients,clients_e2eandclients_conformancetags).Run on a developer machine, they put more daemons beside that one. A leak from a similar harness elsewhere left 64 of them running.
What
internal/separateenv(foundation) answers one question: may this process start a daemon of its own? It accepts exactly three kinds of evidence:GITHUB_ACTIONS=true, on any OS;/.dockerenvor/run/.containerenv;PLUMB_SEPARATE_ENV=vm.No
CI=true, no override, no case folding. An unreadable marker counts as absent. The test vectors are shared byte-for-byte with the Node copy of the rule in dsh-plumb-identity. This is a guard against accidental runs, not a security boundary.cmd/smokegets a newTestMain, andcmd/clientsmoke's existingTestMaingets the guard first. Both refuse with exit 2 before building or starting anything. An inventory of every test package confirms these are the only two that start a realplumb daemonprocess; everything else is in-process.make verify-full-container(scripts/verify-full-container.shplusbuild/docker/verify.Dockerfile) runsmake verify-fullin a Linux container with pinned Go, golangci-lint, gopls, pyright and the npm language servers.--init --rm.plumb daemonprocesses by exact argv every 200 ms during the suite, with at most one allowed, and watches for 30 s after the suite, when none may be left.Docs:
AGENTS.md,CONTRIBUTING.md,docs/contributing.md, themake verifysuccess message, the pre-commit hook text and the PR template all point atmake verify-full-container.make docker-integrationgains--init. There is a CHANGELOG entry.CI is unaffected: hosted runners set
GITHUB_ACTIONS=true.Verification
go test ./internal/separateenv/: 18 shared vectors, real-filesystem marker checks, and a child re-exec that must exit 2.go test -tags=integration ./cmd/smoke/and-tags=clients ./cmd/clientsmoke/both print the refusal and exit before building anything. The host daemon count is unchanged.make verify-full-container: see the follow-up comment.Part of PLAN-526 (plumb-ops). Reviewed with a peer agent.
🤖 Generated with Claude Code