gander: publish r6 gate and review evidence
This commit is contained in:
1 parent
ca1052ea61
commit
ec1e7fad82
55 files changed
+15695
-192
No files matched your search
@@ -123,3 +123,5 @@ N1 documented/deferred to R3: user-cli.mjs and authenticateUser wiring are absen
|
||||
Row222 integration checked on the rebased source: --send library.sync uses the existing call/busCaller, exact HUMAN_CLI child with fresh human nonce, server SO_PEERCRED and runtime verifyPrincipal before owner-cap library dispatch. The internal library sync timer is bus-local, not another caller identity mechanism. r6/REBASE.md records this path, both preserved rebases and the full whole-file union. Rebased final base is f48725cfc, branch gander/row196-r6-prd19. No product code edit for B1/B2. Full golden results await the granted gate; r5 golden results are not carried.
|
||||
|
||||
2026-10-21 r6 busy hold: all three bases passed (tester14/0, activation6/0, rehearsal3/0). Before M17 test, guard detected our own sibling tee mutant-driver.log (PID2931286), so no mutant test ran. Raw killed=false is an invalid preflight outcome, not a survivor. Target restored SHA/Git clean. No full golden step started. Sweep0 gate leftovers, eight pre-existing helpers. Returned slot and reported Sage/Mos together in gander-0064; no retry pending ruling. Proposed outer log rename controller.log, no guard change. Full records r6/HOLD.md and logs.
|
||||
|
||||
2026-10-21 r6 gate complete under sage-2145 on527b9a1e6: bus627/0, WebUI304/0/1, CLI744/0, twelve extra whole files230/0, ten shell scripts429/0. Fresh golden total2334/0/1, 929.581986 summed seconds. Nine required reruns killed, no timeout, clean SHA/Git restoration; 29 original target blobs match and carry, 38 total. First M17 busy refusal stays not-run under mos-1205, raw records preserved. Sweep0 gate leftovers/eight pre-existing helpers. Slot returned Sage/Mos in gander-0066. Final immutable39-path manifest regenerated against f48725cfc; full recount/kill evidence in r6/. No queue write while Morgana slot runs.
|
||||
@@ -1,4 +1,4 @@
|
||||
4f5e1f7cb21d86cced206e25abac032d75c7e3ba683d6f80f42001d5b4211e05 docs/TOOLS.md
|
||||
0ad63c4f7a6cdd5b2587a0969fe7a95539cf1e4601f51fb33cc4df94a718b2b5 docs/TOOLS.md
|
||||
10c996d323ac46d45548f7748d40b246de93f8c5eacae9f951c6eeb5dcc62697 packages/bus/README.md
|
||||
60720461a7994011a9a30594715eb2c992be699cd61c656e77cbd609ad05328e packages/bus/fixtures/peer-client.mjs
|
||||
0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079 packages/bus/src/human.mjs
|
||||
@@ -6,7 +6,7 @@ d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a packages/bus/s
|
||||
29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7 packages/bus/src/peercred.mjs
|
||||
d1536a8f472fa5b3773adb10555529ed049ad63b647c0b44c00ce5f25ce09f85 packages/bus/src/peercred.py
|
||||
32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd packages/bus/src/principal.mjs
|
||||
f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83 packages/bus/src/runtime.mjs
|
||||
190a4f56c44131f8a2325bc9c4a822556de432d1afd2e75ffe3168a171320bed packages/bus/src/runtime.mjs
|
||||
7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6 packages/bus/src/server.mjs
|
||||
e99133c3c957a1e856e404343721add2430e4a0d8c75452517aef04942af56ab packages/bus/tests/channel-proof.test.mjs
|
||||
d19779b97e80ed3d62f58d0e798df46c23f45fa02b14fb4ac7a2ff4690a734e2 packages/bus/tests/interpreter.test.mjs
|
||||
@@ -16,11 +16,11 @@ cefbc0688d823c69196d94bb71467884acd639070721286d7e8e4e986c8240c1 packages/bus/t
|
||||
95c7acdb47f753d1e129adaa90b5937318d8d006ca47be9d92729fdae013776f packages/cli/README.md
|
||||
4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192 packages/cli/src/tester-http.mjs
|
||||
a7cb20db2941b3b3abb09bcaa55eac92a1d420cf4ec79c6f83e4bb3235e04a2b packages/cli/tests/stack-release-fixture.mjs
|
||||
2a5a896831c1bab2ae239c90651592c95d6d08c151df518a5f6cdae65bded3ef packages/cli/tests/stack-release.test.mjs
|
||||
414d39e37d8e332761a6120ab728f67538e36082bf1f609eec7747bebdb434d4 packages/cli/tests/stack-release.test.mjs
|
||||
fbaa36e64129aee324341364bde831c379c098b97932cceadb7fcaa7909d4b20 packages/cli/tests/tester-http.test.mjs
|
||||
04b7c1165c4fa73137a72e8373d70fd7d96a5897b5511170e6d41908a7667e96 packages/webui/README.md
|
||||
934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f packages/webui/src/bus.mjs
|
||||
2c7f791e53b4bce8dc23aa974a8fe4c5d7b59204331a3d8ac398a31e530517a2 packages/webui/src/cli.mjs
|
||||
63dc2af0ff0c8f7c624268a78ffeede1593182a38d657a53e597338edf09226e packages/webui/src/cli.mjs
|
||||
da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1 packages/webui/src/serve.mjs
|
||||
1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16 packages/webui/src/tester-socket.mjs
|
||||
2f3ea92cbe1ca115301ee1e3b8fc55a206842606237446b700881ee57a1b18cb packages/webui/tests/browser.mjs
|
||||
|
||||
@@ -1,191 +1,84 @@
|
||||
# Row 196 merge-scoped review manifest
|
||||
# Row196 r6 review manifest
|
||||
|
||||
Candidate: **05e940117**, on e54e05463, branch gander/row196-r5. Its product/test bytes equal 91e3696ef; the difference is records only. No rebase after Sage's sage-2124 choice. Approved design r3 is 4d26003f7 (duckworth-0009/0015, sage-1371). This packet requests Duckworth's manifest review before Sage's gate, not merge, deployment or a live re-pin.
|
||||
Frozen tested candidate: **527b9a1e6cb1e85758e94eeb5d17c542413ceeb3**, based on **f48725cfc**, branch **gander/row196-r6-prd19**. CANDIDATE.sha256 freezes 39 changed source/test/fixture/doc paths; PRODUCT-FILES.json contains baseline and candidate hashes, read directly from Git blobs. Record-only commits after the candidate alter none of those paths.
|
||||
|
||||
`CANDIDATE.sha256` freezes the changed product, tests, fixtures and operator docs from e54e05463 to 05e940117. `PRODUCT-FILES.json` gives baseline and candidate SHA256 for each path. All hashes come from immutable Git blobs, not a dirty tree. Final record commits change agents/gander/work/queue-196 only and do not alter the frozen candidate. Row252 design/notes carried in history are separate and contain no row252 product code.
|
||||
This is the merge-scoped round authorized in duckworth-0096 and sage-2142. Duckworth's full round1 was CHANGES, #1694 comment30145, REVIEW-m1.md at659dd4e49. Everything outside B1/B2 stood approved. This round covers B1/B2 tests and their new checks, plus row222 integration in bus/runtime.mjs and webui/cli.mjs. It does not recast round1 as a prior build approval.
|
||||
|
||||
## Acceptance evidence
|
||||
## B1: activation interpreter evidence
|
||||
|
||||
Golden totals: **2256 pass, 0 fail, 1 editor skip**. Mutants: **30/30 killed**. No test rerun followed the completed grant. Gate tracked tree clean; only the expected node_modules symlink is untracked. Sweep: **0 gate leftovers**, eight pre-existing harness helpers retained. Slot returned in gander-0056 at 20:02:08Z.
|
||||
`row196 interpreter activation checks receipt, identity, plan and startup log` uses scratch copy verifier stand-ins and real release-script control flow. It checks:
|
||||
|
||||
Bus whole ran on r4 f8a59e6aa; WebUI whole ran on 91e3696ef; remaining files ran on 05e940117. All 595 product blobs match r4, and candidate/test bytes match 91e3696ef. `r5/resume/product-equality.json` extends the SHA proof to the frozen tip. Carry was expressly accepted by mos-1198/1200 and sage-2113/2124.
|
||||
- A successful plan prints the expected interpreter JSON, the started activation log carries the exact same JSON string, and the receipt verifier receives the scratch bus directory, expected identity and fresh start floor.
|
||||
- A refusing receipt fails the interpreter-receipt gate, retains/restores the exact previous pointer and writes gate-failed/rollback-ok with no success entry. A started bus is required to check a receipt; this case therefore has start calls, as clarified in duckworth-0097.
|
||||
- A changed inspect identity between preflight and gate refuses even when the stand-in receipt verifier would return true.
|
||||
- Missing verifier and unsafe inspect refuse interpreter-unsafe in both plan and activation before any start or stop, preserving the pointer.
|
||||
|
||||
M30 removes the receipt block; M31 removes expected-identity comparison; M32 removes missing-verifier refusal; M33 removes unsafe-inspect refusal; M34 removes the started-log identity; M35 removes plan identity. All six are killed. Focused base 6/0 and whole CLI 744/0 include this coverage. Stub identities are fixture metadata, not evidence of a real root-owned Python activation.
|
||||
|
||||
## B2: rehearsal transport and scratch root
|
||||
|
||||
`row196 rehearsal selects socket only for marked copies and uses scratch dataRoot` captures the stand-in Console argv and its parsed MOSAIC_CONFIG dataRoot. The marked copy receives exactly --tester-socket, no TCP flag. The legacy copy gets no tester flag. Both receive `<rehearsal>/data`, not the live root, and live/backup evidence stays byte-identical. The existing stand-in Console remains a synthetic test listener.
|
||||
|
||||
M36 empties the marked-copy socket flags; M37 gives the legacy copy a socket flag. Both are killed. Focused base 3/0 and whole CLI include this coverage. The original callback test's name/assertions remain unchanged; r5's activation-only repair is retained.
|
||||
|
||||
## Row222 merge and review notes
|
||||
|
||||
Both rebases were conflict-free. Initial 222-only branch gander/row196-r6 remains at2a989d466. The later branch rebases onto f48725cfc under sage-2142; r6/range-diff-prd19.txt and patch-id files preserve the exact comparison. The first source patch changes only Console startServer context retaining librarySync; the other ten commits compare equal. r6/review-delta.diff contains the runtime/Console merge and B1/B2/doc changes against the previously reviewed r5 candidate.
|
||||
|
||||
Under --send, Console librarySync uses the existing call/busCaller, exact HUMAN_CLI child and fresh MOSAIC_BUS_CLI_NONCE. server.mjs obtains SO_PEERCRED, runtime authenticateHuman calls verifyPrincipal, then library.sync dispatches under the owner cap with awaited release. The bus-local sync timer calls the library implementation internally; it creates no new external authentication route. Runtime keeps interpreter validation/receipt, peer reader, shared principal binding, sync timer lifecycle and cleanup. Fresh bus/library-sync tests and whole WebUI/CLI passed. No product code was changed for B1/B2.
|
||||
|
||||
- N1 documented/deferred to R3: user-cli.mjs and authenticateUser wiring remain absent by design, so user envelopes refuse. R3 must add and test both.
|
||||
- N2 deferred to a later row: dead testerNoSignIn arguments/comments remain; no product cleanup is mixed into the test changes.
|
||||
- N3 documented without code change: direct serve without peerReader needs safe system Python even for cap-only calls; runtime passes a peerReader, and the fallback fails closed.
|
||||
- N4 fixed in docs/TOOLS.md: rehearsal's longer socket path may fail closed even after the live activation preflight passes.
|
||||
|
||||
BUILD-LOG.md's four row196 phase lines stay outside the manifest, to land as Sage's separate append-only doc commit under gander-0060. Row252 DESIGN.md/BUILD-NOTES.md land with252. Remaining legacy tester-port producer/acceptance scripts are row253, per r5/TESTER-PORT-AUDIT.md; this gate does not claim those live callers have migrated.
|
||||
|
||||
## Fresh gate and carries
|
||||
|
||||
**2334 pass, 0 fail, 1 existing editor-build skip. 38/38 checks killed: nine fresh and 29 carried by exact target SHA equality.** No golden result carries from r5. M17 reran because row222 changed broker.mjs; no old definition targets runtime.mjs or webui/cli.mjs. Original raw failures and the preflight not-run outcome are preserved, not relabeled.
|
||||
|
||||
Each start used busy &&, pipefail and tee, with TMPDIR from mktemp under /mnt/storage/scratch/tmp. The self-named outer tee refusal was classified not a stop by mos-1205; only its log name changed. Both guards remain unchanged. Harness command names were checked against the detector before resumption. Fresh base times are recorded; no fresh timeout occurred.
|
||||
|
||||
The whole-file union retains the eight row215 extras and adds conversation/cohort, library/mapping, library/sync and tasks/requirements touched by the new base. All twelve ran whole, as did bus, WebUI, CLI and all ten shell scripts. Raw logs/whole-results.json are in r6/; log-recount.json independently verifies every summary and records log hashes. consolidated-kills.json records each accepted source and target hash. r6/RESULTS.md lists all timings and every kill.
|
||||
|
||||
Final sweep: **0 gate leftovers**, eight pre-existing harness helpers retained. Gate tracked tree clean; only linked node_modules is untracked. Slot returned to Sage and Mos in gander-0066. No merge, deployment, live activation, actual second-uid probe or real provider test was performed.
|
||||
|
||||
| Step | Pass | Fail | Skip | Wall seconds |
|
||||
|---|---:|---:|---:|---:|
|
||||
| bus | 622 | 0 | 0 | 36.272237 |
|
||||
| webui | 304 | 0 | 1 | 112.142839 |
|
||||
| cli | 735 | 0 | 0 | 574.436202 |
|
||||
| packages_business_tests_business.test.mjs | 19 | 0 | 0 | 1.523933 |
|
||||
| packages_business_tests_cli.test.mjs | 10 | 0 | 0 | 3.466997 |
|
||||
| packages_business_tests_instance-settings.test.mjs | 13 | 0 | 0 | 1.905684 |
|
||||
| packages_business_tests_library-projects-protected.test.mjs | 4 | 0 | 0 | 1.477437 |
|
||||
| packages_business_tests_resolve.test.mjs | 11 | 0 | 0 | 1.446584 |
|
||||
| packages_library_tests_mirror.test.mjs | 16 | 0 | 0 | 7.333578 |
|
||||
| packages_project_tests_project.test.mjs | 15 | 0 | 0 | 1.726089 |
|
||||
| packages_seat_tests_checkout.test.mjs | 78 | 0 | 0 | 6.367270 |
|
||||
| test-auth.sh | 15 | 0 | 0 | 1.906329 |
|
||||
| test-conductor.sh | 17 | 0 | 0 | 6.837641 |
|
||||
| test-config.sh | 31 | 0 | 0 | 3.154425 |
|
||||
| test-discord.sh | 78 | 0 | 0 | 8.776728 |
|
||||
| test-extension-package.sh | 18 | 0 | 0 | 3.012857 |
|
||||
| test-foundation.sh | 44 | 0 | 0 | 39.708726 |
|
||||
| test-land-work.sh | 86 | 0 | 0 | 12.623263 |
|
||||
| test-queue.sh | 28 | 0 | 0 | 23.443742 |
|
||||
| test-release.sh | 14 | 0 | 0 | 12.168674 |
|
||||
| test-task.sh | 98 | 0 | 0 | 36.783798 |
|
||||
| bus | 627 | 0 | 0 | 35.875042 |
|
||||
| webui | 304 | 0 | 1 | 111.034072 |
|
||||
| cli | 744 | 0 | 0 | 587.827141 |
|
||||
| packages_business_tests_business.test.mjs | 19 | 0 | 0 | 1.485772 |
|
||||
| packages_business_tests_cli.test.mjs | 10 | 0 | 0 | 3.404195 |
|
||||
| packages_business_tests_instance-settings.test.mjs | 13 | 0 | 0 | 1.870804 |
|
||||
| packages_business_tests_library-projects-protected.test.mjs | 4 | 0 | 0 | 1.470974 |
|
||||
| packages_business_tests_resolve.test.mjs | 11 | 0 | 0 | 1.436755 |
|
||||
| packages_conversation_tests_cohort.test.mjs | 38 | 0 | 0 | 27.922147 |
|
||||
| packages_library_tests_mapping.test.mjs | 8 | 0 | 0 | 1.413677 |
|
||||
| packages_library_tests_mirror.test.mjs | 16 | 0 | 0 | 7.354534 |
|
||||
| packages_library_tests_sync.test.mjs | 15 | 0 | 0 | 2.932405 |
|
||||
| packages_project_tests_project.test.mjs | 15 | 0 | 0 | 1.768720 |
|
||||
| packages_seat_tests_checkout.test.mjs | 78 | 0 | 0 | 6.295986 |
|
||||
| packages_tasks_tests_requirements.test.mjs | 3 | 0 | 0 | 1.398276 |
|
||||
| test-auth.sh | 15 | 0 | 0 | 1.908123 |
|
||||
| test-conductor.sh | 17 | 0 | 0 | 8.057174 |
|
||||
| test-config.sh | 31 | 0 | 0 | 3.167892 |
|
||||
| test-discord.sh | 78 | 0 | 0 | 8.613371 |
|
||||
| test-extension-package.sh | 18 | 0 | 0 | 2.651510 |
|
||||
| test-foundation.sh | 44 | 0 | 0 | 39.145345 |
|
||||
| test-land-work.sh | 86 | 0 | 0 | 12.047738 |
|
||||
| test-queue.sh | 28 | 0 | 0 | 21.795575 |
|
||||
| test-release.sh | 14 | 0 | 0 | 10.876534 |
|
||||
| test-task.sh | 98 | 0 | 0 | 27.828225 |
|
||||
|
||||
Raw results: r4/gate/whole-results.json (bus), r5/gate/whole-results.json (WebUI), r5/resume/whole-results.json (remainder). Full logs are adjacent. Exact totals: r5/resume/summary.json.
|
||||
## Preserved boundary and provenance limits
|
||||
|
||||
## Review items
|
||||
The approved design r3 and round1 hold the private tester listener, one verifier, kernel-peer proof, path-bound human walk, Console direct-parent user rule and separate nonce kinds. bus.tester remains Jason's switch. No browser relay or control-board change is included. The 7331 tooling boundary stays inventory only. Explicit human refusal is human-required and helper refusal peercred-required; abrupt close without a response remains outcome-unknown.
|
||||
|
||||
| Item | Change and acceptance evidence | Mutants |
|
||||
|---|---|---|
|
||||
| Kernel peer proof | `bus/src/peercred.py` obtains SO_PEERCRED from inherited fd 3. `peercred.mjs` owns the accepted Socket in each connection closure, bounds helpers and validates all three safe integers. `peercred.test.mjs` overlaps eight distinct callers plus a copier and checks traffic after helper exit. | M4, M5, M20 |
|
||||
| Interpreter trust | `bus/src/interpreter.mjs` resolves fixed system Python, checks root ownership, safe ancestors, ELF and version, and refuses home paths or shims. Startup appends actual identity; activation compares the fresh receipt. `interpreter.test.mjs` covers safe replacement and unchanged older receipt. | M21, M23 |
|
||||
| Startup FIFO refusal | Receipt opens include O_NONBLOCK before fstat, avoiding an indefinite FIFO open. `interpreter.test.mjs`, `non-regular startup receipt refuses promptly without waiting on a FIFO peer`, was RED by timeout, then GREEN. Evidence: `evidence/interpreter-fifo-red.txt`, `evidence/interpreter-green.txt`. No live receipt was used. | M25 removes O_NONBLOCK |
|
||||
| Missing helper refusal | Reader construction refuses missing, symlink or non-regular peer helper before opening the broker socket. `peercred.test.mjs`, `missing or non-regular peer helper refuses at construction before opening the bus`, was RED, then GREEN. Evidence: `evidence/peer-helper-red.txt`, `evidence/peercred-green.txt`. | M26 removes helper preflight |
|
||||
| Helper shutdown | Reader close kills and awaits helper close events; server close awaits it. `peercred.test.mjs`, `shutdown waits for killed helper close before returning`, was RED, then GREEN. Evidence: `evidence/peer-shutdown-red.txt`, `evidence/peercred-green.txt`. | M27 returns without waiting |
|
||||
| Shared principal | `bus/src/principal.mjs` checks kernel uid/PID, retains the human walk, separates nonce kinds and requires the exact same-tree Console serve direct parent for users. `principal.test.mjs` supplies process-table refusals. User id is provenance only; R3 owns mapping, grants and user dispatch. | M6, M8-M12, M14, M18 |
|
||||
| Request lifetime | `bus/src/server.mjs` runs the helper only for proof envelopes and releases transient caps for sync/async success, refusal, timeout and close. `peer-transport.test.mjs` tests cleanup and fails if a cap request invokes the helper. | M13, M22 |
|
||||
| Private tester ingress | `webui/src/tester-socket.mjs` owns 0700 console directory and 0600 socket; `serve.mjs` preserves tester policy and refuses sign-in headers/cookies. `tester-socket.test.mjs` covers unsafe paths, origin/Host, instance separation and HTTP access. | M1-M3, M7, M19 |
|
||||
| Owned inode cleanup | sage-1382 selects temporary bind, rename to final, conditional final dev/ino cleanup. `tester-socket.test.mjs` asserts temporary name absent after bind/close and replacement final inode survives close. Scratch proof and remaining same-uid race are in BUILD.md. | M24 binds final directly |
|
||||
| Tester policy | `bus.tester` remains Jason's switch. Existing `tester.test.mjs` verifies refusals. No user widening, new browser relay or control-board change. | M17 |
|
||||
| Consumer migration | WebUI CLI, service rendering, release plan/activation/rehearsal and CLI Unix HTTP helper carry explicit --tester-socket. Inherited TCP on a new target refuses before stop without explicit conversion. Unsupported rollback disables tester and reports it. Focused service/release/tester HTTP files cover these paths. | M15, M16 |
|
||||
| Proof pair ordering | Conversion plus an explicit proof pair keeps pointer and unit argv in the same order: preview, proof pair, tester socket. The focused row196 release test was RED with the old insertion scan, then GREEN after including --tester-socket in its stop list. The proof-file no-read check also passes. Evidence: `evidence/release-proof-order-red.txt` and `evidence/release-proof-order-green.txt`. | M28 omits socket from the insertion boundary |
|
||||
| Path preflight before stop | Activation checks the final Unix pathname byte length and any existing parent directory's type, owner and mode before stopping units. The row196 release case reproduces a too-long path reaching service stops, then verifies length and unsafe-parent refusals leave start/stop calls unchanged. Evidence: `evidence/release-path-red.txt` and `evidence/release-path-green.txt`. | M29 removes the preflight |
|
||||
| Browser fixture migration | Test-only CDP interception fulfills synthetic-origin requests from the scratch Unix listener. No TCP listener or product relay. `tester-browser.test.mjs` is 2/2 after the fixture repair, accepted in sage-1409. Evidence: `evidence/tester-browser-focused.txt`. | Product transport removal is covered by M1; browser fixture itself is tested by its two cases. |
|
||||
Row164's intentional re-pins remain human.mjs 0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079 and webui bus.mjs 934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f. The human file adds the distinct user nonce/parameterized walk; webui bus adds spawn nonce and peer-error mapping. Both pins match the immutable r6 blobs; human-cli and transport pins are unchanged.
|
||||
|
||||
All package paths above are under `packages/`. All 30 mutants are killed, including the distinct M28b SSO insertion mutant. The exact accepted-source table and target hashes are in `r4/gate/consolidated-kills.json`; `r5/resume/RESULTS.md` lists every kill. Original failed/survivor runs remain preserved. No outer timeout was used as an accepted kill in the renewed runs.
|
||||
|
||||
Additional review items:
|
||||
|
||||
- SSO/socket argument order: the whole stack-release file checks pointer and generated unit order without --send. r4 SSO RED fails with the SSO clause removed, GREEN passes after restoration; M28b kills that exact change. M28 targets only proof insertion. Unique-target guard statically accepts all 30 definitions before mutation starts.
|
||||
- Row215 callback fixture: r5 changes only `--tester-port`, `7444` to `--tester-socket` in library-cli.test.mjs. The test name and every assertion match e54e05463 byte for byte. Its existing loader captures library.file/library.status from both listener callback pairs. Whole WebUI now passes the case. `r5/assertions-unchanged.json` proves the narrow diff; Duckworth's hunk check passed per sage-2120.
|
||||
|
||||
## Separate row164 proof baseline update
|
||||
|
||||
Duckworth should review this hunk separately, as requested in sage-1409.
|
||||
Only two baselines in `packages/bus/tests/channel-proof.test.mjs` change.
|
||||
|
||||
| File | Previous sha256 | Candidate sha256 | Why |
|
||||
|---|---|---|---|
|
||||
| `packages/bus/src/human.mjs` | `b995fc5cff3af8ade4c990d0e3bebf9d83829e00f034ebc9c3dcfd05f252b573` | `0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079` | Read the distinct user nonce and parameterize the existing path-bound human walk for the shared verifier. |
|
||||
| `packages/webui/src/bus.mjs` | `76a1b57858c4aa41071746713a196299264851c18322a6f9869d553f0362d421` | `934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f` | Supply the initial owner CLI nonce at spawn and map peercred-required to HTTP refusal. |
|
||||
|
||||
The human-cli and CLI transport hashes stay fixed. Literal shim path recovery,
|
||||
forged-proof refusal and the channel plug-in proof-caller import ban remain tested.
|
||||
Focused evidence: `evidence/channel-proof.txt`. Both candidate hashes were checked against immutable 05e940117 and match the table.
|
||||
|
||||
## Consumer inventory and window
|
||||
|
||||
Tester tools use `packages/cli/src/tester-http.mjs` and the selected instance's
|
||||
console/tester.sock. WebUI tester test fixtures and browser fixtures use scratch
|
||||
Unix sockets. The stack-release gate and rehearsal carry --tester-socket and
|
||||
compare the bus startup interpreter receipt. Package READMEs and docs/TOOLS.md
|
||||
show the Unix path and explicit migration. Direct browser access is lost by
|
||||
Mos's accepted ruling mos-1015; a future SSO relay needs its own row. Name that
|
||||
loss to Jason in the authorized window. No candidate is live from this work.
|
||||
|
||||
The 7331 development control board is inventory only. Its reads, /api/reply
|
||||
writes and reachability remain the separate boundary described in DESIGN.md.
|
||||
Row 190b remains on hold; this work does not isolate hostile same-uid processes.
|
||||
|
||||
Remaining legacy installer/acceptance consumers are explicitly outside r5: scripts/case2-unit.sh and scripts/case1-accept.sh. `r5/TESTER-PORT-AUDIT.md` and tester-port-occurrences.json inventory every source/test/generator occurrence, including deliberate old-copy and negative cases. They are input to Sage's follow-up chained after 196. Their stand-in contract tests passing does not prove those legacy units can start the new tester.
|
||||
|
||||
## Gate history and controls
|
||||
|
||||
Raw records are preserved under r2/, r3/, r4/ and r5/. r2 stop 1 fixed runtime SyntaxError classification in the driver, separate from --check syntax preflight, and recorded GNU timeout process-group cleanup. Stop 2 exposed non-unique M28 targeting; the SSO product test and exact M28b guard followed. M5's old/new mutated bytes matched; M25's differed and it reran. r3 was withdrawn only because row215 landed, not counted as a stop. r4 refreshed changed-target M13/M17/M22; all other target hashes matched accepted runs. r4 WebUI then failed on the legacy library CLI activation, stop 3. Mos approved the sole test flag repair in r5.
|
||||
|
||||
The first r5 segment passed WebUI but its CLI busy check refused Sage's queue write. mos-1200 ruled that the refusal is not a stop: the guard worked. sage-2124 resumed only unstarted scope, now all green. No fifth full run occurred. All original wording/logs and corrections remain in BUILD.md and records.
|
||||
|
||||
Each start was gated by the canonical busy check with only current-driver ancestor PIDs excluded, &&, pipefail and tee. TMPDIR paths were made by mktemp under /mnt/storage/scratch/tmp. Whole files ran, including the eight-file union from row215. The editor rebuild skip reflects shared esbuild 0.28.1 versus required 0.28.2; no dependency install was performed. test-queue prints a deliberate canonical-only verify/render skip in a scratch checkout. No real uid, live units, live ports or real provider was exercised.
|
||||
|
||||
## Merge reasoning for the ten conflicted files
|
||||
|
||||
| File | Resolution and reason |
|
||||
|---|---|
|
||||
| BUILD-LOG.md | Retain upstream append-only phases followed by row196 entries. No historical entry removed or rewritten. |
|
||||
| docs/TOOLS.md | Combine socket/legacy tester flags with upstream --sso and --no-send usage. Keep new operator modes. |
|
||||
| packages/bus/src/runtime.mjs | Keep upstream host executor imports, run-directory sweep, grant reconciliation and host API. Add interpreter receipt and peer reader before listen, shared verifier and per-request binds. No second verifier. |
|
||||
| packages/bus/src/server.mjs | Keep upstream HOST_VERBS/HOSTS_VERBS and host argument. Merge user proof and peer checks, with idempotent transient-cap release on host async completion too, avoiding duplicate disconnect. |
|
||||
| packages/cli/tests/stack-release.test.mjs | Keep upstream extracted fixture import and all new upstream tests, append the whole row196 case outside upstream's closing block. Move row196 optional long data-root parameter into stack-release-fixture.mjs, where mk now lives. |
|
||||
| packages/webui/src/cli.mjs | Retain SSO parsing, startup, summary and shutdown; replace only tester TCP with private Unix transport. Preserve testerNoSignIn when SSO is on. |
|
||||
| packages/webui/src/serve.mjs | Retain SSO session/Host checks and signer. Add socket-only tester transport and fixed logical origin. Tester refuses authorization, session/login cookies and provider headers; it never uses the SSO signer. |
|
||||
| packages/webui/tests/proof-cli.test.mjs | Retain upstream lane imports while moving the tester assertion to Unix HTTP. Close the fixture's socket before spawning the same-root CLI. No product relay. |
|
||||
| scripts/stack-release.sh | Retain external-unit protocol, instance flags, SSO transformation, no-send and grant/config checks. Run socket migration on BASE_CONSOLE after sso_base. Preserve interpreter gate after external start-floor calculation. New socket flag participates in proof/SSO insertion and rollback carry, avoiding ordering and TCP-fallback regressions. External callers cannot use the new render-changing flag. |
|
||||
| scripts/webui-service.sh | Retain instance selection, PORT_SET and SSO flag/status handling; add socket support checks and mode conflict. Status regex recognizes either legacy tester port or socket after send. |
|
||||
|
||||
Follow-through outside the conflict blocks: migrate the new SSO tester fixture to
|
||||
Unix HTTP while retaining every sign-in refusal; adapt M15 to BASE_CONSOLE; retain
|
||||
approved DESIGN.md/PLAN.md, absent on the new base. No tests before Sage's clear.
|
||||
The two reviewed row164 file hashes remain unchanged by this rebase.
|
||||
|
||||
|
||||
## Every conflicted hunk
|
||||
|
||||
1. BUILD-LOG.md append hunk: retained both row215 build entries, then row196
|
||||
append-only entries. No historical entry removed or rewritten. The raw
|
||||
conflict and resolved context are in conflicts.diff and the candidate.
|
||||
2. packages/bus/src/server.mjs import hunk: retained row215's LIBRARY_VERBS
|
||||
alongside HOST_VERBS, HOSTS_VERBS and PROJECT_FILE_VERBS, then retained row196
|
||||
inspectInterpreter and createPeerReader imports. Library requests keep their
|
||||
awaited branch; every proof still passes kernel-peer verification and every
|
||||
transient cap still uses the idempotent release closure.
|
||||
|
||||
## Automatically merged overlaps inspected
|
||||
|
||||
- runtime.mjs keeps library ensureMirror before socket readiness, library service
|
||||
callbacks and filtering of library mappings out of code-project root scanning,
|
||||
alongside row196 interpreter receipt, reader and principal binding.
|
||||
- server.mjs retains LIBRARY_VERBS in the async request branch and release() on
|
||||
its finalizer, so one-request Console proofs are neither lost nor leaked.
|
||||
- webui CLI keeps libraryFile/libraryStatus handlers on both main and tester
|
||||
handler objects, alongside SSO lifecycle and Unix tester startup. The bus's
|
||||
library authorization remains authoritative; no tester privilege is added.
|
||||
- stack-release fixture includes packages/library/src in its copy closure while
|
||||
retaining row196 optional long-path dataName for refusal tests.
|
||||
- stack-release test rehearsal closure includes packages/library/src while all
|
||||
proof/socket and SSO/socket tests are retained. The SSO test patch is unchanged.
|
||||
|
||||
|
||||
## Refused caller behavior and static review
|
||||
|
||||
The verifier path is changed by this row. A completed proof refusal returns an
|
||||
explicit protocol error before closing the connection: `human-required` for a
|
||||
rejected human proof and `peercred-required` for helper failure. The real Client
|
||||
receives those codes in `peer-transport.test.mjs`, without broker dispatch. No
|
||||
client code is changed. Abrupt close, transport error or timeout without a valid
|
||||
response still reports `outcome-unknown`; this row does not convert that case.
|
||||
|
||||
Quackerjack's reported failed-proof close was not reproduced against this branch's
|
||||
base. A scratch comparison loads HEAD's server and the candidate with the same
|
||||
refusing authenticator and unchanged Client. Both return `human-required`.
|
||||
Evidence: `evidence/refusal-baseline-comparison.txt`. This comparison does not
|
||||
claim to reproduce Quackerjack's exact process ancestry or instance. The manifest
|
||||
therefore claims the explicit codes only for the paths verified here.
|
||||
|
||||
Static review covered peer reader and shutdown, runtime startup and failure
|
||||
cleanup, principal/walk dispatch, tester bind/close, Console spawn, Unix client,
|
||||
release conversion/recovery/preflight, unit rendering and test fixture changes.
|
||||
It found the shutdown, proof ordering and preflight defects recorded above.
|
||||
Each has a focused test and a killed mutant. An unrelated change to legacy
|
||||
tester-port-invalid text was also removed to preserve the existing contract.
|
||||
The authorized golden files are complete. No live activation or uid window was run.
|
||||
|
||||
## Limits carried to acceptance
|
||||
|
||||
No real second uid or live instance is exercised. Foreign uid metadata is a
|
||||
stand-in. The authorized window still owns real uid-denial and consumer audit.
|
||||
Python is a new bus-host dependency; the worker Containerfile is unchanged.
|
||||
Restarts validate the current interpreter and append a receipt; old receipts
|
||||
are preserved. Interpreter changes use the next reviewed copy and preserve
|
||||
the already-active refusal.
|
||||
|
||||
Hostile same-uid processes can read or alter same-uid state, detach or interfere
|
||||
with pathname checks and Console provenance. Separate uids narrow cross-instance
|
||||
reach, not reach within one instance. R3 must source the proof id only from
|
||||
claims verified for that request's live session and reread grants per request.
|
||||
P19 333 must retain this text unchanged:
|
||||
Hostile same-uid processes remain a residual for readable state, process metadata and pathname races. Separate uids narrow cross-instance reach, not reach within one instance. R3 owns verified-session claim mapping, user wiring and live grants. P19 333 keeps the approved text unchanged:
|
||||
|
||||
The Console provenance option trusts verified code and process metadata, not an independent
|
||||
bus-side OIDC exchange. That trade must be approved, not hidden behind the phrase zero trust.
|
||||
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"status": "verified immutable candidate",
|
||||
"base": "e54e05463",
|
||||
"candidate": "05e940117",
|
||||
"status": "verified immutable r6 candidate",
|
||||
"base": "f48725cfc",
|
||||
"candidate": "527b9a1e6cb1e85758e94eeb5d17c542413ceeb3",
|
||||
"files": [
|
||||
{
|
||||
"path": "docs/TOOLS.md",
|
||||
"baselineSha256": "17528973e2ed9748f5b0a9218feb5b2ae9789c13998e29e448b5775aae3c561d",
|
||||
"candidateSha256": "4f5e1f7cb21d86cced206e25abac032d75c7e3ba683d6f80f42001d5b4211e05"
|
||||
"candidateSha256": "0ad63c4f7a6cdd5b2587a0969fe7a95539cf1e4601f51fb33cc4df94a718b2b5"
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/README.md",
|
||||
@@ -45,8 +45,8 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/src/runtime.mjs",
|
||||
"baselineSha256": "c759e665514a5bcad40536bc9f979837187fe6523462b3c0a0687182885c3ac6",
|
||||
"candidateSha256": "f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83"
|
||||
"baselineSha256": "07394509d9828519fe13112f02cd3907df1113e822d3051be3661af8edaee0ec",
|
||||
"candidateSha256": "190a4f56c44131f8a2325bc9c4a822556de432d1afd2e75ffe3168a171320bed"
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/src/server.mjs",
|
||||
@@ -96,7 +96,7 @@
|
||||
{
|
||||
"path": "packages/cli/tests/stack-release.test.mjs",
|
||||
"baselineSha256": "46cc95a6e75a89b907cdd5e9bd03853e1d1f75f1ced81084d968c5476466822e",
|
||||
"candidateSha256": "2a5a896831c1bab2ae239c90651592c95d6d08c151df518a5f6cdae65bded3ef"
|
||||
"candidateSha256": "414d39e37d8e332761a6120ab728f67538e36082bf1f609eec7747bebdb434d4"
|
||||
},
|
||||
{
|
||||
"path": "packages/cli/tests/tester-http.test.mjs",
|
||||
@@ -115,8 +115,8 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/src/cli.mjs",
|
||||
"baselineSha256": "e98fd2fe4e621d5b4fa1ed95c4d4585469e7ab7a11dd379dc541dddb1b1a1f02",
|
||||
"candidateSha256": "2c7f791e53b4bce8dc23aa974a8fe4c5d7b59204331a3d8ac398a31e530517a2"
|
||||
"baselineSha256": "5c7e99b7d506d12bb369769b04c0d515bf3252329ad76e61478c3d92a7b4a802",
|
||||
"candidateSha256": "63dc2af0ff0c8f7c624268a78ffeede1593182a38d657a53e597338edf09226e"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/src/serve.mjs",
|
||||
|
||||
@@ -34,3 +34,5 @@ Run 4 complete, sage-2124 on 05e940117: 1330/0 continuation, 2256/0/1 combined g
|
||||
Manifest published at 93f3332b2; row196 in-review round1 candidate digest d9fefc49ab1affb02d68b35b658772da4e82c724255611a7fe1d59b48b62006c, rev2968. Review transport failed at rev2969 due unset own-token credential file. Sent Duckworth gander-0058 and Sage gander-0059; Sage posts as jarvis. All queue writes done; hold them until Megavolt returns. Await Duckworth merge-scoped verdict, then Sage gate. No PR/merge/activation started.
|
||||
|
||||
R6 candidate527b9a1e6 on f48725cfc, branch gander/row196-r6-prd19; initial222 rebase preserved on gander/row196-r6. Focused9/9 and granted bases23/0 pass. Gate held before M17 test because own outer tee mutant-driver.log matched busy detector; no mutant/golden test ran. Target restored clean. gander-0064 to Sage/Mos returned slot, sweep0 gate leftovers/eight pre-existing helpers. Await ruling before retry. No queue writes. r6/HOLD.md records diagnosis; proposed change only outer log name, no code/guard edit.
|
||||
|
||||
R6 complete on527b9a1e6, based f48725cfc: fresh2334/0/1, 38 kills (nine fresh, 29 exact-target carries), no timeouts. Slot returned gander-0066, sweep0/eight pre-existing helpers. New manifest/hash files freeze the candidate. Duckworth next reviews B1/B2 and row222 integration under0096; full first review outside B1/B2 stands. Await round2 queue coordination from Sage; no writes during Morgana244 slot. No PR/merge/live activation.
|
||||
@@ -5,3 +5,5 @@ Candidate 527b9a1e6 on f48725cfc; grant sage-2142. The three base invocations pa
|
||||
M17 did not run its test. Its raw result is killed=false/status1, not a real survivor. The mutated broker restored to its original SHA256 and git status was empty. No new mutant test, full package suite, extra file or shell suite started. No product or test changed.
|
||||
|
||||
Sweep: zero gate leftovers; eight pre-existing harness helpers remain. Slot returned and simultaneous report sent to Sage/Mos as gander-0064. No retry pending ruling. Proposed launch correction: rename only the outer tee log to controller.log. Keep busy.py and the canonical guard unchanged. Preserve original records.
|
||||
|
||||
mos-1205 / sage-2145: busy refusal is not a counted stop. M17 is not run, neither a survivor nor a kill. Raw M17 output/results copied unchanged to first-attempt/. Rename only the outer log to controller.log; both busy guards remain unchanged. Resume the same candidate 527b9a1e6; 23 passing bases carry.
|
||||
@@ -0,0 +1,78 @@
|
||||
# R6 gate results
|
||||
|
||||
All golden results are fresh on 527b9a1e6cb1e85758e94eeb5d17c542413ceeb3. Bases 23/0 carry from the same candidate under sage-2145. The earlier M17 busy refusal is not run per mos-1205; unchanged raw output is in first-attempt/.
|
||||
|
||||
| Step | Pass | Fail | Skip | Wall seconds |
|
||||
|---|---:|---:|---:|---:|
|
||||
| bus | 627 | 0 | 0 | 35.875042 |
|
||||
| webui | 304 | 0 | 1 | 111.034072 |
|
||||
| cli | 744 | 0 | 0 | 587.827141 |
|
||||
| packages_business_tests_business.test.mjs | 19 | 0 | 0 | 1.485772 |
|
||||
| packages_business_tests_cli.test.mjs | 10 | 0 | 0 | 3.404195 |
|
||||
| packages_business_tests_instance-settings.test.mjs | 13 | 0 | 0 | 1.870804 |
|
||||
| packages_business_tests_library-projects-protected.test.mjs | 4 | 0 | 0 | 1.470974 |
|
||||
| packages_business_tests_resolve.test.mjs | 11 | 0 | 0 | 1.436755 |
|
||||
| packages_conversation_tests_cohort.test.mjs | 38 | 0 | 0 | 27.922147 |
|
||||
| packages_library_tests_mapping.test.mjs | 8 | 0 | 0 | 1.413677 |
|
||||
| packages_library_tests_mirror.test.mjs | 16 | 0 | 0 | 7.354534 |
|
||||
| packages_library_tests_sync.test.mjs | 15 | 0 | 0 | 2.932405 |
|
||||
| packages_project_tests_project.test.mjs | 15 | 0 | 0 | 1.768720 |
|
||||
| packages_seat_tests_checkout.test.mjs | 78 | 0 | 0 | 6.295986 |
|
||||
| packages_tasks_tests_requirements.test.mjs | 3 | 0 | 0 | 1.398276 |
|
||||
| test-auth.sh | 15 | 0 | 0 | 1.908123 |
|
||||
| test-conductor.sh | 17 | 0 | 0 | 8.057174 |
|
||||
| test-config.sh | 31 | 0 | 0 | 3.167892 |
|
||||
| test-discord.sh | 78 | 0 | 0 | 8.613371 |
|
||||
| test-extension-package.sh | 18 | 0 | 0 | 2.651510 |
|
||||
| test-foundation.sh | 44 | 0 | 0 | 39.145345 |
|
||||
| test-land-work.sh | 86 | 0 | 0 | 12.047738 |
|
||||
| test-queue.sh | 28 | 0 | 0 | 21.795575 |
|
||||
| test-release.sh | 14 | 0 | 0 | 10.876534 |
|
||||
| test-task.sh | 98 | 0 | 0 | 27.828225 |
|
||||
|
||||
Golden totals: 2334 pass, 0 fail, 1 editor skip; summed wall 929.581986 seconds. Shell queue tests additionally print canonical-only verification/render skips because this is a scratch checkout. No dependency install.
|
||||
|
||||
| ID | Result | Source | Target |
|
||||
|---|---|---|---|
|
||||
| M1 | killed, carried | r2/mutants | packages/webui/src/serve.mjs |
|
||||
| M2 | killed, carried | r2/mutants | packages/webui/src/tester-socket.mjs |
|
||||
| M3 | killed, carried | r2/mutants | packages/webui/src/serve.mjs |
|
||||
| M4 | killed, carried | r2/mutants | packages/bus/src/principal.mjs |
|
||||
| M5 | killed, carried | r2/mutants | packages/bus/src/peercred.mjs |
|
||||
| M6 | killed, carried | r2/mutants | packages/bus/src/principal.mjs |
|
||||
| M7 | killed, carried | r2/mutants | packages/webui/src/tester-socket.mjs |
|
||||
| M8 | killed, carried | r2/mutants | packages/bus/src/human.mjs |
|
||||
| M9 | killed, carried | r2/mutants | packages/bus/src/human.mjs |
|
||||
| M10 | killed, carried | r2/mutants | packages/bus/src/principal.mjs |
|
||||
| M11 | killed, carried | r2/mutants | packages/bus/src/principal.mjs |
|
||||
| M12 | killed, carried | r2/mutants | packages/bus/src/human.mjs |
|
||||
| M13 | killed, carried | r4/gate/killers | packages/bus/src/server.mjs |
|
||||
| M14 | killed, carried | r2/mutants | packages/bus/src/principal.mjs |
|
||||
| M15 | killed, carried | r2/mutants | scripts/stack-release.sh |
|
||||
| M16 | killed, carried | r2/mutants | scripts/stack-release.sh |
|
||||
| M17 | killed, fresh | r6/killers | packages/bus/src/broker.mjs |
|
||||
| M18 | killed, carried | r2/mutants | packages/bus/src/principal.mjs |
|
||||
| M19 | killed, carried | r2/mutants | packages/cli/src/tester-http.mjs |
|
||||
| M20 | killed, carried | r2/mutants | packages/bus/src/peercred.mjs |
|
||||
| M21 | killed, carried | r2/mutants | packages/bus/src/interpreter.mjs |
|
||||
| M22 | killed, carried | r4/gate/killers | packages/bus/src/server.mjs |
|
||||
| M23 | killed, carried | r2/run2/killers | packages/bus/src/interpreter.mjs |
|
||||
| M24 | killed, carried | r2/run2/killers | packages/webui/src/tester-socket.mjs |
|
||||
| M25 | killed, carried | r3/gate/killers | packages/bus/src/interpreter.mjs |
|
||||
| M26 | killed, carried | r2/run2/killers | packages/bus/src/peercred.mjs |
|
||||
| M27 | killed, carried | r2/run2/killers | packages/bus/src/peercred.mjs |
|
||||
| M28 | killed, carried | r3/gate/killers | scripts/stack-release.sh |
|
||||
| M28b | killed, carried | r3/gate/killers | scripts/stack-release.sh |
|
||||
| M29 | killed, carried | r3/gate/killers | scripts/stack-release.sh |
|
||||
| M30 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M31 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M32 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M33 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M34 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M35 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M36 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
| M37 | killed, fresh | r6/killers | scripts/stack-release.sh |
|
||||
|
||||
Nine fresh kills, 29 SHA-verified carries, 38 total. No fresh timeout. Each fresh target restored byte-identically with empty Git status. The 29 carried target hashes also match the immutable r6 blobs. Zero gate leftovers, eight pre-existing harness helpers retained. Slot returned in gander-0066. Both busy guards unchanged; launch-preflight.json checks harness names.
|
||||
|
||||
Raw M17 TAP diagnostics retain two whitespace-only output lines. They are preserved byte-for-byte; code/docs/JSON whitespace checks exclude raw .log and .txt evidence.
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,330 @@
|
||||
{
|
||||
"candidate": "527b9a1e6cb1e85758e94eeb5d17c542413ceeb3",
|
||||
"killed": 38,
|
||||
"fresh": 9,
|
||||
"carried": 29,
|
||||
"rows": [
|
||||
{
|
||||
"id": "M1",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/webui/src/serve.mjs",
|
||||
"targetSha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M2",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/webui/src/tester-socket.mjs",
|
||||
"targetSha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M3",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/webui/src/serve.mjs",
|
||||
"targetSha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M4",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/principal.mjs",
|
||||
"targetSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M5",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/peercred.mjs",
|
||||
"targetSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M6",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/principal.mjs",
|
||||
"targetSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M7",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/webui/src/tester-socket.mjs",
|
||||
"targetSha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M8",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/human.mjs",
|
||||
"targetSha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M9",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/human.mjs",
|
||||
"targetSha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M10",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/principal.mjs",
|
||||
"targetSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M11",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/principal.mjs",
|
||||
"targetSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M12",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/human.mjs",
|
||||
"targetSha256": "0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M13",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/server.mjs",
|
||||
"targetSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6",
|
||||
"source": "r4/gate/killers"
|
||||
},
|
||||
{
|
||||
"id": "M14",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/principal.mjs",
|
||||
"targetSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M15",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M16",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M17",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "packages/bus/src/broker.mjs",
|
||||
"targetSha256": "c2f2f558aae5768d3f5fe2ecc113760cc4027d868bb74627a6702c6babd96db2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 2.728,
|
||||
"baseWallSeconds": 2.725494864
|
||||
},
|
||||
{
|
||||
"id": "M18",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/principal.mjs",
|
||||
"targetSha256": "32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M19",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/cli/src/tester-http.mjs",
|
||||
"targetSha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M20",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/peercred.mjs",
|
||||
"targetSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M21",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/interpreter.mjs",
|
||||
"targetSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a",
|
||||
"source": "r2/mutants"
|
||||
},
|
||||
{
|
||||
"id": "M22",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/server.mjs",
|
||||
"targetSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6",
|
||||
"source": "r4/gate/killers"
|
||||
},
|
||||
{
|
||||
"id": "M23",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/interpreter.mjs",
|
||||
"targetSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a",
|
||||
"source": "r2/run2/killers"
|
||||
},
|
||||
{
|
||||
"id": "M24",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/webui/src/tester-socket.mjs",
|
||||
"targetSha256": "1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16",
|
||||
"source": "r2/run2/killers"
|
||||
},
|
||||
{
|
||||
"id": "M25",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/interpreter.mjs",
|
||||
"targetSha256": "d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a",
|
||||
"source": "r3/gate/killers"
|
||||
},
|
||||
{
|
||||
"id": "M26",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/peercred.mjs",
|
||||
"targetSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7",
|
||||
"source": "r2/run2/killers"
|
||||
},
|
||||
{
|
||||
"id": "M27",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "packages/bus/src/peercred.mjs",
|
||||
"targetSha256": "29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7",
|
||||
"source": "r2/run2/killers"
|
||||
},
|
||||
{
|
||||
"id": "M28",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r3/gate/killers"
|
||||
},
|
||||
{
|
||||
"id": "M28b",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r3/gate/killers"
|
||||
},
|
||||
{
|
||||
"id": "M29",
|
||||
"killed": true,
|
||||
"carried": true,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r3/gate/killers"
|
||||
},
|
||||
{
|
||||
"id": "M30",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 10.226,
|
||||
"baseWallSeconds": 13.037174619
|
||||
},
|
||||
{
|
||||
"id": "M31",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 11.644,
|
||||
"baseWallSeconds": 13.037174619
|
||||
},
|
||||
{
|
||||
"id": "M32",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 12.902,
|
||||
"baseWallSeconds": 13.037174619
|
||||
},
|
||||
{
|
||||
"id": "M33",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 12.069,
|
||||
"baseWallSeconds": 13.037174619
|
||||
},
|
||||
{
|
||||
"id": "M34",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 12.854,
|
||||
"baseWallSeconds": 13.037174619
|
||||
},
|
||||
{
|
||||
"id": "M35",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 11.586,
|
||||
"baseWallSeconds": 13.037174619
|
||||
},
|
||||
{
|
||||
"id": "M36",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 8.629,
|
||||
"baseWallSeconds": 9.069833057000002
|
||||
},
|
||||
{
|
||||
"id": "M37",
|
||||
"killed": true,
|
||||
"carried": false,
|
||||
"targetFile": "scripts/stack-release.sh",
|
||||
"targetSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2",
|
||||
"source": "r6/killers",
|
||||
"wallSeconds": 7.91,
|
||||
"baseWallSeconds": 9.069833057000002
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
M17 KILLED base=2.725494864s timeout=false
|
||||
M30 KILLED base=13.037174619s timeout=false
|
||||
M31 KILLED base=13.037174619s timeout=false
|
||||
M32 KILLED base=13.037174619s timeout=false
|
||||
M33 KILLED base=13.037174619s timeout=false
|
||||
M34 KILLED base=13.037174619s timeout=false
|
||||
M35 KILLED base=13.037174619s timeout=false
|
||||
M36 KILLED base=9.069833057000002s timeout=false
|
||||
M37 KILLED base=9.069833057000002s timeout=false
|
||||
@@ -0,0 +1,154 @@
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
root = Path('agents/gander/work/queue-196')
|
||||
out = root / 'r6'
|
||||
candidate = '527b9a1e6cb1e85758e94eeb5d17c542413ceeb3'
|
||||
base = 'f48725cfc'
|
||||
|
||||
|
||||
def git(*args):
|
||||
return subprocess.check_output(['git', *args], stderr=subprocess.DEVNULL)
|
||||
|
||||
|
||||
def sha(value):
|
||||
return hashlib.sha256(value).hexdigest()
|
||||
|
||||
|
||||
files = git('diff', '--name-only', base, candidate, '--', 'packages', 'scripts', 'docs/TOOLS.md').decode().splitlines()
|
||||
entries = []
|
||||
for file in files:
|
||||
try:
|
||||
before = sha(git('show', base + ':' + file))
|
||||
except subprocess.CalledProcessError:
|
||||
before = None
|
||||
entries.append(dict(path=file, baselineSha256=before, candidateSha256=sha(git('show', candidate + ':' + file))))
|
||||
assert len(entries) == 39
|
||||
(root / 'PRODUCT-FILES.json').write_text(json.dumps(dict(status='verified immutable r6 candidate', base=base, candidate=candidate, files=entries), indent=2) + '\n')
|
||||
manifest = ''.join(f"{e['candidateSha256']} {e['path']}\n" for e in entries)
|
||||
(root / 'CANDIDATE.sha256').write_text(manifest)
|
||||
|
||||
results = json.loads((out / 'whole-results.json').read_text())
|
||||
assert len(results) == 25
|
||||
recounts = []
|
||||
for result in results:
|
||||
assert result['complete'] and result['code'] == 0 and result['fail'] == 0
|
||||
log = out / (result['name'] + '.log')
|
||||
text = log.read_text()
|
||||
if result['kind'] == 'node':
|
||||
actual = [int(re.findall(r'^# ' + key + r' (\d+)$', text, re.M)[-1]) for key in ['pass', 'fail', 'skipped']]
|
||||
assert actual == [result['pass'], result['fail'], result['skip']]
|
||||
else:
|
||||
assert tuple(map(int, re.findall(r'(\d+) passed,\s*(\d+) failed', text)[-1])) == (result['pass'], result['fail'])
|
||||
recounts.append(dict(log=log.name, sha256=sha(log.read_bytes()), passCount=result['pass'], failCount=result['fail']))
|
||||
(out / 'log-recount.json').write_text(json.dumps(recounts, indent=2) + '\n')
|
||||
|
||||
old = json.loads((root / 'r4/gate/consolidated-kills.json').read_text())['rows']
|
||||
fresh = json.loads((out / 'killers/results.json').read_text())
|
||||
specs = {s['id']: s for s in json.loads((out / 'uniqueness.json').read_text())}
|
||||
kills = []
|
||||
for item in old:
|
||||
if item['id'] == 'M17':
|
||||
continue
|
||||
file = item['targetFile']
|
||||
assert sha(git('show', candidate + ':' + file)) == item['restoredSha256']
|
||||
kills.append(dict(id=item['id'], killed=True, carried=True, targetFile=file, targetSha256=item['restoredSha256'], source=item['evidenceFolder']))
|
||||
for item in fresh:
|
||||
assert item['killed'] and not item['timedOut'] and item['restoredGitStatus'] == '' and item['syntaxStatus'] == 0
|
||||
file = specs[item['id']]['file']
|
||||
assert sha(git('show', candidate + ':' + file)) == item['restoredSha256']
|
||||
kills.append(dict(id=item['id'], killed=True, carried=False, targetFile=file, targetSha256=item['restoredSha256'], source='r6/killers', wallSeconds=item['wallSeconds'], baseWallSeconds=item['baseWallSeconds']))
|
||||
assert len(kills) == len({x['id'] for x in kills}) == 38
|
||||
kills.sort(key=lambda x: (int(x['id'][1:].rstrip('b')), x['id'].endswith('b')))
|
||||
(out / 'consolidated-kills.json').write_text(json.dumps(dict(candidate=candidate, killed=38, fresh=9, carried=29, rows=kills), indent=2) + '\n')
|
||||
|
||||
|
||||
def totals(rows):
|
||||
return dict(passCount=sum(x['pass'] for x in rows), failCount=sum(x['fail'] for x in rows), skipCount=sum(x['skip'] for x in rows), wallSeconds=sum(x['wallSeconds'] for x in rows))
|
||||
|
||||
|
||||
sweep = json.loads((out / 'process-sweep.json').read_text())
|
||||
assert sweep['gateLeftoverCount'] == 0
|
||||
summary = dict(candidate=candidate, base=base, grants=['sage-2142', 'sage-2145'], golden=totals(results), extraFiles=totals(results[3:15]), shellScripts=totals(results[15:]), killed=38, freshKills=9, carriedKills=29, freshKillWallSeconds=sum(x['wallSeconds'] for x in fresh), sweep=sweep)
|
||||
assert summary['golden']['passCount'] == 2334
|
||||
(out / 'summary.json').write_text(json.dumps(summary, indent=2) + '\n')
|
||||
table = '| Step | Pass | Fail | Skip | Wall seconds |\n|---|---:|---:|---:|---:|\n'
|
||||
for result in results:
|
||||
table += f"| {result['name']} | {result['pass']} | {result['fail']} | {result['skip']} | {result['wallSeconds']:.6f} |\n"
|
||||
kill_table = '| ID | Result | Source | Target |\n|---|---|---|---|\n'
|
||||
for item in kills:
|
||||
kill_table += f"| {item['id']} | killed, {'carried' if item['carried'] else 'fresh'} | {item['source']} | {item['targetFile']} |\n"
|
||||
(out / 'RESULTS.md').write_text('# R6 gate results\n\nAll golden results are fresh on ' + candidate + '. Bases 23/0 carry from the same candidate under sage-2145. The earlier M17 busy refusal is not run per mos-1205; unchanged raw output is in first-attempt/.\n\n' + table + '\nGolden totals: 2334 pass, 0 fail, 1 editor skip; summed wall 929.581986 seconds. Shell queue tests additionally print canonical-only verification/render skips because this is a scratch checkout. No dependency install.\n\n' + kill_table + '\nNine fresh kills, 29 SHA-verified carries, 38 total. No fresh timeout. Each fresh target restored byte-identically with empty Git status. The 29 carried target hashes also match the immutable r6 blobs. Zero gate leftovers, eight pre-existing harness helpers retained. Slot returned in gander-0066. Both busy guards unchanged; launch-preflight.json checks harness names.\n')
|
||||
|
||||
review = '''# Row196 r6 review manifest
|
||||
|
||||
Frozen tested candidate: **527b9a1e6cb1e85758e94eeb5d17c542413ceeb3**, based on **f48725cfc**, branch **gander/row196-r6-prd19**. CANDIDATE.sha256 freezes 39 changed source/test/fixture/doc paths; PRODUCT-FILES.json contains baseline and candidate hashes, read directly from Git blobs. Record-only commits after the candidate alter none of those paths.
|
||||
|
||||
This is the merge-scoped round authorized in duckworth-0096 and sage-2142. Duckworth's full round1 was CHANGES, #1694 comment30145, REVIEW-m1.md at659dd4e49. Everything outside B1/B2 stood approved. This round covers B1/B2 tests and their new checks, plus row222 integration in bus/runtime.mjs and webui/cli.mjs. It does not recast round1 as a prior build approval.
|
||||
|
||||
## B1: activation interpreter evidence
|
||||
|
||||
`row196 interpreter activation checks receipt, identity, plan and startup log` uses scratch copy verifier stand-ins and real release-script control flow. It checks:
|
||||
|
||||
- A successful plan prints the expected interpreter JSON, the started activation log carries the exact same JSON string, and the receipt verifier receives the scratch bus directory, expected identity and fresh start floor.
|
||||
- A refusing receipt fails the interpreter-receipt gate, retains/restores the exact previous pointer and writes gate-failed/rollback-ok with no success entry. A started bus is required to check a receipt; this case therefore has start calls, as clarified in duckworth-0097.
|
||||
- A changed inspect identity between preflight and gate refuses even when the stand-in receipt verifier would return true.
|
||||
- Missing verifier and unsafe inspect refuse interpreter-unsafe in both plan and activation before any start or stop, preserving the pointer.
|
||||
|
||||
M30 removes the receipt block; M31 removes expected-identity comparison; M32 removes missing-verifier refusal; M33 removes unsafe-inspect refusal; M34 removes the started-log identity; M35 removes plan identity. All six are killed. Focused base 6/0 and whole CLI 744/0 include this coverage. Stub identities are fixture metadata, not evidence of a real root-owned Python activation.
|
||||
|
||||
## B2: rehearsal transport and scratch root
|
||||
|
||||
`row196 rehearsal selects socket only for marked copies and uses scratch dataRoot` captures the stand-in Console argv and its parsed MOSAIC_CONFIG dataRoot. The marked copy receives exactly --tester-socket, no TCP flag. The legacy copy gets no tester flag. Both receive `<rehearsal>/data`, not the live root, and live/backup evidence stays byte-identical. The existing stand-in Console remains a synthetic test listener.
|
||||
|
||||
M36 empties the marked-copy socket flags; M37 gives the legacy copy a socket flag. Both are killed. Focused base 3/0 and whole CLI include this coverage. The original callback test's name/assertions remain unchanged; r5's activation-only repair is retained.
|
||||
|
||||
## Row222 merge and review notes
|
||||
|
||||
Both rebases were conflict-free. Initial 222-only branch gander/row196-r6 remains at2a989d466. The later branch rebases onto f48725cfc under sage-2142; r6/range-diff-prd19.txt and patch-id files preserve the exact comparison. The first source patch changes only Console startServer context retaining librarySync; the other ten commits compare equal. r6/review-delta.diff contains the runtime/Console merge and B1/B2/doc changes against the previously reviewed r5 candidate.
|
||||
|
||||
Under --send, Console librarySync uses the existing call/busCaller, exact HUMAN_CLI child and fresh MOSAIC_BUS_CLI_NONCE. server.mjs obtains SO_PEERCRED, runtime authenticateHuman calls verifyPrincipal, then library.sync dispatches under the owner cap with awaited release. The bus-local sync timer calls the library implementation internally; it creates no new external authentication route. Runtime keeps interpreter validation/receipt, peer reader, shared principal binding, sync timer lifecycle and cleanup. Fresh bus/library-sync tests and whole WebUI/CLI passed. No product code was changed for B1/B2.
|
||||
|
||||
- N1 documented/deferred to R3: user-cli.mjs and authenticateUser wiring remain absent by design, so user envelopes refuse. R3 must add and test both.
|
||||
- N2 deferred to a later row: dead testerNoSignIn arguments/comments remain; no product cleanup is mixed into the test changes.
|
||||
- N3 documented without code change: direct serve without peerReader needs safe system Python even for cap-only calls; runtime passes a peerReader, and the fallback fails closed.
|
||||
- N4 fixed in docs/TOOLS.md: rehearsal's longer socket path may fail closed even after the live activation preflight passes.
|
||||
|
||||
BUILD-LOG.md's four row196 phase lines stay outside the manifest, to land as Sage's separate append-only doc commit under gander-0060. Row252 DESIGN.md/BUILD-NOTES.md land with252. Remaining legacy tester-port producer/acceptance scripts are row253, per r5/TESTER-PORT-AUDIT.md; this gate does not claim those live callers have migrated.
|
||||
|
||||
## Fresh gate and carries
|
||||
|
||||
**2334 pass, 0 fail, 1 existing editor-build skip. 38/38 checks killed: nine fresh and 29 carried by exact target SHA equality.** No golden result carries from r5. M17 reran because row222 changed broker.mjs; no old definition targets runtime.mjs or webui/cli.mjs. Original raw failures and the preflight not-run outcome are preserved, not relabeled.
|
||||
|
||||
Each start used busy &&, pipefail and tee, with TMPDIR from mktemp under /mnt/storage/scratch/tmp. The self-named outer tee refusal was classified not a stop by mos-1205; only its log name changed. Both guards remain unchanged. Harness command names were checked against the detector before resumption. Fresh base times are recorded; no fresh timeout occurred.
|
||||
|
||||
The whole-file union retains the eight row215 extras and adds conversation/cohort, library/mapping, library/sync and tasks/requirements touched by the new base. All twelve ran whole, as did bus, WebUI, CLI and all ten shell scripts. Raw logs/whole-results.json are in r6/; log-recount.json independently verifies every summary and records log hashes. consolidated-kills.json records each accepted source and target hash. r6/RESULTS.md lists all timings and every kill.
|
||||
|
||||
Final sweep: **0 gate leftovers**, eight pre-existing harness helpers retained. Gate tracked tree clean; only linked node_modules is untracked. Slot returned to Sage and Mos in gander-0066. No merge, deployment, live activation, actual second-uid probe or real provider test was performed.
|
||||
|
||||
'''
|
||||
review += table
|
||||
review += '''
|
||||
## Preserved boundary and provenance limits
|
||||
|
||||
The approved design r3 and round1 hold the private tester listener, one verifier, kernel-peer proof, path-bound human walk, Console direct-parent user rule and separate nonce kinds. bus.tester remains Jason's switch. No browser relay or control-board change is included. The 7331 tooling boundary stays inventory only. Explicit human refusal is human-required and helper refusal peercred-required; abrupt close without a response remains outcome-unknown.
|
||||
|
||||
Row164's intentional re-pins remain human.mjs 0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079 and webui bus.mjs 934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f. The human file adds the distinct user nonce/parameterized walk; webui bus adds spawn nonce and peer-error mapping. Both pins match the immutable r6 blobs; human-cli and transport pins are unchanged.
|
||||
|
||||
Hostile same-uid processes remain a residual for readable state, process metadata and pathname races. Separate uids narrow cross-instance reach, not reach within one instance. R3 owns verified-session claim mapping, user wiring and live grants. P19 333 keeps the approved text unchanged:
|
||||
|
||||
The Console provenance option trusts verified code and process metadata, not an independent
|
||||
bus-side OIDC exchange. That trade must be approved, not hidden behind the phrase zero trust.
|
||||
'''
|
||||
assert sha(git('show', candidate + ':packages/bus/src/human.mjs')) == '0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079'
|
||||
assert sha(git('show', candidate + ':packages/webui/src/bus.mjs')) == '934ab2f9b6bde72aafe7814758550c283eb25a4f3a23b284021b13718d67178f'
|
||||
(root / 'MANIFEST.md').write_text(review)
|
||||
(out / 'review-delta.diff').write_bytes(git('diff', 'c21465992', candidate, '--', 'packages/bus/src/runtime.mjs', 'packages/webui/src/cli.mjs', 'packages/cli/tests/stack-release.test.mjs', 'docs/TOOLS.md'))
|
||||
with (root / 'BUILD.md').open('a') as file:
|
||||
file.write('\n2026-10-21 r6 gate complete under sage-2145 on527b9a1e6: bus627/0, WebUI304/0/1, CLI744/0, twelve extra whole files230/0, ten shell scripts429/0. Fresh golden total2334/0/1, 929.581986 summed seconds. Nine required reruns killed, no timeout, clean SHA/Git restoration; 29 original target blobs match and carry, 38 total. First M17 busy refusal stays not-run under mos-1205, raw records preserved. Sweep0 gate leftovers/eight pre-existing helpers. Slot returned Sage/Mos in gander-0066. Final immutable39-path manifest regenerated against f48725cfc; full recount/kill evidence in r6/. No queue write while Morgana slot runs.\n')
|
||||
with (root / 'PROGRESS.md').open('a') as file:
|
||||
file.write('\nR6 complete on527b9a1e6, based f48725cfc: fresh2334/0/1, 38 kills (nine fresh, 29 exact-target carries), no timeouts. Slot returned gander-0066, sweep0/eight pre-existing helpers. New manifest/hash files freeze the candidate. Duckworth next reviews B1/B2 and row222 integration under0096; full first review outside B1/B2 stands. Await round2 queue coordination from Sage; no writes during Morgana244 slot. No PR/merge/live activation.\n')
|
||||
print(json.dumps(dict(golden=summary['golden'], killed=38, entries=len(entries), manifestDigest=sha(manifest.encode())), indent=2))
|
||||
@@ -0,0 +1 @@
|
||||
mos-1205: M17 was not run. The busy preflight refused our own sibling tee log name. This raw killed=false result is neither survivor nor kill. Original output is unchanged. The 23 passing base checks carry under sage-2145.
|
||||
@@ -0,0 +1 @@
|
||||
BUSY 2931286: tee agents/gander/work/queue-196/r6/mutant-driver.log
|
||||
@@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"id": "M17",
|
||||
"description": "tester switch ignored",
|
||||
"test": "packages/bus/tests/tester.test.mjs",
|
||||
"args": [
|
||||
"--test",
|
||||
"packages/bus/tests/tester.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": false,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 1.368,
|
||||
"baseWallSeconds": 2.725494864,
|
||||
"baseArgs": [
|
||||
"packages/bus/tests/tester.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "c2f2f558aae5768d3f5fe2ecc113760cc4027d868bb74627a6702c6babd96db2"
|
||||
}
|
||||
]
|
||||
@@ -1 +1,67 @@
|
||||
BUSY 2931286: tee agents/gander/work/queue-196/r6/mutant-driver.log
|
||||
CLEAR (current driver ancestors excluded)
|
||||
✖ the tester binds only when the business sets bus.tester to exactly true (14.466765ms)
|
||||
✔ a business may not name a role tester, so the tester address is never a role (16.772112ms)
|
||||
✔ every verb outside the tester list refuses tester-refused and is recorded against the tester (34.982558ms)
|
||||
✔ a tester message is from tester, needs no prefix, and writes no human.input or authority (14.345235ms)
|
||||
✔ a tester message to a role no run holds refuses tester-target-not-running and stores nothing (9.3972ms)
|
||||
✔ a tester message is refused while the run is only launched, and routes once it claims (12.705931ms)
|
||||
✔ a human message to a role no run holds still waits and tells launch.by (11.168167ms)
|
||||
✔ a role answers a tester only in reply to a tester message, and the answer never reaches the human (19.4019ms)
|
||||
✔ the tester reads the human views a reader reads (22.477716ms)
|
||||
✔ tester proof binds its own CLI, start time and nonce, refuses a managed run and allows an agent (1.176446ms)
|
||||
✔ neither CLI's nonce proves the other: each proof is bound to its own CLI and nonce variable (0.362237ms)
|
||||
✔ testerNonce reads only the tester's variable and gives null on any read error (0.190297ms)
|
||||
✔ an envelope carries exactly one of cap, human and tester; no tester authenticator refuses (95.297136ms)
|
||||
✖ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (929.616309ms)
|
||||
ℹ tests 14
|
||||
ℹ suites 0
|
||||
ℹ pass 12
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 1276.659619
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/bus/tests/tester.test.mjs:44:1
|
||||
✖ the tester binds only when the business sets bus.tester to exactly true (14.466765ms)
|
||||
AssertionError [ERR_ASSERTION]: Missing expected exception: null
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/bus/tests/tester.test.mjs:47:12)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.start (node:internal/test_runner/test:1262:17)
|
||||
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: undefined,
|
||||
expected: { code: 'tester-off' },
|
||||
operator: 'throws',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/bus/tests/tester.test.mjs:427:1
|
||||
✖ tester-cli.mjs binds through the runtime when the switch is on, and refuses off or under a run marker (929.616309ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
{
|
||||
+ err: '',
|
||||
+ out: '[]',
|
||||
+ status: 0
|
||||
- err: 'tester-off',
|
||||
- out: '',
|
||||
- status: 2
|
||||
}
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/bus/tests/tester.test.mjs:448:10)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: { status: 0, out: '[]', err: '' },
|
||||
expected: { status: 2, out: '', err: 'tester-off' },
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 interpreter activation checks receipt, identity, plan and startup log
|
||||
✖ plan and started log preserve the same interpreter JSON (2169.679865ms)
|
||||
✖ interpreter-receipt-refuse fails at the gate and restores the pointer (2057.018002ms)
|
||||
✖ interpreter-drift fails at the gate and restores the pointer (1970.478384ms)
|
||||
✔ missing-verifier refuses before any start or stop (1006.743258ms)
|
||||
✔ interpreter-unsafe refuses before any start or stop (1009.558065ms)
|
||||
✖ row196 interpreter activation checks receipt, identity, plan and startup log (8215.461107ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 2
|
||||
ℹ fail 4
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 8867.50853
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2347:10
|
||||
✖ plan and started log preserve the same interpreter JSON (2169.679865ms)
|
||||
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
|
||||
|
||||
assert.ok(verified.length>0)
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2355:10)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2347:2)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: false,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2357:83
|
||||
✖ interpreter-receipt-refuse fails at the gate and restores the pointer (2057.018002ms)
|
||||
AssertionError [ERR_ASSERTION]: stack-release: interpreter: {"path":"/usr/bin/python3","sha256":"fixture-root-owned-ELF"}
|
||||
stack-release: captured the rollback set: /mnt/storage/scratch/tmp/gc58/sr-ewXipV/data/state/stack-rollback/20261021T202626Z-454342cd0fc0
|
||||
stack-release: stopped both units
|
||||
stack-release: stopped store schema: 3g
|
||||
stack-release: backup: /mnt/storage/scratch/tmp/gc58/sr-ewXipV/data/backups/stack/20261021T202626Z-454342cd0fc0
|
||||
stack-release: installed 454342cd0fc093d1499f4020ed0c4d97d8c64456
|
||||
stack-release: gate passed on 454342cd0fc093d1499f4020ed0c4d97d8c64456
|
||||
stack-release: activate ok: 454342cd0fc093d1499f4020ed0c4d97d8c64456 is live for acme
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2360:10)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2357:75)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2357:83
|
||||
✖ interpreter-drift fails at the gate and restores the pointer (1970.478384ms)
|
||||
AssertionError [ERR_ASSERTION]: stack-release: interpreter: {"path":"/usr/bin/python3","sha256":"fixture-root-owned-ELF"}
|
||||
stack-release: captured the rollback set: /mnt/storage/scratch/tmp/gc58/sr-YRwbW0/data/state/stack-rollback/20261021T202628Z-454342cd0fc0
|
||||
stack-release: stopped both units
|
||||
stack-release: stopped store schema: 3g
|
||||
stack-release: backup: /mnt/storage/scratch/tmp/gc58/sr-YRwbW0/data/backups/stack/20261021T202628Z-454342cd0fc0
|
||||
stack-release: installed 454342cd0fc093d1499f4020ed0c4d97d8c64456
|
||||
stack-release: gate passed on 454342cd0fc093d1499f4020ed0c4d97d8c64456
|
||||
stack-release: activate ok: 454342cd0fc093d1499f4020ed0c4d97d8c64456 is live for acme
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2360:10)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2357:75)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 interpreter activation checks receipt, identity, plan and startup log
|
||||
✔ plan and started log preserve the same interpreter JSON (2403.997056ms)
|
||||
✔ interpreter-receipt-refuse fails at the gate and restores the pointer (3277.935028ms)
|
||||
✖ interpreter-drift fails at the gate and restores the pointer (1875.965856ms)
|
||||
✔ missing-verifier refuses before any start or stop (1007.506582ms)
|
||||
✔ interpreter-unsafe refuses before any start or stop (1151.149921ms)
|
||||
✖ row196 interpreter activation checks receipt, identity, plan and startup log (9719.160881ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 10267.237554
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2357:83
|
||||
✖ interpreter-drift fails at the gate and restores the pointer (1875.965856ms)
|
||||
AssertionError [ERR_ASSERTION]: stack-release: interpreter: {"path":"/usr/bin/python3","sha256":"fixture-root-owned-ELF"}
|
||||
stack-release: captured the rollback set: /mnt/storage/scratch/tmp/gc58/sr-T6r9pj/data/state/stack-rollback/20261021T202639Z-7a797568d494
|
||||
stack-release: stopped both units
|
||||
stack-release: stopped store schema: 3g
|
||||
stack-release: backup: /mnt/storage/scratch/tmp/gc58/sr-T6r9pj/data/backups/stack/20261021T202639Z-7a797568d494
|
||||
stack-release: installed 7a797568d49423f133aa285d0c1fa6a06a490442
|
||||
stack-release: gate passed on 7a797568d49423f133aa285d0c1fa6a06a490442
|
||||
stack-release: activate ok: 7a797568d49423f133aa285d0c1fa6a06a490442 is live for acme
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2360:10)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2357:75)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 interpreter activation checks receipt, identity, plan and startup log
|
||||
✔ plan and started log preserve the same interpreter JSON (2243.994423ms)
|
||||
✔ interpreter-receipt-refuse fails at the gate and restores the pointer (3354.546492ms)
|
||||
✔ interpreter-drift fails at the gate and restores the pointer (3267.092758ms)
|
||||
✖ missing-verifier refuses before any start or stop (823.224697ms)
|
||||
✔ interpreter-unsafe refuses before any start or stop (1118.436597ms)
|
||||
✖ row196 interpreter activation checks receipt, identity, plan and startup log (10809.673518ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 11534.67585
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2365:74
|
||||
✖ missing-verifier refuses before any start or stop (823.224697ms)
|
||||
AssertionError [ERR_ASSERTION]: plan: activate for acme
|
||||
from: cacc2386ac7cefc35fea037c5e6a3047bfbe7611
|
||||
to: f9a2b5eac33c82adda629dd0cdc94efab450a4c1
|
||||
store schema: 3g (read from the store the running bus holds)
|
||||
target schema: 3g
|
||||
migration: none; the store is at the target's version
|
||||
backup: the run backs up the stopped store to /mnt/storage/scratch/tmp/gc58/sr-2VxZBX/data/backups/stack/<activation>/ before any migration
|
||||
commits: the run adds 1 (newest first, at most 200):
|
||||
f9a2b5e row 903: C1
|
||||
bus: scripts/bus-service.sh install --copy f9a2b5eac33c82adda629dd0cdc94efab450a4c1 --copies /mnt/storage/scratch/tmp/gc58/stack-release-8hLy3O/copies --claude /mnt/storage/scratch/tmp/gc58/sr-2VxZBX/claude-bin/claude
|
||||
proof: off
|
||||
send: off
|
||||
Console: scripts/webui-service.sh install --copy f9a2b5eac33c82adda629dd0cdc94efab450a4c1 --copies /mnt/storage/scratch/tmp/gc58/stack-release-8hLy3O/copies --port 39321 --business acme --tester-socket
|
||||
CLI: scripts/stack-copy.sh wrapper f9a2b5eac33c82adda629dd0cdc94efab450a4c1 --copies /mnt/storage/scratch/tmp/gc58/stack-release-8hLy3O/copies --bin /mnt/storage/scratch/tmp/gc58/sr-2VxZBX/bin
|
||||
|
||||
|
||||
0 !== 3
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2371:12)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2365:66)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 3,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 interpreter activation checks receipt, identity, plan and startup log
|
||||
✔ plan and started log preserve the same interpreter JSON (2291.81403ms)
|
||||
✔ interpreter-receipt-refuse fails at the gate and restores the pointer (2218.385802ms)
|
||||
✔ interpreter-drift fails at the gate and restores the pointer (3370.11504ms)
|
||||
✔ missing-verifier refuses before any start or stop (1148.17829ms)
|
||||
✖ interpreter-unsafe refuses before any start or stop (820.916577ms)
|
||||
✖ row196 interpreter activation checks receipt, identity, plan and startup log (9851.908618ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 10519.037677
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2365:74
|
||||
✖ interpreter-unsafe refuses before any start or stop (820.916577ms)
|
||||
AssertionError [ERR_ASSERTION]: plan: activate for acme
|
||||
from: b46e174312f7696d49c48a7fd3bb5be21353b6af
|
||||
to: dbbe95ffe66ccb1e658d3ca7314da8bbfdab93a4
|
||||
store schema: 3g (read from the store the running bus holds)
|
||||
target schema: 3g
|
||||
migration: none; the store is at the target's version
|
||||
backup: the run backs up the stopped store to /mnt/storage/scratch/tmp/gc58/sr-XRv4sk/data/backups/stack/<activation>/ before any migration
|
||||
commits: the run adds 1 (newest first, at most 200):
|
||||
dbbe95f row 903: C1
|
||||
bus: scripts/bus-service.sh install --copy dbbe95ffe66ccb1e658d3ca7314da8bbfdab93a4 --copies /mnt/storage/scratch/tmp/gc58/stack-release-UQjple/copies --claude /mnt/storage/scratch/tmp/gc58/sr-XRv4sk/claude-bin/claude
|
||||
proof: off
|
||||
send: off
|
||||
Console: scripts/webui-service.sh install --copy dbbe95ffe66ccb1e658d3ca7314da8bbfdab93a4 --copies /mnt/storage/scratch/tmp/gc58/stack-release-UQjple/copies --port 35703 --business acme --tester-socket
|
||||
CLI: scripts/stack-copy.sh wrapper dbbe95ffe66ccb1e658d3ca7314da8bbfdab93a4 --copies /mnt/storage/scratch/tmp/gc58/stack-release-UQjple/copies --bin /mnt/storage/scratch/tmp/gc58/sr-XRv4sk/bin
|
||||
|
||||
|
||||
0 !== 3
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2371:12)
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2365:66)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 3,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 interpreter activation checks receipt, identity, plan and startup log
|
||||
✖ plan and started log preserve the same interpreter JSON (2139.114828ms)
|
||||
✔ interpreter-receipt-refuse fails at the gate and restores the pointer (3324.041026ms)
|
||||
✔ interpreter-drift fails at the gate and restores the pointer (3275.346481ms)
|
||||
✔ missing-verifier refuses before any start or stop (987.916479ms)
|
||||
✔ interpreter-unsafe refuses before any start or stop (1061.230928ms)
|
||||
✖ row196 interpreter activation checks receipt, identity, plan and startup log (10789.471423ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 11502.061182
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2347:10
|
||||
✖ plan and started log preserve the same interpreter JSON (2139.114828ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
+ actual - expected
|
||||
|
||||
+ undefined
|
||||
- '{"path":"/usr/bin/python3","sha256":"fixture-root-owned-ELF"}'
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2353:10)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2347:2)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: undefined,
|
||||
expected: '{"path":"/usr/bin/python3","sha256":"fixture-root-owned-ELF"}',
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 interpreter activation checks receipt, identity, plan and startup log
|
||||
✖ plan and started log preserve the same interpreter JSON (860.184347ms)
|
||||
✔ interpreter-receipt-refuse fails at the gate and restores the pointer (3305.553414ms)
|
||||
✔ interpreter-drift fails at the gate and restores the pointer (3286.003733ms)
|
||||
✔ missing-verifier refuses before any start or stop (992.325977ms)
|
||||
✔ interpreter-unsafe refuses before any start or stop (1034.321025ms)
|
||||
✖ row196 interpreter activation checks receipt, identity, plan and startup log (9480.200982ms)
|
||||
ℹ tests 6
|
||||
ℹ suites 0
|
||||
ℹ pass 4
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 10193.225262
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2347:10
|
||||
✖ plan and started log preserve the same interpreter JSON (860.184347ms)
|
||||
AssertionError [ERR_ASSERTION]: plan: activate for acme
|
||||
from: ca18054696409039950d5c7a1d43bc56d9d59d67
|
||||
to: 695b42063641608b78e385c1c9b1a4cda2fbef19
|
||||
store schema: 3g (read from the store the running bus holds)
|
||||
target schema: 3g
|
||||
migration: none; the store is at the target's version
|
||||
backup: the run backs up the stopped store to /mnt/storage/scratch/tmp/gc58/sr-03HAwl/data/backups/stack/<activation>/ before any migration
|
||||
commits: the run adds 1 (newest first, at most 200):
|
||||
695b420 row 903: C1
|
||||
bus: scripts/bus-service.sh install --copy 695b42063641608b78e385c1c9b1a4cda2fbef19 --copies /mnt/storage/scratch/tmp/gc58/stack-release-BmTV5E/copies --claude /mnt/storage/scratch/tmp/gc58/sr-03HAwl/claude-bin/claude
|
||||
proof: off
|
||||
send: off
|
||||
Console: scripts/webui-service.sh install --copy 695b42063641608b78e385c1c9b1a4cda2fbef19 --copies /mnt/storage/scratch/tmp/gc58/stack-release-BmTV5E/copies --port 43633 --business acme --tester-socket
|
||||
CLI: scripts/stack-copy.sh wrapper 695b42063641608b78e385c1c9b1a4cda2fbef19 --copies /mnt/storage/scratch/tmp/gc58/stack-release-BmTV5E/copies --bin /mnt/storage/scratch/tmp/gc58/sr-03HAwl/bin
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2350:59)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2347:2)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: null,
|
||||
expected: true,
|
||||
operator: '==',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
|
||||
✖ socket copy (3432.784699ms)
|
||||
✔ legacy copy (3433.816123ms)
|
||||
✖ row196 rehearsal selects socket only for marked copies and uses scratch dataRoot (6867.844517ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 7248.58625
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2382:43
|
||||
✖ socket copy (3432.784699ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
'serve',
|
||||
'--port',
|
||||
'45437',
|
||||
'--business',
|
||||
'acme',
|
||||
- '--tester-socket'
|
||||
]
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2387:36)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2382:35)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: [ 'serve', '--port', '45437', '--business', 'acme' ],
|
||||
expected: [ 'serve', '--port', '45437', '--business', 'acme', '--tester-socket' ],
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
▶ row196 rehearsal selects socket only for marked copies and uses scratch dataRoot
|
||||
✔ socket copy (3444.656429ms)
|
||||
✖ legacy copy (2419.695725ms)
|
||||
✖ row196 rehearsal selects socket only for marked copies and uses scratch dataRoot (5866.008463ms)
|
||||
ℹ tests 3
|
||||
ℹ suites 0
|
||||
ℹ pass 1
|
||||
ℹ fail 2
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 6546.507553
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at packages/cli/tests/stack-release.test.mjs:2382:43
|
||||
✖ legacy copy (2419.695725ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
'serve',
|
||||
'--port',
|
||||
'34821',
|
||||
'--business',
|
||||
'acme',
|
||||
+ '--tester-socket'
|
||||
]
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2387:36)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/gc58/g196-mut-NRmndP/packages/cli/tests/stack-release.test.mjs:2382:35)
|
||||
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: [ 'serve', '--port', '34821', '--business', 'acme', '--tester-socket' ],
|
||||
expected: [ 'serve', '--port', '34821', '--business', 'acme' ],
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
@@ -9,9 +9,9 @@
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": false,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 1.368,
|
||||
"wallSeconds": 2.728,
|
||||
"baseWallSeconds": 2.725494864,
|
||||
"baseArgs": [
|
||||
"packages/bus/tests/tester.test.mjs"
|
||||
@@ -22,5 +22,237 @@
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "c2f2f558aae5768d3f5fe2ecc113760cc4027d868bb74627a6702c6babd96db2"
|
||||
},
|
||||
{
|
||||
"id": "M30",
|
||||
"description": "gate skips interpreter receipt",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 10.226,
|
||||
"baseWallSeconds": 13.037174619,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M31",
|
||||
"description": "gate ignores changed interpreter",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 11.644,
|
||||
"baseWallSeconds": 13.037174619,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M32",
|
||||
"description": "marked target without verifier accepted",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 12.902,
|
||||
"baseWallSeconds": 13.037174619,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M33",
|
||||
"description": "unsafe interpreter inspection not refused",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 12.069,
|
||||
"baseWallSeconds": 13.037174619,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M34",
|
||||
"description": "started log omits interpreter identity",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 12.854,
|
||||
"baseWallSeconds": 13.037174619,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M35",
|
||||
"description": "plan omits interpreter identity",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 11.586,
|
||||
"baseWallSeconds": 13.037174619,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 interpreter activation",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M36",
|
||||
"description": "marked rehearsal omits tester socket",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 rehearsal selects",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 rehearsal selects",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 8.629,
|
||||
"baseWallSeconds": 9.069833057000002,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 rehearsal selects",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"id": "M37",
|
||||
"description": "legacy rehearsal receives tester socket",
|
||||
"test": [
|
||||
"--test-name-pattern=row196 rehearsal selects",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-name-pattern=row196 rehearsal selects",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"status": 1,
|
||||
"signal": null,
|
||||
"killed": true,
|
||||
"timedOut": false,
|
||||
"wallSeconds": 7.91,
|
||||
"baseWallSeconds": 9.069833057000002,
|
||||
"baseArgs": [
|
||||
"--test-name-pattern=row196 rehearsal selects",
|
||||
"packages/cli/tests/stack-release.test.mjs"
|
||||
],
|
||||
"restoredGitStatus": "",
|
||||
"timeoutSeconds": 60,
|
||||
"timeoutKillAfterSeconds": 2,
|
||||
"processGroupTimeout": true,
|
||||
"syntaxStatus": 0,
|
||||
"restoredSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"rule": "mos-1205",
|
||||
"plannedHarnessCommands": [
|
||||
"node agents/gander/work/queue-196/r6/driver.mjs",
|
||||
"tee agents/gander/work/queue-196/r6/controller.log",
|
||||
"node agents/gander/work/queue-196/r6/whole.mjs",
|
||||
"tee agents/gander/work/queue-196/r6/whole-driver.log",
|
||||
"python3 agents/gander/work/queue-196/r2/busy.py"
|
||||
],
|
||||
"detectorPattern": "node --test|gate\\.sh|mutant|scripts/test-[a-z-]+\\.sh|docker compose",
|
||||
"matches": [],
|
||||
"exception": "Actual test commands are the guarded work, not harness names; the busy check runs before each."
|
||||
}
|
||||
@@ -0,0 +1,152 @@
|
||||
[
|
||||
{
|
||||
"log": "bus.log",
|
||||
"sha256": "c9afc6dcab8de422596fac3605c80258f34419734286e3a8d8fbbfe20a1543c9",
|
||||
"passCount": 627,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "webui.log",
|
||||
"sha256": "fa7158b98d2bd65bd636e15c5098ddc68ce0d3525ee1303e4aa63d87839f0fc4",
|
||||
"passCount": 304,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "cli.log",
|
||||
"sha256": "bd053cadfa1670e32df8f77c468b5b1b0933e115d034b234b5db0e332d3c8d2a",
|
||||
"passCount": 744,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_business_tests_business.test.mjs.log",
|
||||
"sha256": "4aedaadf2b187b153016200b42dd4e3eca522085590a13ca2e73bd293d5cd0a1",
|
||||
"passCount": 19,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_business_tests_cli.test.mjs.log",
|
||||
"sha256": "778cfb46be37ebea6cb0e78b958da13b1437b24462d5ceb0c79b338ead559314",
|
||||
"passCount": 10,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_business_tests_instance-settings.test.mjs.log",
|
||||
"sha256": "2d515649254568dd3ab9829a5d171f0e116ec8ccdb261043211f8defd218e3f0",
|
||||
"passCount": 13,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_business_tests_library-projects-protected.test.mjs.log",
|
||||
"sha256": "889534a28d834638ef14b7a198446169075fda012e689e6e2321fedfa032f354",
|
||||
"passCount": 4,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_business_tests_resolve.test.mjs.log",
|
||||
"sha256": "61014061483e594017c8cfcb14d731c74b25204b2f5442caf62a5e12018f018d",
|
||||
"passCount": 11,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_conversation_tests_cohort.test.mjs.log",
|
||||
"sha256": "593cb1d6f429fce3faf86917bbe407d22b5485ca402868a657bd566461c1f7f1",
|
||||
"passCount": 38,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_library_tests_mapping.test.mjs.log",
|
||||
"sha256": "d7960efe6440f2df8c5ed1ea1fd4a65f14582cdf75b9ff5413f4a06af0bbfaf4",
|
||||
"passCount": 8,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_library_tests_mirror.test.mjs.log",
|
||||
"sha256": "fdd430fc2812f079cb3a8e778ff5a9346e68ec1ffbc036e509be2f6fca65b6ab",
|
||||
"passCount": 16,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_library_tests_sync.test.mjs.log",
|
||||
"sha256": "81e379d4d1fdfe0f4b95bb30bc6e2222d05f487ad208e6b73f8086af91560c3c",
|
||||
"passCount": 15,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_project_tests_project.test.mjs.log",
|
||||
"sha256": "8dabef450d1305bc314099f5186fe85de0aa150cc80a7a8354ce949d6d66190c",
|
||||
"passCount": 15,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_seat_tests_checkout.test.mjs.log",
|
||||
"sha256": "61a985e3cf34804e4fc93fcb87cffd914113fc8534659ac42546f967aef39011",
|
||||
"passCount": 78,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "packages_tasks_tests_requirements.test.mjs.log",
|
||||
"sha256": "df60eec5575c300ffa30ac294e3a3878baef26ec7fa810d431ac5227a2c9ff8c",
|
||||
"passCount": 3,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-auth.sh.log",
|
||||
"sha256": "f3784a0f42d8d6b7947bbfcad6038cee8ba0bf81067addfebd3ae2094bf1f916",
|
||||
"passCount": 15,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-conductor.sh.log",
|
||||
"sha256": "ae77d53f738ba07574d86ee60a116a3bc8c4a2f5a1a0e68c258ae1d254dceaa8",
|
||||
"passCount": 17,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-config.sh.log",
|
||||
"sha256": "2e41f642485407cea7d4d3b1dc180bda27d944c8af9af5d80ab1bdc0f5b54d5c",
|
||||
"passCount": 31,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-discord.sh.log",
|
||||
"sha256": "6c9c61092fc049545464959009fad551caaabdaa6b4433ea6812e28a49137824",
|
||||
"passCount": 78,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-extension-package.sh.log",
|
||||
"sha256": "fc08fe9aa23a3f98b987c97cff0fd6a0a01c984f47c909cb7215aca0a330742f",
|
||||
"passCount": 18,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-foundation.sh.log",
|
||||
"sha256": "26fd7d925f0cd5cbf4477ab7354eaf950cb096718046a5c8a12f123415b7463e",
|
||||
"passCount": 44,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-land-work.sh.log",
|
||||
"sha256": "9b32bc54922584b4da25b51301fbc350e9073096cda93b366155664570e35d11",
|
||||
"passCount": 86,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-queue.sh.log",
|
||||
"sha256": "20050cb4ebf0dc7217351fd6f1484fae68f30e56123513c63c5fc81dbf10f70d",
|
||||
"passCount": 28,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-release.sh.log",
|
||||
"sha256": "bc4352fe2bc362875a7b12dd7126f1f8290e2411b6c7801b23a3fd75c98adb82",
|
||||
"passCount": 14,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "test-task.sh.log",
|
||||
"sha256": "a7120694673b68261333445289755d748fe2b7bb6f4c9d5f4241cbc7b9aa1405",
|
||||
"passCount": 98,
|
||||
"failCount": 0
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,125 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04: library mappings load without roots, remain frozen, and retain mapping refusals
|
||||
ok 1 - C2-04: library mappings load without roots, remain frozen, and retain mapping refusals
|
||||
---
|
||||
duration_ms: 8.870442
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04: an otherwise valid publish grant cannot name a library repo
|
||||
ok 2 - C2-04: an otherwise valid publish grant cannot name a library repo
|
||||
---
|
||||
duration_ms: 1.846932
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: config directory and file path follow MOSAIC_CONFIG
|
||||
ok 3 - config directory and file path follow MOSAIC_CONFIG
|
||||
---
|
||||
duration_ms: 0.19008
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the fixture business validates and comes back frozen
|
||||
ok 4 - the fixture business validates and comes back frozen
|
||||
---
|
||||
duration_ms: 0.851464
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: two instances may share a definition
|
||||
ok 5 - two instances may share a definition
|
||||
---
|
||||
duration_ms: 0.827129
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: top-level refusals
|
||||
ok 6 - top-level refusals
|
||||
---
|
||||
duration_ms: 2.727813
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: arbiters and projects
|
||||
ok 7 - arbiters and projects
|
||||
---
|
||||
duration_ms: 4.149021
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: role instances
|
||||
ok 8 - role instances
|
||||
---
|
||||
duration_ms: 2.000452
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: Vikunja bots
|
||||
ok 9 - Vikunja bots
|
||||
---
|
||||
duration_ms: 4.943635
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a role without Vikunja takes no tracker block
|
||||
ok 10 - a role without Vikunja takes no tracker block
|
||||
---
|
||||
duration_ms: 2.116489
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: credential references match the definition's services
|
||||
ok 11 - credential references match the definition's services
|
||||
---
|
||||
duration_ms: 2.278015
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: launch
|
||||
ok 12 - launch
|
||||
---
|
||||
duration_ms: 7.368251
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses
|
||||
ok 13 - REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses
|
||||
---
|
||||
duration_ms: 4.049663
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: loadBusiness: file checks
|
||||
ok 14 - loadBusiness: file checks
|
||||
---
|
||||
duration_ms: 1.60597
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: loadBusiness: not a regular file
|
||||
ok 15 - loadBusiness: not a regular file
|
||||
---
|
||||
duration_ms: 35.707706
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: loading writes nothing
|
||||
ok 16 - loading writes nothing
|
||||
---
|
||||
duration_ms: 1.43616
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: names that are Object.prototype properties don't count as declared
|
||||
ok 17 - names that are Object.prototype properties don't count as declared
|
||||
---
|
||||
duration_ms: 3.17666
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the shipped example refuses as written and validates once filled in
|
||||
ok 18 - the shipped example refuses as written and validates once filled in
|
||||
---
|
||||
duration_ms: 0.762966
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: persona vars: agent layer, creative definition only, both or neither
|
||||
ok 19 - persona vars: agent layer, creative definition only, both or neither
|
||||
---
|
||||
duration_ms: 7.975551
|
||||
type: 'test'
|
||||
...
|
||||
1..19
|
||||
# tests 19
|
||||
# suites 0
|
||||
# pass 19
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 144.095078
|
||||
@@ -0,0 +1,71 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04: business validate and resolve skip a library before code projects and credential checks
|
||||
ok 1 - C2-04: business validate and resolve skip a library before code projects and credential checks
|
||||
---
|
||||
duration_ms: 201.188943
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: usage errors exit 4
|
||||
ok 2 - usage errors exit 4
|
||||
---
|
||||
duration_ms: 273.320414
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: a good business exits 0 and prints instance digests
|
||||
ok 3 - validate: a good business exits 0 and prints instance digests
|
||||
---
|
||||
duration_ms: 65.538522
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: project files
|
||||
ok 4 - validate: project files
|
||||
---
|
||||
duration_ms: 304.575888
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: missing files and a broken system config
|
||||
ok 5 - validate: missing files and a broken system config
|
||||
---
|
||||
duration_ms: 225.60216
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: credential reference problems exit 2 and name each one
|
||||
ok 6 - validate: credential reference problems exit 2 and name each one
|
||||
---
|
||||
duration_ms: 62.836479
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: a token file inside the repository is refused
|
||||
ok 7 - validate: a token file inside the repository is refused
|
||||
---
|
||||
duration_ms: 58.076823
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: role definitions come from MOSAIC_ROLES_DIR
|
||||
ok 8 - validate: role definitions come from MOSAIC_ROLES_DIR
|
||||
---
|
||||
duration_ms: 184.308893
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: resolve: prints one instance's record
|
||||
ok 9 - resolve: prints one instance's record
|
||||
---
|
||||
duration_ms: 256.557599
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: resolve: refusals
|
||||
ok 10 - resolve: refusals
|
||||
---
|
||||
duration_ms: 366.009839
|
||||
type: 'test'
|
||||
...
|
||||
1..10
|
||||
# tests 10
|
||||
# suites 0
|
||||
# pass 10
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 2050.815869
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04: instance settings skip a library while checking a later code project
|
||||
ok 1 - C2-04: instance settings skip a library while checking a later code project
|
||||
---
|
||||
duration_ms: 22.918547
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 read lists each instance and the definitions add accepts
|
||||
ok 2 - row 165 read lists each instance and the definitions add accepts
|
||||
---
|
||||
duration_ms: 2.354854
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 add: two instances join, validate exits 0, the log names the human, and the bus restart is reported
|
||||
ok 3 - row 165 add: two instances join, validate exits 0, the log names the human, and the bus restart is reported
|
||||
---
|
||||
duration_ms: 78.79041
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 change: definition, vars and launch membership log before and after; only a definition change asks for a restart
|
||||
ok 4 - row 165 change: definition, vars and launch membership log before and after; only a definition change asks for a restart
|
||||
---
|
||||
duration_ms: 102.487938
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 refuses each validation failure and leaves the file's bytes alone
|
||||
ok 5 - row 165 refuses each validation failure and leaves the file's bytes alone
|
||||
---
|
||||
duration_ms: 30.963009
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 refuses an added instance whose definition declares credentials, and says why
|
||||
ok 6 - row 165 refuses an added instance whose definition declares credentials, and says why
|
||||
---
|
||||
duration_ms: 3.334124
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 refuses a definition change to or from one that declares credentials
|
||||
ok 7 - row 165 refuses a definition change to or from one that declares credentials
|
||||
---
|
||||
duration_ms: 4.813461
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding
|
||||
ok 8 - row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding
|
||||
---
|
||||
duration_ms: 74.230016
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 refuses an END_PROTECTED definition and every change to a protected instance
|
||||
ok 9 - row 165 refuses an END_PROTECTED definition and every change to a protected instance
|
||||
---
|
||||
duration_ms: 7.901554
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 refuses while a project file doesn't resolve, as validate would
|
||||
ok 10 - row 165 refuses while a project file doesn't resolve, as validate would
|
||||
---
|
||||
duration_ms: 14.250789
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 165 refuses a stale revision and leaves the file's bytes alone
|
||||
ok 11 - row 165 refuses a stale revision and leaves the file's bytes alone
|
||||
---
|
||||
duration_ms: 9.880603
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback
|
||||
ok 12 - row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback
|
||||
---
|
||||
duration_ms: 28.683613
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
|
||||
ok 13 - row 213 a creative instance is the human's: add, vars and definition changes, persona digest only
|
||||
---
|
||||
duration_ms: 86.051914
|
||||
type: 'test'
|
||||
...
|
||||
1..13
|
||||
# tests 13
|
||||
# suites 0
|
||||
# pass 13
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 524.20916
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04 M9: changed playground and hybrid entries leave business and changes.jsonl byte-identical
|
||||
ok 1 - C2-04 M9: changed playground and hybrid entries leave business and changes.jsonl byte-identical
|
||||
---
|
||||
duration_ms: 21.288952
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 M9: code projects, additions, deletions and array changes are protected too
|
||||
ok 2 - C2-04 M9: code projects, additions, deletions and array changes are protected too
|
||||
---
|
||||
duration_ms: 16.912996
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 M9: canonical key order is allowed and a non-project setter still records its change
|
||||
ok 3 - C2-04 M9: canonical key order is allowed and a non-project setter still records its change
|
||||
---
|
||||
duration_ms: 12.868863
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 M9: a serialization hook cannot change projects after the canonical comparison
|
||||
ok 4 - C2-04 M9: a serialization hook cannot change projects after the canonical comparison
|
||||
---
|
||||
duration_ms: 9.580097
|
||||
type: 'test'
|
||||
...
|
||||
1..4
|
||||
# tests 4
|
||||
# suites 0
|
||||
# pass 4
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 110.497631
|
||||
@@ -0,0 +1,77 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04: a library first in projects does not hide a later project layer
|
||||
ok 1 - C2-04: a library first in projects does not hide a later project layer
|
||||
---
|
||||
duration_ms: 6.313222
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: systemVars flattens the validated config
|
||||
ok 2 - systemVars flattens the validated config
|
||||
---
|
||||
duration_ms: 0.805222
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: precedence: system, business, project, project role, agent
|
||||
ok 3 - precedence: system, business, project, project role, agent
|
||||
---
|
||||
duration_ms: 1.494024
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: limits narrow the definition and never widen it
|
||||
ok 4 - limits narrow the definition and never widen it
|
||||
---
|
||||
duration_ms: 1.945071
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: role.launch stays within-role only for the instance the launch block names
|
||||
ok 5 - role.launch stays within-role only for the instance the launch block names
|
||||
---
|
||||
duration_ms: 4.180347
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: limits.authority without role.launch leaves the launcher with no launch block
|
||||
ok 6 - limits.authority without role.launch leaves the launcher with no launch block
|
||||
---
|
||||
duration_ms: 1.702949
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: limits.authority narrows cross-role actions too
|
||||
ok 7 - limits.authority narrows cross-role actions too
|
||||
---
|
||||
duration_ms: 0.820386
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: classify
|
||||
ok 8 - classify
|
||||
---
|
||||
duration_ms: 0.801215
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the record carries what the broker and launcher need
|
||||
ok 9 - the record carries what the broker and launcher need
|
||||
---
|
||||
duration_ms: 0.781209
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: digest: key order doesn't matter, any value change does
|
||||
ok 10 - digest: key order doesn't matter, any value change does
|
||||
---
|
||||
duration_ms: 5.549039
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: refusals
|
||||
ok 11 - refusals
|
||||
---
|
||||
duration_ms: 1.693452
|
||||
type: 'test'
|
||||
...
|
||||
1..11
|
||||
# tests 11
|
||||
# suites 0
|
||||
# pass 11
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 77.681952
|
||||
@@ -0,0 +1,239 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: K1: force stop kills a tool child that called setsid; stopped with a verified proof
|
||||
ok 1 - K1: force stop kills a tool child that called setsid; stopped with a verified proof
|
||||
---
|
||||
duration_ms: 288.206845
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K2: K1 on the process-group fallback ends uncertain, never stopped
|
||||
ok 2 - K2: K1 on the process-group fallback ends uncertain, never stopped
|
||||
---
|
||||
duration_ms: 139.927744
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K3: SIGTERM acknowledged while a member lives: stopping until the kill phase, never stopped from TERM
|
||||
ok 3 - K3: SIGTERM acknowledged while a member lives: stopping until the kill phase, never stopped from TERM
|
||||
---
|
||||
duration_ms: 259.032971
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K4: two engines; force stop one; the other survives by independent observation
|
||||
ok 4 - K4: two engines; force stop one; the other survives by independent observation
|
||||
---
|
||||
duration_ms: 2278.767534
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K5: a stop during a tool call leaves the effect uncertain, and it is shown
|
||||
ok 5 - K5: a stop during a tool call leaves the effect uncertain, and it is shown
|
||||
---
|
||||
duration_ms: 167.058316
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K12: a member forking in a loop: the freeze stops it, enumeration is complete, populated 0 after cgroup.kill
|
||||
ok 6 - K12: a member forking in a loop: the freeze stops it, enumeration is complete, populated 0 after cgroup.kill
|
||||
---
|
||||
duration_ms: 282.961673
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K13: a member writing its pid into another cgroup is refused by the namespace; the kill is complete
|
||||
ok 7 - K13: a member writing its pid into another cgroup is refused by the namespace; the kill is complete
|
||||
---
|
||||
duration_ms: 180.038983
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K15: the shim gone, engine/cgroup.events unreadable, or the engine cgroup missing: evidence unavailable, not empty; uncertain
|
||||
ok 8 - K15: the shim gone, engine/cgroup.events unreadable, or the engine cgroup missing: evidence unavailable, not empty; uncertain
|
||||
---
|
||||
duration_ms: 4402.615163
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K10: controller killed between the TERM and kill phases: restart checks the invocation ID and re-runs from TERM for the same stop
|
||||
ok 9 - K10: controller killed between the TERM and kill phases: restart checks the invocation ID and re-runs from TERM for the same stop
|
||||
---
|
||||
duration_ms: 434.218177
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K11: controller killed after the confirmation is recorded, before TERM: restart checks the invocation ID and re-runs from TERM for the same stop
|
||||
ok 10 - K11: controller killed after the confirmation is recorded, before TERM: restart checks the invocation ID and re-runs from TERM for the same stop
|
||||
---
|
||||
duration_ms: 357.52084
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K14: a unit with the recorded name but another invocation ID: evidence unavailable, no signals, uncertain
|
||||
ok 11 - K14: a unit with the recorded name but another invocation ID: evidence unavailable, no signals, uncertain
|
||||
---
|
||||
duration_ms: 258.750766
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K6: recover without proof, without confirmation, or with changed pins is refused
|
||||
ok 12 - K6: recover without proof, without confirmation, or with changed pins is refused
|
||||
---
|
||||
duration_ms: 67.240978
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K7: recover after proof, then launch: new claim and execution, generation +1, same leaf; the cancelled prompt is not replayed
|
||||
ok 13 - K7: recover after proof, then launch: new claim and execution, generation +1, same leaf; the cancelled prompt is not replayed
|
||||
---
|
||||
duration_ms: 34.073532
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K8: an engine that loads another leaf on resume is refused before admission; it stays claimed until a proven stop
|
||||
ok 14 - K8: an engine that loads another leaf on resume is refused before admission; it stays claimed until a proven stop
|
||||
---
|
||||
duration_ms: 41.375708
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K9: an interrupt that never settles stays uncertain; force stop stays available; takeover is refused while fenced
|
||||
ok 15 - K9: an interrupt that never settles stays uncertain; force stop stays available; takeover is refused while fenced
|
||||
---
|
||||
duration_ms: 3030.046206
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K16: a claim from another machine ID refuses foreign-host; no boot proof is issued
|
||||
ok 16 - K16: a claim from another machine ID refuses foreign-host; no boot proof is issued
|
||||
---
|
||||
duration_ms: 5.74953
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K17: two launcher calls with one eligibility record: one launch, the other refuses, no second engine
|
||||
ok 17 - K17: two launcher calls with one eligibility record: one launch, the other refuses, no second engine
|
||||
---
|
||||
duration_ms: 31.225696
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K18: the leaf changes after eligibility: launch refused; the reservation stays until released with proof
|
||||
ok 18 - K18: the leaf changes after eligibility: launch refused; the reservation stays until released with proof
|
||||
---
|
||||
duration_ms: 26.698378
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: K19: a scope launched with only the engine environment still reaches the user manager; the engine sees no other names
|
||||
ok 19 - K19: a scope launched with only the engine environment still reaches the user manager; the engine sees no other names
|
||||
---
|
||||
duration_ms: 60.801031
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R1: after a proven force stop the controller releases the scope; the shim and the unit are gone
|
||||
ok 20 - R1: after a proven force stop the controller releases the scope; the shim and the unit are gone
|
||||
---
|
||||
duration_ms: 181.918312
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R2: close releases the scope of a binding proven stopped, once, when the stop's own release hasn't run
|
||||
ok 21 - R2: close releases the scope of a binding proven stopped, once, when the stop's own release hasn't run
|
||||
---
|
||||
duration_ms: 289.956918
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R3: no release after an unavailable stop or an unverified proof: the scope and its shim stay as evidence
|
||||
ok 22 - R3: no release after an unavailable stop or an unverified proof: the scope and its shim stay as evidence
|
||||
---
|
||||
duration_ms: 719.873525
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R13: a release with engine/cgroup.events unreadable answers the read's reason; the controller records it unavailable and the scope stays
|
||||
ok 23 - R13: a release with engine/cgroup.events unreadable answers the read's reason; the controller records it unavailable and the scope stays
|
||||
---
|
||||
duration_ms: 201.276816
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: E1: a natural engine exit with no member left: an engine-exit stop, stopped on a proof naming the engine, and the scope released
|
||||
ok 24 - E1: a natural engine exit with no member left: an engine-exit stop, stopped on a proof naming the engine, and the scope released
|
||||
---
|
||||
duration_ms: 189.149086
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: E2: an engine exit with a tool child alive: the stop ends uncertain and nothing is released; a force stop then ends it
|
||||
ok 25 - E2: an engine exit with a tool child alive: the stop ends uncertain and nothing is released; a force stop then ends it
|
||||
---
|
||||
duration_ms: 2260.310692
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: E3: an engine exit and a force stop take one escalation slot, in either order
|
||||
ok 26 - E3: an engine exit and a force stop take one escalation slot, in either order
|
||||
---
|
||||
duration_ms: 633.083521
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: E4: a shim that doesn't answer: the engine-exit stop misses its deadline, ends uncertain and frees the slot
|
||||
ok 27 - E4: a shim that doesn't answer: the engine-exit stop misses its deadline, ends uncertain and frees the slot
|
||||
---
|
||||
duration_ms: 695.36687
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: E5: an engine exit after a force stop ended uncertain starts no engine-exit stop; the force stop stays current
|
||||
ok 28 - E5: an engine exit after a force stop ended uncertain starts no engine-exit stop; the force stop stays current
|
||||
---
|
||||
duration_ms: 2440.489741
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: E6: the engine-exit observation refuses a reaped process that isn't the recorded engine: another PID or start ticks
|
||||
ok 29 - E6: the engine-exit observation refuses a reaped process that isn't the recorded engine: another PID or start ticks
|
||||
---
|
||||
duration_ms: 185.351632
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R5: the harness finds a running shim and reaps it, and never signals a shim outside a mosaic-chat- scope (Filbert N1 and N2 on \#1533)
|
||||
ok 30 - R5: the harness finds a running shim and reaps it, and never signals a shim outside a mosaic-chat- scope (Filbert N1 and N2 on \#1533)
|
||||
---
|
||||
duration_ms: 390.786795
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R6: releaseCohort releases nothing while the engine runs, for another invocation ID, or for a cohort without a scope
|
||||
ok 31 - R6: releaseCohort releases nothing while the engine runs, for another invocation ID, or for a cohort without a scope
|
||||
---
|
||||
duration_ms: 132.434668
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R7: controller killed after the claim is stopped, before the release: the restart releases the scope
|
||||
ok 32 - R7: controller killed after the claim is stopped, before the release: the restart releases the scope
|
||||
---
|
||||
duration_ms: 2327.533525
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R8: controller killed between the two keys' stopped revisions: the restart releases the scope
|
||||
ok 33 - R8: controller killed between the two keys' stopped revisions: the restart releases the scope
|
||||
---
|
||||
duration_ms: 227.431262
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R9: a release that ended unavailable is tried again on a confirmed recover, not a refused one
|
||||
ok 34 - R9: a release that ended unavailable is tried again on a confirmed recover, not a refused one
|
||||
---
|
||||
duration_ms: 211.531385
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R10: close releases and signals nothing for a stopped binding whose proof no longer verifies (Filbert N3 on \#1536)
|
||||
ok 35 - R10: close releases and signals nothing for a stopped binding whose proof no longer verifies (Filbert N3 on \#1536)
|
||||
---
|
||||
duration_ms: 181.635024
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R11: close({ killEngine: true }) after a proven stop sends no signal to the recorded engine PID; a restart releases nothing more
|
||||
ok 36 - R11: close({ killEngine: true }) after a proven stop sends no signal to the recorded engine PID; a restart releases nothing more
|
||||
---
|
||||
duration_ms: 2281.133465
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: R12: a restart onto a claim stopped on a boot proof releases nothing, though its scope is listed
|
||||
ok 37 - R12: a restart onto a claim stopped on a boot proof releases nothing, though its scope is listed
|
||||
---
|
||||
duration_ms: 156.439211
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: no shim from this file's tests is left running for the after hook
|
||||
ok 38 - no shim from this file's tests is left running for the after hook
|
||||
---
|
||||
duration_ms: 4.490343
|
||||
type: 'test'
|
||||
...
|
||||
1..38
|
||||
# tests 38
|
||||
# suites 0
|
||||
# pass 38
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 26568.630392
|
||||
@@ -0,0 +1,59 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: the fixture mapping checks and comes back frozen
|
||||
ok 1 - the fixture mapping checks and comes back frozen
|
||||
---
|
||||
duration_ms: 1.268876
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a playground prefix outside its universe books refuses library-playground-outside-book
|
||||
ok 2 - a playground prefix outside its universe books refuses library-playground-outside-book
|
||||
---
|
||||
duration_ms: 0.457629
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: no playground prefix holds another, and no book folder holds another
|
||||
ok 3 - no playground prefix holds another, and no book folder holds another
|
||||
---
|
||||
duration_ms: 0.291932
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: shape refusals: kind, remote, branch, unknown keys, types, manuscript, folder names
|
||||
ok 4 - shape refusals: kind, remote, branch, unknown keys, types, manuscript, folder names
|
||||
---
|
||||
duration_ms: 0.68926
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a sage-2021: user is optional, kept when given, and must be a plain account name
|
||||
ok 5 - C2-03a sage-2021: user is optional, kept when given, and must be a plain account name
|
||||
---
|
||||
duration_ms: 0.515561
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a hybrid universe is a shape the query code can take (1.4), with sources that must exist
|
||||
ok 6 - a hybrid universe is a shape the query code can take (1.4), with sources that must exist
|
||||
---
|
||||
duration_ms: 0.848344
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a caller-supplied fail receives the code, as business file loading will pass it (C2-04)
|
||||
ok 7 - a caller-supplied fail receives the code, as business file loading will pass it (C2-04)
|
||||
---
|
||||
duration_ms: 0.196865
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: scope comes from the path alone (design 1.2)
|
||||
ok 8 - scope comes from the path alone (design 1.2)
|
||||
---
|
||||
duration_ms: 0.374116
|
||||
type: 'test'
|
||||
...
|
||||
1..8
|
||||
# tests 8
|
||||
# suites 0
|
||||
# pass 8
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 57.127125
|
||||
@@ -0,0 +1,107 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04 mirror: exact default path, bare without checkout or remote, and idempotent initialization
|
||||
ok 1 - C2-04 mirror: exact default path, bare without checkout or remote, and idempotent initialization
|
||||
---
|
||||
duration_ms: 36.805095
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 mirror: simultaneous creators publish one intact mirror and leave no staging paths
|
||||
ok 2 - C2-04 mirror: simultaneous creators publish one intact mirror and leave no staging paths
|
||||
---
|
||||
duration_ms: 27.602572
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 mirror: skipped publication accepts both coreutils statuses without removing the winner
|
||||
ok 3 - C2-04 mirror: skipped publication accepts both coreutils statuses without removing the winner
|
||||
---
|
||||
duration_ms: 108.383419
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 mirror: preserve occupied directories and reject symlink ancestors and code overlaps
|
||||
ok 4 - C2-04 mirror: preserve occupied directories and reject symlink ancestors and code overlaps
|
||||
---
|
||||
duration_ms: 11.813673
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 mirror: existing metadata accepts only bare Git plus state and the precreated lock
|
||||
ok 5 - C2-04 mirror: existing metadata accepts only bare Git plus state and the precreated lock
|
||||
---
|
||||
duration_ms: 20.408573
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 state: missing state is empty only while the served ref is absent
|
||||
ok 6 - C2-04 state: missing state is empty only while the served ref is absent
|
||||
---
|
||||
duration_ms: 35.273492
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 state: valid problems and sync metadata return no content and change no state bytes
|
||||
ok 7 - C2-04 state: valid problems and sync metadata return no content and change no state bytes
|
||||
---
|
||||
duration_ms: 35.735583
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 state: strict keys, types, times, branch, commit and fixed R messages fail closed
|
||||
ok 8 - C2-04 state: strict keys, types, times, branch, commit and fixed R messages fail closed
|
||||
---
|
||||
duration_ms: 96.475604
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 state: symlink, hardlink, non-private state and missing lock refuse without replacement
|
||||
ok 9 - C2-04 state: symlink, hardlink, non-private state and missing lock refuse without replacement
|
||||
---
|
||||
duration_ms: 28.514608
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 file: served commit, not HEAD or a caller commit, owns the exact returned text
|
||||
ok 10 - C2-04 file: served commit, not HEAD or a caller commit, owns the exact returned text
|
||||
---
|
||||
duration_ms: 72.139146
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 file: R1, R2 and R7 exclusions and never-synced mirrors cannot return file bodies
|
||||
ok 11 - C2-04 file: R1, R2 and R7 exclusions and never-synced mirrors cannot return file bodies
|
||||
---
|
||||
duration_ms: 77.871471
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 lock: a first-sync and fast-forward reader wait for a consistent pair across processes
|
||||
ok 12 - C2-04 lock: a first-sync and fast-forward reader wait for a consistent pair across processes
|
||||
---
|
||||
duration_ms: 235.691933
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 lock: same-process waits, timeout code, callback expiry and throw release
|
||||
ok 13 - C2-04 lock: same-process waits, timeout code, callback expiry and throw release
|
||||
---
|
||||
duration_ms: 5027.569097
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 lock: owner death releases the kernel lock without replacing its file
|
||||
ok 14 - C2-04 lock: owner death releases the kernel lock without replacing its file
|
||||
---
|
||||
duration_ms: 52.134391
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 lock: a missing flock binary becomes a handled refusal
|
||||
ok 15 - C2-04 lock: a missing flock binary becomes a handled refusal
|
||||
---
|
||||
duration_ms: 45.804177
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-04 lock: an unawaited scoped read drains before the lock is released
|
||||
ok 16 - C2-04 lock: an unawaited scoped read drains before the lock is released
|
||||
---
|
||||
duration_ms: 20.107632
|
||||
type: 'test'
|
||||
...
|
||||
1..16
|
||||
# tests 16
|
||||
# suites 0
|
||||
# pass 16
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 5982.723057
|
||||
@@ -0,0 +1,101 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-03a argv: the fixed sequence, one https allow, no other protocol key
|
||||
ok 1 - C2-03a argv: the fixed sequence, one https allow, no other protocol key
|
||||
---
|
||||
duration_ms: 1.328893
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a argv: only an https URL with a plain host, no userinfo, and a plain user
|
||||
ok 2 - C2-03a argv: only an https URL with a plain host, no userinfo, and a plain user
|
||||
---
|
||||
duration_ms: 0.522933
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a helper: answers only the exact prompts for the configured host and user (dewey-0765)
|
||||
ok 3 - C2-03a helper: answers only the exact prompts for the configured host and user (dewey-0765)
|
||||
---
|
||||
duration_ms: 24.309935
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a first sync: served is the fetched tip, HEAD is served, the survey reads it, and the token stays in the slot
|
||||
ok 4 - C2-03a first sync: served is the fetched tip, HEAD is served, the survey reads it, and the token stays in the slot
|
||||
---
|
||||
duration_ms: 110.176795
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a fast-forward: served moves, problems are rebuilt, and a repeat changes only lastFetch
|
||||
ok 5 - C2-03a fast-forward: served moves, problems are rebuilt, and a repeat changes only lastFetch
|
||||
---
|
||||
duration_ms: 166.577458
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a Filbert N2: a read that took served before a sync still finds its objects after served moves
|
||||
ok 6 - C2-03a Filbert N2: a read that took served before a sync still finds its objects after served moves
|
||||
---
|
||||
duration_ms: 157.258165
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a overlap: a reader during a sync sees the old pair or the new one, never a mix
|
||||
ok 7 - C2-03a overlap: a reader during a sync sees the old pair or the new one, never a mix
|
||||
---
|
||||
duration_ms: 144.97294
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a diverged: a non-fast-forward keeps serving and holds until a human accepts the tip
|
||||
ok 8 - C2-03a diverged: a non-fast-forward keeps serving and holds until a human accepts the tip
|
||||
---
|
||||
duration_ms: 325.460624
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a accept starts the record over, so a changed branch gets a fresh state
|
||||
ok 9 - C2-03a accept starts the record over, so a changed branch gets a fresh state
|
||||
---
|
||||
duration_ms: 133.703571
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a fetch failure: a wrong token keeps serving and records the error, lastFetch unchanged
|
||||
ok 10 - C2-03a fetch failure: a wrong token keeps serving and records the error, lastFetch unchanged
|
||||
---
|
||||
duration_ms: 158.705028
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a a failed first fetch records the error with nothing served
|
||||
ok 11 - C2-03a a failed first fetch records the error with nothing served
|
||||
---
|
||||
duration_ms: 48.184093
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a a 302 to another host fails the fetch and the other host sees nothing
|
||||
ok 12 - C2-03a a 302 to another host fails the fetch and the other host sees nothing
|
||||
---
|
||||
duration_ms: 51.944784
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a the slot: missing or unsafe refuses before git, and sync never opens it
|
||||
ok 13 - C2-03a the slot: missing or unsafe refuses before git, and sync never opens it
|
||||
---
|
||||
duration_ms: 48.305197
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a sage-2021: an entry with no user refuses library-remote-invalid and runs no git
|
||||
ok 14 - C2-03a sage-2021: an entry with no user refuses library-remote-invalid and runs no git
|
||||
---
|
||||
duration_ms: 25.388489
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: C2-03a one sync per mirror: an overlapping call refuses library-sync-busy
|
||||
ok 15 - C2-03a one sync per mirror: an overlapping call refuses library-sync-busy
|
||||
---
|
||||
duration_ms: 103.103788
|
||||
type: 'test'
|
||||
...
|
||||
1..15
|
||||
# tests 15
|
||||
# suites 0
|
||||
# pass 15
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 1572.152166
|
||||
@@ -0,0 +1,101 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04: record APIs refuse a library before creating a repository
|
||||
ok 1 - C2-04: record APIs refuse a library before creating a repository
|
||||
---
|
||||
duration_ms: 2.400096
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: init creates a checked versioned layout, valid templates and human-authored local history
|
||||
ok 2 - init creates a checked versioned layout, valid templates and human-authored local history
|
||||
---
|
||||
duration_ms: 31.584414
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: init honors repo, refuses a non-empty directory and an undeclared project without touching files
|
||||
ok 3 - init honors repo, refuses a non-empty directory and an undeclared project without touching files
|
||||
---
|
||||
duration_ms: 14.87188
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: check reports every bad record, filename mismatch and unknown top-level path
|
||||
ok 4 - check reports every bad record, filename mismatch and unknown top-level path
|
||||
---
|
||||
duration_ms: 14.057397
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: one writer commits validated docs, requirements and decisions with the bound agent author
|
||||
ok 5 - one writer commits validated docs, requirements and decisions with the bound agent author
|
||||
---
|
||||
duration_ms: 75.024978
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history
|
||||
ok 6 - writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history
|
||||
---
|
||||
duration_ms: 16.371409
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: writer refuses human pending edits and remotes instead of absorbing or contacting them
|
||||
ok 7 - writer refuses human pending edits and remotes instead of absorbing or contacting them
|
||||
---
|
||||
duration_ms: 21.552438
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: links, repo/code overlap, identity mismatch and a busy writer refuse safely
|
||||
ok 8 - links, repo/code overlap, identity mismatch and a busy writer refuse safely
|
||||
---
|
||||
duration_ms: 20.948619
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: schemas remain package-owned and reject invalid nested data and dates
|
||||
ok 9 - schemas remain package-owned and reject invalid nested data and dates
|
||||
---
|
||||
duration_ms: 0.332673
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: git commit failure restores only the attempted record and leaves human history unchanged
|
||||
ok 10 - git commit failure restores only the attempted record and leaves human history unchanged
|
||||
---
|
||||
duration_ms: 39.691887
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: git hooks and ambient git identity cannot alter the record writer or execute outside actions
|
||||
ok 11 - git hooks and ambient git identity cannot alter the record writer or execute outside actions
|
||||
---
|
||||
duration_ms: 28.050743
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse
|
||||
ok 12 - project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse
|
||||
---
|
||||
duration_ms: 15.268934
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: schema constraints and layout omissions are reported independently
|
||||
ok 13 - schema constraints and layout omissions are reported independently
|
||||
---
|
||||
duration_ms: 14.682588
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse
|
||||
ok 14 - unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse
|
||||
---
|
||||
duration_ms: 19.775944
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a linked git directory is refused before a writer lock can touch its target
|
||||
ok 15 - a linked git directory is refused before a writer lock can touch its target
|
||||
---
|
||||
duration_ms: 31.634174
|
||||
type: 'test'
|
||||
...
|
||||
1..15
|
||||
# tests 15
|
||||
# suites 0
|
||||
# pass 15
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 397.853794
|
||||
@@ -0,0 +1,484 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: C2-04: ensureCheckouts skips a library before a real clone and leaves no books path
|
||||
ok 1 - C2-04: ensureCheckouts skips a library before a real clone and leaves no books path
|
||||
---
|
||||
duration_ms: 23.609136
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a first launch clones the root at its branch, with the root's path as origin
|
||||
ok 2 - a first launch clones the root at its branch, with the root's path as origin
|
||||
---
|
||||
duration_ms: 24.822563
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone is not at its place until git clone has finished
|
||||
ok 3 - the clone is not at its place until git clone has finished
|
||||
---
|
||||
duration_ms: 19.548097
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a later launch fast-forwards a clean clone after a commit to the root, then finds it current
|
||||
ok 4 - a later launch fast-forwards a clean clone after a commit to the root, then finds it current
|
||||
---
|
||||
duration_ms: 58.948353
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone ahead of the root keeps its commits and counts as current
|
||||
ok 5 - a clone ahead of the root keeps its commits and counts as current
|
||||
---
|
||||
duration_ms: 36.268206
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves
|
||||
# Subtest: a modified file
|
||||
ok 1 - a modified file
|
||||
---
|
||||
duration_ms: 42.400999
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: an untracked file
|
||||
ok 2 - an untracked file
|
||||
---
|
||||
duration_ms: 41.926991
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a staged file
|
||||
ok 3 - a staged file
|
||||
---
|
||||
duration_ms: 43.125616
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: another branch
|
||||
ok 4 - another branch
|
||||
---
|
||||
duration_ms: 41.533983
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a detached HEAD
|
||||
ok 5 - a detached HEAD
|
||||
---
|
||||
duration_ms: 41.444249
|
||||
type: 'test'
|
||||
...
|
||||
1..5
|
||||
ok 6 - a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves
|
||||
---
|
||||
duration_ms: 211.448733
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a diverged clone gets the fetch into refs/remotes and is kept, not-fast-forward
|
||||
ok 7 - a diverged clone gets the fetch into refs/remotes and is kept, not-fast-forward
|
||||
---
|
||||
duration_ms: 42.18825
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone kept before the branch check, or for a failed status, gets no fetch
|
||||
# Subtest: not-a-clone
|
||||
ok 1 - not-a-clone
|
||||
---
|
||||
duration_ms: 22.683158
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: hooks-present
|
||||
ok 2 - hooks-present
|
||||
---
|
||||
duration_ms: 23.981508
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: submodule
|
||||
ok 3 - submodule
|
||||
---
|
||||
duration_ms: 30.53337
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: config-changed
|
||||
ok 4 - config-changed
|
||||
---
|
||||
duration_ms: 26.640251
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: root-unreadable
|
||||
ok 5 - root-unreadable
|
||||
---
|
||||
duration_ms: 27.500439
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: root-detached
|
||||
ok 6 - root-detached
|
||||
---
|
||||
duration_ms: 33.008497
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: status-failed, on the root's branch and clean
|
||||
ok 7 - status-failed, on the root's branch and clean
|
||||
---
|
||||
duration_ms: 35.833988
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: status-failed, dirty
|
||||
ok 8 - status-failed, dirty
|
||||
---
|
||||
duration_ms: 35.355029
|
||||
type: 'test'
|
||||
...
|
||||
1..8
|
||||
ok 8 - a clone kept before the branch check, or for a failed status, gets no fetch
|
||||
---
|
||||
duration_ms: 236.696451
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a dirty clone whose fetch fails is kept, fetch-failed, exactly as it was
|
||||
ok 9 - a dirty clone whose fetch fails is kept, fetch-failed, exactly as it was
|
||||
---
|
||||
duration_ms: 38.040461
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: every git call the host makes, for a new clone and an existing one, carries maintenance.auto=false and gc.auto=0
|
||||
ok 10 - every git call the host makes, for a new clone and an existing one, carries maintenance.auto=false and gc.auto=0
|
||||
---
|
||||
duration_ms: 44.631792
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone with loose objects enough for gc --auto gets no maintenance or gc from the fetch and the merge
|
||||
ok 11 - a clone with loose objects enough for gc --auto gets no maintenance or gc from the fetch and the merge
|
||||
---
|
||||
duration_ms: 72.986702
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone with user.name or user.email in its config is kept, and git runs nothing in it
|
||||
# Subtest: user.name
|
||||
ok 1 - user.name
|
||||
---
|
||||
duration_ms: 26.565102
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: user.email
|
||||
ok 2 - user.email
|
||||
---
|
||||
duration_ms: 24.993242
|
||||
type: 'test'
|
||||
...
|
||||
1..2
|
||||
ok 12 - a clone with user.name or user.email in its config is kept, and git runs nothing in it
|
||||
---
|
||||
duration_ms: 52.056377
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a commit git can't read after the fast-forward is null
|
||||
ok 13 - a commit git can't read after the fast-forward is null
|
||||
---
|
||||
duration_ms: 45.87623
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a new clone whose commit can't be read refuses the launch and leaves nothing behind
|
||||
ok 14 - a new clone whose commit can't be read refuses the launch and leaves nothing behind
|
||||
---
|
||||
duration_ms: 18.748369
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||||
# Subtest: core.fsmonitor
|
||||
ok 1 - core.fsmonitor
|
||||
---
|
||||
duration_ms: 33.313017
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: core.hooksPath
|
||||
ok 2 - core.hooksPath
|
||||
---
|
||||
duration_ms: 32.93676
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a hook file
|
||||
ok 3 - a hook file
|
||||
---
|
||||
duration_ms: 31.04788
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: include.path
|
||||
ok 4 - include.path
|
||||
---
|
||||
duration_ms: 33.504449
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: includeIf
|
||||
ok 5 - includeIf
|
||||
---
|
||||
duration_ms: 33.654346
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a filter driver
|
||||
ok 6 - a filter driver
|
||||
---
|
||||
duration_ms: 33.330113
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: origin moved
|
||||
ok 7 - origin moved
|
||||
---
|
||||
duration_ms: 34.410462
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a second origin url
|
||||
ok 8 - a second origin url
|
||||
---
|
||||
duration_ms: 34.553407
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the origin url twice, both the root
|
||||
ok 9 - the origin url twice, both the root
|
||||
---
|
||||
duration_ms: 35.318303
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: an ext:: origin
|
||||
ok 10 - an ext:: origin
|
||||
---
|
||||
duration_ms: 33.409597
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a branch tracking another remote
|
||||
ok 11 - a branch tracking another remote
|
||||
---
|
||||
duration_ms: 34.618175
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a branch merging a tag
|
||||
ok 12 - a branch merging a tag
|
||||
---
|
||||
duration_ms: 33.339997
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a fetch line onto local branches
|
||||
ok 13 - a fetch line onto local branches
|
||||
---
|
||||
duration_ms: 35.163076
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: no origin
|
||||
ok 14 - no origin
|
||||
---
|
||||
duration_ms: 33.941229
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a config file over the size cap
|
||||
ok 15 - a config file over the size cap
|
||||
---
|
||||
duration_ms: 30.995104
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: config a symlink to /dev/zero
|
||||
ok 16 - config a symlink to /dev/zero
|
||||
---
|
||||
duration_ms: 31.658744
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone a symlink to the bait
|
||||
ok 17 - the clone a symlink to the bait
|
||||
---
|
||||
duration_ms: 30.912781
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone a file
|
||||
ok 18 - the clone a file
|
||||
---
|
||||
duration_ms: 31.046906
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone a plain directory
|
||||
ok 19 - the clone a plain directory
|
||||
---
|
||||
duration_ms: 30.916155
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git a gitdir: file
|
||||
ok 20 - .git a gitdir: file
|
||||
---
|
||||
duration_ms: 30.867709
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git a symlink
|
||||
ok 21 - .git a symlink
|
||||
---
|
||||
duration_ms: 31.284739
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git/logs a symlink
|
||||
ok 22 - .git/logs a symlink
|
||||
---
|
||||
duration_ms: 31.847197
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git/refs/heads a symlink
|
||||
ok 23 - .git/refs/heads a symlink
|
||||
---
|
||||
duration_ms: 32.21906
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git/objects a symlink
|
||||
ok 24 - .git/objects a symlink
|
||||
---
|
||||
duration_ms: 31.052488
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a reflog hard-linked to a file outside
|
||||
ok 25 - a reflog hard-linked to a file outside
|
||||
---
|
||||
duration_ms: 30.48705
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: HEAD a fifo
|
||||
ok 26 - HEAD a fifo
|
||||
---
|
||||
duration_ms: 32.030662
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a commondir file
|
||||
ok 27 - a commondir file
|
||||
---
|
||||
duration_ms: 30.738046
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: an alternates file
|
||||
ok 28 - an alternates file
|
||||
---
|
||||
duration_ms: 31.106713
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink staged, no .gitmodules
|
||||
ok 29 - a gitlink staged, no .gitmodules
|
||||
---
|
||||
duration_ms: 43.802453
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink and .gitmodules staged
|
||||
ok 30 - a gitlink and .gitmodules staged
|
||||
---
|
||||
duration_ms: 44.925948
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink to a repository with its own gitlink
|
||||
ok 31 - a gitlink to a repository with its own gitlink
|
||||
---
|
||||
duration_ms: 52.114966
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink and .gitmodules committed
|
||||
ok 32 - a gitlink and .gitmodules committed
|
||||
---
|
||||
duration_ms: 49.751122
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink and submodule.active in config
|
||||
ok 33 - a gitlink and submodule.active in config
|
||||
---
|
||||
duration_ms: 46.619808
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a .git/modules with no gitlink
|
||||
ok 34 - a .git/modules with no gitlink
|
||||
---
|
||||
duration_ms: 33.989714
|
||||
type: 'test'
|
||||
...
|
||||
1..34
|
||||
ok 15 - a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||||
---
|
||||
duration_ms: 1185.111516
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a root that can't be cloned refuses with the project id and leaves nothing behind
|
||||
# Subtest: missing
|
||||
ok 1 - missing
|
||||
---
|
||||
duration_ms: 10.568539
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: not a repository
|
||||
ok 2 - not a repository
|
||||
---
|
||||
duration_ms: 10.400231
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a plain directory inside another repository
|
||||
ok 3 - a plain directory inside another repository
|
||||
---
|
||||
duration_ms: 14.889395
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: unreadable
|
||||
ok 4 - unreadable
|
||||
---
|
||||
duration_ms: 10.423977
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: on no branch
|
||||
ok 5 - on no branch
|
||||
---
|
||||
duration_ms: 11.969341
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: missing an object
|
||||
ok 6 - missing an object
|
||||
---
|
||||
duration_ms: 15.470809
|
||||
type: 'test'
|
||||
...
|
||||
1..6
|
||||
ok 16 - a root that can't be cloned refuses with the project id and leaves nothing behind
|
||||
---
|
||||
duration_ms: 74.528087
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone whose root is on no branch, or gone, is kept and named
|
||||
ok 17 - a clone whose root is on no branch, or gone, is kept and named
|
||||
---
|
||||
duration_ms: 29.345477
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: no credential or forge remote of the root reaches a clone
|
||||
ok 18 - no credential or forge remote of the root reaches a clone
|
||||
---
|
||||
duration_ms: 49.376968
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: every project in the business file gets its own clone at its own branch
|
||||
ok 19 - every project in the business file gets its own clone at its own branch
|
||||
---
|
||||
duration_ms: 35.609196
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone past its time gets SIGTERM and refuses the launch, with nothing left in the workspace
|
||||
ok 20 - a clone past its time gets SIGTERM and refuses the launch, with nothing left in the workspace
|
||||
---
|
||||
duration_ms: 514.133533
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a clone that ignores SIGTERM gets SIGKILL once the grace period is over
|
||||
ok 21 - a clone that ignores SIGTERM gets SIGKILL once the grace period is over
|
||||
---
|
||||
duration_ms: 1020.14481
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a timeout signals git's process group, so a process git started dies with it
|
||||
ok 22 - a timeout signals git's process group, so a process git started dies with it
|
||||
---
|
||||
duration_ms: 515.385221
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: once a signalled git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too
|
||||
ok 23 - once a signalled git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too
|
||||
---
|
||||
duration_ms: 516.1265
|
||||
type: 'test'
|
||||
...
|
||||
1..23
|
||||
# tests 78
|
||||
# suites 0
|
||||
# pass 78
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 4916.867654
|
||||
@@ -0,0 +1,29 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
TAP version 13
|
||||
# Subtest: the list holds the PRD's requirement ids, in its order, at its version
|
||||
ok 1 - the list holds the PRD's requirement ids, in its order, at its version
|
||||
---
|
||||
duration_ms: 1.203852
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the committed list loads frozen
|
||||
ok 2 - the committed list loads frozen
|
||||
---
|
||||
duration_ms: 0.604752
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the schema refuses any other shape
|
||||
ok 3 - the schema refuses any other shape
|
||||
---
|
||||
duration_ms: 2.24629
|
||||
type: 'test'
|
||||
...
|
||||
1..3
|
||||
# tests 3
|
||||
# suites 0
|
||||
# pass 3
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 44.87926
|
||||
@@ -0,0 +1,218 @@
|
||||
diff --git a/docs/TOOLS.md b/docs/TOOLS.md
|
||||
index a4443e29d..0f75a6c42 100644
|
||||
--- a/docs/TOOLS.md
|
||||
+++ b/docs/TOOLS.md
|
||||
@@ -693,6 +693,12 @@ backup's checks it prints `BACKUP_STORE <activation id> schema <version>`.
|
||||
it never picks another port. `--timeout` (default 60 seconds) bounds the
|
||||
gate and each stop.
|
||||
|
||||
+A copy marked for the private tester receives `--tester-socket` during rehearsal;
|
||||
+a legacy copy receives no tester flag. The socket is under the rehearsal's
|
||||
+scratch dataRoot, at `data/console/tester.sock`. That path is longer than the live
|
||||
+one. A long dataRoot can pass activation's pathname preflight and still make the
|
||||
+rehearsal Console refuse its socket path; the rehearsal then fails closed.
|
||||
+
|
||||
Before it makes anything, it checks the pointer, the copy (present,
|
||||
reachable from refactor, a readable schema, a bus host with `--no-launch`),
|
||||
the port and the backup's `SHA256SUMS`. Then it makes
|
||||
diff --git a/packages/bus/src/runtime.mjs b/packages/bus/src/runtime.mjs
|
||||
index 0abb2ee4f..18f401ec5 100644
|
||||
--- a/packages/bus/src/runtime.mjs
|
||||
+++ b/packages/bus/src/runtime.mjs
|
||||
@@ -82,8 +82,16 @@ export async function startBroker({
|
||||
// Row 199: the tests' scratch CA for publish's git (`-c http.sslCAInfo=...`). process.mjs drops
|
||||
// it from the boot config, so only an in-process caller sets it.
|
||||
publishTls = [],
|
||||
+ // C2-03a: the tests' stand-in for syncCommand, a shorter timer and a scratch config dir for the
|
||||
+ // slot, { command, intervalMs, configDir }. A boot config is JSON and can't carry a function, so
|
||||
+ // a librarySync without one is refused.
|
||||
+ librarySync = null,
|
||||
}) {
|
||||
- let store, credentials, server, adapter;
|
||||
+ if (librarySync !== null && (typeof librarySync?.command !== 'function'
|
||||
+ || (Object.hasOwn(librarySync, 'intervalMs') && !(Number.isSafeInteger(librarySync.intervalMs) && librarySync.intervalMs > 0))
|
||||
+ || (Object.hasOwn(librarySync, 'configDir') && typeof librarySync.configDir !== 'string')))
|
||||
+ throw new BusError('invalid-host-request');
|
||||
+ let store, credentials, server, adapter, syncTimer = null, syncPass = null;
|
||||
try {
|
||||
const references = {};
|
||||
for (const [business, b] of Object.entries(businesses)) {
|
||||
@@ -135,6 +143,13 @@ export async function startBroker({
|
||||
for (const business of Object.values(businesses))
|
||||
for (const [project, entry] of Object.entries(business.projects ?? {}))
|
||||
if (entry.kind === 'library') await libraryModule.ensureMirror({ business, project, dataRoot });
|
||||
+ // C2-03a: the slot is <configDir>/secrets/<business>/library-gitea (design 10 step 4). Sync only
|
||||
+ // checks that it is there; the askpass helper reads it.
|
||||
+ const slotDir = librarySync?.configDir ?? organization?.dir ?? null;
|
||||
+ const syncOptions = business => ({
|
||||
+ slot: slotDir ? join(slotDir, 'secrets', business.id, libraryModule.SLOT) : null,
|
||||
+ ...(librarySync ? { command: librarySync.command } : {}),
|
||||
+ });
|
||||
const broker = new Broker({
|
||||
hostGrant: runRoot ? hostGrant({ configDir: organization.dir, runRoot }) : null,
|
||||
// Row 235 (#1741, r6 X4, X5): the grant executor's claim, register and issue, never use().
|
||||
@@ -146,6 +161,7 @@ export async function startBroker({
|
||||
library: {
|
||||
readFile: context => libraryModule.readLibraryFile({ ...context, dataRoot }),
|
||||
status: context => libraryModule.libraryStatus({ ...context, dataRoot }),
|
||||
+ sync: (context, { accept }) => libraryModule.sync({ ...context, dataRoot }, { ...syncOptions(context.business), accept }),
|
||||
LibraryError: libraryModule.LibraryError,
|
||||
},
|
||||
project: {
|
||||
@@ -341,6 +357,30 @@ export async function startBroker({
|
||||
.filter((c) => c.instance === business + '/' + role)
|
||||
.map(({ service, date, state }) => ({ service, date, state }));
|
||||
}
|
||||
+ // C2-03a: each library entry with a sync user fetches once at start, then every 60 s. A pass
|
||||
+ // still running skips the tick. Only codes are logged, never git's output.
|
||||
+ const timed = Object.values(businesses).flatMap(business => Object.entries(business.projects ?? {})
|
||||
+ .filter(([, entry]) => entry.kind === 'library' && Object.hasOwn(entry, 'user')).map(([project]) => ({ business, project })));
|
||||
+ const syncLog = entry => process.stderr.write(`library: ${JSON.stringify(entry)}\n`);
|
||||
+ const syncAll = async () => {
|
||||
+ for (const { business, project } of timed) {
|
||||
+ try {
|
||||
+ const { code } = await libraryModule.sync({ business, project, dataRoot }, syncOptions(business));
|
||||
+ if (code !== null) syncLog({ event: 'library-sync-held', business: business.id, project, code });
|
||||
+ } catch (e) {
|
||||
+ if (e?.code === 'library-sync-busy') continue;
|
||||
+ syncLog({ event: 'library-sync-refused', business: business.id, project,
|
||||
+ code: e instanceof libraryModule.LibraryError ? e.code : 'library-sync-failed' });
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+ const tick = () => { if (!syncPass) syncPass = syncAll().finally(() => { syncPass = null; }); };
|
||||
+ if (timed.length) {
|
||||
+ tick();
|
||||
+ syncTimer = setInterval(tick, librarySync?.intervalMs ?? libraryModule.SYNC_INTERVAL_MS);
|
||||
+ syncTimer.unref();
|
||||
+ }
|
||||
+ const stopSync = async () => { clearInterval(syncTimer); syncTimer = null; await syncPass; };
|
||||
return {
|
||||
broker,
|
||||
credentials,
|
||||
@@ -374,6 +414,7 @@ export async function startBroker({
|
||||
launches: bound,
|
||||
readers: readCaps,
|
||||
async close() {
|
||||
+ await stopSync();
|
||||
await server.close();
|
||||
await adapter?.close?.();
|
||||
store.close();
|
||||
diff --git a/packages/cli/tests/stack-release.test.mjs b/packages/cli/tests/stack-release.test.mjs
|
||||
index acc5d4b86..625995e65 100644
|
||||
--- a/packages/cli/tests/stack-release.test.mjs
|
||||
+++ b/packages/cli/tests/stack-release.test.mjs
|
||||
@@ -1744,6 +1744,7 @@ function rConsole(){
|
||||
const id=path.basename(path.resolve(import.meta.dirname,'..','..','..')),home=process.env.HOME,a=process.argv.slice(2);
|
||||
const fault=(n)=>fs.existsSync(path.join(home,'faults',n));
|
||||
fs.appendFileSync(path.join(home,'console-args.log'),`${a.join(' ')}\n`);
|
||||
+ fs.appendFileSync(path.join(home,'console-context.jsonl'),JSON.stringify({argv:a,dataRoot:JSON.parse(fs.readFileSync(process.env.MOSAIC_CONFIG,'utf8')).dataRoot})+'\n');
|
||||
if(a[0]!=='serve'){console.error('fixture Console: refused');process.exit(1)}
|
||||
const s=http.createServer((q,r)=>{r.writeHead(q.url==='/healthz'&&!fault(`healthz-${id}`)?200:500);r.end()});
|
||||
s.listen(Number(a[a.indexOf('--port')+1]),'127.0.0.1',()=>console.log(`Mosaic Console: http://127.0.0.1:${s.address().port}/\nBoard: fixture`));
|
||||
@@ -2319,3 +2320,74 @@ test('row196 SSO socket conversion pins pointer and unit argv order without send
|
||||
const status=await prun(e,'status','acme');assert.equal(status.code,0,status.out+status.err);assert.match(status.out,/unit flags: match the pointer/);
|
||||
await noLeak(e);
|
||||
});
|
||||
+
|
||||
+// T10 activation: exercise the shell caller as well as interpreter.mjs itself.
|
||||
+test('row196 interpreter activation checks receipt, identity, plan and startup log',async t=>{
|
||||
+ const cli=join(COPIES,C1,'packages/webui/src/cli.mjs'),old=readFileSync(cli,'utf8');
|
||||
+ const module=join(COPIES,C1,'packages/bus/src/interpreter.mjs');
|
||||
+ const identity={path:'/usr/bin/python3',sha256:'fixture-root-owned-ELF'};
|
||||
+ const source=`import fs from 'node:fs';import {join} from 'node:path';
|
||||
+ const root=process.env.HOME,sd=process.env.SD_STATE;
|
||||
+ const fault=n=>fs.existsSync(join(sd,'faults',n));
|
||||
+ export function inspectInterpreter(){
|
||||
+ if(fault('interpreter-unsafe'))throw Error('unsafe interpreter');
|
||||
+ const seen=join(root,'interpreter-inspected'),changed=fault('interpreter-drift')&&fs.existsSync(seen);
|
||||
+ fs.writeFileSync(seen,'inspected');
|
||||
+ return {...${JSON.stringify(identity)},...(changed?{sha256:'replacement-ELF'}:{})};
|
||||
+ }
|
||||
+ export function verifyInterpreterReceipt(directory,expected,since){
|
||||
+ fs.appendFileSync(join(root,'interpreter-verified.jsonl'),JSON.stringify({directory,expected,since})+'\\n');
|
||||
+ if(fault('interpreter-receipt-refuse'))throw Error('receipt does not match started bus');
|
||||
+ return true;
|
||||
+ }
|
||||
+ `;
|
||||
+ const putModule=()=>{chmodSync(dirname(module),0o755);writeFileSync(module,source);chmodSync(module,0o444);chmodSync(dirname(module),0o555);};
|
||||
+ chmodSync(cli,0o644);writeFileSync(cli,old+'\n// MOSAIC_TESTER_SOCKET_V1\n');chmodSync(cli,0o444);putModule();
|
||||
+ t.after(()=>{chmodSync(cli,0o644);writeFileSync(cli,old);chmodSync(cli,0o444);chmodSync(dirname(module),0o755);rmSync(module,{force:true});chmodSync(dirname(module),0o555);});
|
||||
+ await t.test('plan and started log preserve the same interpreter JSON',async t=>{
|
||||
+ const e=await mk(t);await seed(e);
|
||||
+ const plan=await run(e,'activate',C1,'acme','--tester-socket','--plan');assert.equal(plan.code,0,plan.out+plan.err);
|
||||
+ const line=/^interpreter: (.+)$/m.exec(plan.out);assert.ok(line,plan.out);assert.deepEqual(JSON.parse(line[1]),identity);
|
||||
+ const r=await run(e,'activate',C1,'acme','--tester-socket');assert.equal(r.code,0,r.out+r.err);
|
||||
+ const started=logLines(e).find(x=>x.op==='activate'&&x.result==='started');assert.ok(started);
|
||||
+ assert.equal(started.interpreter,line[1]);assert.deepEqual(JSON.parse(started.interpreter),identity);
|
||||
+ const verified=lines(join(e.env.HOME,'interpreter-verified.jsonl')).map(JSON.parse);
|
||||
+ assert.ok(verified.length>0);assert.equal(verified[0].directory,join(e.data,'bus'));assert.deepEqual(verified[0].expected,identity);assert.ok(Number(verified[0].since)>0);
|
||||
+ });
|
||||
+ for(const scenario of ['interpreter-receipt-refuse','interpreter-drift'])await t.test(scenario+' fails at the gate and restores the pointer',async t=>{
|
||||
+ const e=await mk(t);await seed(e);const before=readFileSync(e.pointer,'utf8'),n=calls(e).length,logs=logLines(e).length;fault(e,scenario);
|
||||
+ const r=await run(e,'activate',C1,'acme','--tester-socket','--timeout','1');
|
||||
+ assert.equal(r.code,1,r.out+r.err);assert.match(r.out+r.err,/interpreter-receipt/);assert.equal(readFileSync(e.pointer,'utf8'),before);
|
||||
+ assert.ok(startsStops(e,n).some(x=>x.startsWith('start ')),startsStops(e,n).join('\n'));
|
||||
+ const added=logLines(e).slice(logs);assert.ok(added.some(x=>x.result==='gate-failed'&&x.code==='interpreter-receipt'&&x.rollback==='ok'),JSON.stringify(added));
|
||||
+ assert.equal(added.some(x=>x.result==='ok'),false,JSON.stringify(added));
|
||||
+ });
|
||||
+ for(const scenario of ['missing-verifier','interpreter-unsafe'])await t.test(scenario+' refuses before any start or stop',async t=>{
|
||||
+ const e=await mk(t);await seed(e);const before=readFileSync(e.pointer,'utf8'),n=calls(e).length;
|
||||
+ if(scenario==='missing-verifier'){chmodSync(dirname(module),0o755);rmSync(module);chmodSync(dirname(module),0o555);}else fault(e,scenario);
|
||||
+ try{
|
||||
+ for(const flags of [['--plan'],[]]){
|
||||
+ const r=await run(e,'activate',C1,'acme','--tester-socket',...flags);
|
||||
+ assert.equal(r.code,3,r.out+r.err);assert.match(r.out+r.err,/interpreter-unsafe/);
|
||||
+ assert.equal(readFileSync(e.pointer,'utf8'),before);assert.deepEqual(startsStops(e,n),[]);
|
||||
+ }
|
||||
+ }finally{if(scenario==='missing-verifier')putModule();}
|
||||
+ });
|
||||
+});
|
||||
+
|
||||
+test('row196 rehearsal selects socket only for marked copies and uses scratch dataRoot',async t=>{
|
||||
+ const file=join(RCOPIES,B,'packages/webui/src/cli.mjs'),old=readFileSync(file,'utf8');
|
||||
+ const put=text=>{chmodSync(file,0o644);writeFileSync(file,text);chmodSync(file,0o444);};
|
||||
+ t.after(()=>put(old));
|
||||
+ for(const marked of [true,false])await t.test(marked?'socket copy':'legacy copy',async t=>{
|
||||
+ put(old+(marked?'\n// MOSAIC_TESTER_SOCKET_V1\n':''));
|
||||
+ const e=await rmk(t),before=untouched(e),port=await freePort();
|
||||
+ const r=await rehearse(e,B,'--backup',e.act,'--port',port,'--timeout','10');assert.equal(r.code,0,r.out+r.err);
|
||||
+ const contexts=lines(rh(e,'console-context.jsonl')).map(JSON.parse);assert.equal(contexts.length,1);
|
||||
+ const context=contexts[0];assert.deepEqual(context.argv,['serve','--port',port,'--business','acme',...(marked?['--tester-socket']:[])]);
|
||||
+ assert.equal(context.argv.includes('--tester-socket'),marked);assert.equal(context.argv.includes('--tester-port'),false);
|
||||
+ assert.equal(context.dataRoot,join(r.dir,'data'));assert.notEqual(context.dataRoot,e.data);
|
||||
+ assert.equal(JSON.parse(readFileSync(join(r.dir,'config/config.json'),'utf8')).dataRoot,context.dataRoot);
|
||||
+ assert.equal(untouched(e),before);
|
||||
+ });
|
||||
+});
|
||||
diff --git a/packages/webui/src/cli.mjs b/packages/webui/src/cli.mjs
|
||||
index 9feb5ac87..e12bc7a28 100644
|
||||
--- a/packages/webui/src/cli.mjs
|
||||
+++ b/packages/webui/src/cli.mjs
|
||||
@@ -64,7 +64,7 @@ try {
|
||||
// the system config, Business can't resolve authority and Settings has
|
||||
// no notifier. A refusal printed here names no path (redactor).
|
||||
// --send without a bus refuses to start rather than serve a composer that can't send.
|
||||
- let bus = null, send = null, settingsWrite = null, projectFiles = null, projectFile = null, libraryFile = null, libraryStatus = null, projectSave = null, chat = null, nameWrite = null, assistantStop = null, instancesWrite = null, routesWrite = null, busLine, system = null;
|
||||
+ let bus = null, send = null, settingsWrite = null, projectFiles = null, projectFile = null, libraryFile = null, libraryStatus = null, librarySync = null, projectSave = null, chat = null, nameWrite = null, assistantStop = null, instancesWrite = null, routesWrite = null, busLine, system = null;
|
||||
try {
|
||||
system = loadSystem();
|
||||
const { dataRoot } = system;
|
||||
@@ -78,7 +78,7 @@ try {
|
||||
projectFiles = args => call('project.files', args);
|
||||
projectFile = args => call('project.file', args);
|
||||
libraryFile = args => call('library.file', args); libraryStatus = args => call('library.status', args);
|
||||
- if (sendOn) {send = args => call('message.send', args);settingsWrite=args=>call('limits.set',args);projectSave=args=>call('project.file.save',args);nameWrite=args=>call('name.set',args);assistantStop=args=>call('assistant.stop',args);instancesWrite=args=>call('instances.set',args);routesWrite=args=>call('routes.set',args);}
|
||||
+ if (sendOn) {send = args => call('message.send', args);librarySync=args=>call('library.sync',args);settingsWrite=args=>call('limits.set',args);projectSave=args=>call('project.file.save',args);nameWrite=args=>call('name.set',args);assistantStop=args=>call('assistant.stop',args);instancesWrite=args=>call('instances.set',args);routesWrite=args=>call('routes.set',args);}
|
||||
busLine = `Bus: ${options.business ?? 'the running bus host\'s business'}`;
|
||||
} catch (err) {
|
||||
const why = redactor({ configDir: configDir() })(err.message);
|
||||
@@ -98,7 +98,7 @@ try {
|
||||
}
|
||||
let server;
|
||||
try {
|
||||
- server = await startServer({ board: options.board, port: options.port, bus, reads, preview: options.preview, sso, proof, send, settingsWrite, projectFiles, projectFile, libraryFile, libraryStatus, projectSave, chat, nameWrite, assistantStop, instancesWrite, routesWrite });
|
||||
+ server = await startServer({ board: options.board, port: options.port, bus, reads, preview: options.preview, sso, proof, send, settingsWrite, projectFiles, projectFile, libraryFile, libraryStatus, librarySync, projectSave, chat, nameWrite, assistantStop, instancesWrite, routesWrite });
|
||||
} catch (err) { sso?.close(); throw err; }
|
||||
let testerServer = null;
|
||||
if (testerSocket) {
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"candidate": "527b9a1e6cb1e85758e94eeb5d17c542413ceeb3",
|
||||
"base": "f48725cfc",
|
||||
"grants": [
|
||||
"sage-2142",
|
||||
"sage-2145"
|
||||
],
|
||||
"golden": {
|
||||
"passCount": 2334,
|
||||
"failCount": 0,
|
||||
"skipCount": 1,
|
||||
"wallSeconds": 929.581986448
|
||||
},
|
||||
"extraFiles": {
|
||||
"passCount": 230,
|
||||
"failCount": 0,
|
||||
"skipCount": 0,
|
||||
"wallSeconds": 58.75424581699993
|
||||
},
|
||||
"shellScripts": {
|
||||
"passCount": 429,
|
||||
"failCount": 0,
|
||||
"skipCount": 0,
|
||||
"wallSeconds": 136.091485826
|
||||
},
|
||||
"killed": 38,
|
||||
"freshKills": 9,
|
||||
"carriedKills": 29,
|
||||
"freshKillWallSeconds": 90.548,
|
||||
"sweep": {
|
||||
"scope": [
|
||||
"/mnt/storage/scratch/tmp/g196-tree-tn651z",
|
||||
"/mnt/storage/scratch/tmp/gc58",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
],
|
||||
"rawCount": 8,
|
||||
"preexistingCount": 8,
|
||||
"gateLeftoverCount": 0,
|
||||
"processes": [
|
||||
{
|
||||
"pid": 748279,
|
||||
"name": "npm exec @playw",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748302,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748306,
|
||||
"name": "npm exec @model",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748314,
|
||||
"name": "npm exec chrome",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748494,
|
||||
"name": "chrome-devtools",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748496,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748506,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
},
|
||||
{
|
||||
"pid": 748547,
|
||||
"name": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"preexisting": true
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
OK status with missing harness credential exits 3 and still lists accounts
|
||||
OK status reports harness credential (read-only) + mosaic accounts
|
||||
OK api key material never reaches output
|
||||
OK oauth token material never reaches output
|
||||
OK unparseable credential file exits 2
|
||||
OK symlinked credential file exits 4
|
||||
OK env-side credential names reported
|
||||
OK env var values never reach output
|
||||
OK accounts without an accounts dir reports none and creates nothing
|
||||
OK accounts lists files and marks the active one
|
||||
OK loose account perms flagged in listing
|
||||
OK agent --auth with missing account file refuses (exit 4)
|
||||
OK agent --auth with non-0600 account file refuses
|
||||
OK agent --auth with invalid account name refuses
|
||||
OK auth.sh without valid config refuses
|
||||
|
||||
selftest: 15 passed, 0 failed
|
||||
@@ -0,0 +1,56 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
Note: switching to '527b9a1e6cb1e85758e94eeb5d17c542413ceeb3'.
|
||||
|
||||
You are in 'detached HEAD' state. You can look around, make experimental
|
||||
changes and commit them, and you can discard any commits you make in this
|
||||
state without impacting any branches by switching back to a branch.
|
||||
|
||||
If you want to create a new branch to retain commits you create, you may
|
||||
do so (now or later) by using -c with the switch command. Example:
|
||||
|
||||
git switch -c <new-branch-name>
|
||||
|
||||
Or undo this operation with:
|
||||
|
||||
git switch -
|
||||
|
||||
Turn off this advice by setting config variable advice.detachedHead to false
|
||||
|
||||
Not currently on any branch.
|
||||
nothing to commit, working tree clean
|
||||
Note: switching to '527b9a1e6cb1e85758e94eeb5d17c542413ceeb3'.
|
||||
|
||||
You are in 'detached HEAD' state. You can look around, make experimental
|
||||
changes and commit them, and you can discard any commits you make in this
|
||||
state without impacting any branches by switching back to a branch.
|
||||
|
||||
If you want to create a new branch to retain commits you create, you may
|
||||
do so (now or later) by using -c with the switch command. Example:
|
||||
|
||||
git switch -c <new-branch-name>
|
||||
|
||||
Or undo this operation with:
|
||||
|
||||
git switch -
|
||||
|
||||
Turn off this advice by setting config variable advice.detachedHead to false
|
||||
|
||||
OK dry-run: allowed change, exit 0, nothing committed (exit 0)
|
||||
OK dry-run committed nothing
|
||||
OK apply: allowed change exits 0 (exit 0)
|
||||
OK apply: attribution in commit subject
|
||||
OK apply: target tree clean after commit
|
||||
OK disallowed path refused (exit 1)
|
||||
OK disallowed path: target untouched
|
||||
OK syntax gate refused broken .mjs (exit 1)
|
||||
OK syntax gate: target untouched
|
||||
OK suite failure refused (exit 1)
|
||||
OK suite failure: target reverted to clean
|
||||
OK disabled policy refused (exit 2)
|
||||
OK disabled policy: target untouched
|
||||
OK failed run refused (exit 1)
|
||||
OK failed run: target untouched
|
||||
OK missing run exits 4 (exit 4)
|
||||
OK invalid policy exits 2 (exit 2)
|
||||
|
||||
selftest: 17 passed, 0 failed
|
||||
@@ -0,0 +1,34 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
OK absent adapter defaults to pi
|
||||
OK adapter mock validates (exit 0)
|
||||
OK unsupported adapter exits 2 (exit 2)
|
||||
OK env exports adapter
|
||||
OK bootstrap creates default when absent (exit 0)
|
||||
OK bootstrap wrote config file
|
||||
OK bootstrap is idempotent on existing config (exit 0)
|
||||
OK bootstrap did not rewrite existing config
|
||||
OK validate missing config exits 3 (exit 3)
|
||||
OK malformed JSON exits 2 (exit 2)
|
||||
OK unsupported configVersion exits 2 (exit 2)
|
||||
OK unknown top-level key exits 2 (exit 2)
|
||||
OK unknown execution key exits 2 (exit 2)
|
||||
OK unsupported backend exits 2 (exit 2)
|
||||
OK unsupported environment exits 2 (exit 2)
|
||||
OK relative dataRoot exits 2 (exit 2)
|
||||
OK non-canonical dataRoot exits 2 (exit 2)
|
||||
OK filesystem root dataRoot exits 2 (exit 2)
|
||||
OK home directory dataRoot exits 2 (exit 2)
|
||||
OK dataRoot containing config dir exits 2 (exit 2)
|
||||
OK control character in provider exits 2 (exit 2)
|
||||
OK symlinked config file exits 2 (exit 2)
|
||||
OK env exports resolve correctly
|
||||
OK valid console.sso loads and is in the output
|
||||
OK console.sso HS256 alg exits 2 naming the path (exit 2)
|
||||
OK console.sso alg none exits 2 naming the path (exit 2)
|
||||
OK console.sso missing slot field exits 2 naming the path (exit 2)
|
||||
OK console.sso slot name outside the pattern exits 2 naming the path (exit 2)
|
||||
OK unknown key under console exits 2 naming the path (exit 2)
|
||||
OK config without console loads with unchanged output
|
||||
OK failed validation modified nothing
|
||||
|
||||
selftest: 31 passed, 0 failed
|
||||
@@ -0,0 +1,83 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
toolchain: node v26.8.1
|
||||
|
||||
OK syntax: packages/discord/src/approvals.mjs
|
||||
OK syntax: packages/discord/src/authorize.mjs
|
||||
OK syntax: packages/discord/src/binding.mjs
|
||||
OK syntax: packages/discord/src/cli.mjs
|
||||
OK syntax: packages/discord/src/connector.mjs
|
||||
OK syntax: packages/discord/src/context.mjs
|
||||
OK syntax: packages/discord/src/engine-pi.mjs
|
||||
OK syntax: packages/discord/src/errors.mjs
|
||||
OK syntax: packages/discord/src/gateway.mjs
|
||||
OK syntax: packages/discord/src/git.mjs
|
||||
OK syntax: packages/discord/src/journal.mjs
|
||||
OK syntax: packages/discord/src/notify.mjs
|
||||
OK syntax: packages/discord/src/rest.mjs
|
||||
OK syntax: packages/discord/src/setspark.mjs
|
||||
OK syntax: packages/discord/src/tools.mjs
|
||||
OK syntax: packages/discord/src/web.mjs
|
||||
OK syntax: packages/discord/bin/git-credential.mjs
|
||||
OK syntax: packages/discord/extension/tools.mjs
|
||||
OK syntax: packages/discord/tests/approvals.test.mjs
|
||||
OK syntax: packages/discord/tests/authorize.test.mjs
|
||||
OK syntax: packages/discord/tests/binding.test.mjs
|
||||
OK syntax: packages/discord/tests/connector.test.mjs
|
||||
OK syntax: packages/discord/tests/context.test.mjs
|
||||
OK syntax: packages/discord/tests/copy-service.test.mjs
|
||||
OK syntax: packages/discord/tests/engine.test.mjs
|
||||
OK syntax: packages/discord/tests/fake-pi.mjs
|
||||
OK syntax: packages/discord/tests/gateway.test.mjs
|
||||
OK syntax: packages/discord/tests/git.test.mjs
|
||||
OK syntax: packages/discord/tests/helpers.mjs
|
||||
OK syntax: packages/discord/tests/journal.test.mjs
|
||||
OK syntax: packages/discord/tests/notify.test.mjs
|
||||
OK syntax: packages/discord/tests/offline-check.test.mjs
|
||||
OK syntax: packages/discord/tests/recover.test.mjs
|
||||
OK syntax: packages/discord/tests/rest.test.mjs
|
||||
OK syntax: packages/discord/tests/setspark.test.mjs
|
||||
OK syntax: packages/discord/tests/tools.test.mjs
|
||||
OK syntax: packages/discord/tests/web.test.mjs
|
||||
OK syntax: packages/discord/fixtures/claim-worker.mjs
|
||||
OK syntax: packages/discord/fixtures/legacy-owner-worker.mjs
|
||||
OK syntax: scripts/discord.sh
|
||||
OK syntax: scripts/discord-service.sh
|
||||
OK packages/discord declares no dependencies
|
||||
OK no bot-token-shaped string in packages/discord
|
||||
OK fixture binding uses placeholder ids only
|
||||
OK fixture binding validates
|
||||
OK real pi with the extension exposes exactly list_dir, read_file, search and no built-in tool
|
||||
OK real pi with a writable root exposes exactly the three reads plus write_file and edit_file, and writes nothing at start
|
||||
OK real pi with a web key exposes the three reads plus web_fetch and web_search, and no write tool without a writable root
|
||||
OK real pi with a git root exposes the reads, writes and the four git verbs, commits nothing at start, and never shows the token
|
||||
OK real pi with protocol vault adds reserve_id to the git verbs
|
||||
OK real pi with a setspark key exposes the reads and the eight record verbs, no counters, and never shows the key
|
||||
OK real pi refuses a git key on a read-only root (fail closed)
|
||||
OK real pi with the pilot flags (--no-tools) exposes no tool at all
|
||||
OK real pi exits non-zero without MOSAIC_DISCORD_TOOLS: no session, no tools (fail closed)
|
||||
OK a failing nested test fails the run under a parent runner's NODE_TEST_CONTEXT
|
||||
OK node --test packages/discord/tests/ (ℹ pass 183)
|
||||
OK scripts/discord.sh --help exits 0
|
||||
OK scripts/discord.sh check without a binding exits 4
|
||||
OK scripts/discord.sh recover without a binding exits 4
|
||||
OK scripts/discord.sh reload without a binding exits 4
|
||||
OK scripts/discord-service.sh without a command exits 4
|
||||
OK service unit renders with the repository path, a supervised run as the main process, exit 3 never retried, and reload as SIGHUP
|
||||
OK service install writes the rendered unit (0644) and leaves no temp file
|
||||
OK service install a second time reports unchanged
|
||||
OK systemd-analyze verify accepts the rendered unit
|
||||
OK service uninstall removes the unit file
|
||||
OK service install with an unknown flag exits 4
|
||||
OK service install with USER unset finishes and names the account for lingering
|
||||
OK pinned render runs copy CLI with copy cwd/repo and no checkout executable
|
||||
OK pinned install writes the rendered unit in a temporary unit directory
|
||||
OK pinned install refuses short prerequisite and writes no unit
|
||||
OK pinned install refuses missing prerequisite and writes no unit
|
||||
OK pinned install refuses cli prerequisite and writes no unit
|
||||
OK pinned install refuses pi prerequisite and writes no unit
|
||||
OK status names the copy from fake systemctl effective cwd
|
||||
OK checkout install explicitly recommends --copy
|
||||
OK wrapper check --offline passes local fixture and makes no network call
|
||||
OK wrapper run --offline refuses usage
|
||||
|
||||
discord suite: 78 passed, 0 failed
|
||||
@@ -0,0 +1,22 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
OK initial ordinary-file install
|
||||
OK installed tree matches canonical source
|
||||
OK installed tree has no symlinks
|
||||
OK check detects installation drift
|
||||
OK sync refuses to overwrite installation drift
|
||||
OK check detects an extra destination file
|
||||
OK check detects an extra destination directory
|
||||
OK check rejects a destination symlink
|
||||
OK sync accepts a canonical source update
|
||||
OK updated installation matches canonical source
|
||||
scripts/test-extension-package.sh: line 14: 3532604 Killed "$@" > /dev/null 2>&1
|
||||
OK forced interruption kills the replacing process
|
||||
OK next invocation recovers old consistent installation
|
||||
OK interrupted replacement rolled back
|
||||
OK sync succeeds after interruption recovery
|
||||
OK unlocked stale lock file does not block
|
||||
OK active lock refuses a concurrent sync
|
||||
OK source symlink fails closed
|
||||
OK nested second entrypoint fails closed
|
||||
|
||||
extension package selftest: 18 passed, 0 failed
|
||||
@@ -0,0 +1,54 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
toolchain: node v26.8.1, python 3.12.8, jsonschema 4.26.0
|
||||
|
||||
OK syntax: scripts/foundation-inspect.mjs
|
||||
OK syntax: scripts/foundation/strict-json.mjs
|
||||
OK syntax: scripts/foundation/canonical.mjs
|
||||
OK syntax: scripts/foundation/resolve.mjs
|
||||
OK syntax: scripts/foundation/validate-record.mjs
|
||||
OK syntax: scripts/foundation/fixtures/build-fixtures.mjs
|
||||
OK syntax: scripts/foundation/canonical.test.mjs
|
||||
OK syntax: scripts/foundation/cli.test.mjs
|
||||
OK syntax: scripts/foundation/fixtures.test.mjs
|
||||
OK syntax: scripts/foundation/resolve.test.mjs
|
||||
OK syntax: scripts/foundation/strict-json.test.mjs
|
||||
OK syntax: scripts/foundation/verify-schema.py (ast only; no bytecode written)
|
||||
OK fixture generator runs
|
||||
OK checked-in fixtures/bundles equal a fresh generation
|
||||
OK checked-in fixtures/raw equal a fresh generation
|
||||
OK checked-in fixtures/index.json equal a fresh generation
|
||||
OK checked-in demo bundles equal a fresh generation
|
||||
OK a failing nested test fails the run under a parent runner's NODE_TEST_CONTEXT
|
||||
OK node --test scripts/foundation/ (ℹ pass 80)
|
||||
OK differential schema oracle: PASS: differential schema oracle (finite corpus; compatibility evidence, not equivalence proof)
|
||||
platform witness: strftime('%Y') for year 999 -> '999' (pinned checker refuses years 0001..0999)
|
||||
node v26.8.1; corpus 1568 records (38 pinned fixtures, 478 unique bundle records, 1052 typeCase/mutation/lexical cases)
|
||||
schema column: agree-valid 540, agree-invalid 991, DISAGREEMENTS 0; strict-only (parser-bound) cases: 27; unsupported-kind records not schema-assessed by the inspector: 10
|
||||
profile column (schema-valid records only): profile-valid 510, profile-invalid 30
|
||||
profile refusals asserted: 30 schema-agreed-valid records refused only by the strict typed-string profile (rule profile-pattern-mismatch), 12 declared by name; 73 named probes verified against declared schema/profile columns
|
||||
OK oracle: zero schema-column disagreements with the pinned checker
|
||||
OK oracle: strict-only profile refusals are counted and asserted
|
||||
OK demo: permitted read preview exits 0 (exit 0)
|
||||
OK demo: permitted file.change preview exits 0 (exit 0)
|
||||
OK demo: assignment.change proposal is unresolved (exit 3) (exit 3)
|
||||
OK demo: revoked registration is refused (exit 3) (exit 3)
|
||||
OK demo: message is not authority (exit 3) (exit 3)
|
||||
OK usage: no arguments exits 2 (exit 2)
|
||||
OK io: missing file exits 4 (exit 4)
|
||||
OK io: directory exits 4 (exit 4)
|
||||
OK io: symlink exits 4 (O_NOFOLLOW) (exit 4)
|
||||
OK bound: oversize fixture exits 2 (exit 2)
|
||||
OK profile: one final LF in a typed selection id is refused before admission (exit 2) (exit 2)
|
||||
OK profile: two final LFs fail the schema pattern itself (exit 2) (exit 2)
|
||||
OK profile: escaped newlines in free-form text stay allowed (exit 0) (exit 0)
|
||||
OK profile refusal is invalid-request/profile-pattern-mismatch with selection and operation withheld, value not echoed
|
||||
OK text output starts with the disclaimer
|
||||
OK json output is valid JSON with result allowed and exactly the charter §7 fields
|
||||
OK json golden matches byte-for-byte
|
||||
OK sandboxed bundle run (env -i, PATH=/nonexistent) produced the unresolved proposal
|
||||
OK sandbox inventory (path/type/size/mode/uid/gid/inode/mtime/sha256) unchanged by runs
|
||||
OK canary never printed (bundle run and credential-file run)
|
||||
OK a non-bundle JSON file is refused at the shape gate, not read into output
|
||||
OK no field of the non-bundle file is echoed
|
||||
|
||||
selftest: 44 passed, 0 failed
|
||||
@@ -0,0 +1,89 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
OK args: exit 2, target-branch
|
||||
OK args: exit 2, target-branch
|
||||
OK args: exit 4
|
||||
OK args: exit 4
|
||||
OK args: exit 4
|
||||
OK --base next refuses before the config is read (got 2)
|
||||
OK a missing system config exits 3 (got 3)
|
||||
OK nobus: exit 3
|
||||
OK schema-table: exit 2, bus-schema
|
||||
OK schema-meta: exit 2, bus-schema
|
||||
OK openBus opens the database read-only
|
||||
OK other-business: exit 2, decision-not-found
|
||||
OK no-raise: exit 2, decision-not-found
|
||||
OK not-a-merge: exit 2, not-a-merge
|
||||
OK open: exit 2, not-resolved
|
||||
OK withdrawn: exit 2, not-resolved
|
||||
OK by-agent: exit 2, not-human
|
||||
OK via-webui: exit 2, not-human
|
||||
OK no-answer: exit 2, not-human
|
||||
OK answer-role: exit 2, not-human
|
||||
OK answer-run: exit 2, not-human
|
||||
OK answer-choice: exit 2, not-human
|
||||
OK two-answers: exit 2, not-human
|
||||
OK arbiter-cross: exit 2, not-human
|
||||
OK arbiter-cited: exit 2, not-human
|
||||
OK chose-no: exit 2, not-merge-option
|
||||
OK two-refs: exit 2, work-ref
|
||||
OK bad-ref: exit 2, work-ref
|
||||
OK task-ref-disagrees: exit 2, work-ref
|
||||
OK raise-task-disagrees: exit 2, work-ref
|
||||
OK target-main: exit 2, target-branch
|
||||
OK superseded-question: exit 2, superseded
|
||||
OK superseded-task: exit 2, superseded
|
||||
OK superseded-by: exit 2, superseded
|
||||
OK no-verdict: exit 2, no-verdict
|
||||
OK changes-later: exit 2, not-approved
|
||||
OK short-commit: exit 2, not-approved
|
||||
OK wrong-task-body: exit 2, not-approved
|
||||
OK args: exit 2, decision-not-found
|
||||
OK earlier-merge: exit 0
|
||||
OK ref-moved: exit 2, ref-moved
|
||||
OK root-top: exit 2, root-file
|
||||
OK root-newdir: exit 2, root-file
|
||||
OK root-src: exit 2, root-file
|
||||
OK unrelated: exit 2, base-conflict
|
||||
OK empty: exit 2, base-conflict
|
||||
OK an empty reviewed diff says so
|
||||
OK dirty-changed: exit 2, checkout-dirty
|
||||
OK dirty-staged: exit 2, checkout-dirty
|
||||
OK dirty-untracked: exit 2, checkout-dirty
|
||||
OK conflict: exit 2, base-conflict
|
||||
OK a refusal after the worktree is added leaves no worktree or scratch
|
||||
OK cleanup looks for the worktree's Docker network
|
||||
OK dirty-during: exit 2, checkout-dirty
|
||||
OK a reviewed path dirtied during the gate moves no ref
|
||||
OK drift: exit 2, patch-drift
|
||||
OK patch-drift leaves no worktree or scratch
|
||||
OK gate-pkg: exit 2, gate-failed
|
||||
OK gate-failed names the failing step's log, and it exists
|
||||
OK gate-failed leaves no worktree or scratch
|
||||
OK gate-script: exit 2, gate-failed
|
||||
OK a failing scripts/test-*.sh fails the gate
|
||||
OK a failed gate moves no ref
|
||||
OK nomods: exit 4
|
||||
OK a target without node_modules leaves no worktree or scratch
|
||||
OK moved: exit 2, base-moved
|
||||
OK base-moved keeps the base where it moved to
|
||||
OK dry: exit 0
|
||||
OK --dry-run writes no ref
|
||||
OK --dry-run prints the commit with --subject and --attribution
|
||||
OK --dry-run runs the gate
|
||||
OK --dry-run leaves no worktree or scratch
|
||||
OK land: exit 0
|
||||
OK the landing is one commit on the old base
|
||||
OK its diff is the reviewed diff by patch-id
|
||||
OK its tree is the dry run's
|
||||
OK the message has the option's subject, the citations and the attribution last
|
||||
OK it prints the line for the PM
|
||||
OK the checked-out base has the reviewed paths and keeps the unrelated edit
|
||||
OK only refs/heads/refactor exists in the target
|
||||
OK the work ref is unchanged
|
||||
OK the bus database is unchanged
|
||||
OK the gate ran each package suite but queue, and each scripts/test-*.sh
|
||||
OK the landing leaves no worktree or scratch
|
||||
OK the target's node_modules is still there, with its contents
|
||||
OK the worktree's Docker network is removed
|
||||
---
|
||||
land-work selftests: 86 passed, 0 failed
|
||||
@@ -0,0 +1,37 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
toolchain: node v26.8.1, git version 2.55.0
|
||||
|
||||
OK syntax: packages/queue/src/cli.mjs
|
||||
OK syntax: packages/queue/src/errors.mjs
|
||||
OK syntax: packages/queue/src/io.mjs
|
||||
OK syntax: packages/queue/src/lock.mjs
|
||||
OK syntax: packages/queue/src/queue.mjs
|
||||
OK syntax: packages/queue/src/review.mjs
|
||||
OK syntax: packages/queue/src/store.mjs
|
||||
OK syntax: packages/queue/tests/commit.test.mjs
|
||||
OK syntax: packages/queue/tests/data.test.mjs
|
||||
OK syntax: packages/queue/tests/dispatch.test.mjs
|
||||
OK syntax: packages/queue/tests/gate-owner.test.mjs
|
||||
OK syntax: packages/queue/tests/helpers.mjs
|
||||
OK syntax: packages/queue/tests/lock.test.mjs
|
||||
OK syntax: packages/queue/tests/migration.test.mjs
|
||||
OK syntax: packages/queue/tests/review.test.mjs
|
||||
OK syntax: packages/queue/tests/store.test.mjs
|
||||
OK syntax: packages/queue/tests/write.test.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/fake-gitea.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/kill-at.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/lock-child.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/mosaic-pre-a2.sh
|
||||
OK syntax: scripts/queue-commit.sh
|
||||
OK syntax: scripts/git-hooks/pre-commit
|
||||
OK syntax: scripts/mosaic
|
||||
OK queue-commit.sh, the guard and scripts/mosaic are executable
|
||||
OK packages/queue declares no dependencies
|
||||
ℹ tests 156
|
||||
ℹ pass 156
|
||||
ℹ fail 0
|
||||
OK node --test packages/queue/tests/
|
||||
OK scripts/mosaic queue help
|
||||
skip queue verify and render --check: this checkout (/mnt/storage/scratch/tmp/g196-tree-tn651z) is not the queue's canonical root (/mnt/storage/src/mosaic-stack)
|
||||
|
||||
queue suite: 28 passed, 0 failed
|
||||
@@ -0,0 +1,17 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
OK valid RELEASE resolves (exit 0)
|
||||
OK invalid RELEASE exits 1 (exit 1)
|
||||
OK missing RELEASE exits 1 (exit 1)
|
||||
OK valid RELEASE leaves image tag consistent with version
|
||||
OK status safe on empty state (exit 0)
|
||||
OK status created no pointer
|
||||
OK fault-injected activation refuses (exit 1)
|
||||
OK refused activation wrote no pointer
|
||||
OK refusal logged exactly once with valid fields
|
||||
OK healthy activation succeeds (exit 0)
|
||||
OK pointer written with valid fields
|
||||
OK repeat activation succeeds (log grows) (exit 0)
|
||||
OK log is append-only across activations
|
||||
OK rollback without previous refuses (exit 1)
|
||||
|
||||
selftest: 14 passed, 0 failed
|
||||
@@ -0,0 +1,102 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
OK valid task validates (exit 0)
|
||||
OK unknown task key exits 2 (exit 2)
|
||||
OK unsupported taskVersion exits 2 (exit 2)
|
||||
OK invalid task id exits 2 (exit 2)
|
||||
OK empty prompt exits 2 (exit 2)
|
||||
OK NUL in expectExact exits 2 (exit 2)
|
||||
OK out-of-range timeout exits 2 (exit 2)
|
||||
OK missing mission file exits 4 (exit 4)
|
||||
OK task with valid mission validates (exit 0)
|
||||
OK invalid mission exits 2 (exit 2)
|
||||
OK validate missing task exits 4 (exit 4)
|
||||
OK validation does not modify the task file
|
||||
OK prune dry-run exits 0 (exit 0)
|
||||
OK dry-run deleted nothing
|
||||
OK prune --keep=2 --yes removes oldest (exit 0)
|
||||
OK kept exactly 2 newest runs
|
||||
OK newest run kept, oldest pruned
|
||||
OK append-only receipt written (3 entries)
|
||||
OK sessions/workspaces untouched by prune
|
||||
OK prune with invalid keep exits 4 (exit 4)
|
||||
OK mock adapter: gate passes on matching mock response (exit 0)
|
||||
OK mock adapter: expect-mismatch recorded (exit 1)
|
||||
OK mismatch reason recorded
|
||||
OK unknown adapter fails closed (exit 1)
|
||||
OK mission task runs via mock adapter (exit 0)
|
||||
OK mission section injected into generated prompt
|
||||
OK retry of mission run succeeds (exit 0)
|
||||
OK retriedFrom lineage recorded
|
||||
OK mission section present after retry (relative path resolved)
|
||||
OK retry of missing run exits 4 (exit 4)
|
||||
OK skill install bundled ms-tools (exit 0)
|
||||
OK installed to skills-available
|
||||
OK double install refuses (exit 1)
|
||||
OK activate enables skill (exit 0)
|
||||
OK enabled dir populated
|
||||
OK uninstall while enabled refuses (exit 1)
|
||||
OK deactivate moves back to available (exit 0)
|
||||
OK uninstall removes from available (exit 0)
|
||||
OK seat with enabled skill launches
|
||||
OK skill path delivered to adapter
|
||||
OK shipped researcher contract resolves (ceiling + network)
|
||||
OK resolve-role refuses a non-role document (conductor policy) (exit 2)
|
||||
OK resolve-role refuses name/filename mismatch (exit 2)
|
||||
OK resolve-role refuses unknown network declaration (exit 2)
|
||||
OK resolve-role refuses duplicate role tool (exit 2)
|
||||
OK resolve-role refuses unsupported tool (exit 2)
|
||||
OK resolve-role refuses missing contract file (exit 4)
|
||||
OK version 1 role prints no contract line
|
||||
OK shipped version 2 roles resolve with their contracts (pm, cto, coder, reviewer)
|
||||
OK resolve-role accepts a minimal version 2 role (exit 0)
|
||||
OK resolve-role refuses an action outside the vocabulary (exit 2)
|
||||
OK resolve-role refuses a gated-only action in a role file (exit 2)
|
||||
OK resolve-role refuses a Vikunja verb no role may hold (exit 2)
|
||||
OK resolve-role refuses a version 2 role whose contract is missing (exit 2)
|
||||
OK resolve-role refuses a contract that is a symbolic link (exit 2)
|
||||
OK seat launches under role ceiling
|
||||
OK role ceiling narrows seat tools (read,write,bash -> read,bash)
|
||||
OK narrowing recorded loudly
|
||||
OK missing role contract refuses launch (exit 2)
|
||||
OK missing-contract refusal names the role
|
||||
OK empty ceiling intersection -> tool-free seat
|
||||
OK tool-free outcome recorded loudly
|
||||
OK overridden agents dir without seat definition refuses (exit 4)
|
||||
OK seat-resolution refusal names the seat
|
||||
OK policy: mission only -> mission tools
|
||||
OK policy: task only -> task tools
|
||||
OK policy: both -> intersection (task narrowed)
|
||||
OK policy: empty intersection -> tool-free
|
||||
OK invalid mission capabilities rejected (exit 2)
|
||||
mosaic-task: unsupported mission tool: "sudo" (supported: read, write, edit, bash, grep, find, ls)
|
||||
OK task run with user layer present (exit 0)
|
||||
OK user context dispatched into generated prompt
|
||||
OK workspace+tools task runs via mock (exit 0)
|
||||
OK workspace path + tools delivered to adapter
|
||||
OK persistent workspace created on host
|
||||
OK plain task still runs (no workspace/tools) (exit 0)
|
||||
OK workspace var present but empty when absent
|
||||
OK tools empty when absent
|
||||
OK unknown tool exits 2 (exit 2)
|
||||
OK workspace traversal exits 2 (exit 2)
|
||||
OK live hello task succeeds with exact marker
|
||||
OK result.json written in run dir
|
||||
OK result.json contents are correct
|
||||
OK wrong expectExact fails with exit 1 (reason: expect-mismatch)
|
||||
OK each run gets a distinct run dir (no clobber)
|
||||
OK list shows both runs
|
||||
OK fork base: teach succeeds (exit 0)
|
||||
OK fork child recalls ancestor context (exit 0)
|
||||
OK forked child recalled ancestor code word
|
||||
OK ancestor session untouched by fork
|
||||
OK child session dir has its own branch file
|
||||
OK onboard without name exits 4 (non-interactive) (exit 4)
|
||||
OK onboard --name renders profile (exit 0)
|
||||
OK profile written
|
||||
OK canon structure: required filled, optional placeholdered
|
||||
OK canon sections present
|
||||
OK user recall run succeeds
|
||||
OK recalled user name (response: Jason)
|
||||
OK no agent identity on headless run
|
||||
|
||||
selftest: 98 passed, 0 failed
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,50 @@
|
||||
START bus 81 whole file(s)
|
||||
END bus {"code":0,"signal":null,"pass":627,"fail":0,"skip":0,"wallSeconds":35.87504165,"stopped":false}
|
||||
START webui 50 whole file(s)
|
||||
END webui {"code":0,"signal":null,"pass":304,"fail":0,"skip":1,"wallSeconds":111.03407226800002,"stopped":false}
|
||||
START cli 50 whole file(s)
|
||||
END cli {"code":0,"signal":null,"pass":744,"fail":0,"skip":0,"wallSeconds":587.827140887,"stopped":false}
|
||||
START packages_business_tests_business.test.mjs 1 whole file(s)
|
||||
END packages_business_tests_business.test.mjs {"code":0,"signal":null,"pass":19,"fail":0,"skip":0,"wallSeconds":1.4857721460000612,"stopped":false}
|
||||
START packages_business_tests_cli.test.mjs 1 whole file(s)
|
||||
END packages_business_tests_cli.test.mjs {"code":0,"signal":null,"pass":10,"fail":0,"skip":0,"wallSeconds":3.404195076999953,"stopped":false}
|
||||
START packages_business_tests_instance-settings.test.mjs 1 whole file(s)
|
||||
END packages_business_tests_instance-settings.test.mjs {"code":0,"signal":null,"pass":13,"fail":0,"skip":0,"wallSeconds":1.8708043269999326,"stopped":false}
|
||||
START packages_business_tests_library-projects-protected.test.mjs 1 whole file(s)
|
||||
END packages_business_tests_library-projects-protected.test.mjs {"code":0,"signal":null,"pass":4,"fail":0,"skip":0,"wallSeconds":1.4709744530000026,"stopped":false}
|
||||
START packages_business_tests_resolve.test.mjs 1 whole file(s)
|
||||
END packages_business_tests_resolve.test.mjs {"code":0,"signal":null,"pass":11,"fail":0,"skip":0,"wallSeconds":1.4367549480000743,"stopped":false}
|
||||
START packages_conversation_tests_cohort.test.mjs 1 whole file(s)
|
||||
END packages_conversation_tests_cohort.test.mjs {"code":0,"signal":null,"pass":38,"fail":0,"skip":0,"wallSeconds":27.922146513000015,"stopped":false}
|
||||
START packages_library_tests_mapping.test.mjs 1 whole file(s)
|
||||
END packages_library_tests_mapping.test.mjs {"code":0,"signal":null,"pass":8,"fail":0,"skip":0,"wallSeconds":1.4136770970000652,"stopped":false}
|
||||
START packages_library_tests_mirror.test.mjs 1 whole file(s)
|
||||
END packages_library_tests_mirror.test.mjs {"code":0,"signal":null,"pass":16,"fail":0,"skip":0,"wallSeconds":7.354534180999966,"stopped":false}
|
||||
START packages_library_tests_sync.test.mjs 1 whole file(s)
|
||||
END packages_library_tests_sync.test.mjs {"code":0,"signal":null,"pass":15,"fail":0,"skip":0,"wallSeconds":2.932404891999904,"stopped":false}
|
||||
START packages_project_tests_project.test.mjs 1 whole file(s)
|
||||
END packages_project_tests_project.test.mjs {"code":0,"signal":null,"pass":15,"fail":0,"skip":0,"wallSeconds":1.7687200799999991,"stopped":false}
|
||||
START packages_seat_tests_checkout.test.mjs 1 whole file(s)
|
||||
END packages_seat_tests_checkout.test.mjs {"code":0,"signal":null,"pass":78,"fail":0,"skip":0,"wallSeconds":6.295986329999985,"stopped":false}
|
||||
START packages_tasks_tests_requirements.test.mjs 1 whole file(s)
|
||||
END packages_tasks_tests_requirements.test.mjs {"code":0,"signal":null,"pass":3,"fail":0,"skip":0,"wallSeconds":1.3982757729999722,"stopped":false}
|
||||
START test-auth.sh 1 whole file(s)
|
||||
END test-auth.sh {"code":0,"signal":null,"pass":15,"fail":0,"skip":0,"wallSeconds":1.9081228229999543,"stopped":false}
|
||||
START test-conductor.sh 1 whole file(s)
|
||||
END test-conductor.sh {"code":0,"signal":null,"pass":17,"fail":0,"skip":0,"wallSeconds":8.057173820000026,"stopped":false}
|
||||
START test-config.sh 1 whole file(s)
|
||||
END test-config.sh {"code":0,"signal":null,"pass":31,"fail":0,"skip":0,"wallSeconds":3.1678915339999367,"stopped":false}
|
||||
START test-discord.sh 1 whole file(s)
|
||||
END test-discord.sh {"code":0,"signal":null,"pass":78,"fail":0,"skip":0,"wallSeconds":8.613370803000056,"stopped":false}
|
||||
START test-extension-package.sh 1 whole file(s)
|
||||
END test-extension-package.sh {"code":0,"signal":null,"pass":18,"fail":0,"skip":0,"wallSeconds":2.6515103489999894,"stopped":false}
|
||||
START test-foundation.sh 1 whole file(s)
|
||||
END test-foundation.sh {"code":0,"signal":null,"pass":44,"fail":0,"skip":0,"wallSeconds":39.145344808000026,"stopped":false}
|
||||
START test-land-work.sh 1 whole file(s)
|
||||
END test-land-work.sh {"code":0,"signal":null,"pass":86,"fail":0,"skip":0,"wallSeconds":12.047738473000004,"stopped":false}
|
||||
START test-queue.sh 1 whole file(s)
|
||||
END test-queue.sh {"code":0,"signal":null,"pass":28,"fail":0,"skip":0,"wallSeconds":21.795574542999965,"stopped":false}
|
||||
START test-release.sh 1 whole file(s)
|
||||
END test-release.sh {"code":0,"signal":null,"pass":14,"fail":0,"skip":0,"wallSeconds":10.876533943000016,"stopped":false}
|
||||
START test-task.sh 1 whole file(s)
|
||||
END test-task.sh {"code":0,"signal":null,"pass":98,"fail":0,"skip":0,"wallSeconds":27.828224730000017,"stopped":false}
|
||||
@@ -0,0 +1,666 @@
|
||||
[
|
||||
{
|
||||
"name": "bus",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/bus/tests/account-migration.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/comment-cursors.test.mjs",
|
||||
"packages/bus/tests/comment-migration.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/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/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/library-sync.test.mjs",
|
||||
"packages/bus/tests/library.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/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/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/replies.test.mjs",
|
||||
"packages/bus/tests/requirements.test.mjs",
|
||||
"packages/bus/tests/review.test.mjs",
|
||||
"packages/bus/tests/routes-verb.test.mjs",
|
||||
"packages/bus/tests/schema.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-migration.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/web.test.mjs",
|
||||
"packages/bus/tests/workflow-roles.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/bus/tests/account-migration.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/comment-cursors.test.mjs",
|
||||
"packages/bus/tests/comment-migration.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/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/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/library-sync.test.mjs",
|
||||
"packages/bus/tests/library.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/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/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/replies.test.mjs",
|
||||
"packages/bus/tests/requirements.test.mjs",
|
||||
"packages/bus/tests/review.test.mjs",
|
||||
"packages/bus/tests/routes-verb.test.mjs",
|
||||
"packages/bus/tests/schema.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-migration.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/web.test.mjs",
|
||||
"packages/bus/tests/workflow-roles.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "webui",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "cli",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_business.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/business.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/business.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_cli.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/cli.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/cli.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_instance-settings.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/instance-settings.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/instance-settings.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_library-projects-protected.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/library-projects-protected.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/library-projects-protected.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_resolve.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/resolve.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/resolve.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_conversation_tests_cohort.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/conversation/tests/cohort.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/conversation/tests/cohort.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_mapping.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/mapping.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/mapping.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_mirror.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/mirror.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/mirror.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_sync.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/sync.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/sync.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_project_tests_project.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/project/tests/project.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/project/tests/project.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_seat_tests_checkout.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/seat/tests/checkout.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/seat/tests/checkout.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "packages_tasks_tests_requirements.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/tasks/tests/requirements.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/tasks/tests/requirements.test.mjs"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-auth.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-auth.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-auth.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-conductor.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-conductor.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-conductor.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-config.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-config.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-config.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-discord.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-discord.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-discord.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-extension-package.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-extension-package.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-extension-package.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-foundation.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-foundation.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-foundation.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-land-work.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-land-work.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-land-work.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-queue.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-queue.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-queue.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-release.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-release.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-release.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "test-task.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-task.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-task.sh"
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,916 @@
|
||||
[
|
||||
{
|
||||
"name": "bus",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/bus/tests/account-migration.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/comment-cursors.test.mjs",
|
||||
"packages/bus/tests/comment-migration.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/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/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/library-sync.test.mjs",
|
||||
"packages/bus/tests/library.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/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/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/replies.test.mjs",
|
||||
"packages/bus/tests/requirements.test.mjs",
|
||||
"packages/bus/tests/review.test.mjs",
|
||||
"packages/bus/tests/routes-verb.test.mjs",
|
||||
"packages/bus/tests/schema.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-migration.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/web.test.mjs",
|
||||
"packages/bus/tests/workflow-roles.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/bus/tests/account-migration.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/comment-cursors.test.mjs",
|
||||
"packages/bus/tests/comment-migration.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/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/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/library-sync.test.mjs",
|
||||
"packages/bus/tests/library.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/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/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/replies.test.mjs",
|
||||
"packages/bus/tests/requirements.test.mjs",
|
||||
"packages/bus/tests/review.test.mjs",
|
||||
"packages/bus/tests/routes-verb.test.mjs",
|
||||
"packages/bus/tests/schema.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-migration.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/web.test.mjs",
|
||||
"packages/bus/tests/workflow-roles.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/bus.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 35.87504165,
|
||||
"pass": 627,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "webui",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/webui.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 111.03407226800002,
|
||||
"pass": 304,
|
||||
"fail": 0,
|
||||
"skip": 1,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "cli",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"--test-concurrency=2",
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/cli.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 587.827140887,
|
||||
"pass": 744,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_business.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/business.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/business.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_business_tests_business.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.4857721460000612,
|
||||
"pass": 19,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_cli.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/cli.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/cli.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_business_tests_cli.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 3.404195076999953,
|
||||
"pass": 10,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_instance-settings.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/instance-settings.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/instance-settings.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_business_tests_instance-settings.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.8708043269999326,
|
||||
"pass": 13,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_library-projects-protected.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/library-projects-protected.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/library-projects-protected.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_business_tests_library-projects-protected.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.4709744530000026,
|
||||
"pass": 4,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_business_tests_resolve.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/business/tests/resolve.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/business/tests/resolve.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_business_tests_resolve.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.4367549480000743,
|
||||
"pass": 11,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_conversation_tests_cohort.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/conversation/tests/cohort.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/conversation/tests/cohort.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_conversation_tests_cohort.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 27.922146513000015,
|
||||
"pass": 38,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_mapping.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/mapping.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/mapping.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_library_tests_mapping.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.4136770970000652,
|
||||
"pass": 8,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_mirror.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/mirror.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/mirror.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_library_tests_mirror.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 7.354534180999966,
|
||||
"pass": 16,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_library_tests_sync.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/library/tests/sync.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/library/tests/sync.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_library_tests_sync.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 2.932404891999904,
|
||||
"pass": 15,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_project_tests_project.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/project/tests/project.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/project/tests/project.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_project_tests_project.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.7687200799999991,
|
||||
"pass": 15,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_seat_tests_checkout.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/seat/tests/checkout.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/seat/tests/checkout.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_seat_tests_checkout.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 6.295986329999985,
|
||||
"pass": 78,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "packages_tasks_tests_requirements.test.mjs",
|
||||
"command": "/usr/bin/node",
|
||||
"args": [
|
||||
"--test",
|
||||
"--test-reporter=tap",
|
||||
"packages/tasks/tests/requirements.test.mjs"
|
||||
],
|
||||
"kind": "node",
|
||||
"wholeFiles": [
|
||||
"packages/tasks/tests/requirements.test.mjs"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/packages_tasks_tests_requirements.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.3982757729999722,
|
||||
"pass": 3,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-auth.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-auth.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-auth.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-auth.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.9081228229999543,
|
||||
"pass": 15,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-conductor.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-conductor.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-conductor.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-conductor.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 8.057173820000026,
|
||||
"pass": 17,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-config.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-config.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-config.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-config.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 3.1678915339999367,
|
||||
"pass": 31,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-discord.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-discord.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-discord.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-discord.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 8.613370803000056,
|
||||
"pass": 78,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-extension-package.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-extension-package.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-extension-package.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-extension-package.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 2.6515103489999894,
|
||||
"pass": 18,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-foundation.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-foundation.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-foundation.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-foundation.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 39.145344808000026,
|
||||
"pass": 44,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-land-work.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-land-work.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-land-work.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-land-work.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 12.047738473000004,
|
||||
"pass": 86,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-queue.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-queue.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-queue.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-queue.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 21.795574542999965,
|
||||
"pass": 28,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-release.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-release.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-release.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-release.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 10.876533943000016,
|
||||
"pass": 14,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
},
|
||||
{
|
||||
"name": "test-task.sh",
|
||||
"command": "bash",
|
||||
"args": [
|
||||
"scripts/test-task.sh"
|
||||
],
|
||||
"kind": "shell",
|
||||
"wholeFiles": [
|
||||
"scripts/test-task.sh"
|
||||
],
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-196/r6/test-task.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 27.828224730000017,
|
||||
"pass": 98,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
}
|
||||
]
|
||||
Reference in new issue
Block a user