diff --git a/agents/della/work/queue-224/BUILD.md b/agents/della/work/queue-224/BUILD.md index b90da55cc..89b45a53f 100644 --- a/agents/della/work/queue-224/BUILD.md +++ b/agents/della/work/queue-224/BUILD.md @@ -620,3 +620,123 @@ shared helper, old test or production change. One whole harness-file retry then seven upstream files, whole bus/harness, M-B1 and clean-tree check are cleared; no CLI or lookup rerun needed (both passed, unchanged). Each child sets absolute niceness 19 before exec, with fresh shell gXXX TMPDIR. + +## sage-4213 — GREEN verification and M-B1 receipt + +Verified candidate e4c0c8931; prior CLI/lookup passes on 8f1b045f4 remain +applicable under sage-4213 (only harness fixture and receipts changed). +Every run below used a fresh shell mktemp -d /mnt/storage/scratch/tmp/gXXX, +29 bytes. Each child set absolute niceness 19 immediately before exec; timeout +process observations were 19 for all ten runs and M-B1. Bus-suite Node later +observed at nice 16, consistent with host ananicy policy; no stop for nice. +No unexpected red, cancellation or skip in this cleared sequence. + +Whole-file results: + +| File or suite | Pass | Fail | Skip | Seconds | +| --- | ---: | ---: | ---: | ---: | +| packages/harness/tests/library-tools.test.mjs | 4 | 0 | 0 | 0.213 | +| packages/bus/tests/room-check.test.mjs | 2 | 0 | 0 | 0.21 | +| packages/plugins/tests/room-channel.test.mjs | 1 | 0 | 0 | 0.102 | +| packages/supervisor/tests/pressure.test.mjs | 15 | 0 | 0 | 0.101 | +| packages/supervisor/tests/purity.test.mjs | 1 | 0 | 0 | 0.102 | +| packages/supervisor/tests/rules.test.mjs | 29 | 0 | 0 | 0.102 | +| packages/webui/tests/room-browser.test.mjs | 9 | 0 | 0 | 6.801 | +| packages/webui/tests/room-http.test.mjs | 7 | 0 | 0 | 0.183 | +| bus-whole | 1011 | 0 | 0 | 30.46 | +| harness-whole | 176 | 0 | 0 | 13.346 | + +Earlier cleared whole CLI 15/15 (19.164 s), bus lookup 11/11 (1.309 s), +zero skips. Whole bus includes lookup again; whole harness includes fixture +file again. No full shell/landing gate run: every scripts/test-*.sh belongs +to Sage's landing gate, not this CLEAR. + +M-B1: temporarily replaced only lastError.at freshness term with -Infinity. +Whole lookup file: 10 pass, 1 expected fail, no skips; killed at :178 attempted +assertion (actual 2, expected 1, recent lastError prevents another sync). +Restored exact original runtime bytes in finally. Afterwards git diff --stat +and git status --porcelain both empty against committed e4c0c8931, before +adding this receipt. Compared with named 6160b4981 the only later package +changes are Sage-authorized async CLI fixture and harness credential fixture; +no mutant or production change remains. No extra post-restore rerun. + +Exact commands, TMPDIRs, exit codes and elapsed receipts: + +```text +{"number": 1, "name": "packages/harness/tests/library-tools.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/harness/tests/library-tools.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gct3", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.213} +{"number": 2, "name": "packages/bus/tests/room-check.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/bus/tests/room-check.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/g0ki", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.21} +{"number": 3, "name": "packages/plugins/tests/room-channel.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/plugins/tests/room-channel.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gyTq", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.102} +{"number": 4, "name": "packages/supervisor/tests/pressure.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/supervisor/tests/pressure.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gK1n", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.101} +{"number": 5, "name": "packages/supervisor/tests/purity.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/supervisor/tests/purity.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gFne", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.102} +{"number": 6, "name": "packages/supervisor/tests/rules.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/supervisor/tests/rules.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gs9Y", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.102} +{"number": 7, "name": "packages/webui/tests/room-browser.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/webui/tests/room-browser.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gP9P", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 6.801} +{"number": 8, "name": "packages/webui/tests/room-http.test.mjs", "command": ["timeout", "-k", "10", "900", "node", "--test", "packages/webui/tests/room-http.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gP9G", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 0.183} +{"number": 9, "name": "bus-whole", "command": ["timeout", "-k", "10", "1800", "node", "--test", "packages/bus/tests/access-revoke.test.mjs", "packages/bus/tests/account-migration.test.mjs", "packages/bus/tests/address.test.mjs", "packages/bus/tests/agents.test.mjs", "packages/bus/tests/approval-binding.test.mjs", "packages/bus/tests/broker.test.mjs", "packages/bus/tests/business.test.mjs", "packages/bus/tests/channel-proof.test.mjs", "packages/bus/tests/chief-of-staff.test.mjs", "packages/bus/tests/citation-availability.test.mjs", "packages/bus/tests/citation-guard.test.mjs", "packages/bus/tests/citation-runtime.test.mjs", "packages/bus/tests/comment-cursors.test.mjs", "packages/bus/tests/comment-migration.test.mjs", "packages/bus/tests/console-decide.test.mjs", "packages/bus/tests/creative.test.mjs", "packages/bus/tests/credential-claim.test.mjs", "packages/bus/tests/credential-status.test.mjs", "packages/bus/tests/credential-store.test.mjs", "packages/bus/tests/credential-verbs.test.mjs", "packages/bus/tests/credentials.test.mjs", "packages/bus/tests/csuite-messaging.test.mjs", "packages/bus/tests/daily-quota-runtime.test.mjs", "packages/bus/tests/decision-close.test.mjs", "packages/bus/tests/decision-route.test.mjs", "packages/bus/tests/decisions.test.mjs", "packages/bus/tests/end-launch.test.mjs", "packages/bus/tests/fire-revokes-grants.test.mjs", "packages/bus/tests/gitea-grant-docker.test.mjs", "packages/bus/tests/gitea-grant.test.mjs", "packages/bus/tests/gitea-migration.test.mjs", "packages/bus/tests/grant-enroll.test.mjs", "packages/bus/tests/grant-executor.test.mjs", "packages/bus/tests/grant-host.test.mjs", "packages/bus/tests/grant-migration.test.mjs", "packages/bus/tests/grant-scope-runtime.test.mjs", "packages/bus/tests/grant-scope.test.mjs", "packages/bus/tests/hard-waits.test.mjs", "packages/bus/tests/host-run.test.mjs", "packages/bus/tests/host-tools.test.mjs", "packages/bus/tests/human.test.mjs", "packages/bus/tests/instances-verb.test.mjs", "packages/bus/tests/interpreter.test.mjs", "packages/bus/tests/land.test.mjs", "packages/bus/tests/launch-notice.test.mjs", "packages/bus/tests/launcher-released.test.mjs", "packages/bus/tests/library-credential.test.mjs", "packages/bus/tests/library-lookups.test.mjs", "packages/bus/tests/library-sync.test.mjs", "packages/bus/tests/library.test.mjs", "packages/bus/tests/lifecycle-revoke.test.mjs", "packages/bus/tests/lifecycle-verbs.test.mjs", "packages/bus/tests/limit-checks.test.mjs", "packages/bus/tests/limit-stop.test.mjs", "packages/bus/tests/limits-runtime.test.mjs", "packages/bus/tests/limits.test.mjs", "packages/bus/tests/message-citation.test.mjs", "packages/bus/tests/message-filter.test.mjs", "packages/bus/tests/messages.test.mjs", "packages/bus/tests/messaging.test.mjs", "packages/bus/tests/name-migration.test.mjs", "packages/bus/tests/names.test.mjs", "packages/bus/tests/peer-transport.test.mjs", "packages/bus/tests/peercred.test.mjs", "packages/bus/tests/plugins-verb.test.mjs", "packages/bus/tests/principal.test.mjs", "packages/bus/tests/process.test.mjs", "packages/bus/tests/processing-runtime.test.mjs", "packages/bus/tests/processing-timeout.test.mjs", "packages/bus/tests/processing-web.test.mjs", "packages/bus/tests/processing.test.mjs", "packages/bus/tests/project-await.test.mjs", "packages/bus/tests/project-files.test.mjs", "packages/bus/tests/project-runtime.test.mjs", "packages/bus/tests/publish.test.mjs", "packages/bus/tests/reload.test.mjs", "packages/bus/tests/replies.test.mjs", "packages/bus/tests/requirements.test.mjs", "packages/bus/tests/review.test.mjs", "packages/bus/tests/revoke-window.test.mjs", "packages/bus/tests/room-check.test.mjs", "packages/bus/tests/rooms.test.mjs", "packages/bus/tests/routes-verb.test.mjs", "packages/bus/tests/schema.test.mjs", "packages/bus/tests/session-clear.test.mjs", "packages/bus/tests/session-compactions.test.mjs", "packages/bus/tests/sessions.test.mjs", "packages/bus/tests/single-use.test.mjs", "packages/bus/tests/spec-migration.test.mjs", "packages/bus/tests/spec-review.test.mjs", "packages/bus/tests/spec-socket.test.mjs", "packages/bus/tests/spec.test.mjs", "packages/bus/tests/staff-request.test.mjs", "packages/bus/tests/state.test.mjs", "packages/bus/tests/store.test.mjs", "packages/bus/tests/task-page.test.mjs", "packages/bus/tests/task-read.test.mjs", "packages/bus/tests/tasks.test.mjs", "packages/bus/tests/tester-threads.test.mjs", "packages/bus/tests/tester-writes.test.mjs", "packages/bus/tests/tester.test.mjs", "packages/bus/tests/thread-claims.test.mjs", "packages/bus/tests/thread-migration.test.mjs", "packages/bus/tests/thread-shares.test.mjs", "packages/bus/tests/threads.test.mjs", "packages/bus/tests/transport.test.mjs", "packages/bus/tests/usage-broker.test.mjs", "packages/bus/tests/usage-migration.test.mjs", "packages/bus/tests/usage-runtime.test.mjs", "packages/bus/tests/usage.test.mjs", "packages/bus/tests/user-principal.test.mjs", "packages/bus/tests/viewer.test.mjs", "packages/bus/tests/web.test.mjs", "packages/bus/tests/workflow-roles.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/gfwc", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 30.46} +{"number": 10, "name": "harness-whole", "command": ["timeout", "-k", "10", "1800", "node", "--test", "packages/harness/tests/bundle.test.mjs", "packages/harness/tests/citation-runner.test.mjs", "packages/harness/tests/claude-gate.test.mjs", "packages/harness/tests/claude-session.test.mjs", "packages/harness/tests/creative.test.mjs", "packages/harness/tests/gate.test.mjs", "packages/harness/tests/git-tools.test.mjs", "packages/harness/tests/library-tools.test.mjs", "packages/harness/tests/mcp-server.test.mjs", "packages/harness/tests/pi-session.test.mjs", "packages/harness/tests/raise-domain.test.mjs", "packages/harness/tests/runner.test.mjs", "packages/harness/tests/skills.test.mjs", "packages/harness/tests/spec-tools.test.mjs", "packages/harness/tests/tools.test.mjs"], "TMPDIR": "/mnt/storage/scratch/tmp/g8Yn", "start_nice": 19, "observed_timeout_nice": 19, "exit": 0, "seconds": 13.346} +{ + "mutant": "M-B1", + "change": "drop lastError.at term from recentAttempt", + "command": [ + "timeout", + "-k", + "10", + "900", + "node", + "--test", + "packages/bus/tests/library-lookups.test.mjs" + ], + "TMPDIR": "/mnt/storage/scratch/tmp/g8my", + "start_nice": 19, + "observed_timeout_nice": 19, + "exit": 1, + "seconds": 1.359 +} +$ git diff --stat +(empty) +$ git status --porcelain +(empty) +HEAD=e4c0c8931 (authorized fixture fix after 6160b4981) +``` + +M-B1 output: + +```text +✔ all five agent verbs read the configured served commit through real queries (130.428728ms) +✔ each verb refuses missing universe and unknown keys before host work (78.900515ms) +✔ no library, missing host adapter and undeclared project refuse library-not-configured (149.899073ms) +✔ reads need the current holder on each call; human/tester/reader are not agents (90.636537ms) +✔ releasing a claim during an async lookup fences the response (60.938885ms) +✔ a business library removed during an async read cannot leak its result (51.783488ms) +✖ freshness boundary, unknown last fetch and failed fetch still use immutable served state (123.453393ms) +✔ an unreadable sync state fails closed; a busy sync keeps serving the existing pin (89.763849ms) +✔ a stale lookup sees the commit published by its sync, not the prior served commit (108.213675ms) +✔ real socket awaits lookup results and rechecks rejected query arguments (152.413684ms) +✔ runtime actually injects the lookup adapter, without exposing human library.file (157.701866ms) +ℹ tests 11 +ℹ suites 0 +ℹ pass 10 +ℹ fail 1 +ℹ cancelled 0 +ℹ skipped 0 +ℹ todo 0 +ℹ duration_ms 1327.433364 + +✖ failing tests: + +test at packages/bus/tests/library-lookups.test.mjs:153:1 +✖ freshness boundary, unknown last fetch and failed fetch still use immutable served state (123.453393ms) + AssertionError [ERR_ASSERTION]: recent lastError prevents another sync even though lastFetch is null + + 2 !== 1 + + at TestContext. (file:///mnt/storage/scratch/della-row224-r2/packages/bus/tests/library-lookups.test.mjs:178:12) + at async Test.run (node:internal/test_runner/test:1409:7) + at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) { + generatedMessage: false, + code: 'ERR_ASSERTION', + actual: 2, + expected: 1, + operator: 'strictEqual', + diff: 'simple' + } +```