gander: publish completed row 196 gate and merge review manifest
This commit is contained in:
1 parent
05e940117f
commit
93f3332b28
36 files changed
+10000
-59
No files matched your search
@@ -111,3 +111,7 @@ changes are planned before the batch. M1-M29 remain prepared and unexecuted.
|
||||
2026-10-21 fourth-run preflight, sage-2113: no predicted test reds. The prior editor rebuild skip may remain because shared esbuild is 0.28.1 while the test requires 0.28.2. Legacy case1/case2 tester-port consumers remain follow-up scope per mos-1198; their contract tests use stand-ins. The fourth run covers WebUI and CLI whole, eight union files and every scripts/test-*.sh. No product edit or dependency install.
|
||||
|
||||
2026-10-21 fourth-run stop, sage-2113/2120 at 91e3696ef: WebUI whole passed 304/0 with one existing editor skip in 112.142839 seconds. CLI did not start: busy preflight detected Sage queue add sage-2122a (PID 2054449) and refused, 1.612991 seconds. No extra files or shell tests started. No rerun; simultaneous report gander-0052 to Sage and Mos returned the slot. Sweep found zero gate leftovers and eight pre-existing harness helpers. Product tracked tree clean. Records: r5/gate/.
|
||||
|
||||
2026-10-21 mos-1200 correction: the fourth-run CLI busy refusal means the guard worked and is not counted as a stop. Earlier entries and raw logs retain the driver wording. WebUI 304/0, bus 622/0 and 30 mutant kills stand while product blobs match; only CLI whole, eight union files and ten shell scripts remain. Sage chooses the candidate and grants resumption. No test or rebase starts before that decision.
|
||||
|
||||
2026-10-21 sage-2124 continuation completed on 05e940117: CLI whole 735/0; eight union files 166/0; ten scripts/test-*.sh 429/0. Combined with carried bus/WebUI: 2256 pass, 0 fail, 1 editor skip; 30/30 mutants killed. Counts/times are script-summed in r5/resume/summary.json. Sweep gate leftovers 0, eight pre-existing helpers remain. Slot returned gander-0056. MANIFEST.md, CANDIDATE.sha256 and PRODUCT-FILES.json freeze immutable 05e940117 for Duckworth. No live activation or merge authorized.
|
||||
@@ -0,0 +1,39 @@
|
||||
4f5e1f7cb21d86cced206e25abac032d75c7e3ba683d6f80f42001d5b4211e05 docs/TOOLS.md
|
||||
10c996d323ac46d45548f7748d40b246de93f8c5eacae9f951c6eeb5dcc62697 packages/bus/README.md
|
||||
60720461a7994011a9a30594715eb2c992be699cd61c656e77cbd609ad05328e packages/bus/fixtures/peer-client.mjs
|
||||
0c6d96abe4607cba0b02b0638a2fc217ff8135bac9a47761a0ef015fbe9d3079 packages/bus/src/human.mjs
|
||||
d5d98a9133a1b449acc48143fd559d890a470c6ea210b30b9b70e491e6cd855a packages/bus/src/interpreter.mjs
|
||||
29c88655e8b9aed8db604573c9213fd9f3c40ef35ff04f4eda8fbe8f1b8a32d7 packages/bus/src/peercred.mjs
|
||||
d1536a8f472fa5b3773adb10555529ed049ad63b647c0b44c00ce5f25ce09f85 packages/bus/src/peercred.py
|
||||
32ef39d80b523bdd586c29620d7a752c309c8e1aa70befc1414125468f3411dd packages/bus/src/principal.mjs
|
||||
f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83 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
|
||||
a39af877a2d9143cc8d0584af0d603ca7ab651db8787e5816579762f17295887 packages/bus/tests/peer-transport.test.mjs
|
||||
2c4c0bed41e546ce94535d8c4547b1cf5552a181183525dd1d52e2af1d64ccb6 packages/bus/tests/peercred.test.mjs
|
||||
cefbc0688d823c69196d94bb71467884acd639070721286d7e8e4e986c8240c1 packages/bus/tests/principal.test.mjs
|
||||
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
|
||||
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
|
||||
da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1 packages/webui/src/serve.mjs
|
||||
1c1fe0c795adac97f28502564a75f26d5666d9be5ae51169f7dd5bb7741fad16 packages/webui/src/tester-socket.mjs
|
||||
2f3ea92cbe1ca115301ee1e3b8fc55a206842606237446b700881ee57a1b18cb packages/webui/tests/browser.mjs
|
||||
f505b5fc635aa699556c237a92401b495943e45e25ebfadab945d64477e3e86e packages/webui/tests/library-cli.test.mjs
|
||||
edef361c4654ec010809c12c87c00197ec6e6b8337863068c4ffa144e291e300 packages/webui/tests/proof-cli.test.mjs
|
||||
5f34d699a1bce6f46f286def1a93fdd4d863d06bec6839677fae1041be7153dd packages/webui/tests/proof.test.mjs
|
||||
6457debc3d233a24643be00e4876e1129db664da2fbf5cc7168f3e371c46f313 packages/webui/tests/service.test.mjs
|
||||
3c1d2481eff2271c1c83f7ec2e9d616ac22600d032af23afc47f919c58f1b9ba packages/webui/tests/sso.test.mjs
|
||||
9215ff92df774ba1e83819b87f758b53c8f3d19c2824c916490165914f1cb9e8 packages/webui/tests/tester-browser-fixture.mjs
|
||||
89ffc5cbed1630a523080e8561d3678c1f781fb657199a5cd6cdb8189f082c73 packages/webui/tests/tester-browser.test.mjs
|
||||
23219434713fbd283a1e5cb1a373ed9d19d0963e171636dbf39bed3d60cd1316 packages/webui/tests/tester-cli.test.mjs
|
||||
7d4f3a59d21675807b1bfb92d40b7378134df450590bc6d42fa4103ab1343348 packages/webui/tests/tester-fixture.mjs
|
||||
7f0fc2daead11048cb86e0a74b6a223314785b1740a2927461d012b876a69f18 packages/webui/tests/tester-listener.test.mjs
|
||||
c01a942da1ad66a08a4e7c92d3c7e64f517530acfe5517f1e9895767d5ea3c0b packages/webui/tests/tester-socket.test.mjs
|
||||
b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2 scripts/stack-release.sh
|
||||
6e7069cca9f7aef84c17f15611f2d7e0d09083a363c23da8dbd14d3ed29f0f40 scripts/webui-service.sh
|
||||
@@ -1,12 +1,40 @@
|
||||
# Row 196 review manifest
|
||||
# Row 196 merge-scoped review manifest
|
||||
|
||||
Status: draft, not an acceptance claim. Candidate product files are uncommitted.
|
||||
Base: 4d26003f731a6eec439df6a48cacc3ef482a59c8. Design r3 approved by
|
||||
duckworth-0009/0015 and sage-1371. No merge, deployment or live re-pin requested.
|
||||
Current path hashes are in PRODUCT-FILES.json, marked as an uncommitted draft.
|
||||
Final candidate commit, exact changed-file hashes and gate totals follow after
|
||||
the renewed suite slot. Sage owns that slot and the final gate. Duckworth reviews
|
||||
this manifest before Sage's gate.
|
||||
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.
|
||||
|
||||
`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.
|
||||
|
||||
## Acceptance 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.
|
||||
|
||||
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.
|
||||
|
||||
| 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 |
|
||||
|
||||
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.
|
||||
|
||||
## Review items
|
||||
|
||||
@@ -27,9 +55,12 @@ this manifest before Sage's gate.
|
||||
| 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. |
|
||||
|
||||
All package paths above are under `packages/`. Mutants are prepared in
|
||||
`mutants.mjs` but none have run as of this draft. Their kill and restoration
|
||||
receipts must be attached before acceptance. M25-M29 supplement design M1-M24.
|
||||
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
|
||||
|
||||
@@ -43,8 +74,7 @@ Only two baselines in `packages/bus/tests/channel-proof.test.mjs` change.
|
||||
|
||||
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`. These hashes must be checked again
|
||||
against the final candidate before review.
|
||||
Focused evidence: `evidence/channel-proof.txt`. Both candidate hashes were checked against immutable 05e940117 and match the table.
|
||||
|
||||
## Consumer inventory and window
|
||||
|
||||
@@ -60,23 +90,63 @@ 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.
|
||||
|
||||
## Gate history and remaining evidence
|
||||
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.
|
||||
|
||||
Run 1: bus 463 pass, one byte-baseline failure. Run 2: bus 464 pass; WebUI
|
||||
stopped at its second fixture migration failure, with 269 observed top-level
|
||||
passes and no final summary. CLI and mutants did not start. Sage received clear
|
||||
in gander-0023. No timing failures were attributed to Launchpad's T56 overlap.
|
||||
The two browser failures were repaired and verified in a single file.
|
||||
## Gate history and controls
|
||||
|
||||
sage-1416 delays the renewed slot until Launchpad, Darkwing, Rocko and row 192
|
||||
finish. No suite or mutant batch starts before Sage's go. Remaining: final
|
||||
bus/WebUI/CLI suites, M1-M29 receipts, final changed-file hashes,
|
||||
verified candidate commit/push, Duckworth
|
||||
manifest review and Sage's gate. No approval is implied by this draft.
|
||||
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.
|
||||
|
||||
Node 24 focused reruns after the shutdown change are complete: peercred 5/5 and
|
||||
principal 4/4. Node 26 peer-transport now passes 4/4, including client-visible
|
||||
refusal codes. Full logs are in evidence/.
|
||||
|
||||
## Refused caller behavior and static review
|
||||
|
||||
@@ -98,9 +168,9 @@ 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 prepared mutant. An unrelated change to legacy
|
||||
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.
|
||||
No further implementation changes are planned before the authorized batch.
|
||||
The authorized golden files are complete. No live activation or uid window was run.
|
||||
|
||||
## Limits carried to acceptance
|
||||
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
{
|
||||
"status": "uncommitted draft; regenerate after final tests",
|
||||
"base": "4d26003f731a6eec439df6a48cacc3ef482a59c8",
|
||||
"status": "verified immutable candidate",
|
||||
"base": "e54e05463",
|
||||
"candidate": "05e940117",
|
||||
"files": [
|
||||
{
|
||||
"path": "docs/TOOLS.md",
|
||||
"baselineSha256": "5bd1bc697cd56e57b00e60c0e80be72cd1043a55a6d2fc0b9e2ccdd0c5cf9802",
|
||||
"candidateSha256": "7eba3f1ac2e5a159c9c764f1c3e4f6fdfaf06d2904cdc36338723d5ddd9044c8"
|
||||
"baselineSha256": "17528973e2ed9748f5b0a9218feb5b2ae9789c13998e29e448b5775aae3c561d",
|
||||
"candidateSha256": "4f5e1f7cb21d86cced206e25abac032d75c7e3ba683d6f80f42001d5b4211e05"
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/README.md",
|
||||
"baselineSha256": "4377cc32aed37fa1bb645c0bbc3340eed4ec01740e67327449949474e35d3fdb",
|
||||
"candidateSha256": "becff52b647f28079d2756b26a7e46e28f14b695f57b2dede779e7cb43af3d96"
|
||||
"baselineSha256": "30db0bea82f6f9c2000b68797c461d1fb26726c4f983e6e984b36014c9865d15",
|
||||
"candidateSha256": "10c996d323ac46d45548f7748d40b246de93f8c5eacae9f951c6eeb5dcc62697"
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/fixtures/peer-client.mjs",
|
||||
@@ -44,13 +45,13 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/src/runtime.mjs",
|
||||
"baselineSha256": "fe70f4b6568fbfec85e58d34f3cb8c3624daba65487d73ad24e981f2121cb27a",
|
||||
"candidateSha256": "e001bdba127fc6e7a6e95ef1864e661b2842f3c797169ab0a6ccaa5e2cd7da00"
|
||||
"baselineSha256": "c759e665514a5bcad40536bc9f979837187fe6523462b3c0a0687182885c3ac6",
|
||||
"candidateSha256": "f060bb55bb3abbc9f5d776ce7728a8e49356a6c5307bca8411e6163f0e044e83"
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/src/server.mjs",
|
||||
"baselineSha256": "8a1b8eac60a5885bbfd36f939b63443de303ed298bf9e1ff653a5a7bcbae76d2",
|
||||
"candidateSha256": "a5788c0a0b2b78de5eb2111a47c475e100cbb0e2eca4b601e7f027cac2c56d7e"
|
||||
"baselineSha256": "207c7a76752c753ef7380f18f9ce1a4f23e8fa35142973b6358aaf0c45f44899",
|
||||
"candidateSha256": "7be306c830aa98763b34b329995b40e9df443483fe20fcd69100a3acb6311bd6"
|
||||
},
|
||||
{
|
||||
"path": "packages/bus/tests/channel-proof.test.mjs",
|
||||
@@ -79,18 +80,23 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/cli/README.md",
|
||||
"baselineSha256": "2c9f8fe7143aa80e59826ab53bd046de2b5e0a8f3e81fe4e3df77726bb54d50b",
|
||||
"candidateSha256": "23f4c767a67b358025f0d035d2a676e14e335478c480bc44a5c303066c40709c"
|
||||
"baselineSha256": "66ad221829e3b710106379070e5decd3b6e7bfe352175c02fba1463bd18801e0",
|
||||
"candidateSha256": "95c7acdb47f753d1e129adaa90b5937318d8d006ca47be9d92729fdae013776f"
|
||||
},
|
||||
{
|
||||
"path": "packages/cli/src/tester-http.mjs",
|
||||
"baselineSha256": null,
|
||||
"candidateSha256": "4bd7bdf0898844684ebf9444b110d2c5b6fa874b2681183e54f1f62f97823192"
|
||||
},
|
||||
{
|
||||
"path": "packages/cli/tests/stack-release-fixture.mjs",
|
||||
"baselineSha256": "86a3c15446d4c119206097c754cd15f5bef7b7e93c9f16e9d8696ec8c475eea9",
|
||||
"candidateSha256": "a7cb20db2941b3b3abb09bcaa55eac92a1d420cf4ec79c6f83e4bb3235e04a2b"
|
||||
},
|
||||
{
|
||||
"path": "packages/cli/tests/stack-release.test.mjs",
|
||||
"baselineSha256": "b01ff656962c6fdb5bc3554cfbb13645b7f25adae5f6cd9608af8de6d6091c6c",
|
||||
"candidateSha256": "4c92b7cc7c4b942a1bbb9a9e24c7c1ef10e23d3f9d166bee98ed1b7f6b8de4b0"
|
||||
"baselineSha256": "46cc95a6e75a89b907cdd5e9bd03853e1d1f75f1ced81084d968c5476466822e",
|
||||
"candidateSha256": "2a5a896831c1bab2ae239c90651592c95d6d08c151df518a5f6cdae65bded3ef"
|
||||
},
|
||||
{
|
||||
"path": "packages/cli/tests/tester-http.test.mjs",
|
||||
@@ -99,8 +105,8 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/README.md",
|
||||
"baselineSha256": "78c7b60d23cf20863a1cb66e16af2f9363d08acc79c5b4a344cd8af4fbe5bd44",
|
||||
"candidateSha256": "8bf41140a0c013a3d77757b66e442d46c278cf8eb0f54ac26b4e477e8265279b"
|
||||
"baselineSha256": "68e5db18de89d59357171f3393c9803043f00d6388999a1e44a312365fe2fde5",
|
||||
"candidateSha256": "04b7c1165c4fa73137a72e8373d70fd7d96a5897b5511170e6d41908a7667e96"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/src/bus.mjs",
|
||||
@@ -109,13 +115,13 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/src/cli.mjs",
|
||||
"baselineSha256": "4f988333ec6af225a023323dda85a159b81a77f408a8dd7bff798fe9a1f4b24b",
|
||||
"candidateSha256": "fbe9db9352300fb969aa889e40323c61b1a51d01f63434964be0a8c530240e50"
|
||||
"baselineSha256": "e98fd2fe4e621d5b4fa1ed95c4d4585469e7ab7a11dd379dc541dddb1b1a1f02",
|
||||
"candidateSha256": "2c7f791e53b4bce8dc23aa974a8fe4c5d7b59204331a3d8ac398a31e530517a2"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/src/serve.mjs",
|
||||
"baselineSha256": "ba7d3e35b225cb4e17a4d2530a0f34d0a3734641e3982229a38207a36b3cd433",
|
||||
"candidateSha256": "894bdb260af418bef7ca9dac5dd19541ca898d6f946ed12fa832bc3475234709"
|
||||
"baselineSha256": "333d474b1c7e753938aedc639c08f9db0e787faf56aa8068d013fd304a0b3b7e",
|
||||
"candidateSha256": "da624f188c69e016ff82e1d1dcae1c579e68a57f0f25d773bb5d8bca56b80ee1"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/src/tester-socket.mjs",
|
||||
@@ -127,10 +133,15 @@
|
||||
"baselineSha256": "1e70a0175f1d660f6b71449a1423ece83fbe8332108960fa9aff6f7a5e48022a",
|
||||
"candidateSha256": "2f3ea92cbe1ca115301ee1e3b8fc55a206842606237446b700881ee57a1b18cb"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/library-cli.test.mjs",
|
||||
"baselineSha256": "1983912b76f01f8e6d0c564e3bbcd763c0b2c44044988b192ef827446f98556c",
|
||||
"candidateSha256": "f505b5fc635aa699556c237a92401b495943e45e25ebfadab945d64477e3e86e"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/proof-cli.test.mjs",
|
||||
"baselineSha256": "c23975b140ed977f3b98dbbec5de289e9f930cc42089193c4aa7c106338a68ba",
|
||||
"candidateSha256": "105cf4936db0498d0c0025698c7ee33ddce9530b43f6c829b77afdbcb3075207"
|
||||
"baselineSha256": "a1aff7eec4e2f90533bacaf14e2fdeaba3a6a8a87aae700ec6d68e3bd536af73",
|
||||
"candidateSha256": "edef361c4654ec010809c12c87c00197ec6e6b8337863068c4ffa144e291e300"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/proof.test.mjs",
|
||||
@@ -139,8 +150,13 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/service.test.mjs",
|
||||
"baselineSha256": "424be2837a18a41eab56b0deb576e35b460ac16b8c371762ad44896ffc3aad7d",
|
||||
"candidateSha256": "2304ced2473c25b0369b4bb9b1433c1be3ee9ab8a6f75c971487abcd48cb1d1b"
|
||||
"baselineSha256": "845313239547ddbc478090b29f96385f0b8853e5087c572393be328e7075f578",
|
||||
"candidateSha256": "6457debc3d233a24643be00e4876e1129db664da2fbf5cc7168f3e371c46f313"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/sso.test.mjs",
|
||||
"baselineSha256": "67f93deb65b14dc213615e5e674fb908a2d13b253c8c0e4b8c0cd5476157a06a",
|
||||
"candidateSha256": "3c1d2481eff2271c1c83f7ec2e9d616ac22600d032af23afc47f919c58f1b9ba"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/tester-browser-fixture.mjs",
|
||||
@@ -154,8 +170,8 @@
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/tester-cli.test.mjs",
|
||||
"baselineSha256": "dd74517b336e1670a5910481920ba875ffb004d52d8c6bee7cc5efc81e43215d",
|
||||
"candidateSha256": "a5c6c95dbda75dce37d38d3ce4761d3ad576babd9304a046e9a62b1b5dc2fdfd"
|
||||
"baselineSha256": "8bf4491f7982399b4162cfbe36d0b68888e99ceb2cbaefefc2361732dd95e0c8",
|
||||
"candidateSha256": "23219434713fbd283a1e5cb1a373ed9d19d0963e171636dbf39bed3d60cd1316"
|
||||
},
|
||||
{
|
||||
"path": "packages/webui/tests/tester-fixture.mjs",
|
||||
@@ -174,13 +190,13 @@
|
||||
},
|
||||
{
|
||||
"path": "scripts/stack-release.sh",
|
||||
"baselineSha256": "5bb3ac40102ce515f1acdcbc5670feb161ce40a193e94e2f8b104ebf98eddc38",
|
||||
"candidateSha256": "59b39d63feb77f22abb4b7152c18feff53715cf3a10dde6374c69615329868c7"
|
||||
"baselineSha256": "1896d6518a502d340dfe30d402102b8c5cd5d8520757387b018b636755eb5d36",
|
||||
"candidateSha256": "b916a2793311d21e3ce7117e9b5e0768e6e33c841fa3aa39fb7ffc9c5974acd2"
|
||||
},
|
||||
{
|
||||
"path": "scripts/webui-service.sh",
|
||||
"baselineSha256": "d514caf757c03e5d02ef39b19359669bd2476dca1877f5d237c65bd62c33d2bf",
|
||||
"candidateSha256": "67cc347231d4410acf0fd845bde58aeabf099d1d6cf3e36efda4db66c5438c10"
|
||||
"baselineSha256": "39f2b8e4384978538337d85d740a3eaf68b28529c0e7cfdaca105b9177ed678a",
|
||||
"candidateSha256": "6e7069cca9f7aef84c17f15611f2d7e0d09083a363c23da8dbd14d3ed29f0f40"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -28,3 +28,5 @@ sage-2096 ended at stop 3: whole bus 622/0/0 in 36.272 s; whole WebUI 303/1/1 in
|
||||
mos-1198 approves fourth run after Gizmoduck 250 r2 with Sage grant, r5 only activation flag change and BUILD note, exact name/assertions retained. New branch r5 a415de022 is one commit on retained r4; wider unpublished draft preserved on gander/row196-r5-draft. All 595 product blobs match r4 by SHA256. r5/TESTER-PORT-AUDIT.md lists scripts and tests, including case2-unit/case1-accept for Sage's chained follow-up. Sent gander-0049/50. No tests since stop3. mos-1199 requires all queue196 records committed/pushed before fourth grant, no product or node_modules changes. Next message gander-0051.
|
||||
|
||||
Fourth run sage-2113/2120 at 91e3696ef: WebUI whole 304/0/1 in 112.143 s. CLI mandatory busy preflight refused on Sage queue add sage-2122a PID 2054449, so no CLI, extras or shells started. Driver stopped; no rerun. gander-0052 simultaneously reported Sage and Mos and returned slot. Sweep gate leftovers 0, eight pre-existing harness helpers. r5/gate/RESULTS.md and raw logs retain evidence. Await Mos ruling and Sage grant; no fifth run.
|
||||
|
||||
Run 4 complete, sage-2124 on 05e940117: 1330/0 continuation, 2256/0/1 combined golden, 30 kills. Slot returned 20:02:08Z in gander-0056, sweep gate leftovers 0. Final manifest and SHA files prepared from immutable candidate for Duckworth merge-scoped review; no product edit, rebase, merge or activation. Queue writes batched under sage-2127 after Sage queue-commit, then hold for Megavolt.
|
||||
@@ -0,0 +1,66 @@
|
||||
# Run 4 completed
|
||||
|
||||
Candidate 05e940117; no rebase. Continuation grant sage-2124. CLI, all eight union files and all ten shell scripts ran whole, with busy &&, pipefail, tee and scratch TMPDIR.
|
||||
|
||||
| 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 |
|
||||
|
||||
Continuation: 1330 pass, 0 fail, 0 skip. Combined golden: 2256 pass, 0 fail, 1 skip. Counts and wall times are summed from the raw JSON/log summaries by finalize.py. One Node editor skip is carried from WebUI. test-queue also explicitly skips canonical-only verify/render checks in this scratch checkout; shell pass/fail totals do not count those skips. No new tests ran while producing this report.
|
||||
|
||||
Zero gate leftovers. Eight pre-existing harness helpers remain, all previously accepted as outside the gate. Slot returned in gander-0056 at 20:02:08Z.
|
||||
|
||||
| Mutant | Killed | Target | Accepted evidence |
|
||||
|---|---|---|---|
|
||||
| M1 | yes | packages/webui/src/serve.mjs | r2/mutants |
|
||||
| M2 | yes | packages/webui/src/tester-socket.mjs | r2/mutants |
|
||||
| M3 | yes | packages/webui/src/serve.mjs | r2/mutants |
|
||||
| M4 | yes | packages/bus/src/principal.mjs | r2/mutants |
|
||||
| M5 | yes | packages/bus/src/peercred.mjs | r2/mutants |
|
||||
| M6 | yes | packages/bus/src/principal.mjs | r2/mutants |
|
||||
| M7 | yes | packages/webui/src/tester-socket.mjs | r2/mutants |
|
||||
| M8 | yes | packages/bus/src/human.mjs | r2/mutants |
|
||||
| M9 | yes | packages/bus/src/human.mjs | r2/mutants |
|
||||
| M10 | yes | packages/bus/src/principal.mjs | r2/mutants |
|
||||
| M11 | yes | packages/bus/src/principal.mjs | r2/mutants |
|
||||
| M12 | yes | packages/bus/src/human.mjs | r2/mutants |
|
||||
| M13 | yes | packages/bus/src/server.mjs | r4/gate/killers |
|
||||
| M14 | yes | packages/bus/src/principal.mjs | r2/mutants |
|
||||
| M15 | yes | scripts/stack-release.sh | r2/mutants |
|
||||
| M16 | yes | scripts/stack-release.sh | r2/mutants |
|
||||
| M17 | yes | packages/bus/src/broker.mjs | r4/gate/killers |
|
||||
| M18 | yes | packages/bus/src/principal.mjs | r2/mutants |
|
||||
| M19 | yes | packages/cli/src/tester-http.mjs | r2/mutants |
|
||||
| M20 | yes | packages/bus/src/peercred.mjs | r2/mutants |
|
||||
| M21 | yes | packages/bus/src/interpreter.mjs | r2/mutants |
|
||||
| M22 | yes | packages/bus/src/server.mjs | r4/gate/killers |
|
||||
| M23 | yes | packages/bus/src/interpreter.mjs | r2/run2/killers |
|
||||
| M24 | yes | packages/webui/src/tester-socket.mjs | r2/run2/killers |
|
||||
| M25 | yes | packages/bus/src/interpreter.mjs | r3/gate/killers |
|
||||
| M26 | yes | packages/bus/src/peercred.mjs | r2/run2/killers |
|
||||
| M27 | yes | packages/bus/src/peercred.mjs | r2/run2/killers |
|
||||
| M28 | yes | scripts/stack-release.sh | r3/gate/killers |
|
||||
| M28b | yes | scripts/stack-release.sh | r3/gate/killers |
|
||||
| M29 | yes | scripts/stack-release.sh | r3/gate/killers |
|
||||
|
||||
All 595 product blobs match r4. Mutant target restoration hashes and clean-tree checks are in their original result records; carry uses target SHA equality per sage-2096 and full product equality per mos-1198. Raw failed/survivor runs remain as historical evidence and are not relabeled.
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,38 @@
|
||||
START cli 50 whole file(s)
|
||||
END cli {"code":0,"signal":null,"pass":735,"fail":0,"skip":0,"wallSeconds":574.4362024449999,"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.5239333430000115,"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.4669965549999615,"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.905683660000097,"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.4774370280000149,"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.4465837360000005,"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.3335777119999985,"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.7260885409999174,"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.367270185999922,"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.9063287659999915,"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":6.837640707000042,"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.1544246460000287,"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.776727847000002,"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":3.01285702399991,"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.70872647900006,"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.623263413000037,"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":23.443742031000088,"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":12.168674453999964,"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":36.783798266,"stopped":false}
|
||||
@@ -0,0 +1,78 @@
|
||||
# One-shot record generator run after the gate, using the prior draft manifest.
|
||||
import json,hashlib,subprocess
|
||||
from pathlib import Path
|
||||
root=Path('agents/gander/work/queue-196');out=root/'r5/resume';candidate='05e940117';base='e54e05463'
|
||||
def git(*a):return subprocess.check_output(['git',*a],stderr=subprocess.DEVNULL)
|
||||
def sha(b):return hashlib.sha256(b).hexdigest()
|
||||
files=git('diff','--name-only',base,candidate,'--','packages','scripts','docs/TOOLS.md').decode().splitlines()
|
||||
rows=[]
|
||||
for f in files:
|
||||
try:old=sha(git('show',base+':'+f))
|
||||
except subprocess.CalledProcessError:old=None
|
||||
rows.append(dict(path=f,baselineSha256=old,candidateSha256=sha(git('show',candidate+':'+f))))
|
||||
(root/'PRODUCT-FILES.json').write_text(json.dumps(dict(status='verified immutable candidate',base=base,candidate=candidate,files=rows),indent=2)+'\n')
|
||||
(root/'CANDIDATE.sha256').write_text(''.join(f"{r['candidateSha256']} {r['path']}\n" for r in rows))
|
||||
# Extend the complete r4/r5 product equality record to this immutable gate tip.
|
||||
prior=json.loads((root/'r5/product-shas.json').read_text());matches=[]
|
||||
for r in prior['files']:
|
||||
h=sha(git('show',candidate+':'+r['path']))
|
||||
assert h==r['r4Sha256'],r['path']
|
||||
matches.append(dict(path=r['path'],sha256=h))
|
||||
(out/'product-equality.json').write_text(json.dumps(dict(r4=prior['r4'],candidate=candidate,count=len(matches),changed=[],files=matches),indent=2)+'\n')
|
||||
res=json.loads((out/'whole-results.json').read_text());web=json.loads((root/'r5/gate/whole-results.json').read_text())[0];bus=json.loads((root/'r4/gate/whole-results.json').read_text())[0]
|
||||
assert len(res)==19 and all(r['complete'] and r['code']==0 and r['fail']==0 for r in res)
|
||||
kills=json.loads((root/'r4/gate/consolidated-kills.json').read_text());assert len(kills['rows'])==30 and all(x['killed'] for x in kills['rows'])
|
||||
sweep=json.loads((out/'process-sweep.json').read_text());assert sweep['gateLeftoverCount']==0
|
||||
allres=[bus,web,*res]
|
||||
def totals(rs):return dict(passCount=sum(x['pass'] for x in rs),failCount=sum(x['fail'] for x in rs),skipCount=sum(x['skip'] for x in rs),wallSeconds=sum(x['wallSeconds'] for x in rs))
|
||||
summary=dict(candidate=candidate,base=base,grants=['sage-2096','sage-2113','sage-2120','sage-2124'],continuation=totals(res),cli=totals(res[:1]),eightFiles=totals(res[1:9]),shellScripts=totals(res[9:]),golden=totals(allres),mutants=dict(killed=30,total=30,source='r4/gate/consolidated-kills.json'),sweep=sweep)
|
||||
(out/'summary.json').write_text(json.dumps(summary,indent=2)+'\n')
|
||||
table='| Step | Pass | Fail | Skip | Wall seconds |\n|---|---:|---:|---:|---:|\n'
|
||||
for r in allres:table+=f"| {r['name']} | {r['pass']} | {r['fail']} | {r['skip']} | {r['wallSeconds']:.6f} |\n"
|
||||
kt='| Mutant | Killed | Target | Accepted evidence |\n|---|---|---|---|\n'
|
||||
for r in kills['rows']:kt+=f"| {r['id']} | yes | {r['targetFile']} | {r['evidenceFolder']} |\n"
|
||||
(out/'RESULTS.md').write_text('# Run 4 completed\n\nCandidate '+candidate+'; no rebase. Continuation grant sage-2124. CLI, all eight union files and all ten shell scripts ran whole, with busy &&, pipefail, tee and scratch TMPDIR.\n\n'+table+'\nContinuation: 1330 pass, 0 fail, 0 skip. Combined golden: 2256 pass, 0 fail, 1 skip. Counts and wall times are summed from the raw JSON/log summaries by finalize.py. One Node editor skip is carried from WebUI. test-queue also explicitly skips canonical-only verify/render checks in this scratch checkout; shell pass/fail totals do not count those skips. No new tests ran while producing this report.\n\nZero gate leftovers. Eight pre-existing harness helpers remain, all previously accepted as outside the gate. Slot returned in gander-0056 at 20:02:08Z.\n\n'+kt+'\nAll 595 product blobs match r4. Mutant target restoration hashes and clean-tree checks are in their original result records; carry uses target SHA equality per sage-2096 and full product equality per mos-1198. Raw failed/survivor runs remain as historical evidence and are not relabeled.\n')
|
||||
old=(root/'MANIFEST.md').read_text();items=old[old.index('## Review items'):old.index('## Separate row164 proof baseline update')]
|
||||
items=items[:items.index('All package paths')]+'''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.
|
||||
|
||||
'''
|
||||
repin=old[old.index('## Separate row164 proof baseline update'):old.index('## Gate history and remaining evidence')]
|
||||
repin=repin.replace('These hashes must be checked again\nagainst the final candidate before review.','Both candidate hashes were checked against immutable 05e940117 and match the table.')
|
||||
repin+='''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.
|
||||
|
||||
'''
|
||||
refused=old[old.index('## Refused caller behavior and static review'):]
|
||||
refused=refused.replace('Each has a focused test and prepared mutant.','Each has a focused test and a killed mutant.').replace('No further implementation changes are planned before the authorized batch.','The authorized golden files are complete. No live activation or uid window was run.')
|
||||
r2=(root/'r2/REBASE.md').read_text();merge=r2[r2.index('## Merge reasoning for the ten conflicted files'):r2.index('## First r2 slot')]
|
||||
r4=(root/'r4/REBASE.md').read_text();merge+='\n'+r4[r4.index('## Every conflicted hunk'):r4.index('Mutated paths now')]
|
||||
header='''# Row 196 merge-scoped 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.
|
||||
|
||||
`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.
|
||||
|
||||
## Acceptance 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.
|
||||
|
||||
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.
|
||||
|
||||
'''
|
||||
gates='''## 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.
|
||||
|
||||
'''
|
||||
(root/'MANIFEST.md').write_text(header+table+'\nRaw 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.\n\n'+items+repin+gates+merge+'\n'+refused)
|
||||
with (root/'BUILD.md').open('a') as f:f.write('\n2026-10-21 sage-2124 continuation completed on 05e940117: CLI whole 735/0; eight union files 166/0; ten scripts/test-*.sh 429/0. Combined with carried bus/WebUI: 2256 pass, 0 fail, 1 editor skip; 30/30 mutants killed. Counts/times are script-summed in r5/resume/summary.json. Sweep gate leftovers 0, eight pre-existing helpers remain. Slot returned gander-0056. MANIFEST.md, CANDIDATE.sha256 and PRODUCT-FILES.json freeze immutable 05e940117 for Duckworth. No live activation or merge authorized.\n')
|
||||
with (root/'PROGRESS.md').open('a') as f:f.write('\nRun 4 complete, sage-2124 on 05e940117: 1330/0 continuation, 2256/0/1 combined golden, 30 kills. Slot returned 20:02:08Z in gander-0056, sweep gate leftovers 0. Final manifest and SHA files prepared from immutable candidate for Duckworth merge-scoped review; no product edit, rebase, merge or activation. Queue writes batched under sage-2127 after Sage queue-commit, then hold for Megavolt.\n')
|
||||
print(json.dumps(summary,indent=2)[:1700]);print('candidate manifest',len(rows),'paths',sha((root/'CANDIDATE.sha256').read_bytes()))
|
||||
@@ -0,0 +1,133 @@
|
||||
{
|
||||
"count": 21,
|
||||
"passCount": 2256,
|
||||
"failCount": 0,
|
||||
"logs": [
|
||||
{
|
||||
"log": "r4/gate/bus.log",
|
||||
"sha256": "2c6dfc63cf0251fdb40baa9bdcf19068f6cfb3c54c1fed175fb4126e31638f00",
|
||||
"passCount": 622,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/gate/webui.log",
|
||||
"sha256": "182939517813cb10027d14cd1b0236daecfe65bf13117e586a7891ea023634c2",
|
||||
"passCount": 304,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/cli.log",
|
||||
"sha256": "1771a5a5de7e811689be432ed13d3f0f68e1109f720ac18d3ed0619982c75549",
|
||||
"passCount": 735,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_business_tests_business.test.mjs.log",
|
||||
"sha256": "8d870ce6f0f994d91f19c81534aed9680029ba1a7c8003b56fc543966a82c9f8",
|
||||
"passCount": 19,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_business_tests_cli.test.mjs.log",
|
||||
"sha256": "06d3c248b298909d2316810da5fe5ab0f08c7bf9eb1ae65554519fcff8d85804",
|
||||
"passCount": 10,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_business_tests_instance-settings.test.mjs.log",
|
||||
"sha256": "c9d9e4f49bda11737e55d5f9a270e6e679719a0502cea80a43cc7ed863666fe0",
|
||||
"passCount": 13,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_business_tests_library-projects-protected.test.mjs.log",
|
||||
"sha256": "c69e4665c8ac1e6e79a83455818ed3dde517ac85236ef58df9f8f04088ca6c5d",
|
||||
"passCount": 4,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_business_tests_resolve.test.mjs.log",
|
||||
"sha256": "ea2820110fbc799d9743168e6f06cd1b30d949063ac112659351e7c01e736a62",
|
||||
"passCount": 11,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_library_tests_mirror.test.mjs.log",
|
||||
"sha256": "d8670a189ffcbfd7f118a1188d713a2585884b25adc8622b5bda899804a413f8",
|
||||
"passCount": 16,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_project_tests_project.test.mjs.log",
|
||||
"sha256": "ac5946ac5e32bd7a591a6de9e99a904c6233e5355ea733e3be71150eeb4fefab",
|
||||
"passCount": 15,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/packages_seat_tests_checkout.test.mjs.log",
|
||||
"sha256": "a6175a856b86d4fcd67484ba776dd8055d35ce1df383f8f0951f2c15b4fa464f",
|
||||
"passCount": 78,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-auth.sh.log",
|
||||
"sha256": "f3784a0f42d8d6b7947bbfcad6038cee8ba0bf81067addfebd3ae2094bf1f916",
|
||||
"passCount": 15,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-conductor.sh.log",
|
||||
"sha256": "6e6dd7b3c192a4b4af949b98662c3de99bb53cf74b5882dc4b4d655b40548e8a",
|
||||
"passCount": 17,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-config.sh.log",
|
||||
"sha256": "2e41f642485407cea7d4d3b1dc180bda27d944c8af9af5d80ab1bdc0f5b54d5c",
|
||||
"passCount": 31,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-discord.sh.log",
|
||||
"sha256": "6c9c61092fc049545464959009fad551caaabdaa6b4433ea6812e28a49137824",
|
||||
"passCount": 78,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-extension-package.sh.log",
|
||||
"sha256": "78e6425e3c1458c4f0e5c68f3e64432717494d1d3ddfa3086602238c3a222f05",
|
||||
"passCount": 18,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-foundation.sh.log",
|
||||
"sha256": "26fd7d925f0cd5cbf4477ab7354eaf950cb096718046a5c8a12f123415b7463e",
|
||||
"passCount": 44,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-land-work.sh.log",
|
||||
"sha256": "9b32bc54922584b4da25b51301fbc350e9073096cda93b366155664570e35d11",
|
||||
"passCount": 86,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-queue.sh.log",
|
||||
"sha256": "20050cb4ebf0dc7217351fd6f1484fae68f30e56123513c63c5fc81dbf10f70d",
|
||||
"passCount": 28,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/test-release.sh.log",
|
||||
"sha256": "bc4352fe2bc362875a7b12dd7126f1f8290e2411b6c7801b23a3fd75c98adb82",
|
||||
"passCount": 14,
|
||||
"failCount": 0
|
||||
},
|
||||
{
|
||||
"log": "r5/resume/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.987372
|
||||
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.86676
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: config directory and file path follow MOSAIC_CONFIG
|
||||
ok 3 - config directory and file path follow MOSAIC_CONFIG
|
||||
---
|
||||
duration_ms: 0.192309
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the fixture business validates and comes back frozen
|
||||
ok 4 - the fixture business validates and comes back frozen
|
||||
---
|
||||
duration_ms: 0.871925
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: two instances may share a definition
|
||||
ok 5 - two instances may share a definition
|
||||
---
|
||||
duration_ms: 0.830918
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: top-level refusals
|
||||
ok 6 - top-level refusals
|
||||
---
|
||||
duration_ms: 2.701948
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: arbiters and projects
|
||||
ok 7 - arbiters and projects
|
||||
---
|
||||
duration_ms: 4.113307
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: role instances
|
||||
ok 8 - role instances
|
||||
---
|
||||
duration_ms: 1.99159
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: Vikunja bots
|
||||
ok 9 - Vikunja bots
|
||||
---
|
||||
duration_ms: 4.890541
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a role without Vikunja takes no tracker block
|
||||
ok 10 - a role without Vikunja takes no tracker block
|
||||
---
|
||||
duration_ms: 2.101637
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: credential references match the definition's services
|
||||
ok 11 - credential references match the definition's services
|
||||
---
|
||||
duration_ms: 2.300185
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: launch
|
||||
ok 12 - launch
|
||||
---
|
||||
duration_ms: 7.246556
|
||||
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: 3.957414
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: loadBusiness: file checks
|
||||
ok 14 - loadBusiness: file checks
|
||||
---
|
||||
duration_ms: 1.667648
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: loadBusiness: not a regular file
|
||||
ok 15 - loadBusiness: not a regular file
|
||||
---
|
||||
duration_ms: 40.067804
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: loading writes nothing
|
||||
ok 16 - loading writes nothing
|
||||
---
|
||||
duration_ms: 1.285413
|
||||
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: 2.806511
|
||||
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.771432
|
||||
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.891607
|
||||
type: 'test'
|
||||
...
|
||||
1..19
|
||||
# tests 19
|
||||
# suites 0
|
||||
# pass 19
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 151.353795
|
||||
@@ -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: 191.87287
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: usage errors exit 4
|
||||
ok 2 - usage errors exit 4
|
||||
---
|
||||
duration_ms: 268.990052
|
||||
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.127852
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: project files
|
||||
ok 4 - validate: project files
|
||||
---
|
||||
duration_ms: 309.214757
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: missing files and a broken system config
|
||||
ok 5 - validate: missing files and a broken system config
|
||||
---
|
||||
duration_ms: 252.410805
|
||||
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: 66.348923
|
||||
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: 68.501715
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: validate: role definitions come from MOSAIC_ROLES_DIR
|
||||
ok 8 - validate: role definitions come from MOSAIC_ROLES_DIR
|
||||
---
|
||||
duration_ms: 185.324228
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: resolve: prints one instance's record
|
||||
ok 9 - resolve: prints one instance's record
|
||||
---
|
||||
duration_ms: 256.11754
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: resolve: refusals
|
||||
ok 10 - resolve: refusals
|
||||
---
|
||||
duration_ms: 370.158353
|
||||
type: 'test'
|
||||
...
|
||||
1..10
|
||||
# tests 10
|
||||
# suites 0
|
||||
# pass 10
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 2087.019533
|
||||
+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: 24.315172
|
||||
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.5
|
||||
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: 79.317083
|
||||
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: 95.585844
|
||||
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.991803
|
||||
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.496391
|
||||
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.758936
|
||||
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: 69.17592
|
||||
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: 8.070069
|
||||
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.626067
|
||||
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: 10.074757
|
||||
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: 31.631331
|
||||
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: 82.378542
|
||||
type: 'test'
|
||||
...
|
||||
1..13
|
||||
# tests 13
|
||||
# suites 0
|
||||
# pass 13
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 526.666112
|
||||
+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: 19.914117
|
||||
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: 14.897569
|
||||
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.192914
|
||||
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: 10.025512
|
||||
type: 'test'
|
||||
...
|
||||
1..4
|
||||
# tests 4
|
||||
# suites 0
|
||||
# pass 4
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 105.158418
|
||||
@@ -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.343507
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: systemVars flattens the validated config
|
||||
ok 2 - systemVars flattens the validated config
|
||||
---
|
||||
duration_ms: 0.816406
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: precedence: system, business, project, project role, agent
|
||||
ok 3 - precedence: system, business, project, project role, agent
|
||||
---
|
||||
duration_ms: 1.514437
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: limits narrow the definition and never widen it
|
||||
ok 4 - limits narrow the definition and never widen it
|
||||
---
|
||||
duration_ms: 1.864065
|
||||
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.147353
|
||||
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.770761
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: limits.authority narrows cross-role actions too
|
||||
ok 7 - limits.authority narrows cross-role actions too
|
||||
---
|
||||
duration_ms: 0.811109
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: classify
|
||||
ok 8 - classify
|
||||
---
|
||||
duration_ms: 0.816881
|
||||
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.775312
|
||||
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.532201
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: refusals
|
||||
ok 11 - refusals
|
||||
---
|
||||
duration_ms: 1.72647
|
||||
type: 'test'
|
||||
...
|
||||
1..11
|
||||
# tests 11
|
||||
# suites 0
|
||||
# pass 11
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 78.827289
|
||||
@@ -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: 35.743741
|
||||
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.980754
|
||||
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: 103.960919
|
||||
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.591223
|
||||
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: 19.961648
|
||||
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: 33.378126
|
||||
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: 34.786283
|
||||
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: 93.715761
|
||||
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: 27.845883
|
||||
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: 69.928541
|
||||
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.347289
|
||||
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: 234.02448
|
||||
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.888576
|
||||
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: 56.020414
|
||||
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.111099
|
||||
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: 19.75204
|
||||
type: 'test'
|
||||
...
|
||||
1..16
|
||||
# tests 16
|
||||
# suites 0
|
||||
# pass 16
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 5967.136936
|
||||
@@ -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.193211
|
||||
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: 26.317903
|
||||
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: 13.687062
|
||||
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: 12.516997
|
||||
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: 67.9394
|
||||
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: 14.541243
|
||||
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: 18.237978
|
||||
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: 17.262524
|
||||
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.301662
|
||||
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: 36.026953
|
||||
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: 25.122439
|
||||
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: 13.631895
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: schema constraints and layout omissions are reported independently
|
||||
ok 13 - schema constraints and layout omissions are reported independently
|
||||
---
|
||||
duration_ms: 12.587996
|
||||
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: 17.967969
|
||||
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: 29.881672
|
||||
type: 'test'
|
||||
...
|
||||
1..15
|
||||
# tests 15
|
||||
# suites 0
|
||||
# pass 15
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 359.888609
|
||||
@@ -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: 24.068567
|
||||
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: 25.139644
|
||||
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.80187
|
||||
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.38953
|
||||
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.944929
|
||||
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: 43.555328
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: an untracked file
|
||||
ok 2 - an untracked file
|
||||
---
|
||||
duration_ms: 43.578014
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a staged file
|
||||
ok 3 - a staged file
|
||||
---
|
||||
duration_ms: 45.552387
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: another branch
|
||||
ok 4 - another branch
|
||||
---
|
||||
duration_ms: 44.474285
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a detached HEAD
|
||||
ok 5 - a detached HEAD
|
||||
---
|
||||
duration_ms: 44.267784
|
||||
type: 'test'
|
||||
...
|
||||
1..5
|
||||
ok 6 - a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves
|
||||
---
|
||||
duration_ms: 222.531732
|
||||
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: 44.429656
|
||||
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: 24.010304
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: hooks-present
|
||||
ok 2 - hooks-present
|
||||
---
|
||||
duration_ms: 26.456728
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: submodule
|
||||
ok 3 - submodule
|
||||
---
|
||||
duration_ms: 32.132655
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: config-changed
|
||||
ok 4 - config-changed
|
||||
---
|
||||
duration_ms: 28.788333
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: root-unreadable
|
||||
ok 5 - root-unreadable
|
||||
---
|
||||
duration_ms: 28.582855
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: root-detached
|
||||
ok 6 - root-detached
|
||||
---
|
||||
duration_ms: 34.831424
|
||||
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: 36.358179
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: status-failed, dirty
|
||||
ok 8 - status-failed, dirty
|
||||
---
|
||||
duration_ms: 35.738098
|
||||
type: 'test'
|
||||
...
|
||||
1..8
|
||||
ok 8 - a clone kept before the branch check, or for a failed status, gets no fetch
|
||||
---
|
||||
duration_ms: 248.188865
|
||||
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: 39.060792
|
||||
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: 47.577956
|
||||
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: 83.407385
|
||||
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.589624
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: user.email
|
||||
ok 2 - user.email
|
||||
---
|
||||
duration_ms: 27.077458
|
||||
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: 54.174344
|
||||
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: 48.313761
|
||||
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: 19.718599
|
||||
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: 34.825263
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: core.hooksPath
|
||||
ok 2 - core.hooksPath
|
||||
---
|
||||
duration_ms: 34.607853
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a hook file
|
||||
ok 3 - a hook file
|
||||
---
|
||||
duration_ms: 32.415233
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: include.path
|
||||
ok 4 - include.path
|
||||
---
|
||||
duration_ms: 34.452538
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: includeIf
|
||||
ok 5 - includeIf
|
||||
---
|
||||
duration_ms: 34.951755
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a filter driver
|
||||
ok 6 - a filter driver
|
||||
---
|
||||
duration_ms: 34.506288
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: origin moved
|
||||
ok 7 - origin moved
|
||||
---
|
||||
duration_ms: 35.061517
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a second origin url
|
||||
ok 8 - a second origin url
|
||||
---
|
||||
duration_ms: 34.578313
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the origin url twice, both the root
|
||||
ok 9 - the origin url twice, both the root
|
||||
---
|
||||
duration_ms: 35.890336
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: an ext:: origin
|
||||
ok 10 - an ext:: origin
|
||||
---
|
||||
duration_ms: 34.545512
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a branch tracking another remote
|
||||
ok 11 - a branch tracking another remote
|
||||
---
|
||||
duration_ms: 34.622665
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a branch merging a tag
|
||||
ok 12 - a branch merging a tag
|
||||
---
|
||||
duration_ms: 34.554134
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a fetch line onto local branches
|
||||
ok 13 - a fetch line onto local branches
|
||||
---
|
||||
duration_ms: 35.21518
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: no origin
|
||||
ok 14 - no origin
|
||||
---
|
||||
duration_ms: 34.582413
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a config file over the size cap
|
||||
ok 15 - a config file over the size cap
|
||||
---
|
||||
duration_ms: 32.02243
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: config a symlink to /dev/zero
|
||||
ok 16 - config a symlink to /dev/zero
|
||||
---
|
||||
duration_ms: 32.106204
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone a symlink to the bait
|
||||
ok 17 - the clone a symlink to the bait
|
||||
---
|
||||
duration_ms: 31.61815
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone a file
|
||||
ok 18 - the clone a file
|
||||
---
|
||||
duration_ms: 30.444422
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: the clone a plain directory
|
||||
ok 19 - the clone a plain directory
|
||||
---
|
||||
duration_ms: 30.626095
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git a gitdir: file
|
||||
ok 20 - .git a gitdir: file
|
||||
---
|
||||
duration_ms: 31.790964
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git a symlink
|
||||
ok 21 - .git a symlink
|
||||
---
|
||||
duration_ms: 30.620095
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git/logs a symlink
|
||||
ok 22 - .git/logs a symlink
|
||||
---
|
||||
duration_ms: 29.999273
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git/refs/heads a symlink
|
||||
ok 23 - .git/refs/heads a symlink
|
||||
---
|
||||
duration_ms: 31.098678
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: .git/objects a symlink
|
||||
ok 24 - .git/objects a symlink
|
||||
---
|
||||
duration_ms: 32.203924
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a reflog hard-linked to a file outside
|
||||
ok 25 - a reflog hard-linked to a file outside
|
||||
---
|
||||
duration_ms: 33.125147
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: HEAD a fifo
|
||||
ok 26 - HEAD a fifo
|
||||
---
|
||||
duration_ms: 32.942152
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a commondir file
|
||||
ok 27 - a commondir file
|
||||
---
|
||||
duration_ms: 31.209577
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: an alternates file
|
||||
ok 28 - an alternates file
|
||||
---
|
||||
duration_ms: 32.143247
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink staged, no .gitmodules
|
||||
ok 29 - a gitlink staged, no .gitmodules
|
||||
---
|
||||
duration_ms: 45.242744
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink and .gitmodules staged
|
||||
ok 30 - a gitlink and .gitmodules staged
|
||||
---
|
||||
duration_ms: 47.077745
|
||||
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: 53.338551
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink and .gitmodules committed
|
||||
ok 32 - a gitlink and .gitmodules committed
|
||||
---
|
||||
duration_ms: 49.285771
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a gitlink and submodule.active in config
|
||||
ok 33 - a gitlink and submodule.active in config
|
||||
---
|
||||
duration_ms: 45.987254
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a .git/modules with no gitlink
|
||||
ok 34 - a .git/modules with no gitlink
|
||||
---
|
||||
duration_ms: 34.372858
|
||||
type: 'test'
|
||||
...
|
||||
1..34
|
||||
ok 15 - a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||||
---
|
||||
duration_ms: 1206.505705
|
||||
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.616926
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: not a repository
|
||||
ok 2 - not a repository
|
||||
---
|
||||
duration_ms: 10.454092
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: a plain directory inside another repository
|
||||
ok 3 - a plain directory inside another repository
|
||||
---
|
||||
duration_ms: 15.181602
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: unreadable
|
||||
ok 4 - unreadable
|
||||
---
|
||||
duration_ms: 10.347787
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: on no branch
|
||||
ok 5 - on no branch
|
||||
---
|
||||
duration_ms: 12.120322
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: missing an object
|
||||
ok 6 - missing an object
|
||||
---
|
||||
duration_ms: 15.582791
|
||||
type: 'test'
|
||||
...
|
||||
1..6
|
||||
ok 16 - a root that can't be cloned refuses with the project id and leaves nothing behind
|
||||
---
|
||||
duration_ms: 75.11175
|
||||
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: 28.730422
|
||||
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: 47.937295
|
||||
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.86504
|
||||
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.16756
|
||||
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: 1021.952973
|
||||
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: 514.861548
|
||||
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: 515.353281
|
||||
type: 'test'
|
||||
...
|
||||
1..23
|
||||
# tests 78
|
||||
# suites 0
|
||||
# pass 78
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 4984.06869
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"scope": [
|
||||
"/mnt/storage/scratch/tmp/g196-tree-tn651z",
|
||||
"/mnt/storage/scratch/tmp/gS1z",
|
||||
"/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
|
||||
}
|
||||
]
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,105 @@
|
||||
{
|
||||
"candidate": "05e940117",
|
||||
"base": "e54e05463",
|
||||
"grants": [
|
||||
"sage-2096",
|
||||
"sage-2113",
|
||||
"sage-2120",
|
||||
"sage-2124"
|
||||
],
|
||||
"continuation": {
|
||||
"passCount": 1330,
|
||||
"failCount": 0,
|
||||
"skipCount": 0,
|
||||
"wallSeconds": 748.099956839
|
||||
},
|
||||
"cli": {
|
||||
"passCount": 735,
|
||||
"failCount": 0,
|
||||
"skipCount": 0,
|
||||
"wallSeconds": 574.4362024449999
|
||||
},
|
||||
"eightFiles": {
|
||||
"passCount": 166,
|
||||
"failCount": 0,
|
||||
"skipCount": 0,
|
||||
"wallSeconds": 25.247570760999924
|
||||
},
|
||||
"shellScripts": {
|
||||
"passCount": 429,
|
||||
"failCount": 0,
|
||||
"skipCount": 0,
|
||||
"wallSeconds": 148.41618363300012
|
||||
},
|
||||
"golden": {
|
||||
"passCount": 2256,
|
||||
"failCount": 0,
|
||||
"skipCount": 1,
|
||||
"wallSeconds": 896.5150328459999
|
||||
},
|
||||
"mutants": {
|
||||
"killed": 30,
|
||||
"total": 30,
|
||||
"source": "r4/gate/consolidated-kills.json"
|
||||
},
|
||||
"sweep": {
|
||||
"scope": [
|
||||
"/mnt/storage/scratch/tmp/g196-tree-tn651z",
|
||||
"/mnt/storage/scratch/tmp/gS1z",
|
||||
"/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,22 @@
|
||||
import os,json,datetime
|
||||
from pathlib import Path
|
||||
out=Path(__file__).parent
|
||||
roots=[Path('/mnt/storage/scratch/tmp/g196-tree-tn651z'),Path((out/'tmpdir.txt').read_text().strip()),Path('/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196')]
|
||||
old={x['pid']:x for x in json.loads((out/'../../r4/gate/categorized-sweep.json').read_text())['preexistingHarnessHelpers']}
|
||||
anc=set();pid=os.getpid()
|
||||
while pid>1 and pid not in anc:
|
||||
anc.add(pid)
|
||||
try:pid=int(Path(f'/proc/{pid}/stat').read_text().rsplit(')',1)[1].split()[1])
|
||||
except (OSError,ValueError):break
|
||||
rows=[]
|
||||
for p in Path('/proc').iterdir():
|
||||
if not p.name.isdigit() or int(p.name) in anc:continue
|
||||
try:
|
||||
cwd=Path(os.readlink(p/'cwd'));name=(p/'comm').read_text().strip()
|
||||
if not any(cwd==r or r in cwd.parents for r in roots):continue
|
||||
if not any(n in name.lower() for n in ['node','tee','npm','chrome','fifo','python','bash','sh']):continue
|
||||
rows.append(dict(pid=int(p.name),name=name,cwd=str(cwd),preexisting=int(p.name) in old))
|
||||
except (OSError,ValueError):continue
|
||||
result=dict(scope=list(map(str,roots)),rawCount=len(rows),preexistingCount=sum(r['preexisting'] for r in rows),gateLeftoverCount=sum(not r['preexisting'] for r in rows),processes=rows)
|
||||
(out/'process-sweep.json').write_text(json.dumps(result,indent=2)+'\n')
|
||||
print(json.dumps(result))
|
||||
@@ -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,24 @@
|
||||
CLEAR (current driver ancestors excluded)
|
||||
On branch gander/row196-r5
|
||||
Your branch is up to date with 'origin/gander/row196-r5'.
|
||||
|
||||
nothing to commit, working tree clean
|
||||
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: 2492582 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
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/gS1z
|
||||
@@ -0,0 +1,328 @@
|
||||
[
|
||||
{
|
||||
"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_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_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": "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,518 @@
|
||||
[
|
||||
{
|
||||
"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/r5/resume/cli.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 574.4362024449999,
|
||||
"pass": 735,
|
||||
"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/r5/resume/packages_business_tests_business.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.5239333430000115,
|
||||
"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/r5/resume/packages_business_tests_cli.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 3.4669965549999615,
|
||||
"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/r5/resume/packages_business_tests_instance-settings.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.905683660000097,
|
||||
"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/r5/resume/packages_business_tests_library-projects-protected.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.4774370280000149,
|
||||
"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/r5/resume/packages_business_tests_resolve.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.4465837360000005,
|
||||
"pass": 11,
|
||||
"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/r5/resume/packages_library_tests_mirror.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 7.3335777119999985,
|
||||
"pass": 16,
|
||||
"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/r5/resume/packages_project_tests_project.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.7260885409999174,
|
||||
"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/r5/resume/packages_seat_tests_checkout.test.mjs.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 6.367270185999922,
|
||||
"pass": 78,
|
||||
"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/r5/resume/test-auth.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 1.9063287659999915,
|
||||
"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/r5/resume/test-conductor.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 6.837640707000042,
|
||||
"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/r5/resume/test-config.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 3.1544246460000287,
|
||||
"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/r5/resume/test-discord.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 8.776727847000002,
|
||||
"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/r5/resume/test-extension-package.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 3.01285702399991,
|
||||
"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/r5/resume/test-foundation.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 39.70872647900006,
|
||||
"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/r5/resume/test-land-work.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 12.623263413000037,
|
||||
"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/r5/resume/test-queue.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 23.443742031000088,
|
||||
"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/r5/resume/test-release.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 12.168674453999964,
|
||||
"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/r5/resume/test-task.sh.log",
|
||||
"code": 0,
|
||||
"signal": null,
|
||||
"wallSeconds": 36.783798266,
|
||||
"pass": 98,
|
||||
"fail": 0,
|
||||
"skip": 0,
|
||||
"observedFailures": 0,
|
||||
"stopped": false,
|
||||
"complete": true
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,23 @@
|
||||
import {spawn} from 'node:child_process';import {readFileSync,writeFileSync,readdirSync} from 'node:fs';import {join} from 'node:path';import {performance} from 'node:perf_hooks';
|
||||
const root='/mnt/storage/scratch/tmp/g196-tree-tn651z',out=new URL('.',import.meta.url).pathname;
|
||||
const jobs=[];
|
||||
for(const pkg of ['cli']){const files=readdirSync(join(root,'packages',pkg,'tests')).filter(n=>n.endsWith('.test.mjs')).sort().map(n=>`packages/${pkg}/tests/${n}`);jobs.push({name:pkg,command:process.execPath,args:['--test','--test-reporter=tap','--test-concurrency=2',...files],kind:'node',wholeFiles:files});}
|
||||
const extras=JSON.parse(readFileSync(new URL('../../r4/whole-test-union.json',import.meta.url),'utf8')).extraOutsideWholePackageSuites;
|
||||
for(const file of extras)jobs.push({name:file.replaceAll('/','_'),command:process.execPath,args:['--test','--test-reporter=tap',file],kind:'node',wholeFiles:[file]});
|
||||
for(const file of readdirSync(join(root,'scripts')).filter(n=>/^test-.*\.sh$/.test(n)).sort())jobs.push({name:file,command:'bash',args:['scripts/'+file],kind:'shell',wholeFiles:['scripts/'+file]});
|
||||
writeFileSync(out+'whole-plan.json',JSON.stringify(jobs,null,2)+'\n');
|
||||
const results=[];
|
||||
for(const job of jobs){
|
||||
const log=out+job.name+'.log',start=performance.now();let text='',buffer='',failures=0,stopped=false;
|
||||
console.log('START '+job.name+' '+job.wholeFiles.length+' whole file(s)');
|
||||
const child=spawn('bash',['-c','set -o pipefail; { python3 "$G196_BUSY" && "$@"; } 2>&1 | tee "$G196_LOG"','--',job.command,...job.args],{cwd:root,env:{...process.env,G196_LOG:log},stdio:['ignore','pipe','pipe'],detached:true});
|
||||
const consume=data=>{const part=String(data);text+=part;buffer+=part;const lines=buffer.split('\n');buffer=lines.pop();for(const raw of lines){const line=raw.replace(/\x1b\[[0-9;]*m/g,'');if(/^\s*not ok \d/.test(line)||/^FAIL(?:\s|:)/.test(line)){failures++;if(failures>=2&&!stopped){stopped=true;process.kill(-child.pid,'SIGTERM');}}}};
|
||||
child.stdout.on('data',consume);child.stderr.on('data',consume);
|
||||
const status=await new Promise(resolve=>child.on('close',(code,signal)=>resolve({code,signal})));
|
||||
const summary=key=>{const matches=[...text.matchAll(new RegExp('^# '+key+' (\\d+)','gm'))];return matches.length?Number(matches.at(-1)[1]):null;};
|
||||
const shell=[...text.matchAll(/(\d+) passed,\s*(\d+) failed/g)].at(-1);
|
||||
const result={...job,log,...status,wallSeconds:(performance.now()-start)/1000,pass:job.kind==='node'?summary('pass'):shell?Number(shell[1]):null,fail:job.kind==='node'?summary('fail'):shell?Number(shell[2]):null,skip:job.kind==='node'?summary('skipped'):0,observedFailures:failures,stopped,complete:!stopped};
|
||||
results.push(result);writeFileSync(out+'whole-results.json',JSON.stringify(results,null,2)+'\n');
|
||||
console.log('END '+job.name+' '+JSON.stringify({code:status.code,signal:status.signal,pass:result.pass,fail:result.fail,skip:result.skip,wallSeconds:result.wallSeconds,stopped}));
|
||||
if(status.code!==0||failures||result.pass===null){process.exitCode=1;console.log('STOP '+job.name);break;}
|
||||
}
|
||||
Reference in new issue
Block a user