row 217: record six green suites and five killed mutants for review
This commit is contained in:
1 parent
2d274a5b6c
commit
96659ccf43
49 files changed
+4264
-78
No files matched your search
@@ -5483,3 +5483,5 @@ remain; no live state, schema or bus policy change.
|
|||||||
2026-10-23 | Beakley (88b97f65) | Row 217 early-look follow-up, Untested | Webby 0939c0682 E1 adds ordinary mallory human-swap test; E2 adds stored trailer-derived agent/file event evidence; E6 creative-sender matrix and E7 runtime readRaw tests authored. Sage-3668/3670 accepts direct writer substitution because setter keys exclude replyLimits (organization.set exists, correcting review premise), and requires distinct availability refusal for E4. Real held-lock/socket and runner-reason regressions plus M5 authored before that production fix; expected RED awaits Sage CLEAR. No Node/tests/mutants, no old-test edits, no green claim.
|
2026-10-23 | Beakley (88b97f65) | Row 217 early-look follow-up, Untested | Webby 0939c0682 E1 adds ordinary mallory human-swap test; E2 adds stored trailer-derived agent/file event evidence; E6 creative-sender matrix and E7 runtime readRaw tests authored. Sage-3668/3670 accepts direct writer substitution because setter keys exclude replyLimits (organization.set exists, correcting review premise), and requires distinct availability refusal for E4. Real held-lock/socket and runner-reason regressions plus M5 authored before that production fix; expected RED awaits Sage CLEAR. No Node/tests/mutants, no old-test edits, no green claim.
|
||||||
|
|
||||||
2026-10-24 | Beakley (88b97f65) | Row 217 round 2, sage-4037 | Rebased published dde5b8496 onto e0c6142f3 on new beakley/row217-r2; both append-log histories retained. Conflicts preserve landed grant dispatch, revocation hook and lookup exports. Added E4 citation-unavailable product path and real supporting-scope/index comparison tests after row283 8d2856ee3. Untested: no Node/npm/tests/mutants/build; ready for Sage CLEAR after Lena296. Full range-diff and honest discarded local rebase correction in agents/beakley/work/queue-217/BUILD.md.
|
2026-10-24 | Beakley (88b97f65) | Row 217 round 2, sage-4037 | Rebased published dde5b8496 onto e0c6142f3 on new beakley/row217-r2; both append-log histories retained. Conflicts preserve landed grant dispatch, revocation hook and lookup exports. Added E4 citation-unavailable product path and real supporting-scope/index comparison tests after row283 8d2856ee3. Untested: no Node/npm/tests/mutants/build; ready for Sage CLEAR after Lena296. Full range-diff and honest discarded local rebase correction in agents/beakley/work/queue-217/BUILD.md.
|
||||||
|
|
||||||
|
2026-10-24T10:21Z | Beakley (88b97f65) | Row 217 round2 slot verified, sage-4042/4043 | Source 2d274a5b6: touched57/57, whole library142/142 business270/270 bus974/974 cli988/988 harness172/172 seat218/218, all zero fail/skip/cancel. M1-M5 killed, controls/restored controls green, product hashes restored after each; E4 RED stand-in observed. Only first-red was new runtime fixture invalid-authority, corrected and retained in receipts; no old test failed/edited. Local root/webui npm ci, short TMPDIR, timeout-k10; no canonical npm/rm or module link. Full evidence agents/beakley/work/queue-217/run-r2; Sage owns scripts landing gate and formal review.
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
# Row 217 — C2-06 citation guard, page store and runner retry
|
# Row 217 — C2-06 citation guard, page store and runner retry
|
||||||
|
|
||||||
Owner: Beakley (88b97f65-97db-4f05-8c6e-081f92bc3501), assigned by Mos Q245.
|
Owner: Beakley (88b97f65-97db-4f05-8c6e-081f92bc3501), assigned by Mos Q245.
|
||||||
Issue: #1718. Reviewer: Webby. Branch: `beakley/row217`.
|
Issue: #1718. Reviewer: Webby. Current branch: `beakley/row217-r2` (original `beakley/row217` preserved).
|
||||||
Brief: `docs/plans/2026-10-20_case2-rows.md`, C2-06.
|
Brief: `docs/plans/2026-10-20_case2-rows.md`, C2-06.
|
||||||
Status: Untested draft on Launchpad handoff `e25ef0373`; targeted execution awaits Sage CLEAR.
|
Status: six whole suites green and M1–M5 killed under sage-4042/4043; ready for formal review. Landing scripts and integration remain Sage's.
|
||||||
|
|
||||||
## Plan and boundaries
|
## Plan and boundaries
|
||||||
|
|
||||||
@@ -256,3 +256,59 @@ checkout product hashes after every mutant and reruns the restored control.
|
|||||||
Optional name filters allow the E4 M5 RED before the full mutant pass. No
|
Optional name filters allow the E4 M5 RED before the full mutant pass. No
|
||||||
canonical dependency link is used; isolated copies link only this worktree's
|
canonical dependency link is used; isolated copies link only this worktree's
|
||||||
own dependency install.
|
own dependency install.
|
||||||
|
|
||||||
|
|
||||||
|
## Final slot results / 2026-10-24 10:21Z
|
||||||
|
|
||||||
|
All requested runs completed serially under sage-4042/4043 on source revision
|
||||||
|
`2d274a5b6`. Final receipt commits change only tracking and logs, not packages.
|
||||||
|
|
||||||
|
| Whole suite | Pass | Fail / skip / cancel |
|
||||||
|
| --- | ---: | --- |
|
||||||
|
| library | 142 | 0 / 0 / 0 |
|
||||||
|
| business | 270 | 0 / 0 / 0 |
|
||||||
|
| bus | 974 | 0 / 0 / 0 |
|
||||||
|
| cli | 988 | 0 / 0 / 0 |
|
||||||
|
| harness | 172 | 0 / 0 / 0 |
|
||||||
|
| seat | 218 | 0 / 0 / 0 |
|
||||||
|
|
||||||
|
Total 2,764 whole-suite tests. Touched files rerun 57/57. The unchanged
|
||||||
|
RUNNER_FILES import-closure test passed in seat (seat-suite.log:153). The only
|
||||||
|
first-run failure was the NEW runtime fixture already recorded above; no old
|
||||||
|
test failed and no test present at e0c6142f3 was edited.
|
||||||
|
|
||||||
|
M1–M5 all killed by the intended assertion, each with Node exit1, a green
|
||||||
|
control and green restored control. Driver exit0. M1 catches missing writer
|
||||||
|
refusals; M2 is killed by mallory's human swap; M3 detects one message left
|
||||||
|
behind after evidence failure; M4 detects the missing reason; M5 detects
|
||||||
|
citation-invalid in place of citation-unavailable on contention and bad state.
|
||||||
|
Every mutation was in a disposable HEAD archive. Each changed file was restored,
|
||||||
|
checkout product hashes checked after every mutant, and the restored control
|
||||||
|
rerun. All five final restored.sha256 certificates match current product files.
|
||||||
|
M5 also ran separately before the whole suites as the authorized pre-fix RED
|
||||||
|
stand-in; its held-lock and malformed-state assertions failed, then restored
|
||||||
|
E4 passed 3/3. Full raw controls/negatives/restores are retained.
|
||||||
|
|
||||||
|
Receipts: run-r2/summary.json and summary.txt; *-suite.log; touched-first.log,
|
||||||
|
touched-rerun.log; availability-green.log; runtime-fixture-retry.log; npm-root.log
|
||||||
|
and npm-webui.log; m1-anchors.txt; m5-red/ and mutants/. All are text, no binary
|
||||||
|
artifact added. All Node/mutant/npm runs used the short TMPDIR and timeout -k 10.
|
||||||
|
Both node_modules trees are local npm ci installs. No canonical npm/rm or
|
||||||
|
canonical dependency link. No further runtime/source changes after the tests.
|
||||||
|
|
||||||
|
Acceptance formerly waiting on dependencies is executed: real row283 supporting
|
||||||
|
canon refusal and supporting/agent event pass; the C2-05a readLibrary/index set
|
||||||
|
comparison passes; runtime readRaw live/corrupt/missing-file test passes; runner
|
||||||
|
retry request carries the E4 availability reason. The repeat obsolete-name
|
||||||
|
search finds only render.mjs:6 and render.test.mjs:58, owned by row225; no owned
|
||||||
|
hit. First-library selection remains the accepted E5 limitation. Webby-0274 N1
|
||||||
|
is a nonblocking wording limitation: configuration faults share the safe
|
||||||
|
busy-or-unavailable retry text. No policy/schema restriction was invented.
|
||||||
|
|
||||||
|
Current complete changed-file manifest over e0c6142f3..candidate is
|
||||||
|
candidate-manifest.sha256, excluding itself to avoid a circular hash. It includes
|
||||||
|
source, tests, records and evidence. Earlier numbered manifests are historical.
|
||||||
|
Formal Webby verdict and all scripts/test-*.sh at landing remain Sage's steps;
|
||||||
|
this is verified for review, not an integration/deployment claim.
|
||||||
|
|
||||||
|
Exact negative-test logs retain Node's whitespace-only diagnostic lines. Whole diff --check reports those 12 blank-line padding warnings in run-r2 logs; source/docs diff --check excluding captured run-r2 evidence is clean. No source whitespace problem or test failure is hidden by that exclusion.
|
||||||
@@ -1,87 +1,61 @@
|
|||||||
# Row 217 draft manifest — Untested
|
# Row 217 round 2 — verified for review
|
||||||
|
|
||||||
Issue #1718, Case 2 C2-06. Base `45dca69f6`, continued from Launchpad
|
Issue #1718, C2-06. Base e0c6142f3; branch beakley/row217-r2. Continued
|
||||||
`e25ef0373`. This is a checkpoint for static review, not an in-review or
|
Launchpad e25ef0373 through the preserved original dde5b8496 branch. Range-diff,
|
||||||
acceptance claim. `manifest.r1.sha256` freezes the product and test files.
|
conflict resolutions and acceptance receipts are in BUILD.md. Tested source
|
||||||
|
revision: 2d274a5b6; the final commits add records/evidence only.
|
||||||
|
|
||||||
## Product scope
|
The broker checks agent-to-human citations before insertion, stores trusted
|
||||||
|
scope/agent/file evidence atomically with the message, and supplies per-path last
|
||||||
|
on thread reads. It keeps session-local fetched pages and reads reply settings
|
||||||
|
live through the M11 human-only writer. The runner preserves cited JSON, defers
|
||||||
|
notes on fixed replies, and retries once with the refusal code and safe reason.
|
||||||
|
E4 adds citation-unavailable for mirror/state/lock faults; uncited/web-only/fixed
|
||||||
|
bodies do not need the mirror lock. Supporting scope uses landed row283 code.
|
||||||
|
|
||||||
| Path | Change |
|
## Product and test scope
|
||||||
| --- | --- |
|
|
||||||
| packages/library/src/guard.mjs | Schema and seven checks, real cited-commit reads, origins and latest path commits |
|
|
||||||
| packages/library/src/limits.mjs | Pure defaults, validation and conservative unreadable-file fallback |
|
|
||||||
| packages/library/src/reply-protocol.mjs | Import-free guard codes and four runner fixed texts |
|
|
||||||
| packages/library/src/index.mjs | Guard and limits exports |
|
|
||||||
| packages/business/src/business.mjs | Permit any replyLimits value without widening another schema |
|
|
||||||
| packages/business/src/organization.mjs | M11 fence on input and serialized output, human setter, raw live reader |
|
|
||||||
| packages/bus/src/broker.mjs | Async pre-insert guard, atomic existing-kind check event, per-session pages, settings verb/status, optional library claim flag and read-time last evidence |
|
|
||||||
| packages/bus/src/runtime.mjs | Inject guard/live limits/last and dispatch human setter (sage-3595) |
|
|
||||||
| packages/bus/src/server.mjs | Await guarded sends and thread reads; optional guard reason (sage-3599) |
|
|
||||||
| packages/bus/src/client.mjs | Preserve optional capped reason (sage-3599) |
|
|
||||||
| packages/harness/src/runner.mjs | Library texts, one retry, JSON note/clip behavior and retry usage tracking |
|
|
||||||
| packages/seat/src/sandbox.mjs | Exactly one read-only RUNNER_FILES addition for the pure protocol (sage-3640) |
|
|
||||||
| packages/cli/src/limits.mjs | Human limits replies file command |
|
|
||||||
| packages/cli/README.md | Reply settings usage |
|
|
||||||
|
|
||||||
No dependency, SQL schema, event kind, role authority or credential changes.
|
The package paths listed in candidate-manifest.sha256 are exactly this row's
|
||||||
The additional sandbox file carries only constants and has no imports.
|
base-to-candidate changes. Fourteen product paths cover library guard/limits/
|
||||||
|
protocol/exports; business validation/writer; bus broker/runtime/server/client;
|
||||||
|
CLI command/README; runner; and the single approved pure-protocol sandbox mount.
|
||||||
|
Nine test/helper/fixture paths are additions. No existing test is modified.
|
||||||
|
The mounted protocol stays import-free. Runtime retains the landed grant/query/
|
||||||
|
sync behavior; the writer retains beforeWrite/revoked handling and fences before
|
||||||
|
revocation. No SQL schema, event kind, role authority or credential change.
|
||||||
|
|
||||||
## New tests and fixtures
|
## Executed evidence
|
||||||
|
|
||||||
| Path | Acceptance focus |
|
| Whole suite | Pass | Fail / skip / cancel |
|
||||||
| --- | --- |
|
| --- | ---: | --- |
|
||||||
| packages/library/tests/guard.test.mjs | Seven table checks, cap boundaries, real Git origins/reachability/literal names, web quotes and limits fallback |
|
| library | 142 | 0 / 0 / 0 |
|
||||||
| packages/business/tests/reply-limits.test.mjs | Human-only M11, old-human comparison, dotted agent identity, serialization, invalid values and raw reads |
|
| business | 270 | 0 / 0 / 0 |
|
||||||
| packages/bus/tests/citation-helpers.mjs | Shared made-up repository and real broker fixture |
|
| bus | 974 | 0 / 0 / 0 |
|
||||||
| packages/bus/tests/citation-guard.test.mjs | Refusal insertion counts, transaction failure, live settings/status, page bounds, socket envelopes, file/last and async snapshot |
|
| cli | 988 | 0 / 0 / 0 |
|
||||||
| packages/cli/tests/reply-limits.test.mjs | Revision read, exact setter args and usage refusals |
|
| harness | 172 | 0 / 0 / 0 |
|
||||||
| packages/harness/tests/fixtures/citation-adapter.mjs | Scripted local harness, typed calls and unslop events |
|
| seat | 218 | 0 / 0 / 0 |
|
||||||
| packages/harness/tests/citation-runner.test.mjs | Every RESULT refusal and typed send_message, one retry, both size caps, plain multibyte answers, fixed texts and notes, old non-library behavior |
|
|
||||||
|
|
||||||
No existing test changed. Existing role.claim pins and the seat import-closure
|
Touched files 57/57; total whole suites 2,764. First run was 56/57 due solely
|
||||||
test stay untouched. Existing test numstat: none.
|
to a new runtime fixture missing the broker's resolved authority shape. Only
|
||||||
|
that new fixture changed; single and full touched reruns passed. No old test
|
||||||
|
failed. First-red evidence remains in run-r2/touched-first.log.
|
||||||
|
|
||||||
## Review focus and outstanding evidence
|
M1–M5 killed: missing M11 fences, incoming-human trust, split check transaction,
|
||||||
|
dropped client reason, and hidden library availability. Every negative run has
|
||||||
|
green control/restored runs and matching restored product certificates. M5 is
|
||||||
|
also the authorized E4 pre-fix RED stand-in. Supporting canon refusal, stored
|
||||||
|
supporting/agent evidence, the C2-05a index comparison, runtime raw settings and
|
||||||
|
agent-visible E4 retry reason all pass. The unchanged sandbox closure test passes.
|
||||||
|
|
||||||
The check event and message insert must roll back together. Scope/agent/file
|
Commands ran serially under Sage CLEAR with short TMPDIR and timeout -k 10.
|
||||||
come from Git; `last` is read once per distinct path per read. Guard refusals
|
Root/webui dependencies came from local npm ci, never canonical links. Full logs,
|
||||||
alone have a reason, bounded at 300 characters without quote or URL content.
|
summary.json and mutant certificates are in run-r2/. The complete changed-file
|
||||||
Captured arguments must be the ones inserted after async validation. Every
|
manifest candidate-manifest.sha256 covers e0c6142f3..candidate, excluding itself;
|
||||||
plain or JSON length refusal shares the same single retry budget.
|
its SHA256 is supplied with the pushed tip. Historical manifests stay untouched.
|
||||||
|
|
||||||
All tests and four isolated mutants are unrun pending Sage CLEAR. The supporting
|
## Remaining boundaries
|
||||||
scope tests require row 283; the index-set comparison requires row 216; runtime
|
|
||||||
drift must be checked against 216/285 before in-review. Landing follows 283.
|
|
||||||
Full gate: library, business, bus, cli, harness and seat, plus every
|
|
||||||
scripts/test-*.sh. Webby reviews the final tested manifest; Sage owns the gate,
|
|
||||||
queue and landing. No push to a protected branch is authorized.
|
|
||||||
|
|
||||||
|
Sage runs every scripts/test-*.sh at landing and posts the formal Webby review
|
||||||
## Early-look follow-up packet (manifest.r2.sha256)
|
request. No merge/deployment performed. First-library selection remains the
|
||||||
|
accepted limitation; configuration faults share the safe unavailable reason
|
||||||
Tests-only follow-up to Webby 0939c0682. Adds ordinary-actor M2 discrimination,
|
(Webby N1, nonblocking). Obsolete-name search hits only row225's render files.
|
||||||
stored agent/file evidence at an unrelated tip, creative-sender table coverage,
|
|
||||||
and real runtime readRaw coverage. New citation-availability.test.mjs and runner
|
|
||||||
availability case are intentionally unrun regressions for E4/sage-3668/3670.
|
|
||||||
Production availability handling is not implemented yet: run that targeted RED
|
|
||||||
on CLEAR before applying its fix, then rerun the same cases. M5 restores the
|
|
||||||
catch-all. This packet is not ready for a green gate or manifest approval.
|
|
||||||
|
|
||||||
|
|
||||||
## Round 2 on e0c6142f3 (manifest.r4.sha256) — Untested
|
|
||||||
|
|
||||||
New branch beakley/row217-r2 preserves the old published branch. Conflict
|
|
||||||
resolutions and complete range-diff are in BUILD.md/rebase-r2.range-diff.txt.
|
|
||||||
The E4 fix adds citation-unavailable for non-absence mirror/state/lock failures;
|
|
||||||
the runner gets the fixed safe reason through the existing optional reason field
|
|
||||||
and uses its single retry. No fifth fallback body or SQL change. Replies without
|
|
||||||
library cites bypass mirror reads, preserving fallback delivery during contention.
|
|
||||||
The prior E4 regressions and M5 have not run. Sage-4037 explicitly authorizes
|
|
||||||
this untested implementation before the test window.
|
|
||||||
|
|
||||||
Supporting tests now use row 283's real supporting classification and assert
|
|
||||||
canon refusal plus stored supporting/agent evidence. An index-set comparison
|
|
||||||
test now uses the landed C2-05a index. No base test was edited. Before acceptance,
|
|
||||||
run the approved new tests and required suites/mutants under Sage CLEAR. npm ci
|
|
||||||
must create worktree-local installs at root and packages/webui, never canonical
|
|
||||||
links. The candidate is ready for CLEAR; no passing behavior is claimed.
|
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
74398edcedf16a3d856ab9e7ea900eb61a4df7f726f04b74b2ff123e7536e9c1 BUILD-LOG.md
|
||||||
|
87880c30c2be0180e6eec4dbe203f86e93ae2b1b4be44031b6a4903c6245a0ec agents/beakley/work/queue-217/BUILD.md
|
||||||
|
e7ecf624ccb2b918efb08001ae9da36380fe918f8c27db704860809b6792e6f2 agents/beakley/work/queue-217/MANIFEST.md
|
||||||
|
f4a042b5d6d393d2be62b107d7157ae51dd8fbf36f4360f5cd8cf07c03c74251 agents/beakley/work/queue-217/manifest.r1.sha256
|
||||||
|
53f051a4e416a34181ad9bcc7687f0d686274542b06d9758e2db7eb81e848811 agents/beakley/work/queue-217/manifest.r2.sha256
|
||||||
|
f96fccc566d01d70db32188574d0b5331ef3c90bce66558449a51b3f21da1b29 agents/beakley/work/queue-217/manifest.r3.sha256
|
||||||
|
faf8ec3e0ab458fe95120345ec93e077b0dcad9458c0f2683a20effb6ce3ed93 agents/beakley/work/queue-217/manifest.r4.sha256
|
||||||
|
a58f0e273b60508b95c833cbace26799d7aa935117fd1f9a27812fba65b93d54 agents/beakley/work/queue-217/manifest.r5.sha256
|
||||||
|
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/manifest.r6.sha256
|
||||||
|
04a9d0585b5ae4818d87d67ac27f838355f1a6f586625a16cf01d91d7bb6d4a0 agents/beakley/work/queue-217/mutants.py
|
||||||
|
4a5f7b3373fd3ff46e2d6a5f7ee7106ad76a71c9034ca5a44b9e7340f0cc4cff agents/beakley/work/queue-217/rebase-r2.range-diff.txt
|
||||||
|
630070b0d682120ba64b382ab3b47b3fa3e8f0bcfc695ca09432d01d705fbcb3 agents/beakley/work/queue-217/run-r2/README.md
|
||||||
|
c4245272d5fc89c5fd3a9ea979e7d65727ea76e24364190af57556c59ad2fe34 agents/beakley/work/queue-217/run-r2/availability-green.log
|
||||||
|
700fff38b0a99ffdb44863f13015673cb459e5e645c5df46580eafbc407c95c8 agents/beakley/work/queue-217/run-r2/bus-suite.log
|
||||||
|
ef216d0af325c2b6647eb8405e5de70ebb5a0e7a28bb3d8fe3abc6a289a8d3d2 agents/beakley/work/queue-217/run-r2/business-suite.log
|
||||||
|
af173117f83359ebba62c5c00eadc749bb179551a8e290bcf55bbe39b1e7272c agents/beakley/work/queue-217/run-r2/cli-suite.log
|
||||||
|
a615f69ba60859e9d7817f3353b0d7c71e6c12eecc3ecf0f630d473be21e5fef agents/beakley/work/queue-217/run-r2/harness-suite.log
|
||||||
|
acaa08001101fd69a12cae377984e0d469c2cedc2affb5ccf9af426a72549dcc agents/beakley/work/queue-217/run-r2/library-suite.log
|
||||||
|
5414ce5b94e7ac7918ed64f62e5fd2b921d49c7e93cf73042b9187d014069934 agents/beakley/work/queue-217/run-r2/m1-anchors.txt
|
||||||
|
7d7138b25568adb98932bbe180a337fe6798c3eddcd7134ce7278c24fea48818 agents/beakley/work/queue-217/run-r2/m5-driver.log
|
||||||
|
de7dd716d3981fd9fa1d114882e60f9a83736cdb8f8e2096c3913c9f8620238a agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable-control.log
|
||||||
|
6b98d3943d04d99f3ef212f11901d2257422410c477abec27ed3100a0d20dad9 agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable-restored-green.log
|
||||||
|
a58f0e273b60508b95c833cbace26799d7aa935117fd1f9a27812fba65b93d54 agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable-restored.sha256
|
||||||
|
d852a464fd624ce12d8d6bdc9800402639bb500a6d40c628cb836ca1bcf1e326 agents/beakley/work/queue-217/run-r2/m5-red/M5-hide-library-unavailable.log
|
||||||
|
7d7138b25568adb98932bbe180a337fe6798c3eddcd7134ce7278c24fea48818 agents/beakley/work/queue-217/run-r2/m5-red/summary.txt
|
||||||
|
1c405f1f15d2ce2db37b5809cdf5eaff68f18c99c5621e1c43262a289c5e35c4 agents/beakley/work/queue-217/run-r2/mutants-driver.log
|
||||||
|
c96487e87c1ae9e34a7222b04701c5efcce25fe201f03a0213b989f7cde2c376 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence-control.log
|
||||||
|
8b294ecc057ad64ace7f520a1785b54df7df5a9eddf962813c3e5f8fa723ffd4 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence-restored-green.log
|
||||||
|
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence-restored.sha256
|
||||||
|
be749486956e85a71f08107139613e09b62c53b58e8cc10e0fbe807e95d079a6 agents/beakley/work/queue-217/run-r2/mutants/M1-writer-fence.log
|
||||||
|
525da1cc780dfea1a66f95739d444516bd16271c7ec539d615012ec9c8e7c139 agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human-control.log
|
||||||
|
3546705980bb4a73295f16e42ab55f38c6adca9a5c53252264ae4ef66c595dfc agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human-restored-green.log
|
||||||
|
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human-restored.sha256
|
||||||
|
77352c22c459c516ff47ff1caa42fe9763fe201a04079646b0ccc0da6a145804 agents/beakley/work/queue-217/run-r2/mutants/M2-incoming-human.log
|
||||||
|
58de145ec0384de4f560b28dcfa76e98c384be5c771d6561fb1054f07ea8166b agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction-control.log
|
||||||
|
6a4cd0ef36b0d2318ef71c941ce300d215b6d2f87d0b4328c461ba53d812434c agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction-restored-green.log
|
||||||
|
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction-restored.sha256
|
||||||
|
2deb72f2d442f413fd06e205093f6fa3f955ec6ef707b7ca65b86be8c8883f9b agents/beakley/work/queue-217/run-r2/mutants/M3-split-check-transaction.log
|
||||||
|
31cac91f43c8b7ebe0431f27a038b0fcd554a12b232592747f3972213cfa192b agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason-control.log
|
||||||
|
e06c1da8dcd9e7eb013a4597b14369e296e21b812476bd6d88c7a7aa040d4065 agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason-restored-green.log
|
||||||
|
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason-restored.sha256
|
||||||
|
66d8f72df3bc0428624dab437cb04923ecab42055d29c6ffde43af98d47f32ae agents/beakley/work/queue-217/run-r2/mutants/M4-drop-client-reason.log
|
||||||
|
3f74fbd3b4297868b9bb637a7924739363470964873a4bd3dc2f5daf2d0e9c8a agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable-control.log
|
||||||
|
96d95a45d5326e614328531a7dadebce5d3ce70e40ec23dd49a66c1a676b45be agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable-restored-green.log
|
||||||
|
120b15db5eb75897095fe3d0759553e482365d58061d763beba7754a6e0d0734 agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable-restored.sha256
|
||||||
|
fa57189e9de99c4a76be27da3b857c07fc76706f7d0ee7409ba4efd43c3642b7 agents/beakley/work/queue-217/run-r2/mutants/M5-hide-library-unavailable.log
|
||||||
|
1c405f1f15d2ce2db37b5809cdf5eaff68f18c99c5621e1c43262a289c5e35c4 agents/beakley/work/queue-217/run-r2/mutants/summary.txt
|
||||||
|
862418d3d4124871ca5fcaf35e16c318a04e2888da83836751ddfea110efeb06 agents/beakley/work/queue-217/run-r2/npm-root.log
|
||||||
|
38b75d8bddacf8d227883a29dd8a10f87a7f02d8a95f3f8809cb966fc9c8cf7a agents/beakley/work/queue-217/run-r2/npm-webui.log
|
||||||
|
7f29b5a328fd6be61ebc4110a048305b50856810ab97a7798cd427924d74e8c9 agents/beakley/work/queue-217/run-r2/runtime-fixture-retry.log
|
||||||
|
3bd51fe222a61412e8285eb522a2f7b5c1b0b035f7dca0e9ff66190bd53e6706 agents/beakley/work/queue-217/run-r2/seat-suite.log
|
||||||
|
8b98c6ba76de46ddd858b4b95bae7bce2d1bf969edb85901ad8819e1280869a1 agents/beakley/work/queue-217/run-r2/summary.json
|
||||||
|
e374cb7ab28a46dd560b267b0fe6691b11c0c2fabd00087c4e49a02ab1bf8086 agents/beakley/work/queue-217/run-r2/summary.txt
|
||||||
|
ad2022c7ccdfa151e029eed92cd309369a97f197d9304775f6d2be3dc5f11080 agents/beakley/work/queue-217/run-r2/touched-first.log
|
||||||
|
e1fe5ebae1a36f196470848bf27b99c21d316c9236a1d1328d7bcaca0ee4d3e9 agents/beakley/work/queue-217/run-r2/touched-rerun.log
|
||||||
|
0c1b1f079b4b993e8d1aeb730d743e28696413eae8be6dd79731d749d1d45d0b agents/launchpad/work/queue-217/BUILD.md
|
||||||
|
76b0a5785f134c09cda677e8f5fb3e7454b39883c4a6f55360d9d277476fcd2c docs/SESSIONS.md
|
||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
# Row217 round2 test receipts
|
||||||
|
|
||||||
|
Sage CLEAR sage-4042/4043, 2026-10-24. Source revision 2d274a5b6. All runs
|
||||||
|
serialized; source files stayed unchanged through the whole-suite and mutant pass.
|
||||||
|
Commands used TMPDIR=/mnt/storage/scratch/tmp/tNoueZ and timeout -k 10.
|
||||||
|
|
||||||
|
- npm ci --ignore-scripts --no-audit --no-fund at the worktree root (300s bound),
|
||||||
|
then packages/webui (300s). Actual directories, no canonical links.
|
||||||
|
- node --test packages/bus/tests/citation-availability.test.mjs (180s).
|
||||||
|
- python3 agents/beakley/work/queue-217/mutants.py <m5-red> M5-hide-library-unavailable
|
||||||
|
(420s). Green control, the authorized pre-fix RED stand-in, restore+green.
|
||||||
|
- node --test --test-concurrency=1 with the seven new test files (900s):
|
||||||
|
library/guard, business/reply-limits, cli/reply-limits, bus/citation-availability,
|
||||||
|
bus/citation-guard, bus/citation-runtime and harness/citation-runner. Whole files.
|
||||||
|
- First attempt 56/57: new runtime fixture invalid-authority. Only that fixture
|
||||||
|
was corrected to the established broker projection. runtime-fixture-retry.log
|
||||||
|
is its 1/1 rerun (180s); touched-rerun.log is the whole-file 57/57 rerun.
|
||||||
|
- npm test in packages/library, then business (900s each), bus and cli (1200s
|
||||||
|
each), harness and seat (900s each). Never overlapped package runs.
|
||||||
|
- python3 agents/beakley/work/queue-217/mutants.py <mutants> (900s).
|
||||||
|
The driver wraps each Node run in timeout -k 10 120. Each negative exits1,
|
||||||
|
is preceded by a green control, restores its product bytes/hashes and then
|
||||||
|
reruns the restored control green. No checkout product file is mutated.
|
||||||
|
|
||||||
|
summary.json holds complete counts; summary.txt is the short version. M1 anchors
|
||||||
|
are recorded in m1-anchors.txt. The five *-restored.sha256 files match current
|
||||||
|
product files. Full outputs are retained, including the first new-test failure.
|
||||||
|
Negative logs intentionally keep Node's whitespace-only diagnostic padding;
|
||||||
|
standard git diff --check flags that padding, not source code. No binary logs.
|
||||||
|
No old test failed or was edited. Sage runs scripts/test-*.sh at landing.
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5142.976705ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (33.874404ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (33.746516ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 3
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5307.376982
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,280 @@
|
|||||||
|
npm notice run @mosaic/[email protected] test
|
||||||
|
npm notice run node --test tests/
|
||||||
|
✔ a grant's level is collaborator or viewer (2.351697ms)
|
||||||
|
✔ any other level refuses with the key path named (1.505284ms)
|
||||||
|
✔ covers tells a viewer grant from a collaborator grant (0.605812ms)
|
||||||
|
✔ covers refuses a call with no level, so a viewer grant can't slip past a collaborator check (0.247487ms)
|
||||||
|
✔ a viewer grant still needs its business, project, instance and expiry to cover (0.247397ms)
|
||||||
|
✔ a valid document passes and comes back frozen (4.146183ms)
|
||||||
|
✔ checkAccess does not freeze or alias the caller's document (0.552481ms)
|
||||||
|
✔ LEVELS is the single allowed level set, collaborator and viewer (row 193a) (0.259109ms)
|
||||||
|
✔ accessFilePath is access.json in the config directory (0.495701ms)
|
||||||
|
✔ top level: object, unknown keys, accessVersion, revision, arrays (2.131141ms)
|
||||||
|
✔ users: unknown keys and the id rule (0.609866ms)
|
||||||
|
✔ users: human, tester and any business's human are refused (0.455944ms)
|
||||||
|
✔ users: home is a given peer or local (0.372673ms)
|
||||||
|
✔ users: subjects, provider, sub, uniqueness and owner subjects (2.126611ms)
|
||||||
|
✔ grants: unknown keys, id, user and business (0.897075ms)
|
||||||
|
✔ grants: projects is ["*"] or distinct lowercase UUIDs (1.199677ms)
|
||||||
|
✔ grants: instances is ["*"] or distinct declared instances of that business (0.889396ms)
|
||||||
|
✔ grants: any level other than collaborator or viewer refuses, naming grants[i].level (1.13158ms)
|
||||||
|
✔ grants: expires is optional ISO time, and a past expiry is not refused (0.979808ms)
|
||||||
|
✔ the context is required and checked (1.713394ms)
|
||||||
|
✔ loadAccess reads a valid file and checks it (0.755936ms)
|
||||||
|
✔ loadAccess refuses a missing file, a symlink and a directory with exit 4 (0.519376ms)
|
||||||
|
✔ loadAccess refuses another owner and group or other write (0.581157ms)
|
||||||
|
✔ loadAccess refuses bad JSON and a bad document with exit 2 (1.841309ms)
|
||||||
|
✔ covers: * and listed ids match (0.340508ms)
|
||||||
|
✔ covers: an unlisted project, instance or business doesn't match (0.20254ms)
|
||||||
|
✔ covers: an expired grant doesn't match, at and after the instant (0.698261ms)
|
||||||
|
✔ covers: level is the least level asked for (row 193a) (0.213107ms)
|
||||||
|
✔ covers: a missing or unknown level throws (row 193a, N1) (0.385188ms)
|
||||||
|
✔ covers: a grant with an unknown level covers nothing (row 193a) (0.191435ms)
|
||||||
|
✔ covers: now must be a valid Date (0.21008ms)
|
||||||
|
✔ today's files load unchanged: identity, publish and remote are optional (11.61814ms)
|
||||||
|
✔ a granted agent loads with its identity, grant and the project's upstream (4.906248ms)
|
||||||
|
✔ N10: publish needs identity and a gitea definition, and the error names the grant (9.522958ms)
|
||||||
|
✔ publish names declared projects that have a remote, each once (7.911234ms)
|
||||||
|
✔ identity fields are checked (14.073433ms)
|
||||||
|
✔ D9c: the upstream must be its own normalized form, exactly /OWNER/REPO (29.451403ms)
|
||||||
|
✔ D9c: one .git is stripped, and the fork is built from the stripped name (1.733511ms)
|
||||||
|
✔ D9c: gitea.url names the instance only (10.698646ms)
|
||||||
|
✔ the upstream's host and port must be the agent's Gitea's (4.064711ms)
|
||||||
|
✔ remote-not-fork: an upstream the agent's own user owns, compared without case (10.115713ms)
|
||||||
|
✔ store references: own path only (design D1, D3a) (0.50611ms)
|
||||||
|
✔ the role file loads and resolves through loadBusiness (18.165733ms)
|
||||||
|
✔ the shipped file is exactly the approved list (1.392044ms)
|
||||||
|
✔ the assistant's authority is message.send and record.write within role (4.312182ms)
|
||||||
|
✔ the assistant talks to the user and the chief of staff only, and no other shipped role is limited (0.978023ms)
|
||||||
|
✔ a business grant through limits does not widen the role (6.715605ms)
|
||||||
|
✔ a launch block whose by is the assistant is refused (3.553443ms)
|
||||||
|
✔ the instance takes no credential references and no tracker (9.975785ms)
|
||||||
|
✔ an arbiter whose role definition declares messaging lists is refused, for each kind (8.992963ms)
|
||||||
|
✔ an arbiter without messaging lists is accepted beside the limited assistant (3.104416ms)
|
||||||
|
✔ the contract passes work to the chief of staff and directs no one (0.788753ms)
|
||||||
|
✔ REQ-HARN-2: the assistant, companion and research hold the web grant, and no other role file does (1.683056ms)
|
||||||
|
✔ C2-04: library mappings load without roots, remain frozen, and retain mapping refusals (31.538067ms)
|
||||||
|
✔ C2-04: an otherwise valid publish grant cannot name a library repo (4.356759ms)
|
||||||
|
✔ config directory and file path follow MOSAIC_CONFIG (0.467526ms)
|
||||||
|
✔ the fixture business validates and comes back frozen (4.106001ms)
|
||||||
|
✔ two instances may share a definition (2.097865ms)
|
||||||
|
✔ top-level refusals (6.537312ms)
|
||||||
|
✔ arbiters and projects (24.968268ms)
|
||||||
|
✔ role instances (9.057417ms)
|
||||||
|
✔ Vikunja bots (29.820456ms)
|
||||||
|
✔ a role without Vikunja takes no tracker block (9.629575ms)
|
||||||
|
✔ credential references match the definition's services (11.680645ms)
|
||||||
|
✔ launch (31.945766ms)
|
||||||
|
✔ REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses (34.141496ms)
|
||||||
|
✔ loadBusiness: file checks (12.995702ms)
|
||||||
|
✔ loadBusiness: not a regular file (111.510997ms)
|
||||||
|
✔ loading writes nothing (1.787307ms)
|
||||||
|
✔ names that are Object.prototype properties don't count as declared (5.786433ms)
|
||||||
|
✔ the shipped example refuses as written and validates once filled in (2.551686ms)
|
||||||
|
✔ persona vars: agent layer, creative definition only, both or neither (26.121282ms)
|
||||||
|
✔ row 194 keep, noHire and retired validate, and a file without them loads as before (4.607715ms)
|
||||||
|
✔ row 194 each bad keep, noHire or retired entry refuses (19.966409ms)
|
||||||
|
✔ row 323: committed Case 1 document loads unchanged through the business loader (10.685638ms)
|
||||||
|
✔ row 323: real business validate accepts the Case 1 fixture without tracker credentials (226.106251ms)
|
||||||
|
✔ row 323: real factory install accepts the document's scratch input and writes it unchanged (294.937207ms)
|
||||||
|
✔ row 323: the Case 1 business boots without a tracker or @sync credential (60.850375ms)
|
||||||
|
✔ row 323: factory install refuses bus.tester false before writing (39.485453ms)
|
||||||
|
✔ row 323: literal library key refuses through final business validation (176.986326ms)
|
||||||
|
✔ row 323: a library project refuses through the factory profile plan (36.685902ms)
|
||||||
|
✔ row 325: the Case 1 project's sole key matches the repository project id (7.063988ms)
|
||||||
|
✔ row 325: real business validate reports the copied repository project valid (203.591785ms)
|
||||||
|
✔ row 325: the old mosaic-stack project key refuses against those same project bytes (227.47487ms)
|
||||||
|
✔ the role file loads and resolves through loadBusiness (22.21166ms)
|
||||||
|
✔ the shipped file is exactly the approved list (0.355811ms)
|
||||||
|
✔ the resolved record matches the approved list, so a widened file fails (4.433743ms)
|
||||||
|
✔ the chief of staff holds role.launch, message.send, role.end, organization.change, record.write, instance.name, role.hire and role.fire; every other action is gated (6.025087ms)
|
||||||
|
✔ the pm does not hold role.launch (7.814194ms)
|
||||||
|
✔ a business grant of a gated action through limits does not widen the role (5.309288ms)
|
||||||
|
✔ a limit that drops role.launch leaves the chief of staff with no launch block (5.488981ms)
|
||||||
|
✔ a launch block whose by is the pm instance is refused (4.031539ms)
|
||||||
|
✔ the contract names no duty to talk to the human and the pm contract no launch (1.077581ms)
|
||||||
|
✔ the instance takes no credential references and no tracker (7.111256ms)
|
||||||
|
✔ C2-04: business validate and resolve skip a library before code projects and credential checks (581.819531ms)
|
||||||
|
✔ usage errors exit 4 (330.347677ms)
|
||||||
|
✔ validate: a good business exits 0 and prints instance digests (80.712835ms)
|
||||||
|
✔ validate: project files (358.68705ms)
|
||||||
|
✔ validate: missing files and a broken system config (272.747082ms)
|
||||||
|
✔ validate: credential reference problems exit 2 and name each one (75.47514ms)
|
||||||
|
✔ validate: a not-issued store agent dated today passes, and an issued one with a past expiry fails (152.378642ms)
|
||||||
|
✔ validate: a token file inside the repository is refused (76.459487ms)
|
||||||
|
✔ validate: role definitions come from MOSAIC_ROLES_DIR (210.323656ms)
|
||||||
|
✔ resolve: prints one instance's record (260.543734ms)
|
||||||
|
✔ resolve: refusals (375.881441ms)
|
||||||
|
✔ parse: exactly one of file or env, plus the service's date (3.551882ms)
|
||||||
|
✔ check: a good file has no problems (1.2198ms)
|
||||||
|
✔ check never opens the file: a write-only token passes (0.477268ms)
|
||||||
|
✔ check: file problems (1.60977ms)
|
||||||
|
✔ check: token files can't live in the repository or dataRoot, even through a linked directory (1.508979ms)
|
||||||
|
✔ check: dates and environment references (0.686041ms)
|
||||||
|
✔ each definition loads, with a contract file, and is exactly the approved list (4.83466ms)
|
||||||
|
✔ an organization file that declares them passes, and each resolves to least privilege (10.307081ms)
|
||||||
|
✔ the chief of staff launches each one; no other role does (11.082937ms)
|
||||||
|
✔ a C-suite role can't be made the launcher: launch.by must hold role.launch (5.052598ms)
|
||||||
|
✔ limits can narrow a C-suite role but never widen it (4.524289ms)
|
||||||
|
✔ any unknown key, tool, action or version in a role file is refused (4.904699ms)
|
||||||
|
✔ row 298: checkGrantScope takes the D2 shape and refuses anything else (2.752624ms)
|
||||||
|
✔ row 298: a missing scope is empty and a bad one falls back to empty, which covers nothing (0.482721ms)
|
||||||
|
✔ row 298: a Gitea grant is in scope only when its agent and every project are listed (0.341447ms)
|
||||||
|
✔ row 298 (sage-3594 Q2): host commands match whole argv tokens, and enrollment is never in scope (0.467524ms)
|
||||||
|
✔ row 298: a bad grantScope in the file still loads, and the read shows the fallback (18.355754ms)
|
||||||
|
✔ row 298: the writer checks the scope, logs the change and removes the key for {} (142.313501ms)
|
||||||
|
✔ row 298 (sage-3594 Q1): the general writers can't write grantScope (25.353249ms)
|
||||||
|
✔ REQ-WAIT-1: GATED_ONLY is exactly the hard waits; the new actions are in the vocabulary (1.86466ms)
|
||||||
|
✔ REQ-ROLE-2: END_PROTECTED includes the assistant's thread definition (0.234237ms)
|
||||||
|
✔ REQ-COS-3: role.hire and role.fire are routed, not hard waits (0.300439ms)
|
||||||
|
✔ REQ-WAIT-3: every action is routed or a hard wait, never both, and the routed list names only actions (0.967731ms)
|
||||||
|
✔ REQ-WAIT-3: instance.name is routed under REQ-MSG-2 (1.5), not a hard wait (row 141, sage-0589) (1.313696ms)
|
||||||
|
✔ REQ-WAIT-2: a role listing a hard wait at either class is refused; the actions that left can be granted (5.343386ms)
|
||||||
|
✔ S1: the business file refuses hosts at the top level and in a role, and host.<id> references (56.500208ms)
|
||||||
|
✔ T1: address, user and host key checks, which the enrollment raise uses (11.374442ms)
|
||||||
|
✔ T26: no wildcard and no shell, runner or interpreter as a prefix (2.722004ms)
|
||||||
|
✔ D6: argv shape and the literal prefix match (0.922698ms)
|
||||||
|
✔ C2-04: instance settings skip a library while checking a later code project (98.596648ms)
|
||||||
|
✔ row 165 read lists each instance and the definitions add accepts (16.615936ms)
|
||||||
|
✔ row 165 add: two instances join, validate exits 0, the log names the human, and the writer asks for no restart (row 194, D3) (308.207149ms)
|
||||||
|
✔ row 165 change: definition, vars and launch membership log before and after; none asks for a restart, the bus reloads (row 194, D3) (180.35178ms)
|
||||||
|
✔ row 165 refuses each validation failure and leaves the file's bytes alone (44.040709ms)
|
||||||
|
✔ T19 add of a credentialed definition writes store references dated today, names its bot, and validate exits 0 (101.60641ms)
|
||||||
|
✔ T19 add of a definition that declares host writes references for its token services only (12.273146ms)
|
||||||
|
✔ row 165 refuses a definition change to or from one that declares credentials (6.011439ms)
|
||||||
|
✔ row 165 a vars or launch change on an instance with its binding succeeds and keeps the binding (87.081633ms)
|
||||||
|
✔ row 165 refuses an END_PROTECTED definition and every change to a protected instance (9.425714ms)
|
||||||
|
✔ row 165 refuses while a project file doesn't resolve, as validate would (21.508015ms)
|
||||||
|
✔ row 165 refuses a stale revision and leaves the file's bytes alone (13.794117ms)
|
||||||
|
✔ row 65 an instance write refuses harness-off, thinking-unsupported, an unknown model and a partial fallback (38.79158ms)
|
||||||
|
✔ row 213 a creative instance is the human's: add, vars and definition changes, persona digest only (105.47603ms)
|
||||||
|
✔ row 256 T1-T3, T5 the human deletes a creative instance, no other actor does, and the assistant stays (106.119319ms)
|
||||||
|
✔ row 256 T4 the human's delete of the only listed instance, a creative one, is the last-listed refusal (3.635722ms)
|
||||||
|
✔ REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse (27.767213ms)
|
||||||
|
✔ REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment (1.218782ms)
|
||||||
|
✔ REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt (65.935591ms)
|
||||||
|
✔ REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses (42.79247ms)
|
||||||
|
✔ REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent (20.740471ms)
|
||||||
|
✔ REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor (73.013224ms)
|
||||||
|
✔ REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts (5.530215ms)
|
||||||
|
✔ REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes (31.489428ms)
|
||||||
|
✔ Q169 assistants: vars and definition change and log the actor; tracker null leaves no tracker (74.510885ms)
|
||||||
|
✔ Q169 assistants: refuses other instances, other definitions, holder and credentials, empty entries, a tracker the definition has no credential for and a stale revision (46.648048ms)
|
||||||
|
✔ Q169 assistants: a definition with a vikunja credential takes a tracker change and refuses its removal or a used bot (28.59175ms)
|
||||||
|
✔ row 65 routes lists every instance with harness, model, thinking and fallback, the switched-on harnesses, the model keys and each harness's levels (4.496203ms)
|
||||||
|
✔ row 65 setRoutes saves a harness, model, thinking and whole fallback, reads each back from the file, logs the actor, and a null fallback clears all three (28.880486ms)
|
||||||
|
✔ row 65 setRoutes refuses a partial fallback, a switched-off harness, a level the harness doesn't apply, an unloaded module, an unknown model or instance, a malformed route, no change and a stale revision, with the file unchanged (33.617502ms)
|
||||||
|
✔ row 65 a file with harness vars and no plugins.harness loads and its views read; a model change still saves, and a route change refuses harness-off (15.471063ms)
|
||||||
|
✔ B7 kept instance: the models keys it names and the instances key are the human's (32.512862ms)
|
||||||
|
✔ B7 kept instance: its route is the human's (13.733689ms)
|
||||||
|
✔ M10 creative instance: models keys it names, the instances key and its route are the human's (41.972839ms)
|
||||||
|
✔ C2-04 M9: changed playground and hybrid entries leave business and changes.jsonl byte-identical (75.744651ms)
|
||||||
|
✔ C2-04 M9: code projects, additions, deletions and array changes are protected too (73.935851ms)
|
||||||
|
✔ C2-04 M9: canonical key order is allowed and a non-project setter still records its change (53.997154ms)
|
||||||
|
✔ C2-04 M9: a serialization hook cannot change projects after the canonical comparison (29.857522ms)
|
||||||
|
✔ M7/M8: library seats come from library businesses, creative seats from their creative definitions (20.881147ms)
|
||||||
|
✔ M8: a business with no library project puts no seat in either set (19.190367ms)
|
||||||
|
✔ M7/M8: a business file that is not valid JSON throws; no empty set (7.135915ms)
|
||||||
|
✔ M7/M8: an absent businesses directory gives empty sets (1.688414ms)
|
||||||
|
✔ M7/M8: a businesses path that is not a directory throws; no empty set (4.583153ms)
|
||||||
|
✔ M7/M8: a businesses symlink to a missing target throws; no empty set (2.208552ms)
|
||||||
|
✔ M7/M8: a config directory under a regular file throws (lstat fails with ENOTDIR); no empty set (0.601986ms)
|
||||||
|
✔ M7/M8: a business file that can't be read throws; no empty set (12.318486ms)
|
||||||
|
✔ T6 delete refuses in the design's order and leaves the file's bytes alone (104.896221ms)
|
||||||
|
✔ T6 delete refuses the last listed instance (7.490182ms)
|
||||||
|
✔ T6 a clean delete removes the entry and its own references, adds retired, and the name can't come back (213.690055ms)
|
||||||
|
✔ T7 veto: keep, unkeep, nohire and hire each write once, a repeat is no change, and the log names the human (171.894178ms)
|
||||||
|
✔ T7 veto refuses an unknown or END_PROTECTED keep, a bad request, a stale revision and a business without launch (26.238526ms)
|
||||||
|
✔ D2.2 hire adds and lists a new instance, logs the chief's context, and sets only model and limits (92.062371ms)
|
||||||
|
✔ D2.2 hire refuses noHire, a kept name and a listed name, and re-lists a fired one only as it was (29.586421ms)
|
||||||
|
✔ D2.2 fire delists and keeps the entry, a repeat is done with no write, and each refusal holds (88.451593ms)
|
||||||
|
✔ row 256 checkDelete passes the human's creative delete and refuses another actor's; fire still refuses (5.294872ms)
|
||||||
|
✔ row 239 T1 a fire on a revision that goes stale before the writer's lock refuses there and revokes nothing (5.756058ms)
|
||||||
|
✔ row 239 T2 a write after the revoke refused before publication carries revoked, and the file keeps the edit (7.753057ms)
|
||||||
|
✔ row 239 T3 any error after the revoke carries revoked, for a fire and a delete; a revoke that throws carries nothing (32.403692ms)
|
||||||
|
✔ Q247: omitting tracker loads as null and preserves independent role bots (10.793015ms)
|
||||||
|
✔ Q247: real business validate passes without a sync credential reference or file (168.186763ms)
|
||||||
|
✔ Q247: present tracker retains its values and validation without mutating the input (9.372029ms)
|
||||||
|
✔ Q247: present null, undefined and malformed trackers still refuse (18.314895ms)
|
||||||
|
✔ Q247: absent business tracker does not waive a role's Vikunja bot requirement (2.859494ms)
|
||||||
|
✔ REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names (40.546579ms)
|
||||||
|
✔ REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names (92.751615ms)
|
||||||
|
✔ vikunja:19/309 a patch changes only the kinds it names; null removes one kind, explicitly and in the trail (100.494327ms)
|
||||||
|
✔ vikunja:19/309 an unknown kind (set or removed), a bad module, an empty patch and null on the wrong shape are refused, nothing written (9.927988ms)
|
||||||
|
✔ REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too (19.985103ms)
|
||||||
|
✔ REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing (4.143331ms)
|
||||||
|
✔ vikunja:19/305 with an exists check, the setter refuses a module no tree file answers to, before anything is written (18.273494ms)
|
||||||
|
✔ optional project repo is preserved and must be a normalized absolute path (32.895793ms)
|
||||||
|
✔ loaded business project repo cannot be nested in any declared code checkout (6.807091ms)
|
||||||
|
✔ path and load (3.706713ms)
|
||||||
|
✔ refusals (1.897981ms)
|
||||||
|
✔ record.write is within-role for the eleven approved v2 agents, never gated-only (3.85853ms)
|
||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (98.331729ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (55.766765ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (17.47904ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (16.039248ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (17.259974ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (19.048524ms)
|
||||||
|
✔ C2-04: a library first in projects does not hide a later project layer (21.880181ms)
|
||||||
|
✔ systemVars flattens the validated config (1.820728ms)
|
||||||
|
✔ precedence: system, business, project, project role, agent (10.989776ms)
|
||||||
|
✔ limits narrow the definition and never widen it (8.400306ms)
|
||||||
|
✔ role.launch stays within-role only for the instance the launch block names (18.468852ms)
|
||||||
|
✔ limits.authority without role.launch leaves the launcher with no launch block (13.185333ms)
|
||||||
|
✔ limits.authority narrows cross-role actions too (2.699689ms)
|
||||||
|
✔ classify (6.249491ms)
|
||||||
|
✔ the record carries what the broker and launcher need (4.7922ms)
|
||||||
|
✔ digest: key order doesn't matter, any value change does (12.395981ms)
|
||||||
|
✔ refusals (3.790542ms)
|
||||||
|
✔ the four shipped version 2 roles load (5.229965ms)
|
||||||
|
✔ shipped role scopes match addendum B section 2 and the SR runbook (2.178782ms)
|
||||||
|
✔ shipped authority follows the note's table (13.291498ms)
|
||||||
|
✔ every role file in roles/ loads through the validator, and a v2 contract exists (2.100731ms)
|
||||||
|
✔ version 1 files keep loading with no authority (1.521097ms)
|
||||||
|
✔ the conductor policy isn't a role (0.302424ms)
|
||||||
|
✔ a missing role file is exit 4, a symbolic link too (0.564721ms)
|
||||||
|
✔ version 2 refusals (3.788273ms)
|
||||||
|
✔ authority: closed vocabulary, no gated-only action, no overlap (3.881951ms)
|
||||||
|
✔ messaging: optional, role definitions and human, never the tester (1.949889ms)
|
||||||
|
✔ row 64 skills: optional, distinct skill directory names, none on version 1 (2.255987ms)
|
||||||
|
✔ credentials: Gitea scopes (1.343013ms)
|
||||||
|
✔ credentials: Vikunja scopes are a group-to-verbs map from the grantable list (1.709889ms)
|
||||||
|
✔ credentials: services (0.759517ms)
|
||||||
|
✔ contract: a non-empty regular Markdown file beside the role file (0.838905ms)
|
||||||
|
✔ the six creative roles load: read tools, message.send only, messaging with the human only (0.693212ms)
|
||||||
|
✔ M1: a creative role file wider than read and answer is refused (1.897832ms)
|
||||||
|
✔ hireable: HIRE_ALLOWED is exactly the six plain work actions, and every one is routed (0.173708ms)
|
||||||
|
✔ hireable: a list naming a definition that holds any refused action refuses at load, one case per action (18.133668ms)
|
||||||
|
✔ hireable: a mixed definition refuses, a clean list loads, and the named file's own hireable isn't read (1.146869ms)
|
||||||
|
✔ hireable: a missing, version 1, duplicate or badly named entry refuses, and the key is optional (3.734122ms)
|
||||||
|
✔ the pm and the cto check a saved spec against settled decisions and work in flight, and answer with a BLOCK or an accept (11.616694ms)
|
||||||
|
✔ the chief of staff relays a BLOCK or an accept to the assistant as a reply to the message that carried it (1.277302ms)
|
||||||
|
✔ the assistant summarizes a spec review in its own words and doesn't repeat the chief of staff's text (0.70976ms)
|
||||||
|
✔ REQ-LIMIT-3 schema: each subject kind, limit 0 and no ceiling are accepted; bad limits, times, keys and undeclared instances refuse (49.216064ms)
|
||||||
|
✔ REQ-LIMIT-3 the writer stamps since: a new limit gets now, a changed one keeps its time, a different time is refused (85.0223ms)
|
||||||
|
✔ REQ-LIMIT-3 only tokens.* at schema depth holds token limits: agent limits named `limit` save as sent, and a token limit named `limit` is stamped and reset (67.775561ms)
|
||||||
|
✔ REQ-LIMIT-3 a reset moves since to now, is logged with its actor, and refuses a path that is not a limit (34.296428ms)
|
||||||
|
✔ REQ-LIMIT-2 schema: launch.account names a credential set; a daily quota needs a reset and an IANA zone and names the account (33.871693ms)
|
||||||
|
✔ REQ-LIMIT-2 the writer stamps a daily quota's since, keeps its reset and zone, and a reset moves since (33.845575ms)
|
||||||
|
✔ every key names known layers and a merge rule (1.726458ms)
|
||||||
|
✔ unknown keys and wrong layers refuse (1.084085ms)
|
||||||
|
✔ types (3.275461ms)
|
||||||
|
✔ merge: defaults, then the most specific layer wins (0.419589ms)
|
||||||
|
✔ merge: limits only narrow, and provenance lists each source (0.757115ms)
|
||||||
|
✔ merge doesn't change its inputs (0.206627ms)
|
||||||
|
✔ web.searxng takes https anywhere and http on loopback, so Jason's 127.0.0.1:8888 passes (0.262745ms)
|
||||||
|
✔ both definitions load, with a contract file, and are exactly the approved lists (5.013658ms)
|
||||||
|
✔ security-reviewer has no write or shell tool and classifies only the verdict as its own (9.066819ms)
|
||||||
|
✔ merge-gate's only grant is git.merge.protected cross-role, and it has no write tool (3.470869ms)
|
||||||
|
✔ neither role can be an arbiter: its messaging lists refuse the business file (row 133) (8.498658ms)
|
||||||
|
✔ every role contract carries the proactive line in its Authority section (1.099286ms)
|
||||||
|
✔ pm and chief-of-staff say where a raise goes under REQ-DEC-2 (0.851681ms)
|
||||||
|
✔ the merge landing takes two runs: merge-gate, cto and chief-of-staff each say their part (0.660442ms)
|
||||||
|
ℹ tests 270
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 270
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 2873.146579
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,182 @@
|
|||||||
|
npm notice run test
|
||||||
|
npm notice run node --test tests/*.test.mjs
|
||||||
|
✔ sessionModel: the route is the instance's own vars, and a missing one refuses no-route by name (37.340888ms)
|
||||||
|
✔ a pi bundle: prompt, policy, tools and manifest, 0600 in a 0700 directory (10.573131ms)
|
||||||
|
✔ a chief-of-staff bundle lists launch among the bus tools and the manifest's typed tools (4.412373ms)
|
||||||
|
✔ a chief-of-staff bundle lists end_run, change_organization and set_name as typed and nothing untyped, for either harness (8.193363ms)
|
||||||
|
✔ the stop line names end_run for a role.end holder, and every other role keeps today's text (13.648406ms)
|
||||||
|
✔ a claude-code bundle adds the wrapped gate hook and the MCP config (7.875641ms)
|
||||||
|
✔ the prompt's built-in tools line is the harness's own names, as the manifest lists them (22.548582ms)
|
||||||
|
✔ the prompt names the project clones in the workspace, and none when there are none (13.290253ms)
|
||||||
|
✔ the prompt explains the review loop to a role with push_working, and reviews to one with fetch_review (15.420914ms)
|
||||||
|
✔ the prompt explains landing to a role with land_work, and to no other (9.918107ms)
|
||||||
|
✔ the prompt tells the pm to ask the chief of staff for sessions, and no other role (18.356673ms)
|
||||||
|
✔ a bundle is written once: an existing file refuses (3.135889ms)
|
||||||
|
✔ a path with a single quote can't go into the hook command (3.86973ms)
|
||||||
|
✔ web grant on pi: the bundle has web_search and web_fetch, and no built-in web tool (4.927453ms)
|
||||||
|
✔ no web grant on pi: no web tool in the bundle, and the gate blocks a web call (4.535472ms)
|
||||||
|
✔ web grant on claude-code: the bundle has web_search and web_fetch, and no built-in web tool (4.409455ms)
|
||||||
|
✔ no web grant on claude-code: no web tool in the bundle, and the gate blocks a web call (7.034483ms)
|
||||||
|
✔ a granted session's gate lets the typed web tools through and still blocks the built-ins (6.471178ms)
|
||||||
|
✔ search-source searxng-url: a granted role gets the typed broker tools and no harness web tool; an ungranted role gets nothing (12.185523ms)
|
||||||
|
✔ search-source searxng-bundled: a granted role gets the typed broker tools and no harness web tool; an ungranted role gets nothing (11.958441ms)
|
||||||
|
✔ search-source harness-builtin: claude-code gets WebSearch and WebFetch and no typed web tool, only when granted (12.933659ms)
|
||||||
|
✔ search-source harness-builtin is refused for a granted pi role, which has no built-in web tool (4.064682ms)
|
||||||
|
✔ C2-06 RESULT reply-invalid retries once, delivers only the valid answer and names reason (351.396996ms)
|
||||||
|
✔ C2-06 RESULT citation-missing retries once, delivers only the valid answer and names reason (256.673143ms)
|
||||||
|
✔ C2-06 RESULT citations-over-limit retries once, delivers only the valid answer and names reason (222.852677ms)
|
||||||
|
✔ C2-06 RESULT citation-invalid retries once, delivers only the valid answer and names reason (261.389143ms)
|
||||||
|
✔ C2-06 RESULT playground-cited-as-canon retries once, delivers only the valid answer and names reason (268.849657ms)
|
||||||
|
✔ C2-06 RESULT citation-cross-universe retries once, delivers only the valid answer and names reason (231.674929ms)
|
||||||
|
✔ C2-06 RESULT citation-unfetched retries once, delivers only the valid answer and names reason (216.064282ms)
|
||||||
|
✔ C2-06 RESULT two guard refusals use the citation fixed text and exactly one retry (188.874138ms)
|
||||||
|
✔ C2-06 RESULT JSON 34000 characters retries with a shorter valid answer (236.68605ms)
|
||||||
|
✔ C2-06 RESULT JSON 70000 characters retries with a shorter valid answer (234.722358ms)
|
||||||
|
✔ C2-06 RESULT two oversized JSON bodies use the length fixed text with citations required (193.029509ms)
|
||||||
|
✔ C2-06 multibyte plain bodies also receive the one request-size retry (223.988818ms)
|
||||||
|
✔ C2-06 two multibyte plain bodies use the length fallback (205.649902ms)
|
||||||
|
✔ C2-06 RESULT a length refusal then citation refusal shares one retry and citation fallback (206.128944ms)
|
||||||
|
✔ C2-06 fixed empty/failed replies defer unslop note until the next cited reply (295.722008ms)
|
||||||
|
✔ C2-06 cited JSON above the old 32000 clip retains its citations and text (189.724785ms)
|
||||||
|
✔ C2-06 a flagged cited answer keeps the note inside text and citations whole (192.59344ms)
|
||||||
|
✔ C2-06 send_message typed tool runs every guard code before the valid RESULT (262.703841ms)
|
||||||
|
✔ C2-06 outside library the old failed text, clip and unslop behavior hold (208.584382ms)
|
||||||
|
✔ C2-06 outside library a refused send keeps the existing no-retry behavior (159.048751ms)
|
||||||
|
✔ C2-06 the retry turn delivers citation-unavailable reason to the agent (190.203749ms)
|
||||||
|
✔ allow exits 0, a deny exits 2 with the reason on stderr (211.158287ms)
|
||||||
|
✔ a missing or wrong policy, or a bad event, exits 2 (113.877105ms)
|
||||||
|
✔ the bundle's wrapped command: a missing gate or node still blocks (1104.288151ms)
|
||||||
|
✔ claude: typed tools through MCP, the hook blocks, builtins outside --tools don't exist (1070.940549ms)
|
||||||
|
✔ claude: the hook alone blocks a path outside the workspace (568.174554ms)
|
||||||
|
✔ claude: a second turn resumes the first turn's session (940.097062ms)
|
||||||
|
✔ claude adapter: --restricted is always passed (6.108878ms)
|
||||||
|
✔ claude adapter: MOSAIC_CLAUDE_BIN wins over PATH and must be an absolute executable (19.555633ms)
|
||||||
|
✔ claude adapter: a directory pin exits 2 before it runs; a pin with a space runs (6.450898ms)
|
||||||
|
✔ claude: CLAUDE.md files and auto-memory don't reach the model; without --restricted they do (912.426727ms)
|
||||||
|
✔ claude: a missing hook or MCP file refuses before claude starts (8.255308ms)
|
||||||
|
✔ claude: row 66 a reply with a tell gets the correction notice on the next turn, a clean reply gets none, and the counts read after (1813.719749ms)
|
||||||
|
✔ claude: row 66 a broken lists.json gives no clean verdict, the operator is told once, and the session still answers (861.243377ms)
|
||||||
|
✔ M2: the gate refuses write, edit and bash to every creative role on pi and claude-code (58.57362ms)
|
||||||
|
✔ M6: no creative session gets raise_decision; the assistant and the chief of staff keep it (27.01682ms)
|
||||||
|
✔ web: research and companion get the broker's typed web tools, and a harness-builtin source refuses web-source-not-allowed (34.87358ms)
|
||||||
|
✔ persona: the block sits between the contract and ## This session, fenced, with the name and digest (10.05189ms)
|
||||||
|
✔ persona: each unsafe or unpinned file refuses before the bundle directory is made (30.976676ms)
|
||||||
|
✔ adapters pass the prompt file's absolute path; the persona and the prompt text never sit in argv (48.053085ms)
|
||||||
|
✔ the pi adapter refuses a missing, unreadable or directory prompt file before pi starts (13.20329ms)
|
||||||
|
✔ pi: policy tools and typed tools pass, anything else is blocked (4.524582ms)
|
||||||
|
✔ claude: builtins map from pi names, typed tools need the mcp prefix (1.1263ms)
|
||||||
|
✔ file tool paths must resolve inside the workspace (4.02957ms)
|
||||||
|
✔ pi's own path normalisation can't be used to step out (1.586245ms)
|
||||||
|
✔ a symlink inside the workspace that points out is outside (1.300474ms)
|
||||||
|
✔ a dangling symlink is refused at any depth, in both harnesses (5.091178ms)
|
||||||
|
✔ read is checked under every spelling pi's read would open, in both harnesses (29.6566ms)
|
||||||
|
✔ other spellings cover directories, dangling links and pi's cwd (2.651598ms)
|
||||||
|
✔ a relative path climbs from the workspace's real path, in both harnesses (9.557314ms)
|
||||||
|
✔ claude path fields per tool (1.146391ms)
|
||||||
|
✔ glob patterns stay inside the workspace (1.220629ms)
|
||||||
|
✔ a path that can't be checked is blocked (0.713439ms)
|
||||||
|
✔ fetch_review's have lists the working refs before origin's, and no more than HAVE_MAX (358.466429ms)
|
||||||
|
✔ fetch_review's have orders the working refs newest first within each clone, one clone after another (177.220281ms)
|
||||||
|
✔ a runner git past its time: SIGTERM reaches its process group, and SIGKILL follows after the grace period (1810.093816ms)
|
||||||
|
✔ once a signalled runner git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too (303.717292ms)
|
||||||
|
✔ land_work sends one land line and resolves the host's started answer (3.694332ms)
|
||||||
|
✔ initialize, ping and tools/list (73.055562ms)
|
||||||
|
✔ tools/call goes through the tool socket; a refusal is an isError result (66.566638ms)
|
||||||
|
✔ replies are compact JSON; over the cap a tool error names the size and the cap (60.558157ms)
|
||||||
|
✔ unknown tools and methods are JSON-RPC errors and never reach the socket (52.967178ms)
|
||||||
|
✔ a missing argument is a usage error (35.244954ms)
|
||||||
|
✔ pi: typed tools reach the socket, the gate blocks, agent_end writes the marker (676.072372ms)
|
||||||
|
✔ pi: a reply over the cap is a tool error naming the size and the cap; list_tasks asks for open tasks (532.762084ms)
|
||||||
|
✔ pi: a write through a dangling symlink is blocked, and nothing appears outside (479.264215ms)
|
||||||
|
✔ pi: a read is refused when pi would open another spelling outside (479.008336ms)
|
||||||
|
✔ pi: a relative path climbs from the real path of a workspace behind a symlink (495.496517ms)
|
||||||
|
✔ pi: a relative path climbs from the real path of a dataRoot behind a symlink (458.873867ms)
|
||||||
|
✔ pi: a missing extension refuses before any model call (6.358156ms)
|
||||||
|
✔ pi: an extension without its configuration fails pi's start (380.653357ms)
|
||||||
|
✔ pi: row 66 a reply with a tell gets the correction notice on the next turn, a clean reply gets none, and the counts read after (1353.463628ms)
|
||||||
|
✔ pi: row 66 a broken lists.json gives no clean verdict, the operator is told once, and the session still answers (748.010347ms)
|
||||||
|
✔ raise_decision offers domain as technical or delivery only, optional, and says where a raise goes (23.00088ms)
|
||||||
|
✔ raise_decision forwards domain to decision.raise, and a call without it sends none (100.23044ms)
|
||||||
|
✔ founderCheck: founder variables, then a needed service without a usable token (3.039179ms)
|
||||||
|
✔ turnRequest names the sender, class, reply and decision (0.355597ms)
|
||||||
|
✔ turnRequest says a tester's message is a test and never Jason's instruction (0.317095ms)
|
||||||
|
✔ turnRequest says a user's message is a granted user's and never the owner's instruction (0.277911ms)
|
||||||
|
✔ turnRequest shows the message's own sent time, a day old as well as new (0.227187ms)
|
||||||
|
✔ stateBlock names the launch state with its time and event, and the open tasks with the cap (0.334368ms)
|
||||||
|
✔ a message becomes a turn, the answer goes back as a RESULT, SIGTERM releases and exits 0 (257.255462ms)
|
||||||
|
✔ launches revoked and then restored: the turn's block reads allowed and gives the restore time (272.592717ms)
|
||||||
|
✔ a task closed on the tracker is missing from the next turn's open list (239.571073ms)
|
||||||
|
✔ a message read a day after it was sent shows the time it was sent (148.998515ms)
|
||||||
|
✔ a decision the human resolves becomes a turn citing the decision and the answer (196.043584ms)
|
||||||
|
✔ a failed state read fails the turn: no adapter runs, the sender hears why, the message is read (103.372577ms)
|
||||||
|
✔ a SIGTERM before the claim stops the runner with exit 0 and no claim (91.622163ms)
|
||||||
|
✔ typed tools carry the runner's capability; launch goes to the host's launch socket (336.226718ms)
|
||||||
|
✔ end_run, organization_revision and change_organization reach the broker with the tool's arguments, and refusals keep their codes (429.635331ms)
|
||||||
|
✔ set_name reaches the broker's name.set with the tool's arguments, and refusals keep their codes (182.337097ms)
|
||||||
|
✔ a RESULT gets no automatic reply; failed turns reply with the reason (1269.003752ms)
|
||||||
|
✔ the bus's launch notice is one turn with no reply, and is not taken again (269.091562ms)
|
||||||
|
✔ SIGTERM during a turn kills the turn's process group and still exits 0 (122.399792ms)
|
||||||
|
✔ founder credentials stop before the claim (20) (162.909348ms)
|
||||||
|
✔ a refused claim exits 21; an ended run's capability exits 22 (165.231771ms)
|
||||||
|
✔ the launch ending under a running session exits 22 (134.851141ms)
|
||||||
|
✔ a broker that stays unreachable exits 23 after brokerRetries polls (234.508622ms)
|
||||||
|
✔ a broker that is down at the claim exits 23, not 21 (78.168597ms)
|
||||||
|
✔ no capability, or a malformed one, on stdin exits 2 (194.303544ms)
|
||||||
|
✔ a missing or malformed policy exits 2 before the claim (120.576748ms)
|
||||||
|
✔ REQ-LIMIT-4 runner brackets its actual harness turn before the reply and read receipt (194.53726ms)
|
||||||
|
✔ REQ-LIMIT-4 a runner at its limit stops at the end of its turn: RESULT and read first, then exit 22 and a limit-check revoke (168.261307ms)
|
||||||
|
✔ landingRequest is the fixed template, with the decision and task ref and nothing else (0.147237ms)
|
||||||
|
✔ each landing entry is one turn before any message, with the state block and the fixed request; it sends nothing and reads nothing (226.715761ms)
|
||||||
|
✔ an empty landing takes no landing turn: the message is turn 1 (195.475495ms)
|
||||||
|
✔ a run in a landing turn isn't released for a second held decision until its landing turns end and it has read its messages (596.516739ms)
|
||||||
|
✔ a malformed landing exits 2 before the claim, with no turn (568.856934ms)
|
||||||
|
✔ row 65 a session.json without a turnEnd of marker or exit, or a harnessEnv of strings, exits 2 before the claim (269.597797ms)
|
||||||
|
✔ row 65 harnessEnv reaches the adapter, and an exit harness needs no turn marker (141.169295ms)
|
||||||
|
✔ row 66 the adapter gets the run's unslop log, and a flagged reply's note rides that reply's RESULT, once (300.426996ms)
|
||||||
|
✔ row 66 a turn with no reply holds its note for the next reply; a broken check is told once (345.164969ms)
|
||||||
|
✔ row 66 unslopNotes keeps a note until sent(), reads only whole lines, and unslopCounts reads a log after the session (1.68702ms)
|
||||||
|
✔ row 66 a clipped answer with both note parts stays under the bus's body limit, and the note under 600 (161.518813ms)
|
||||||
|
✔ row 66 a refused send keeps the note: it rides the next RESULT the session sends (264.81696ms)
|
||||||
|
✔ each repo role's prompt carries exactly its listed skills, each file as the bundle copy and the source (69.791416ms)
|
||||||
|
✔ a skill's files go into the prompt in sorted path order, sub-directories included (9.238961ms)
|
||||||
|
✔ a role with no skills gets no Skills section, no skills directory and an empty manifest list (11.39746ms)
|
||||||
|
✔ an enabled skill the role doesn't list stays out of the prompt (8.706347ms)
|
||||||
|
✔ the bundle copy outlives the source: deactivating a skill after the build leaves the run's copy (4.473957ms)
|
||||||
|
✔ a listed skill that isn't enabled refuses skill-not-enabled, naming the activate command (9.541232ms)
|
||||||
|
✔ a skill directory that isn't plain refuses: a symlinked skill, SKILL.md or sub-file, or a non-file entry (2.643822ms)
|
||||||
|
✔ a skill file that can't go into the prompt refuses: a bad name, non-UTF-8 bytes, or the end marker (3.518581ms)
|
||||||
|
✔ a role's skills over SKILL_BYTES together refuse, naming the skill that crossed it (10.193929ms)
|
||||||
|
✔ each adapter passes the skills only in the prompt file, with skill discovery off (59.00799ms)
|
||||||
|
✔ every role sees read_spec, record writer follows its grant, citation schemas stay strict (25.138022ms)
|
||||||
|
✔ typed socket forwards read content/history and agent record writes, and cannot write a spec (172.529974ms)
|
||||||
|
✔ the PM gets its task verbs and the reads, and no launch (11.972118ms)
|
||||||
|
✔ send_message offers the BLOCK class, beside the classes it already had (3.837774ms)
|
||||||
|
✔ the chief of staff gets launch, send_message, end_run, hire, fire, change_organization and set_name, and no task verbs (4.871494ms)
|
||||||
|
✔ hire and fire send instance.hire and instance.fire under role.hire and role.fire, only for a holder of the grant (22.751702ms)
|
||||||
|
✔ request_staff is the pm's alone: staff.request over message.send, roles and counts bounded (15.291362ms)
|
||||||
|
✔ end_run sends role and reason, no decision; change_organization sends revision and the organization keys (2.689052ms)
|
||||||
|
✔ set_name sends instance and name to name.set under instance.name, only for a holder of that grant (12.695737ms)
|
||||||
|
✔ the organization keys change_organization takes are the broker's ORGANIZATION_KEYS and the settings' SETTINGS_KEYS (0.178758ms)
|
||||||
|
✔ a role without role.end or organization.change gets none of the three tools, and each follows its own grant (12.115972ms)
|
||||||
|
✔ no role's tools send instances or instances.set, and change_organization takes no instance write keys (10.7825ms)
|
||||||
|
✔ the assistant gets send_message, the reads and the web tools (it holds the web grant), no launch (2.17462ms)
|
||||||
|
✔ list_requirements reads the requirement ids, for a task.create holder with a tracker (3.939398ms)
|
||||||
|
✔ a coder gets no launch, no resolve_decision, and no task tools without a tracker (3.125698ms)
|
||||||
|
✔ a coder with a tracker gets its own task tools and no task_reassign (2.258296ms)
|
||||||
|
✔ launch only when the business's launch block names the instance as launcher (3.280204ms)
|
||||||
|
✔ an action outside the instance's authority has no tool (1.994949ms)
|
||||||
|
✔ the review loop: push_working and request_review for the coder, fetch_review and review_verdict for the reviewer, none for the PM (7.387015ms)
|
||||||
|
✔ land_work is there only with land, after push_working, with the task and the decision (4.431191ms)
|
||||||
|
✔ callTool: one JSON line out, the result back, a refusal rejects (16.610729ms)
|
||||||
|
✔ list_tasks takes the broker's filters and pages; get_task takes a task_ref (4.144909ms)
|
||||||
|
✔ callTool sends list_tasks done false unless the session names done; other tools as given (3.985977ms)
|
||||||
|
✔ replyText: compact JSON up to the cap, an error naming the size and the cap over it (1.008682ms)
|
||||||
|
✔ web_search's query maxLength is the web layer's SEARCH_MAX_QUERY_CHARS (4.810935ms)
|
||||||
|
ℹ tests 172
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 172
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 12131.328093
|
||||||
@@ -0,0 +1,153 @@
|
|||||||
|
npm notice run @mosaic/[email protected] test
|
||||||
|
npm notice run node --test tests/*.test.mjs
|
||||||
|
✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (31.081491ms)
|
||||||
|
✔ C2-06 citation setting and all four exact fixed texts (27.31137ms)
|
||||||
|
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (144.940253ms)
|
||||||
|
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (71.988432ms)
|
||||||
|
✔ C2-06 playground cites pass but cannot state canon (42.141068ms)
|
||||||
|
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (69.134397ms)
|
||||||
|
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (17.090852ms)
|
||||||
|
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (51.160201ms)
|
||||||
|
✔ C2-06 origin uses literal paths even when a filename contains a glob (35.841257ms)
|
||||||
|
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (79.711572ms)
|
||||||
|
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.78046ms)
|
||||||
|
✔ the same commit, repo path and mapping return the same index, and only mapped files are in it (53.330474ms)
|
||||||
|
✔ a different repo path, mapping or commit gets its own index (73.465944ms)
|
||||||
|
✔ the cache holds at most eight indexes and evicts the least recently used (93.355098ms)
|
||||||
|
✔ a failed read is not kept in the cache (19.15839ms)
|
||||||
|
✔ a missing or unchecked mapping is refused before any read (18.591276ms)
|
||||||
|
✔ a 3,000-file rebuild completes and its time is reported (3339.384537ms)
|
||||||
|
ℹ 3,000-file index rebuild: 3093 ms
|
||||||
|
✔ resolver step 1: a path from the repo root, with or without .md (2.003164ms)
|
||||||
|
✔ resolver step 2: the same path with vaultPrefix/ stripped (0.323373ms)
|
||||||
|
✔ resolver step 3: a path relative to the linking file, never above the repo root (0.278534ms)
|
||||||
|
✔ resolver step 4: a base name that matches exactly one indexed file (0.322938ms)
|
||||||
|
✔ a link into another of her repos resolves to nothing (0.213594ms)
|
||||||
|
✔ wikilink forms, embeds, and links skipped inside code (1.24016ms)
|
||||||
|
✔ only a body embed whose target has an extension other than .md, in any case, is an attachment (0.455416ms)
|
||||||
|
✔ the fixture mapping checks and comes back frozen (2.830981ms)
|
||||||
|
✔ C2-01c: a prefix inside or holding another entry's book refuses library-playground-other-universe (1.34922ms)
|
||||||
|
✔ C2-01c: a prefix equal to a book folder, or holding its own, refuses library-mapping-invalid (0.74756ms)
|
||||||
|
✔ C2-01c: universe-level prefixes lie outside every book, in a plain universe and in a hybrid with no books (1.203696ms)
|
||||||
|
✔ C2-01c: a draft takes kind, name and playground only, and comes back frozen with books [] (1.782129ms)
|
||||||
|
✔ C2-01d: supporting prefixes at book level, universe level, in a hybrid and in a draft, [] when absent (0.643444ms)
|
||||||
|
✔ C2-01d: each supporting prefix rule refuses with its code (2.880363ms)
|
||||||
|
✔ C2-01d: between the lists, a supporting prefix may equal its own playground, and a playground may hold its own supporting (0.978814ms)
|
||||||
|
✔ C2-01d: editor is optional, kept when given, and refuses anything but a plain name and email (5.417269ms)
|
||||||
|
✔ C2-01d: an accepted editor round-trips through a real git commit unchanged (22.81842ms)
|
||||||
|
✔ no playground prefix holds another, and no book folder holds another (1.309845ms)
|
||||||
|
✔ shape refusals: kind, remote, branch, unknown keys, types, manuscript, folder names (1.68793ms)
|
||||||
|
✔ C2-03a sage-2021: user is optional, kept when given, and must be a plain account name (0.986251ms)
|
||||||
|
✔ a hybrid universe is a shape the query code can take (1.4), with sources that must exist (1.600445ms)
|
||||||
|
✔ a caller-supplied fail receives the code, as business file loading will pass it (C2-04) (0.396233ms)
|
||||||
|
✔ scope comes from the path alone (design 1.2) (2.453311ms)
|
||||||
|
✔ C2-04 mirror: exact default path, bare without checkout or remote, and idempotent initialization (82.599485ms)
|
||||||
|
✔ C2-04 mirror: simultaneous creators publish one intact mirror and leave no staging paths (49.399699ms)
|
||||||
|
✔ C2-04 mirror: skipped publication accepts both coreutils statuses without removing the winner (174.577156ms)
|
||||||
|
✔ C2-04 mirror: preserve occupied directories and reject symlink ancestors and code overlaps (20.556264ms)
|
||||||
|
✔ C2-04 mirror: existing metadata accepts only bare Git plus state and the precreated lock (34.414614ms)
|
||||||
|
✔ C2-04 state: missing state is empty only while the served ref is absent (54.101069ms)
|
||||||
|
✔ C2-04 state: valid problems and sync metadata return no content and change no state bytes (57.832223ms)
|
||||||
|
✔ C2-04 state: strict keys, types, times, branch, commit and fixed R messages fail closed (158.515834ms)
|
||||||
|
✔ C2-04 state: symlink, hardlink, non-private state and missing lock refuse without replacement (57.609887ms)
|
||||||
|
✔ C2-04 file: served commit, not HEAD or a caller commit, owns the exact returned text (113.829438ms)
|
||||||
|
✔ C2-04 file: R1, R2 and R7 exclusions and never-synced mirrors cannot return file bodies (124.255784ms)
|
||||||
|
✔ C2-04 lock: a first-sync and fast-forward reader wait for a consistent pair across processes (314.221744ms)
|
||||||
|
✔ C2-04 lock: same-process waits, timeout code, callback expiry and throw release (5038.833094ms)
|
||||||
|
✔ C2-04 lock: owner death releases the kernel lock without replacing its file (54.543028ms)
|
||||||
|
✔ C2-04 lock: a missing flock binary becomes a handled refusal (49.73045ms)
|
||||||
|
✔ C2-04 lock: an unawaited scoped read drains before the lock is released (20.869629ms)
|
||||||
|
✔ the query reply cap equals the harness reply cap (1.544541ms)
|
||||||
|
✔ find is bound to its universe and refuses a call without one (70.281377ms)
|
||||||
|
✔ every result carries its scope, and playground appears only when asked for (39.878964ms)
|
||||||
|
✔ unmapped files never appear in any reply (35.123505ms)
|
||||||
|
✔ a hybrid sees its sources canon, minus exclusions, and no playground (39.679182ms)
|
||||||
|
✔ a hybrid gets a source file it can see, and not an excluded or foreign one (54.602693ms)
|
||||||
|
✔ get lists visible links both ways and drops a target another universe cannot see (50.638492ms)
|
||||||
|
✔ a long list pages by position, never cuts an item, and returns 50 per page (193.227492ms)
|
||||||
|
✔ a page stays under the reply cap when items are large (91.885035ms)
|
||||||
|
✔ a search line too long to fit alone comes back marked, with no excerpt, and the other hits still return (33.20163ms)
|
||||||
|
✔ a find item that cannot fit alone is refused, not cut (46.447292ms)
|
||||||
|
✔ get pages its lines, and the next line picks up where the page stopped (39.12526ms)
|
||||||
|
✔ get refuses a file whose front matter alone is over the cap, and a line alone is over the cap (36.804238ms)
|
||||||
|
✔ get pages the links of a hub note, every page carries the front matter, and the pages add up (1107.995321ms)
|
||||||
|
✔ get rejects a bad links_from (34.377162ms)
|
||||||
|
✔ search returns scoped line hits, case-insensitively, and refuses empty text (30.729667ms)
|
||||||
|
✔ a manuscript call returns one chapter, at most 400 lines, and names its next line (47.791378ms)
|
||||||
|
✔ a manuscript call without a chapter returns the first chapter in path order and names the next (26.366902ms)
|
||||||
|
✔ a chapter name that matches two visible files is refused (25.448584ms)
|
||||||
|
✔ a hybrid reads a source chapter through its declared sources only (39.969561ms)
|
||||||
|
✔ universe info reports a hybrid sources, constraints and notes, and refuses an unknown universe (15.657923ms)
|
||||||
|
✔ an exclusion hides what it names from a hybrid and from nothing else (39.404555ms)
|
||||||
|
✔ PRD 1.14: a lookup that names a book leaves book-null files out (34.647951ms)
|
||||||
|
✔ PRD 1.14: library_manuscript never reads a book-null file (32.637362ms)
|
||||||
|
✔ PRD 1.14: a draft universe has no canon, so its lookups return files only with scope playground (32.338176ms)
|
||||||
|
✔ PRD 1.14: library_universe on a draft returns its kind, name and prefixes (15.442774ms)
|
||||||
|
✔ a hybrid gets a source playground file as null, while the source gets it with scope playground (42.674554ms)
|
||||||
|
✔ the fixture reads clean: every resolver step, appears_in and relationships wikilinks indexed (63.033383ms)
|
||||||
|
✔ R1: executables, symlinks, gitlinks, blobs over 1 MiB and non-UTF-8 text are not indexed (95.339567ms)
|
||||||
|
✔ R2: unmapped paths are reported and not indexed (31.564751ms)
|
||||||
|
✔ R3: front matter not fully parsed stays raw, with the line where parsing stopped (36.896696ms)
|
||||||
|
✔ front matter forms the reader accepts and refuses (1.596508ms)
|
||||||
|
✔ R4: a link to no file, to more than one, or into another repo is reported and not followed (35.504393ms)
|
||||||
|
✔ a block list link carries its item line, a scalar or flow link its key line, and problems follow (37.229678ms)
|
||||||
|
✔ an unresolved attachment embed gives no problem; a link or front matter value to one is R4; a note embed resolves (33.783255ms)
|
||||||
|
✔ an indexed Dr.Quinn.md resolves as a body link, a block list link and an embed (33.230236ms)
|
||||||
|
✔ R5: a canon file that refers into the playground is reported, and the link still goes by path (29.709099ms)
|
||||||
|
✔ R6: a canon file that refers into another universe is reported; a hybrid may refer into its sources (30.970646ms)
|
||||||
|
✔ R7: two paths that differ only in case are both left out (41.126208ms)
|
||||||
|
✔ the reader reads the commit, never the working tree, and refuses a bad commit id (41.98282ms)
|
||||||
|
✔ a bare mirror reads the same as the clone (53.445984ms)
|
||||||
|
✔ renderItems snapshot: fact (1.786386ms)
|
||||||
|
✔ renderItems snapshot: finding (0.299155ms)
|
||||||
|
✔ renderItems snapshot: correction (0.259329ms)
|
||||||
|
✔ renderItems snapshot: question (0.218182ms)
|
||||||
|
✔ renderItems snapshot: idea (0.223821ms)
|
||||||
|
✔ renderItems numbers several items and takes a parsed body as well as a string (1.090019ms)
|
||||||
|
✔ without options a path cite has no badge and is never marked changed (0.280013ms)
|
||||||
|
✔ renderItems snapshot: notice no-cited-answer (0.237711ms)
|
||||||
|
✔ renderItems snapshot: notice no-answer (0.198705ms)
|
||||||
|
✔ renderItems snapshot: notice turn-failed (0.337126ms)
|
||||||
|
✔ a body without the reply shape shows a fixed line and none of its text (0.613863ms)
|
||||||
|
✔ C2-01c: each level gives its universe, and its book or null (4.092943ms)
|
||||||
|
✔ C2-01c: prefixes come first: in a book that holds a prefix, a file outside it is canon and one under it playground (0.607188ms)
|
||||||
|
✔ C2-01c: a canon file linking into a draft gives R6, and into its own universe-level prefix gives R5 (65.023589ms)
|
||||||
|
✔ C2-01d: each supporting level gives its universe, and its book or null (0.8244ms)
|
||||||
|
✔ C2-01d: supporting comes before playground; a folder in both lists is supporting, one in the playground only stays playground (0.633065ms)
|
||||||
|
✔ C2-01d: only .md files are supporting; a .canvas or .base under a supporting prefix is unmapped (0.517375ms)
|
||||||
|
✔ C2-01d: a path passes at book level, universe level, in a draft and in a folder in both lists (2.312377ms)
|
||||||
|
✔ C2-01d: a path of exactly 1024 bytes passes, and 1025 bytes made of multi-byte characters refuses (0.98988ms)
|
||||||
|
✔ C2-01d: a path outside the universe's supporting folders refuses (0.763326ms)
|
||||||
|
✔ C2-01d: malformed paths refuse by class, in order (0.710036ms)
|
||||||
|
✔ C2-01d: a symlink or gitlink on the way, or at the path itself, refuses (0.383033ms)
|
||||||
|
✔ C2-01d: a name that differs from a tree name only in case or Unicode form refuses, at the file or any folder (0.99427ms)
|
||||||
|
✔ the survey prints folder names, counts, key sets and link-form counts, and never text (65.469359ms)
|
||||||
|
✔ folder names print DEL, C1 and bidi controls, U+061C among them, as escapes (37.571162ms)
|
||||||
|
✔ an embed of an attachment counts as an embed and as an attachment; a plain link to one does not (24.053267ms)
|
||||||
|
✔ with --mapping the survey adds scope, resolver step and problem counts (51.551822ms)
|
||||||
|
✔ C2-01d: with --mapping the survey counts supporting files (49.232972ms)
|
||||||
|
✔ survey exit codes: usage 4, bad mapping 3, unreadable repo 2 (19.679523ms)
|
||||||
|
✔ scripts/mosaic library survey reaches the survey (97.237921ms)
|
||||||
|
✔ C2-03a argv: the fixed sequence, one https allow, no other protocol key (2.539459ms)
|
||||||
|
✔ C2-03a argv: only an https URL with a plain host, no userinfo, and a plain user (1.147619ms)
|
||||||
|
✔ C2-03a helper: answers only the exact prompts for the configured host and user (dewey-0765) (43.662638ms)
|
||||||
|
✔ C2-03a first sync: served is the fetched tip, HEAD is served, the survey reads it, and the token stays in the slot (199.624214ms)
|
||||||
|
✔ C2-03a fast-forward: served moves, problems are rebuilt, and a repeat changes only lastFetch (272.12795ms)
|
||||||
|
✔ C2-03a Filbert N2: a read that took served before a sync still finds its objects after served moves (255.892244ms)
|
||||||
|
✔ C2-03a overlap: a reader during a sync sees the old pair or the new one, never a mix (220.077465ms)
|
||||||
|
✔ C2-03a diverged: a non-fast-forward keeps serving and holds until a human accepts the tip (511.485441ms)
|
||||||
|
✔ C2-03a accept starts the record over, so a changed branch gets a fresh state (204.895458ms)
|
||||||
|
✔ C2-03a fetch failure: a wrong token keeps serving and records the error, lastFetch unchanged (210.171392ms)
|
||||||
|
✔ C2-03a a failed first fetch records the error with nothing served (57.52009ms)
|
||||||
|
✔ C2-03a a 302 to another host fails the fetch and the other host sees nothing (68.211135ms)
|
||||||
|
✔ C2-03a the slot: missing or unsafe refuses before git, and sync never opens it (65.636096ms)
|
||||||
|
✔ C2-03a sage-2021: an entry with no user refuses library-remote-invalid and runs no git (34.004871ms)
|
||||||
|
✔ C2-03a one sync per mirror: an overlapping call refuses library-sync-busy (129.134012ms)
|
||||||
|
ℹ tests 142
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 142
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 6490.060843
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
1 match: replyLimitsFence(old, document, actor);
|
||||||
|
1 match: replyLimitsFence(old, written, actor);
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5151.319291ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (37.53806ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (35.257703ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 3
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5310.30031
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5147.642347ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (32.256875ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.701926ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 3
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5295.499085
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,68 @@
|
|||||||
|
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5108.905478ms)
|
||||||
|
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (40.518617ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (37.68422ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 1
|
||||||
|
ℹ fail 2
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5261.169843
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-availability.test.mjs:13:1
|
||||||
|
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5108.905478ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
+ 'citation-invalid'
|
||||||
|
- 'citation-unavailable'
|
||||||
|
^
|
||||||
|
|
||||||
|
at Object.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:29:14)
|
||||||
|
at expectedException (node:assert:547:17)
|
||||||
|
at expectsError (node:assert:672:21)
|
||||||
|
at strict.rejects (node:assert:738:3)
|
||||||
|
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||||
|
at async file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:28:5
|
||||||
|
at async withLibraryLock (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/library/src/mirror.mjs:171:18)
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:27:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 'citation-invalid',
|
||||||
|
expected: 'citation-unavailable',
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-availability.test.mjs:40:1
|
||||||
|
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (40.518617ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
Comparison {
|
||||||
|
+ code: 'citation-invalid'
|
||||||
|
- code: 'citation-unavailable'
|
||||||
|
}
|
||||||
|
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: Error: citation-invalid: citation 1 (Book One/Characters/Mara Vell.md) isn't an indexed file at a commit reachable from the served commit
|
||||||
|
at refuse (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/library/src/guard.mjs:24:42)
|
||||||
|
at checkReply (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/library/src/guard.mjs:80:25)
|
||||||
|
at async waitForActual (node:assert:615:5)
|
||||||
|
at async strict.rejects (node:assert:738:25)
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-pd3x2htc/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7),
|
||||||
|
expected: { code: 'citation-unavailable' },
|
||||||
|
operator: 'rejects',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
M1-writer-fence: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M2-incoming-human: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M3-split-check-transaction: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M4-drop-client-reason: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (29.278355ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.040025ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.805323ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.829275ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.171416ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.423621ms)
|
||||||
|
ℹ tests 6
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 6
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 139.016448
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (27.397407ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (23.565905ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.312613ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.050944ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.746752ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (11.061782ms)
|
||||||
|
ℹ tests 6
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 6
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 137.787038
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (26.703775ms)
|
||||||
|
✖ C2-06 M11 agents and tester cannot change settings, including by changing human (12.156717ms)
|
||||||
|
✖ C2-06 M11 serialization cannot replace settings after the first fence (11.431272ms)
|
||||||
|
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (14.308135ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.043165ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (9.576698ms)
|
||||||
|
ℹ tests 6
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 3
|
||||||
|
ℹ fail 3
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 131.91294
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/business/tests/reply-limits.test.mjs:34:1
|
||||||
|
✖ C2-06 M11 agents and tester cannot change settings, including by changing human (12.156717ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||||
|
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||||
|
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:37:5)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||||
|
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||||
|
at Test.run (node:internal/test_runner/test:1467:12)
|
||||||
|
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||||
|
generatedMessage: false,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: undefined,
|
||||||
|
expected: { code: 'organization-reply-limits-human-only' },
|
||||||
|
operator: 'throws',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
|
||||||
|
test at packages/business/tests/reply-limits.test.mjs:43:1
|
||||||
|
✖ C2-06 M11 serialization cannot replace settings after the first fence (11.431272ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||||
|
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||||
|
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:45:3)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||||
|
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||||
|
at Test.run (node:internal/test_runner/test:1467:12)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: false,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: undefined,
|
||||||
|
expected: { code: 'organization-reply-limits-human-only' },
|
||||||
|
operator: 'throws',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
|
||||||
|
test at packages/business/tests/reply-limits.test.mjs:52:1
|
||||||
|
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (14.308135ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||||
|
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||||
|
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-m6rnq3wd/packages/business/tests/reply-limits.test.mjs:54:3)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||||
|
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||||
|
at Test.run (node:internal/test_runner/test:1467:12)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: false,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: undefined,
|
||||||
|
expected: { code: 'organization-reply-limits-human-only' },
|
||||||
|
operator: 'throws',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (31.955623ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.832309ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (9.274775ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.69039ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.733202ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.441869ms)
|
||||||
|
ℹ tests 6
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 6
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 143.570268
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (29.948602ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.139351ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (9.054641ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.381635ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.081946ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.33004ms)
|
||||||
|
ℹ tests 6
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 6
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 141.370383
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (28.334896ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (22.541196ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.304131ms)
|
||||||
|
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (11.712463ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.875517ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (9.882976ms)
|
||||||
|
ℹ tests 6
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 5
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 140.418146
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/business/tests/reply-limits.test.mjs:52:1
|
||||||
|
✖ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (11.712463ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Missing expected exception.
|
||||||
|
at refused (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-_aqjby1c/packages/business/tests/reply-limits.test.mjs:22:10)
|
||||||
|
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-_aqjby1c/packages/business/tests/reply-limits.test.mjs:54:3)
|
||||||
|
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||||
|
at Test.run (node:internal/test_runner/test:1402:25)
|
||||||
|
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
|
||||||
|
at Test.postRun (node:internal/test_runner/test:1542:19)
|
||||||
|
at Test.run (node:internal/test_runner/test:1467:12)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: false,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: undefined,
|
||||||
|
expected: { code: 'organization-reply-limits-human-only' },
|
||||||
|
operator: 'throws',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (118.943843ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (94.790271ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (65.901789ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.908138ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.179621ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.94764ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (56.521104ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (88.283371ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (55.47311ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.321347ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (77.5591ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (24.639839ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (42.159103ms)
|
||||||
|
ℹ tests 13
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 13
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 866.146033
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (162.15169ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (151.110586ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (100.984805ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (81.389166ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (92.148118ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (78.197117ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (168.055107ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (271.850306ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (92.491602ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (61.315017ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (126.633466ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (61.436932ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (118.486786ms)
|
||||||
|
ℹ tests 13
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 13
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 1649.634687
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (121.738375ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (94.199334ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (59.307121ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.252933ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.700382ms)
|
||||||
|
✖ C2-06 check evidence and insert are atomic when storing evidence fails (42.434516ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (56.552861ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (88.426285ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (54.352185ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.064514ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (81.176348ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (25.324993ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (42.147552ms)
|
||||||
|
ℹ tests 13
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 12
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 872.02572
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-guard.test.mjs:71:1
|
||||||
|
✖ C2-06 check evidence and insert are atomic when storing evidence fails (42.434516ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
|
||||||
|
1 !== 0
|
||||||
|
|
||||||
|
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-etkv3bqf/packages/bus/tests/citation-guard.test.mjs:76:10)
|
||||||
|
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 1,
|
||||||
|
expected: 0,
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (107.311079ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (92.235404ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (59.017311ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.107066ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (47.696908ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.214066ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.665908ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (86.001777ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (55.168942ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.744539ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (79.212003ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (24.722314ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (41.933148ms)
|
||||||
|
ℹ tests 13
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 13
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 841.716764
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (110.781773ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (91.548051ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (57.119223ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (40.819326ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (47.776616ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.268825ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (53.375873ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (82.822565ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (54.131458ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.350984ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (80.819295ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (26.401011ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (41.116925ms)
|
||||||
|
ℹ tests 13
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 13
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 839.688386
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (109.280676ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (94.019544ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (58.84355ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (42.275234ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.954969ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (41.628985ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.367118ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (85.049228ms)
|
||||||
|
✖ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (53.346085ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.218776ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (78.373306ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (24.622347ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (41.8227ms)
|
||||||
|
ℹ tests 13
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 12
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 840.560306
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-guard.test.mjs:116:1
|
||||||
|
✖ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (53.346085ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: The validation function is expected to return "true". Received false
|
||||||
|
|
||||||
|
Caught error:
|
||||||
|
|
||||||
|
Error: citation-invalid
|
||||||
|
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-db3vgbd1/packages/bus/tests/citation-guard.test.mjs:121:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: Error: citation-invalid
|
||||||
|
at Socket.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-db3vgbd1/packages/bus/src/client.mjs:45:17)
|
||||||
|
at Socket.emit (node:events:514:20)
|
||||||
|
at addChunk (node:internal/streams/readable:575:12)
|
||||||
|
at readableAddChunkPushByteMode (node:internal/streams/readable:526:3)
|
||||||
|
at Readable.push (node:internal/streams/readable:406:5)
|
||||||
|
at Pipe.onStreamRead (node:internal/stream_base_commons:189:23),
|
||||||
|
operator: 'rejects',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5143.590096ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (33.560438ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.849587ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 3
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5290.343804
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5131.56715ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (32.560014ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.756895ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 3
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5271.350019
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
eeca81ab965f9e94f930ee5f51d16f019af6368bc6c3994895e204f7a54ec8d2 packages/bus/src/broker.mjs
|
||||||
|
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||||
|
36b05dd3119e5929211aa1cc5d45c5043f5a1c34567ddc7cac8f002835d44abe packages/bus/src/runtime.mjs
|
||||||
|
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||||
|
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||||
|
2e05074cd9d15d810103658af3858161cee2af78b0a2e1ba910222fab3e84401 packages/bus/tests/citation-guard.test.mjs
|
||||||
|
2c7a2102e2e0244876e41b664f4f706baefe3375100b956655551db1230f5da3 packages/bus/tests/citation-helpers.mjs
|
||||||
|
9768b6dc5ae078c5cc4f76473097287b74c5bc5853d39e1f57f153e646f861af packages/bus/tests/citation-runtime.test.mjs
|
||||||
|
abaeac64f2c3bf8ba83c9a4488edd9105c4707a6564560c5333d5421445653af packages/business/src/business.mjs
|
||||||
|
3a6044de5d1ca2cc35c5285b460c3e402b4274837e5d88b97f489797f6004903 packages/business/src/organization.mjs
|
||||||
|
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||||
|
a2bb98734bcc2556f8b2168f0faf8a89f7064c3f0aa49feb7d1975d596192f09 packages/cli/README.md
|
||||||
|
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||||
|
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||||
|
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||||
|
a5ef1b65230239a7baf6d0e8f2b8a51c0516348c7c4339a55b3f0a1a6ff531ba packages/harness/tests/citation-runner.test.mjs
|
||||||
|
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||||
|
f710d9600a17f6e2989a289cfe84e58f161d86c7306605946ce05fa71b364eb2 packages/library/src/guard.mjs
|
||||||
|
c0d630798914e300e461c247340533328e97119e54909c6a9406340e61fed8b7 packages/library/src/index.mjs
|
||||||
|
98ef45ed61144aaea44d8aea1ac43082b6d340297e46846d01772da38728e530 packages/library/src/limits.mjs
|
||||||
|
7b46f47b5e9d6b554b5d39bce2cd95c4610f5f35b8ab8fdc5a2864b3214be809 packages/library/src/reply-protocol.mjs
|
||||||
|
406146ebbce3710f308243b684a1c17e7626c1b65a4468489364317e31537a48 packages/library/tests/guard.test.mjs
|
||||||
|
39c8e6c8250a13fa43015fb2c407195e30ee642f729a9f6a644c38b4ea758a72 packages/seat/src/sandbox.mjs
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5104.72293ms)
|
||||||
|
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (35.117198ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.286656ms)
|
||||||
|
ℹ tests 3
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 1
|
||||||
|
ℹ fail 2
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 5250.151124
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-availability.test.mjs:13:1
|
||||||
|
✖ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5104.72293ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
+ 'citation-invalid'
|
||||||
|
- 'citation-unavailable'
|
||||||
|
^
|
||||||
|
|
||||||
|
at Object.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:29:14)
|
||||||
|
at expectedException (node:assert:547:17)
|
||||||
|
at expectsError (node:assert:672:21)
|
||||||
|
at strict.rejects (node:assert:738:3)
|
||||||
|
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||||
|
at async file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:28:5
|
||||||
|
at async withLibraryLock (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/library/src/mirror.mjs:171:18)
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:27:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: 'citation-invalid',
|
||||||
|
expected: 'citation-unavailable',
|
||||||
|
operator: 'strictEqual',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-availability.test.mjs:40:1
|
||||||
|
✖ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (35.117198ms)
|
||||||
|
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||||
|
+ actual - expected
|
||||||
|
|
||||||
|
Comparison {
|
||||||
|
+ code: 'citation-invalid'
|
||||||
|
- code: 'citation-unavailable'
|
||||||
|
}
|
||||||
|
|
||||||
|
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
|
||||||
|
generatedMessage: true,
|
||||||
|
code: 'ERR_ASSERTION',
|
||||||
|
actual: Error: citation-invalid: citation 1 (Book One/Characters/Mara Vell.md) isn't an indexed file at a commit reachable from the served commit
|
||||||
|
at refuse (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/library/src/guard.mjs:24:42)
|
||||||
|
at checkReply (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/library/src/guard.mjs:80:25)
|
||||||
|
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||||
|
at async waitForActual (node:assert:615:5)
|
||||||
|
at async strict.rejects (node:assert:738:25)
|
||||||
|
at async TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/tNoueZ/row217-mutant-xglaeqeb/packages/bus/tests/citation-availability.test.mjs:45:3)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7),
|
||||||
|
expected: { code: 'citation-unavailable' },
|
||||||
|
operator: 'rejects',
|
||||||
|
diff: 'simple'
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
M1-writer-fence: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M2-incoming-human: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M3-split-check-transaction: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M5-hide-library-unavailable: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
|
M4-drop-client-reason: killed (control green, mutant exit 1, hashes restored, restored green)
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||||
|
|
||||||
|
added 128 packages in 2s
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
added 2 packages in 205ms
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
✔ C2-06 runtime reads changed and unreadable reply limits without restarting (118.083931ms)
|
||||||
|
ℹ tests 1
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 1
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 227.817729
|
||||||
@@ -0,0 +1,234 @@
|
|||||||
|
npm notice run @mosaic/[email protected] test
|
||||||
|
npm notice run node --test tests/
|
||||||
|
✔ C2-04: ensureCheckouts skips a library before a real clone and leaves no books path (66.766764ms)
|
||||||
|
✔ a first launch clones the root at its branch, with the root's path as origin (47.521672ms)
|
||||||
|
✔ the clone is not at its place until git clone has finished (31.999361ms)
|
||||||
|
✔ a later launch fast-forwards a clean clone after a commit to the root, then finds it current (87.563022ms)
|
||||||
|
✔ a clone ahead of the root keeps its commits and counts as current (53.447311ms)
|
||||||
|
▶ a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves
|
||||||
|
✔ a modified file (53.258759ms)
|
||||||
|
✔ an untracked file (52.286642ms)
|
||||||
|
✔ a staged file (55.132154ms)
|
||||||
|
✔ another branch (53.48074ms)
|
||||||
|
✔ a detached HEAD (54.504119ms)
|
||||||
|
✔ a dirty clone and one on another branch are fetched, and nothing but refs/remotes moves (269.989404ms)
|
||||||
|
✔ a diverged clone gets the fetch into refs/remotes and is kept, not-fast-forward (53.461206ms)
|
||||||
|
▶ a clone kept before the branch check, or for a failed status, gets no fetch
|
||||||
|
✔ not-a-clone (27.485728ms)
|
||||||
|
✔ hooks-present (31.094616ms)
|
||||||
|
✔ submodule (38.060187ms)
|
||||||
|
✔ config-changed (36.195255ms)
|
||||||
|
✔ root-unreadable (36.385271ms)
|
||||||
|
✔ root-detached (39.627905ms)
|
||||||
|
✔ status-failed, on the root's branch and clean (42.704327ms)
|
||||||
|
✔ status-failed, dirty (44.881211ms)
|
||||||
|
✔ a clone kept before the branch check, or for a failed status, gets no fetch (297.899967ms)
|
||||||
|
✔ a dirty clone whose fetch fails is kept, fetch-failed, exactly as it was (47.755395ms)
|
||||||
|
✔ every git call the host makes, for a new clone and an existing one, carries maintenance.auto=false and gc.auto=0 (57.603139ms)
|
||||||
|
✔ a clone with loose objects enough for gc --auto gets no maintenance or gc from the fetch and the merge (89.466874ms)
|
||||||
|
▶ a clone with user.name or user.email in its config is kept, and git runs nothing in it
|
||||||
|
✔ user.name (28.628791ms)
|
||||||
|
✔ user.email (30.423895ms)
|
||||||
|
✔ a clone with user.name or user.email in its config is kept, and git runs nothing in it (59.627127ms)
|
||||||
|
✔ a commit git can't read after the fast-forward is null (57.084762ms)
|
||||||
|
✔ a new clone whose commit can't be read refuses the launch and leaves nothing behind (21.081119ms)
|
||||||
|
▶ a clone the session rigged is kept, and git runs nothing and writes nothing outside it
|
||||||
|
✔ core.fsmonitor (39.453854ms)
|
||||||
|
✔ core.hooksPath (34.616469ms)
|
||||||
|
✔ a hook file (35.090442ms)
|
||||||
|
✔ include.path (34.527401ms)
|
||||||
|
✔ includeIf (35.13899ms)
|
||||||
|
✔ a filter driver (34.195382ms)
|
||||||
|
✔ origin moved (37.391948ms)
|
||||||
|
✔ a second origin url (35.731817ms)
|
||||||
|
✔ the origin url twice, both the root (33.999145ms)
|
||||||
|
✔ an ext:: origin (31.652835ms)
|
||||||
|
✔ a branch tracking another remote (33.3147ms)
|
||||||
|
✔ a branch merging a tag (33.72502ms)
|
||||||
|
✔ a fetch line onto local branches (34.126505ms)
|
||||||
|
✔ no origin (32.973963ms)
|
||||||
|
✔ a config file over the size cap (30.967833ms)
|
||||||
|
✔ config a symlink to /dev/zero (31.51332ms)
|
||||||
|
✔ the clone a symlink to the bait (32.976685ms)
|
||||||
|
✔ the clone a file (39.528201ms)
|
||||||
|
✔ the clone a plain directory (32.193931ms)
|
||||||
|
✔ .git a gitdir: file (31.732811ms)
|
||||||
|
✔ .git a symlink (36.499471ms)
|
||||||
|
✔ .git/logs a symlink (34.327705ms)
|
||||||
|
✔ .git/refs/heads a symlink (30.308688ms)
|
||||||
|
✔ .git/objects a symlink (28.895664ms)
|
||||||
|
✔ a reflog hard-linked to a file outside (28.33422ms)
|
||||||
|
✔ HEAD a fifo (29.791372ms)
|
||||||
|
✔ a commondir file (30.182546ms)
|
||||||
|
✔ an alternates file (30.414863ms)
|
||||||
|
✔ a gitlink staged, no .gitmodules (42.003032ms)
|
||||||
|
✔ a gitlink and .gitmodules staged (47.484582ms)
|
||||||
|
✔ a gitlink to a repository with its own gitlink (53.625899ms)
|
||||||
|
✔ a gitlink and .gitmodules committed (45.90129ms)
|
||||||
|
✔ a gitlink and submodule.active in config (43.005636ms)
|
||||||
|
✔ a .git/modules with no gitlink (31.240083ms)
|
||||||
|
✔ a clone the session rigged is kept, and git runs nothing and writes nothing outside it (1201.693467ms)
|
||||||
|
▶ a root that can't be cloned refuses with the project id and leaves nothing behind
|
||||||
|
✔ missing (9.543898ms)
|
||||||
|
✔ not a repository (9.15995ms)
|
||||||
|
✔ a plain directory inside another repository (13.291966ms)
|
||||||
|
✔ unreadable (10.409599ms)
|
||||||
|
✔ on no branch (11.130486ms)
|
||||||
|
✔ missing an object (14.936384ms)
|
||||||
|
✔ a root that can't be cloned refuses with the project id and leaves nothing behind (69.273079ms)
|
||||||
|
✔ a clone whose root is on no branch, or gone, is kept and named (28.705151ms)
|
||||||
|
✔ no credential or forge remote of the root reaches a clone (46.990023ms)
|
||||||
|
✔ every project in the business file gets its own clone at its own branch (32.655381ms)
|
||||||
|
✔ a clone past its time gets SIGTERM and refuses the launch, with nothing left in the workspace (514.003804ms)
|
||||||
|
✔ a clone that ignores SIGTERM gets SIGKILL once the grace period is over (1016.843724ms)
|
||||||
|
✔ a timeout signals git's process group, so a process git started dies with it (515.051887ms)
|
||||||
|
✔ once a signalled git has closed, its group gets SIGKILL, so a process that ignored SIGTERM dies too (514.556145ms)
|
||||||
|
✔ the budget is the setting's whole number of bytes from 1 MiB to 1 GiB, and the default for anything else (1.567727ms)
|
||||||
|
✔ a stream past the default budget is not-collected with a lower bound, and a later collection catches up (65.101994ms)
|
||||||
|
✔ a budget smaller than the streams counts over several collections, once each, and is known when it catches up (2.599724ms)
|
||||||
|
✔ a line split across reads counts once (9.33078ms)
|
||||||
|
✔ Claude history from before the ledger makes the first Pi collection harness-unsupported, for good (1.440992ms)
|
||||||
|
✔ an empty claude-projects/ is no Claude history, and one filled after the ledger exists isn't checked (1.428192ms)
|
||||||
|
✔ a claude-projects/ that can't be read records nothing, and the next collection checks again (1.330216ms)
|
||||||
|
✔ the stream cap is the setting's whole number from 32 to 65536, and the default for anything else (0.16791ms)
|
||||||
|
✔ more streams than the cap is not-collected, with cursors only for the streams opened, and a larger cap catches up (2.344595ms)
|
||||||
|
✔ the default cap opens STREAMS streams and writes no more cursor lines than that (52.65919ms)
|
||||||
|
✔ row 307 the known ledger row 270 wrote reads the same count (4.720302ms)
|
||||||
|
✔ row 307 after the known ledger, one collection through pi's module answers the next count (3.122956ms)
|
||||||
|
✔ row 307 the store-incomplete ledger row 270 wrote reads the same count (1.172174ms)
|
||||||
|
✔ row 307 after the store-incomplete ledger, one collection through pi's module answers the next count (1.473641ms)
|
||||||
|
✔ row 307 the store-unreadable ledger row 270 wrote reads the same count (1.233218ms)
|
||||||
|
✔ row 307 after the store-unreadable ledger, one collection through pi's module answers the next count (1.478165ms)
|
||||||
|
✔ row 307 the not-collected ledger row 270 wrote reads the same count (1.059533ms)
|
||||||
|
✔ row 307 after the not-collected ledger, one collection through pi's module answers the next count (2.381792ms)
|
||||||
|
✔ row 307 the claude-code ledger row 270 wrote reads the same count (1.16785ms)
|
||||||
|
✔ row 307 after the claude-code ledger, one collection through pi's module answers the next count (1.422304ms)
|
||||||
|
✔ row 307 the claude-history ledger row 270 wrote reads the same count (2.943093ms)
|
||||||
|
✔ row 307 after the claude-history ledger, one collection through pi's module answers the next count (1.5333ms)
|
||||||
|
✔ row 307 the torn ledger row 270 wrote reads the same count (1.006203ms)
|
||||||
|
✔ row 307 after the torn ledger, one collection through pi's module answers the next count (2.284545ms)
|
||||||
|
✔ row 307 core refuses an answer outside the contract and appends nothing (8.468181ms)
|
||||||
|
✔ row 307 the module gets the store's two native directories, a copy of the cursors, the budget, the cap and first (2.320411ms)
|
||||||
|
✔ an empty store, a store with no compaction and a failed start count 0, known (7.138038ms)
|
||||||
|
✔ one and three completed compactions (2.441636ms)
|
||||||
|
✔ a compaction copied into a branched stream counts once, under the stream it was first seen in (3.056ms)
|
||||||
|
✔ one collection over two streams holding the same copy counts it once and writes it once (1.831681ms)
|
||||||
|
✔ the same entry id at another time in another stream is another compaction (1.582065ms)
|
||||||
|
✔ resume: each collection reads past its cursor and writes a key once (2.114301ms)
|
||||||
|
✔ a partial trailing line waits for its newline (1.624959ms)
|
||||||
|
✔ a missing ledger is not-collected and an unreadable one store-unreadable, never 0 (1.322325ms)
|
||||||
|
✔ a symlinked ledger is store-unreadable and is not written through (1.293154ms)
|
||||||
|
✔ a torn last ledger line makes the count unknown, a lower bound, and stays so (2.167108ms)
|
||||||
|
✔ a bad ledger line in the middle makes the count unknown (3.331232ms)
|
||||||
|
▶ a stream that shrank, changed under its cursor or went away is store-incomplete for good
|
||||||
|
✔ shrink (2.038847ms)
|
||||||
|
✔ rewrite (1.477185ms)
|
||||||
|
✔ remove (1.974024ms)
|
||||||
|
✔ a stream that shrank, changed under its cursor or went away is store-incomplete for good (6.254361ms)
|
||||||
|
✔ a stream that isn't a regular file or a Pi session is store-unreadable, and that passes (1.252704ms)
|
||||||
|
✔ a first line that isn't a session header is store-unreadable (1.120253ms)
|
||||||
|
✔ a Claude run is harness-unsupported, and stays so after a Pi run (1.273691ms)
|
||||||
|
✔ storeDir is the store sessionStore makes, without making it (1.538256ms)
|
||||||
|
✔ the ledger is under no sandbox mount (5.456112ms)
|
||||||
|
✔ rootHits: a top-level file, a new top-level directory, src/ and v1/ are the root; paths under known directories aren't (1.861197ms)
|
||||||
|
✔ gateEnv keeps the named variables that are strings and drops everything else (0.310846ms)
|
||||||
|
✔ isMosaicStack: a checkout whose HEAD descends from the root commit and has node_modules; nothing else (76.743834ms)
|
||||||
|
✔ gateSteps: each package with tests but queue in name order, then each scripts/test-*.sh (2.377262ms)
|
||||||
|
✔ runGate: every step passes, each with its own log and a summary line, under the environment it was given (211.160741ms)
|
||||||
|
✔ runGate: the first failing step stops the gate and names its log (269.569796ms)
|
||||||
|
✔ runGate: an abort stops the running step and everything in its group, and runs nothing after it (185.986993ms)
|
||||||
|
✔ the CLI: root-file prints the hits and exits 2, or exits 0; gate exits 0, or 2 with the step and its log; anything else is usage (661.443234ms)
|
||||||
|
✔ T3: publish pushes the work commit by oid to <user>/<branch> on the fork, with the token only through the helper (318.365034ms)
|
||||||
|
✔ T3: the token is never in git's argv, the fork URL included; it reaches git on fd 3 only (157.63501ms)
|
||||||
|
✔ T3: a moved fork branch refuses non-fast-forward; no + and no force (173.077055ms)
|
||||||
|
✔ T3: D9a: an empty fork and an unrelated fork refuse remote-unrelated; a missing fork refuses fork-unavailable (379.595919ms)
|
||||||
|
✔ T3: a fork past main refuses remote-unrelated until root catches up (152.254688ms)
|
||||||
|
✔ T3: a wrong token refuses fork-unavailable; git's stderr isn't in the refusal (102.972548ms)
|
||||||
|
✔ T3: a 302 is not followed: fork-unavailable, and the target sees no request (113.352932ms)
|
||||||
|
✔ T3: the helper answers only the fork's host and port: a fork on another port gets no token (95.099891ms)
|
||||||
|
✔ T3: a fork that echoes the token refuses credential-leak (131.28193ms)
|
||||||
|
✔ T3: no tls parameter, no trust: the scratch CA reaches git only through it (91.935601ms)
|
||||||
|
✔ D9 steps 3 and 4: ref-moved and identity-mismatch refuse before any request (143.070058ms)
|
||||||
|
✔ publishRemote refuses a fork, user or destination that isn't shell- and ref-safe before any git (88.646013ms)
|
||||||
|
✔ RUNNER_FILES is exactly what the runner and the harness sources it starts import (7.032234ms)
|
||||||
|
✔ sandboxProblem names a missing bwrap and a bwrap that fails (15.78888ms)
|
||||||
|
✔ every bind says why; the bundle and session file stay read-only over the run directory (2.196421ms)
|
||||||
|
✔ row 65 a harness module's mounts bind read-only after the adapter, each with the module's reason (2.143393ms)
|
||||||
|
✔ REQ-THREAD-2 a thread store binds its session directory and Claude transcripts, and nothing more (1.644658ms)
|
||||||
|
✔ the host's git socket is bound only when given, read-only and before the writable binds (1.090126ms)
|
||||||
|
✔ the git identity is the instance's, at <instance>@<business>.mosaic.invalid, and sandboxArgv refuses without it (1.690862ms)
|
||||||
|
✔ a confined session's shell reaches its own workspace and run directory and nothing of the founder's or another session's (2106.854649ms)
|
||||||
|
✔ a bind that exposes a stand-in, or a missing workspace bind, fails the matching check (2924.249794ms)
|
||||||
|
✔ a confined session that runs tester-cli.mjs is refused as tester, and the same shim outside the sandbox binds (300.518853ms)
|
||||||
|
✔ resolveSeat: by name under --repo resolves the repo layout (2.419588ms)
|
||||||
|
✔ resolveSeat: by path resolves the fleet layout (0.765582ms)
|
||||||
|
✔ resolveSeat: refusals for missing dir, missing launch.sh, non-executable launch.sh, invalid name, and unknown layout (1.626754ms)
|
||||||
|
✔ tmuxContext: outside tmux, default socket, custom socket, and exec failure (1.236572ms)
|
||||||
|
✔ makeRegistration produces a record that validates; each shape violation throws SeatError (1.593741ms)
|
||||||
|
✔ writeRegistration/readRegistration: round trip, permissions, absence, and malformed records (2.34318ms)
|
||||||
|
✔ updateTask: changes task, taskSetBy and updatedAt only, and refuses appropriately (2.203796ms)
|
||||||
|
✔ CLI launch: registers, execs the fake launch script, and passes args through (66.404825ms)
|
||||||
|
✔ CLI launch: --harness lands in the record (50.392752ms)
|
||||||
|
✔ CLI launch: the launch script's own exit code passes through (46.659659ms)
|
||||||
|
✔ CLI launch: relaunching a seat rewrites the one registration record (89.26575ms)
|
||||||
|
✔ CLI launch: omitting --task records an empty string, not null (39.318048ms)
|
||||||
|
✔ CLI seat task: updates only the task after a launch, and refuses on an unlaunched seat (96.331713ms)
|
||||||
|
✔ CLI refusals: no args, unknown flag, missing config, already-registered env, and exec failure (164.27632ms)
|
||||||
|
✔ samePath: equal paths, symlinked dirs, distinct dirs, and non-strings (0.422092ms)
|
||||||
|
✔ resolveSetBy: explicit --by wins over the environment; absent or empty environment gives unknown; invalid explicit or environment values refuse with exit 4 (0.590318ms)
|
||||||
|
✔ validateRegistration/readRegistration: taskSetBy is optional; a record without it (written before #1511) still loads unchanged; an invalid one is refused; the version does not change (0.734057ms)
|
||||||
|
✔ updateTask: records setBy, preserves startedAt and every unrelated field, upgrades an old record in place only when the task is set, and replaces a previous attribution (0.906133ms)
|
||||||
|
✔ CLI seat task: --by beats MOSAIC_AGENT_NAME, the environment beats nothing, empty environment is unknown, invalid --by or environment refuses with exit 4 and leaves the record byte for byte (330.90649ms)
|
||||||
|
✔ REQ-THREAD-2 sessionStore: a legacy session keeps the thread's store, any other gets sessions/<s>/, each segment checked first (5.360486ms)
|
||||||
|
✔ REQ-THREAD-2 sessionStore refuses legacy-store-unmapped for a thread whose old store no legacy session maps (1.608175ms)
|
||||||
|
✔ REQ-THREAD-2 sessionWorkspace: private directories per session, unsafe segments and overlaps refused (3.523108ms)
|
||||||
|
✔ REQ-THREAD-2 lockSessionWorkspace: one writer; a live host or run holds it, a stale lock is taken over, an unreadable one holds (15.189866ms)
|
||||||
|
✔ REQ-THREAD-2 sessions.json v2: entries carry session and workspace, running() keys on the session, a v1 file still reads (1.889362ms)
|
||||||
|
✔ REQ-LIMIT-1: family substring matching is no longer exported (1.378459ms)
|
||||||
|
✔ sessionEnv passes only the allowlist, the repo's bin on PATH, and the run id (1.063207ms)
|
||||||
|
✔ ZAI_API_KEY passes the session allowlist, and ZAI_TOKEN does not (0.239826ms)
|
||||||
|
✔ sessionExit gives a runner's signal death back as the signal; a session credential is one whole set of nonempty variables (0.405172ms)
|
||||||
|
✔ newRun: short ids, 0700 directories, and a refusal when the socket path won't fit (2.727102ms)
|
||||||
|
✔ session file and launch log: 0600, the session file written once (2.111664ms)
|
||||||
|
✔ endReason maps the runner's exit codes; a signal is killed (0.220582ms)
|
||||||
|
✔ Registry mirrors to sessions.json; readSessions marks live entries; bad files refuse (2.216711ms)
|
||||||
|
✔ a read-only Registry never writes sessions.json, refuses add() and leaves the file on remove() (2.154331ms)
|
||||||
|
✔ REQ-THREAD-1 Registry.running keys a thread run by business, instance and thread (1.027065ms)
|
||||||
|
✔ REQ-THREAD-2 REQ-LAUNCH-1 threadStore checks both segments before the join and refuses an unsafe directory (2.628544ms)
|
||||||
|
✔ stopSession refuses an unknown run, reports a stale one, and won't signal a pid that isn't a runner (1.552738ms)
|
||||||
|
✔ a session runs in its sandbox as pid 1 of its namespace, claims, answers, and stops on mosaic stop (293.088316ms)
|
||||||
|
✔ workRef and validBranch take only what a ref name can hold (2.280976ms)
|
||||||
|
✔ a push lands as the task's work ref, a fast-forward lands after it, and main is the root's (187.443563ms)
|
||||||
|
✔ a rewritten branch refuses non-fast-forward and the work ref stays (124.192671ms)
|
||||||
|
✔ a branch with no history in common with main refuses unrelated-history (60.579235ms)
|
||||||
|
✔ a bundle that needs commits the working repository lacks refuses missing-prerequisite (51.079109ms)
|
||||||
|
✔ the root is fetched again before each push and main follows it, so a clone of a newer root pushes (129.47937ms)
|
||||||
|
✔ a root moved back after the clone leaves the push's base unknown: missing-prerequisite (78.854404ms)
|
||||||
|
✔ a commit with a broken object refuses invalid-bundle, and only because fsck is on (86.468293ms)
|
||||||
|
✔ only a v2 bundle with the named branch is read (64.914471ms)
|
||||||
|
✔ a branch named main, or named for another task, moves only this task's work ref (102.371349ms)
|
||||||
|
✔ a record that throws moves the work ref back, or removes a new one (141.771502ms)
|
||||||
|
✔ a work ref that can't go back refuses rollback-failed, naming the ref and the commit (362.776758ms)
|
||||||
|
✔ a root that can't be read refuses root-unreadable (28.853641ms)
|
||||||
|
✔ a git past its time gets SIGTERM, leaves no ref lock, and the next push lands (2132.860162ms)
|
||||||
|
✔ a git that ignores SIGTERM gets SIGKILL once the grace period is over (1025.936026ms)
|
||||||
|
✔ a working repository path that isn't a directory refuses (23.030329ms)
|
||||||
|
✔ review bundles a pushed commit as refs/mosaic/review, leaving out what the reviewer has (120.899663ms)
|
||||||
|
✔ review of a project with no working repository refuses unknown-commit (14.031146ms)
|
||||||
|
✔ the runner's git tools hold the host's limits and branch rule (1.219295ms)
|
||||||
|
✔ a reseed moves root but leaves a landed main, and main forwards once root contains it (184.469774ms)
|
||||||
|
✔ after a landing, a push built on the root still lands and main stays where the landing put it (126.530409ms)
|
||||||
|
✔ once the root shares no history with a landed main, a push is checked against main, not the root (179.004093ms)
|
||||||
|
✔ a landing squashes the reviewed diff onto main as the bus host and moves main only at finish (105.224989ms)
|
||||||
|
✔ a landing refuses ref-moved, base-conflict and root-file before it makes a commit (308.132399ms)
|
||||||
|
✔ a landing whose applied diff isn't the reviewed one refuses patch-drift and leaves no worktree (121.415385ms)
|
||||||
|
✔ finish refuses base-moved when main moved, and a record that throws moves main back (242.643351ms)
|
||||||
|
✔ halted push receipt rolls back only its unrecorded ref and cleans temporary refs (198.696687ms)
|
||||||
|
ℹ tests 218
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 218
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 6318.071226
|
||||||
@@ -0,0 +1,202 @@
|
|||||||
|
{
|
||||||
|
"base": "e0c6142f3",
|
||||||
|
"testedRevision": "2d274a5b6c35c3e74b07206ffd724a6579bb149d",
|
||||||
|
"tmpdir": "/mnt/storage/scratch/tmp/tNoueZ",
|
||||||
|
"wholeSuites": {
|
||||||
|
"library": {
|
||||||
|
"tests": 142,
|
||||||
|
"pass": 142,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"business": {
|
||||||
|
"tests": 270,
|
||||||
|
"pass": 270,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"bus": {
|
||||||
|
"tests": 974,
|
||||||
|
"pass": 974,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"cli": {
|
||||||
|
"tests": 988,
|
||||||
|
"pass": 988,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"harness": {
|
||||||
|
"tests": 172,
|
||||||
|
"pass": 172,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"seat": {
|
||||||
|
"tests": 218,
|
||||||
|
"pass": 218,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"touched": {
|
||||||
|
"touched-first": {
|
||||||
|
"tests": 57,
|
||||||
|
"pass": 56,
|
||||||
|
"fail": 1,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"touched-rerun": {
|
||||||
|
"tests": 57,
|
||||||
|
"pass": 57,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"availability-green": {
|
||||||
|
"tests": 3,
|
||||||
|
"pass": 3,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"runtime-fixture-retry": {
|
||||||
|
"tests": 1,
|
||||||
|
"pass": 1,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"mutants": {
|
||||||
|
"M1-writer-fence": {
|
||||||
|
"control": {
|
||||||
|
"tests": 6,
|
||||||
|
"pass": 6,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"tests": 6,
|
||||||
|
"pass": 3,
|
||||||
|
"fail": 3,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"restored": {
|
||||||
|
"tests": 6,
|
||||||
|
"pass": 6,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"productHashesRestored": true
|
||||||
|
},
|
||||||
|
"M2-incoming-human": {
|
||||||
|
"control": {
|
||||||
|
"tests": 6,
|
||||||
|
"pass": 6,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"tests": 6,
|
||||||
|
"pass": 5,
|
||||||
|
"fail": 1,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"restored": {
|
||||||
|
"tests": 6,
|
||||||
|
"pass": 6,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"productHashesRestored": true
|
||||||
|
},
|
||||||
|
"M3-split-check-transaction": {
|
||||||
|
"control": {
|
||||||
|
"tests": 13,
|
||||||
|
"pass": 13,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"tests": 13,
|
||||||
|
"pass": 12,
|
||||||
|
"fail": 1,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"restored": {
|
||||||
|
"tests": 13,
|
||||||
|
"pass": 13,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"productHashesRestored": true
|
||||||
|
},
|
||||||
|
"M4-drop-client-reason": {
|
||||||
|
"control": {
|
||||||
|
"tests": 13,
|
||||||
|
"pass": 13,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"tests": 13,
|
||||||
|
"pass": 12,
|
||||||
|
"fail": 1,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"restored": {
|
||||||
|
"tests": 13,
|
||||||
|
"pass": 13,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"productHashesRestored": true
|
||||||
|
},
|
||||||
|
"M5-hide-library-unavailable": {
|
||||||
|
"control": {
|
||||||
|
"tests": 3,
|
||||||
|
"pass": 3,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"negative": {
|
||||||
|
"tests": 3,
|
||||||
|
"pass": 1,
|
||||||
|
"fail": 2,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"restored": {
|
||||||
|
"tests": 3,
|
||||||
|
"pass": 3,
|
||||||
|
"fail": 0,
|
||||||
|
"cancelled": 0,
|
||||||
|
"skipped": 0
|
||||||
|
},
|
||||||
|
"productHashesRestored": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"totalWholeSuiteTests": 2764
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
library: 142/142 pass; fail=0 skipped=0 cancelled=0
|
||||||
|
business: 270/270 pass; fail=0 skipped=0 cancelled=0
|
||||||
|
bus: 974/974 pass; fail=0 skipped=0 cancelled=0
|
||||||
|
cli: 988/988 pass; fail=0 skipped=0 cancelled=0
|
||||||
|
harness: 172/172 pass; fail=0 skipped=0 cancelled=0
|
||||||
|
seat: 218/218 pass; fail=0 skipped=0 cancelled=0
|
||||||
|
Touched rerun 57/57; first run 56/57, new runtime fixture corrected.
|
||||||
|
M1-M5 killed; each control/restored run green, hashes restored.
|
||||||
|
No old test failed or was edited. scripts/test-*.sh left to Sage at landing.
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5129.213097ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (32.312603ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.769445ms)
|
||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (104.132156ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (90.030314ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (57.202238ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (41.82067ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (47.52786ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (45.049883ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.4217ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (86.893454ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (55.019525ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.383322ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (76.778515ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (24.114008ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (47.161109ms)
|
||||||
|
✖ C2-06 runtime reads changed and unreadable reply limits without restarting (78.402278ms)
|
||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (26.436831ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (21.452407ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.669666ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (8.204041ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (9.079346ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (10.338142ms)
|
||||||
|
✔ C2-06 CLI replies reads revision and sends only the JSON settings to the human verb (1.898838ms)
|
||||||
|
✔ C2-06 CLI replies requires a file and refuses tester writes before a bus call (0.465972ms)
|
||||||
|
✔ C2-06 RESULT reply-invalid retries once, delivers only the valid answer and names reason (222.089187ms)
|
||||||
|
✔ C2-06 RESULT citation-missing retries once, delivers only the valid answer and names reason (200.104611ms)
|
||||||
|
✔ C2-06 RESULT citations-over-limit retries once, delivers only the valid answer and names reason (197.834891ms)
|
||||||
|
✔ C2-06 RESULT citation-invalid retries once, delivers only the valid answer and names reason (210.156515ms)
|
||||||
|
✔ C2-06 RESULT playground-cited-as-canon retries once, delivers only the valid answer and names reason (213.835593ms)
|
||||||
|
✔ C2-06 RESULT citation-cross-universe retries once, delivers only the valid answer and names reason (209.912186ms)
|
||||||
|
✔ C2-06 RESULT citation-unfetched retries once, delivers only the valid answer and names reason (198.705684ms)
|
||||||
|
✔ C2-06 RESULT two guard refusals use the citation fixed text and exactly one retry (182.386586ms)
|
||||||
|
✔ C2-06 RESULT JSON 34000 characters retries with a shorter valid answer (213.370025ms)
|
||||||
|
✔ C2-06 RESULT JSON 70000 characters retries with a shorter valid answer (199.782915ms)
|
||||||
|
✔ C2-06 RESULT two oversized JSON bodies use the length fixed text with citations required (184.820165ms)
|
||||||
|
✔ C2-06 multibyte plain bodies also receive the one request-size retry (201.829013ms)
|
||||||
|
✔ C2-06 two multibyte plain bodies use the length fallback (182.03426ms)
|
||||||
|
✔ C2-06 RESULT a length refusal then citation refusal shares one retry and citation fallback (183.540139ms)
|
||||||
|
✔ C2-06 fixed empty/failed replies defer unslop note until the next cited reply (274.786836ms)
|
||||||
|
✔ C2-06 cited JSON above the old 32000 clip retains its citations and text (167.141798ms)
|
||||||
|
✔ C2-06 a flagged cited answer keeps the note inside text and citations whole (168.83631ms)
|
||||||
|
✔ C2-06 send_message typed tool runs every guard code before the valid RESULT (230.565935ms)
|
||||||
|
✔ C2-06 outside library the old failed text, clip and unslop behavior hold (197.472747ms)
|
||||||
|
✔ C2-06 outside library a refused send keeps the existing no-retry behavior (151.296315ms)
|
||||||
|
✔ C2-06 the retry turn delivers citation-unavailable reason to the agent (184.635398ms)
|
||||||
|
✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (14.759264ms)
|
||||||
|
✔ C2-06 citation setting and all four exact fixed texts (9.899391ms)
|
||||||
|
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (76.751112ms)
|
||||||
|
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (41.360225ms)
|
||||||
|
✔ C2-06 playground cites pass but cannot state canon (23.671961ms)
|
||||||
|
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (41.572641ms)
|
||||||
|
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (10.468249ms)
|
||||||
|
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (31.989388ms)
|
||||||
|
✔ C2-06 origin uses literal paths even when a filename contains a glob (20.084358ms)
|
||||||
|
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (44.687642ms)
|
||||||
|
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.462948ms)
|
||||||
|
ℹ tests 57
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 56
|
||||||
|
ℹ fail 1
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 11101.06711
|
||||||
|
|
||||||
|
✖ failing tests:
|
||||||
|
|
||||||
|
test at packages/bus/tests/citation-runtime.test.mjs:12:1
|
||||||
|
✖ C2-06 runtime reads changed and unreadable reply limits without restarting (78.402278ms)
|
||||||
|
Error: invalid-authority
|
||||||
|
at fail (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/broker.mjs:215:9)
|
||||||
|
at checkBusiness (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/broker.mjs:366:7)
|
||||||
|
at new Broker (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/broker.mjs:537:63)
|
||||||
|
at startBroker (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/src/runtime.mjs:274:14)
|
||||||
|
at async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/beakley-row217/packages/bus/tests/citation-runtime.test.mjs:18:19)
|
||||||
|
at async Test.run (node:internal/test_runner/test:1409:7)
|
||||||
|
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
|
||||||
|
code: 'invalid-authority'
|
||||||
|
}
|
||||||
@@ -0,0 +1,65 @@
|
|||||||
|
✔ C2-06 held library lock gives the agent citation-unavailable and its retry reason (5131.834326ms)
|
||||||
|
✔ C2-06 malformed sync state is availability failure, never a fabricated invalid cite (31.609704ms)
|
||||||
|
✔ C2-06 no mirror or freshly initialized empty mirror still means no served citation (31.510292ms)
|
||||||
|
✔ C2-06 coder send_message guard covers every table refusal; inserts nothing (102.606635ms)
|
||||||
|
✔ C2-06 research send_message guard covers every table refusal; inserts nothing (91.30209ms)
|
||||||
|
✔ C2-06 stored check carries the file author trailer at an unrelated cited tip (55.686451ms)
|
||||||
|
✔ C2-06 supporting cite cannot state canon, including a folder also marked playground (42.44166ms)
|
||||||
|
✔ C2-06 supporting file stores supporting scope and its real agent trailer (48.386414ms)
|
||||||
|
✔ C2-06 check evidence and insert are atomic when storing evidence fails (39.194827ms)
|
||||||
|
✔ C2-06 live limits change both directions; unreadable file keeps checks and exact fixed texts (54.284625ms)
|
||||||
|
✔ C2-06 page store is session-local, caps 20 fetches and 200 KiB, drops at disconnect (85.004961ms)
|
||||||
|
✔ C2-06 transport passes safe capped guard reason; ordinary refusal envelope is byte-identical (54.117068ms)
|
||||||
|
✔ C2-06 non-library businesses retain role.claim shape and unguarded free sends (26.131034ms)
|
||||||
|
✔ C2-06 thread messages carry file/last evidence with one read per distinct path (76.437567ms)
|
||||||
|
✔ C2-06 guarded request snapshot cannot change between check and insert (23.908928ms)
|
||||||
|
✔ C2-06 library.limits.set is human-only and invalid settings leave file and receipts unchanged (39.656735ms)
|
||||||
|
✔ C2-06 runtime reads changed and unreadable reply limits without restarting (113.293022ms)
|
||||||
|
✔ C2-06 M11 human replacement works; omitted settings return to defaults (36.305063ms)
|
||||||
|
✔ C2-06 M11 agents and tester cannot change settings, including by changing human (21.839826ms)
|
||||||
|
✔ C2-06 M11 serialization cannot replace settings after the first fence (8.253422ms)
|
||||||
|
✔ C2-06 M11 an unrelated actor cannot appoint itself human and change reply limits (7.674495ms)
|
||||||
|
✔ C2-06 invalid setter values preserve the business and changes.jsonl (8.65299ms)
|
||||||
|
✔ C2-06 validator accepts hand-edited settings; raw reader fails closed on invalid files (9.800617ms)
|
||||||
|
✔ C2-06 CLI replies reads revision and sends only the JSON settings to the human verb (1.78485ms)
|
||||||
|
✔ C2-06 CLI replies requires a file and refuses tester writes before a bus call (0.520156ms)
|
||||||
|
✔ C2-06 RESULT reply-invalid retries once, delivers only the valid answer and names reason (220.792912ms)
|
||||||
|
✔ C2-06 RESULT citation-missing retries once, delivers only the valid answer and names reason (195.400791ms)
|
||||||
|
✔ C2-06 RESULT citations-over-limit retries once, delivers only the valid answer and names reason (196.181772ms)
|
||||||
|
✔ C2-06 RESULT citation-invalid retries once, delivers only the valid answer and names reason (211.797981ms)
|
||||||
|
✔ C2-06 RESULT playground-cited-as-canon retries once, delivers only the valid answer and names reason (212.360651ms)
|
||||||
|
✔ C2-06 RESULT citation-cross-universe retries once, delivers only the valid answer and names reason (212.667005ms)
|
||||||
|
✔ C2-06 RESULT citation-unfetched retries once, delivers only the valid answer and names reason (184.261348ms)
|
||||||
|
✔ C2-06 RESULT two guard refusals use the citation fixed text and exactly one retry (184.957084ms)
|
||||||
|
✔ C2-06 RESULT JSON 34000 characters retries with a shorter valid answer (216.343048ms)
|
||||||
|
✔ C2-06 RESULT JSON 70000 characters retries with a shorter valid answer (198.338992ms)
|
||||||
|
✔ C2-06 RESULT two oversized JSON bodies use the length fixed text with citations required (183.309434ms)
|
||||||
|
✔ C2-06 multibyte plain bodies also receive the one request-size retry (198.411283ms)
|
||||||
|
✔ C2-06 two multibyte plain bodies use the length fallback (182.244769ms)
|
||||||
|
✔ C2-06 RESULT a length refusal then citation refusal shares one retry and citation fallback (184.948978ms)
|
||||||
|
✔ C2-06 fixed empty/failed replies defer unslop note until the next cited reply (294.575418ms)
|
||||||
|
✔ C2-06 cited JSON above the old 32000 clip retains its citations and text (169.454956ms)
|
||||||
|
✔ C2-06 a flagged cited answer keeps the note inside text and citations whole (164.824669ms)
|
||||||
|
✔ C2-06 send_message typed tool runs every guard code before the valid RESULT (213.365137ms)
|
||||||
|
✔ C2-06 outside library the old failed text, clip and unslop behavior hold (198.225522ms)
|
||||||
|
✔ C2-06 outside library a refused send keeps the existing no-retry behavior (155.955999ms)
|
||||||
|
✔ C2-06 the retry turn delivers citation-unavailable reason to the agent (188.198987ms)
|
||||||
|
✔ C2-06 reply schema: free bodies, exact objects and safe refusal reasons (17.723832ms)
|
||||||
|
✔ C2-06 citation setting and all four exact fixed texts (11.590649ms)
|
||||||
|
✔ C2-06 default citation cap passes 20 and refuses 21, even with optional citations (79.713842ms)
|
||||||
|
✔ C2-06 real Git citation scope, reachability, lines and normalized quotes (41.208361ms)
|
||||||
|
✔ C2-06 playground cites pass but cannot state canon (24.250695ms)
|
||||||
|
✔ C2-06 independent universes refuse; a hybrid and only its sources pass (42.707909ms)
|
||||||
|
✔ C2-06 web cites require allowed definition, this session fetch and kept quote (10.901286ms)
|
||||||
|
✔ C2-06 file origin is the path commit and trailer, while last follows served changes (37.369269ms)
|
||||||
|
✔ C2-06 origin uses literal paths even when a filename contains a glob (20.592546ms)
|
||||||
|
✔ C2-06 cited-commit guard reads exactly the C2-05a indexed file set with supporting scope (51.682837ms)
|
||||||
|
✔ C2-06 reply limits fall back independently without coercion or inherited keys (0.499884ms)
|
||||||
|
ℹ tests 57
|
||||||
|
ℹ suites 0
|
||||||
|
ℹ pass 57
|
||||||
|
ℹ fail 0
|
||||||
|
ℹ cancelled 0
|
||||||
|
ℹ skipped 0
|
||||||
|
ℹ todo 0
|
||||||
|
ℹ duration_ms 11134.473726
|
||||||
@@ -1630,3 +1630,5 @@ are never rewritten or removed; corrections are new entries.
|
|||||||
2026-10-23 | Beakley (88b97f65, Codex gpt-6.1-sol) | Row 217 #1718 takeover under Q245 | Registered beakley/row217; read brief/design and standing Sage rulings; awaiting Launchpad ref before implementation. Queue next refused linked worktree; reported to Sage. Untested, no Node/test run pending CLEAR.
|
2026-10-23 | Beakley (88b97f65, Codex gpt-6.1-sol) | Row 217 #1718 takeover under Q245 | Registered beakley/row217; read brief/design and standing Sage rulings; awaiting Launchpad ref before implementation. Queue next refused linked worktree; reported to Sage. Untested, no Node/test run pending CLEAR.
|
||||||
|
|
||||||
2026-10-24 | Beakley (88b97f65) | Row 217 round 2 under sage-4037 | New beakley/row217-r2 rebased onto e0c6142f3, retained both log histories, E4 product fix and supporting/index tests drafted. No Node/npm/tests/mutants run; ready for CLEAR; local-only dependency installs required on CLEAR, old-test red goes to Sage.
|
2026-10-24 | Beakley (88b97f65) | Row 217 round 2 under sage-4037 | New beakley/row217-r2 rebased onto e0c6142f3, retained both log histories, E4 product fix and supporting/index tests drafted. No Node/npm/tests/mutants run; ready for CLEAR; local-only dependency installs required on CLEAR, old-test red goes to Sage.
|
||||||
|
|
||||||
|
2026-10-24T10:21Z | Beakley (88b97f65) | Row217 #1718 round2 slot | All touched57 and six whole suites2764 pass, zero skips/cancels; M1-M5 killed/restored, E4 RED stand-in observed. First-new runtime fixture red recorded and corrected; no old-test change/failure. Evidence in agents/beakley/work/queue-217/run-r2. Verified for review on beakley/row217-r2; Sage landing scripts/review remain.
|
||||||
Reference in new issue
Block a user