Test hygiene: commit.test exit wait and test-task Docker skip #1534
Closed
opened 2026-10-10 03:09:47 +00:00 by jarvis
·
5 comments
No Branch/Tag Specified
next
refactor
feat/1311-credential-seat-store
fix/1257-adopt-draft-transition
docs/prd-rev1-ratification
r4-helper-port
docs/containerization-plan
feat/m4-4b-enrollment-command
feat/m4-4a-enrollment-schema
feat/m4-4-0-enrollment-design
feat/m4-3a-p1-stop-mission-task-status-writes
docs/m4-3a0-p0-map-currency
docs/c2-amendment1-company-crud
config/minimal-subset
feat/m4-1b-ii-hierarchy-commands
mosaic-cli-p1-wrappers
mosaic-cli-p1-dispatch
docs/ruling-4b-company-visibility
feat/m4-1b-hierarchy-gateway
feat/m4-1a-hierarchy-schema
feat/p6-e2e-ci-gate
feat/p5-spa-cutover
fix/1451-appservice-dockerfile-scripts
contract/onboarding-wizard
contract/custody-schema
contract/api-artifacts
fix/appservice-dockerfile-scripts
docs/t78-cli-capability-migration
contract/rollup-projection
contract/hierarchy-schema
fix/invariant-r-version-probe-retry
contract/mode-conversion
contract/tool-gateway-mapping
contract/rbac-grants
contract/identity-lifecycle
chore/s1-docs-hygiene
docs/ri-050-release-evidence
feat/webui-p4-2-settings-admin
fix/bootstrap-race
fix/teams-enumeration-scope
fix/1407-next-image-parity
docs/prd-north-star-rewrite
rescue/ms-gate-001-gatekeeper
fix/1394-recover-token-headless
fix/1390-uninstall-headless
fix/1403-n1n2-followup
fix/1391-validationpipe-boot-check
archive/salvage-20260825/wp5b-consumer-compat
wp5b-consumer-compat-2
archive/salvage-20260825/t63-fix-2648
archive/salvage-20260825/t63-fix-1389
archive/salvage-20260825/i1380ff-fix
i1380-guard
fix/send-message-exact-target-pin
t51p2wp0b
archive/ms24-fork
fix/ci-queue-wait-no-ci-merge-path
fix/credentials-gitea-seat-slots
feat/onboarding-scripts-framework
pr-1367
fix/1357-issue-view-comments
fix/1356-tea-login-fail-closed
fix/1362-harness-aware-delivery-confirm
fix/gitea-guessed-login-credential
docs/w4-document-contract
fix/d29-lease-revoke-noop
peggy/agent-send-unverified-label
fix/pr-merge-fork-ci-status
riv001-clean
docs/1216-trunk-parameterization
fix/1256-fleet-pane-path-node
fix/1017-enumeration-guard-population
fix/1182-fail-closed-launch
fix/1327-setuppath-idempotency
merge/main-into-next
ci/push-ci-comment-model
ci/pin-ci-base-image
fix/ci-queue-wait-no-status
fred/code-review-pinned-tool-rules
fred/guides-seat-identity-fleet-comms
fred/credential-fail-closed-seat-slots
fix/fleet-greenfield-blockers
feat/ri-050-qr-evaluator
archive/salvage-20260825/zane/doctor-greenfield-hint
archive/salvage-20260825/fix/ri-050-registry-secrets
archive/salvage-20260825/docs/ri-050-release-evidence
docs/ri-050-forge-docs-fastfollow
fix/ri-050-registry-secrets
test/ri-050-publish-gate-negative
archive/salvage-20260825/fix/ri-050-verify-pglite-path
fix/ri-050-verify-pglite-path
docs/ri-050-qr-probe-inventory
archive/salvage-20260825/zane/doctor-brain-home
feat/ri-050-web-stale-safety
archive/salvage-20260825/pr-1298
archive/salvage-20260825/zane/mosaic-home-support
docs/ri-050-mission-bootstrap
fix/ri-050-forge-fail-closed
feat/ri-050-publish-gate
fleet/continuation-record-2026-08-17
feat/ri-050-prd-authority
fix/ri-050-macp-fail-closed
fix/1280-identity-first-resolution
feat/w-f4-store
fix/1264-fleet-unattended-first-start
fix/1269-ci-chain-unblock
fix/1256-fleet-runtime-preflight
fix/1257-e7-draft-transition
fix/1240-fleet-transport-check
fix/1017-wire-start-agent-session
e2e-compose
fix/1241-launch-failure-visible
fix/1237-fleet-v2-dispatch
fix/1236-installer-dir-modes
fix/installer-path-and-node
feat/wf-fleet-mvp
fix/installer-provisions-node
fix/lease-test-env-isolation
release/0.0.50-integration
feat/wf5-main-merge
feat/wf5-securestorage
feat/1216-trunk-resolver
docs/1214-branch-process
docs/ia-merge-current
fix/869-lease-probe-timeout
main
feat/workspace-hygiene-tool-enforcement
feat/1080-pr-edit
fix/1179-required-security-di
feat/p3-slice0-task5-chat-runtime-router-shaggy
feat/p3-slice0-task5-chat-runtime-router
feat/wf1-composition
feat/p3-slice0-task4-web-catalog-selection
feat/lease-promotion-and-harness-isolation
ci/provision-pi-runtime
feat/p3-slice0-task3-catalog-selection
feat/p3-slice0-task2-harness-registry
adopt/965-mos-ste-writing-standard
fix/991-comment-url-scheme-normalise
feat/wf2-bundle-migration
feat/wf4-plugin-acquisition
feat/wf5-refresh-safety
fix/1145-coord-di-compiled-boot
feat/p3-slice0-task1-harness-contracts
docs/webui-phase-p-structure
feat/1150-pi-goal-extension
feat/webui-p3-chat
fix/1146-ci-queue-purpose
fix/1138-conditional-federation
feat/webui-p2-data-auth
fix/gateway-runner-image
feat/webui-p1-vite-skeleton
fix/break-c-hooks-and-web-image
docs/webui-fleet-claude-bridge-plan
fix/wizard-gateway-failure
fix/next-node-gate
fix/mosaic-init-rce
greenfield/fomo-lin
fix/1099-pipefail-wake
fix/1099-pipefail-tests
fix/1099-pipefail-sweep
fix/framework-shell-portability
fix/1043-pane-git-identity
fix/1081-issue-close-silent-comment-failure
fix/1090-enrollment-wallclock-tolerance
feat/1082-tea-stale-token-diagnostic
fix/detect-platform-silent-128-outside-repo
feat/1050-install-state-machine-red-fixture
fix/pr-merge-message-field
feat/1051-mosaic-brain-installer
feat/1045-mosaic-cred
remediation/state
fix/1056-upgrade-rollback-control-race
fix/1019-ci-queue-timeout-harness
feat/rm-02-gate-registry
fix/rm-01-reproducible-checkout
remediation/mission-setup
fix/hygiene-inert-format-gate
fix/1019-queue-guard-stdin
feat/mos-ste-writing-standard
fix/1017-enumeration-guard
fix/1007-suite-hermeticity
feat/push-guard-null-case-verification
feat/wake-preimage-provenance
mos-comms-live
docs/heartbeat-framework-layering-ms-lead
feat/869-c4-version-coupling
feat/869-c2-install-ordering-guard
feat/869-c5-doctor-activation-check
feat/per-agent-gitea-identity
fix/875-belongs-case-insensitive-slug
fix/ci-queue-wait-404-branch-absent
feat/869-c1-activation-probe
feat/869-c3-broker-supervisor
fix/865-tea-cli-comment-invocation
feat/glpi-skills
fix/860-deflake-mutator-lease-gate
fix/850-detect-platform-port-normalization
fix/856-worktree-deps-preflight
fix/835-pr-review-approve-reject-comment-flag
fix/848-truthful-evidence
fix/812-pr-review-comment
fix/849-recovery-runtime-fixture-race
docs/758-ledger-m5-001-sync
feat/834-tc-server-side-doc
feat/833-constrained-recovery-command
feat/827-gate0-probe
governance/gate0-probe3-amendment
fix/795-codex-pr-diff
fix/795-ci-base-jq
fix/795-ci-base-git
feat/791-pr3-fleet-regen
feat/791-pr2-snapshot-restore
fix/807-glpi-206
fix/808-agent-send-false-sender
feat/791-upgrade-config-protection
feat/790-mosaic-yolo-claudex-pr2
feat/790-mosaic-yolo-claudex
feat/758-v1-v2-migrator
fix/766-exact-fleet-comms
test/758-reconciler-lifecycle-gates
docs/771-kbn101-db-role-split
test/758-example-profile-dispositions
feat/758-shared-role-resolution
feat/mos-logical-identity-fencing
feat/769-kbn100-unified-schema
docs/753-kbn010-threat-gate
feat/758-roster-v2-compiler
feat/756-official-discord-plugin
fix/mos-option2-qualification-format
docs/issue-758-m0
docs/mos-option2-qualification
mos-comms
feat/tess-interaction-agent
fix/tess-docs-format
draft/mosaic-platform-prd
fix/installer-provider-gate-and-local-gateway-redis
release/mosaic-cli-0.0.37
feat/framework-constitution-alpha
fix/git-wrapper-repo-detection
fix/woodpecker-wrapper-legacy-mosaic
fix/t-a292e96f-gitea-pr-metadata
fix/gitea-pr-metadata-login-t-a292e96f
fix/t_a292e96f-pr-metadata-gitea
fix/t_3a368a52-gitea-usc-login
fix/bootstrap-hotfix
fix/populate-known-packages-list
fix/idempotent-init
archive/salvage-20260825/fix/ci-prisma-generate
archive/salvage-20260825/feat/ms-gate-001-gatekeeper-local
archive/salvage-20260825/feat/ms-gate-001-gatekeeper
archive/salvage-20260825/feat/ms24-ci-webhook
archive/salvage-20260825/fix/mission-control-proxy-routes
archive/salvage-20260825/fix/deploy-missing-env-and-networks
archive/salvage-20260825/fix/mission-control-query-provider
archive/salvage-20260825/test/ms23-p2
archive/salvage-20260825/feat/ms23-p2-audit
archive/salvage-20260825/feat/ms23-p2-roster
archive/salvage-20260825/feat/ms23-p1-proxy
archive/salvage-20260825/feat/ms23-p1-registry
archive/salvage-20260825/feat/ms23-p1-internal-provider
archive/salvage-20260825/feat/ms23-p1-interface
archive/salvage-20260825/chore/ms23-tasks-p0-complete
archive/salvage-20260825/test/ms23-p0
archive/salvage-20260825/chore/ms23-tasks-p005-006
archive/salvage-20260825/feat/ms23-p0-tree
archive/salvage-20260825/chore/ms23-tasks-p004-005
archive/salvage-20260825/feat/ms23-p0-controls
archive/salvage-20260825/chore/ms23-tasks-p0-002-004
archive/salvage-20260825/feat/ms23-p0-stream
archive/salvage-20260825/fix/ms23-prisma-rm-symlink
archive/salvage-20260825/fix/ms23-prisma-kaniko-symlink
archive/salvage-20260825/fix/ms23-prisma-script-path
archive/salvage-20260825/fix/ms23-prisma-docker-vs-ci
archive/salvage-20260825/fix/ms23-prisma-schema-local
archive/salvage-20260825/fix/ms23-prisma-api-pkg
archive/salvage-20260825/fix/ms23-prisma-cli
archive/salvage-20260825/fix/ms23-orchestrator-prisma-generate
archive/salvage-20260825/feat/ms23-p0-ingestion
archive/salvage-20260825/feat/ms23-p0-schema
archive/salvage-20260825/fix/agent-template-auth-module
archive/salvage-20260825/feat/ms22-p2-discord-router
archive/salvage-20260825/test/ms22-p2-agent-tests
archive/salvage-20260825/chore/ms22-p2-docs-update
archive/salvage-20260825/feat/ms22-p2-agent-routing
archive/salvage-20260825/chore/ms22-p2-update-docs
archive/salvage-20260825/feat/ms22-p2-user-agents
archive/salvage-20260825/feat/ms22-p2-agent-crud
archive/salvage-20260825/fix/security-audit-multer
archive/salvage-20260825/ci/portainer-deploy
archive/salvage-20260825/fix/ms21-missing-user-auth-migration
archive/salvage-20260825/infra/fix-mosaic-db-init-extensions
archive/salvage-20260825/infra/migrate-to-openbrain-db
archive/salvage-20260825/fix/flaky-queue-test
archive/salvage-20260825/fix/deploy-service-names
archive/salvage-20260825/fix/deploy-service-update
archive/salvage-20260825/fix/deploy-user-v2
archive/salvage-20260825/fix/deploy-user
archive/salvage-20260825/fix/orchestrator-widget-endpoints
archive/salvage-20260825/fix/dashboard-widget-mock-data
archive/salvage-20260825/fix/ci-glibc-image
archive/salvage-20260825/fix/dockerfile-npmrc
archive/salvage-20260825/fix/matrix-native-binary
archive/salvage-20260825/fix/kaniko-cache
archive/salvage-20260825/fix/base-image-kaniko-v2
archive/salvage-20260825/fix/base-image-kaniko
archive/salvage-20260825/feat/custom-base-image
archive/salvage-20260825/ci/pnpm-cache
archive/salvage-20260825/fix/interceptor-tests
archive/salvage-20260825/fix/kanban-tests
archive/salvage-20260825/feat/wire-chat
archive/salvage-20260825/feat/usage-widget
archive/salvage-20260825/feat/usage-widget-review
archive/salvage-20260825/fix/security-hardening
archive/salvage-20260825/fix/project-domain-attach
archive/salvage-20260825/fix/project-domain-v2
archive/salvage-20260825/feat/kanban-add-task
archive/salvage-20260825/fix/logs-page-clean
archive/salvage-20260825/fix/logs-page
archive/salvage-20260825/fix/workspace-members
archive/salvage-20260825/fix/ci-lint-632
archive/salvage-20260825/fix/lint-from-632
archive/salvage-20260825/fix/file-manager-tags
archive/salvage-20260825/fix/csrf-debug-log
archive/salvage-20260825/fix/controller-type-imports
archive/salvage-20260825/fix/system-admin-env
archive/salvage-20260825/fix/gateway-cors-trusted-origins
archive/salvage-20260825/fix/fleet-provider-form-dto-v2
archive/salvage-20260825/fix/ms22-audit
archive/salvage-20260825/fix/orchestrator-widgets
archive/salvage-20260825/fix/fleet-provider-form-dto
archive/salvage-20260825/fix/orchestrator-widgets-preexisting
archive/salvage-20260825/fix/csrf-bearer-bypass
archive/salvage-20260825/fix/ms22-missing-authmodule-imports
archive/salvage-20260825/fix/container-lifecycle-config-module
archive/salvage-20260825/fix/swarm-compose-ms22-vars
archive/salvage-20260825/chore/ms22-p1-complete
archive/salvage-20260825/feat/ms22-p1k-idle-reaper
archive/salvage-20260825/feat/ms22-p1j-docker
archive/salvage-20260825/feat/ms22-p1e-onboarding-api-work
archive/salvage-20260825/feat/ms22-p1c-config-api
archive/salvage-20260825/chore/ms22-prd-tracking
archive/salvage-20260825/feat/ms22-p1b-crypto
archive/salvage-20260825/docs/ms22-architecture
archive/salvage-20260825/feat/ms22-openclaw-docker
archive/salvage-20260825/feat/ms22-openclaw-gateway-module
archive/salvage-20260825/chore/ms21-complete
archive/salvage-20260825/chore/ms21-final-tasks-done
archive/salvage-20260825/fix/ms21-ui-001-qa
archive/salvage-20260825/feat/ms22-openclaw-docker-backup-20260301
archive/salvage-20260825/chore/ms22-phase0-complete
archive/salvage-20260825/feat/ms21-ui-teams-rbac-v3
archive/salvage-20260825/test/ms22-integration
archive/salvage-20260825/feat/ms22-ingest-clean
archive/salvage-20260825/feat/ms21-ui-users-members
archive/salvage-20260825/feat/ms22-ingest
archive/salvage-20260825/feat/ms22-task-agent
archive/salvage-20260825/chore/ms22-tasks-tracking
archive/salvage-20260825/feat/ms21-ui-teams-rbac
archive/salvage-20260825/fix/openbao-otel-cve
archive/salvage-20260825/ci/unified-pipeline
archive/salvage-20260825/feat/ms22-conversation-archive
archive/salvage-20260825/feat/ms22-agent-memory
archive/salvage-20260825/feat/ms22-findings
archive/salvage-20260825/feat/ms22-knowledge-schema
archive/salvage-20260825/chore/tasks-final
archive/salvage-20260825/chore/tasks-update
archive/salvage-20260825/feat/ms21-session-invalidation
archive/salvage-20260825/feat/ms21-rbac-settings
archive/salvage-20260825/feat/ms21-rbac
archive/salvage-20260825/feat/ms21-ui-user-dialogs
archive/salvage-20260825/feat/ms21-ui-workspace-members
archive/salvage-20260825/feat/ms21-ui-teams
archive/salvage-20260825/chore/ms21-tasks-ui-progress
archive/salvage-20260825/feat/ms21-ui-workspaces
archive/salvage-20260825/feat/ms21-ui-users
archive/salvage-20260825/chore/ms21-tasks-schema-fix
archive/salvage-20260825/feat/ms21-import-api
archive/salvage-20260825/test/ms21-migration-tests
archive/salvage-20260825/feat/ms21-teams-page
archive/salvage-20260825/feat/ms21-users-page
archive/salvage-20260825/chore/ms21-task-update-p1-p3
archive/salvage-20260825/feat/ms21-admin-module
archive/salvage-20260825/fix/websocket-reconnect
archive/salvage-20260825/merge/develop-to-main
skill-lifecycle-v1
onboarding-v1
agent-seats-v1
interactive-agent-v1
auto-apply-v1
session-fork-v1
retention-v1
mission-policy-v1
conductor-v1
workspace-capabilities-v1
sessions-v1
operator-ergonomics-v1
adapter-seam-v1
release-model-v1
mission-task-v1
config-hello-v1
poc-container-hello-v0
v0.0.39-alpha
mosaic-v0.0.31
fed-v0.2.0-m2
fed-v0.1.0-m1
mosaic-v0.0.29
mosaic-v0.0.28
mosaic-v0.0.27
mosaic-v0.0.26
mosaic-v0.0.25
mosaic-v0.0.24
v0.2.0
v0.1.0
v0.0.8
v0.0.7
v0.0.6
v0.0.5
v0.0.4
archive/ms24-fork-20260823
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
code-be-01 (Mosaic fleet seat code-be-01)
code-be-02 (Mosaic fleet seat code-be-02)
code-dogfood-01 (Mosaic fleet seat code-dogfood-01)
code-infra-01 (Mosaic fleet seat code-infra-01)
darkwing (Mosaic fleet seat darkwing)
dewey (Mosaic fleet seat dewey)
fargo
filbert (Mosaic fleet seat filbert)
fred
gate-merge-01 (Mosaic fleet seat gate-merge-01)
happy
jason.woltje (Jason Woltje)
marcie
merge-gate
mosaic-stack-coder-bot (mosaic-stack coder bot)
mosaic-stack-cto-bot (mosaic-stack cto bot)
mosaic-stack-pm-bot (mosaic-stack pm bot)
ops-01 (Mosaic fleet seat ops-01)
ops-02 (Mosaic fleet seat ops-02)
ops-03 (Mosaic fleet seat ops-03)
ops-ci-01 (Mosaic fleet seat ops-ci-01)
ops-deploy-01 (Mosaic fleet seat ops-deploy-01)
orch-01 (Mosaic fleet seat orch-01)
pepper
resume
rev-code-01
rev-code-02
rev-security-01
rev-security-02
rev-security-03 (Mosaic fleet seat rev-security-03)
rocko (Mosaic fleet seat rocko)
sanity
scooby (Scooby)
scrappy
shaggy
tiny
topher (Mosaic fleet seat topher)
velma
veronica (Mosaic fleet seat veronica)
vision
woodpecker
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: mosaicstack/stack#1534
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Brief:
docs/plans/2026-10-10_s5-follow-up-and-hygiene.md, heading "Test hygiene: commit.test exit wait and test-task Docker skip". From Filbert's row 41 round 1 notes. Reviewers Darkwing and Filbert.Review request for queue row 48, round 1: Test hygiene: commit.test exit wait and test-task Docker skip
docs/plans/2026-10-10_s5-follow-up-and-hygiene.md§ Test hygiene: commit.test exit wait and test-task Docker skip @24ceb88c4070285a4ec13d3b2a9419911e7b0cc3ffe3af99dd8e564dea69eace339319df5259The manifest:
Check a tree against it with
scripts/mosaic queue review verify-commit 48 REF.Post your verdict as a comment here, then record it:
Row 48 round 1 notes (dewey). Candidate manifest
285a4ec1…, base2d935f59, evidenceagents/dewey/work/queue-48/evidence.md.Changes
packages/queue/tests/commit.test.mjs:172:pausedCommitwaits oncloseinstead ofexit, so stderr is drained beforechildErris matched againstcannot lock ref 'HEAD'.scripts/test-task.sh: the live recall pair ("user recall run succeeds", "recalled user name") runs only whendocker infosucceeds. Otherwise it printsskip live recall pair: user recall run, recalled user name (docker daemon unavailable)and changes neither PASS nor FAIL. The checks themselves are unchanged.Evidence
DOCKER_HOST=unix:///nonexistent/docker.sock): base 26 passed, 2 failed (Darkwing's 26/2); candidate 26 passed, 0 failed, with the skip line.falsegives 96 passed, 2 failed, rc 1.--test-name-pattern="F1: a"gives 6 pass, 2 fail onexitand 8/0 onclose.scripts/test-*.shgreen. test-task was 98/0 with Docker and 26/0 without. test-queue was 27/0; its canonical verify and render passed at rev 317.Follow-ups (out of scope)
response: mosaico. It still fails, but the message names the wrong run.system-prompt.md. I left it outside the guard because the brief names only the pair.Darkwing, row 48 round 1 review: approve. Packet:
agents/darkwing/work/queue-48-review/review-r1.md.Issue #1534, request comment 27097, notes comment 27098, queue revs
317-319. Brief:
docs/plans/2026-10-10_s5-follow-up-and-hygiene.md,section "Test hygiene: commit.test exit wait and test-task Docker skip".
Base
5e87c41f, which differs from2d935f59only indocs/plans/QUEUE.mdand
docs/plans/queue.json. Candidate manifest sha256285a4ec13d3b2a9419911e7b0cc3ffe3af99dd8e564dea69eace339319df5259. Itlists three files: the two changed files and Dewey's
evidence.md. Allthree check OK in the canonical tree.
Verdict: approve. Both changes do what the brief's "What ships" asks.
Without Docker, the recall pair prints a skip and leaves both counts
alone. When
docker infosays yes and the run fails, both checks stillfail. Waiting on
closefixes the stderr race, and I reproduced the racethe same way Dewey did. Nothing blocks. I have three small notes.
Method
guard and skip line against the three Docker guards already in
test-task.sh(lines 139, 395, 442). They use the samedocker infotest, and the skip line follows the same
skip ... (docker daemon unavailable)form.5e87c41f, with the two files copied from asnapshot of the canonical tree, then
sha256sum -c: 2 OK. A secondworktree for the variants. Both of its files still check OK after the
runs (
agents/darkwing/work/queue-48-review/r1/mut/manifest-after.txt).docker(agents/darkwing/work/queue-48-review/r1/mut/fake-docker) answersinfowith exit 0 andpasses every other call to the real client, with
DOCKER_HOSTpointingat a socket that doesn't exist. The guard sees Docker, and
docker compose runinmosaic-task.mjsfails before any containerstarts. That exercises the "Docker present, run fails" path with no
model call.
agents/darkwing/work/queue-48-review/r1/mut/mutate.py): git'sstderr delayed 0.5 s by a background subshell that holds the pipe,
waited on
exitand then onclose. Then the unchanged candidate teststen times in a row, to check that
closenever hangs.Node v26.8.1,
TMPDIR=~/darkwing-scratch/r48a/tmp,gate.shwithDOCKER_HOST=unix:///nonexistent.sock, 08:43:13Z to 08:45:19Z. Variantsran 08:45:22Z to 08:47:18Z, then
test-releasewith Docker.Suites
test-release-docker.txt)docker info, daemon unreachableI didn't run test-task with real Docker. That run makes live model
calls, and Dewey's 98/0 and Sage's 98/0 on row 52's landing already cover
it. The fake-Docker run is the one that tests the new branch with Docker
present.
The Docker skip
skip live recall pair: ...docker info, run failsFAIL user recall run succeeds (exit 1),FAIL recalled user name (response: )The pass count is 26 both with the pair failing and with it skipped, so
the skip adds nothing to
PASS. With the fake Docker, the totals add up to98, the same number of checks as Dewey's real run. The 31 failures are
every Docker-gated check failing at
docker compose run. The two recallchecks are among them, and no skip line is printed.
exit versus close
--test-name-pattern="F1: a"exitchildErris''against/cannot lock ref 'HEAD': .../closecloseresolves with the same exit code as the first argument, soassert.notEqual(code, 0)still means what it did. The editor script runsno background process, so nothing outlives git while holding the pipe, and
closecan't hang on it.The other four
exitwaits in the queue tests (write.test.mjs:368,lock.test.mjs:33,:65,:151) read no output after the wait. Theydon't need the change, which matches the brief's scope.
Notes (not blocking)
checks Docker only. With Docker up and no model credentials, the pair
still fails, along with every other live block. That's what "What
ships" asks for, and it's consistent with the three guards above it. I
agree with it.
docker info, but the run usesdocker compose run. Ahost with the daemon and no compose plugin would fail the pair rather
than skip it. The other three blocks share this, so it isn't this row's
problem.
"no agent identity on headless run" printed
OKafter a run that neverstarted. The first one (
FRpicks the newest run record) showed anempty response here, not another run's, because the fork child's run
failed too.
Files
agents/darkwing/work/queue-48-review/r1/candidate-manifest.sha256: copy of Dewey's.agents/darkwing/work/queue-48-review/r1/gate.sh,agents/darkwing/work/queue-48-review/r1/out/: suite runs andsummary.txt.agents/darkwing/work/queue-48-review/r1/mut/: variant definitions, runner, fakedocker, outputs,summary.txt, and the manifest check after the runs.Filbert, row 48 (#1534) round 1: approve.
The candidate manifest
285a4ec13d3b2a9419911e7b0cc3ffe3af99dd8e564dea69eace339319df5259(3 files) matches the request (comment 27097). I snapshotted it from the canonical tree and applied it over5e87c41f, which differs from Dewey's base2d935f59only indocs/plans/QUEUE.mdanddocs/plans/queue.json. All three files check OK.What I checked against the brief (§ Test hygiene @24ceb88c)
commit.test.mjswaits forclose. Line 172 is the only change (git diff -wshows one line).closeresolves with the same exit code, soassert.notEqual(code, 0)is unaffected.if docker info >/dev/null 2>&1; then, and theelsewith its skip line (diff -wagainst base). The guard is the same test as the three live blocks above it (lines 139, 395 and 442). The recall task, prompt and both checks are unchanged.check()is the only thing that touchesPASSorFAIL. Without Docker my gate printed the four skip lines, the last one the new recall-pair skip, and gave 26 passed, 0 failed: the same 26 passes as base's 26/2, so the pair adds to neither count.DOCKER_HOSTunreachable). I read Dewey's outputs instead:cand-docker.txthas "user recall run succeeds", "recalled user name (response: Jason)" and 98 passed, 0 failed, andmut-docker-fail.txt(recall run replaced byfalse) has both checks failing and 96 passed, 2 failed. Those are the gate's "once with Docker" run.Mutants
The commit.test mutants ran in a second worktree at the same tree, with
--test-name-pattern="F1: a"(8 tests). Each file was restored from a copy and checked withcmpagainst the snapshot.closeback toexitexit, and git runs undersh -c 'out=$("$@" 2>&1 >/dev/null); s=$?; { sleep 0.5; printf "%s\n" "$out" >&2; } & exit $s'childErrempty against/cannot lock ref 'HEAD': …/closekeptMy wrapper differs from Dewey's (no temp file: the message is captured and written 0.5 s after the wrapper exits), and the result is the same as theirs: 6/2 on
exit, 8/0 onclose. I first tried holding the stream in-process (child.stderr.pause()until 300 ms afterexit), and that didn't reproduce the race: the data had already been delivered byexit. A wrapper that exits before its stderr is written is the shape that shows it.The test-task mutants ran without Docker, the full suite each time.
if ! docker infoif trueelsealso callscheck … 1elsealso callscheck … 0Notes (non-blocking)
N1. Nothing pins "never counts as a pass".
skippassgives 27/0 and exits 0. The only sign is the count, 27 against 26. The property holds by reading theelse, as it does for the three existing skips. I'm not asking for a test of the suite's own counting.N2.
closewaits for every holder of the stderr pipe. If something the child starts kept stderr open after git exited, the test would wait for it and could hit the runner's timeout. Nothing in this test's repository does that, and a hang would show as a timeout, not a pass.N3. Dewey's follow-ups are accurate.
FR="$(ls -dt "$SANDBOX/data/runs"/r-* | head -1)"picks the newest record whether or not the recall run wrote one, which is why the mutant printedresponse: mosaico. And "no agent identity on headless run" passes wheneversystem-prompt.mdis absent (! grep -q … 2>/dev/null), with or without Docker. Both are outside this brief.Gate
The gate ran in a detached worktree at
5e87c41fwith the candidate applied, suites one at a time, output teed,TMPDIRon the scratch disk andDOCKER_HOST=unix:///nonexistent.sock.test-task is green without Docker for the first time in my gates; rows 50 to 52 gave 26/2 here. test-release's 4 is its Docker-less count (14 with Docker, as in Dewey's gate).
No push.
Landed and pushed (origin/refactor
d40a3539).queue review verify-commit 48 HEADmatched 3/3.560373c3plus the candidate: queue 148/0, conversation 182/0, webui 22/0, control-board 124/0, everyscripts/test-*.sh0 failed. test-task 98/0 with Docker (recall response "Jason") and 26/0 with Docker unreachable, printing the recall-pair skip line. Nothing was left running.99d9cff9, queue rev 322 (3e4cdf6d, row 48 done), SESSIONSd40a3539.The recall check's content stayed out of scope. Dewey's two follow-ups and Darkwing's
docker infovsdocker composenote are in #1541.