Compare commits
331
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f41eddb20 | ||
|
|
1de685ccad | ||
|
|
1648af7d4e | ||
|
|
6dd4f92b0a | ||
|
|
8830030412 | ||
|
|
c558498062 | ||
|
|
138171ca0d | ||
|
|
bec3583286 | ||
|
|
3b071cac7b | ||
|
|
1e1357cb6e | ||
|
|
831d15f0b4 | ||
|
|
63bd48a5f8 | ||
|
|
260f2ce7ed | ||
|
|
a34f79692e | ||
|
|
930d77eeca | ||
|
|
7e849a7b0b | ||
|
|
ec5354bcc2 | ||
|
|
7024e35f59 | ||
|
|
cbc43c6edc | ||
|
|
e71222d1a0 | ||
|
|
18a0bd47d7 | ||
|
|
a702076576 | ||
|
|
4d1d5ee8ee | ||
|
|
bd79daffdd | ||
|
|
1bf83078b4 | ||
|
|
0c6aa1a1e2 | ||
|
|
b9811c492f | ||
|
|
d27fe0ea95 | ||
|
|
b8f01a189f | ||
|
|
e6ba6eb8dc | ||
|
|
3c7a7740c4 | ||
|
|
180fb8ab00 | ||
|
|
42c72d781b | ||
|
|
d3b6ab11da | ||
|
|
a605e44d1e | ||
|
|
85ecdfbde5 | ||
|
|
2ba22b4cbf | ||
|
|
5fbf3d2b51 | ||
|
|
0e7e203db8 | ||
|
|
38cfa72335 | ||
|
|
3dc824ea12 | ||
|
|
1ff45c4ad6 | ||
|
|
9c2f391a90 | ||
|
|
a13050012a | ||
|
|
8cf2eda9ff | ||
|
|
f65faf9df8 | ||
|
|
728442fcef | ||
|
|
1977f4ffc6 | ||
|
|
9944100ade | ||
|
|
1009bbfaf9 | ||
|
|
fe3ef5128d | ||
|
|
0be9e024cf | ||
|
|
7e0d3c93f3 | ||
|
|
3692fca522 | ||
|
|
9256129228 | ||
|
|
31222d81d7 | ||
|
|
3d00efe39c | ||
|
|
9f817e6961 | ||
|
|
80c4a37396 | ||
|
|
259e59d401 | ||
|
|
b37cc50878 | ||
|
|
ea02c061e4 | ||
|
|
dca9bc8691 | ||
|
|
9a9c60d9c0 | ||
|
|
c0c291cda2 | ||
|
|
0ef269da9b | ||
|
|
abc66a5988 | ||
|
|
12eba4b599 | ||
|
|
5df0e9d6fa | ||
|
|
bd76d43453 | ||
|
|
a8e71be034 | ||
|
|
da1f0ceda6 | ||
|
|
04e1ce24cc | ||
|
|
6e9f3d7231 | ||
|
|
39eadf8ba8 | ||
|
|
fddae79ef6 | ||
|
|
a6acbbe14d | ||
|
|
46cd8d5835 | ||
|
|
aba5cc505f | ||
|
|
8545057275 | ||
|
|
068d868a99 | ||
|
|
4ff4f44c98 | ||
|
|
b9ea9304fd | ||
|
|
6bad02612a | ||
|
|
158205c5cc | ||
|
|
cab3ef3e8f | ||
|
|
ddf20567ee | ||
|
|
3b88ef399d | ||
|
|
1eb8b68e44 | ||
|
|
abe37ab27a | ||
|
|
4ef251e1a7 | ||
|
|
36a70ea9c1 | ||
|
|
8eb37bed32 | ||
|
|
82ca1d3db4 | ||
|
|
54328cfae5 | ||
|
|
ddb3e961fb | ||
|
|
46c07df75f | ||
|
|
4ac6f13bcf | ||
|
|
c012b2e0a3 | ||
|
|
2627321f64 | ||
|
|
c78f225433 | ||
|
|
c1e9841d36 | ||
|
|
6951fb494f | ||
|
|
5514457dde | ||
|
|
fbf8d61a4c | ||
|
|
2b3e3ec83b | ||
|
|
418f00bce2 | ||
|
|
a7a433e271 | ||
|
|
664d8ef3d3 | ||
|
|
f7d16e9a8d | ||
|
|
484aef7e2a | ||
|
|
d0ddfa8de2 | ||
|
|
ab2bc23c7f | ||
|
|
1d6dae6fe4 | ||
|
|
7fff6a20e6 | ||
|
|
a19b936a8c | ||
|
|
ee151685e9 | ||
|
|
155cb8c3e5 | ||
|
|
9936a1be1a | ||
|
|
4cf888c04c | ||
|
|
eabeb1aa82 | ||
|
|
569765f6de | ||
|
|
d6dc04e84f | ||
|
|
503b91e561 | ||
|
|
4c49919e9b | ||
|
|
c4bba5d2a3 | ||
|
|
5a0c801cb8 | ||
|
|
2a728da86c | ||
|
|
6df8b0fd8a | ||
|
|
09a847edaa | ||
|
|
30644a3dd5 | ||
|
|
0e1dd0a95b | ||
|
|
52ba14c5f1 | ||
|
|
49c162c99e | ||
|
|
362893d043 | ||
|
|
acd2f4abfa | ||
|
|
63ec2544c2 | ||
|
|
1cb0d45df0 | ||
|
|
8f7ef593d9 | ||
|
|
2d3458695a | ||
|
|
6efc4a6921 | ||
|
|
193774d755 | ||
|
|
5d1734dd01 | ||
|
|
c10f17cfeb | ||
|
|
acc0f8acb0 | ||
|
|
64a40e712d | ||
|
|
90a0d690da | ||
|
|
2656f32f77 | ||
|
|
c5ccabc9fb | ||
|
|
d8bd081b20 | ||
|
|
af7287a533 | ||
|
|
4176f3a506 | ||
|
|
1db5167795 | ||
|
|
c3e4ee4138 | ||
|
|
56e9844528 | ||
|
|
bbc062ae86 | ||
|
|
dc2a49a744 | ||
|
|
c0bf87b789 | ||
|
|
e1d8756b51 | ||
|
|
83ec67dd36 | ||
|
|
de3e23dde9 | ||
|
|
446c9b8381 | ||
|
|
f78a45653d | ||
|
|
775bbe2368 | ||
|
|
35f34ad27a | ||
|
|
624507c74b | ||
|
|
77a790f43b | ||
|
|
bfd2f43b10 | ||
|
|
cb86e186dc | ||
|
|
ce8bb4d8b0 | ||
|
|
3a8e4abadb | ||
|
|
c68a29fed8 | ||
|
|
92e82469f2 | ||
|
|
8feda29eb4 | ||
|
|
bbec5e97f1 | ||
|
|
ec213e0336 | ||
|
|
78b69e1e68 | ||
|
|
48b89db33b | ||
|
|
7c8dc20335 | ||
|
|
ce0b6ed411 | ||
|
|
97cb9a7630 | ||
|
|
e908f7ffee | ||
|
|
92df71a982 | ||
|
|
0abec5d2e8 | ||
|
|
20996ecd66 | ||
|
|
78b932feb6 | ||
|
|
9e2689dffb | ||
|
|
b24d917ec9 | ||
|
|
61ebf2c34d | ||
|
|
d1f6f2b199 | ||
|
|
c65fb34ee6 | ||
|
|
94cde633e2 | ||
|
|
669cdf42c4 | ||
|
|
98614187ce | ||
|
|
c8a9bcf946 | ||
|
|
58b2bbb3a5 | ||
|
|
95d4991d20 | ||
|
|
966ee31ea8 | ||
|
|
696ea3a3af | ||
|
|
0ce22dde65 | ||
|
|
36056a5dd9 | ||
|
|
8bb5b3c73c | ||
|
|
6927628b99 | ||
|
|
cd87d5305f | ||
|
|
77a7df8949 | ||
|
|
61af103679 | ||
|
|
eb7240dc85 | ||
|
|
9903a5d6f6 | ||
|
|
4577e46459 | ||
|
|
5e77cdd095 | ||
|
|
5b1ae8d6f4 | ||
|
|
ef119377f8 | ||
|
|
1edf4acfd1 | ||
|
|
13c1b3529f | ||
|
|
380b9810dc | ||
|
|
b2f2071a0a | ||
|
|
49433b4dd3 | ||
|
|
da55da6244 | ||
|
|
1efcaf981b | ||
|
|
9878703d3a | ||
|
|
56cfaf468e | ||
|
|
a41cfd491e | ||
|
|
7fe32d7226 | ||
|
|
06f507dbc0 | ||
|
|
9a50f082f5 | ||
|
|
2ce476d54c | ||
|
|
3e5041b43b | ||
|
|
b5fb6280df | ||
|
|
e1092e673e | ||
|
|
abc11152a0 | ||
|
|
73692e1bb6 | ||
|
|
fc5f282902 | ||
|
|
045dd758a3 | ||
|
|
2d7ebe012d | ||
|
|
487500a16f | ||
|
|
962046aaab | ||
|
|
0e935776ee | ||
|
|
dc8f552819 | ||
|
|
9b63454660 | ||
|
|
360f9a331b | ||
|
|
2a345b62ef | ||
|
|
6325295cec | ||
|
|
e1e4750815 | ||
|
|
35fbdcad01 | ||
|
|
8952720e04 | ||
|
|
df236ab6eb | ||
|
|
a9b9c84566 | ||
|
|
de17e8bc30 | ||
|
|
5e9a49e3f4 | ||
|
|
c638019596 | ||
|
|
3d7dff3453 | ||
|
|
f8461e9ab5 | ||
|
|
b6795f9a1c | ||
|
|
ceb612a40f | ||
|
|
18334d713b | ||
|
|
963303403e | ||
|
|
72db194a43 | ||
|
|
5d7801dc19 | ||
|
|
af988f6526 | ||
|
|
5999872f5a | ||
|
|
b0690ae8c0 | ||
|
|
18eca02ae9 | ||
|
|
a7aa4a4dab | ||
|
|
fda535d97d | ||
|
|
337ccee2dc | ||
|
|
d06ada4b8b | ||
|
|
105d26f1d9 | ||
|
|
efd43df9d3 | ||
|
|
f3030813ed | ||
|
|
918bbddfb0 | ||
|
|
17d1123ea1 | ||
|
|
a5e7785476 | ||
|
|
727cc0aa0c | ||
|
|
7d0eb8d8d6 | ||
|
|
0cada1be13 | ||
|
|
ad6a8d99ea | ||
|
|
d55944edb1 | ||
|
|
1f3d0350f3 | ||
|
|
c57a9425e9 | ||
|
|
edf06ca884 | ||
|
|
6ece68c975 | ||
|
|
dc68d4f4ce | ||
|
|
6a0fa43837 | ||
|
|
0c32e67f29 | ||
|
|
076eda6a57 | ||
|
|
63f3a69313 | ||
|
|
9c85f27fa5 | ||
|
|
e7038a4407 | ||
|
|
239033309c | ||
|
|
54bdac257e | ||
|
|
752cc87ac1 | ||
|
|
25874bc86c | ||
|
|
4c6190645d | ||
|
|
d0a6a87cda | ||
|
|
29f7287942 | ||
|
|
2c244de380 | ||
|
|
a44c1f884e | ||
|
|
5481478786 | ||
|
|
c2eac13ea5 | ||
|
|
dab9f6cd4d | ||
|
|
b3ca50c950 | ||
|
|
a1b72432cd | ||
|
|
bc4e94166d | ||
|
|
35f32b0326 | ||
|
|
fca8c68ccc | ||
|
|
4f7bb95b33 | ||
|
|
d91b580c3b | ||
|
|
98235fdb32 | ||
|
|
b19ffa04f8 | ||
|
|
e0c6142f3a | ||
|
|
42ba0f5bc0 | ||
|
|
68c08b4e76 | ||
|
|
76f84465fd | ||
|
|
1bd214e382 | ||
|
|
56c1845505 | ||
|
|
72a3125a6e | ||
|
|
6a5e125113 | ||
|
|
529e121379 | ||
|
|
9042754c47 | ||
|
|
c98cd41d8d | ||
|
|
94d9e90a6a | ||
|
|
b617b80f68 | ||
|
|
93200bb446 | ||
|
|
d16958bcfd | ||
|
|
48f1627be2 | ||
|
|
17f056787f | ||
|
|
200dd396c4 | ||
|
|
537902d261 | ||
|
|
f58049de02 | ||
|
|
33f49f7d5a | ||
|
|
4a4bef6c13 |
No files matched your search
@@ -1,5 +1,6 @@
|
||||
# build/deps
|
||||
node_modules/
|
||||
.turbo/
|
||||
|
||||
# runtime credentials — never commit, never copy into the image
|
||||
.env
|
||||
|
||||
+549
-5
@@ -5458,12 +5458,556 @@ Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
|
||||
|
||||
2026-10-24 | Goldie | Row325 / #1821 after (sage-3882 CLEAR) | Only Case1 projects key becomesstack; only old test70 expected key updated under mos-1564. New3-case test copies real .mosaic/project.json bytes, requires CLI project valid, rejects old key. Serialized shortTMP timeout-k10: new3/3, business264/264, old-key mutant killed/restored SHA9e43bfef, restored new3/3; all positive0 fail/skip/cancel. Manifest4/4 verifies including unchanged project document. Logs/load lines and mutant diff in BUILD.md; no queue writes/host action, Gladstone review/Sage gate pending.
|
||||
|
||||
2026-10-24 | Bentina | Row157 / #1652 before (sage-3906, Q246, mos-1566) | Recovered seat/brief/design at ec86f2c84 on bentina/row157. Canonical queue next flags stale brief pin. Outbound audit finds broker gitea-grant node:https and web DNS-pinned node:https paths, triggering I2 explicit stop rule. Sage notified bentina-0001; BUILD.md records shifted cited sites. No implementation/test/Docker/credential/live-state action; awaiting lead re-pin and transport ruling.
|
||||
2026-10-24 — Poe, row 208 / 193d (#1706), before: building Console shared list,
|
||||
share controls and per-grant viewer read-only against approved design e2d161e2e.
|
||||
Base ec86f2c84. Isolated tests and UI-guard mutants pending Sage CLEAR; no live action.
|
||||
|
||||
2026-10-24 | Bentina | Row157 / #1652 first slot STOP (sage-3910) | New config/helper31/31 and proxy11/11 green. test-config exit1:55 pass/1 old output regression; new install20/20 green. Validator added absent install key to JSON. Stopped before Docker/install suite; slot returned Sage bentina-0004. sage-3916 authorizes preserving absent output shape/defaulting env to local: fixed own loader/new test only, no rerun before next CLEAR. test-config diff +4/-0. No commit/push; seat BUILD and01/02/03 logs.
|
||||
2026-10-24 — Poe, row 208 / 193d (#1706), after: Console shared list, share/unshare
|
||||
controls and live per-grant viewer UI implemented. Webui 418/418 and plugins
|
||||
119/119 green under sage-3925 CLEAR; four UI guard mutants killed with viewer
|
||||
bus bypass refusals. Prior old-test draft regression fixed under sage-3918;
|
||||
missing root oauth4webapi corrected by pinned npm ci under sage-3924. Evidence:
|
||||
agents/poe/work/queue-208/BUILD.md. Independent reviews and Sage's global gate
|
||||
remain; no live state, schema or bus policy change.
|
||||
|
||||
2026-10-24 | Bentina | Row157 / #1652 after (sage-3919, sage-3923) | Absent install JSON shape preserved; helper defaults local. Existing config56/56, helper/config31/31, final proxy12/12, final test-install exit0 with three release0.0.12 rootless builds/pins, internal TLS/deny/DNS checks and real Vikunja publicGET200/notifier REST dummyGET401 through services proxy. Upstream-reset correction verified. Slot returned bentina-0007; no broader suites by Sage direction. Boyd then Darkwing review, Mos provider-host measurement and Sage landing gate pending. Evidence in seat BUILD and04-08 logs; only bentina/row157 candidate push authorized.
|
||||
2026-10-24 | Goldie | Row265 / #1770 before, recorded during authorized verification | C2-09b has no project room verbs. On goldie/row265 at ec86f2c84, add only room.open/send/read, pure exported leading-tag parser, README verb rows and new bus tests. Sage-3921 fixes EOF-tag and message-only timestamp readings; tester list/helpers/schema stay unchanged. Claim rev3814; Sage-3932 CLEAR for serialized new files, whole bus and twelve refusal mutants. No old-test edits authorized; stop rules apply.
|
||||
|
||||
2026-10-24 | Bentina | Row157 / #1652 round2 before (boyd-0023, sage-3933) | Read reproduced B1 half-open refusal socket retention and B2 same-PID exec inherited cache bypass. Added two new regression files; no existing assertion edits. Proxy drains then destroys refused sockets with1s fallback; helper clears inherited cache/export attributes at source. No tests before CLEAR; Goldie holds slot. Source/causes recorded in seat BUILD.
|
||||
2026-10-24 | Goldie | Row265 / #1770 first slot STOP (sage-3932) | New parser14/14, rooms18/18 green; serialized bus stops at old project-runtime.test.mjs:14 import-closure pin, partial619 ok/1 not ok. New pure address.mjs import is absent from expected imports. Static trace also needs address.mjs in seat RUNNER_FILES. No old-test/product correction, no mutant/restored run, no green commit/push; old-pin and out-of-owned-files mount change sent to Sage for ruling. Audit prose missed the direct source pin despite raw grep hit; correction recorded in BUILD.md.
|
||||
|
||||
2026-10-24 | Bentina | Row157 / #1652 round2 after (sage-3936) | B1 refused sockets now drain/destroy with1s bound; B2 source clears inherited cache/export attributes. Archived a14+new regressions red as intended (5controls pass/7defects fail), fixed12/12, helper/config33/33, egress22/22, rootless install exit0 incl image pins/network/services dummyGET. Logs09-13 in seat work. No existing test/assertion edit for round2. Slot returned bentina-0014; followup own-branch commit/manifest for Boyd re-review; Mos and Sage landing gates pending.
|
||||
2026-10-24 | Goldie | Row265 / #1770 verified (mos-1567, sage-3942) | Approved correction adds solely address import pin + Row265 comment to project-runtime.test and one pure-source RUNNER_FILES mount; new block checks parser has no imports. Serialized fresh-short-TMP timeout-k10: unchanged sandbox10/10, parser15/15, rooms18/18, full bus957/957, twelve named refusal mutants killed (each Node1, driver0), restored parser15/15 + rooms18/18. All positives zero fail/skip/cancel; every mutation restored full broker SHA71b32ee4. Old first-red evidence retained, no other old-test change. Slot returned goldie-0034; Boyd packet explicitly includes mount-list review, candidate push next.
|
||||
2026-10-24T07:18:53Z | Sage | Row 327 (#1825, Bradford, Poe and Dewey) LANDED 68c08b4e7. Before: refactor at 94d9e90a6; the push guard was a scratch script with no reviewed-binary check. After: scripts/push-check.sh and scripts/test-push-check.sh on refactor, 3 commits cherry-picked onto 6a5e12511 with blobs equal to the round 3 tip d858c9f8b, plus doc commits 76f84465f and 68c08b4e7. Binaries are found by numstat or a NUL in the first 8000 committed bytes, regardless of attributes; each needs its sha256 and path in an approved latest-round candidate; an unconfirmed queue tail exits 2. Reviews: Poe c31525 rev 3882, Dewey c31526 rev 3883. Gate: 1st run 06:57Z RED, not the candidate: canonical node_modules was empty from 05:45:15Z (sage-4023). Rerun with its own root npm ci GREEN 07:15:49Z: 17 package suites 0 failures (cli 986, plugins 119, webui 418), 11 scripts exit 0, push-check 6 mutants KILLED; skips are the queue canonical-root check and the row 244 live provider cases. The landed push-check.sh passed its own push (NO_BINARY, NO_ATTRIBUTION, PUSH_READY). mos-1575: gates install their own node_modules; canonical restored with npm ci (128 packages).
|
||||
|
||||
## 2026-10-23 — Lena, row 296 / #1802 FED R7 start
|
||||
|
||||
Before: R4 and R6 landed in base 45dca69f6; no scratch two-instance acceptance script.
|
||||
Plan: preserve Quackerjack handoff c6ab9bdc9, add isolated script/CLI test harness with real
|
||||
Console proof in transient user services, map assertions and two mutants for Filbert.
|
||||
Untested: all Node/tests and shared gate wait for Sage CLEAR; no production or live state changes.
|
||||
|
||||
## 2026-10-24 — Lena, row 296 / #1802 scoped acceptance verified
|
||||
|
||||
After: lena/row296-r2 rebased onto e0c6142f3 with both append logs preserved and row source
|
||||
unchanged. Own root/webui npm ci (128/2 packages), canonical dependencies untouched. Sage-4035
|
||||
slot: plain acceptance 1/1, killed-driver cleanup expected exit1 with cleanup verified, M1/M2
|
||||
both killed by named assertions with product hashes restored, whole new file intentionally
|
||||
skips outside its script. No unexpected first-run red, no old test change, no full/shared gate
|
||||
claim. Receipts and limitations in agents/lena/work/queue-296/BUILD.md and run-r2/.
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 takeover, before implementation | Clean base 45dca69f6 on beakley/row217. Recovering Launchpad handoff for citation guard, live settings, page store and runner retry. Acceptance is C2-06/design 5.2 plus sage-3595/3599/3602. Tracking agents/beakley/work/queue-217/BUILD.md; no product changes or Node/tests; Sage CLEAR required.
|
||||
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 untested draft checkpoint | Continued Launchpad e25ef0373; added runner retry/text/note implementation, pure protocol constants and sage-3640 approved single read-only mount, CLI documentation and new acceptance test files. Static checks caught missing projects compatibility, async request mutation and Git pathspec matching; bounded fixes and regression tests authored. git diff --check clean. No Node/test/mutant executed; Sage holds CLEAR. 283/216/285 dependency checks and all acceptance execution remain open. Packet agents/beakley/work/queue-217/MANIFEST.md.
|
||||
|
||||
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-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.
|
||||
2026-10-24T11:15:29Z | Sage | Rows 296 (#1802, Lena, Filbert) and 217 (#1718, Beakley, Webby) LANDED d0a6a87cd. Before: refactor at e0c6142f3 (local 98235fdb3). After: 296's 5 commits (range-diff 5 =, blobs equal b43156fd9 on 28 paths) and 217's 9 commits (5 = and 4 !, the ! are BUILD-LOG/SESSIONS append conflicts kept both sides; blobs equal 96659ccf4 on 79 paths) on 98235fdb3, with doc commits b19ffa04f and 98235fdb3. Reviews: Filbert c31547 rev 3896, Webby c31549 rev 3901. Gate: 1st run 10:57:16Z RED on one rule only, the gate's "cli skipped 0": 296's FED R7 test skips in the cli suite by design and runs only through scripts/test-federation-acceptance.sh, which passed 1/1 in the same run. Mos ruled that a RED gate doesn't land (mos-1583). The gate now allows a cli skip only from an explicit list (test file, test name, runner script) whose runner ran in the same gate with rc 0, at least 1 pass, 0 skipped and the named test passed; any unlisted skip stays RED; checked against a wrong-file and a runner-skip control, both RED. Rerun GREEN 11:14:53Z with its own npm ci: 17 package suites 0 failures (cli 989/988 pass, the allowed FED R7 skip; plugins 119; webui 418), every scripts/test-*.sh rc 0, federation-acceptance cleanup line present; skips otherwise are the queue canonical-root check and the row 244 live provider cases. push-check SECRETS_CLEAN, NO_ATTRIBUTION, PUSH_READY. #1802 closed c31557, #1718 closed c31559, Vikunja 533 comment 1054 (design task, left open for Q29). Row 286's approved manifest shares broker.mjs, runtime.mjs and library/src/index.mjs with 217, so 286 needs a rebase round before its gate. Brief template gains the skip-list rule.
|
||||
2026-10-24T10:02Z | Magica | Row 285 / #1790 r3 before/after (sage-4039, mos-1542) | Before: assigned magica/row285-r3 at b19ffa04f, Scrooge r2 untested at 53db6b7ca. After: seven commits cherry-picked through 644bcaa16; five named overlaps auto-merge preserving newer base changes. Range-diff six '=', one context-only '!'; six patch IDs identical, fixture patch ID differs with upstream import context, exact test added/removed-line comparison identical for all changed tests. business.mjs equals base; Scrooge BUILD equals r2. CREATIVE_KINDS absent in packages/roles/scripts; no 64-hex changed-path pin; 291 conservative reader candidates recorded. No npm or tests before Sage CLEAR; N1 remains follow-up. Own-branch evidence push next, not accepted/green or landed.
|
||||
|
||||
2026-10-24T09:58:36Z | Magica | Row 285 timestamp correction | The preceding Magica entry marked 10:02Z used an incorrect timestamp; replay/evidence commit 87b7547f8 occurred before the measured 09:58:22Z push start. Technical evidence is unchanged.
|
||||
|
||||
2026-10-24T10:32:02Z | Magica | Row285 / #1790 gate STOP (sage-4048) | Before: pushed66a800e15, no tests. After: own root/webui npm ci, short scratch TMPDIR, whole files serial timeout-k10; bus958/958 green (108 files), business partial80pass/4fail, first red old row323 case1-business-file tests57/86/95/105 because committed Case1 chief lacks required gitea ref. No more tests/mutants or source edits. Static diagnosis also finds old empty-credential assertions81/112/114, requiring a specific owner ruling. Sage notified magica-0002. No in-review move or green claim.
|
||||
|
||||
2026-10-24T10:42:28Z | Magica | Row285 / #1790 Amendment1 before/after | Before: unconditional chief gitea broke row323. After: chief-only library conditional plus named required-reference refusal, checkCredentialMap unchanged; new three-case test file; own helper/resolve fixture hunks restored to base, own chief/business/identity hunks reconciled under sage-4060. Case1 doc/test byte-identical. M10 planned against new no-library positive and old Case1 doc test. No tests run under held slot; not green/accepted. Residual base library fixture references need authority alignment before re-CLEAR.
|
||||
|
||||
2026-10-24T10:59:43Z | Magica | Row285 / #1790 B1 before/after | Before: Amendment1 candidatebabae6adc with missing refs in base library/creative fixtures. After: 26 data-only credential insertions across13 direct-reader files; original callback lines preserved, one expressly allowed credentials?.vikunja setup guard. Every other byte reconstructs prior candidate exactly; no base assertion edits. Base and candidate put role set is pm,cto,coder,reviewer; chief lacks vikunja. Literal e0c6142f3 word diffs and known preexisting r2 hunks recorded. No tests, green claim or queue move; next whole gate +M10 waits for Sage CLEAR.
|
||||
|
||||
2026-10-24T11:24:17Z | Magica | Row285 / #1790 r4 before/after | Before: r3 eee8ad776 on b19ffa04f, gate unverified after amendments. After: new r4 from landed296+217 base d0a6a87cd, twelve commits replayed; only append logs conflicted, complete base prefixes preserved. Product/test patch lines identical across assigned bases; tests byte-equal r3; replyLimits and broker citation work retained. Regenerated range-diff and e0c6142f3 base word/line diffs. No npm/tests or queue moves; own-branch push explicitly authorized by sage-4078.
|
||||
|
||||
2026-10-24T12:09:17Z | Magica | Row285 / #1790 r4 C1 diagnostic result | Before: valid landed-base candidate0f6cdc861; first old citation-runtime red. After: mos-1584/sage-4086 full unchanged collection, six suites2950 tests2937pass/12fail/1skip/0cancel; WebUI418 and plugins119 green, all12 script suites exit0, dedicated federation1/1. CLI release300s runner cap interrupted; retained and resolved via unchanged1800s retry224/224 in599.6s. Failures: citation-runtime1, instance-settings2, lifecycle-settings1, launcher1, harnesscreative7. Static root causes/fix classes and r3 parity in agents/magica/work/queue-285/BUILD.md. No source/test edits or fix round/mutants; no final manifest or in-review; owner ruling required.
|
||||
|
||||
2026-10-24T13:02:03Z | Magica | Row285 / #1790 r4 VERIFIED | Before: C1 collection12 failures. After: approved three data corrections, actual-bound-ref guard, duplicate-before-eligibility hire, data-derived creative equal-service retention/listing with validator first; no old assertion edits. Own fresh128/2 installs, editor-required shortTMP serialized final gate: bus975/975 business282/282 cli988pass/1expectedskip webui418/418 harness172/172 plugins119/119, all12 scripts exit0.13 mutations14 independent checks killed; each SHA256/Git blob restored; restored controls136/136. Case1 doc/test/helper base-identical; N1 deferred. Own r4 candidate for Poe/Webby review, no landing/live action.
|
||||
|
||||
2026-10-24T13:33:42Z | Sage | Row 285 (#1790, C2-08b, Magica on Codex, Poe and Webby) LANDED 1f3d0350f. Before: refactor at 25874bc86. After: r4 candidate 2e4503dc7's 14 commits cherry-picked onto 25874bc86. The one conflict (9f7adb03e, BUILD-LOG.md and SESSIONS.md) is append-only and kept both sides, with 0 lines removed against either parent. Apart from the logs, the tree equals the candidate except on the 7 paths 25874bc86 and 4c6190645 had changed. Reviews: Poe first review c31568 rev 3919, Webby landing review c31569 rev 3920, both static. Sage posted both because neither seat has a token. Gate GREEN 13:28:46Z with its own root and webui npm ci (mos-1575): 17 package suites, 4236 tests, 0 fail, 1 skip, which is the allowed FED R7 entry whose runner passed 1/1 (mos-1583). All 12 scripts/test-*.sh rc 0. The other skips are the queue canonical-root check and the row 244 live provider cases. Brief gate: no CREATIVE_KINDS in packages, roles or scripts; no test or script pins the old or new sha256 or blob of a changed role file (positive control found chief-of-staff.json readers); role JSONs match mos-1309 item 5 design 4, with gitea scopes added (read for the chief, read:user and write:repository for the creative roles). Before the push, the in-review overlap sweep found only row 286 (broker.mjs), which rebases as r5. push-check FF_OK, NO_BINARY, SECRETS_CLEAN, NO_ATTRIBUTION. #1790 closed with c31580, Vikunja 546 c1056 (already done). Queue note rev 3921, done rev 3922. Correction to my own rulings: sage-2921 (285's #giteaRole refuses the chief) and sage-2947 (286's T7/T9 mint the chief's grant through the real raise, no SQL staging) conflict now that 285 has landed (rockerduck-0008). sage-4100 keeps the refusal and has T7/T9 seed a read-only chief grant as labeled fixture data, with an assertion that the real path refuses and with revoke and fire still on the real verbs. The tradeoff is that the chief mint goes untested until C2-21 (row 287), whose brief now replaces the seeds. Dewey confirms in 286's round-2 delta. Brief template gains the mos-1584 businessDoc library chief-ref line. The C2-02 brief gains webby-0282 N1 (tool names match the creative contracts). Follow-up webby-0282 N3: business.mjs uses the literal "chief-of-staff" instead of STAFF_TO. The live stack is not re-pinned.
|
||||
- 2026-10-24 (rockerduck, row 286 / #1791, r3 before gate): transplanted Ludwig 45dca69f6..573fa0be0 onto b19ffa04f, preserved newer exports in sole index.mjs conflict; plain-text range-diff, patch IDs and reader/pin drift inventory in agents/rockerduck/work/queue-286/BUILD.md. UNTESTED by sage-4040: no setup or tests until CLEAR.
|
||||
|
||||
- 2026-10-24 (rockerduck, row 286 / #1791, r3 after sage-4054 CLEAR): own-worktree installs; library 140/140 and bus 963/963; M1 forced-refspec and M2 missing-inode-compare killed at semantic assertions, restored before final suites; all gate-output fixture searches zero. Four first-run reds only in new credential test; setup corrections and intermediate findings recorded in agents/rockerduck/work/queue-286/BUILD.md. No old test edited during gate; shell/CLI suites remain Sage landing gate.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791, r4 before gate, sage-4079): all 15 r3 commits transplanted to d0a6a87cd on new rockerduck/row286-r4. Three product overlaps auto-merged with row217 preserved; two append-log conflicts retain both histories. Range-diff and adjacent hunk evidence in agents/rockerduck/work/queue-286/BUILD.md. UNTESTED r4: Git-only until own-branch push, library/bus rerun waits for CLEAR after row285.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791, r5 before gate, sage-4097/4100): transplanted r4 onto 1f3d0350f; kept row285 library.write routing and chief write-grant refusal plus both append-log histories. Chief fixture refs added; T7/T9 mint setup now pins real refusal then seeds read-only fixture as explicitly ruled, keeping real revoke/fire assertions. Scratch role declaration mutation removed; range-diff/drift evidence recorded. No r5 tests yet; CLEAR starts after own-branch push.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791 r5 gate, sage-4097/4100): own-worktree installs; touched credential6/6 and sync24/24; whole library151/151 and bus981/981, zero fail/skip/cancel. P1 forced refspec, P2 missing inode compare and B285-M1 chief write-grant guard each killed on ERR_ASSERTION with green before/after controls and exact restoration hashes. All gate-output fixture searches zero. No normal red; source unchanged after pre-gate push045eec61a. Plain text evidence in agents/rockerduck/work/queue-286/BUILD.md and gate-r5; round2 candidate push follows.
|
||||
|
||||
- 2026-10-24 (rockerduck, row286 / #1791 r6, sage-4112 / #1825): corrected only two fixture constants to unique19-character values after the landing secrets check refused r5. No waiver/guard/assertion/product change. Added-package-lines secrets grep empty; touched6/6+24/24, library151/151, bus981/981 on fresh shortTMP timeout-k10; both exact new values absent from all four outputs. Mutants not rerun as directed. Plain evidence in agents/rockerduck/work/queue-286/BUILD.md and gate-r6; new manifest/push and round3 follow.
|
||||
|
||||
2026-10-24T14:37:02Z | Sage | Row 286 (#1791, C2-03b, Rockerduck on Codex, Boyd and Dewey) LANDED 5d7801dc1. Before: refactor at d55944edb. After: r6 candidate 75f6d56b1's 19 commits cherry-picked onto d55944edb. The one conflict (64f1ff950, BUILD-LOG.md and SESSIONS.md) is append-only and kept both sides, with 0 lines removed against either parent. Apart from the logs, the tree equals the candidate except on the 6 paths of my doc commit d55944edb. Reviews: round 2 (r5 ec8cb10c0) Boyd c31584 rev 3928, Dewey c31585 rev 3929; round 3 (r6) Boyd c31587 rev 3942, Dewey c31588 rev 3943. Sage posted the requests (c31583, c31586) because Rockerduck has no token. Gate GREEN on r5's tree e9c73ab96 at 14:14:11Z, then the push stopped at push-check STOP secrets. The guard came in today with #1825. Two added fixture constants (SLOT_TOKEN in library-credential.test.mjs, SEAT_TOKEN in sync.test.mjs) were 31 characters and matched its token-assignment pattern. sage-4112: no waiver (mos-1570) and no guard edit; r6 shortened only those two values to 19 characters, with reviewers confirming the delta. Gate GREEN again on 5d7801dc1 at 14:36:42Z with its own npm ci: 17 package suites, 4251 tests, 0 fail, 1 skip, which is the allowed FED R7 entry whose runner passed 1/1. All 12 scripts/test-*.sh rc 0. Neither old nor new fixture values appear in any of the 29 run outputs. Mutants: Rockerduck killed P1, P2 and B285-M1 (gitea-grant X-G1). For Dewey's N1 I also ran B285-M1 against library-credential.test.mjs; T7 and T9 failed (4/6) and passed after the restore. sage-4100 (chief grant seeded as fixture until C2-21) is recorded in the 285 entry. Overlap sweep found no in-review row on the 9 code paths. push-check FF_OK, NO_BINARY, SECRETS_CLEAN, NO_ATTRIBUTION. #1791 closed with c31591. No P19 task names row 286, so there is no Vikunja task to close. Brief template gains a sage-4112 line: test credentials stay under 24 characters. The live stack is not re-pinned.
|
||||
|
||||
2026-10-24T14:55:11Z | Sage | Row 290 (#1795, C2-12b, the setup sheet rewrite, Louie on Codex, Webby) LANDED 3d7dff345. Before: refactor at 18334d713. After: Louie's r2 candidate 22510988d (four doc commits on 963303403) cherry-picked onto 18334d713. The commits match by patch-id and range-diff, and docs/case2/SETUP-SHEET.md is blob 37b451c6, the text Webby approved in rounds 2-3 (42b75e484) and again on the rebase (round 4, webby/reviews 0006f03f4). Sage posted the request (c31595, revs 3952-3953) because Louie has no token; Webby's verdict is c31596, recorded at rev 3954. Gate from the brief, doc only: a grep of packages/*/tests, scripts/test-*.sh and tests/ for SETUP-SHEET finds nothing, and a positive-control grep does find matches. Louie checked that the sheet's two setting names match broker.mjs:5341. No suite ran: no test reads the file (decision 137), so the mos-1455 all-suites gate, which covers code rows, doesn't apply, and Fethry's slot for row 225 stays untouched. push-check FF_OK, SECRETS_CLEAN, NO_ATTRIBUTION. #1795 closed with c31597. No P19 task names row 290. The live stack is not re-pinned.
|
||||
2026-10-23 | Fethry | Row 225 C2-10b (#1726), handoff recovery. Before: Morgana's untested candidate 9a131e956 replaces renderItems with renderReply and adds Console citation/notice/status rendering and status/revert routes. Continuing that exact history on fethry/row225; preserving A1-A5 and the accepted file deviations. Remaining: confirm limits contract, review/test candidate under Sage CLEAR, obtain Mos OK through Sage for inherited old-test changes, manifest and Dewey review. No Node/tests run in this session and no green claim.
|
||||
|
||||
2026-10-23 | Fethry | Row 225 T1 lane A (sage-3641/3647). Before: nested replyLimits fallback/problem omitted, wrong-project revert receipt accepted, invalid library mapping hidden. After RED: these three local behaviors corrected; three assertions in the new handoff test files corrected against existing route/mapping/Boolean behavior, each explained in BUILD.md. Whole-file GREEN: renderer 9/0, routes 13/0, browser 9/0; full library 81/0, channel-proof 2/0. Approved old-test numstats remain 80/66 and 3/1. Full webui/build and full integration gate have not run. Isolated mutants next within the authorized 19:38Z hard stop; no completion claim.
|
||||
|
||||
2026-10-23 | Fethry | Row 225 T1 expanded evidence complete (sage-3647). Full library81/0 and channel-proof2/0; final targeted renderer9/0, routes13/0, browser9/0. Isolated kit14/14 assertion kills on507901277, every target restored/hash-checked, candidate hashes unchanged. First attempt stopped at a wait-based failure, recorded as not killed; corrected the new test's repaint wait, baseline9/0, and reran the whole kit. No processes left; lane A returned around19:29Z. Source manifest for Dewey prepared; full webui/build and Sage's integration/scripts gate still pending. Raw logs preserved in scratch, normalized display copies and raw SHA256 provenance in agent evidence.
|
||||
|
||||
2026-10-23 | Fethry | Row225 review follow-up (dewey-0937/0939, sage-3669). Before: a notice-shaped checked agent body could misrepresent another agent's real commit/path, and a403 owner-only lacking sent looked uncertain. Regression browser cases and two isolated mutants authored first; corrected own BUILD.md's forgery explanation and stated Sage's accepted pre217 no-check residual. No production change or Node/test run yet. Existing renderer tests, including the unchecked notice case, stay exactly at Mos1510's80/66; channel-proof stays3/1. RED/GREEN and full webui wait for explicit T3 CLEAR after217; no broker marker or row288 change.
|
||||
|
||||
2026-10-24 | Fethry | Row225 round2 resumed under sage4119/4120. Before: reviewed source94128f73f had blocking checked-message notice forgery and a misleading owner-only refusal; prepared tests7590cf633 awaited the slot. Rebased onto963303403 on new fethry/row225-r2 preserving sharing/chatGrants, upstream exports and both log histories; approved test deltas remain80/66 and3/1 with the combined bus pin. Queue start rev3946; local root/webui npm ci, no canonical dependency links. New browser RED8/3 then GREEN11/0 after only B1/N1 fixes. Editor build unchanged; whole webui442/0 and library149/0 (no skip/cancel); bus gate in progress. No old-test edit or second RED; full results and isolated-mutant evidence follow.
|
||||
|
||||
2026-10-24 | Fethry | Row225 round2 worktree gate and review correction complete on sourcec010dfd85 over963303403. B1/N1 RED8/3→GREEN11/0. Local editor build unchanged; webui442/0, library149/0, bus981/0, whole channel-proof2/0, all zero skips/cancels. Isolated16 unique clean assertion kills (14 originals+B1+N1); one M3 missing-file attempt timed out during a status after-hook, was not counted, was reported to Sage before any change, and passed unchanged retry with the remaining9.17 attempts total, timeout retained. Per-mutant restored hashes and final13 pins verified; scratch Node/Chromium sweep zero, no signals. New fethry/row225-r2 preserves original published branch, approved old tests80/66 and3/1, all landed sharing/exports/log histories. MANIFEST.r2.md and manifest.r2.sha256 to Dewey; source review/lead integration remain separate, no live action.
|
||||
- 2026-10-24 — steelbeak — #1792 / row 287 C2-21 before: library grants still fork; creative and chief grants refuse. Recovered Megavolt's binding design on 18334d713 and documented current-code delta in agents/steelbeak/work/queue-287/BUILD.md. No tests or implementation yet; Sage holds test clearance, scope delta reported in steelbeak-0001.
|
||||
|
||||
- 2026-10-24 — steelbeak — #1792 / row 287 C2-21 after: library grants use admin collaborator PUT, creative write/chief read levels, definition scopes, exact publish-wide reach and kind/level binding; business fence and chief install identity/publish updated; T7/T9 seeds replaced by real minting. Scratch Gitea F-A/F-B pass, F-C owner control negative recorded, F-D normal/force control positive. Verified bus 998, business 283, CLI 989 plus dedicated FED 1 (one expected CLI skip), Docker 2, install 27, all 12 shell gates, M1-M11 killed and restored; token audit hits0 and owned-process/container cleanup clean. Test fixture corrections approved under mos-1590/sage-4139; non-executable land-work launcher rc126 resolved by sage-4141 bash invocation. Evidence and manifest at agents/steelbeak/work/queue-287/; handing off to Boyd, then Dewey, with no live change or landing.
|
||||
|
||||
- 2026-10-24 — steelbeak — #1792 / row 287 first-review correction, boyd-0034: frozen candidate c2338ed58 approved, no blocking code findings. Product/test diff-check is clean; the full committed diff has trailing whitespace in preserved raw RED/mutant logs, correcting the earlier unqualified claim. Added verified old-test numstats in BUILD.md as a separate doc-only follow-up under lead137. Queue round1 opened at rev3963; automatic request failed at rev3964 for missing Steelbeak credential, reported to Sage without workaround. No product edits, tests or slot use.
|
||||
|
||||
2026-10-24T15:55:22Z | Sage | Row 225 (#1726, C2-10b, Fethry on Codex, Dewey) LANDED 9b6345466. Before: refactor at c63801959. After: Fethry's r2 candidate c1f9dfd3c (11 commits on 963303403) cherry-picked onto c63801959. 8 commits are equal by range-diff; the other 3 differ only in the append-only log hunks, kept both sides with 0 lines removed against either parent. All 13 manifest paths match manifest.r2.sha256 (517af41b). Dewey APPROVE c31599 rev 3960; request c31600 revs 3961-3962, posted by Sage because Fethry has no token. Sage gate GREEN 15:54:58Z with its own npm ci and MOSAIC_REQUIRE_EDITOR_BUILD=1: every package suite except queue 0 fail (webui 442, library 149, bus 981, cli 988 plus the allow-listed FED R7 skip, whose runner passed 1/1), all 12 scripts rc 0. The excluded M3 timeout attempt was not counted; the unchanged retry killed cleanly. Dewey N1-N3 non-blocking: the Discord relay must pass check once it calls renderReply; the M3 hang was in the new status test's after-hook teardown; the pre-217 residual stands under sage-3669. #1726 closed c31604. Not re-pinned.
|
||||
|
||||
2026-10-24T16:12:35Z | Sage | Row 287 (#1792, C2-21, Steelbeak on Codex, Boyd and Dewey) LANDED 0e935776e. Before: refactor at 9b6345466. After: Steelbeak's c2338ed58 and doc follow-up a5370b198 cherry-picked onto 9b6345466. One commit equal by range-diff, the other differs only in log hunks, kept both sides. 56 manifest paths match 3683b40a. Boyd APPROVE c31602 rev 3967, Dewey APPROVE c31603 rev 3968; request c31601 revs 3965-3966 posted by Sage. Sage gate GREEN 16:11:38Z: bus 998 (Gitea Docker F-A/F-B and X-G3, minted 4, hits 0), business 283, webui 442, cli 989 plus the allowed FED R7 skip, every other suite 0 fail, all 12 scripts rc 0; fixture credential values in 0 of 29 run files with a positive control. Rulings applied: sage-4125 (library grants mint declared scopes, chief read), mos-1590 (new-test fixture fixes are the lead's call when no production code or old test changes and every fail-closed refusal keeps its own test), sage-4139 (fixture fixes) and sage-4141 (test-land-work.sh is mode 100644, run via bash). Follow-up: F-C negative, a protected Story/** rule refuses the owner too; binds the first row that needs owner pushes to a protected branch. Dewey N1-N3 non-blocking: the block's last line "can write every repository this user can write" contradicts the chief's read grant; a collaborator entry outlives a failed step 5, which still fails closed; #publishFacts would accept a library project, unreachable today. Closes Dewey's 286 r2 N2 (T7/T9 real mint). #1792 closed c31606. Not re-pinned.
|
||||
|
||||
2026-10-24 | Fethry | Row266 C2-10c start (#1771), sage4154/4156. Before: Console seam/plugin only expose thread verbs; room.read omits check/last needed by225. New isolated worktree on487500a16, amended pin85e6fe2ecfc5. Plan: three fixed room calls, strict room HTTP, merged room UI and leading-@ completion, shared broker check hydration/last only under amendment1. No old tests or out-of-scope production edits; local installs/no canonical links; RED-first and serialized full webui/plugins/bus/scripts plus mutants under CLEAR. Detailed design/acceptance in agent BUILD.md.
|
||||
|
||||
2026-10-24 | Fethry | Row266 implementation verified before candidate commit. Six owned production paths plus four new tests, no old tests edited. RED history and fixture corrections recorded before action. Editor build, webui458/0, plugins120/0, bus1000/0 and all12 scripts exit0. Initial bus999/1 hit old T9 50ms timer race; sage4158 authorized three unchanged credential-file6/0 reruns and whole bus1000/0 rerun, all green. Raw/normalized TAP provenance retained. Candidate/mutants/review next; no landing claim.
|
||||
|
||||
2026-10-24 | Fethry | Row266 final verification: candidate3095d6ea5, manifest5f816042 (10 package paths, no old-test edit). All16 isolated mutants killed by assertions with restored hashes and unchanged candidate. Initial M01 uncaught plugin refusal excluded, strengthened only new doesNotReject assertion and full plugins120/0 rerun. Final cwd node/Chromium sweep empty, killpg cleanup recorded. Full webui458/0, plugins120/0, bus1000/0, all12 scripts0; earlier T9 race plus four unchanged green reruns retained. Push/review packet next; Sage gate and two reviews remain.
|
||||
|
||||
2026-10-24 | Fethry | Row328 (#1826/Vikunja622, mos-1594, sage4190) prepared UNTESTED on fethry/row328 from2ce476d54. Before: second T9 start keeps50ms periodic timer, causing old bus999/1 race in266. After: only T9 helper accepts interval default50 and second start uses2147483647 TIMEOUT_MAX; assertions/product unchanged, approved test +4/-3. Stress runner prepared for50 M1-50, optional50 M1-1,50 fixed, whole file; per-run TMPDIR/TAP/load, hash restoration and killpg cleanup. No tests before Sage CLEAR; explicit untested push requested.
|
||||
|
||||
2026-10-24 | Fethry | Row328 sage4205 stress stopped at required no-reproduction boundary. M1-50 passed50/50; fallbackM1-1 passed50/50, zero library-sync-busy assertions, no skips/cancels. Fixed50 and whole-file NOT RUN. Absolute19 initial priority then host drift recorded. All100 fresh shell gXXX TMPDIRs29bytes; both mutants restore exact test hash and empty diff/stat+porcelain. No test/assertion/product changes. Receipts/nice/load/plain-text BUILD pushed; slot returned fethry0043. Await Sage/Mos ruling; no in-review/acceptance claim.
|
||||
|
||||
2026-10-24 | Fethry | Row328 sage4214/Mos1599 option A GREEN on06c57a7db:8x50 M1-50 produced374 passes/26 expected library-sync-busy assertion failures, exact restore/full diff+porcelain clean, same8x50 fixed400/400, whole library-credential6/6, no skips/cancels or unexpected errors/reruns. Node nice16/19 observed after absolute19; loads and801 receipts retained. Old test staysapproved+4/-3, assertions/product unchanged. Own process sweep empty. Evidence push/slot return and owner review move next; Boyd/Dewey then Sage full bus/scripts gate pending.
|
||||
|
||||
2026-10-24T19:44:50Z | Sage | Row 257 (#1762, Q198 S1 pressure parser and rules evaluator, Morgana, Filbert) LANDED 73692e1bb, pushed 17:41:58Z 10-24. Before: refactor at 487500a16. After: Morgana's four commits cherry-picked onto 487500a16 with unchanged patches; the 9 packages/supervisor paths match Filbert's round 2 manifest b176a88f. Filbert r1 c30188 (N1/N2 fixed in r2), r2 APPROVE c30190 rev 3037, request c30189 posted by Sage. Slot result on 1261fa2d8: three files whole 15/0, 29/0, 1/0, supervisor 45/0, M1-M8 killed by assertion. Sage gate: first run RED 17:20:42Z, webui 441/1 on the old row278 sign-out test (timeout at load about 8.5, the row touches no webui path); the webui-only rerun 442/0 was not counted; the full rerun was GREEN 17:41:11Z: bus 998/0, business 283/0, webui 442/0, supervisor 45/0, cli 989 plus the allowed FED R7 skip, all 12 scripts rc 0. Correction: the row278 timing red is an old test, so any change to it goes to Mos (mos-1272). Follow-up: Morgana's carry (sage-3003, CLEAR_HELD entry and a clear-path hold test) binds the row that wires a Q198 hold into a launch refusal. Not re-pinned.
|
||||
|
||||
2026-10-24T19:44:50Z | Sage | Row 266 (#1771, C2-10c Console room view, Fethry on Codex, Boyd and Dewey) LANDED 3e5041b43, pushed 18:00:49Z 10-24. Before: refactor at 73692e1bb. After: Fethry's four commits cherry-picked, every patch-id equal to the seat branch; tree is manifest 5f816042 with no other change. Boyd APPROVE c31609 rev 3983, Dewey APPROVE c31610 rev 3985 (N1-N3 non-blocking), request c31608 posted by Sage. Sage gate GREEN first run 18:00:08Z: bus 1000/0, business 283/0, webui 458/0, supervisor 45/0, cli 989 plus the allowed FED R7 skip, all 12 scripts rc 0. Dewey's N2, the old T9 library-sync-busy race, went to Mos and became row 328. Not re-pinned.
|
||||
|
||||
2026-10-24T19:44:50Z | Sage | Row 224 (#1725, C2-05b, Della on Codex, Dewey) LANDED 5e77cdd09, pushed 19:18Z 10-24. Before: refactor at 7fe32d722. After: Della's 13 commits cherry-picked onto 7fe32d722. Sage gate GREEN 19:16:37Z on 27624aa66 (base 06f507dbc): bus 1011/0, business 283/0, harness 176/0, cli 990/0 plus the allowed FED R7 skip, webui 458/0, all scripts rc 0. Drift between the gated base and 7fe32d722 is only docs/plans/2026-10-24_model-proxy-rows.md, which no test reads (mos-1601 condition); manifest-r9 952482b4 matches the landed tree. Dewey APPROVE c31619 rev 3999. #1725 closed c31623; note rev 4015, done rev 4016. Correction: the first done move passed --evidence and was refused (rc 2, the round closes on its recorded verdicts); rerun without it. Follow-up: Dewey's N3, the old ask helper can't serve a library business, goes to a later row. Not re-pinned.
|
||||
|
||||
2026-10-24T19:44:50Z | Sage | Row 328 (#1826, Vikunja 622, old T9 timer race, Fethry on Codex, Boyd and Dewey) LANDED 8bb5b3c73, pushed 19:40Z 10-24. Before: refactor at 5e77cdd09. After: Fethry's 8 commits cherry-picked onto 5e77cdd09 (same patches); T9's second start passes intervalMs 2147483647 (mos-1594), test-only. Under 8x50 concurrent loops M1 (50 ms back) gave 26 expected failures and the fix 400/400. Boyd APPROVE c31621 rev 4002, Dewey APPROVE c31622 rev 4003. Sage gate GREEN 19:38:54Z on 8bb5b3c73 itself, no drift: bus 1011/0, business 283/0, harness 176/0, cli 990/0 plus the allowed FED R7 skip, webui 458/0, every scripts/test-*.sh rc 0 (Dewey N1). Manifest 1e010468. #1826 closed c31625, Vikunja 622 done (comment 1071), note rev 4019, done rev 4020. Not re-pinned.
|
||||
|
||||
2026-10-24 — Magica row329 P1 (#1827, Vikunja237): beginning pinned model-proxy fetch/init/client/unit build at 7fe32d722, under mos-1600/1601. Acceptance uses only fresh temp roots and unshare -rn; live instance and host proxy excluded. Evidence agents/magica/work/queue-329/BUILD.md.
|
||||
|
||||
2026-10-24 — Magica row329 P1 (#1827): final builder checks green: model-proxy61/61, bus1018/1018, CLI999pass+1listed federation skip, pinned-copy10/10, config55/55 and federation runner1/1. Final unit-config fix verified by two new tests and all direct CLI readers. Original F7 red, Mos1604 diagnostic and Mos1605 unchanged rerun are preserved; cause unknown, landing independent. Q250 drops the panel forward; PIN8.0.42/panel1.26.7 unchanged. Evidence agents/magica/work/queue-329/BUILD.md.
|
||||
|
||||
2026-10-24 — Magica row329 round2 (#1827): Boyd B1 tightens management keys to printable non-space ASCII before init creates state; new whole-tree refusal cases first reproduced the defect. Header check retained, no old assertions edited. N1 outer Docker count correction, N3 stale-lock recovery and N4 34-code coverage docs included. Cleared dependency-reader gate running; two stand-in over-selections disclosed and removed from the plan per sage-4277, F7 cause unknown. Evidence agents/magica/work/queue-329/BUILD.md.
|
||||
|
||||
2026-10-24 — Magica row329 R2 (#1827): B1 ASCII-only management key fix verified with complete-tree refusals and positive auth control; package66/66,30bus readers261/261,49CLI readers726/726,config55/55, no required skip/failure. N1 corrects R1 bus total to1019; N3 stale-lock guidance and N4 34-code inventory corrected. Two over-selected file runs are recorded separately, with no F7 inference; cause unknown/Vikunja625. Old502 test/helper files byte-identical, slot returned to Sage. Evidence agents/magica/work/queue-329/BUILD.md.
|
||||
2026-10-24T23:37:46Z | Sage | Row 329 (#1827, P1 pinned model proxy, Magica) LANDED 61ebf2c34, pushed 23:31:27Z 10-24. Before: refactor at 669cdf42c. After: Magica's 4 commits (94cde633e, c65fb34ee, d1f6f2b19, 61ebf2c34) cherry-picked onto 669cdf42c, diff vs the gated tree limited to drift paths, range-diff in scratch. Gate: one unchanged full landing gate in /mnt/storage/scratch/sage-r329l/wt (gate.sh 8b4978887 c8a9bcf94), started 23:08:12Z at load 14.35, GATE GREEN 23:29:14Z at load 8.67, no rerun, no test or timeout edit (mos-1634). Host note: two Codex workers cleaned T3 worktrees from about 23:14Z (mos-1639, Vikunja 632). Approvals: Dewey r2 c31643 rev 4047, Boyd r2 c31642 rev 4048. #1827 comment 31650, closed. Vikunja 237 comment 1109 (stays open for P2-P7); C4 P10 red filed as Vikunja 631. Queue: note rev 4063, done rev 4064, committed b24d917ec. DEFERRED: N2 and R2-N1 bound to row 331, N1 bound to P7. Overlap: row 284 (packages/bus/src/broker.mjs) and row 157 (scripts/mosaic-config.mjs) rebase onto 61ebf2c34 before their gates.
|
||||
## 2026-10-24 — row332 P3 proxy harness configuration: investigation/test placement
|
||||
|
||||
Fethry at c8a9bcf94, per Sage sage-4292 and mos-1616 pi-route amendment. Before: every managed session receives instance-wide provider credentials; harnesses have no transient per-session proxy context; pi preflight checks only its binary. Intended after: proxy-mode isolation, Claude proxy env, pi private run-local route config using environment references only, credential preflight, and business proxy account settings. Design/test plan: agents/fethry/work/queue-332/BUILD.md. Initial tests placed before production changes. No tests run: Sage CLEAR is required and has not arrived. No success/acceptance claim, live change, or dependency landing. Existing proxy issue number requested from Sage; not yet received.
|
||||
|
||||
## 2026-10-24 — row332 crash stop, documentation-only checkpoint
|
||||
|
||||
Fethry stopped under Mos mos-1630/Jason's T3 crash instruction. No production implementation, tests, probes, mutants or acceptance runs occurred; Sage CLEAR never arrived. Explicit route metadata per sage-4293 is recorded in agents/fethry/work/queue-332/BUILD.md; full state and resumption boundaries are in HANDOFF.md there. Safe crash checkpoint commits documentation/historical plain-text import manifest only; four unrun tests and the import-audit script remain uncommitted. No long jobs restarted, protected branch changes, merges, live changes or further thread messages.
|
||||
|
||||
2026-10-24 — Fethry row332 P3 UNRUN implementation checkpoint: optional proxy route per sage-4325 (default Anthropic), transient preflight/bundle/spawn context and serialization split, pi private model file/provider credential requirement. Existing initial RED evidence precedes source changes; only specifically authorized old fixtures updated. GPT wire API value PENDING until separate offline CLEAR/evidence; P2 seam remains injected context, no real proxy/auth access. Not GREEN, not accepted or landed. Details agents/fethry/work/queue-332/BUILD.md.
|
||||
|
||||
2026-10-24 — Fethry row332 P3 checkpoint ef0939e35: required explicit route restored per sage-4293/4328; openai-responses chosen by Sage sage-4331 as reasoning-based tie-break, not evidence-decided (both offline shapes passed). Rehashed pinned8.0.42 single active-tool isolated GLM turn confirms thinking/tool_stream survive to stand-in;bundle7/7,proxy-harness5/5,no skips. Real Codex auth proof remains row209 phaseA step7. P2 landing/rebase,mutants,reviews and full gate still pending; no landing claim. Plain evidence/limitations in agents/fethry/work/queue-332/BUILD.md.
|
||||
2026-10-25T00:15:48Z | Sage | Row 284 (#1789, C2-05c library.get scope, Della) LANDED ce0b6ed41, pushed 00:09:52Z 10-25. Before: refactor at 9e2689dff (row 329 landing docs). After: fast-forward to Della's 7 rebased commits 78b932feb..ce0b6ed41; 8 paths, manifest-r4 de505cfd matches the landed tree. Gate: one unchanged full landing gate in /mnt/storage/scratch/sage-r284l/wt (the 329 gate.sh with D and the compose project renamed), started 23:51:19Z at load 1.62, GATE GREEN 00:09:04Z at load 5.20, no rerun, no test or timeout edit. Counts: bus 1020/0, business 283/0, cli 999 pass 1 allowed skip (FED R7), harness 177/0, library 156/0, seat 218/0, webui 458/0, every scripts/test-*.sh rc 0; queue 34 and task 87/93 skips are the standing ones. Della's whole-file runs on ce0b6ed41: library-lookups 12/0, library-tools 5/0, query 34/0. Approval: Webby round 2 delta c31654 rev 4070 (round 1 rev 4062). Overlap sweep: rows 13, 157, 309, gyro/row310 and fethry/row332-p1 clean. #1789 comment 31655, closed. No Vikunja task for the row. Queue: note rev 4071, done rev 4072, committed 7c8dc2033. DEFERRED: Webby N1 (whole-tree listing per get) bound to the next library read-path row; N2 needs nothing; N3 is this gate.
|
||||
2026-10-25T00:18:35Z | Sage | Follow-up tasks for mos-1647 item 3 (Q109): Vikunja 633 (P7 cutover, CLIProxyAPI 8.0.42 startup Grok-npm and antigravity version refreshes, from row 332 isolated runs) and 634 (row 284 Webby N1, library get lists the whole tree). DEFERRED gains the 633 entry and the 634 number for row 284 N1. Filing script and receipt in agents/sage/work/vikunja-setup/.
|
||||
2026-10-24T22:15:07Z | Herb | row 214 #1715 C2-11a focused evidence | Before: wikilinks are ordinary editor text; raw/sig retention keeps no-edit bytes, but the model has no inert node. After: inert inline wikilink atom preserves spelling through neighbouring edits; invalid attrs share HTML/entity escaping. On herb/row214-r2 base487500a16, grant sage-4286 lane B: baseline10/10 roundTrips equal (outcome A); baseline structural0/1 expected red; four whole editor files40/0, both mutants killed0/1 and restored1/0, whole webui69 files455/0 in174.189s with MOSAIC_REQUIRE_EDITOR_BUILD=1, nice19, no skips/cancellations. A mistaken preliminary7-file subset28/0 is logged and excluded from gate evidence. CSS byte-identical, final process sweep0, scratch TMPDIR removed. Filbert candidate review and every scripts/test-*.sh gate remain pending; no click, target resolution or library save change.
|
||||
2026-10-25T04:36:47Z | Sage | Row 214 (#1715, C2-11a editor wikilink node, Herb) LANDED 3a8e4abad, pushed 04:27Z 10-25. Before: refactor at 78b69e1e6. After: Herb's six commits cherry-picked onto 78b69e1e6 and fast-forwarded. Gate GREEN 04:10:34Z: 18 package suites rc 0 (webui 471/471, cli 999 plus the allowed FED R7 skip), every scripts/test-*.sh rc 0, queue package via test-queue.sh 156. Design skips: queue 34 (not the canonical root), task 87/93 (row 244). Filbert APPROVE c31679 rev 4093. Range-diff equal except commit 5's BUILD-LOG context; 40/41 paths same blob, BUILD-LOG additions only. #1715 closed c31680. Queue note 4094, done 4095, committed ce8bb4d8b.
|
||||
2026-10-25T04:36:47Z | Sage | Row 193 (#1691, threads user roles design, Morgana) LANDED 35f34ad27, doc-only: five design commits cherry-picked onto ce8bb4d8b, adding only agents/morgana/work/queue-193/DESIGN.md (verify-commit ok, 1 path). Duckworth APPROVE c31676 rev 4088 (posted and recorded by Sage; Duckworth has no Gitea credential). No test reads queue-193. Build rows from the design: 204/#1702, 205/#1703 (landed), 275/#1780, 206/#1704, 207/#1705, 208/#1706.
|
||||
2026-10-25T04:58:30Z | Sage | Row 255 (#1760, Vikunja 458, bundled Pocket ID design for Q203, Launchpad) LANDED de3e23dde, doc-only: Launchpad's three design commits e29d8ec90, 9f60021a0 and c8f2bc723 cherry-picked onto 775bbe236 (range-diff equal), adding only agents/launchpad/work/queue-255/DESIGN.md. No test reads queue-255. Webby APPROVE round 1 c31689 rev 4103 (posted by Sage; Webby has no Gitea token). Mos rulings in mos-1666: M1 approved with conditions (rollback removes components before the pointer goes back and the STATE check confirms the key is absent; the loader stays strict inside the key; four test-config.sh cases), R1 chosen, M2 dropped. Sage gate check against Q203, O6, REQ-WEB-2 and REQ-INST-1: consistent. One PRD text gap goes to Mos: REQ-INST-2 says the stack writes the providers entry, and R1 prints it for the user to paste. Webby N1 and N2 bind P4; N3-N8 carry into the P1-P6 build rows, all post-v1.
|
||||
|
||||
2026-10-25T07:46Z | Sage 1ef1e4f8 | Row288 quiet-host handoff (#645), late phase registration | Before: unchanged diag2 refused exit9 after07:00:05-07:30:18Z with neither base/head processing file started; no fullGREEN/run4 evidence. Faceless READY07:37:14Z and final A02 drain acknowledged. Bounded host observation07:38:31-07:43:31Z produced11 half-minute load/CPU-pressure/process-name samples at /mnt/storage/scratch/sage-r288l/quiet-20261025T073714Z/samples.jsonl. Magica331 r4 occupied the preceding slot until07:41:00Z; after its end, sampled load1 remained8.03/7.97/10.02/9.40/9.22;07:43:36Z follow-up8.97 and no gate visible. After: no288 test or run4 started, unchanged load1<4 precondition unmet. Explicit RELEASE delivered to faceless master sage-4466 and Mos sage-4467;645 c1172 read back, done=true with original title/description preserved. This closes only the bounded handoff/measured-inability/release task; row288 diagnostic and fullGREEN acceptance remain unmet. No thresholds, test deadlines, scheduling settings or running jobs changed. Earlier interrupted/refusal logs preserved separately.
|
||||
2026-10-25T07:46Z | Sage 1ef1e4f8 | P2/P4 prerequisite state | Magica331 r4 on0965fe1ea under sage-4459 stopped at full-list file69 project-runtime.test.mjs: exact Broker import closure lacks new common.mjs import. Probe30/30,68 full-list files green; aggregate707/706pass/1fail/0skip/cancel;193 remaining files, config and mutants/controls unrun. Receipts8d88a6029; rawlog ee430ce92543c4027b4aa78f343c703fd00bb55433e6ed40d54b61668a5914d4 read. Static trace confirms real sandbox defect: common.mjs and top-level-read PIN absent from RUNNER_FILES, as is new first-output.mjs. Magica holds read-only; proposed pure validation module/two readonly code binds/exact guard revision sent to Mos for scope ruling sage-4468, Q246 independent review still required. Poe prepared e7438743f regression manifest8/8 verified and git show --check clean; product patch unapplied at review. Next test-first404 block CLEAR sage-4469: intended two-caseRED before narrow exactGET404 normalization, then both new whole files+8focused/acceptance/named mutants/controls, stop on unexpected outcome. Global landing gate remains afterP2. No composite green, landing or push performed by Sage.
|
||||
|
||||
2026-10-25T08:03Z | Sage 1ef1e4f8 | Row331 r5 narrow review and full-builder verification phase | Before: r4 deterministic import-closure RED retained; r5 focused sixteen whole files181/181 passed, zero skips/cancel, real sandbox/session controls verified with raw16hashes. Fresh independent Claude Opus5.5/high Q246 round1 APPROVE8d88a6029..4948ece0e; no blocker/high/medium. Purity-regex/no-new-test-pre-fix-RED and confined-startup-only limits retained; verdict agents/sage/work/r331-r5-review/round1.json. Full P2/global/landing not approved. Now: accepted fresh import-derived269 list on unchanged reviewed code4948ece0e, packet2ff10ffac: old262 preserved+validation+six sandbox-dependent collateral files. Graph17sources/zero parsefailures, all11packetartifacthashes verified3993f7d3; listfd724dd9 equals graphbed8a700 tests. Runnerdiff changes only comment/artifact filenames/list/count. CLEARsage-4477 wholeprobe->269wholefiles->same test-config->four original mutants/restored controls, same deadlines/flags/scheduling, stop first unexpected outcome/no retries.646 remainsopen. Result pending, not a composite green or landing claim. Mos informed sage-4478.
|
||||
|
||||
2026-10-25T08:23Z | Sage 1ef1e4f8 | Row331 r5 full builder verification result | After CLEAR4477, builderblock finishedrc0 at08:19:20Z on2ff10ffac/code4948ece0e, receipt/docd62c69c86; package source unchanged. Independently verified279step logSHA/bytes and exact269inventory, final11artifact/280rawlog(including driver) manifestf1b6ee9b, receiptf95b14d7. Whole2692427tests/2426pass/0fail/1skip/0cancel; probe30+config55 gives2512tests/2511pass/0fail/1skip. FEDR7 scratch acceptance skip explicitly UNVERIFIED until scripts/test-federation-acceptance.sh at its authorized/global stage. Four mutants killed by named behavior; restoredwholecontrols30/30 each and sourcead5b37f3 restored byte-for-byte. Real sandbox11/session13 passed, no confined skips. Childnice19all279, driver16two recorded host-renice observations; no timeout/retry/control edit. Slot returned; no automatic nextgate. FullP2 Boyd first review/credential landing review/Sage global gate and row288 remain outstanding; narrowr5ClaudeAPPROVE is not fullP2/landing approval.646 staysopen. Supplied verifiedBoydID and full-scope handoff requirements sage-4479, Mos informed sage-4480; builder's already-invoked canonical queue move pending, no duplicate mutation.
|
||||
|
||||
2026-10-25T08:25:08+00:00 | Sage 1ef1e4f8 | Correction to08:23Z row331 verification entry | The final manifest/check-and-track helper stopped on KeyError bytes before its Vikunja post, because r5-full-driver.log is hash-only; shell continuation appended the08:23 entry prematurely. Earlier independent279step logSHA/bytes/count checks were already complete. Corrected final checker now verifies all11artifacts+280rawlogs: allSHA match, byte counts match wherever supplied; only driver log lacks bytes metadata. Restored sourcead5b37f3 matches allfour mutant events.646 comment1178 posted and read back OPEN now. No product/test or run result changed. Boyd0047 confirms fullP2read-only review underway on d62c69c86/base78b69e1e6, writerC included. Initial queuein-review move refused missing --candidate rc2 without mutation; one corrected candidate-bearing operation remains pending, no duplicate operation.
|
||||
|
||||
2026-10-25T08:33:18+00:00 | Sage 1ef1e4f8 | Row331 first full review CHANGES and request fallback | Boyd0049 fullP2review CHANGES onehighB1: runtime modelRuns empty afterrestart until bind, no-launch neverbinds oldpersistedsessions, sweep treats emptyasnoruns and removesretiringkey beforefuturegrace/confirmedstop. Magica andSage source-onlytrace confirm; writerC no otherblocker. No newtest/fixrun. BoundedB1preparation4483 underoriginalP2acceptance: authoritativeidentitycheckedpersistedrunview before retirement, retainfailclosed onunknown/discovery/stop failure, preserve no-launch/no newstopauthority; staticruntime/restartregressions/proposal first, no productfixuntilintendedRED/futureCLEAR. Requestfallback: ownGETuserjarvisverified, canonicalreviewrequest newop4481 completedrev4121/4122 posted31700, readbackauthor/issue/candidate/markersverified. FullBoydverdict relayed verbatim31701 with explicitBoydindependentreviewer/SageJarvisrelay attribution onBoydexplicitrequest, readbackverified; Boydasked4485 torecordCHANGESasboyd againstd62c69c86. Original4119/4120missingMagicacredentialfailurepreserved, no rowmove repeated/sharedorBoydcredentialused. Queuecurrentround1posted; verdictrecordpending.646global/P2gatesstillopen; no landingor288claim.
|
||||
|
||||
2026-10-25T08:50:48+00:00 | Sage 1ef1e4f8 | B1/647 intendedRED verified, bounded runtime/focusedGREEN phase | Before: correctednewtestca0e83337 onunchangedproduct4948ece0e ran EXACTONEwholemodel-restart under4490:12tests/2pass/10fail/0skipcancel, all10expected old-key-remotely-installed assertions, bothboundnonrunnerstop/confirmeddeadcontrolspass. No fixture/control/cleanup/observer/timeouterror. Raw13f41a18/19069bytes/names/counts and5producthashes independentlychecked; receipte99d225a/resultmanifeste69b1ac9 match, evidence-only41e909bcc. Now:4491 authorizes b1-proposal six-step minimalruntime.mjs-only implementation/privatehoststricthelpers andfocused8wholefiles(newrestartfirst). Seedauthoritativecheckedpersistedviewbeforetimer, mergeboot/fresh/bound, unknown/discovery/identity/stopfailure retains; no-launch/no discovery-derivedstopauthority preserved. Samepublicschema/refusal/IPC/mount/config/writer/grace/stop/timer/oldassertion/deadlines; ifruntime-onlyinsufficientstopforruling. Focused stopfirstunexpected/noretries, noautomaticfullgate/landing.647c1180readbackOPEN; freshnewcandidate/fullreview/Q246/global/FEDR7/288acceptance outstanding. Mos4492informed.
|
||||
|
||||
2026-10-25T09:01:42+00:00 | Sage 1ef1e4f8 | B1/647 boundaryRED verified, exact two-file/focusedGREEN resume | Boundary4495ONEnewwholefile produced2tests/0pass/2fail/0skipcancel; bothintendedMissingexpectedrejection(prePUT/prelocaldelete), no fixture/cleanup/timeoutfailure. Raw911d2a59/1994bytes/exactnames/counts/5unchangedproducthashes checked; receipt7fa8e123/resultmanifest8c49df81 match; evidenceonlyc90dcc4b1, original12RED41e909bcc retained/notrerun. Conditional4493/Mos1702prerequisite met. RESUME4496minimalruntimecheckedpersistedboot+fresh+trustedboundview plus EXACTprivateModelKeysconfirm-at-two-boundaries delta only; preserve no-launch/no newstopauthority/strictidentity/unknownretain/confirmedexit; no publiccontract/mount/writer/refusal/timer/grace/assertion/deadline change. Focused9newrestart12thenboundary2thenexisting7wholefiles, sameflags/nice/privatecfg, stopfirstunexpected/noretry; no automaticfull/mutants/landing. Newcandidate/freshfullP2/Q246/global/FEDR7/288acceptance remains. Mos4497informed.
|
||||
|
||||
2026-10-25T09:11:09+00:00 | Sage 1ef1e4f8 | B1/647 focused result and fullbuilder phase | Code81cbdea37 changes only runtimeprivateinventory and exactapprovedModelKeysconfirmdelta; bothpreviousREDphasespreserved. Focused4496ninewholefiles131/131,0fail/skipcancel, nine rawSHA/bytes and receipt6c2ff448/resultmanifest78c1b8fa8artifacts+10rawlogs(incldriver) verified. Candidatecontent704a2469all111Gitblobs/pathinventory checked; testedsourceunchangedinevidencepacket e5a4ade07. Realconfinedstartup/sessioncontrols pass; sleepfixture doesnotproveauthorizedrealrunnerSIGTERM, limitretained. Freshfull271list=old269+exactrestart/boundary2, graph17sources0parsefailures/all271match4e01c2e8, listd6b403f0, all10fullpacketartifacts007a2adf match. Runnerdiffonlycomment/artifactnames/listcount. CLEAR4498probe->271wholefiles->sameconfig1800->4namedmutants180000+restoredcontrols, sameflags/priority/privatecfg, stopfirstunexpected/noretry/no extrarun. Resultpending; FEDR7unverified/freshfullP2round2/Q246/global/landing/row288 remain.647c1183readbackOPEN; Mos4499informed.
|
||||
|
||||
2026-10-25T09:35:26+00:00 | Sage 1ef1e4f8 | B1/647 newfullbuilder result and reviewROUND2 | Builder4498rc0/code81cbdea37/checkoute5a4ade07, evidenceonlyd817e5840/sourceunchanged. Independentlychecked281stepSHA/bytes/exact271list;whole2441tests2440pass0fail1FEDR7skip, probe30/config55->2526subtotal2525pass0fail1skip. All4namedmutants killed andrestored30controls/sourcebf96f941, all281driver/child19atstarts; no retry/timeout. Result20347f8a all11artifacts+282rawlogs(incldriver)verified;FEDR7UNVERIFIED/global/realrunnerSIGTERMlimitsretained. NewfullP2Boydround2request4501 includesoriginalB1/response/currentwholeP2/evidence/limits; notnarrowreview. Sequentialownerqueuetransitions4500pending. Queuecandidate standard33pathSHAmanifestfb0a7b68 pinsallchangedsource/test/script/publicdocs+DEFERRED; onlyappend-onlylogs/agents evidence excludedfromqueuepinbutretainedin111content/fullresultmanifests. Scopechoice+tradeoffstoredround2-source-scope.json: permittracking/evidenceevolution withoutweakeningsourcepin. Formalround2request/verdictrecordsawaitreceipts; freshfullClaude/Dewey/global/FEDR7/288stillrequired.647open/Mos4502informed.
|
||||
|
||||
2026-10-25T09:41:59+00:00 | Sage 1ef1e4f8 | Full P2 round 2 source approval and security review | Boyd0053 independently APPROVE whole P2 base78b69e1e6..d817e5840/source81cbdea37, B1 closed, no actionable findings; this is not landing approval or a recorded queue verdict yet. His 111-source-blob/11-committed-artifact checks and coverage limits remain attributed. Fresh full P2 Claude Opus5.5/high Q246 review dispatched as a NEW delegate_task, clientRequestId sage-4503-r331-full-r2-q246; prior narrow r5 approval is not reused. Dispatch metadata saved full-round2-dispatch.json. Review is read-only committed Git, no tests/proxy/live data or external writes. Queue owner moves succeeded4124/4125, round2 opened;4126 request failed due unset Magica credential, preserved in6a645188d. Sage GET user again verified jarvis; one canonical existing-round2 fallback request sage-4504-row331-round2-review is RUNNING(exec3218), not yet claimed posted. No duplicate operation; candidate fb0a7b68 unchanged.647 open; fresh review, recorded approvals, global/FEDR7/landing/row288 acceptance remain.
|
||||
|
||||
2026-10-25T10:03:36+00:00 | Sage 1ef1e4f8 | Full P2 round 2 corrected CHANGES / bounded preparation | Canonical fallback4504 completed4127/4128, request31702 read back jarvis/issue1829/round2/frozen33path fb0a7b68. No pending Sage queue operation. Initial independent Boyd APPROVE0053 relayed31703; fresh full Claude Q2464503 REQUEST_CHANGES saved full-round2-verdict.json and relayed31704, full range78..d817/source81. Original B1 closed but M1 terminal evidence lost on later PID reuse and M2 proxy admission suppressing historical recovery end/release are confirmed. Boyd0054 independently adjudicated CHANGES, superseding his assessment31703 without rewriting history; exact attributed correction31705 posted/read back. Boyd4515 instructed formal-pin verification then one CHANGES record as actorboyd; no round2 verdict record claimed yet. Prior narrow r5 approval and all builder receipts remain scoped; 271-file green cannot prove untested M1/M2.
|
||||
Static source trace confirms known inventory loses terminal observations and exact old Broker launch matching precedes cleanup only after runtime admission; claims persist. Magica4513 authorised TEST-ONLY preparation, no product/Node/test/proxy/mutant/queue/newround launch: M1 sticky per-exact-identity strict confirmed-exit proof, separate outer/runner, stale registry protection, initial corrupt ticks/key still HOLD; no blanket mismatch=>exit or authority expansion. M2 persisted launch/claim restart matrix and negatives, exact Broker-owned cleanup proposal before any contract change; no usable cap/modelRuns/rotation-stop authority from cleanup. Marker direct-confined test may be drafted without mount expansion. L1 isolation and L3b orphan-key rehire confirmed; precise scope/repair proposals with Mos4514. L2 missing-boot hold documented tradeoff and L3a race remains fail closed. First-output clock currently starts at session launch before any model turn; Mos4511 owner-intent ruling pending, no timing/protocol edit. Source81/candidatefb0 frozen, global/FEDR7/row288/Dewey landing remain unfulfilled; no source approval or landing.
|
||||
|
||||
2026-10-25T10:06:00+00:00 | Sage 1ef1e4f8 | Mos1703 consolidated P2 intent/scope | Clock intent settled by Mos technical D17 reading, not a new Jason quote: one existing120s first-output budget starts at FIRST actual adapter/model turn; idle before it unarmed, no per-turn reset/extension. Task650 requires exact brief amendment/method/caller/marker delta + idle/silent/output/direct-confined cases before any product/run CLEAR. M1 task648 strict per-identity independently monotonic outer/runner confirmed-exit proof under existing absent/reaped rules only; no first mismatch or prior-live mismatch inference, no stop authority. M2 task649 Broker-owned exact immutable UNENDED cleanup, no capability/modelRuns/rotation-stop binding/new launch; exact unapplied contract/caller/negative controls must return to Mos. L1/L3b task651 static proposal/test-only prep authorised: independent instance work followed by original first error, unchanged1s/refusal; post-registration state/confirmed membership vs removed orphan/fresh issuance rules, no stale-key restoration. L2 documented hold accepted, L3a race explicit fail-closed follow-up.
|
||||
Sage4517 delivered full bounded ruling to existing Magica thread; M1/M2 packets should return independently of clock/lows. Parent independently GET-read tasks647-651 OPEN/project19/owner Sage title; receipt mos1703-task-readback.json. Updated review ledger and saved exact relay. No source edits, Node/tests/proxy/sandbox/mutants/queue round/global/landing/row288 CLEAR. Boyd's ONE CHANGES record0002 remains pending per0055; no duplicate or inferred success.
|
||||
|
||||
2026-10-25T10:06:40+00:00 | Sage 1ef1e4f8 | P2 R2 formal CHANGES receipt | Boyd0056 definitive original command exit0; parent independently read canonical row331 round2 receipt opboyd-331-verdict-0002/rev4129/reviewerboyd/CHANGES/comment31705/frozenfb0a7b68 and exact manifest text/digest. Sole round2 verdict receipt is CHANGES; prior APPROVE31703 was never recorded. No pending Sage/Boyd queue operation; do not repeat. Saved round2-boyd-canonical-verdict-result.json and updated ledger. Mos1703/Magica4517 static-only prep648-651 remains unchanged, no product/test/newround/global/landing/row288 grant.
|
||||
|
||||
2026-10-25T10:19:11+00:00 | Sage 1ef1e4f8 | M1/M2 static packet review and M1 intended RED CLEAR | Inspectedbc6942412/test-onlynewmodel-terminal-proof7/model-historical-cleanup17/sharedfixture and exact UNAPPLIEDruntime/Broker+IPC proposals. Bothpreparedmanifests3666f737/b818438d each6artifacthash/bytes+9producthashes independently verified against source81; packages diffONLY3newtest/helperfiles. M1 independentownchildrenexit/reap, originalsweepcompletion observer, exactformerownPID syntheticproc only/restorednamedbuiltins+signalguard; firstcorruptticks/keyhold controls unchanged, no actualPIDreuseclaim. M2 actualStoreclose/reopen/persistedclaim/Launcher recovery, no fixturecleanupimplementation; oldfailures behavioral notundefinedfuturemethod.
|
||||
CLEARsage4520 EXACTONEwholemodel-terminal-proof file pre-fix onsource81/testpacketbc6942412; expected2RED/5GREEN only, notobserved. Samewholeflags/nice19/measuredprioritiesload/privateconfig/cleanup/no retry/no productfix/M2/extra check/newround. Stop/reportwholefile; slot pending. M2 has NO execution CLEAR yet. SentMos4521 exactM1diffSHAa9189c01 andM2diffSHA92f3b899: new trusted recoverLaunch LAUNCH_OPS/Broker-ownedproof/sharedendSession/caller replaces bind+endRun, no cap/runs/modelRuns; real contract needs ruling beforeimplementation. Mos1703 required exactunapplied proposals now supplied; no global/landing/288 claim.
|
||||
|
||||
2026-10-25T10:21:52+00:00 | Sage 1ef1e4f8 | M1 intended RED verified / M2 intended RED CLEAR | M1sage4520 onbc6942412/source81 whole7exact5pass/2intendedfail, no skip/cancel/timeout/observercleanupfailure. Parent independently verified raw7562b5b6/7232bytes/all7names+assertions/counts; failedlatergenerationretirement andinitialcorruptkeyalreadyexitedretention, all5refusal/livecounterpart controls pass. Ownchildren exits/reaps precede syntheticproc; NOTactualOSreuse. FinalnoSignalscounterassertion inexpectedfirstfail wasnotreached; guard/interceptionrestoration remaincode/cleanup evidence, nooverstatement. Evidence-onlypacketpending; reportreceiptcc1726d6. Parent CURRENTcheckout9producthashes==81 +all6M2artifacthashbytesverified.
|
||||
Mos1704 ACCEPTSexactM1a9189c01 +M2trustedcontract92f3b899 CONDITIONAL onbothintendedRED andboundedfocusedpacketinspectionbeforeapply. Sage4522 CLEAREDONLYONEwholeM2model-historical-cleanup file onunchanged81/pinnedtests; expected17/9pass/8failnotobserved, samewholeflags/nice/privatecfg/measurements, stopafterfile/no retry/productfix/extra/queue. Requestedstaticfocusedinventory/candidateplan plusNEWtest-only actualtrustedprocessIPC dispatchcoverage; existing17inprocessstandin isnotIPCproof. NoIPCtestexecutionorimplementationyet. Mosconcreteresult4523delivered. Old647REDs/narrowr5review/fullreceipts preservedatactualscope; no clock/lows/global/FEDR7/288/landing CLEAR.
|
||||
|
||||
2026-10-25T10:23:52+00:00 | Sage 1ef1e4f8 | Both M1/M2 intended REDs verified; implementation held at focused prerequisite | M2wholeRED4522 source81/testbc6942412 exact17tests9pass8intendedfail0skipcancel, no timeout/fixture/control/cleanupfailure. Independently rawf5f7a22e/15148bytes+all17names/outcomes/8namedassertions match preparedmap; CURRENT9productpaths byteidentical81. EarlierM1exact7/5pass/2intendedfail rawverified with signalcounter-notreached and synthetic-onlyreuse limits retained. Parent independentchecks saved separately; builderreceipt M2reported5aff9915, committedreceipt-manifestverificationpending.
|
||||
Bothrawprerequisitesnowverified, notimplementationCLEAR: inspectstaticfocusedwholefileinventory/controls/newcandidateprovenance andactualtrustedprocessIPCcoveragepacket first (existing17inprocessonly). Magica0066preparingstaticpacket, no productfix. Mos4524 concrete result / Magica4525 verified nextprerequisite delivered. Tasks648/649 comments posted/readbackOPEN [{"task": 648, "commentId": 1190, "readBack": true, "done": false, "bodySHA256": "173c05ddd38776b94c2d29b3e3d6a21877f47de071059593e27fb0661fe78c8a"}, {"task": 649, "commentId": 1191, "readBack": true, "done": false, "bodySHA256": "2944d5578dafc77d47e6ab9e2b3d851a3216ac271f3cc64811f2bf34b3b7f33e"}]. Exact2diffconditionalMos1704 scope stays; clock/lows separate, no additionalexecution/newround/global/FEDR7/288/landing authority.
|
||||
|
||||
2026-10-25T10:32:33+00:00 | Sage 1ef1e4f8 | ActualIPC/focused prerequisite inspected | Magica0067 separateM1/M2 evidencec3eb95242 andstaticIPCpacket05d6a3336. Parent verifiedbothREDresultmanifests a5d5c48c/14059b83: each9committedartifacts+2raw/driver hashes, byteswherepresent/beforeafterequal. No earlierreceiptverificationpending. ActualIPCpreparedmanifestc5373f1d all11artifacts+9unchangedproducthashes/currentfilesverified. New9cases realstartHostfork->processboot->runtime/Broker, requiredreaderboot, ownedhost-firstcleanup, persistedSQLiteclaim/endhistory, directops+actualLauncher; no mockeddispatch. Existingordinaryfreshadmission/no-launchcontrolspreserved, newrefusalsmustleavechannelusableafterfix. OldunknownIPCpathcancloseownhostasintendedRED, notclaimednewchannelproof.
|
||||
AcceptedboundedFOCUSED20wholefiles exactb5448102 +staticdependency/forkjustification: threeM1/M2/IPCregressions, originalrestart/boundary/modelkeys/stop/proxy, Broker/routes/import/sessions/threadclaims/end/process, seatrealconfinedsession/sandbox, CLIhost/launcher/sessionlaunch. Currentcandidateprovenanceplanretainold81/fb/R2CHANGES; correctedproductcommitAFTERapplicablefocusedGREEN, contenthashcanfreezeuntestedworktreefirst.
|
||||
CLEARsage4527 EXACTONEwholemodel-historical-ipc.test pre-fixsource81/05d6a3336test expected9/2pass/7intendedREDnotobserved. Samewholeflags/nice19/measuredpriorities/load/privatecfg, actualforksnooverclaimedmeasurement; stop/reportwholefile/no retry/fix/otherfile/mutant/queue. ImplementationNOresumeuntilintendedIPCREDverified; exactMos1704two-diffscopeonlyafternewCLEAR. Mos4528informed. No clock/lows/global/FEDR7/288/landing grant.
|
||||
|
||||
2026-10-25T10:36:24+00:00 | Sage 1ef1e4f8 | All intended REDs verified / EXACT M1+M2 focused resume | ActualIPCRED4527 on05d6a3336/source81 exact9tests/2pass/7intendedfail0skipcancel, nofixture/harness/cleanup/timeoutfailure. Parent raw6ba10393/13478bytes/all9names/outcomes+assertionschecked andCURRENT9producthashes81. Separateevidence07292713b/resultmanifest16f058a1 all9committedartifacts+2raw/driver hashes/byteswhereprovided checked, machine testedCheckout05d6a3336 andbeforeafterequal. Human-summary e05typo remainshistorical, machinepin correct. Limits: onlyfirstdirectopcapturedinvalid-host-request; otherpredicateinnercodesnotcaptured andpostrefusalchannelassertionsnotreached. Nestedforkpriorityinheritednotindividuallymeasured; no pre-rootlockinventoryassertion.
|
||||
AllMos1704conditionsnowmet: bothoriginalM1/M2intendedREDs+actualIPCREDverified, acceptedfocused20exactlistb5448102/dependency/realforkpacket/newcandidateplan inspectedbeforeapply. RESUME/CLEARsage4529 EXACTcombinedM1a9189c01 +M292f3b899, ONLYfourproductfiles broker/runtime/process/launcher. Freezeappliedsource/testcontent/runner/listbeforeexecution andcompareagainstexactcombineddiffs. Run20serialWHOLEfiles orderfrozen, sameflags/nice19/actualmeasurements/privatecfg; STOPfirstunexpected/no retries/fixtureassertiondeadlineedits/otherrepairs. IPCGREENmustreachpreciserefusal/channelguards/no cap/no proxyPUT/modelStallbinding; M1mustreachnoSignalscounterafterretirement. Confinement unavailable=UNVERIFIEDnotgreen. CommitproductONLYafterapplicablefocusedGREEN, thenmapcontenttocandidate. Readonlypinnedparsergraph/list/fullpacketpreparationafterGREENallowed; full/mutants/acceptance/newround remainSEPARATECLEAR. No clock/lows/global/FEDR7/288/landingauthority. Mos4530concretestate delivered;647-651open.
|
||||
|
||||
2026-10-25T10:45:39+00:00 | Sage 1ef1e4f8 | M1/M2 focused GREEN independently verified / final gate sequencing | Magica0071SLOTBACK4529: all20wholefiles254/254pass, zero fail/skip/cancel/timeout. Parent resultmanifest5596c74f all7artifacts+20rawSHA/bytes andcounts verified, frozen29files38c7a9e6/source26e3aef0 unchanged; separately appliedbothacceptedpatches to81 inownedtempscratch andbytecomparedall4products. ProductcommittedAFTERGREEN5868d77f18abeb01d2822cb475df48ce1336ae58, packet860582c27. All180content63642ecf blobs+37fullsourcebehavioura1cec8b5 entries independently checked; frozen29testedfilesmapexactlycodecommit, no oldtests/ModelKeys or packet-tip packages/scripts/DEFERREDdelta. IPC9 now reachesexactrefusal/channel-survival/no-cap/no-proxyPUT/modelStallrefusal/claimrelease/fresh/no-launchassertions; M1reachesnoSignalscounter; actualsandbox11/session13 passnonskip. RealOSreuse/realrunnerrotationSIGTERM/nestedforkprioritymeasurement/independentpre-rootlockinventory NOTclaimed. Manual0070header time correction10:39:41Z retained; rawmeasuredtimestamps unchanged.
|
||||
Fullpacket98e601a9 all13artifacts/list274/graph17 verified: prior271retained+EXACT3newtests, no othercollaterals/omissions; fullrunnerdiff onlycomment/evidencenames/listcount. UNEXECUTED/no fullCLEAR. Sage4531 toMagica immediateALREADYauthorisedSTATIC650clock/651lowcontracts+testprep; finalwholebuilder+freshfullP2/Q246reviews sequencedafterremainingknownsourcecontractssettle tovalidatefinalsource, no scope/gatewaiver orcompositegreen. Mos4532concreteresult/orderinformed; anyacceptanceorderingconflictreturnedbeforeextraexecution. No650/651productedit/run/newqueue/global/FEDR7/288/landinggrant. Tasks648/649updated/readbackOPEN [{"task": 648, "commentId": 1192, "done": false, "readBack": true}, {"task": 649, "commentId": 1193, "done": false, "readBack": true}];647-651remainopen.
|
||||
|
||||
2026-10-25T10:52:07+00:00 | Sage 1ef1e4f8 | Static651 L1/L3b inspection before RED | Magica0073 prepared0ec63de70: independent each6artifacthash/bytes+9unchanged5868producthashes match L1manifest3b73bbcb/L3bbe635be2. NoNode/run/productchange. L1exactdf4ee0f4 per-instance try/catch serialsweep/firstErrororiginal/rethrowafterothers/valuefreeoutcomes meetsdirection, sentMos4535forcontractruling. New4tests expected3RED1GREENnotobserved. L3b46e68bc6 postregisterhold+freshsentinelledmembershipbeforecachedreturn/freshkeyGETPUTGET ifmissing preservesold.retiring, new6unitexpected5RED1GREENnotobserved. Concretebranch discrepancy: explicitrotate appendsoldcurrentevenifconfirmedabsent while reportclaimsnoinventedretiring; recommended appendonlyrotate&&present, exactstate/rule returnedMos4535beforecode.
|
||||
Sage4534 STATIC corrections only: fixture valueFree losesclosedorremovedmodelkeys, requireimmutablehistoryscanningallfixturessecretvalues withoutprinting; attemptallownedcleanup. Requireexactstate/table/preservationcontrols andseparateactualruntimeorganizationhireorphan+failure/revokingmembershipcontrols, notcontrollercontinuationoverclaim. L1mayreturnindependentlyofL3b/650. NORED/CLEAR/productimplementationgranted; clock650staticcontinues. Task651comment1194posted/readbackOPEN. Finalfull274/reviewsremainunexecuteduntilstablecandidate; no gatewaiver/compositegreen/global/landing/288.
|
||||
|
||||
2026-10-25T10:57:41+00:00 | Sage 1ef1e4f8 | Mos1705 exact low-branch ruling and L1r3 intended RED verified | Mos1705relayed4537: L1removeunconditionalcomplete receipts, keeprefused-only/existinglifecycle receipts/1s+firsterror; addnoopreceiptcontrol. L3bpreserveold.retiring ALLbranches, appendcurrentONLYrotate&&confirmedpresent, noabsentcurrententry; initial/postregisterhold/freshserializedGET/sentinel/GETPUTGET/privatepersistbeforepublication unchanged. Fulltable/no-record/revoking+actualruntimehirecontrolsbeforeRED, noimplementationgrant.
|
||||
Magica0074helperr2history/canary/guardedcleanupinspected; correctedL1r3 745875432exactdiff93e4de1e andmanifestd2a62d03 all6artifact/9CURRENTproductbytes5868verified. CLEAR4538 ONLYonewholemodel-sweep-isolation file unchanged5868/pinnedr3 expected5/2pass/3RED. SLOTBACK0076 actualexactexpected, zero skip/cancel/fixture/cleanup/timeout. Parent resultmanifest89adad47 all8artifacts+raw416ec873/3514bytes/allnames/assertions/counts/beforeafter+CURRENT9productsverified. Exactoriginalfirsterroridentityassertion passedbefore laterfailure visitation; bothnormalretirement/historycanary and3no-op/no-churncontrolsGREEN. Ownedroots0/nolivechildfixtures reported. Evidencecommitpending; no productfix oradditionalrun. Mos4540/Magica4541verifiedstatusdelivered. Task651c1196readbackOPEN.
|
||||
No L1implementationresume: boundedfocusedplanneeded; L3bcompletebranch/runtimepacket+650clock stillSTATIC on5868. RejectedPUTpayloadcapturehistoryrequestedAFTERL1slotback/newpins (currenthelper503beforebody missesattemptedfreshvalue), oldexecutedr3anchorpreserved. Final274/fullreviewpacketstaysunexecuteduntilstablefinalscope; Mos1705acceptssequencing, no gatewaiver/compositegreen/global/FEDR7/288/landing.
|
||||
|
||||
2026-10-25T11:03:27+00:00 | Sage 1ef1e4f8 | Clock650 static protocol inspection / no run | Magica0077 clockpacket994ead40a b26004a3 independently8artifacthash/bytes+5unchanged5868productpins verified. ExactUNAPPLIED0875b66f+D17amendment3ea62438 returnedMos4543 beforeimplementation/RED: adapterchildspawn armingboundary, newexportinexistingmountedfirst-output, ownrunDiratomic0600temp/linknoreplace, bounded64byteNOFOLLOW/NONBLOCKread, absentunarmedvsnewmalformed/future/unreadableimmediatestallpolicy, internallegacydefaultfalse/managedtrue. SharedclockoriginLinuxINFERENCEfromprimaryNodeHrtimeBigInt->uv_hrtime->preciseCLOCK_MONOTONIC pluslocalsandboxuser/pid/ipcnamespacesnot-time; actualbwrapboundsuntested. Upstreamsource/doclinks savedclock650-static-inspection.json; no localNode execution.
|
||||
Foundstaticnewreaderdefect: .toString(ascii) strips highbitsperofficialNodeBufferdocs, so proposedexactASCIIvalidationnottrue. Mos4545/Magica4546 sentstrictUTF8+ASCIIregexorrawbytecheckrevision/highbitnegatives; original0875byteshistoricalnotacceptedfinal. Magica4544 additionalSTATICnegatives symlink/FIFO/nonblocking/size/mode/shape/zero/future/lateembeddeddeadline andproducer-spawn-callbackfailurecleanuptrace; no broaderhandler/sourceeditwithoutcontractruling. Current3newfiles9casesexpected5RED4GREEN NOTobserved; no clockRED orproductCLEAR. Task650c1197posted/readbackOPEN. L1evidence2a2b0136b committed8artifactsnowverified; originalL1REDrawalreadyverified. L3bfulltable/runtimepacketstatic. Noactivegate/queue, product5868 unchanged; finalfull274/reviewsunexecuted/no gatewaiver/global/FEDR7/288/landing.
|
||||
|
||||
2026-10-25T11:07:40+00:00 | Sage 1ef1e4f8 | Mos1706/1707 clock boundaries relayed, exact revised bytes pending | Sage4548 relayed1706: successfuladapter/bin/shspawn acceptedboundary; embeddedonce120deadline/firstoutputcancel/readNOFOLLOWNONBLOCKregular0600currentuid<=64positive-nonfuture acceptedLinuxinferenceonlypendingrealconfinedtest. Invalid/future/unreadable=>singleexistingtrustedstop/valuefreereceiptaccepted; ENOENTunarmed. Internallegacywatcherdefaultfalse acceptedONLYmanagedlaunchertrue/no userconfig. StrictrejectANYbyte>127 beforedecode+exactASCIIshape, highbitprefix/digit/newline+extra/trailingcontrols required; original0875NOTacceptedbytes. Producerfailure mustbecaughtwithinlifecycle, ownedgroupboundedTERM/KILL+reap, controlledcleanup/exit/nolaterturnfirststamp/fixeddiagnostic. TempownershiponsuccessfulexclusiveOPEN, guardwrite/close/unlink/collisionpreexistingneverremoved. Revisedexactdelta beforeclockRED/productCLEAR.
|
||||
Sage4549 relayed1707: preserveNONPROXYbehavior, no unconditionalnewhardlink/timestampdependency, no session.json/publicconfig/envschema; smallest internaloptin within4files, host-ownedrunDirmarkerproposalallowedbutexactbytespending, addnonproxycontrol. Parent read-onlycallertrace runTurnlanding540/message581/retry630, top-levelawait/eventcallbacknocatch; mainnormalserver/toolcleanup androle.release onlyEXIT.stopped; hostexitendRunreleasesclaim/records/unregisters/lockcleanup. Senttrace/no genericcatchclaim/clearescalationtimerafterchildclose/reap. No parentorchildproduct/testexecutiongrant.
|
||||
OriginalL1RED4538/evidence2a2b0136bverified; L3bowner-resolvedstate/runtimepacketstatic; currentproduct5868 unchanged/focused254, full274unexecuted/finalfullfreshreviewsafterstablecontracts. No gatewaiver/global/FEDR7/row288/landing authority.
|
||||
|
||||
2026-10-25T11:21:49+00:00 | Sage 1ef1e4f8 | L3b exact scope, fixture diagnosis/correction, both intended REDs verified | Inspected311f49d51 L3br3 manifest3305ad47 all10artifacts+9CURRENT5868products; full14controller/3actualruntimehire/sharedhistoryrejectedPUTbefore503/guardedruntimecleanup. Exact43c14 #issue only matches1705resolvedtable. Mos1708 conditionalexactcontractaccepted, EXISTINGmodelOrganization failedhirecleanupaccepted unchanged: existedfalsebeforeorphanregister canrevoke/deleteconfirmedunpublishedorphan onfailure; controllerfileimmutabilityonly, runtimeexactmembership/no stale restoration/nousablecredential, NOTnoHTTP/immutableorphanfile/atomicrollback. No wrapperedit.
|
||||
InitialCLEAR4551ONEcontroller endedUNEXPECTED14/4pass/10fail:7intendedassertions+SETUPcredential-format2/13/14. Parent verifiedraw8b61b9d8/11487bytes andCredentialsinstant exacttoISOString validation; newfixturetimestampslacked.000Z. Stopped/noauto-retry.4552authorisedONLY3canonicalnewfixtureliterals(controller2/runtime1), noassertion/deadline/helper/productweakening. Unexpectedevidence6f12b6df7/resulta6c1a31b8artifacts+rawverified/preservedseparate. a27f07e20 r4manifest814d2849 all11artifacts+9CURRENTproductsverified, bytecomparison EXACT3timestampchanges vs311only2testfiles; originaltestblobspreserved.
|
||||
NewCLEAR4555ONEcorrectedcontroller actual14/6pass/8intendedfail1,2,3,4,5,7,8,10;controls6,9,11,12,13,14GREEN, no setup/cleanup/timeouts/skips. Parent verifiedresultf3d609e98artifacts+raw364f864f/8743bytes/allnames/assertions/current9products. SeparateCLEAR4557ONEruntimehirefile actual3/0pass/3intendedfail, parent verified6cf6235e8artifacts+rawe36fb211/2855bytes/names/assertions/products5868. Realinprocessruntime/Broker/SQLite/organization/fakeHTTP NOTprocessIPC. Evidencecommitpending; no productfix oradditionalrun. Mos4553/4556/4558/4560resultsrelayed; Magica4559nextfocused/candidatepacketbeforeapply. L1r3+L3bexactproposalsstillUNAPPLIED.
|
||||
Source-onlycross-scopehypothesis4554: knownliveoldcurrent ->confirmedremoteabsence->newgenerationdropsoldcurrentmetadata ->M1keyassociationcanholdbeforeterminalproofevenafterOSexit. Mos1709 created652/openproject19ownerSage, explicitlyUNVERIFIEDconservativeavailabilityinteraction NOTconfirmedregression/blocker orpermanentacceptedlimit. STATICregression/proposalonly relayedMagica4557; exact5868+accepted43c14combinedcontext/ensure-rotate/separateouter-runnerOSexitvsterminalproof/laterretirement/staleRegistry-norun-corruptkeynegatives/map/minimalfuturewholefile scope withnextfocused/implementationpacket. NOextraexecution/fix/keyguardweakening/oldkeyretiringre-add/remoterestore/knownerasure/stopauthority. Finalfullreviews MUSTreceivependinginteraction+eventualexplicitdisposition. Currentruntimetestpathnotblockedby652prep.
|
||||
Tasks651/652updated/readbackOPEN [{"task": 651, "commentId": 1200, "done": false, "readBack": true, "title": "Full P2 low findings: record L1-L3 dispositions and bounded follow-ups (owner Sage)"}, {"task": 652, "commentId": 1201, "done": false, "readBack": true, "title": "Investigate M1/L3b lost key association and later retirement availability (owner Sage)"}]. Currentproduct5868/focused254 unchanged; noactivegate/queue. AwaitexactL1r3+L3bfocusedinventory/candidateplan+652proposal and650revisedprotocol/strictbyte/fatalcleanup/nonproxyoptintests; finalfull274remainsunexecuted, no gatewaiver/compositegreen/global/FEDR7/288/landing.
|
||||
|
||||
2026-10-25T11:24:51+00:00 | Sage 1ef1e4f8 | Bounded low-focused packet and652 static proposal inspected beforeapply | Magica0083 packet13d6782dd manifest4ded0ff6 independently33artifacthash/bytes+CURRENT9products5868verified. ALL3 intendedREDresultmanifests recursively8committedartifacts+raw EACH verified, L3b pendingcommitverificationresolved; unexpected4551remainsseparate. Exactfocused23 list7f07e95e=3newL1/controller/runtime first +old20unchangedorder/noomission. Parentindependentownedtempscratch apply EXACT93e4de1e+43c14 to5868 ModelKeys gives815b92c8e0b7b6eca8495ea745c0ec7cfdc91296a44d9b0a62b94ed9b5bc9e1d, no worktreeapplication. Freezeactualcandidate/base/list/runnerbeforetest/commitafterGREEN planinspected; productModelKeysonly/no wrapper/reconcile/runtime/clock change.
|
||||
Read652STATICproposalb993ae6e andcontext713110d6: no testauthored/executed/fixselected. Old5868ensurefailsknownL3bsetupprecondition/rotateappendstheoldcurrent; combinedacceptedbranchdropsabsentold thenhypothesizedincompleteproofassociationhold afterobservableOSexit. Proposedfuture1runtimefile ensure/rotate×staleRegistry/[]+terminal/no-run/corrupt/ticks/partial/changedidentitycontrols, no guardweakening/erasure/re-add/authority. RemainsUNVERIFIED/notblockerorpermanentacceptedlimit.
|
||||
Mos4562 EXACTimplementationprogression+652scopeRULINGrequested: recommendonlyaccepted2lowdiffapply+inspected23focusedGREEN thenMEASURED652followupbeforefinalreview, firstauthoriseSTATIConefiletestpreptheninspect/separateboundeddiagnosticCLEARonfrozencombinedcandidate; noadditionalfix/limitbeforeevidence. Magica4563verifiedpacket/stateinformed NOapply/focused/652testauthoringgrantyet; existing650staticworkcontinues. Noactivegate/queue/productchanges;5868current/focused254,full274UNEXECUTED, freshfullreviews/global/FEDR7/288/landingstillunfulfilled.
|
||||
|
||||
2026-10-25T11:29:08+00:00 | Sage 1ef1e4f8 | Mos1710 exact low implementation resume, staged before actual run | MosauthorisesONLY93e4de1e+43c14 appliedto5868, soleModelKeys productblob815b92c8; exact23wholelist7f07e95e. D2requiresSAGEinspectactualdriver/list/config/baseHEAD/uncommittedcandidateblobs/soleproductdelta/all23tests/sharedinputs/9baselineproductsBEFORErunning. Relayed4564apply+freezeactualpacketNOWbutNOtestexecutionuntilparentinspectsandissuesactualrunCLEAR. Samewholeflags/nice/privatecfg/stopfirstunexpected/no retry/testhelperassertiondeadlineedit/extras; productcommitafterapplicableGREEN/mapfrozenblobs, receipt-tipsdistinct. No wrapper/reconcile/runtime/clock/guard/timer/refusal/authoritychange.
|
||||
MosD4choosesMEASURED652followupbeforefinalfull-reviewacceptance. ONLYAFTERfocusedGREEN newcandidate frozen: staticauthorship/preparation1futuremodel-key-loss-interaction runtimefile/neededapprovedtesthelper underb993/context713/ownprocesses/realHTTP/originalsweeps/matrixnegatives andexplicitOSexitvsproof; NOexecution/prodseam/fix/guardweakening/implicitpermanentlimit/blockerclaim. CompletepacketthenSEPARATEdiagnosticCLEAR. FullfinalP2/Q246briefspreserveunresolvedinteraction+eventualdisposition.650staticindependent, finalfull/Q246/global/FEDR7/288/landingremain. Currentlaneidle/noqueueop; pendingactualappliedfreezeinspection.
|
||||
|
||||
2026-10-25T11:35:16+00:00 | Sage 1ef1e4f8 | Actual low pre-run packet inspected / RUN CLEAR4565 | Magica0084 soleModelKeys exact815b92c8 appliedUNCOMMITTED; receipt-only46c00e741, basebeforeapply13d6782dd. Parent verifiedmanifestd142c7ba10artifacts+CURRENT36frozeninputs0ebc27f9+41SCOPEDsourcepins643c5f72(all23tests/sharedhelpers/9criticalproducts/driver/list), 9baseline5868products (8unchanged+soleModelKeysdelta). Independentlyagainappliedaccepted93e4de1e+43c14inownedtempscratch andbytecomparedactualModelKeys. No stagedproduct. Actualdriverfe65fe8e/config301d4865/list7f07e95e/baseHEADinspected. Independent6503testdraftsdirtyOUTSIDE23scope; no clockproductchange, 41scopedmanifestnotclaimedallunrelateddrafts. BoundedNodeprocessscan no competingtest/gate.
|
||||
ActualRUN CLEARsage4565 delivered EXACT23serialWHOLEfiles, receiptactualclear+frozenCandidateSha2560ebc27f9; sameabsolute--test--test-reporter=tap/defaultoutertimeout0/perfiledeadlines/nice19measureddriverchild+load/privateHOMEconfigTMPDIR. STOPfirstunexpected/no retry/frozenhelperassertiondeadlineedit/extra/full/mutant/config/acceptance. ProductcommitONLYafterGREEN/map36/41testedcontent BEFORE652helperauthorship; don'tstageindependentclockdrafts. AfterGREENonlyMos1710STATIC652onefuturetest/helper, no diagnosticexecution/seam/fix. Mos4566concretestateinformed;651c1204readbackOPEN. ResultPENDING/laneRESERVED,no passingclaim. Finalfull/Q246/global/FEDR7/288/landing remain separate.
|
||||
|
||||
2026-10-25T11:39:57+00:00 | Sage 1ef1e4f8 | Lowfocused GREEN independently verified /652static preparation resumes | Magica0085SLOTBACKsage4565 exact23whole276/276zero fail/skip/cancel/timeout/cleanup. Parentresultmanifestfe6652a8 all8COMMITTEDartifacts+23rawhash/bytes/perfilecounts/priorities verified; actualreceiptCLEAR4565/frozenCandidate0ebc27f9 matches. All36frozeninputs+41SCOPEDsourcepins643c5f72 mapexactlypostGREENproductcommit6d3edea61f0d46654771a51b505cd21473617679. packages/scripts deltafrom46receiptONLYModelKeys815b92c8 acceptedcombined, no clockdraftsstaged. Perfilecounts5,14,3,7,17,9,12,2,30,7,14,16,4,3,7,6,3,8,13,11,43,34,8. Driver/testchild19all23; nestedforkinherited/notallmeasured. ActualIPC9/sandbox11/session13nonskip;650directmarker/timestampUNEXECUTED. SleepnotrealrotationSIGTERM/PIDreuse/independentpre-removallockinventory limitsretain.
|
||||
Mos1710D4conditionalnowmet: Sage4568resumedONLYSTATIC652onefuture runtimefile/neededtesthelper preparation onFROZEN6d withproposalb993/context713, ownprocesses/realHTTP/originalsweeps/OSexitvsacquiredproof/matrixnegatives. NOdiagnosticexecution/prodseam/fix/guardweakening/oldcurrentreadd/remoterestore/stopauthority/permanentlimit/blockerclaim. Separateinspectablepacket/map thenfutureCLEAR/disposition; fullP2/Q246briefmustcarryunresolved652. Mos4569concreteresultinformed. Existing650revisedexactprotocol/negative/failure/nonproxy packetreadyindependenthandoffpending, no clockproduct/REDgrant. Slotfree/noqueuepending. Full274historicalunexecuted/finalgraphandgatefreshreviews/global/FEDR7/288/landingremainunfulfilled.
|
||||
|
||||
2026-10-25T11:48:57+00:00 | Sage 1ef1e4f8 | Revised650 exactprotocol/tests inspected / no RED | Magica0086 packet9507e2ee4 manifest4284d712 all21artifacthash/bytes+5CURRENTclockproducts identicaltestedlow6d verified. Parenttemporaryapply exactUNAPPLIED755290c5ef575a3e68d714bf42fffbb5ffe21e00fd34766cf0cfbebaad4afc71 to6d yields4proposedclockproducts (noModelKeysdelta): first-output6263d358/runnerd4bfea03/model-stall0bdc91dc/launcherd2527440. D17/brief amendmentabd21fcb. Strictbytes>127BEFOREASCII/canonicalpositivefullcontent/64/NONBLOCK-NOFOLLOW-fstat-uid/FDclose/onceembeddeddeadline inspected. ProducerexclusiveOPENowns immediately; independentwrite/link/close/unlinkfixederror/collisionnoownership. Proxy-onlyhostenablefile/runnerprivatecachedexistsafterJSON/no publicschema; managedwatchtrue/internallegacyfalse. Controlledspawnerrorcatch withinPromise, TERM+tracked5sKILL, waitclose/reap+cleartimers, fixedprivateresult, all3callersafterusageendterminate, exit2/server-socket+role.release/hostend path inspected.
|
||||
Readall5newtestfiles/fakechildprobe+actualunconfinedpubfailurepreload: narrowownedfspath/fd/groupinterception/restorenamedbuiltins, actualBroker/libraryguard/currentchildprocess, notconfinedfault orTERMresistantproof. Readerinvalidcount/single-stop/FDcleanup/FIFOownedchildbounded; oldexpectedfailuresassertionsnotnewtimerpolicy. Wrongowner/unreadable-valid0600 UNVERIFIEDexplicit. Actualbwrapstdout/nonproxy/timestampbounds UNEXECUTED. RemainingNEWunexecutedsource-grepmanagedcaller test mirrorsimplementation; Sage4570requestedmovetoexplicitcoordinatorinspectionnotes (callerinspected), preserveALL5actualclockbehaviorcases; likelyrefresh36total31RED5GREEN instead37/32/5. No oldtests/assertionschanged/no clockrun; exactprotocol755unchangedbytest-scopecorrection. SentMos4571 exactproduct+doccontractforfinalruling, currenthash755NOTapplied/REDauthorized. Task650c1205readbackOPEN.652staticonefileprepindependent/currentlow6d276verified. Noactivegate/queue/full/global/FEDR7/288/landinggrant.
|
||||
|
||||
2026-10-25T11:53:25+00:00 | Sage 1ef1e4f8 | Clockr3 testscope verified /Mos1711 exactcontractacceptedconditional | Magica0087 1ac21d36c r3manifest54a7ecfb all21artifacthash/bytes+5CURRENTclockproducts==testedlow6dverified. Parentbytecomparison950..1ac ONLYnewunexecutedsource-grep testcase removed, ALL5actualbehaviorcases unchanged/otherpackage-scriptfilesunchanged; map36total31expectedRED5GREEN NOTobserved. Independentlowmapping852a8da71 artifactl1-l3b-tested-commit-map.json9a5bf68f checkedall36Gitblobids/hashbytesat6d(41scopedsourcepreviouslyindependentlyverified); maprecordedbefore652authorship.
|
||||
Mos1711 conditionallyACCEPTSEXACTUNAPPLIED755290c5fourclockproductdelta+abd21fcbtwo plan-docamendments, readsallsource/tests/diffs/appliedonlytempscratch. Boundaryoptin/strictmetadata/ownedcleanup/nonproxy/limitsunchanged. NOclockproductapply/focusedgrant. SequentialONEWHOLEperREDclear allowedONLYafterSageinspectsrevisednotes/test/helper/maps/pins+currentclockproducts/lowmapping. One remainingnotes-onlycorrection: JSdollaranchor withoutmultilinematchesinputend (not optionalfinalnewline); keepfullmatch-lengthguard/trailingnegativeunchanged. Relayed4573 staticnotesrepinbeforefirstRED. ParentcheckedTC39primaryCompileAssertionURLread(noNodeexecution), linkretained. ActualconfinedcasesMUSTnonskip/unavailableSTOPprogression; no aggregate/unconfinedsubstitute, no in-flightedits/retries. Wrongowner/unreadable0600/TERMresistance/unconfinedfaultlimits retained.
|
||||
Noactivegate/queue;clock755UNAPPLIED;lowtested6d276current. Awaitnotes-correctedclockmanifest thensequentialRED firstfileCLEAR;652staticdiagnosticpacketindependent/noexecutionfix. Finalfull/Q246/global/FEDR7/288/landingunfulfilled.
|
||||
|
||||
2026-10-25T11:59:06.171733+00:00 — Sage — row331 clock650: inspected r4 eac71305 pins, corrected notes and unchanged low6d products; issued ONE-file intended RED sage-4574 (5 expected:3pass/2fail); no clock product application. 652 static packet received, no execution.
|
||||
|
||||
2026-10-25T12:02:48.839223+00:00 — Sage — row331 clock650 firstthree separate intended REDs verified: clock5/3/2, reader19/1/18, producer7/0/7. Producer failure stops before ownership/fault checks; no proof claim. Nineproducts/frozeninputs match low6d. Issued4580 ONLY actual confined file2cases expected1controlpass/1missingmarkerRED; skip/unavailable stops. Task650c1207 read back. 652static packet sentMos4576 awaiting exact diagnostic ruling, no execution. No clock application/full/global/landing. Next4581.
|
||||
|
||||
2026-10-25T12:08:14.044541+00:00 | Sage4584-4585 | ALL5clockREDindependentlyverified36/5pass31intendedfail, allnamedassertions/frozeninputs/nineproducts==low6d,0skip/cancel/timeout/cleanup. Parent aggregate clock650-all-five-red-audit.json, individualauditchecks persisted. Finalraw9837707f/2961/result441954f5. No clockproductapply, actualclockfocused/contentpacketpending.652exactdiagnosticMos1712conditionalactualdriverinspectionpending/noexecution. Next4586.
|
||||
|
||||
2026-10-25T12:21:07.402725+00:00 | Sage4592-4594 | #652ONE4590 diagnostic13/9safetyCONTROLpass/4final-livenessFAIL. All4ensure/rotate×stale/[] reached finalretirementassert aftervalidsetup/postphaseoriginalsweeps/realHTTPkeyloss/freshrepair/independentOSreaps. Parent10resultartifacts+rawc147036b39395/0c88bc5a/ninebeforeafter==6d/source42currentverified;0skip/cancel/timeout/cleanup,19/19,ownroots0. SentMos4592 explicitdispositionrequired, recommendboundedSTATICrepairproposal notpermanentlimit; NO652fixselected/sourceedit. Clock755UNAPPLIED/all5REDverified/focusedstaticpacketpending. Actualunused4588/hold4589/sole4590machinecontextpreserved; humancontextsentence typoexplicitinsummary. Next4595.
|
||||
|
||||
2026-10-25T12:25:05.918909+00:00 | Sage4595-4596 | Clock650focusedpacket8046314af/4058a60a independentlyverified26artifacts+5REDpins/currentbytes.15wholelist0bd38b5d, reasons/driverread; OWNtempscratch exact755+abd applies current6dbase andmatchesall6virtualSHA/bytes/Gitblobs, realproduct/docsUNAPPLIED. SentMos4595 exactapplication/focusedruling request:ONLY4products+2docs; actualpre-runfreeze+SageCLEARbefore15run, commitonlyGREEN. Broadercollateral FINALgraph;noneof15usesnew652helper; markerproductioncallerSOURCEonly; wrongowner/unreadable/currentLinuxbounds/unconfinednotTERMresistance limitsretained. #652measured13/9controls/4finallivenessfails awaitsMos4592EXPLICITdisposition beforeANYfix/permanentlimit. Allcurrentsource6d/ModelKeys815unchanged; no activegate/queue. Magica4596auditACKdelivered, no additionalrun/editCLEAR. Next4597.
|
||||
|
||||
2026-10-25T12:26:15.846556+00:00 | Mos1713 disposition #652 CONFIRMEDAVAILABILITYDEFECT measured6d, remediationREQUIREDbeforefinalP2acceptance; no permanenthold/restartresolution/notauthoritygain. Parent4597relayedSTATICruntime/privateinventoryproposal ONLY: perexactidentity positivekeyassoc+strictbothprocessvalidation beforemonotonicprovenance; afterloss allowonlystrictabsence/reaped/samestartzombie, LIVE/unknown/mismatch/readerrorhold. Preserveinitialguards/boot/stopauthority/L3btable/allpubliccontracts, noabsentkeyreadd/restore/knownerasure. ReturnEXACTunapplieddiff/statetable/existing13mapping/newnegativecontrols/boundedfocusedplan beforeANYnewexecution/sourceedit. Clock8044058separateunderMosinspection. Next4598. Singlequeue-next2503pendingnoduplicate.
|
||||
|
||||
2026-10-25T12:29:22.883268+00:00 | Mos1714 /Sage4600 | AuthorizeONLYclock755fourproducts+abd2docs, sixpaths; virtualc0732a15independentlymatchedbyMos+Sage. Relayed4600APPLICATIONONLY toMagica, accepted15wholelist0bd38b5d but NOtestuntilparentactualpre-run sixblob/sharedinput/driver/config/list/9baselineinspection and separateCLEAR. CommitonlyfocusedGREEN/mapbeforelateredits; exclude652drafts from650commit/frozeninputs. ModelKeys815/runtime652unchanged;652STATIC1713only/confirmeddefectmustfixbeforeacceptance. No full/newreviews/queue/global/FEDR7/288/landing. Next4601; singlequeue-next72430pendingnoduplicate.
|
||||
|
||||
2026-10-25T12:40:15.546966+00:00 | Sage4603-4604 | FINALclockactualpacket3f52ce9b1/c747a85a ALL10artifacts verified,current6candidateSHA/bytes/Gitblobs approvedvirtual. Finalfrozen7281d6416+1184sharedinputhash/Gitblobs allrechecked,15tests included/652helperexcluded,9baselinemappings/currentonly6pathsdelta. Prior9053objectnotavailable so no independentonly10diffclaim, allFINALpinsverified. Driver46c/configd31areadunchanged. Narrowboundedreal--test/devgate scan EMPTY. ActualrunCLEAR4603issued ONLY15/list0bd38b5d (189reference expectedallGREEN), firstunexpectedskip/cancel/timeout/unavailableSTOP, no edits/retries. Realbwraptimestamp/mode/once/temp/noproxy/outputandownership/FD/exit2/release/signalassertionsmustreach; limitsretained. Sourceuncommitted755+abd;ModelKeys815/runtime652unchanged;652STATIC1713only. CommitonlyapplicableGREEN/mapfrozenbeforelateredit. Mos4604stateackdelivered. Next4605.
|
||||
|
||||
2026-10-25T12:47:13.660608+00:00 | Sage4605-4609 | FOCUSED4603STOPafter2files:clock5/5GREEN,reader19/18pass1unexpectedFIFO nice16!=19. 24total23pass1fail0skip/cancel/timeout;driver/testchild19. Rawfirstf51bc7071120,reader8a5d1b9e4393 audited. FIFO childrc0/nonblocktimeoutfalse/stop1BEFOREnicepassed;FD/receiptAFTERniceNOTreached. Source6+frozen1184unchanged/currentverified, ownclock/readerroots0. Remaining13filesNOTRUN/no189GREEN/noproductcommit/retry. ToldMagica4605preserveexactevidence, Mos4606boundary. ParentUNAPPLIEDstaticfixtureproposal4607 SHA58d08778 changesONLYprobe importsetPriority andsetPriority(0,19)beforewatcher; finalgetPrioritymeasurement/strict19assert unchanged. Oldhelperd711c0b8->a937f504917bytesOWNtempscratchchecked. Cause16UNPROVEN/nohostreniceclaim;laterdriftstillfails. AwaitMosexactfixture/rerunrulingandMagicaresultmanifest. Magica4608coordinationdeliveredNOactualedit. #652STATIC1713outsidefrozen scope/confirmeddefectunresolved. Next4610.
|
||||
|
||||
2026-10-25T12:51:40.585221+00:00 | Mos1715 /Sage4610-4611 | Exactfixture58d08778 acceptedCONDITIONALold4603fullaudit. Parentnowverified66c734f2 ALL10artifacts+2rawf51bc707/8a5d1b9e, all1184+sixpostSHA/bytes/Gitblobs/nineproductmappings==pre;24/23pass1nestednice16failure,0skip/cancel/timeout,ownroots0/hooks0100. Savedparentmanifest/full-audit. Relayed4610APPLICATIONONLY afterworkerreceiptpreserve: helperd711->a937f504917bytes onlysetPriority(0,19)beforewatcher,FINALmeasurement/strict19assertuntouched. No actualexecution yet; NEWV2actualfreeze/currentbaseHEAD/15list/driverconfig/newhelperpinrequiredthenparentreinspect+separateCLEAR SAME15FROMSTART, no readercomposite/oldRED rerun. Keepoldrecordsimmutable,source6clockbytes+ModelKeys815/runtimec5unchanged,sevenpathsremainuncommitteduntilfull15GREEN/map. #652STATIC1713outsidefrozenonly. Cause16UNPROVEN/laterdriftstillfails/nohostpolicyinvestigation. Mos4611conditionauditACKdelivered. Next4612. Queue-next27074singlependingnoduplicate.
|
||||
|
||||
2026-10-25T12:57:37.417489+00:00 | Sage4612-4614 | V2actual6a9c79de3/c15260d0 ALL10artifacts+frozende50de49(1184+six)CURRENT SHA/bytes/Gitblobs verified. Old/newinventoryDIRECTcomparison ONLYhelperd711->a937semanticrow+oldgate->v2metadata row;allsixvirtual/controlrowsunchanged. Driveronlycomment/evidencenames/configlimitsunchanged;old66/10artifacts2rawpreserved,exact7uncommittedsource/doc/helperpaths,ninebaselinemappingsverified. Boundednarrowgate/testscanEMPTY,issuedACTUAL4612 SAME15wholeFROMSTART only(189reference),no composite/readeronly/oldRED/full. Commit/mapONLYfull15GREEN;652STATICoutsidefrozen/no product652change. Mos4613stateACKdelivered. Next4615.
|
||||
|
||||
2026-10-25T13:05:38.430394+00:00 | Sage4615-4618 | V2focused4612STOPafter3files31/30pass1exclusivecollisionFAIL,0skip/cancel/timeout/cleanup. Clock5/5;reader19/19nowreachedFIFOrealnice19/FD0/receipt;producer7/6pass1 atpreexistingcollisionexistsfalse. Fixeddiag+unlinkCalls0beforeexistpassed;closeCalls0afternotreached/NOdeletionattribution. Parent141e94b8 ALL10artifacts+3raw/post1184+sixcurrentSHA/bytes/Gitblobsverified,roots0,remaining12filesUNRUN,noproductcommit/retry. Rawproducer9d5b6662/2477. ParentEXACTUNAPPLIEDtest-onlyproposal a5484cf9 toMos4616: first-turn.test.mjs d184->d2aacf294639bytes, savedoriginalopenwx/create+writeNUMERICfd+closefinally collision preseed; addcollisionCreatedflag/assert,ALLexisting7/assertions/countersunchanged,NOproduction/timingdelta. OWNtempscratchapplychecked. StaticNode26.8.1matchinginstalledHEADER fs.js2795-2846/getOptionsutils311-330 supportsreentrantpathnamewrite missingencoding; NOactualruntimecalltrace/Nodeversionexecution claim. URLs inproposalJSON. ToldMagica4617holdnoapply/rerunawaitMosruling,preserveV2receipttip. #652STATIC1713outsidefrozen/unresolvedconfirmeddefect. Next4619. queue-next27074resolvedrow7ledger;current331scopecontinues/no pendingqueue/gate.
|
||||
|
||||
2026-10-25T13:08:57.501876+00:00 | Mos1716 /Sage4619 | ExactUNAPPLIEDcollisionfixturea5484cf9ACCEPTED afterV2postpreserve/audit alreadycomplete141e94b8. Relayed4619APPLICATIONONLYtestfirst-turn d184->d2aacf294639bytes, savedoriginalexclusiveopen/numericFDwrite/closefinally+setupflag/assert, ALL7cases/existingassertions/counters/fixeddiagretained. Preserveold4612/4603records,staticNodeinferenceNOTexecutedtrace/version/deletionproof. NeedNEWactualV3fullfreeze DIRECTV2 ONLYnewsemanticrowfirstturntest;FIFOhelpera937+sixvirtualsource/docs+ninebaselinesunchanged,15wholeFROMSTART afterparentreinspect/separateCLEAR. No currenttestclear/gate/productcommit;8candidatepathsUNCOMMITTED. #652STATIC1713outsidefrozen/confirmeddefectstillmustfixbeforefinalP2acceptance. Next4620. Singlequeue-next6948pendingnoduplicate.
|
||||
|
||||
2026-10-25T13:13:36.331743+00:00 | Sage4620-4622 | V3actual2b4c099b0/f2400b62 ALL11artifacts+7ce729b2ALL1184shared/sixcandidateSHAbytesGitblobsverified. DIRECTV2ONLYfirstturntestd184->d2aacf29semanticrow+V2gate->V3metadata, FIFOa937/sixvirtualproductdocs/ninebaselinesunchanged;driveronlycomment+3evidencenames/configlimitsidentical. Exact8uncommittedpaths/botholdunexpectedrecordsintact/narrowgate-testscanEMPTY. IssuedACTUAL4620 ONE SAME15FROMSTART only189reference,firstunexpectedSTOP/no edits/retries/composite/oldRED/full. AllcollisionCreated/existence/unlink/close/producerFD/actualbwrapLinuxmarker/controlledexitassertionsmustreach;commit/mapONLYcompleteapplicableGREEN beforelateredits/exclude652drafts. ModelKeys815/runtimec5unchanged/652STATIC1713confirmedblocker. Mos4621stateACKdelivered. Next4623. queue-next6948resolvedrow7ledger;active331scope/no pendingqueue.
|
||||
|
||||
2026-10-25T13:21:40.454724+00:00 | Sage4623-4625 CLOCK650SCOPEDGREEN | Actual4620 V3whole15FROMSTART189/189/0fail/skip/cancel/timeout. Parentf92b3f16 ALL10artifacts+15rawSHA/bytes/TAPcountsverified15driver/testchild19/finalcomplete. All1190frozenrows(1184shared+6candidate)CURRENT+GitcommittedSHA256/bytes/blob/tree/multiset mapd86735387f to PRODUCTee375c1fba562a0def63743e6515fd0a33f42387 independentlyverified; commitAFTERrun/exact8acceptedpackage-planpaths/no652draft. Receipttip4d4fad7e3sourceidentical. RealbwrapLinuxmarker timestamp/mode/once/temp/noproxyoutput, collisioncreated/existence/unlink0/close0, FIFOreal19/FD0/receipt, actualUNCONFINEDlanding/message/retryexit2/release/ownTERM/nolaterturnallreachedGREEN. Limitswrongowner/unreadable600/confinedfault/forcedTERMresistance/productioncallerE2E/realrotation/nestedpriorityretained. CleanupHONESTnewclockrootsclear/hooksdone, oldprivatecontrolfixture dirs12launcher+2sessionlaunch+15modelproxyretained/inventoried;NOextra cleanup/processlockcensusclaim. Parentclock650-v3-green-independent-check.json. Mos4623resultdelivered;Magica4624prioritizealready-authorized1713STATIC652packet currentbaseee375/4d4. #652CONFIRMEDblocker stillUNRESOLVED/runtimec5andModelKeys815UNCHANGED;original4590diagnostic6dcontextpreserved. NOnew652product/test/Nodecheck/graph/full/freshreview/queue/global/FEDR7/288/landingCLEAR. Task650remainsOPEN despitefocusedGREEN. Noactivegate/queue. Next4626.
|
||||
|
||||
2026-10-25T13:42:54.530646+00:00 | Sage4626-4630 #652STATICreview | Initial039/d1bb10artifacts+9ee375products+25testpins/old23tail/a957old13/47behelperverified;tempscratchfb runtimec34497a154200/blob956ffe7e. FoundnewcounterambiguityBEFOREexecution: refresh->readSessions->seat/session401startTimeOf(runnerPID) incrementsanyprocread. Directed4626ONLYNEW2casesRegistry[]afterinitialview+lose BEFOREfault, preserveALL7assertions/old13/helper/fb. StaticfindingNOTobservedtestresult; oldR1UNEXECUTEDpreserved. R2packet50cb32959/44ac69a5ALL14artifacts+9products+25pins/actualfrozenbc3397edALL1190CURRENTsha/bytes/Gitblobsverified. Newtestc1b24468, DIRECTdiffONLYwriteSessions[]setup;driver/configreadwhole/privatecfg/nice/original1s+5s budgets. ExpectedONEnew7/5controlsPASS2exactstrictrecheckRED NOTobserved. SourcefbUNCHANGEDUNAPPLIED/runtimec5+ModelKeys815+clockee375unchanged. SentMos4628 exactcontract+ONEnew7REDrequest beforeANYexecution/application;focusedfuture25=new7+old13+EXACTold23. Needexplicitnullrecordbranch/coldbootlimitruling: priorvalidatedMapcanstrictdeadcheckifrecordnull,controllerSKIPsno-recordunchanged;initialcoldunassociatedholds/noallgenerationclaim. Validatedacqassociated&&atleastoneLIVE AFTERfullsame-instance success;fullydeadusesM1bits. Magica4629holdactualbytes/noextraactions. No activegate/newqueue;next4631.
|
||||
|
||||
2026-10-25T13:53:05.506689+00:00 | Mos1717 /Sage4631-4633 | EXACTfb7203contractACCEPTEDconditional NOapplication. ExplicitnullmodelRecord=associationloss forEXACTpriorvalidatedidentity->sameSTRICTbothterminalproofallowed,NONEWprovenance;controller no-recordSKIPunchanged/null-specificcoverageUNVERIFIED. Coldunassociatedbootfailclosed/warmrepairONLY/noallgenerationclaim. ParentFINALcurrent50cb/44ac14artifacts+9unchangedee375products+25pins/bc3397ed1190SHAbytesGitblobsverified;runtimec5/ModelKeys815/fbUNAPPLIED;narrowtestdevgatescanEMPTY. IssuedACTUAL4631ONLYwholeNEWmodel-key-provenance7 pre-fixRED expected5safetyPASS2namedread/ticksREDatstrict-recheckassertion,NOexpectation-evidenceconfusion. Samewhole/privatecfg/19priority/original1s5s/owncleanup,firstunexpectedSTOP/noretryedits/extraold13. Mos4632stateACKdelivered. ReturnverifiedRED+separatelyinspectableactualSTATICfocused25driver/list/config/content+virtualruntimec344candidate BEFOREimplementation/focusedauthority. Clock189/mapd867stable; nofull/graph/mutants/review/queue/global/FEDR7/288/landing. Next4634. Singlequeue-next3939pendingnoduplicate.
|
||||
|
||||
2026-10-25T14:17:38.642944+00:00 | Mos1718 /Sage4636-4638 | Prerequisitec1af7/5safetyPASS2exactRED/10artifactsrawf495/1190postpinsverified.033focusedvirtual9artifacts+9products+25pins/1210rowsverified/currentc5separatevirtualc344. Relayed4636APPLICATIONONLYfb runtime1path;actualc34454200/blob956. NEWactualc6c7a5aa0/38720db6 ALL10artifacts+89e32674ALL1212CURRENTpins verified. DIRECTvirtual1210 ONLYruntimec5->c344+2actualmetadata rows,all25tests/helperold13/ninebaselinesunchanged;scratchbytecompare fb=actual. Soleuncommittedproductruntime,configcontrolsidentical/driveronlymetadatanames,033+c1af/4590/clockmappreserved. BoundednarrowtestdevgatescanEMPTY;issuedACTUAL4637ONEwhole25FROMSTARTnew7->old13->exact23/296REFERENCEonly,firstunexpectedSTOP/no edits/retries. Mos4638stateACKdelivered. Commit/mapONLYcompleteGREEN beforelateredits;AFTERGREEN+map ONLYreadonlyfreshgraph/list/fullpacketprep,no full/mutants/review/queue/global/FEDR7/288/landing. NullcoverageUNVERIFIED/coldunassocfailclosed/warmonly/noallgeneration/realrotation. Laststatus22filesfinished/host23running, noaggregateclaimyet. Queue-next3939resolvedrow7ledger/no pendingqueue. Next4639.
|
||||
|
||||
- 2026-10-25T14:54:30.601485+00:00 | Sage row331 final builder BEFORE | Verified c210/b445 current16 artifacts,456 committed candidate paths,51 behavior pins,671 selected/graph files and1212 focused pins; lane clear. Mos1719 authorized one builder, actual sage-4643 running on8e54. Standing FED R7 skip remains unverified; no broader acceptance/landing.
|
||||
|
||||
- 2026-10-25T15:06:56.091482+00:00 | Sage row331 final builder AFTER/STOP | Probe+163 whole files:1639 tests,1637 pass,1 fail,1 authorized FED R7 skip; no aggregate acceptance.164 raw logs independently verified, remaining121 files/config/mutants/controls unrun. Source8e54 unchanged,ModelKeys815/runtimec344 restored. Separate one-step driver16/child19 recorded without cause attribution. Exact fixture forwarding proposal3aa973dc remains unapplied pending ruling; no assertion/deadline change.
|
||||
|
||||
- 2026-10-25T15:23:00.032777+00:00 | Sage row331 fixture AFTER | Exact dispatch forwarding correction passed whole session-clear5/5 with measured19/19, no skip/cancel/timeout. Result42932d7a/raw0b7d1497 and1216 frozen rows independently verified against2da21e13;map1e11f6d4 committed87ee30b1d before later prep. Original stopped builder637 retained; no composite acceptance. Read-only refreshed full packet and unapplied priority proposal await separate ruling.
|
||||
|
||||
- 2026-10-25T15:34:29.723336+00:00 | Sage row331 R2 full BEFORE | Verified actual6dc9cf3a/b1013592 all1622 inputs,13 artifacts,nine products,52 behavior and671 graph inputs againstcode2da; exact3e4/5982 priority-guard driver. Cleared one probe/284/config/four-original-mutant-control block from START underMos1721/sage-4657. Old637 stop and priority16 preserved; only namedFEDR7skip permitted unverified. No source/review/landing changes.
|
||||
|
||||
- 2026-10-25T15:50:10.065429+00:00 | Sage row331 R2 full AFTER/STOP | Probe+174 files:1756 tests,1754 pass,1 old thread-revoke failure,1 permitted unverifiedFEDR7skip.175 raw logs audited,all19/19,no cancel/timeout/signal.110 files/config/mutants/controls unrun. All1622 frozen inputs and52 behavior/671 graph code pins unchanged;runtimec344/ModelKeys815. Test host mirror lacksrecoverLaunch before runtime; exact fixture proposal being prepared without execution. No composite acceptance.
|
||||
|
||||
- 2026-10-25T16:05:33.469862+00:00 | Sage row331 thread fixture AFTER | Exact runtime dispatch forwarder passed thread-revoke3/3,measured19/19,nonskip/no cancel/timeout. Result86975ce3/rawc9a5d06a and1625 frozen/current/committed rows verified;sole fixture commitfffbe05af,map1d867353 committede906cfc8a before later prep. End/claimrelease/no-newlaunch checks reached. Prior stopped full runs retained; no composite acceptance. Read-only full packet refresh pending separate ruling.
|
||||
|
||||
- 2026-10-25T16:24:45.965804+00:00 | Sage row331 R3 full BEFORE | Verified f99b10ec/be9bc6e0 all1628 current inputs,13 artifacts,nine products,53 behavior/671 graph againstcodefffbe;exact2965 driver. OldR2driver and all stopped/scoped evidence preserved. Cleared one probe/284/config/four-original-mutant-control block FROMSTART underMos1723/sage-4671. Only namedFEDR7skip allowed unverified;no source/review/landing authority.
|
||||
|
||||
- 2026-10-25T16:54:21.093174+00:00 | Sage row331 R3 full AFTER/scoped VERIFIED | Result63d440bf/evidencee5b4a8d1, all14 committed artifacts+294 raw SHA/bytes/TAP/order checked. Whole2842552tests2551pass0fail1 authorizedFEDR7skip(unverified),separateprobe30/config55/4wholecontrols120 pass.4ORIGINALnamed mutants killed1/1/1/3 assertionfailures,all6ERR_ASSERTION,815 restored each/end. ALL294 real19/19,0cancel/timeout/newskip;all1628frozen/53behavior/671graph/nineproducts unchanged.13 private-control scratch retention inventories preserved,no census. FullP2/reviews/global/FEDscript/row288/landing remain open; next review brief is DRAFT only pending ruling.
|
||||
|
||||
- 2026-10-25T17:21:57.367080+00:00 | Sage row331 formal review BEFORE | Correctedbrief17972714 preservesoriginal0418. Existing53-sourcebb/codefff/evidencee5b/result63d frozen. Formalround3request31706 posted ownJarvis and independently read back with correctissue1829/author/markers/entiremanifest. IndependentBoydCodex+ONEfreshClaudeQ246(high) started afterprovenance verification; no tests/sourceedits/queueverdict/landing authority.
|
||||
|
||||
- 2026-10-25T17:52:23.336296+00:00 | Sage row331 source review AFTER/CHANGES | Both independent reviews identifymissinglauncherbinding blocker. Boydqualifiedlows/consentpreserved,ownJarvisattributedrelay31707 readbackverified;actualBoydcanonicalCHANGESrecord4135 independentlychecked. Existingbuildergreen remains scoped,fullP2unaccepted. ConditionalMos1725 nowauthorizesSTATIC653-656packetpreparation only,653/654first;no sourceapply/test/full/newreview/landing authority.
|
||||
|
||||
- 2026-10-25T18:24:29.738793+00:00 | Sage row331 #653 test-first AFTER / #654 coverage BEFORE | Mos1726 one-file sage-4701 reproduced exactly two managed proxy launch failures after successful preflight; three nonproxy/refusal/no-launch controls passed. Result76feb41a, rawc3bc72a3/4035 and all1633 frozen/current/committed inputs independently checked; no source application, post-target proxy binding/watcher checks unreached. Mos1727 actual packet39be7914/freeze445dc825 independently verified with lane returned/clear; issued sage-4703 for one current pending-organization coverage file expecting four passes, outcome pending. Productfff/old53bb and prior reviews/evidence retained; no acceptance/landing claim.
|
||||
|
||||
- 2026-10-25T18:31:16.393237+00:00 | Sage row331 #654 coverage AFTER | One whole current-source file passed4/4, zero skip/cancel/timeout; resultb60936e7/rawb5e83990/1293 and all1633 frozen/current/committed rows independently verified. Mapcc651951 to64e0a982 publishedb442 after GREEN and before later edits; sourcefff/nine products/53 manifest unchanged. Covers exercised pending organization-busy branch only, not generation ownership. Separate #653 import-only/focused15 virtual packet20af76b3 inspected and sent for scoped ruling, no product application/run or final acceptance.
|
||||
|
||||
- 2026-10-25T18:34:30.320932+00:00 | Sage row331 #653 repair BEFORE | Mos1728 authorizes exact launcher named fs import binding only and matching focused15 driver preparation. Parent rechecked unchanged old53/nine products atb442 and sent4708 exact application/preparation instruction. New applied freeze and independent current-input/lane inspection are required before a distinct test CLEAR; no test run or fixed-behavior claim yet. #655/#656 remain unresolved, historical review/RED/GREEN/maps preserved.
|
||||
|
||||
- 2026-10-25T18:39:00.750135+00:00 | Sage row331 #653 focused BEFORE | Applied launcher equals exact approved import-only373d; current driver equalscfd. Before any execution parent caught an omitted consumed-list path in input inventory; metadata-only superseding packet8e6dd390/freeze97e24ceb preserves prior1636 and adds that existing list row. All1637 current inputs/10 artifacts/15 tests/nine products and historical654 map independently verified, no competing Node test/gate; issued actual focused15 CLEAR sage-4712 underMos1728. Outcome pending, no fixed/acceptance claim or additional source authority.
|
||||
|
||||
- 2026-10-25T18:57:50.207677+00:00 | Sage row331 #653 focused AFTER / #655-656 static contracts | Verified complete15-file173/173 nonskip, all15 raw logs and1637 tested/current/committed rows mapped93ae todf75 afterGREEN, map firstpublished9ced before38b static preparation. Actual managed-launch5 reaches pre-spawn enable/trustedbinding/idle and first-turn clock/real stall stop/output controls. Product change only missing import. #655 original serialization-only proposal030 rejected byMos1729 for duplicate credential effects; exact shared-validation revision and isolated tests authorized STATIC only. #656 partial-state/durable-intent disposition remains open; no recovery implementation/test or full-P2 acceptance/landing granted.
|
||||
|
||||
- 2026-10-25T19:01:13.027004+00:00 | Sage row331 #656 design BEFORE | Mos1730 selects static narrow matching-temp/durable-revocation-intent proposal and isolated test preparation; broader only-temp/differing-generation states get separate nonlaunchable-intent design only. Relayed4720 strict all-key remote/run/file proof, intent-before-temp-removal/retry and truthful atomicity requirements; no product application or execution. #655 shared-validation revision remains independent static work. Testeddf75 source preserved, full acceptance/closure pending.
|
||||
|
||||
- 2026-10-25T19:04:29.712397+00:00 | Sage row331 #656 static boundary | Verified4547-byte atomicity note1f2b7864/sourcepins. Existing descriptor/stat checks plus pathname unlink provide no inode-conditional final syscall against arbitrary external sameUID replacement. Returned concrete concurrency-contract choice toMos4722 before recovery code/test authorship; no workaround/experiment applied. #655 static revision and broader656 design remain independent, testeddf75 source unchanged.
|
||||
|
||||
- 2026-10-25T19:08:56.725413+00:00 | Sage row331 #656 qualified static design RESUME | Mos1731 accepts cooperating-writer/private-store concurrency for proposal/test authorship, explicitly excludes arbitrary external sameUID replacement after final verification from guarantee. Relayed4724 strict synchronous revalidation/tmp-first intent ordering and complete cooperating-callsite trace requirement; any current ordering bypass returns before proposal acceptance. No atomic compare-unlink claim, product application or runtime test grant. #655 and broader656 design remain separate, source testeddf75 unchanged.
|
||||
|
||||
- 2026-10-25T19:25:50.472210+00:00 | Sage row331 #655 revised static review RETURN | Verified c7/ce7 nine artifacts, current product/source/test pins,1637 prior mapped inputs, and scratch-only three-file ef299 proposal. Before execution identified expected-map first-failure mismatch in cases14-16, cleanup launch-log scan omission, and need to carry original captured revision into locked publication rather than fresh revision substitution. Returned4726/4727 for static corrections/contract ruling; no source applied, Node/test/proxy run or acceptance granted. #656 static work remains separate.
|
||||
|
||||
2026-10-25T20:03:48.870029+00:00 — Sage row331/#655 correction: previous static A/C objection missed OptionC injected-writer R0 override; withdrew after full source trace/Mos1733. No publication API expansion. Preserved4733 unexpected whole-file fixture errors and all evidence; exact NEWhelper variable correction106 only, audited superseding01ac/1647 inputs and cleared ONE whole rerun sage-4742 underMos1736. No product application. #656 narrow static model-final-order work separate; #657 broader recovery-intent DESIGNONLY ownerSage perMos1737, no executable/path creation authority. FormalR3CHANGES/tasks647-657 remain open.
|
||||
|
||||
2026-10-25T20:27:02.650878+00:00 — Sage row331 #655 bounded verification: independently audited intended pre-fix e219 (exact9targetsRED+9controlsPASS), exactef299 applied underMos1738, focused sage-4750 COMPLETE22files300/300PASS0skip/cancel/timeout, all22real19/19. Exact3products committedafterGREEN27f68; all1652testedrows mapped88a92/firstpublication67394 beforelateredits. Separate unexpected068/priorformalnegative retained, not compositefull. #657 DESIGNONLY proposals3ce07/108780 with manifests c13/a6b returnedMos; prospective before-PUT ownership design, no privatepaths/code/tests/experiments. #656narrowstatic remains independent/open, no full/newreviews/queue/global/FED288/landing/closure.
|
||||
|
||||
2026-10-25T22:02:57.713692+00:00 — Sage row331 STATIC656/657/658 and first656 measurement: audited complete narrow14678/fd503 virtuals/all1657 inputs, acceptedtestfirstMos1749; exactactual1665/driverae284 inspected and sole4778runtimewhole cleared. Verifiedca07/raw5bca37584:39=32exacttargetRED+7controlsPASS,0skip/cancel/timeout/signal,real19/19,allpostpinsunchanged/source27f68/oldfixtureUNAPPLIED. Nextcompletionfile REQUESTEDonly4781; no automaticrun/application. #657A/source+newtests ONLY ownedunapplieddiffs/unparsed/unexecuted, selectedSELF/eventgrace and helper-onlyproposal static; #658generationconfig-last design returned, Mos1750selectsexplicitprovision-new coexistence STATICnextscope, oldbootstrap/T-I1unchanged. All acceptance/closure gates remain open.
|
||||
|
||||
2026-10-25T22:34:26.180461+00:00 — Sage row331 #656 three separate intended-RED phases verified: ca07 runtime39=32R7G,44c2 completion21=19R2G,cb13 remove21=16R5G; all exact first targets/raw/postpins/currentGit, strictreal19,0skip/cancel/timeout/signal. Scopedcontrols only/posttargets unreached, no compositeGREEN. Independently audited STATICfocused33 packet4799129b/1688 current vs3virtual changes; Mos1757 permits ONLY exactfd503+7a1dapplication/204cdrivercreation and NEWactualfreeze preparation, relay4798; actualrunCLEAR pendingindependentinspection. #657 selectedprivateclockproposal f579 under1756 +fixturecompatibilitystatic scope; allowned657diffs unparsed/unapplied/unexecuted, needintegrationrefresh after656. #658 explicitprovision-new coexistence staticwork remainsopen, oldbootstrap/T-I1unchanged. No full/review/queue/global/FED288/landing/closure.
|
||||
|
||||
2026-10-25T23:33:24.741369+00:00 — Sage row331 #656 AFTER / #657/#658 static continuation: independently audited actual1694/driver204c packet then sole sage4799 focused33 FROMSTART. All511PASS/33raw203652B/zero skipcancel timeout signal/33real19pairs; new81formerposttargets reached in frozen source. Exact3paths committed AFTERGREEN38ba5762, all1694+16pins mapped69ce57a5 firstpublication30dcef before later receipt4a02. Mos1759 independently accepted APPLICABLEfocused only;656OPEN. Audited read-only interim ed8b/581378:65behavior/788changedblobs/677graphpins, recorded18roots0parsefailures/294selection recomputed from recordededges; allold284+6new+4businesscollateral, grant-scope/lifecycle-settings UNRUN current. NO fullgate/run/re-pin. #657A refreshed to38ba/031383e6 ownedUNAPPLIEDdiff only, incompleteB/legacyhold/case15 retained. Static positive revocation seed/caller packet4999 returned4807 with actualtrustedgeneration/ownedruntimeoriginalsweep queue/failedGETintent design, not executed; Mos1776 selected only extraFIFOawait1e998e74, inventory superseded preservingoriginal4999. Positivehelper/A-B/case7 exactguards stillunaccepted; #658 explicitprovision-new sourceproposal not yet authored. All647–658OPEN/no newfull/config/mutants/review/queue/global/FED288/landing/closure.
|
||||
|
||||
2026-10-25T23:41:11.932432+00:00 — Sage row331 #657 STATIC next packet: sent4808 runtime-clockcontrols manifest38c1a325/4808, NEWisolated helper/testdiff6a09c2b2/14524 and9UNOBSERVEDcases; native/default,6invalidvalues-beforeStore, actualruntimeisolation andsamewarm ORIGINALdue/strictidentity/terminal path. OnlyownedDIFFS/data, no actualsource/testinstallation, parser/Node/FS/proxy/test. All1694 mapped current SHAbytesblobs rechecked unchanged against38ba/map69ce. Seedpacket superseding87633310 marksMos1776 FIFOcallerSELECTED, original4999 preserved. Positivehelper/A-B/case7exactguards remainunaccepted; fullBGC/allcooperatingcallers/warmoldfixture and658sourceproposal remain work, no gate/full/review/queue/global/landing/closure. Nextstableoperation4809.
|
||||
|
||||
2026-10-25T23:44:53.880497+00:00 — Sage4809 #657 unaccepted-draft correction: source-read found A031383 second descriptor fstat omittedbigint:true while all other identity fields usedBigInt, so stable validfile wouldrefuse strict equality. No runtime reproduction. PreservedALLoldartifacts and4808manifest references; separate r4 combinedf1b5a13a/35866 newmoduled2d783f4/18928 manifestb2baf075/1573 changesONLYsecondfstatoption. ReturnedMos4809; current38ba/1694inputs untouched/noactualsource/helper/testinstallation/parser/Node/FS/proxy experiment. BGC/warmfixtures/658 remainstaticunfinished; no gate/acceptance/closure. Nextoperation4810.
|
||||
|
||||
2026-10-26T04:17:47.724968+00:00 — Sage STATIC continuation AFTER owner heartbeat1822: scope recovered without queue/Node invocation because explicit current no-queue/no-runtime ruling supersedes routine cadence. Preserved38ba code and all1694 mapped rows+16 packet pins, rehashed current SHAbytes/Gitblobs. Sent4810–4819 owned-only contract/clock/canonical/publisher/reader/GC/outcome boundaries; Mos1824/1826/1830/1833/1837/1841/1842/1843/1844 selected bounded STATIC directions only. Reader-r3 0edf corrects unresolved helper references, childc365 beforeStore/reconcile fences, host3ba beforeleftover/Registry/root writes, common240d internalreadonlyguard,7 new controls ad69 unobserved; exactRAM dependency reconstruction, packet396f. GCf196 finalnativeintentcheck only, actualreentrantproof invalidation stillunfinished. Actual captured-R0 failed-unpublished-hire enum selected1842, extra publication-outcome boundary17c sources rename/fsync/log/lockrelease/settingsread;1844 writer-ownedtoken nativephases now proposed d767+12 unobserved tests6df2 and separately inspectable prosehold c0d7; actualB consumer/restartpositiveproof stillunimplemented/unselected. Single trackerposts6571293/1294/1296 and6581292/1295 all definitive exactbody/author13/readbackOPEN; an initial read-only comments response-shape mismatch preceded any write and was corrected via items pagination, no duplicatepost. No source/helper/test install, parser/Node/process/test/FS/proxy experiment, full/config/mutants/newreview/queue/global/FED288/landing/repin/taskclosure. Oldmaps/partials immutable; nextoperation4821 after substantive4820 handoff.
|
||||
|
||||
2026-10-26T04:47:04.289784+00:00 — Sage4821–4822 STATIC continuation: Mos1845 inspected utilities only; authoritative phase successor77c866 rejects created AFTERpublish unless actualprivateflow proves invocation never occurred.14 new unobserved writer requirements77a2 preserveold12 and demonstrate ignored/misrouted option ambiguity. Scopedpositivepublication question6dd/5bd selected1846 ONLYforfutureownedUNAPPLIED13-field witness, noactualconstructor/reader/GC installation. Tracked6571297/1298 exactbody/author13/OPEN readbacks. Additional required origin/decision coupling returned4325025a/7920 manifeste97a8c60/3251 BEFOREbytes: immutable PER-OWNER bounded64 registration because actualmodel-keys.test47/49/121/161/167 repeatsModelKeys SAMECredentials; no blanketone-managerrestriction/oldtestedit. Proposedopaque actualrequest→nativegenerationticket BEFOREPUT +monotonicpublicationhold onretainedhostcontext, notJSON/ephemeralhelperproof. Independent658 visiblepartialpointer guardf788/3947 centralizedselectedreadonlyrootclassification BEFORENEWexistingpointervalidate shortcut;2newcontrols8afa/1706 UNOBSERVED, controlledpendingnotactualcrashproof, packet41fe. Freshall1694+16SHAbytesGitblobTREE checkedcode38ba,source/indexcandidateunchanged. No source/helper installation/parser/Node/FS/process/proxy/test/gate/full/review/queue/global/FED288/landing/closure. Nextoperation4823 after4822substantivehandoff; actualBcallbacks/factory/joint656epochs/intentlastGC/warm/658fullinterruption/hosttransport remainauthoringwork.
|
||||
|
||||
2026-10-26T07:26:33.036846+00:00 — Sage4823–4824 STATIC continuation BEFORE/AFTER: candidate38ba and1694+16 pins remain exactGit/current, source tracked diff empty; no candidate edits/runs.1847 selected per-owner C-native brand/request-to-ticket-beforePUT/monotonic retained-host latch now has actual owned source bodies, actual adapter/ModelKeys intended-writer phase consumer and13-field positive publication writer/reader. Nine exact joint-r2 diffs text-reconstructed but explicitly INCOMPLETE/not installation-ready: actual B factory/native confirmation/typed656 proof-name-epoch join/full GC remain unwired; old511/REDs unaffected. Independent1848 native identity supplement fb22/e28be adds original pointer/root/pending dev/ino/nlink guards, and six new nativeEIO controls b359/8157 remain unobserved, not crash/concurrency/transport proof; later faults/types/oldcopy matrix open.1849 cold recovered-final-absence model-only proof scope recorded6571302, not native656 finished/absence authority and not implemented yet. Warm intent-only progress f425 plus context one-use/reconcile-null and closed-C guards897f/cf24 authored as corrected unaccepted overrides; no observed fix. Exact next interruption window after metadata cleanup before orgDELETE requires new external negative-handoff DESIGN decision b41e3113 before any path/schema/code. Tracker6571299/1302,6581300/1303 definitive entirebody author13 OPEN. No source/helper/test installation, moduleparse/Node/FS/process/proxy/test experiment, new gate/full/config/mutants/review/queue/global/FED288/landing/repin/closure. All647–658 remain OPEN; scoped source/evidence historical maps preserved.
|
||||
|
||||
2026-10-26T09:36:48.905968+00:00 — Sage4825–4826 STATIC continuation BEFORE/AFTER: code38ba and1694+16 exactcurrent/Git rehashed09:31, old511 scoped/history unchanged.1854 negative-only design d073/14916 fields+state/callers returnedb583, no marker implementation. Found current4actual656retry/reboot positives vsoriginal-request-only/freshHOLD conflict and returned3e500 before weakening/assertion changes;1855 selected one DESIGN comparison. NewR2comparison3c837/18999 proposes SMALL metadata-only registration+terminal chain, actual publisher/writer sealing and source-present native authorization; supersededunpublished1a2c had over-assumed originalphysicalsource mustsurviveuntilpub, correctedpreservingprovenance. No largearchive recommended/newpath/schema/outcometag/clear branch chosen. Independent actual native controller confirmation now source-authored from actual remove/confirmGET/401/fullview and moduleprivate registry; bothModelKeys.prepare callers pass token; Credentials CONSUMES snapshot/record/epoch beforeTMP andfirstfinal, readonlyactualfinished check neverabsenceauthority, runtime stop-map invalidation, existinglifecycleCrev guard mapping. Exact3diffsa84a/da9d/0d46 textreconstructed; higherBfactory/classifier/typednames/GC stillUNWIRED; nativeFIFO/bookkeeping mustnotbeclaimedreachedafterearlierprovenancehold.1854/55 tracked6571307/1308 definitiveactualauthor13/readbackOPEN. No source/helper/test installation, parser/Node/FS/process/proxy/test/gate/full/review/queue/global/FED288/landing/repin/closure. Nextstableoperation4827; currentformats/sealing/succession stillawaitseparateselectionbeforebytes; independentB/658remainopen.
|
||||
|
||||
2026-10-26T10:09:33.266521+00:00 — Sage4827 STATIC Mos1856 before/after: preserved current38ba/1694+16/511 and ALL original artifacts. One exact nested schema table now proposes final/tmp/intent native fingerprints and complete independently validated origin/publication digests, explicit decimal native stat encoding and organization/controller observation domains. No durable constructor/reader/path authored pending selection. Bound arithmetic largest variants2383/1118 bytes below8192, not protocol object creation. Writer seal and actual one-use raw publisher source proposals68da375f/4d480f5a direct38ba text-reconstructed ONLY, virtual7f96/9acc; sealed token refuses beforelock, same actual wrapper pending request/close ordering, created-after-invoke UNKNOWN, thenable hold, capturedR0/case15/hook semantics retained. These are publication-only utilities: native all-operation ledger/terminal producer/factory/typed656/GC/result-lease consumer NOT complete. Concrete actual valid-to-revoking C.issue unlink(model.tmp) occurs before future original revoking snapshot/intent ID; no future identity/exemption invented. Contract returns chain/postcleanup distinct result-lease/retirement directions,20 UNOBSERVED reached-boundary requirements. Packet5fa13344/9572 sentMos4827; OPEN657 comment1309 single201 exactbody/author13/readback. Source candidate remains unchanged; no installation/parse/Node/FS/process/proxy/test/gate/full/review/queue/global/FED288/landing/closure. Next4828; existing B/658 independent work remains authorized.
|
||||
|
||||
2026-10-26T10:32:05.431575+00:00 — Sage4828 Mos1857 STATIC before/after: current38ba/511 and1694+16 rehashed10:30 exactSHAbytesGitblobTREE; no product/helper/test delta. Corrected literal schema4f50793d removes nonexistent valid field and records1857 selection, leaves exact original formats/history preserved. Newowned UNAPPLIED DATA-only source readera3299bba/16029 virtuale2d3/15682 plus10DATAunit dcb466cb/6083 only inside diffs. Canonical exact type/domains/count-before-allocation/bounded nofollow readonly whole-chain/native reread code, no mkdir/write/unlink or ready/terminal constructors; actual factory/workledger/constructor/retirement still UNWRITTEN. Undelivered067/99ff/22dsource drafts preserved; strict hash/UUID string guard correction source-only no measuredfault.20oldcontrols unchanged plus14native/8reader reached requirements UNOBSERVED; absent module import not intendedRED. Separate ordinaryVALID->REVOKING DESIGNcomparison40165044/14819 identifies TMPunlink then finalreplacement before current strict intent; staging-only insufficient. R1 terminal-only proposal3bb corrected BEFOREdelivery because controller-only has no composite root/validterminal. CandidateA asks originalVALID Bintent +small actual transition witness/newnullableCurrentSources member selection, NO newtransition field/path/code authored/selected. Native write/receipt crash and allotherholds honest, no permanentordinaryvalid limitation. Packetb71063fd/11952 sentMos4828; OPEN657comment1310 single201 author13 entirebody/readback. No JSparse/Node/FS/process/proxy/test/runtimeexperiment/application/gate/full/review/queue/global/FED288/landing/closure. Next4829; nativeBfactory/GC/worklifetime/658independent remain.
|
||||
|
||||
2026-10-26T10:59:39.269094+00:00 — Sage4829 STATIC1858 literalrefinement BEFORE/AFTER: schema31c29/13030 exact17witness fields, order4f65/30567, consumers3fb9/8102,26unobservednative controls825b/5691; current38ba/1694+16/511 preserved. Proposedintent/attemptv2 requiredsixmember makesoldfive/v1 incompatibilityexplicit, no nullalias/migration; Wv1 progress/historicaloldVALID/nativecurrentREVOKING distinct. Budget131072/128MiB completepathentriesinclalias bytes beforealloc, witness8192, staticarithmetic3601notserializerproof. ReferenceW->I yieldsW-beforeIonlynativefullproof/noconsumer thenIlast/pub-before-origin/joinedrootlast; no missingfinal/cold/native656prooffromfingerprints. No transitioncode authoredunder1858; OPEN6571311 single201/exactbody/author13/readback; sentMos4829packet80b8/10016. Mos1859 nowselectsschemaversion/caps/nativeproducer/order for ownedUNAPPLIED sourceonly. Continuing4830actualsource, no sourceinstall/parse/Node/FS/process/proxy/test/gate/full/review/queue/global/FED288/landing/closure.
|
||||
|
||||
2026-10-26T12:21:16.986782+00:00 — Sage4830-4831 STATIC1859 BEFORE/AFTER: exact17W/v2I+attempt/six/sharedcaps/nativeproducer/WbeforeIselected, products38ba/511/1694+16 unchangedSHAbytesGitblobTREE11:25and12:14. Source-only fourutilitypartsfde9/14077: budget9ccb/r4 resourcecounternoauthority, attempt2/W1decoderreaderb044 typedlimitsintent262144/origin131072/pubW8192; ten+eightDATA tests9908/6f4UNOBSERVED. Sharedbudgetpercompleteactualtypedphase note3e25 forbidshelperreset/unknownwork; actualnativeCbinding/allfamilyrouting unimplemented. Continuednative2sourceadd152/10133 C5bae/MKee609: actualprivatequeue scopes/contextbinding3sites denyqueued/oldB borrowingA, sameR0/owner/privatefailed-newhireseal, oneusenativeclockdecisionbodyrevalidatesafterclock. CSourcePrepMaphasNOregistrationproducer/privatecapturehasNOcallsite, no positiveplaceholder/nativeCwriter/W/terminalproof; fullfactory/ledger/GC stillunwritten. CombinedemitterE2BIGprocesscreationfailedbeforeanyfilewrite, splitperfiletextemissioncompleted; sourceiterationspreservedunexecuted. Oneconcretenewcallerboundary10f6/8010: current38ba adapteronlypendingR0; uninstalledoutcomedraftinjectsA intoallinstanceSettingswriters, sealedA couldrefuselegitimateunrelatedhumanwrites; lease-running/firstwriteheuristicunsafeunderreentrancy. Recommendopaque intendedcommitbinding sixTHINTERNALruntime arg/privateopts/nativeWbinding, target/actor/args identity, preserveunrelatedR0+writerhooks;NOadapterdeltauntilscope. Alreadynolistedfiretransactionnull/noWriter remainsseparateunresolvedno-writeauthority. OPEN6571312/1313 single201/exactbody/author13/readback; sentMos4830/4831substantive. No sourcehelperinstall/JSparse/Node/FS/process/proxy/test/full/gate/review/queue/global/FED288/landing/closure. Next4832; actualCfactory/progress/metadata-key401/GC/result/658independentremain.
|
||||
|
||||
2026-10-26T13:14:58.870767+00:00 — Sage4832 STATIC1860 before/after (registered after authoring): baseline38ba/511/map69ce unchanged, all1694+16 SHA/bytes/Gitblob/tree remeasured13:10:37Z and source diffempty. Newowned four direct38ba diff proposals77e8 manifest17854,22artifacts+6dependencies/14sourcepins: Wcc9f virtualfd45/29585; MKr28350 virtual1ed2/50383; runtime5752 virtualb500/57247; businessdffc virtual4df2/31648. Sixth INTERNAL opaque binding passes onlymanagedhire/fire/DELETE, actualmethodchecks before native ticket, native consumptiononce/correlationNOTauthority, unrelatedB originalpendingR0/noglobalAoutcome and lockfence. Rejectwrong/replay beforeAoutcome mutation, createdafterinvoke/ignored UNKNOWN, preserve originalerrors during independentclose/release, case15 remainsbeforepublisher. InitialR1 preserved; source-only R2 prevents accessor/proxy SET falling through to unprepared lifecycle path, no product/test/assertion/helper/deadline change.34controls1aff2 UNOBSERVED requirements only. Native Cprep producer/rewrite/W/workledger/factory/metadata401/joint656/progress/GC/result remain incomplete, cannotinstall utilitygraph. ActualdelistedpresentmodelFIREtransactionnull/noWriter separate question13fd/2297 returnedbefore no-write enum/result/clear/restart bytes; no permanentavailabilitywaiver. OPEN6571314 single201/ENTIREbodyexactauthor13/readback. Substantive T3 handoff4832 delivered Mos. No sourceinstall/applicationparse/Node/FS/process/proxy/test/full/gate/review/queue/global/FED288/landing/closure. Next4833 independentnativeB/658 static remains authorized.
|
||||
|
||||
2026-10-26T13:23:26.975486+00:00 — Sage4833 STATIC1861 BEFORE: bounded DESIGNONLY for actual already-delisted/model-present FIRE branch; preserve38ba/1694+16/511 and all4832partial source. Trace original read/fireChecks/revoke/read, actual completeRevoke/C onefinalunlink and original runtime nonmodel/residual cleanup. Propose native branch+current local result association, oneuse closed-work consumer, distinguish writer CREATED/UNKNOWN/no terminal/rename fact; return any1854/56/59 clearing extension before bytes. No source/helper install/parse/Node/FS/process/proxy/test/gate/review/queue/landing authority.
|
||||
|
||||
2026-10-26T13:38:59.424908+00:00 — Sage4833 STATIC1861 AFTER: finalR2design f49c/18934 +actualidentity/worktable34e5/10353+caller3c98/6268+30unobservedrequirements1227/14749; manifestddd3/14867 pins9owned+8deps/16Gitcurrent38ba sources. Exact actual settings conditional404/revoke405/readreturn406 (R1line403commentnav corrected/preserved). Proposed nativefactory/branch enter-return/resultsidecar onlyactualmethod, actualCtypedlowerfinish/servicebookkeeping/residualprogress+closedbinding/lease/ALLcapablework/latestepoch/every401/freshWHOLEruns/storage/latches before intendedoneuseconsumer. Rawpublisher remainsSYNC; outerexistingasyncdrainoutsidewriterlock; management/local unknownnotterminalizedbyexception. Cresult factory/workledger/nativeW/metadata401/GC stillunwritten; no positiveplaceholder/localcompletionfromcallback/read/transactionnull. Proposed checked-snapshotR0 afteroriginaladaptercheck and finalR0afterread/reload/drain explicitlyNEWnonlockingpredicates, no ABA/globalimmutability; unrelatedB originalR0/noAtoken untouched. NativewriterCREATEDafterinvoke remainsUNKNOWN/no rename/nonattempt/dummywrite; cold1849/native656/result/no-record distinct. ONEscopequestion b09f/4384: separate SAMEHOST exactnoWriteFIRE eligibleexternalretirement replacesonlywriterresultconjunct1854/56/59, allothers/rootLAST retained. No suchrule/enum/clear/restartcode selected, no positiveDELETE/freshmissingfinal/latchreset/permanenthealthyholdwaiver. NativeC/source/W/ledger/B/GC/658independentcontinue. Full1694+16hashbytesblobTREE38ba13:36, prior4832all28artifact+14sourcesunchanged, scoped511/case15/fouroldretryrebootcontrols preserved. OPEN6571315 single201 ENTIREbody/author13/readback and MosT3substantivereturn4833 delivered. No source/helper installation/JSparse/Node/FS/process/proxy/test/full/gate/review/queue/global/FED288/landing/closure. Next4834.
|
||||
|
||||
2026-10-26T13:41:46.493164+00:00 — Sage4834 STATIC1862 BEFORE: prepare owned UNAPPLIED actual settings branch/factory/forwarding and adapter/predicate/closedbinding/local-result consumer source bodies; typed C native completion/closed-work/B/GC dependencies remain mandatory, not callback labels. Preserve38ba/1694+16/511/current old source/4832+4833 packets. No installation/parse/Node/process/FS/proxy/test/gate/review/queue/landing.
|
||||
|
||||
2026-10-26T14:12:46.483842+00:00 — Sage4834 STATIC1862 AFTER: selectednoWritebranch+samehostconsumer direction source-drafted5direct38ba diffs/virtual pins8485manifest21601,26owned+8deps/16sources. Wb0b6->31b1/31931; MKr2df0b->6d08/58361; runtime4dea->f7f9/57882; business647d->5310/35054; Cr2948b->dc0c/61666. Native actualfactory config/adapter attachbeforeoperations; onlyactualfireconditional nativeentry, originalrevoke/read return +exactnativeprivateforward; fifthINTERNALrevoke scope. Writer unusedbinding/firebranch separatefromcheckedcommit/outcome, originalR0/noAtoken forunrelatedB. Selectednew snapshotR0 afteroriginaladapter guard and finalR0 afterclosedwork/proofawaits areNONLOCKING; finalproxyconflictavoidsfalsekeptreceipt. NativeC capture actualconfirmation/snapshot/context BEFOREactualunlink/confirmed deletion; finished nativeflag ONLYafterownunlink/bookkeeping; private finished/currentcontext verifier; readonly completedroute no secondfinish. C native declaredservice method/residual observations, unknowninflightnotguessedsettled. Outer native source guards close-first/drain/readonlyprepare/ONEconsumption and nativebeforeafterinspector; ignored/substitutedmethodsuccessnotauthority. R1parts preserved. CRITICALhighernativeB/work/chainauthorityWeakMap ZEROregistrations, no publicsetter; native source/workledger/metadata401/WHOLEruns/storage/holds/latestprogress/typedGC/rootLAST factory UNWRITTEN, higherpositiveconstructorunreachable; no utilityinstallation/healthyavailabilityclaim. NativeCstrictlowercannotrebasedthroughtypedGCbyguess; genuineempty/coldassembledcompatibilitystillopen.30oldrequirements+3newguardsd7ccUNOBSERVED. Concrete currentclientpromise lacksnativeownedreq/res terminalticket; question006ac/6236 asksboundednativebeforeeffectworkgate+readonlyinspector internaloptions/no reverseimport/newendpoint/publicfield/stopauthority, UNKNOWNtransportnotremotehalt. No sixthclientdiffauthored. Full1694+16/past4832/4833 artifacts+sourcerehashed14:04 SHAbytesblobTREE38ba, source diffempty/scoped511/map69ce/names/assertions/deadlines/case15preserved. OPEN6571316 single201 ENTIREbody/author13/readback; substantiveMos4834delivered. No source/helperinstall/JSparse/Node/FS/process/proxy/test/full/gate/review/queue/global/FED288/landing/closure. Next4835independentnativeB/658 authorized; clientcouplingneedsselectionbeforebytes.
|
||||
|
||||
2026-10-26T14:19:05.310945+00:00 — Sage4835 STATIC1863 BEFORE: selected actual ManagementClient native workgate/readonly observation plus actual ModelKeys-beforeHTTP ledger; preserve ungated semantics/receipts/timing. Pin Node26.8.1 official docs/source and static localheader inference, no node process. Capacity128, no payload per-unusedgate duplication/no releaseforget-livework, preserve expected401disposal versus UNKNOWNerror. No install/parse/Node/FS/process/proxy/test/gate/review/queue/landing.
|
||||
|
||||
2026-10-26 Sage mos1864 course correction BEFORE:657/658 parked OPEN backlog at4835 static packet; no design applied. Source fixes641/642/643, assertions retained, independent Codex review, quiet-host full gate4 then authorized green/reviewed landing. Existing unrelated work preserved.
|
||||
## 2026-10-23 — Row 288 C2-02 build starts (Bubba, #1793)
|
||||
|
||||
Before: agents can read the library; supporting-path and push-credential dependencies are separate unlanded heads. After intended: per-seat supporting writes/deletes with exact notices, human revert and one commit per Console save. Work is on bubba/row288, chained on original 283/285/286 commits; 284 tool base still pending. Plan and acceptance evidence: agents/bubba/work/queue-288/BUILD.md. Untested; no Node/test/build/gate run before Sage CLEAR. Landing waits for every dependency's own gate.
|
||||
|
||||
2026-10-25 | Bubba | Row288 #1793 gate after landed284 | Candidate2848d832e:289 whole files rc0 (2604 pass,1 covered FED skip),12 scripts rc0,6 mutants killed/restored controls rc0. Own bare-delete and fixture reds fixed with driver restarts; no pre288 red. Per-run hashes/rc in agents/bubba/work/queue-288/gate-r6-results.tsv. Slot returned Sage bubba-0034; manifest review/landing pending.
|
||||
|
||||
2026-10-26 Sage BEFORE Mos1864 source timing repair: isolate193774 row288; distinguish interpreter probe timeout, deterministic owned-socket idle-clock test, async copy child completion, retain assertions; one independent Codex review then quiet fullgate4.657/658 are backlog, not landing blockers.
|
||||
2026-10-26 Sage SOURCE CHECKS Mos1864:641 injected ETIMEDOUT regression RED thenGREEN; keep1000ms fail-closed probe bound, distinct interpreter-probe-timeout.642 real-socket manual idle clock/readiness preserves assertions, ordinary-timeout mutationRED/restored.643 async owned child-close signal/readiness, all156 original assertions retained; combined39/39 zero anomaly; bus package1035/1035 zero skip. Independent Codex thread mcp:9245555c-5430-42f9-8afc-f77a70fc09ee pending; fullgate4/landing pending. No657/658 applied.
|
||||
2026-10-26 Sage Codex review/fix Mos1864: independent thread mcp:9245555c-5430-42f9-8afc-f77a70fc09ee found one introduced P2 (detached copy descendants escape external timeout TERM). Fixed via fixture-only active-pool signal handling/native child close; actual regression RED→GREEN. Final affected40/40 zero skip/cancel/fail; all original assertions retained, productionserver unchanged. One review, no extra design gate; fullgate4 now pending quiet-host launch.
|
||||
|
||||
2026-10-26 Sage Mos1864/1881 model join AFTER verification: reviewed330/331 product362893d043ff96fdd35f18e326cce683db031471/treea7f7fcd7fc2cc4ba06efad78627f5f04929a0740 has321whole-file native PASS plus actual FEDR7 1/1; originalR2 orchestratorrc1 counter defect preserved separately. Whole bus1349/model-proxy100/webui490 PASS on unchanged product. Final PIN8.0.42, config55, all4P4+4P2 exact named mutant kills and whole restored controls PASS. Counter independent Codex review found2P2, reproduced7RED then23/23fixtures GREEN; failclosed unknown/missing summary and either-format failures. Commit/tree recorded before/end same; all1968 current+committed inputs mapped49c162c99 before later artifacts. Source join fix isolates runner-safe vocabulary from host ProxyPage imports; exact graph expectations retained. Original setup/timeouts/cleanup failures preserved; no657/658 installed/backlog remains. Documented Poe acceptance alias is byte-identical tested helper, not separately executed. Authorized landing next; source frozen.
|
||||
|
||||
2026-10-26 Sage LANDING Mos1864/1881: origin/refactor52ba14c5f now contains product362893 plus map/evidence49c162c99 and documented acceptance alias. Canonicalrefactor fast-forwarded by CAS with only136 exact accepted paths restored; unrelated8Rocko staged deletions and all untracked preserved, source/index clean for packages/scripts. Product1968hashes still match before/end freeze. Full source641–643/row288 previously63ec/acd; now330/331 landed same authorized window with applicable gates complete. Actual queue331 done refused rc2: round3 no recorded Boyd/Dewey approval;330 remains Poe in-progress with no formal round. No review impersonation/bypass; metadata closure is separate hard-rule wait. Tasks655/656 comments1336/1337 exact wholebody/author13 GET-verified, remainOPEN;657/658backlog unchanged. Ops660 runner update1334 independently GET-verified; no heavy gate active/no VM selected. No further source or gate work needed for this landing.
|
||||
|
||||
2026-10-26T17:51:50Z Dewey POST-LANDING REVIEW Mos1909/Mos1915 (retrospective review-phase receipt, not a build): BEFORE code already landed under1864 at52ba14c5f/product362893d04; historical round3 CHANGES and missing approvals preserved. AFTER independent source/original-task/evidence review saved agents/dewey/work/queue-331/postlanding-mos1909/REVIEW.md; sha256 ab7edcb484a32093e9cb541032def275665f1572aa97bb118d2742f1f29fa97c. Scoped APPROVE;646-648/652-655 FIXCONFIRMED,656 PARTIAL against broader original wording with matching-revoking-tmp/single-final-completion repair confirmed. All1968map inputs match current+committed product;339existing raw log hashes verified; relevant owner execution outcomes inspected with FED skip/dedicated native1/1 and original R2rc1 distinctions preserved. New findings none;657/658 remain backlog. FILE ONLY: no actual verdict comment, queue approval, task closure, source/helper/test changes, Node experiments or new gate.
|
||||
|
||||
2026-10-26T17:56:44Z Filbert POST-LANDING REVIEW Mos1909/1915 #1828 row330 (retrospective review receipt): BEFORE product362893d04 already landed underMos1864 at52ba14c5f; canonicalround1 request4137/4138 failed pre-send, no comment/approval. AFTER independent static source/brief/evidence review APPROVE for landed originalP4 repairs/current-generation P2join; saved agents/filbert/work/queue-330/postlanding-mos1909/REVIEW.md sha256 0f93bc883f1db2d2e136323040eaff2ad79aa184fa5ab140c94a0ae906f70ffe. All1968committed mapped blobs/bytes/SHA256 match product/candidate/cited0e1dd0a95; current1966match plus2queue-tracking differences; all43 evidence hashes match. OriginalR2rc1 preserved separately from supplied321whole+FEDR7/native1 and completed package/PIN/config/eightmutant+restore phases. NEW-330-01 retiring-key Console metadata gap is task-ready separate follow-up only, no reopening/newgate. No test/helper/source edit or run, live/secret access, formalpost/queue mutation, commit/push/closure;657/658 BACKLOG unchanged.
|
||||
|
||||
2026-10-26 | Sage | mos1884/#662 scope after330/331landing | ReadQ222/Q261/Q263 and659/660/662; posted bounded human-only factory settings/triage/defaulttwo-roundmandate/trackedno-exemptionflake scope with10acceptance criteria, task662comment1338 exactwholebody/author13GETverified. No implementation/review/gate launched.660c1335notready(review/merge, noVM); gatefacts1329/1334 retained; target integration/fullrunner confirmation follows readiness, no localfallback. Landedproduct/evidence unchanged;657/658backlog.
|
||||
|
||||
2026-10-26 | Sage | Mos1909/1915/1917 real postlanding reviews | Boyd/Dewey/Filbert/Gladstone real authored candidate52ba verdictfiles independently byte/hash-verified, allAPPROVE scoped; Dewey656broaderPARTIAL retained. Formal330R1/331R4 requests failedpre-send/no comments or approvals; no borrowed/copied/mintedkeys. LegacyhelperGETname jason.woltje is NOT ownJarvis, ownslotabsent; rows tracking-open/#436, files cited via normalqueue. NewFilbertNEW-330-01 filedtask665 exactreadback, notlandingreopen/gate. Repair646-648/652-656 remainOPEN untilactualcomments;1917 conditionalbacklog routing retained. #662scope1338posted;660PR405REVISE/notready. Product1968inputs unchanged; no source/helper/test/gate edits/runs; peerjournal prefixes preserved.
|
||||
|
||||
2026-10-28T22:18:42-05:00 | Codex FIX-A4-001 project19 #710 BEFORE/AFTER | Isolated branch work/q284-web-fetch-ipv6-ssrf at exact base09a847ed; source pine5a7b647 and A4 report39380B/5ee6f798 verified. Focused web test baseline7/7; regression-first exact mapped-IPv6 literal/DNS/redirect run6pass/4fail; canonical-bit implementation then10/10pass. Changed only web source/test plus append-only receipts; no live/internal probe, scratch, dependency/install, heavy/full gate, commit, push, PR or API mutation. Full CI/cross-family/PR/release remain parent-owned.
|
||||
|
||||
2026-10-29 | Sage | #710 independent-review follow-up | Claude source approval of 4cf888c04 records LOW NAT64 policy disclosure: canonical classification refuses exact 64:ff9b::/96; the old text prefix also refused some addresses outside that range. Added explicit boundary tests; production source unchanged. Zone-suffixed inputs also fail closed. Other IPv6 transition/special-use ranges remain a separate deployment-dependent follow-up, not resolved here. Prior author no-commit statements describe that earlier session; local commit and Mos PR1834 publication followed. No native/CI/merge claim.
|
||||
2026-10-28T22:29:01-05:00 | Vikunja-19 FIX-156 legacy worker mounts BEFORE (late phase receipt) | Isolated worktree clean at exact base09a847edaa25b609bac7728ff83f224708a29399, branch work/vikunja-19-156-q284-worker-mounts. Required queue probe refused in linked worktree and was not bypassed. A2 SHA/whole report, I1 direction and legacy task/interactive/probe callers traced. Focused baseline13/13; TDD RED17 total=13 pass/4 intended failures for absent typed mount builder/per-path task argv. Receipt appended after first source pass rather than backdated; no container/native/live/provider/full-gate/API/PR/commit/push operation.
|
||||
|
||||
2026-10-28T22:36:00-05:00 | Vikunja-19 FIX-156 legacy worker mounts AFTER/source-verified | Static Compose root/control mounts removed; typed task/interactive/probe builder emits fixed per-file RO task/mission/user/SOUL/skill/control/fork inputs, only selected workspace/session RW, private mode0600 per-container prompt and no root/run-evidence/sibling/broker path. Unsupported/missing inputs refuse before runtime registration. Exact-base parsed Compose characterization fails with /var/lib/mosaic and /var/lib/mosaic/control present; focused RED13pass/4fail then user-file narrowing RED7pass/2fail; final two-file18/18 pass, syntax/diff checks and direct user+mission prompt mode600 check pass. Author self-review found no remaining Critical/Important source issue; no independent review by explicit no-children scope. No native confinement/container/provider/full gate or generic credential read; no commit/push/PR/API/release.
|
||||
|
||||
2026-10-28T22:35:03-05:00 | Correction to immediately preceding FIX-156 AFTER receipt | Its 22:36 timestamp was rounded one minute ahead; actual clock checkpoint was 22:35:03-05:00. Substance and evidence are unchanged.
|
||||
|
||||
2026-10-28T22:41:42-05:00 | Vikunja-19 FIX-156 atomic-control continuation BEFORE | Parent intake found the per-file `control/processing.json` bind pins the inode that `state.mjs` later replaces by temp-file rename, allowing a post-mount halt/generation change to escape final entrypoint admission. Exact branch/base remain work/vikunja-19-156-q284-worker-mounts at 09a847edaa25b609bac7728ff83f224708a29399; source-only TDD repair will restore a narrow rename-visible read-only control view without the data-root root, evidence, sibling state, socket, native/container/full-gate/API/credential operations, or integration authority.
|
||||
|
||||
2026-10-28T22:44:07-05:00 | Vikunja-19 FIX-156 atomic-control continuation AFTER/correction | Source trace confirmed `state.mjs` publishes `.state-<uuid>` with `renameSync` over `processing.json`; a file bind can retain the old inode. The typed launch now mounts exactly `<dataRoot>/control` at `/var/lib/mosaic/control:ro`, preserving rename-visible final halt/generation admission while leaving the data-root root, run/evidence/workspace/session trees and `bus/broker.sock` absent. Audited source-produced contents are `processing.json`, transient `.state-*`, and `runtimes/`, `stops/`, `run-stops/` runtime/stop metadata with transient `.receipt-*`; no socket producer targets `control/`. This supersedes the 22:36 per-file-control/no-runtime-receipt wording and clarifies the 22:41 "sibling state" phrase: read-only shared runtime/stop metadata is intentional, while sibling data trees remain absent. Focused TDD RED was 10 pass/1 intended fail (missing directory mapping) after real writer halt/clear inode replacements; standalone GREEN 11/11 and final two-file source GREEN 19/19, node checks 4/4, shell syntax and diff check all rc0. Existing native read-only mount negative and container CI were not run and remain required; no Docker/Podman/bwrap/native/live/provider/full gate, credential, commit/push/PR/API/release action.
|
||||
|
||||
2026-10-29T00:29:45-05:00 | Vikunja-19 FIX-156 R3 review repair BEFORE | Independent review report 12437B/SHA256 70daa15fdddfc83654821c99149dc84210a9bd7078614b60ff8e630e4fcb8a77 read in full. Branch is clean at published ee151685e9e15511407904397d73e4d82c37c85b, original base/merge-base 09a847edaa25b609bac7728ff83f224708a29399. F1 source trace confirms only the session-fork file bind is selected from inside a worker-writable directory and remains daemon-resolution TOCTOU; task/mission already use host-owned current-run write-once snapshots. Focused baseline19/19. Controls will require no-follow bounded descriptor copying to same-run evidence, original/foreign source refusal, immutable bytes after original substitution, and probe unsafe-user refusals; no native/container/full gate, install, credential, API, commit/push/amend or review dispatch.
|
||||
|
||||
2026-10-29T00:33:07-05:00 | Vikunja-19 FIX-156 R3 review repair AFTER/source-verified | F1 fixed without a new schema: newest session fork is opened O_NOFOLLOW/O_NONBLOCK, fstat regular/current-uid checked, capped at 16777216 bytes before allocation, copied from that descriptor only after stable size/mtime/ctime checks, and published `wx` as current `runs/<id>/session-fork.jsonl`; `workerLaunch` accepts only that exact same-run snapshot and refuses shared-session/foreign-run sources. Real fixture substitution after snapshot cannot change mounted bytes; newest symlink copies/mounts no target; oversize refuses before publication/Docker. F2 documented honest unselected-tree boundary and retained selected managed-business/discord namespace collision; parent follow-up must choose dedicated legacy prefix or explicit collision refusals/migration. F3 probe symlink/nonfile/colon refusals documented and fixture-covered. F4 exact deferred #660 list now includes `scripts/test-darkwing-launch.mjs`; list not run. INFO dispositions: I1 stale comment and unused Docker-client MOSAIC_DATA_ROOT removed with 9pass/1RED then10/10; I2 raw basename comparison eliminated by same-run slot; I3 accepted RO control metadata unchanged; I4 worker-owned private prompt unchanged; I5 gated placeholders unchanged; I6 incomplete predispatch run pattern unchanged; I7 external-path Pi fork remains native #660 evidence; I8 pre-existing Claude adapter env gap unrelated/unchanged. Baseline19/19; principal RED18pass/5intendedfail after one fixture-only setup correction; F1 GREEN23/23; final23/23, four Node checks and diff check rc0. No full package, shell suite, Darkwing compatibility, build, Docker/Podman/bwrap/native/live/provider/network/credential/API/PR/review/commit/amend/push/merge/release action; #660/native/cross-family gates remain.
|
||||
Q284 / #470 source-only security fix 2026-10-29T03:33:00.640624+00:00: pin worker base Node24.22.2 multi-platform indexsha256:c86ecead9e55a5210ac1727de38a4ca840bf03dcaf34dc9749addbf383b1920c, official registry metadata retained under docs/security/q284-node-base. Hash/digest/platform references checked; no image pull/build/runtime/test/CI/deploy. Current deployed Node states remain UNKNOWN. No frozen packet change; dedicated CI and cross-family merge review pending.
|
||||
|
||||
2026-10-29 | Sage | #470 independent-review repair | M1 binds preparation/verification baseDigest to exactly one literal digest-pinned Containerfile FROM; stale cached tag metadata cannot be substituted. Focused fixture TDD: 0/3 RED then 3/3 GREEN, fake build/inspection only, no Docker command or image operation. L1 docs corrected. L2 additive registry config hash/version binding retained; prior metadata receipt preserved with correction. Earlier no-commit statement describes initial source session; Mos then published PR1837. #660 admitted runner and fresh independent review remain required; frozen H1/packets unchanged.
|
||||
2026-10-29T03:27:31Z | Codex implementation sub-agent | #385 OIDC-only writer preparation on exact base 09a847edaa25b609bac7728ff83f224708a29399 | Added fail-closed CLI, programmatic and service-render refusals for `--send` without `--sso`; retained read-only header preview/proof; migrated inventoried writer tests to real in-process OIDC login/callback sessions and updated docs. Focused regression 5/5 and selected service cases 4/4 pass; syntax and diff checks pass. The broader writer suite is blocked before execution because the clean checkout has no `node_modules` and exact pinned `[email protected]` is unavailable; no install, commit, push, PR, queue move or green/completion claim.
|
||||
2026-10-29T05:49:53Z | Codex Daybreak Blue xhigh implementation sub-agent | CORRECTION and Mos2255 #385 review repair R2 | The 03:27:31Z dependency/no-commit statements are historical: exact pinned `[email protected]` is now materialized through the ignored `node_modules` fixture with no install, and original preparation is committed at `9936a1be1a37fdb30ba53cf2f14b7897225c3e4a`. On that unchanged HEAD, uncommitted R2 source/tests/docs make Case 2 library preview read-only until #412, drop inherited non-SSO `--send` during release planning, and refuse duplicate service `--send`. Focused RED was 0/2, 0/1, 0/1; focused GREEN and selected T53/T55/T57/T58 fixture blocks pass. No root/native/live/full-suite/CI action, commit, push, PR/API, merge or frozen/live-pin change.
|
||||
2026-11-02T18:03:53Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | #385 PR 1836 repair R3 on ab2bc23c7 | R2-F1: `scripts/stack-upgrade.sh` `read_args` now scans the serve argv after `--` and refuses `args-unreadable` before anything stops when the profile is library (no `--profile`, or the last one says library, as `case2-unit.sh` reads it) and `--send` is present; the message names the remediation, and the args file is never rewritten. `do_upgrade` and `do_rollback` both call `read_args` first, so rollback is covered; factory and tester paths are unchanged. RED on ab2bc23c7: new stack-upgrade case 0/1 (exit 2 rollback-failed, A4 and render-old failed, both units stopped), controls 1/1; GREEN 2/2. R2-I1: one component case runs the real `sso_for_target` then `send_for_target` on a legacy preview `--send` pointer, carried after `--sso` and before `--tester-socket`. R2-I2: TOOLS.md says a same-copy plain activate on a legacy pointer refuses already-active and needs `--no-send`. R2-I3: no code change; `uninstall`/`status` with `--send --send` exit 1, not 4, fail-closed either way. host-run-sheet section 7 gains the migration step. Whole files, one at a time: stack-upgrade 23/23 (69 s), stack-release 225/225 (608 s; a first run was cut by my 600 s background limit at 221 passing, its orphan fixture holder killed), case2-unit 48/48 (73 s). No root, systemd, container, network, push, PR or live action.
|
||||
2026-11-02T18:19:04Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | #385 PR 1836 repair R4 on d0ddfa8de | R3-F1 fixed fail-closed, no migration: `scripts/stack-upgrade.sh` adds `legacy_console`, called right after `read_args` in `do_upgrade` and `do_rollback`. For the library profile (same default and last-wins rule as R3), an installed Console unit under the driver's UNIT_DIR whose ExecStart has a `--send` token after `serve` refuses new code `console-unit-legacy` (exit 3, nothing stopped). A missing unit is left to `read_old` (`units-unreadable`). The R3 args refusal stays. `case2-unit.sh`, factory, tester, stack-release.sh and OIDC/#412 untouched. Tests in stack-upgrade.test.mjs run the real base renderer (`git show 09a847eda` of case2-unit.sh and both templates) in the module fixture with fake getent/systemctl to make the legacy unit, prove the current case2-unit.sh refuses it, then drive upgrade and rollback with the real current renderer as A4's RENDER. Controls: read-only library unit, factory host, missing Console unit. RED on d0ddfa8de code 24/25 (the main case exits 2 rollback-failed, both units stopped), GREEN 25/25 (70.1 s). host-run-sheet section 7 now gives a read-only grep of the unit and says stop and report when it carries `--send`. TOOLS.md lists the code. No hash pins on changed files. stack-release.test.mjs and case2-unit.test.mjs read no changed file and were not rerun. One local commit, no push.
|
||||
|
||||
2026-11-02T18:58:01Z | Q284 lead: FIX-156 release bump to 0.0.13 | The lead gate on lead/q284-land 418f00bce failed scripts/test-task.sh "mission and private prompt paths delivered to adapter" twice (94 pass, 1 fail). Cause: the local worker image mosaic-poc-agent:0.85.1-r0.0.12 was built 2026-10-21 from pre-#156 source; its baked src/run-agent.sh:39 exports MOSAIC_SYSTEM_PROMPT_FILE=/var/lib/mosaic/system-prompt.md over the launcher value. The test is right. #156 changes the image contract both ways: its run-agent.sh refuses when the launcher does not set MOSAIC_SYSTEM_PROMPT_FILE, which no pre-#156 launcher does, and its launcher with an old image drops the user context directory and the private prompt path. Rebuilding the shared 0.0.12 tag would break the live pinned copy and every rollback target, so RELEASE moves to 0.0.13 and the new image gets its own tag (compose builds it from source on first use; release.sh ensure aligns an instance). No code change. Live activation of 0.0.13 belongs to the next re-pin. |
|
||||
2026-11-02T18:55:26Z | Claude Sonnet 5.5 implementation sub-agent (lead T3 c5c1e8ba) | #385 PR 1836 repair R5 on 484aef7e2 | Test-only fix; no product file changed. The asset test in packages/webui/tests/chat.test.mjs still fetched `http://127.0.0.1:PORT/chat.js` bare, but since 9936a1be1 its `setup()` runs `sso: auth.sso`, and `serve.mjs:726` answers any non-public Host with 403 `public Host required` (the lead found it in the landing gate on lead/q284-land). The server is right, the test was stale. The test now fetches chat.js and chat.css through `c.get` on the public Host with the signed-in session (new `asText` option on the test `http()` so an asset body is not JSON-parsed), asserts 200, the content type and a non-empty body, asserts the same asset on the loopback Host gets 403 `public Host required`, and adds one line pinning that an unauthenticated public-Host request gets 303 to `/auth/login?return=%2Fchat.js` (`serve.mjs` 736-739), so the asset is not public. RED on 484aef7e2 29/30 (403 !== 200 at chat.test.mjs:350), GREEN 30/30. Whole packages/webui run 495/495, 0 fail (65 s). A first whole run gave 487/8, all 8 in pinned-copy.test.mjs: `fixtureRepo` copies `git ls-files -co --exclude-standard`, and a symlink named `packages/webui/node_modules` is untracked and not ignored (`node_modules/` matches directories only), so cpSync refuses it. That is an artifact of the symlink; the rerun used a real ignored directory of links. Observation, not changed: in `c.get` the `host` option is overridden by `baseHeaders.host`, so the existing POST assertion passing `host: 127.0.0.1:PORT` sends the public Host and exercises the Origin fence. No hash pins on changed files. One local commit, no push.
|
||||
2026-10-25 — Rockerduck row334 (#1832), before: Case 2 renders bus/Console only. Plan: reuse P1 proxy template/runner under --proxy, enforce three-unit re-install checks and proxy→bus→Console starts, cover refusals and both named mutants. Tests held for Sage CLEAR; design in agents/rockerduck/work/queue-334/BUILD.md.
|
||||
|
||||
2026-10-25 — Rockerduck row334 (#1832), RED evidence: whole case2-unit.test.mjs against baseline has 48 pass/33 expected new fail; whole case2-install.test.mjs has 27 pass/1 expected new fail. All 74 older tests pass. Implementations restored. Sage sage-4390 authorizes seat-branch candidate commit/push before GREEN; GREEN/mutants held until separate CLEAR after row331. Per-failure evidence: agents/rockerduck/work/queue-334/red-results.txt.
|
||||
|
||||
2026-10-26 — Rockerduck row334 Mos1961: integrated old candidate onto 09a847eda using documented rebase after diagnosing merge queue-guard refusal; old RED preserved. Whole case2-unit 81/81 and case2-install 28/28 pass; named After and direct-ExecStart mutants killed, restored tests 2/2 pass; all nice19, private temp roots, zero skips. No source edits after integration beyond temporary restored mutants, no push/live action. Source c4bba5d2a; evidence agents/rockerduck/work/queue-334/BUILD.md. Full landing gate belongs to Sage; live behavior UNVERIFIED.
|
||||
|
||||
2026-11-02T19:10:25Z | Claude Sonnet 5.5 implementation sub-agent (lead T3 c5c1e8ba) | row 334 (#1832) R2 on lead/r334-land at 2b3e3ec83 | F1: the test "row334 no-proxy renders stay byte-identical to the pre-row renderer" took its baseline from `git show 78b69e1e6:scripts/case2-unit.sh`, which still requires `--send`; #385 removed `--send` from the library flags, so the merged tree failed `1 !== 0` ("case2-unit: serve flag --send is required"). The baseline is now the frozen fixture `packages/cli/tests/fixtures/case2-unit-pre-row334-renderer.sh.txt`, the bytes of `418f00bce:scripts/case2-unit.sh` (git blob d669e8cbd), and the test checks the fixture blob id before it runs. The fixture ends in `.txt` and is mode 0644, so no `*.sh` listing picks it up; stack-copy and stack-release already exclude `packages/*/tests`, and COPY_PATHS does not name it. F3: the re-install refusal in `scripts/case2-unit.sh` now also names `--proxy`; the pinned regex at case2-unit.test.mjs:593 follows it, and one new test covers adding `--proxy` to a no-proxy install (refuses, bytes unchanged, no systemctl call). F4: the "both units" comments (header, re-install comment, and the WantedBy comment near line 467) now name the bus and Console units, and the proxy unit under `--proxy`. No product logic changed. RED on 2b3e3ec83: the one test fails `1 !== 0`. GREEN: that test passes; case2-unit 83/83 (82 s), case2-install 28/28 (11 s), each run once; the three row253 C4 clock tests passed on the first run. Hash pins: the grep over `packages/*/tests/*` and `scripts/test-*.sh` found one pin in a file that names case2-unit.sh (case1-accept.test.mjs:802, which hashes case1-accept.sh); none on a changed file, and case1-accept.test.mjs was not run. F2 (stack-upgrade.sh and `--proxy`) is not touched. One local commit, no push.
|
||||
2026-11-02T19:04:01Z Lead sub-agent (Claude Sonnet 5.5) ROW 173 R3 #1671 (Seen-intent test fix on lead/landing-batch1, base 09a847eda): BEFORE `MOSAIC_REQUIRE_EDITOR_BUILD=1 node --test packages/webui/tests/board-held.test.mjs` gave 4 tests, 3 pass, 1 fail ("a Seen or Unsee click that waited out a Board read keeps its meaning"), timing out at board-held.test.mjs:207 on the sessions table and held rows before any click. CAUSE: the row 173 test called setup(false), which starts the page with Show machine sessions off, so table.sessions never renders; its sibling at :168 uses setup(true). Not base drift: the same single test fails identically on a detached checkout of dewey/row173-r2 tip 6d15eb5fc20a (based on 78b69e1e6). The test had never run (BUILD.md: "no runs yet"). FIX: board-held.test.mjs:198 setup(false) to setup(true), one token; app.js unchanged. AFTER the test passes (1/1); whole board-held file 4 tests, 4 pass, 0 fail; whole webui package `node --test tests/*.test.mjs` 491 tests, 491 pass, 0 fail, 0 skipped. Teeth check: with app.js reverted to the pre-row-173 behavior (no intent check, seen: !r.seen) the test fails at the announce wait; app.js restored byte for byte. Hash-pin grep (packages/*/tests/*, 33 hex lines, positive control account-migration pin found): no pin names board-held.test.mjs or app.js. Comparison worktree and links removed. Not run: scripts/test-*.sh (lead gate). Corrects the r2 BUILD.md claim of no runs; no earlier entry edited.
|
||||
2026-11-02T19:27:10Z Claude Sonnet 5.5 (child of lead c5c1e8ba) row 267 (C2-15, #1772) R2, F1 search hits carry their source universe: BEFORE `search()` in packages/library/src/query.mjs returned hits without `universe` in both shapes (normal and excerpt_too_long); find already carried it; hybrid.test.mjs reduced search hits to paths and passed. AFTER both shapes carry `universe: file.universe` after `scope`, as find does; hybrid.test.mjs asserts the source universe under both exclude forms (own file and a source's canon) plus a new oversized-line case through the hybrid; the broker C2-15 case asserts it on library.search; query.test.mjs:178 shape pin gains universe. RED 4 of 21 failed on the missing field. GREEN the two files 21/21, library 182/182, business 284/284, bus 1351/1351 (see correction). Mutants: universe off the normal hit killed by 3 tests, off the excerpt_too_long hit killed by 2. F2 (hybrid source exception ignores source scope in reader and guard) not touched, lead files it. Correction recorded honestly: the first bus run in a checkout without node_modules failed 3 tests in model-hire-ownership.test.mjs, also failing on base 09a847eda, and pass with node_modules linked; a second bus run with the link failed 1 test in model-final-completion.test.mjs that passed 3 of 3 alone on this tree and on base; a rerun was 1351/1351. No push.
|
||||
2026-10-26 — Fethry Mos1961 P3/P2 actual join on09a847ed: metadata-first/one actual modelPreflight key through harness,private spawn,binding and stall;explicit provider-identity mapping preserves existing zai/anthropic;proxy strict route. TDD new RED→GREEN plus117/117 targeted wholefile checks,zero skips;original653/655 bodies/assertions/deadlines and runtime/process/modelkeys unchanged. Preserved nonproxy fixture-key RED and exact127 /usr wrapper→unmounted /opt ELF failure;minimal approved fake-key prerequisite/proper executable pin,focused andwholefile recheck. No P5 overlap,#662,fullgate,push or live-provider claim. Full evidence agents/fethry/work/queue-332/join1961/.
|
||||
|
||||
2026-10-26 — Fethry row332 named mutants3/3 killed on unchanged d6dc04e84 source: OAuth-only env leak1/1RED→restored2/0;literal models-file key5/2RED→restored7/0;serialized session key1/6RED→restored actual-context7/0. Exact anchors/all6 source SHA restoration,private/nice19/originalbound receipts andcleanup0. HeavyM3 after227SLOTBACK only;directSLOTBACK toSteelbeak+Sage afterward. Receipts-only localcommit,no push. Fresh review/fullgate/live acceptance still pending;not fullacceptance.
|
||||
- 2026-10-24 — steelbeak — #1728 / row227 before: transplanted Gizmoduck's unrun C2-14 driver and packet onto refactor487500a16 (471717c59/8039fc1a9). Recovered one-driver/sync-retry/read-only-store choices; replacing no-launcher stand-in with landed row217 harness. Landed-row skips need activation; row288 write/revert/save dependency remains open. Static only under sage-4166; no Node/npm/tests before CLEAR. Notes: agents/steelbeak/work/queue-227/BUILD.md.
|
||||
|
||||
2026-10-26 | Steelbeak | Mos1961 row227 preparation: rebased UNTESTED56233337b onto09a847eda, local HEAD5a0c801cb; append-only log conflicts retained both sides. Reconciled actual save/project, editor.user and lookup tuple APIs; added operation-local push credential/result assertions and observed managed library_get before C2-06 reply adapter. All17 original names/order/assertions/deadlines retained; private driver HOME/config. Whole five-file script manifest and177-file literal-import closure prepared. Static shell/whitespace/source checks only; no Node/npm/run/tests/push/dispatch. Await serial227 slot after334/332; parent owns gates/review/landing. No662/657/658 code,331 tracking not a product hold.
|
||||
|
||||
2026-10-26 | Steelbeak | Row227 first whole targeted acceptance RED beforeS1a, exit1/0.49s: credential-format. Isolated npmci root/webui0; rawstdout281bytes SHAefd9e00b7b292f96e62d8672a09ffcfdfe31182bb82b45277b22836e39e61479; pins beforeafter identical. Source diagnosed fixture13/12/13 vs credentials minimum16; fixture-only18/17/18 remediation prepared, not rerun. Additional observed strictnice failure bash-4/driver16 despite outer nice19 remains UNRESOLVED, no scheduler/deadline changes. Observed owned survivors0, private root removed. Full first-run evidence agents/steelbeak/work/queue-227/runs/first. No GREEN/fullgate/admission/push/dispatch; SLOTBACK to parent.
|
||||
|
||||
2026-10-26 | Steelbeak | Row227 authorized owned native-priority gate prerequisite: Python self/preexec19 plus quiet Node own set/getPriority preload, separate receipts. Probe Node/directchild native19 exit0/no drift. Corrected whole acceptance then STOPPED exit143/0.288s beforeS1a on measured post-preload drift e2ePID2598465 native19 then16; bash-4. No daemon attribution proven/no scheduler remediation/rerun. Rawstdout36bytes SHAa695ba02e8fcfe4b103fba373fb7b7eabb3736086eccde37fb3df7797c0a1a27, pre/postpins unchanged, survivors0/private roots removed. FirstRED immutable; separate runs/priorityprobe and runs/corrected1. Parent boundary report, no global/fullgate/live traffic.
|
||||
|
||||
2026-10-27 | Steelbeak | Row227 R1 CHANGES static response, reportSHA30bc5f1f... verified/fullread. APPEND-ONLY CORRECTION: actual fake lengths14/13/14->19/18/19; earlier13/12/13->18/17/18 metadata wrong, existing valid current values unchanged. Prior packet39f149fb and consumed evidence immutable. Prepared owned PID/start ancestry monitor without global nice/argv scan or Node exemption, fail-closed pins/capture/receipts/cleanup, real launcher/bwrap/runner/adapter identity-release preload route through fixture-only seam; added own made-up ZAI fixture key for joined real P3 preflight plus leak/history guards. No product/preflight/ENV_ALLOW authority edits, Node/parser/tests/priority execution, commit/push; fresh independent R2 review and1014 admission still required.
|
||||
|
||||
2026-11-02 | Lead sub-agent (Claude Opus 5.5, under T3 c5c1e8ba) | Row 227 R2 (#1728): test-case2.sh now runs standalone. Removed every tie to the R1 slot controller (ROW227_CONTROL_ROOT, nonce and permits, priority.mjs, owned bwrap wrapper, controller cleanup marker); leak check reads fixture-credentials.mjs; driver under env -i with TMPDIR in the sandbox; cleanup bounded to 3 s then SIGKILL. R1 red 0.294 s confirmed; all 17 steps passed with no step fix; two green runs 4.96 s and 5.74 s; mutants m1-m5 red at S2b, S3c, S4, S5b, S6, m6 (requireCitation) survived and is a follow-up; tip check on fddae79ef green 5.05 s, no conflicts. Code 04e1ce24c; record in agents/steelbeak/work/queue-227/BUILD.md "R2".
|
||||
|
||||
2026-11-02 | Lead sub-agent (Claude Opus 5.5, under T3 c5c1e8ba) | Row 227 R3 (#1728): test-case2.sh sandbox guard. A failed mktemp, mkdir or output redirect now exits 2 before any path, trap or process; the root must be a new empty directory of this user, kept as its physical path with its device:inode, and sweep_sandbox and remove_sandbox in scripts/case2/sandbox.sh refuse on their own unless it still matches. The kill sweep compares cwd targets as strings (root or root plus "/"), so *, ? and [ are literal, with one find over 1031 links in 56 ms. A TMPDIR whose tools.sock path would pass 107 bytes is refused at entry (TMPDIR plus 64, so at most 43 bytes). R2 red shown on dummy links only; failure controls green inside a fresh PID namespace; bracket control killed 3 sandbox sentinels and spared 4 lookalikes; plain runs 5.64 s and 5.20 s; TERM and INT closed in 130 to 1247 ms, a held driver in 3.07 to 3.10 s; tip check on 5df0e9d6f green 5.18 s, no conflicts. Code abc66a598; record in agents/steelbeak/work/queue-227/BUILD.md "R3: the sandbox guard".
|
||||
|
||||
## 2026-11-02, Vikunja #780 and #781: two gate flakes made deterministic
|
||||
|
||||
Before: project read.test.mjs "path history is bounded at 100" failed with a raw ENOENT on .git/objects/pack/tmp_idx_*,
|
||||
and webui preview.test.mjs:209 got 200 where it expects 502. Code 7e0d3c93f (#780), 1009bbfaf (#781), not pushed.
|
||||
|
||||
Causes, each confirmed
|
||||
- #780: the fixture git helpers ran a bare git commit. Git 2.55 then starts a detached "git maintenance run --auto"
|
||||
that repacks the fixture repository and creates and removes tmp_idx_* and pack temp files while inspectGit walks
|
||||
.git (trace2 capture shows the spawn). inspectGit lists a name, the file is gone at lstat, raw ENOENT escapes.
|
||||
SAFE already carried maintenance.auto=false and gc.auto=0 for product git calls, so only the test helpers and
|
||||
inspectGit's own walk were exposed.
|
||||
- #781: leasePort ignored {closed:true}. Without a lane it probed an ephemeral port and closed it, so nothing held it
|
||||
and a parallel test file could bind it and answer. With a lane the per-port lock was held but no socket was.
|
||||
|
||||
Design
|
||||
- #780: the project, bus spec-fixtures and webui tester-fixture git helpers pass -c maintenance.auto=false
|
||||
-c gc.auto=0. inspectGit maps ENOENT from a listed entry's lstat or a directory readdir to ProjectError
|
||||
project-repository "git metadata changed during inspection": it refuses, never skips or retries, because the
|
||||
metadata did not hold still. A missing .git keeps its own error. The pin test replaces fs.readdirSync
|
||||
(syncBuiltinESMExports) and removes the named entry inside the call, file and directory. No production hook.
|
||||
- #781: leaseClosedPort holds a bound, non-listening socket in a perl child until the test's after hook. Connects get
|
||||
ECONNREFUSED, other binds get EADDRINUSE, the kernel's bind(0) skips it (checked over 200 allocations). Lane mode keeps
|
||||
its band and per-port flock and releases the socket before the lock. The child exits on stdin EOF, so an abrupt death
|
||||
releases it. leasePort now refuses a closed option, so a stale call cannot get the unheld port again.
|
||||
|
||||
Choices and tradeoffs
|
||||
- Rejected a listener that resets on accept: the client sees ECONNRESET or UND_ERR_SOCKET depending on timing, and
|
||||
service.test.mjs:473 asserts "unreachable (ECONNREFUSED)". The bound socket keeps every assertion unchanged.
|
||||
- preview, webui serve and service (4 sites) take leaseClosedPort(t), which needs perl and fails closed naming it without.
|
||||
stack-release freePort, control-board getFreePort and tester-cli freePort listen on the port themselves, keep leasePort
|
||||
and drop the ignored option. Those keep a probe-then-bind window; closing it needs the caller to bind, out of scope.
|
||||
- The first mutant run hung: my new tests did not release holders on a failed assertion. They now drain in t.after.
|
||||
|
||||
After (pass/fail/skip): project 42/0/0 1.2 s; webui 496/0/0 69.5 s; control-board 130/0/0 0.8 s; stack-release.test
|
||||
225/0/0 628 s; gate-lane-fixtures 13/0/0; gate-lane 13/0/0; bus and harness spec-fixtures importers 100/0/0 15 s; library
|
||||
sync, mirror, case2-install 69/0/0; read.test.mjs 10 of 10 green. No hash or size pins on any changed file. Mutants, each
|
||||
restored by git checkout with a clean status: closed lease probes and closes again, and holder released immediately, each
|
||||
killed by three gate-lane-fixtures tests; leasePort accepts closed again, killed by its refusal test; inspectGit mapping
|
||||
removed, killed by the read.test.mjs vanished-entry test.
|
||||
|
||||
## 2026-11-03, Vikunja #780 R2: fresh recursive lstat restored; corrections to the R1 entry above
|
||||
|
||||
- The R1 walk change was broader than the ENOENT mapping. Passing the parent's stat into the recursive walk dropped the
|
||||
fresh lstat at recursive entry: a directory replaced by a symlink after its listed stat passed the stale check and
|
||||
readdirSync read through the link; one replaced by a regular file leaked a raw ENOTDIR (GPT review P2).
|
||||
- The tester-cli freePort helper (packages/webui/tests/tester-cli.test.mjs:21) has no callers and binds nothing; the
|
||||
active tester CLI test uses a private Unix socket. R1 wrongly counted it among the callers that listen themselves.
|
||||
- stack-release.test.mjs:2051 and control-board serve.test.mjs:78 still probe, close, then bind: a known risk, and
|
||||
the lead files a follow-up.
|
||||
R2, code 1977f4ffc, not pushed: walk(directory, root) stats with root ? lstatSync : statEntry and recurses walk(path),
|
||||
the reviewer's control shape; .git keeps its raw lstat, the mapper stays ENOENT only. Two read.test.mjs tests swap a
|
||||
.git/objects directory, inside its listed lstat after the real stat, for a symlink to a fixture-only outside directory
|
||||
or a file; both refuse "expected local .git directory", and were red on 9944100ad (symlink resolved, raw ENOTDIR).
|
||||
Mutant walk(path, entry) using the passed stat: killed by both. project 44/0/0; read.test.mjs alone 11/0/0 5 of 5.
|
||||
## 2026-10-26 — row333/P5 Mos1961 implementation begins (Codex)
|
||||
|
||||
Base 09a847eda on isolated t3/model-proxy-p5-quota-usage includes landed 362893d04. Accepted scope: human-only per-key quotas and optional value-free usage queue polling; no 657/658/662 work, live proxy/accounts/credentials, broad gates, queue mutation or push. Parent owns independent review and landing. Runtime overlap coordinated with Sage: collector wiring/tick/close at createUsage; Fethry owns launcher/proxy context. Evidence: agents/codex/work/queue-333/BUILD.md.
|
||||
|
||||
## 2026-10-26 — row333/P5 Mos1961 scoped candidate verified (Codex)
|
||||
|
||||
Implemented human-only model-key quota settings and human-only optional usage plugin/poll changes, native per-key accounting with trusted current/retiring run attribution, bounded management queue reads with immediate client/upstream value hashing, append-only telemetry isolated from quota decisions, and proxy-labelled Console numbers. No schema/deadline/role/launcher/harness/session/business-route changes. Parent-authorized additive usage registry inventories retain every old entry/assertion. Original limit-stop exact subject assertion caught an extra-run regression; retained RED18, reported before retry, corrected production through separate internal context without changing that assertion. Further missing-context and supplied-ID bypass tests fail closed.
|
||||
|
||||
Final scoped current whole-file proof: 174/174 PASS across 24 files, serial nice19/private config and tmp roots, unchanged budgets. Upstream-value mutant killed (4 failures), restored byte-identically, positive restoration plus final GREEN. Evidence and 202-input source freeze: agents/codex/work/queue-333/BUILD.md, source-inputs.sha256 and receipts/24-final-current-wholefiles-green.txt. Own scratch cleaned; worktree retained. Parent owns fresh review and admitted combined/full/browser gates under1014.Q264. No queue mutation, remote post, push, merge or landing.
|
||||
|
||||
## 2026-10-26 — row333/P5 independent R1 CHANGES repair begins (Codex)
|
||||
|
||||
Same isolated branch at503b91e; original history preserved. Verified complete real review SHA2567c95672a30c0d5c39189c7c7d610ada89cd539dcb9413617071fbb81200fd008; findings: P1 foreign-listener queue drain after identity refusal; P2 plain twelve-hex legacy account reinterpretation and empty-check metadata lookup; P2 startup blocked on optional first poll. All source-confirmed. Sequential RED→GREEN repairs in P5 ownership only; receipts/review/response at agents/codex/work/queue-333/r1-repair. Parent retains new independentR2 and heavy/full/browser/combined gates. No queue mutation/push/landing.
|
||||
|
||||
## 2026-10-26 — row333/P5 R1 local test priority STOP (Codex)
|
||||
|
||||
Mos1971 priority correction applied: earlier R1 nice-only behavior receipts01–06 are priority-unverified. First own-native setPriority/readback attempt07 observed real drift: testPID2643590 entered19, finished16; wrapper2643577 entered19, finished16. Exit78 UNVERIFIED/STOP; six behavior assertions do not establish GREEN. Node test-runner root did not run the forwarded preload, so direct-child handshake capture was incomplete too. All local test execution stopped; no scheduler change/retry. Continue only authorized source/regression preparation for admitted runner, preserving503 and everyrawreceipt. Detailed evidence agents/codex/work/queue-333/r1-repair/RESPONSE.md.
|
||||
|
||||
## 2026-10-26 — row333/P5 R1 source packet preparation (Codex)
|
||||
|
||||
All3 R1 fixes authored without subsequent local execution: serialized fresh/sticky instance identity fence before queue drain; shared validated daily-model leaf classification restoring plain12hex account semantics and no-check bypass; initial optional poll moved to the same supervised background singleflight path as interval polling. Current controls cover matching/foreign/no-issued-key identity, native current/retiring attribution, legacy matching/report/chief reset and old/new daily fences, held-response native readiness/work/release/failure and unchanged5000ms close deadline. Existing503 cumulative-model fixtures retargeted to accepted daily leaves or plain legacy-account semantics; pre-P5/base assertions/deadlines remain.
|
||||
|
||||
Owner directed static-only fallback after actual nativepriority drift: no new product commit, original503 HEAD retained, R1/rawhistory preserved. Full source/test diff, original503+controls baseline and fixed overlays, exact bytes/SHA256/size/Gitblob pins, static dependencies and24+4 whole-file list are prepared under agents/codex/work/queue-333/r1-repair/packet. Static pins are not consumed-source/runtime provenance; all current controls need admittedrunner native root+actualtestchild strict19 evidence and realRED/GREEN before any productcommit. Parent owns pending1014 gate entry/profile, independentR2 and later integration/full/browser/landing; no source freeze will be silently changed.
|
||||
|
||||
2026-11-03T00:12:08Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | row 333 (#1831) R3 rotation fix on t3/row333-r3-fix, product commit 3692fca52 on b37cc5087 | Ruling 1: a daily key quota follows the agent's key lineage (current, retiring, then up to 64 earlier ids kept in a new optional `previous` field on the model record), so rotation and re-issue keep the quota and its count; an id in two lineages refuses proxy-key-refused; a fired agent's leaf is orphaned, limits nothing, logs limit-key-orphaned once and is listed in the Console usage view. Ruling 2: key-quota-no-model-key for an agent with no model key under a key quota, passed through by name. Ruling 3: covered by the lineage, no mayLaunch change. Ruling 4: the usage module gets one frozen object holding readUsageQueue only. Ruling 5: every telemetry fixture wait rejects by name at a real-timer deadline. Runs: bus 1393/1393, plugins 132/132, business 293/293, webui 499/499, cli stack-release 225/225, stack-release-external 25/25, stack-upgrade 25/25 and launch-limit-checks 5/5; no skips, the model-final-completion flake did not appear; mutants M1 to M4 and M4b each killed. Departure: the human settings writer still stamps a new since on a renamed leaf, so a moved leaf restarts its count; follow-up recommended, not built. No migration, push, queue or PR action.
|
||||
|
||||
2026-11-03T01:27:26Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | row 333 (#1831) R4 since carry fix on t3/row333-r4-fix, product commit f65faf9df on fe3ef5128, BUILD.md R4 section a13050012 | Ruling 1: the bus runtime passes launchSettings a key lineage lookup read from its own credential records (ids only); a new daily key quota takes the earliest stored since among the old document's daily key quotas in its key's lineage, now only when there is none, so a quota moved from a rotated or re-issued key keeps its count; a reset still sets now, a caller since still refuses, a quota removed and added back later is new, and a failed or malformed lookup refuses proxy-key-refused. Ruling 2: every limits refresh updates the remembered orphan set, empty when no daily key quota is left, so remove then re-add logs again; in memory only, a restart observes afresh. Ruling 3: the poll barrier's last yield is on the captured real setImmediate inside the deadline. Ruling 4: BUILD.md records the 64-id bound as a limit and corrects R3 departure 4 (a late queued event loses telemetry attribution to the reconcile log; not a quota bypass). Runs: bus 1397/1397, plugins 132/132, business 295/295, webui 499/499 (run 1 498/499 with editor-browser.test.mjs:93 timed out under load, the file 16/16 alone, then 499/499 twice), cli stack-release 225/225, stack-release-external 25/25, stack-upgrade 25/25, launch-limit-checks 5/5, harness tools 23/23; no skips, the model-final-completion flake did not appear; mutants M1 to M4, M4b and M5 each killed. Not run: 19 cli files that import bus runtime.mjs without pinning it. No migration, push, queue or PR action.
|
||||
|
||||
2026-11-03T02:41:07Z | Claude Sonnet 5.5 implementation sub-agent (lead T3 c5c1e8ba) | row 333 (#1831) follow-ups on t3/row333-followups, base 1ff45c4ad, commits 3dc824ea1 (#783), 38cfa7233 (#778), 0e7e203db (#779), 5fbf3d2b5 (#782) | #783: a failed lineage lookup now keeps only the remembered orphan ids the refreshed document still holds and adds none, so a leaf removed and added back during the failure logs again; quota decisions are unchanged and a failed lookup still refuses. #778: createProxyUsage counts, per business and in memory, a batch the proxy gave up and the bus did not write; the Console shows the count only above 0 and the log code stays proxy-usage-read-failed. Departure from the brief rule (a read that throws drained nothing): a proxy-client-response error counts as a drop, because the client had already taken a 2xx answer off the queue; down, redirected and non-2xx answers do not. #779: the business-imports helper reads imports with a scanner, no parser dependency; comments are blanked, string and regular-expression contents are not matched, a spaced dynamic import counts; a non-literal dynamic import, an unterminated construct, a missing or non-file target and a real path outside the repository throw; 13 tests on small trees, 8 fail on the old helper; the real-tree output is unchanged. #782: the control-board refusal test holds its own listener for the whole test; stack-release T-I4 takes a closed lease because its port only reaches refused installs. The other 22 freePort callers hand a port to stack-release.sh rehearse, which probes it and starts a Console later; that needs a script change (accept --port 0, start serve on port 0, read the bound port from the Console line, run the reserved and holder checks after that), so it is a design, not built, and no retry was added. The remaining window is a process outside the lanes taking the probed port between probe and listen; lanes use 61000-61255, outside the ephemeral range. Runs: bus 1402/1402 plus its 1-test file, webui 500/500, control-board 130/130, cli stack-release 225/225, stack-release-external 25/25, stack-upgrade 25/25, launch-limit-checks 5/5, business-imports 13/13; no skips; neither known flake appeared. Mutants: keep the whole remembered set killed by the #783 test in p5-key-lineage; count a pre-read failure as a drop killed by two proxy-usage tests; drop the containment check killed by the #779 outside-repository test; startServer opening a loopback socket before refusing passes the old control-board test and fails the new one with EADDRINUSE. No push, queue or PR action.
|
||||
|
||||
2026-11-03T03:00:17Z | Claude Sonnet 5.5 implementation sub-agent (lead T3 c5c1e8ba) | row 333 (#1831) follow-ups R2 fix on t3/row333-followups-r2-fix, product commit d3b6ab11d on 2ba22b4cb | #779 scanner findings: a dynamic import inside a template substitution (${...}) now throws "unsupported import inside a template substitution" naming the file, so the existence and containment checks no longer miss it; a substitution is read as code to its closing brace (strings, comments, nested templates and braces handled), refused only if it holds a dynamic import, `${import.meta.url}` and `${x.import}` stay allowed, and a substitution with no import is dropped as before; a template nested in a substitution is now read to its end instead of misread. A slash after `++` or `--` is division when the character before the pair ends an operand (`n++ / 2`) and a regular expression when it does not (`x = ++/re/.lastIndex`); the one rare form still misread, a prefix `++` applied to a regular expression member right after `)`, `]`, a word or a line break, is named in the header. Real-tree output byte-identical (6 files, sha256 b5772c3a). 6 new tests: 4 fail on 2ba22b4cb (two substitution refusal tests, the unterminated-substitution test, the postfix test) and 2 guard tests (allowed substitutions, regular expressions after operators and prefix ++) pass on both. Runs: business-imports 19/19, stack-release-external 25/25, no skips; M1 (no import check) and M2 (no postfix rule) killed, extra M3 on the prefix guard killed. Not run: stack-release and stack-upgrade (they import the helper, no pin on it; the landing gate runs them). No push, queue or PR action.
|
||||
|
||||
2026-11-03T03:15:55Z | Claude Sonnet 5.5 implementation sub-agent (lead T3 c5c1e8ba) | row 333 (#1831) follow-ups R3 fix on t3/row333-followups-r3-fix, product commit 180fb8ab0 on 42c72d781 | #779 P2 from the R2 re-review: the lookbehind in DYNAMIC and in the dynamic branch of IMPORT excluded any dot before `import`, which also skipped the last dot of `...`, so `${({...import(target)})}` returned [] for an existing, a missing and an outside target and `{...import(name)}` in plain code was neither found nor refused. Both patterns now build from one fragment, IMPORT_WORD = (?<![\w$])(?<!(?<!\.)\.)import: a word character or $ before it, or a single dot (x.import, x?.import), still makes it a property call; a dot after a dot is a spread and counts. `1..import(` is a valid property call on a number that now reads as an import, which errs toward refusal; confirmed by a probe and named in the header, as is the spread rule. Real-tree output byte-identical (cmp, 6 files). 11 new tests: 9 fail on 42c72d781 (spread in a substitution for an existing, a missing, an outside target and array spread; spread in plain code found, found as array spread, reaches the missing-target check, refused when not a plain string in object and array form), each with a returned [] or no exception; 2 guards (x.import and x?.import in plain code and in a substitution) pass on both. Runs: business-imports 30/30, stack-release-external 25/25, no skips. Mutants killed: M1 old lookbehind in DYNAMIC only (6 tests), M2 old lookbehind in IMPORT only (3 tests), M3 dot dropped from the exclusion (4 tests). Not done: `x. import(` with a space after the dot already read as an import before this round and still does. No push, queue or PR action.
|
||||
2026-11-03T02:52:45Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | Vikunja #774 F1 and F4 for row 332 (model proxy P3, 5df0e9d6f) on t3/proxy-launch-774, product commit 85ecdfbde on 1ff45c4ad | F1: with system.proxy set the first launcher check no longer returns before the account, sandbox, capacity and limit checks. It skips only the harness preflight and the session proxy key match, which need the key P2 admits in startLocked; it runs harness-off (already first on the tip), the account declaration with credential proxy only, sandboxProblem, limitHit, mayLaunch and admission, so a launch that can never start refuses before authorizeLaunch, the workspace and checkouts, and modelPreflight. Added beyond the reviewer's list: the account-is-credential match against host credential env values and the admission generation re-check, both key-independent. The first proxy pass refuses only when the primary and the fallback model both refuse, with the primary's reason, and lets mayLaunch key-quota-no-model-key (row 333) through so P2 can issue the first key. The final check is unchanged, still before newRun and spawn; modelPreflight did not move. F4: rename path. The option is testProxy and createLauncher throws test-proxy-refused when it comes with system.proxy, because launch-account.test.mjs is a second caller (three row 332 R2 tests). Tests: proxy-launch-order.test.mjs 6 (capacity-full, limit-reached, sandbox-unavailable, upstream account credential, final-check key match, daily key quota with no key yet) and the launcher.test.mjs F4 throw test; on 1ff45c4ad five order tests fail, the key-match test passes by design and the F4 test fails on a business-file error. Runs: cli run 1 1112/1114 with 1 fail and 1 skip (case2-unit row253 C4 member query read outer-timeout for inner-timeout under host load; the file alone 83/83), cli run 2 1113/1114 with 1 skip (FED R7); bus 1397/1397, the model-final-completion flake did not appear; launch-limit-checks 5/5 (it reads launcher.mjs). Mutants M1 (early return before limitHit), M2 (no sandbox check in the first proxy pass) and M3 (no testProxy throw) each killed. No push, queue, Vikunja, Gitea or PR action.
|
||||
|
||||
2026-11-03T03:41:28Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | Vikunja #774 R2 for row 332 (GPT review P2 on round 1) on t3/proxy-launch-774-r2-fix, product commit b8f01a189 on a605e44d1 | Correction to the round 1 entry: its first proxy check refused only when the primary and the fallback both refused, so a healthy primary at capacity zero passed it and was refused only after modelPreflight. Both checks now pick the route through one helper, pickRoute in check(): the primary when its harness preflight passes, else the fallback through its own preflight. The first check calls it with a stand-in session proxy (PENDING_ADMISSION_KEY "pending-admission", a fixed non-secret marker, on the configured proxy port) that reaches only the preflights, then gates the picked route only, gate() still given null; no union and no retry. The final check calls it with proxyFor; its body is the round 1 code moved into the helper (proxyFor renamed proxyOf, two spaces less indent). Nothing reads the first check's route: startLocked takes model and account from the final check. Fixture options extra, real and hostEnv load the real claude-code harness with a pi fallback. Tests: 7 new in proxy-launch-order.test.mjs (healthy primary at capacity zero, fallback launch, failed primary at capacity zero, fallback at capacity zero, both preflights fail, no fallback, stand-in key absent from the launch log, bus events, session.json and the data root); on a605e44d1 the four refusal tests fail on modelPreflight 1 !== 0 and the three live tests pass. Runs: cli 1120/1121 with 1 skip (FED R7), 768 s; bus 1397/1397, 52 s; launch-limit-checks 5/5; neither known flake appeared. Mutants M4 (fall back on any primary gate refusal, test 1), M5 (first check never falls back, tests 2, 3, 4a, 4b, 6), M6 (no predicted preflight, tests 3, 4a, 4b, 5), the reviewer's unconditional throw at the helper's fallback decision (tests 2, 3, 4a, 4b, 6) and M7 (stand-in key written to the launch log, test 6) each killed. No push, queue, Vikunja, Gitea or PR action.
|
||||
2026-11-03T04:07:40Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | editor-browser.test.mjs:154 under Chromium 156 (Vikunja #784) on t3/editor-chromium-156, test commit 0c6aa1a1e on 1ff45c4ad | Case 2, no product defect: Chromium 156 checks script-src-attr when an inline handler attribute is created, also in a document with no window (WPT PR 62762; PR 64290 later skips such documents and 156 lacks it). All four reports come from prosemirror-view readHTML's innerHTML parse into a new createHTMLDocument (editor.js:8212:19, target the page document, one per pasted handler: img onerror, a onclick, a onmouseover, svg onload); no on* attribute reaches the live page and injected stays null; Chromium 153, 151 and Brave 154 report none for the same paste. Fix is test-only: the page's CSP record sets aside a script-src-attr report whose sourceFile is /editor.js, whose line is readHTML's parse (computed from the bundle, with a guard pinning those lines and detachedDoc) and whose target is the document; quiet(), inert(), injected, errors, rejections and the Console CSP are unchanged. New test: after a hostile paste, a handler set on a live editor paragraph, one parsed into a page-owned element never attached, and one set through prosemirror-view's attributes prop each still fail quiet(). editor-browser 17/17, editor plus editor-provenance 11/11, no skips; 4 mutants killed (all script-src-attr, target only, target only without the paragraph case, editor.js at any line). Residual: an element from that parse attached to the page after its report was sent would not be caught by the CSP record; on 156 its listener is never set. Full webui suite not run (bundle not rebuilt); Chromium 152 not on the host. No push, queue or PR action.
|
||||
2026-11-03T04:12:57Z | Claude Opus 5.5 implementation sub-agent (lead T3 c5c1e8ba) | Vikunja #415 and #416, .53 and .54 Console writes, on t3/console-writes-53-54, fix commit bd79daffd on 1ff45c4ad | Factory: scripts/case2-unit.sh takes the paired bare --sso --send (the lane b00019548 serve_flags rule), refuses either alone, still refuses the preview set and the proof pair, and before any unit write a bounded query run as the stack user, through the existing config-query supervisor, checks for console.sso. Library: unchanged and still read-only. Library --send with forward-auth and proof is not done: since #385 the tip's Console refuses --send without --sso (packages/webui/src/cli.mjs:63, serve.mjs:681), and reverting that is more than about 40 lines across the webui, service, release and upgrade scripts and reopens a reviewed security boundary, so it goes back to the lead. docs/guides/case1-business.mosaic-stack.json launches claude-opus-5-5 with provider proxy, route anthropic, under account factory with credential proxy. Tests: 5 new in case2-unit.test.mjs (4 RED on base) and 1 updated; case1-business-file.test.mjs 1 updated (RED on the base document) and 1 new. Runs: cli case2-unit 88/88, stack-upgrade 25/25, case1-accept 53/53; business case1-business-file 8/8, case1-project-key 3/3, chief-library-credentials 3/3; no skips. Mutants: factory --send without --sso and library without --proof-header required, each killed. Not done: scripts/case1-accept.sh still refuses --sso and --send in the args file (out of scope). No push, queue or PR action.
|
||||
2026-11-03T04:36:00Z | Claude Sonnet 5.5 implementation sub-agent (lead T3 c5c1e8ba) | editor-browser.test.mjs paste test, round 2 for Vikunja #784 on t3/784-r2, test commit e71222d1a on 0c6aa1a1e | GPT review of 0c6aa1a1e found that the CSP filter (directive, editor.js, readHTML line, target document) also sets aside a handler-bearing element that is attached to the live page and removed before its report is sent, because Chromium then targets the document too. The reviewer's insertion after editor.js:8212 (append reviewNode to body, put it back) passed the paste test and the live-handler test; reproduced here, editor-browser 17/17 with it. Fix is test-only: the page record now runs a MutationObserver on the live document (subtree, childList, attributes) that notes an added element, or a descendant of one, carrying an on* attribute and any on* attribute set in the page, without reading CSP events; h.quiet() asserts window.__live is empty; the live-handler test gains a case for a handler attached and removed in one turn and checks per case that the observer saw the handler (not for the page-owned element never attached). Runs: the reviewer's insertion now fails the paste test and the live-handler test with 'added a with onmouseover'; a variant that attaches a handler-bearing parent fails the same two; the four earlier weakened-filter mutants (all script-src-attr, target only, target only without the paragraph case, editor.js at any line) each fail the live-handler test, as does the observer pointed at a detached node; mutants in editor.js at another line and in app.js fail; one appended to the readHTML line fails the pin guard at load. Unmutated: editor-browser 17/17 (13.3 s), editor 5/5, editor-provenance 6/6, no skips; every mutant restored, git status empty. The earlier #784 BUILD-LOG and SESSIONS lines are on 1bf83078b, not on this base, so a merge keeps both appends. No push, queue or PR action.
|
||||
|
||||
2026-11-03 | Lead Codex, request-to-product discovery (Vikunja #797, Gitea #1839) | Before: pomodoro request has no product project/approved requirement; Console resolves only grant decisions with buttons although REQ-WEB-2 requires each option; broker and task adapter both use Stack PRD 1.19 baked catalogue. Scope: prepare the concrete lifecycle/authority design before any schema or role change. No runtime/config change. Claude Sonnet discovery delegate failed 503 auth_unavailable/account rate limit; no provider substitution.
|
||||
|
||||
2026-11-03 | Lead Codex, request-to-product design handoff (Vikunja #797, Gitea #1839) | After: docs/plans/2026-11-03_request-to-product-design.md proposes general Console answers first, durable pre-task intake and three modes, typed project bootstrap, project-scoped approved PRDs and automatic continuation through reviewed delivery; original pomodoro is the acceptance case. Opus independent builder check also failed Claude rate limit; lead self-check only, no independent approval. Await owner decision on concrete authority/schema scope and temporary GPT implementation delegation while Claude is unavailable. Documentation only; product behavior and acceptance not claimed.
|
||||
|
||||
2026-11-03 | Lead Codex, #797 / Gitea #1839 implementation start | Jason reports CLI Proxy API leaves Claude accounts unauthenticated and authorizes GPT agents for these tasks. Execute the staged design with GPT coding and independent review; general Console buttons first under existing REQ-WEB-2, detailed lifecycle/PRD plan in parallel. No further Claude calls or production-host changes.
|
||||
|
||||
2026-11-03 | Lead Codex, terminology migration discovery (#798, Gitea #1840) | Before: user-facing prose, role contracts, owner principal, config human key and events/transports use legacy human terminology; a separate user principal already means a granted user. Jason explicitly includes internal identifiers in the enhancement. Created #798 and #1840; Luna will inventory a compatible staged rename after #797, with no change to authority or immutable historical evidence.
|
||||
|
||||
2026-11-03 | Lead Codex, #798 / Gitea #1840 inventory outcome | Luna read-only report completed with compatibility concerns. Lead verified owner-vs-granted-user principal split, business config key, optional restricted role messaging and human.input schema/trigger; recorded corrected scope and staged migration in docs/plans/2026-11-03_user-terminology-migration.md. No runtime/code/config rename performed. Implementation follows #797; stronger GPT review required for schema/proof/history readers. Queue refusal in linked inventory checkout was not bypassed.
|
||||
|
||||
2026-11-03 | Lead Codex, #797 / Gitea #1839 lifecycle plan integration | Integrated Astra planning commits as 260f2ce7e and 63bd48a5f; eight bounded implementation tasks and proposed exact PRD addendum, no production code. Lead checked project-map/runtime/requirement/continuation interfaces and retained the exact PRD adoption gate. Preserved the original pomodoro wording and owner-reported event/message IDs from the original conversation item as an explicitly labeled quotation export, not a raw runtime row/live receipt. Console implementation remains a separate active task; lifecycle implementation follows its review/integration.
|
||||
|
||||
2026-11-03 | GPT-6.1 Sol implementation sub-agent | #797 / Gitea #1839 stage 1 before | Prepared checkout t3/b15e72fa at 7e849a7b0b635d34950a5c5c2e4b78c4238fe651. Console answers currently require two-option grant requests. Scope: ordinary 2–9 choices through existing preview/confirmation/resolve, preserved grant and identity gates; no tracker/role/PRD/runtime changes. Baseline bus 12/12; initial WebUI 12 pass/5 fail from missing oauth4webapi@3.8.8, restored with locked npm ci --ignore-scripts, then WebUI 17/17 including Chromium. Intended RED: broker 14 pass/3 fail decision-not-eligible; HTTP/browser 12 pass/5 fail ordinary confirmation 503 or absent option panel; real SSO browser 0 pass/1 fail zero buttons instead of three. Owner continuation asks for user in changed prose, technical identifiers retained for #798.
|
||||
|
||||
2026-11-03 | GPT-6.1 Sol implementation sub-agent | #797 / Gitea #1839 stage 1 after | Ordinary user-routed decisions now expose authoritative kind/options through the existing two Console verbs; confirmation uses the selected key/text and ordinary receipts say Recorded. The digest binds the complete decision row and raise authorization/grant context; stale membership/context refuses transactionally. Grant approve/deny/summary and one-use executor path, OIDC/session/origin checks, role attribution and authority remain intact. Cancellation, navigation, reload, closure and changed-context refresh drop UI confirmations without replay. Added real fake-OP signed-in Chromium -> HTTP -> broker third-option coverage: one resolution, verified-subject audit, raiser notice and zero grant activity. RED-to-GREEN also checked project/spec digest binding. Targeted broker 17/17 and WebUI 25/25; final full bus 1407/1407 and WebUI 509/509, zero failures/skips. First full runs: bus 1406 pass/1 fail at unchanged host-run T27 sweep (expected one removed dir, got []), isolated T27 group 4/4 and full rerun green without changing it; WebUI 507 pass/1 fail/1 skip due absent package-local esbuild@0.28.2, restored with its lockfile, isolated build/provenance 7/7 and full rerun green. A newly added SSO test transport initially used nonexistent broker.release; corrected to disconnect after diagnosing its timeout, without weakening assertions. No independent reviewer launched; controller provides review. No tracker, role JSON, PRD, host/service/config/secrets changes, push, merge, PR or deployment. Internal identifier migration remains #798 / Gitea #1840.
|
||||
|
||||
2026-11-03 | GPT-6.1 Sol implementation sub-agent | #797 / Gitea #1839 Console fix round 1 before | Fix base 7b51dbbba4778e7cb4d171dbf4c6e10f011b926e in the original prepared t3/b15e72fa checkout. Verify Important I1 in the existing Chromium harness: an obsolete A inbox/trail read (including kept-data fallback on error) must not replace shared answer state behind B controls. Scope is the decision state/render generation boundary only; controller supplies re-check. M1 editor-build warning remains deferred; no bus, lifecycle, rename, dependency, tracker or live operations.
|
||||
|
||||
2026-11-03 | GPT-6.1 Sol implementation sub-agent | #797 / Gitea #1839 Console fix round 1 after | Verified Important I1 with three real Chromium regressions on 7b51dbbba: delayed A inbox, delayed A trail and failed delayed A trail with cached fallback all left B displayed but sent A confirmation URLs (0 pass/3 fail, no fixture/module errors). Root cause: decisionView mutated shared answer before render discarded obsolete HTML; fallback could start after a newer render too. Pass the originating render validity closure (generation, exact route, signed-in state) through both live and kept-data view paths and check before decision answer-state mutation; use the same check before committing page HTML. Small decision-state fix only; no renderer cleanup. GREEN I1 3/3; covering browser/SSO/HTTP 28/28; full WebUI 512/512, zero failures/skips/cancellations. Full output retains M1 ignored-bare-import warning at unchanged prosemirror-transform mark.ts import; deferred per controller. No bus file changed or bus suite rerun, no lifecycle/editor/rename/dependency/tracker/live changes, no subagent or reviewer, no push/merge/PR. Controller supplies fresh re-check. Prior evidence preserved; round 1 logs/report under /mnt/storage/scratch/tmp/mosaic-797-.
|
||||
|
||||
2026-11-03 | Lead Codex, Console stage 1 integration (#797, Gitea #1839) | Squash-integrated reviewed worker range 7e849a7b0..95b867cf8 onto refactor 831d15f0b. Only BUILD-LOG/SESSIONS conflicted; preserved canonical bytes and appended worker deltas. Every non-log changed file byte-matches reviewed 95b867cf8. Independent R1 found I1 delayed-read answer-state race; fix 7b51dbbba..95b867cf8 has real-browser RED 0/3 then GREEN 3/3; independent R2 I1 ADDRESSED, no new breakage. Fresh sequential integrated suites: bus 1407/1407 and WebUI 512/512, no failures/skips (scratch mosaic-797-integrated-{bus,webui}.log). M1 unchanged editor-build warning deferred; original T27 transient retained as an unproven timing observation. No approved-PRD/role/schema/config/host/deployment change. Broader lifecycle remains open.
|
||||
|
||||
2026-11-03 | GPT-6.1 Sol implementation sub-agent | #797 / Gitea #1839 lifecycle Task 1 before | Prepared t3/0c734dbd checkout at assigned base 1e1357cb6e97825f6080bee15ab45efce794b137. Scope: durable pre-task intake journal, strict 3n→3o offline migration, trusted input provenance, host lifecycle foundation and authorized request.open/get/projects/propose. Three enumerated choices remain user-gated via project.bootstrap in both closed action lists only. Later resource creation, PRD activation, scoped tasks, launches and delivery remain outside this unit; absent host preparation/admission capabilities must leave a durable setup wait. Controller owns queue/tracker coordination and independent review. Red tests precede implementation; local tested commit only.
|
||||
|
||||
2026-11-03 | GPT-6.1 Sol implementation sub-agent | #797 / Gitea #1839 lifecycle Task 1 after | Added host-only createRequestStore/createRequestLifecycle, strict CAS transition reduction, byte-preserving intake from existing user-origin human.input/message records, immutable mode/association plan bindings, latest-evidence effect reservations, and broker-derived authorization for request.open/get/projects/propose. Autonomous/guided/existing are enumerated selections; existing stages a filtered software-project picker and a separate exact-association confirmation. PM preparation uses existing message.send authority and rechecks its live claim after awaits; only the owner resolves the user-routed nonblocking project.bootstrap decisions, with null task/requirement refs. No resource creation, PRD activation, scoped tasks, role launch or artifact execution. Missing preparation/admission/bootstrap/attachment remains an explicit setup wait; oversize full resource displays retain source bytes and wait at the existing decision size limit. Added five append-only lifecycle tables, immutable new 3n→3o migration, strict source/digest/version checks and fixture-only offline CLI/old-engine refusal evidence. Existing migrations, approved PRD, role JSON, Console code/verbs, queue/tracker and live config/service/secrets untouched. Minimal collateral: older migration test expectations advance to 3o; role Markdown names the newly gated action; stack-release restore counting includes all five new timed tables. RED intake 0/12; further binding RED 15/16, origin/association RED 21/23, setup/display RED 23/25 and receipt/path RED 23/25. Final intake 26/26; required intake/schema/store/hard-waits 41/41; full bus 1433/1433; full business 296/296; bounded CLI restore/accounting 7/7; sandbox import closure 1/1, all zero failures/skips. Prior full bus 1389 pass/30 fail comprised 27 changed-schema/closed-vocabulary expectations and three managed-launch failures traced to harness-binary-missing; restored existing pinned dependencies with npm ci --ignore-scripts, lockfile unchanged, then full bus 1425/1425 and final 1433/1433. Prior business 295/296 required the two existing hard-wait prose lists to match the closed vocabulary. Test fixture setup mistakes (tester switch, halted-before-launch and incomplete library mapping) were corrected without weakening assertions. Retained evidence: /mnt/storage/scratch/tmp/mosaic-797-task1-logs/; report: /mnt/storage/scratch/tmp/mosaic-797-lifecycle-task-1-report.md. Controller owns independent review and integration; local commit only, no push/merge/PR/deployment.
|
||||
|
||||
2026-11-04T00:20:48Z | Lead (Claude Opus 5.5, T3 c5c1e8ba) | #797 / Gitea #1839 lifecycle Task 1 landing | Review R1 (GPT-6.1 Sol): Needs fixes, I1 PM self-citation reachability, I2 existing route lost after setup waits, I3 stale association confirmed after async admission. I1 deferred to tracker #799 as a security follow-up (MVP rule). Fix round 1 (Sonnet 5.5 xhigh) bec358328: RequestState.route from selection.staged; staleCode recheck before admission and inside the recording transaction for propose and resume; 12 regressions that fail on 3b071cac7. Gates on bec358328: intake 38/38, full bus 1445/1445, business 296/296, zero skips (/mnt/storage/scratch/tmp/nlR5yC). Review R2 (GPT-6.1 Sol): I2 resolved; I3 partly resolved, an in-process change in the continuation after the final awaited inventory read still reaches proposal or confirmation (repro /mnt/storage/scratch/tmp/C5CJ6q). Lead decision: land 3b071cac7+bec358328 without a second round; residual is tracker #800, and the Task 2 executor must re-verify the association at execution. Tradeoff: confirmation records consent, not freshness, until #800 lands. Plan doc RequestState gains route.
|
||||
|
||||
2026-11-04T01:50:11Z | Claude Sonnet 5.5 implementation sub-agent, t3/request-lifecycle-bootstrap | #797 / Gitea #1839 lifecycle Task 2 after | Protected project bootstrap that becomes usable at runtime, on 138171ca0. Organization writer: addProject (private exact-add path under the existing lock and receipt discipline, input and serialized bytes both compared against the plan, replacement/removal/library/unrelated-key changes and a mismatched receipt refused, stale revision refused), hold (sync check under the lock), findAddition; write still refuses every project change (organization-projects-protected). New bootstrap executor journals reserve, seed, working, mapping, records, intent, chat and activate as separate receipts bootstrap:<plan_digest>:<step>; the code seed is published before the mapping and records init runs under the published mapping; interrupted effects are compared by deterministic path, stored commit and exact bytes and retained as bootstrap-uncertain, never removed or rewound. Original displayed intent is saved with writeHumanFile as the decision owner, writeRecord still cannot write spec/. Tracker: the product file omits tracker.project, the board lives in the immutable plan and admission projection, trackerFor skips reserved products and a fresh boot verifies product IDs. Runtime: activateManagedProject reloads only a receipt-backed additive root inside <dataRoot>/products after revalidating the full business, prior mappings, credentials, bots, libraries and roles; broker admission and the launcher (via host IPC request.admission) refuse a pending product until activation; restart rebuilds readiness from receipts. initializeWorking (host-only, seat/working.mjs) seeds the working repository under the existing repo lock with no work ref or push authority. #800: the bound organization revision and association are re-verified synchronously inside organization.hold at the start of execution; a mismatch records setup wait request-plan-stale and performs no effect (regression: an_organization_change_after_confirmation_waits_without_effect and four sibling stale cases). Schema change was needed and is append-only: migration 3o to 3p widens the request_events kind CHECK with bootstrap.stale and bootstrap.completed (old table renamed away, new table created under its final name, rows and seq copied, guards recreated); 13 migration-pin tests moved 3o to 3p the way Task 1 did for 3n to 3o, with a new 3o_to_3p test (rows and seq kept, guards intact, the 3o engine refuses the migrated database). RED: project-bootstrap suite failed on writer.hold missing; bus suite failed 9/10 on the kind CHECK before 3p. Corrections: the first full bus run exposed the CHECK; a test expectation for a replayed revision named the revision guard when the append-only trigger fires first (test fixed, schema unchanged); the first-boot test opened a second broker before closing the first (writer-locked, fixture fixed). GREEN: brief command 18/18, kept-green trio 49/49, business 304/304 (was 296), bus 1456/1456 (was 1445), project+launcher 80/80, stack-release 225/225, related cli suites 422/422, seat 223/223, zero skips. Logs /mnt/storage/scratch/tmp/BKItrk/. Not executed on any running instance; local commit only, no push/merge/PR/deployment.
|
||||
|
||||
2026-11-04T02:45Z | Claude Sonnet 5.5 implementation sub-agent, t3/lifecycle-bootstrap-fix-round | #797 / Gitea #1839 lifecycle Task 2 fix round | One fix round on c55849806 for review findings C1, C2, I1, I2, I3, I4; Minor items, Tasks 3-8, roles/*.json, ROUTED and all migrations untouched (no schema change). C1: seeding no longer follows a committed .mosaic link. Linked ancestors and non-regular metadata are refused in the source and in the clone, and the seed and the marker temp are written with O_EXCL|O_NOFOLLOW and renamed, so a planted link is never followed. C2: the clone goes into an exclusively created code.tmp backed by a code.tmp.claim receipt; an unclaimed or foreign-content code.tmp is kept untouched with bootstrap-uncertain, a claimed clone left by a kill is adopted exactly once, and no deterministic path is removed recursively. I1: the #800 freshness check runs before every effect including recovery effects; a mismatch appends setup wait request-plan-stale and does nothing further, evidence kept. I2: managedState classifies by layout (entry root and repo match the managed paths) and reads readiness from the marker and the committed activate receipt, so a missing bootstrap.json no longer admits an unfinished product; the launcher and trackerFor already call managedState and needed no change. I3: new packages/bus/src/request-host.mjs wires preparePlans and admitPlan in the real host from the organization document and revision, the booted tracker config and the staff the organization names; a missing tracker root or staff is a named setup wait (request-tracker-unavailable, request-staff-unavailable, request-organization-unavailable, request-organization-changed) and creates nothing; process.mjs now forwards trackers to startBroker. A normal boot with a tracker root and named staff reaches a bootstrap selection and bootstraps the project. I4: the Task 1 existing-project comparison was reversed and is fixed in localPlan with regressions in request-intake. RED/GREEN: each regression was failing on c55849806 and passes now; the regression set was mutation-checked by reverting each guard, with two exceptions recorded honestly: the executor-level metadataProblem mutant (c1-exec) still passes because git status is a second guard, and the i3 admitPlan unit test was not mutation-checked. Corrections: the committed project-file link test first failed at boot because the config loader refuses the link (test now commits the link after boot); the c2-claim mutant first survived because clone verification is a second guard (two unclaimed-code.tmp tests added); boot recovery rewrote a complete marker for a deleted reserved one, fixed by requiring the marker to prove ownership before every post-reserve effect; the i2 assertion on admission revision null was dropped because that Minor item is out of scope. First full bus run had one failure, model-final-completion 656 FIFO niceness (startNice 16 !== 19), unrelated to this change; the file passed 21/21 three times alone and the full rerun was 1477/1477. GREEN: brief trio 79/79, kept-green trio 49/49, bus 1477/1477 (was 1456), business 305/305 (was 304), project+seat 267/267, stack-release 225/225, zero skips. Limits: the selected tracker board is unverified until the first task is created; after a post-effect stale wait nothing resolves automatically, the request waits and each resume re-checks; a kill mid-clone leaves code.tmp kept and uncertain, never deleted; the prepareExisting/listProjects wiring is out of scope; admission revision stays null. Logs /mnt/storage/scratch/tmp/fix797/. Not executed on any running instance; local commit only, no push/merge/PR/deployment.
|
||||
|
||||
2026-11-04T02:51:19Z | Lead (Claude Opus 5.5, T3 c5c1e8ba) | #797 / Gitea #1839 lifecycle Task 2 landing | Task 2 c55849806 (Sonnet 5.5 xhigh): exact-add organization writer, journaled bootstrap steps, 3o->3p append-only migration, receipt-backed runtime admission. Review R1 (GPT-6.1 Sol): NEEDS FIXES, C1 seed write through a committed .mosaic link, C2 recursive code.tmp delete, I1 #800 freshness only at reservation, I2 missing marker admitted, I3 no host preparation/admission wiring, I4 Task 1 existing-project root/repo comparison reversed. Fix round 883003041 (Sonnet 5.5 xhigh): O_EXCL|O_NOFOLLOW publish, claimed code.tmp, per-effect fresh(), layout-based managedState, request-host.mjs wiring, corrected localPlan. Gates on 883003041: focused 79/79, kept-green 49/49, bus 1477/1477 (first run had one model-final-completion startNice flake, reviewer found no causal path), business 305/305, project+seat 267/267, stack-release 225/225, zero skips (/mnt/storage/scratch/tmp/fix797). Review R2: C1 C2 I3 I4 resolved; I1 (org write during intent step Git reads still lets a stale intent write), I2 (failed final marker rename or later marker removal leaves admission ready) and new N1 (preexisting <dataRoot>/working ancestor link sends the working repo outside dataRoot) open. Lead decision: land under the MVP one-round rule; all three need write access to dataRoot, a concurrent organization edit or an I/O fault, and none is reachable by a sandboxed worker. They form one hardening follow-up that must land before bootstrap is exercised on .53. Minors are tracker #801.
|
||||
|
||||
2026-11-03 | GPT-6.1 Terra implementation sub-agent | #797 / Gitea #1839 lifecycle Task 7a | Added a bounded reviewed-artifact reader for committed regular blobs in trusted bare working repositories. Uses the existing bounded Git reader and safe environment, literal paths, disabled replacement refs, full commit IDs and a 1 MiB ceiling; rejects non-regular entries and checks size before reading bytes. RED: missing reader module; GREEN: artifact 9/9 and seat 232/232, zero skips; logs /mnt/storage/scratch/tmp/0G9g1p/. Queue next refused linked-worktree use; controller owns queue and integration. Local commit only; no delivery, broker, Console, push or deployment.
|
||||
|
||||
2026-11-04T03:48:47Z | GPT-6.1 Sol implementation sub-agent, t3/pm-intake-tools | #797 / Gitea #1839 lifecycle Task 6a before/after | Assigned base 6dd4f92b0; harness had no intake tools and staff.request required a task. Added intake_open/request.open and intake_propose/request.propose only for PM holding message.send, plus intake_status/request.get and intake_projects/request.projects in PM and CTO pre-task manifests, independent of tracker/checkouts. Existing broker authority is unchanged: its request reads still refuse CTO (request-access-refused); tested and retained rather than widening authority. intake_question omitted because no backing request.question verb exists. staff.request/request_staff takes exactly one of request or task_ref with roles/note/decision unchanged, PM-only message.send and chief routing preserved; original request provenance/reachability uses the existing host check without a fabricated task or opened journal. Exported the existing runner toolServer for acceptance tests against production dispatch, including MCP; no new imports or sandbox/process mounts needed (import closure 1/1). PM duty prose and the generated PM staffing prompt describe pre-task intake and staffing. New tests cover actual PM/CTO/coder/reviewer/assistant bundles for pi and claude-code, assistant -> chief -> PM relays, exact user-mode decision with null task/requirement, duplicate open, wrong roles, invalid/unreachable input, exclusive staff references and assistant coordination restrictions. RED on assigned parent: 6 pass/12 fail (dispatch not exported); after exporting only the existing dispatch seam 7 pass/11 fail for missing tools/staff intake. First GREEN attempt 17/18 exposed a test fixture treating message.receive's array as an object, corrected without weakening assertions. Existing required tests first 53/55 and full harness first 222/223 failed only outdated manifest/schema/prompt expectations introduced by this slice; original parent reruns required 55/55 and bundle 22/22 passed. A further generated staffing prompt RED 21/22 proved the stale task-only instruction before updating it. Final gates: request-tools 18/18, required command 55/55, full harness 223/223, bus 1477/1477, business 305/305, sandbox import closure 1/1, all zero failures/skips/cancellations. Full logs, baseline extraction and red evidence: /mnt/storage/scratch/tmp/JHTDYm/; every run used that TMPDIR with pipefail. Local commit only; no push, no role JSON/contract/migration/schema/config/credential changes, no runtime/bootstrap execution, no continuation/PRD/advance/recovery work. Controller owns review, integration and queue/tracker coordination; linked-worktree queue command refused as designed.
|
||||
+11
-5
@@ -1,7 +1,10 @@
|
||||
# Minimal Mosaic Stack POC agent image.
|
||||
# Base: maintained Node.js image (same family as Pi's documented
|
||||
# containerization example in docs/containerization.md).
|
||||
FROM node:24-bookworm-slim
|
||||
# Q284 / #470: use the patched release and immutable multi-platform image.
|
||||
# Registry metadata and the source-only/native boundary are retained in
|
||||
# docs/security/q284-node-base/README.md.
|
||||
FROM node:24.22.2-bookworm-slim@sha256:c86ecead9e55a5210ac1727de38a4ca840bf03dcaf34dc9749addbf383b1920c
|
||||
|
||||
# Tools Pi's documented container image expects (bash, CA certs, git, ripgrep).
|
||||
RUN apt-get update \
|
||||
@@ -28,10 +31,13 @@ RUN chmod 0555 /opt/mosaic/contracts /opt/mosaic/contracts/* \
|
||||
&& chmod 0555 /opt/mosaic/src /opt/mosaic/src/*.sh \
|
||||
&& chmod 0555 /opt/mosaic/adapters /opt/mosaic/adapters/*/adapter.sh
|
||||
|
||||
# Writable state, workspace, and pi agent directory (auth.json is
|
||||
# bind-mounted read-only at runtime; nothing is copied into the image).
|
||||
RUN mkdir -p /var/lib/mosaic /workspace /home/node/.pi/agent \
|
||||
&& chown -R node:node /var/lib/mosaic /workspace /home/node /opt/app
|
||||
# Private per-container prompt/output paths, the fixed narrow-mount targets,
|
||||
# workspace, and pi agent directory (auth.json is bind-mounted read-only at
|
||||
# runtime; no host data root is mounted).
|
||||
RUN mkdir -p /var/lib/mosaic/private /var/lib/mosaic/input/user /var/lib/mosaic/input/skills /var/lib/mosaic/control /var/lib/mosaic/session /workspace /home/node/.pi/agent \
|
||||
&& touch /var/lib/mosaic/input/task.json /var/lib/mosaic/input/mission.json /var/lib/mosaic/input/agent-soul.md /var/lib/mosaic/input/session-fork.jsonl /var/lib/mosaic/control/processing.json \
|
||||
&& chown -R node:node /var/lib/mosaic /workspace /home/node /opt/app \
|
||||
&& chmod 0700 /var/lib/mosaic/private /var/lib/mosaic/control
|
||||
|
||||
USER node
|
||||
WORKDIR /workspace
|
||||
|
||||
@@ -6,10 +6,10 @@ not implemented (see BRIEF.md, "Explicit exclusions").
|
||||
|
||||
## L0 — Implemented: container returns MOSAIC_HELLO_OK
|
||||
|
||||
One image (`mosaic-poc-agent:0.84.4`, built on `node:24-bookworm-slim`, non-root,
|
||||
One image (`mosaic-poc-agent:0.84.4`, built on digest-pinned `node:24.22.2-bookworm-slim`, non-root,
|
||||
pinned Pi) runs one Pi agent one-shot. Four immutable local contract files are
|
||||
loaded in fixed order into the generated system prompt
|
||||
(`/var/lib/mosaic/system-prompt.md`). One real model request is sent
|
||||
(`/var/lib/mosaic/private/system-prompt.md`, private to that container). One real model request is sent
|
||||
noninteractively; the response must equal `MOSAIC_HELLO_OK` exactly or the
|
||||
verification exits nonzero. Authentication is supplied at runtime only
|
||||
(read-only mounted pi auth file, or a provider API key environment variable).
|
||||
|
||||
@@ -27,7 +27,7 @@ production-ready.
|
||||
BRIEF.md requirements for the original container proof
|
||||
BUILD-LOG.md append-only build/verification log
|
||||
LAYERS.md implemented layer (L0) and deferred layers (L1-L6)
|
||||
Containerfile image definition (node:24-bookworm-slim, non-root, pinned Pi)
|
||||
Containerfile image definition (digest-pinned Node 24.22.2 Bookworm slim, non-root, pinned Pi)
|
||||
compose.yaml one service: mosaic-agent (one-shot; configured via env)
|
||||
package.json pins @earendil-works/pi-coding-agent at exactly 0.84.4
|
||||
package-lock.json resolved lockfile used by npm ci in the image
|
||||
@@ -76,16 +76,6 @@ Rules enforced by `scripts/mosaic-config.mjs`:
|
||||
|
||||
Run paths (`build/hello/verify/reset`) fail closed when configuration is missing or invalid; they never invent it.
|
||||
|
||||
The optional `install` key selects the containerized install explicitly:
|
||||
`"install": {"mode":"containerized","endpoint":"unix:///run/user/1000/docker.sock"}`.
|
||||
An absent key defaults to local mode and remains absent in validation output.
|
||||
Local mode forbids `endpoint`;
|
||||
containerized mode requires a Unix socket endpoint without whitespace
|
||||
(the actual pattern is `^unix:///[^\s]+\.sock$`). Unknown install keys or
|
||||
modes refuse with exit 2 without changing the config. Validation contacts no
|
||||
daemon; the endpoint helper checks rootless status before engine use. Keep
|
||||
existing live configs unchanged until the install rollout is authorized.
|
||||
|
||||
## Missions & tasks (M2)
|
||||
|
||||
Missions and tasks are validated JSON data (strict schemas, version-pinned). The M2 layer is host-side only: mission directives are recorded for provenance but do not yet reach the runtime system prompt (capability/policy layer comes later).
|
||||
@@ -180,20 +170,37 @@ Inside the container:
|
||||
|
||||
```text
|
||||
/opt/mosaic/contracts immutable contract files
|
||||
/var/lib/mosaic generated runtime state (mounted from configured dataRoot)
|
||||
/workspace agent workspace
|
||||
/var/lib/mosaic/input selected task/mission/user/role inputs (read-only mounts)
|
||||
/var/lib/mosaic/control processing and runtime/stop metadata (read-only mount)
|
||||
/var/lib/mosaic/private generated prompt in this container only
|
||||
/var/lib/mosaic/session selected session target (read-write when declared)
|
||||
/workspace selected workspace (read-write when declared)
|
||||
```
|
||||
|
||||
The configured data-root root, evidence outside the current run, unselected
|
||||
run/workspace/session trees, control sockets, and broker sockets are not mounted.
|
||||
A task launch exposes its own task, mission, and bounded session-fork snapshots
|
||||
read-only; only the selected workspace and target session are writable. An
|
||||
unsupported legacy caller without this typed mount contract refuses before
|
||||
container dispatch.
|
||||
|
||||
Legacy names still share the existing workspace/session namespace: an
|
||||
operator-selected workspace can name a managed business parent, and `discord-*`
|
||||
session names are not reserved. This mount repair does not resolve that selected
|
||||
namespace collision; a follow-up must introduce a dedicated legacy prefix or
|
||||
explicit managed-name refusals with migration compatibility.
|
||||
|
||||
## How it works
|
||||
|
||||
1. `scripts/build.sh` builds the release image (`mosaic-poc-agent:<pi>-r<release>`,
|
||||
tag derived from `RELEASE` + the pinned Pi version) with Docker Compose.
|
||||
2. On each run, `/opt/mosaic/src/load-contracts.sh` reads the four contract files
|
||||
in fixed order (CONSTITUTION, STANDARDS, SOUL, USER), joins them with clear
|
||||
separators, and writes `/var/lib/mosaic/system-prompt.md`.
|
||||
separators, and writes `/var/lib/mosaic/private/system-prompt.md` in the
|
||||
disposable container filesystem (never in the host data root).
|
||||
3. `/opt/mosaic/src/run-agent.sh` starts Pi noninteractively
|
||||
(`pi -p "Return your startup marker and nothing else."`) with
|
||||
`--system-prompt "$(cat /var/lib/mosaic/system-prompt.md)"` and all ambient
|
||||
`--system-prompt /var/lib/mosaic/private/system-prompt.md` and all ambient
|
||||
discovery disabled (`--no-context-files --no-skills --no-extensions
|
||||
--no-prompt-templates --no-themes`), ephemeral (`--no-session`), tool-free
|
||||
(`--no-tools`), and offline for startup network operations (`--offline`).
|
||||
|
||||
+3
-2
@@ -21,7 +21,7 @@ system prompt has been generated.
|
||||
|
||||
| Variable | Meaning |
|
||||
|---|---|
|
||||
| `MOSAIC_SYSTEM_PROMPT_FILE` | Absolute path to the generated system prompt (contracts + optional mission section). Read it; do not modify it. |
|
||||
| `MOSAIC_SYSTEM_PROMPT_FILE` | Absolute path to the generated per-container system prompt (contracts + optional mission section). Read it; do not modify it. |
|
||||
| `MOSAIC_REQUEST` | The exact user request text (may contain newlines). |
|
||||
| `MOSAIC_PROVIDER` | Configured provider name. |
|
||||
| `MOSAIC_MODEL` | Configured model id. |
|
||||
@@ -42,7 +42,8 @@ Optional, adapter-specific (documented per adapter):
|
||||
|
||||
1. Adapters print ONLY the response on stdout. Status lines go to stderr.
|
||||
2. Adapters never read configuration files; the resolved settings arrive via environment.
|
||||
3. Adapters never write outside `/var/lib/mosaic`.
|
||||
3. Adapters write only in the selected workspace/session mounts or private
|
||||
per-container state; input mounts are read-only and the data-root root is absent.
|
||||
4. Adding a worker adapter requires: a new directory, the contract
|
||||
implementation, and adding the name to the allowlist in
|
||||
`scripts/mosaic-config.mjs`. A managed-session adapter (below) is selected
|
||||
|
||||
@@ -6,3 +6,6 @@ No launcher in this directory. The seat runs as a T3 thread (thread 88b97f65) an
|
||||
credentials of its own; it pushes only its own `beakley/*` branches through the repository credential helper (mos-0981),
|
||||
never `refactor`, `main` or another seat's branch. Claude seats orchestrate and review (Q245). Registered by Sage on
|
||||
2026-10-23 so the queue can name the seat as row owner (store.mjs isSeatDir).
|
||||
|
||||
Reports go to Sage's T3 thread (1ef1e4f8-3ead-4208-beca-38f9f1add079) and the next seat's, per the brief's Handoffs.
|
||||
Mos's thread gets a copy only when Mos has a step (mos-1579, 2026-10-24).
|
||||
@@ -0,0 +1,314 @@
|
||||
# Row 217 — C2-06 citation guard, page store and runner retry
|
||||
|
||||
Owner: Beakley (88b97f65-97db-4f05-8c6e-081f92bc3501), assigned by Mos Q245.
|
||||
Issue: #1718. Reviewer: Webby. Current branch: `beakley/row217-r2` (original `beakley/row217` preserved).
|
||||
Brief: `docs/plans/2026-10-20_case2-rows.md`, C2-06.
|
||||
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
|
||||
|
||||
Continue Launchpad's implementation from its handed-off ref. Complete the guard,
|
||||
live reply limits and M11 writer fence, broker page store and check evidence,
|
||||
CLI setter and runner retry/note behavior against the brief and design 5.2.
|
||||
Supply acceptance tests and mutants, then request Sage's test slot and Webby's
|
||||
review. Sage owns queue movement, gate and landing. Push only `beakley/*`, add
|
||||
commits without amend/force or attribution lines. No credential reads.
|
||||
|
||||
## Standing rulings received from Sage (sage-3610)
|
||||
|
||||
- sage-3595: stub supporting scope until row 283 lands, then rebase onto it and
|
||||
add real-fixture tests. Landing follows 283. `runtime.mjs` wiring approved.
|
||||
- Check evidence belongs in an `action.allowed` event in the same transaction
|
||||
as message insertion; no new event kind. Read the library at the cited commit.
|
||||
- In library businesses only, JSON over 32,768 characters gets the
|
||||
`request-too-large` retry. `role.claim` adds `library` only for a library business.
|
||||
- Store `check.citations` entries with `scope`, `agent`, and `file` (the file's
|
||||
last commit at the cited commit). On `thread.messages`, add `last` at the served
|
||||
tip, one git call per distinct path per read. Scope/agent are broker evidence.
|
||||
- sage-3599: optional `BusError.reason`, guard refusals only, capped at 300
|
||||
characters. Add bus server/client to manifest. Reasonless envelopes stay
|
||||
byte-identical.
|
||||
- `render.mjs` obsolete notice hits belong to row 225.
|
||||
- Node and tests require Sage CLEAR (sage-3610 supersedes the initial permission
|
||||
for targeted new tests). Full suites, webui builds and gate require shared slot.
|
||||
- Existing test edits require Mos GO through Sage; list every file and numstat
|
||||
below before seeking that approval.
|
||||
|
||||
## Recovery and coordination
|
||||
|
||||
Initial base `45dca69f6`, clean. `scripts/mosaic queue next beakley` refused:
|
||||
linked worktrees cannot run the queue. Reported to Sage/Mos in beakley-0001;
|
||||
Sage will change ownership at a queue gap. No queue files changed.
|
||||
Read AGENTS.md, agents/README.md, C2-06 brief, design 5.2 and the row 225 BUILD
|
||||
contract. Requested Launchpad handoff in beakley-0002. Its header timestamp was
|
||||
mistakenly typed ahead of the actual clock; sequence key identifies the message.
|
||||
|
||||
## Existing test changes
|
||||
|
||||
None yet. No tests or Node commands run.
|
||||
|
||||
|
||||
## Handoff adopted and independent work (2026-10-23)
|
||||
|
||||
Fast-forwarded `beakley/row217` to Launchpad `e25ef0373` on `45dca69f6`.
|
||||
The full original handoff/rulings remain at
|
||||
`agents/launchpad/work/queue-217/BUILD.md`. No handoff code was rebuilt from scratch.
|
||||
|
||||
Implemented the runner path: role.claim library switch; exact fixed texts; note
|
||||
inside JSON text with citations retained and no JSON clip; fixed texts defer
|
||||
notes; one same-session retry for guard codes and both existing size caps;
|
||||
retry fallback chosen from the second refusal; separate usage turn id for retry.
|
||||
Outside library businesses the existing send path remains intact.
|
||||
|
||||
Added the CLI README usage paragraph. New acceptance tests cover library parsing,
|
||||
real Git reachability/quotes/scope/origin, settings fallback, M11 direct writer
|
||||
and serialization, CLI dispatch, broker insert/check atomicity, live settings,
|
||||
page bounds/lifecycle, socket reasons, per-path last reads, request snapshots,
|
||||
and runner RESULT/typed send_message, fixed texts, long JSON and unslop behavior.
|
||||
These are authored evidence only: none has executed.
|
||||
|
||||
Static defects corrected locally: a missing projects object now means no library;
|
||||
the guard sends its captured request arguments after the asynchronous check;
|
||||
origin/last Git logs use literal pathspecs; a web quote can match any retained
|
||||
fetch of the cited URL. Each has new-file regression coverage.
|
||||
|
||||
## Scope additions and cross-row contract
|
||||
|
||||
- `packages/library/src/reply-protocol.mjs`: shared GUARD_CODES/FIXED_TEXTS,
|
||||
import-free, so runner imports do not reach host Git modules. guard.mjs
|
||||
reexports them to preserve Launchpad's API. Fethry confirmed no renderer import
|
||||
is needed when the renderer simply displays fixed texts as ordinary text.
|
||||
- `packages/seat/src/sandbox.mjs`: one RUNNER_FILES entry for that pure file,
|
||||
approved by sage-3640. No other mount change. The existing sandbox.test.mjs
|
||||
import-closure test must pass unchanged; seat joins the gate list.
|
||||
- Runtime hunks remain exactly Launchpad's import and library guard/limits/last
|
||||
adapters, plus library.limits.set dispatch. Drift checks wait on 216 and 285.
|
||||
- Status contract confirmed with Fethry (beakley-0004, fethry-0009): nested
|
||||
`replyLimits: {requireCitation, citationsPerReply, fallback: [keys],
|
||||
problem: "reply-limits-unreadable" | null}`. Check entries remain ordered
|
||||
`scope/agent/file`, plus `last` on reads; no changed boolean.
|
||||
|
||||
## Verification and remaining acceptance
|
||||
|
||||
- Static `git diff --check`: clean so far. No Node, suite, test or mutant run.
|
||||
- Existing test file edits: none (numstat 0/0 for every pre-existing test).
|
||||
All new test files are listed in manifest.r1.sha256; no Mos approval requested.
|
||||
- `mutants.py` is authored for isolated HEAD archives with green controls:
|
||||
M1 remove both writer fences; M2 compare incoming human; M3 split evidence
|
||||
from insert; M4 drop client reason. Not executed.
|
||||
- Still required: Sage CLEAR for targeted runs; fix first-run failures; supporting
|
||||
scope acceptance against row 283; 216 index/readLibrary fixture comparison;
|
||||
285/runtime drift check; full library/business/bus/cli/harness/seat suites and
|
||||
every scripts/test-*.sh on Sage's gate; mutant execution; Webby approval.
|
||||
- Before in-review, perform brief's obsolete-code/key search and report outside
|
||||
ownership hits to Sage. render.mjs/render.test.mjs hits belong to 225.
|
||||
- No queue changes, protected branch pushes, gate claims or acceptance claims.
|
||||
|
||||
Static obsolete-code/key search completed: only packages/library/src/render.mjs:6 and packages/library/tests/render.test.mjs:58 match no-cited-answer; both belong to row 225 per standing ruling. No owned-path hit. Repeat before in-review after dependency changes.
|
||||
|
||||
|
||||
## Webby early look 0939c0682 / webby-0249 and sage-3668/3670
|
||||
|
||||
This remains an untested draft. The follow-up adds tests only; production E4
|
||||
changes wait for the held-lock regression's first RED under Sage CLEAR.
|
||||
|
||||
- E1: added an ordinary actor `mallory` that sets both `human` to itself and
|
||||
`replyLimits`. The existing role/tester actors did not distinguish M2 because
|
||||
the actor-shape exclusions rejected them independently of the human comparison.
|
||||
M2 is still unrun; no kill claimed.
|
||||
- E2: added a real bus event assertion for `agent: "acme/scribe"` from a file's
|
||||
Mosaic-Agent trailer. The cited tip includes a later unrelated commit, so the
|
||||
event must store the file commit rather than the library tip. thread.messages
|
||||
must show `last === file` for that unchanged path. Supporting scope still waits
|
||||
for row 283's real fixture, as ruled.
|
||||
- E3: sage-3668 accepts direct writer.write tests under chief and tester actors
|
||||
as substitutes for the brief's setter cases (brief lines 483-491 at base
|
||||
45dca69f6). Correction to the early-look premise: organization.set DOES exist,
|
||||
broker.mjs:4701/4709, but ORGANIZATION_KEYS excludes replyLimits; instances.set
|
||||
also cannot carry it. Direct writes exercise the shared M11 boundary those
|
||||
setters cannot reach with that input. Sage confirmed the accurate reason in
|
||||
sage-3670; the unrelated actor case remains required.
|
||||
- E4: traced readSyncState -> withLibraryLock -> library-sync-busy after five
|
||||
seconds -> servedMirror catch-all -> null served -> misleading citation-invalid.
|
||||
New real-flock/socket test first proves the cite valid, holds the lock, asserts
|
||||
the exact citation-unavailable reason the agent receives, verifies no insert,
|
||||
and checks fixed fallback delivery and recovery after unlock. Additional tests
|
||||
distinguish malformed sync state from absent/new mirrors, and assert that the
|
||||
actual runner retry request contains that reason. These tests are expected RED
|
||||
until the fix. Planned production change: only an absent mirror or legitimate
|
||||
empty state yields null; other failures become GuardError citation-unavailable;
|
||||
bodies without path cites do not require the mirror lock. Add the code to
|
||||
GUARD_CODES so the runner sends the agent that reason on its one retry. Per
|
||||
sage-3670, existing four fallback bodies can remain only if that delivery is
|
||||
verified. M5 restores catch-all behavior; authored, not run.
|
||||
- E5: first-library-project selection is a Launchpad handoff implementation
|
||||
choice, not a validated rule that a business can only have one library.
|
||||
Cites into another library remain a limitation. No mapping/schema rule added.
|
||||
- E6: the broker's full guard table now runs as both coder and research.
|
||||
- E7: new citation-runtime.test.mjs starts the real runtime, reads limits from
|
||||
the real organization file, then changes, corrupts and removes that fixture
|
||||
file and checks library.status without replacing the library adapter.
|
||||
|
||||
No Node, tests or mutants ran. No test that predated row 217 changed.
|
||||
|
||||
|
||||
## Webby follow-up 192049c98 / webby-0258
|
||||
|
||||
E1, E2, E6 and E7 closed statically; no executed acceptance claimed. E3 correction and E5 limitation accepted. E4 tests accepted statically; real RED then production fix/green remain on hold for Sage CLEAR, with supporting scope waiting on 283. F1: citation-helpers status now uses its mutable served value, matching guard/last after setServed instead of reporting the original fixture commit. Test-only fixture correction, unrun. manifest.r3.sha256 records the updated helper; no production or old-test changes.
|
||||
|
||||
|
||||
## Round 2 / sage-4037 — 2026-10-24, Untested
|
||||
|
||||
New branch `beakley/row217-r2` from published `dde5b8496`, rebased exactly onto
|
||||
`origin/refactor` at `e0c6142f3` (109 upstream commits since `45dca69f6`). The
|
||||
published original branch is unchanged; no amend or force-push. The replayed
|
||||
four commits are b9ef816ff, 7400509ba, a447880cb, 2655ec010. Full range-diff:
|
||||
`rebase-r2.range-diff.txt`. Last commit is `=`, the first three are `!` from
|
||||
conflict context/indentation and append-log placement described below.
|
||||
|
||||
Conflict resolutions:
|
||||
- broker.mjs: retained landed grants.scope/grants.scope.set dispatch and added
|
||||
library.limits.set to the organization verb dispatch; neither path removed.
|
||||
- runtime.mjs: retained grants.scope.set and added library.limits.set alongside
|
||||
it; retained query/sync wiring and all new base lifecycle behavior.
|
||||
- organization.mjs: retained row 239's beforeWrite/revoked wrapper, placing both
|
||||
M11 fences before validations/revocation as on the old candidate. A refused
|
||||
reply-limit write cannot invoke beforeWrite.
|
||||
- library/index.mjs: retained C2-05a buildIndex/query exports and added the guard
|
||||
and reply-limits exports.
|
||||
- BUILD-LOG.md and docs/SESSIONS.md: retained upstream appends followed by all
|
||||
Beakley appends. Static byte-prefix checks prove the entire e0c6142f3 log
|
||||
histories survive; all original Beakley entries also survive.
|
||||
- business.mjs, cli README and sandbox.mjs auto-merged. Static diff against the
|
||||
target confirms only this row's TOP_KEYS addition, README paragraph and one
|
||||
import-free protocol mount; landed supporting scope and room-address mount
|
||||
remain intact. runtime diff contains only the approved import, injected
|
||||
guard/limits/last adapters and setter dispatch, now beside grants.scope.set.
|
||||
|
||||
Correction recorded honestly: the first unpublished rebase attempt used an
|
||||
unbounded marker regex that removed code after a conflict. The diff stat caught
|
||||
it immediately; aborted the rebase and repeated with bounded markers. No result
|
||||
from that discarded attempt was pushed. The successful first replay matches the
|
||||
original 589 insertions/20 deletions; no broad deletions remain.
|
||||
|
||||
Implemented E4 under sage-4037's explicit direction to make the product fix
|
||||
while keeping all tests unrun. This supersedes the earlier planned RED-first
|
||||
execution order; no RED or green has been observed. The existing regression
|
||||
cases predate the fix. GUARD_CODES now includes citation-unavailable. Only a
|
||||
mirror confirmed absent by lstat, or readSyncState's legitimate empty state,
|
||||
yields no served commit. Other read/lock/metadata errors give the fixed safe
|
||||
reason: "The library is busy or unavailable. Retry the answer when the library
|
||||
is available." The runner receives it through BusError.reason and includes it
|
||||
in its one retry request. The existing four fallback bodies remain. Plain,
|
||||
web-only and fixed replies require no mirror read, so a busy mirror cannot
|
||||
block the runner's fixed fallback. M5's real production anchor now exists.
|
||||
|
||||
Supporting scope after row 283 (`8d2856ee3`): added two broker tests using real
|
||||
mapping/reader classification, not a scope stub. A path in both supporting and
|
||||
playground refuses as canon; an agent-committed supporting path stores
|
||||
scope=supporting, agent=acme/scribe and its file commit in message.checked.
|
||||
|
||||
C2-05a comparison: index-build.mjs builds its file map directly from readLibrary
|
||||
files; indexFor calls that same reader at the requested commit. Added a real
|
||||
fixture test comparing the index set, readLibrary set and libraryReader.lines
|
||||
admission, including supporting, unmapped Markdown and .canvas. This comparison
|
||||
is authored and statically traced, not executed; numerical results wait on CLEAR.
|
||||
|
||||
Current packet: manifest.r4.sha256, relative to e0c6142f3. No test file already
|
||||
present at that base was edited. No Node, npm, tests, mutants or webui build run.
|
||||
Ready for CLEAR after Lena's row 296. On CLEAR, install with npm ci
|
||||
--ignore-scripts --no-audit --no-fund in THIS worktree root and packages/webui;
|
||||
never link to canonical node_modules or run npm/rm in the canonical checkout.
|
||||
Use short mktemp TMPDIR and timeout -k 10. Any old-test red goes to Sage before
|
||||
an edit. Full green gate, mutants and Webby verdict remain outstanding.
|
||||
|
||||
Range-diff receipt rendering trims trailing whitespace on diff separator lines; no substantive range-diff content changed. This removes whitespace warnings caused by embedding raw diff output in a tracked text file.
|
||||
|
||||
Final base-to-candidate whitespace check found a trailing blank line inherited from Launchpad in limits.mjs; removed it without behavior changes. manifest.r5.sha256 supersedes r4 for the exact candidate file hashes.
|
||||
|
||||
|
||||
## CLEAR sage-4042/4043 — execution started 2026-10-24
|
||||
|
||||
Queue beakley-217-start initially refused Lena's review-outcome lock twice;
|
||||
same-op retry succeeded at rev3894 (briefed→in-progress). No queue bypass.
|
||||
Short TMPDIR /mnt/storage/scratch/tmp/tNoueZ. Worktree-local npm ci at root
|
||||
(128 packages) and packages/webui (2) completed; neither path was a symlink.
|
||||
No npm/rm command ran in canonical. All test commands use timeout -k 10.
|
||||
|
||||
E4 current file: 3 pass/0 fail/0 skip. M5 isolated pre-fix stand-in: 1 pass,
|
||||
2 expected assertion failures (citation-invalid instead of citation-unavailable),
|
||||
exit1. Restored product bytes and checkout product hashes, then E4 restored
|
||||
control 3/3. Receipts under run-r2/m5-red. M1 six-space anchors both match
|
||||
exactly once on the eight-space lines.
|
||||
|
||||
Touched test files first run: 56 pass/1 fail, zero skip/cancel. The sole first-red
|
||||
was NEW citation-runtime.test.mjs invalid-authority at Broker.checkBusiness:
|
||||
validator output has unresolved roles and is not the host's broker projection.
|
||||
Adjusted that new fixture only, following limits-runtime.test.mjs: minimal
|
||||
empty-authority coder, validated real project mappings, real organization adapter
|
||||
and systemFor(root). Single rerun 1/1, then all touched files 57/57. No base test
|
||||
failure or edit. First log retained as run-r2/touched-first.log and reported to
|
||||
Sage in beakley-0014. No production change was required.
|
||||
|
||||
The isolated mutant driver now wraps each node run in timeout -k 10, refuses a
|
||||
symlinked root node_modules, restores mutated files in finally, verifies original
|
||||
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
|
||||
canonical dependency link is used; isolated copies link only this worktree's
|
||||
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.
|
||||
@@ -0,0 +1,61 @@
|
||||
# Row 217 round 2 — verified for review
|
||||
|
||||
Issue #1718, C2-06. Base e0c6142f3; branch beakley/row217-r2. Continued
|
||||
Launchpad e25ef0373 through the preserved original dde5b8496 branch. Range-diff,
|
||||
conflict resolutions and acceptance receipts are in BUILD.md. Tested source
|
||||
revision: 2d274a5b6; the final commits add records/evidence only.
|
||||
|
||||
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.
|
||||
|
||||
## Product and test scope
|
||||
|
||||
The package paths listed in candidate-manifest.sha256 are exactly this row's
|
||||
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.
|
||||
|
||||
## Executed evidence
|
||||
|
||||
| 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 |
|
||||
|
||||
Touched files 57/57; total whole suites 2,764. First run was 56/57 due solely
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
Commands ran serially under Sage CLEAR with short TMPDIR and timeout -k 10.
|
||||
Root/webui dependencies came from local npm ci, never canonical links. Full logs,
|
||||
summary.json and mutant certificates are in run-r2/. The complete changed-file
|
||||
manifest candidate-manifest.sha256 covers e0c6142f3..candidate, excluding itself;
|
||||
its SHA256 is supplied with the pushed tip. Historical manifests stay untouched.
|
||||
|
||||
## Remaining boundaries
|
||||
|
||||
Sage runs every scripts/test-*.sh at landing and posts the formal Webby review
|
||||
request. No merge/deployment performed. First-library selection remains the
|
||||
accepted limitation; configuration faults share the safe unavailable reason
|
||||
(Webby N1, nonblocking). Obsolete-name search hits only row225's render files.
|
||||
@@ -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,21 @@
|
||||
68c05644d29188b897e2d4695d8e7025e143d424d69a91bc07bc950f589d34bf packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
49e01e5e73cc3e830ad48a1b6b13fe4d06a38950f17847dc049b75209d6d3f0a packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
29114051a9bc5271e48978a9552d64b51b0ac4810f94a1f98940bf617b148df8 packages/bus/tests/citation-guard.test.mjs
|
||||
dc2d5836f10f591fc174aaf9587a3bff793b24ac29efe9ab68c6a9243d1d1c2c packages/bus/tests/citation-helpers.mjs
|
||||
825da818ba3cf45a4837f0f15a9c2cdba55a3d0bbb4479d55236f35799427c6f packages/business/src/business.mjs
|
||||
dbd79a4dfc926620d034b540f98f39336d81e4c79f214424c3cf19250c1d1f8d packages/business/src/organization.mjs
|
||||
bec04a894bc2af000548283ed7719e4de1c6d56688f42238a113390e9b2d3fbe packages/business/tests/reply-limits.test.mjs
|
||||
1f1bea250f694a2aae9b9dc856b3c3424ceca153ccf826c99ccb98e6ea9cd394 packages/cli/README.md
|
||||
2f291a71f490f2741edada7a3e3788500f8976a08eb8ab1411f6c5982f778260 packages/cli/src/limits.mjs
|
||||
f38af2d46d5f5f6388f599912507b94b87a0bf9dcc2104bb2187c38ee35118d5 packages/cli/tests/reply-limits.test.mjs
|
||||
6ad72b4245e0a66e32725941900c1ece64c2e5de2fb73d65c8e042b4f3a691a6 packages/harness/src/runner.mjs
|
||||
ec7ef0cbf493217eb9229895cae2fe7ef603f41913840e59a73220df387c81ca packages/harness/tests/citation-runner.test.mjs
|
||||
330bc71bf6c7e64d3ddb70440903d2d9acf7878d44a49d7e30c2352ee4c807ec packages/harness/tests/fixtures/citation-adapter.mjs
|
||||
0365114cf5773cbaa9fba196fbd1e773b2ec5ad2300c40231c357ca58884b9e3 packages/library/src/guard.mjs
|
||||
aaa8f7ba60a729a88a6ef57b3d5ff5a69bcf0e17b60e7db51a8dc5a697627b6c packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
c9e682eff87e822647921288d7fce0ebdc7b09f0a6dfdd6528f10249ae26e81b packages/library/src/reply-protocol.mjs
|
||||
dd056409712113eb9c1b70e29b21022f5b30df6ffbfb2658e293edd6ec7195c7 packages/library/tests/guard.test.mjs
|
||||
2f3ec99129d16394d4458e252b9cba4e38ff66cd9393e3889f8afc3140e15a8e packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
68c05644d29188b897e2d4695d8e7025e143d424d69a91bc07bc950f589d34bf packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
49e01e5e73cc3e830ad48a1b6b13fe4d06a38950f17847dc049b75209d6d3f0a packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
8dc344b8a905c58d544b031ca84adb7eb869d9de88eb8e6b0fc1d9190702a38a packages/bus/tests/citation-guard.test.mjs
|
||||
62d8a55945d4b700e22c8c49b6420a5e25719d266901a2ad20c72514735e65e9 packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
825da818ba3cf45a4837f0f15a9c2cdba55a3d0bbb4479d55236f35799427c6f packages/business/src/business.mjs
|
||||
dbd79a4dfc926620d034b540f98f39336d81e4c79f214424c3cf19250c1d1f8d packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
1f1bea250f694a2aae9b9dc856b3c3424ceca153ccf826c99ccb98e6ea9cd394 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
|
||||
0365114cf5773cbaa9fba196fbd1e773b2ec5ad2300c40231c357ca58884b9e3 packages/library/src/guard.mjs
|
||||
aaa8f7ba60a729a88a6ef57b3d5ff5a69bcf0e17b60e7db51a8dc5a697627b6c packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
c9e682eff87e822647921288d7fce0ebdc7b09f0a6dfdd6528f10249ae26e81b packages/library/src/reply-protocol.mjs
|
||||
dd056409712113eb9c1b70e29b21022f5b30df6ffbfb2658e293edd6ec7195c7 packages/library/tests/guard.test.mjs
|
||||
2f3ec99129d16394d4458e252b9cba4e38ff66cd9393e3889f8afc3140e15a8e packages/seat/src/sandbox.mjs
|
||||
@@ -0,0 +1,23 @@
|
||||
68c05644d29188b897e2d4695d8e7025e143d424d69a91bc07bc950f589d34bf packages/bus/src/broker.mjs
|
||||
ad3c686a089f67f3c89610937c6fc9b32367cea5d9735125d89bef042082d4e8 packages/bus/src/client.mjs
|
||||
49e01e5e73cc3e830ad48a1b6b13fe4d06a38950f17847dc049b75209d6d3f0a packages/bus/src/runtime.mjs
|
||||
66b26d131a19f4f411686427274936850c1ff0aed11e9b281ae4aadcf4b289fc packages/bus/src/server.mjs
|
||||
cdd0304ec25ef1ad3e31c52502fa46f2c80bd77c8d3c2e13f8ed4b5328f342c9 packages/bus/tests/citation-availability.test.mjs
|
||||
8dc344b8a905c58d544b031ca84adb7eb869d9de88eb8e6b0fc1d9190702a38a packages/bus/tests/citation-guard.test.mjs
|
||||
8a2d4b636f8d4f926c484254c33ecf7b7e4722acef3250d2730593984d5ac06b packages/bus/tests/citation-helpers.mjs
|
||||
168dcac99d9bfdfdf5ff0eaa2c0fff91595b351b4d0092dc299532c9c32869f0 packages/bus/tests/citation-runtime.test.mjs
|
||||
825da818ba3cf45a4837f0f15a9c2cdba55a3d0bbb4479d55236f35799427c6f packages/business/src/business.mjs
|
||||
dbd79a4dfc926620d034b540f98f39336d81e4c79f214424c3cf19250c1d1f8d packages/business/src/organization.mjs
|
||||
4d2eb11beaa80175e524af1b95c81e7164990fba1d3e1754f5ba06eee390a14f packages/business/tests/reply-limits.test.mjs
|
||||
1f1bea250f694a2aae9b9dc856b3c3424ceca153ccf826c99ccb98e6ea9cd394 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
|
||||
0365114cf5773cbaa9fba196fbd1e773b2ec5ad2300c40231c357ca58884b9e3 packages/library/src/guard.mjs
|
||||
aaa8f7ba60a729a88a6ef57b3d5ff5a69bcf0e17b60e7db51a8dc5a697627b6c packages/library/src/index.mjs
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 packages/library/src/limits.mjs
|
||||
c9e682eff87e822647921288d7fce0ebdc7b09f0a6dfdd6528f10249ae26e81b packages/library/src/reply-protocol.mjs
|
||||
dd056409712113eb9c1b70e29b21022f5b30df6ffbfb2658e293edd6ec7195c7 packages/library/tests/guard.test.mjs
|
||||
2f3ec99129d16394d4458e252b9cba4e38ff66cd9393e3889f8afc3140e15a8e packages/seat/src/sandbox.mjs
|
||||
@@ -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
|
||||
3e04fa25a64334d33ffbec704205b32cd01992f2d341e908f933a345199beee0 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,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,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,90 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run only on Sage CLEAR. Mutate isolated HEAD archives; never edit the checkout.
|
||||
|
||||
A green control run is required before each negative result counts as a kill.
|
||||
Usage: python3 agents/beakley/work/queue-217/mutants.py OUTPUT_DIRECTORY
|
||||
"""
|
||||
from pathlib import Path
|
||||
import io
|
||||
import hashlib
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import tarfile
|
||||
import tempfile
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[4]
|
||||
OUT = Path(sys.argv[1]).resolve()
|
||||
OUT.mkdir(parents=True, exist_ok=True)
|
||||
WRITER = "packages/business/src/organization.mjs"
|
||||
BROKER = "packages/bus/src/broker.mjs"
|
||||
CLIENT = "packages/bus/src/client.mjs"
|
||||
ATOMIC = "if (check) this.#event(s, 'action.allowed', { action: 'message.checked', message: mid, check }, mid, checkEventId(mid));"
|
||||
REENTER = "return this.#reenter(cap, s, { verb: 'message.send', args }, check);"
|
||||
SPLIT = """const result = this.#reenter(cap, s, { verb: 'message.send', args }, check);
|
||||
if (check) this.#store.transaction(() => this.#event(s, 'action.allowed', { action: 'message.checked', message: result.id, check }, result.id, checkEventId(result.id)));
|
||||
return result;"""
|
||||
MUTANTS = [
|
||||
("M1-writer-fence", [(WRITER, " replyLimitsFence(old, document, actor);", ""),
|
||||
(WRITER, " replyLimitsFence(old, written, actor);", "")],
|
||||
["packages/business/tests/reply-limits.test.mjs"]),
|
||||
("M2-incoming-human", [(WRITER, "actor === old.human", "actor === document.human")],
|
||||
["packages/business/tests/reply-limits.test.mjs"]),
|
||||
("M3-split-check-transaction", [(BROKER, ATOMIC, ""), (BROKER, REENTER, SPLIT)],
|
||||
["packages/bus/tests/citation-guard.test.mjs"]),
|
||||
("M5-hide-library-unavailable", [("packages/library/src/guard.mjs",
|
||||
"refuse('citation-unavailable', 'The library is busy or unavailable. Retry the answer when the library is available.');",
|
||||
"served = null;")], ["packages/bus/tests/citation-availability.test.mjs"]),
|
||||
("M4-drop-client-reason", [(CLIENT, "new BusError(r.error, typeof r.reason === 'string' ? r.reason.slice(0, 300) : undefined)", "new BusError(r.error)")],
|
||||
["packages/bus/tests/citation-guard.test.mjs"]),
|
||||
]
|
||||
|
||||
archive = subprocess.check_output(["git", "archive", "HEAD", "packages", "roles", "scripts", "tools", "docs", "package.json", "RELEASE"], cwd=ROOT)
|
||||
summary = []
|
||||
selected = set(sys.argv[2:])
|
||||
product_files = [line.split(' ', 1)[1] for line in (ROOT / 'agents/beakley/work/queue-217/manifest.r5.sha256').read_text().splitlines()]
|
||||
def hashes(base, files):
|
||||
return {file: hashlib.sha256((base / file).read_bytes()).hexdigest() for file in files}
|
||||
original_products = hashes(ROOT, product_files)
|
||||
for name, changes, tests in MUTANTS:
|
||||
if selected and name not in selected:
|
||||
continue
|
||||
with tempfile.TemporaryDirectory(prefix="row217-mutant-") as directory:
|
||||
work = Path(directory)
|
||||
with tarfile.open(fileobj=io.BytesIO(archive)) as source:
|
||||
source.extractall(work, filter="data")
|
||||
modules = ROOT / "node_modules"
|
||||
if modules.is_symlink():
|
||||
raise SystemExit('root node_modules must be a local install, never a canonical link')
|
||||
if modules.exists():
|
||||
os.symlink(modules.resolve(), work / "node_modules", target_is_directory=True)
|
||||
cmd = ["timeout", "-k", "10", "120", "node", "--test", *tests]
|
||||
with (OUT / f"{name}-control.log").open("w") as log:
|
||||
control = subprocess.run(cmd, cwd=work, stdout=log, stderr=subprocess.STDOUT, timeout=120)
|
||||
if control.returncode:
|
||||
raise SystemExit(f"{name}: control RED, no mutant result claimed")
|
||||
originals = {file: (work / file).read_bytes() for file, _, _ in changes}
|
||||
try:
|
||||
for file, before, after in changes:
|
||||
path = work / file
|
||||
text = path.read_text()
|
||||
if text.count(before) != 1:
|
||||
raise SystemExit(f"{name}: expected exactly one mutation anchor in {file}")
|
||||
path.write_text(text.replace(before, after))
|
||||
with (OUT / f"{name}.log").open("w") as log:
|
||||
mutant = subprocess.run(cmd, cwd=work, stdout=log, stderr=subprocess.STDOUT, timeout=140)
|
||||
if mutant.returncode != 1:
|
||||
raise SystemExit(f"{name}: expected assertion failure exit 1, got {mutant.returncode}")
|
||||
finally:
|
||||
for file, content in originals.items():
|
||||
(work / file).write_bytes(content)
|
||||
assert all((work / file).read_bytes() == content for file, content in originals.items())
|
||||
assert hashes(ROOT, product_files) == original_products, 'checkout product hashes changed'
|
||||
(OUT / f"{name}-restored.sha256").write_text(''.join(f'{digest} {file}\n' for file, digest in sorted(original_products.items())))
|
||||
with (OUT / f"{name}-restored-green.log").open("w") as log:
|
||||
restored = subprocess.run(cmd, cwd=work, stdout=log, stderr=subprocess.STDOUT, timeout=140)
|
||||
if restored.returncode:
|
||||
raise SystemExit(f"{name}: restored control RED")
|
||||
summary.append(f"{name}: killed (control green, mutant exit {mutant.returncode}, hashes restored, restored green)")
|
||||
(OUT / "summary.txt").write_text("\n".join(summary) + "\n")
|
||||
print(summary[-1], flush=True)
|
||||
@@ -0,0 +1,112 @@
|
||||
1: e25ef0373 ! 1: b9ef816ff launchpad: row 217 C2-06 work in progress, UNTESTED, handed to Beakley (mos-1500)
|
||||
@@ packages/bus/src/broker.mjs: export class Broker {
|
||||
if (CREDENTIAL_VERBS.includes(request.verb)) return this.#requestCredential(s, request.verb, structuredClone(args));
|
||||
if (request.verb === 'instance.hire' || request.verb === 'instance.fire')
|
||||
return this.#chiefLifecycle(s, request.verb, structuredClone(args));
|
||||
+ if (request.verb === 'grants.scope' || request.verb === 'grants.scope.set')
|
||||
+ return this.#grantScopeVerb(s, request.verb, structuredClone(args));
|
||||
- if (["limits", "limits.set", "organization.set", "organization.revision", "plugins", "plugins.set", "instances", "instances.set", "routes", "routes.set", "veto.set"].includes(request.verb)) {
|
||||
+ if (["limits", "limits.set", "organization.set", "organization.revision", "plugins", "plugins.set", "instances", "instances.set", "routes", "routes.set", "veto.set", "library.limits.set"].includes(request.verb)) {
|
||||
// Row 123 (#1617, REQ-COS-1, REQ-LIMIT-1): organization.set is limits.set for a role whose
|
||||
@@ packages/bus/src/runtime.mjs: export async function startBroker({
|
||||
project: {
|
||||
readSpec: context => projectModule.readSpec({ ...context, dataRoot }),
|
||||
@@ packages/bus/src/runtime.mjs: export async function startBroker({
|
||||
- else if(verb==='plugins.set')result=plugins.set(id,args,actor);
|
||||
- // Row 194 (#1692, V6): the human's keep and noHire lists, through the instance writer.
|
||||
else if(verb==='veto.set')result=instances.veto(id,args,actor);
|
||||
+ // Row 298: the human's grant scope, through the instance writer.
|
||||
+ else if(verb==='grants.scope.set')result=instances.grantScope(id,args,actor);
|
||||
+ // C2-06 M11: the human's replyLimits, through the organization writer's fence.
|
||||
+ else if(verb==='library.limits.set')result=setReplyLimits(organizationWriter({dir:organization.dir,rolesDir:organization.rolesDir}),id,args,actor);
|
||||
// Row 194 (D2.1, D2.2): the chief's hire and fire, with the reason in the change context.
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir
|
||||
const parent = join(dir, "businesses");
|
||||
directory(evidence);
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir, rolesDir, barrier = () => {} }) {
|
||||
- // mapping, including library playgrounds and hybrid universes.
|
||||
- if (canonicalJson(document?.projects) !== canonicalJson(old.projects))
|
||||
- fail('organization-projects-protected');
|
||||
-+ replyLimitsFence(old, document, actor);
|
||||
- validateBusinessDocument(document, file, { rolesDir });
|
||||
- const bytes = JSON.stringify(document, null, 2) + "\n";
|
||||
- // Check and log exactly what lands on disk, for every setter: a value JSON
|
||||
+ // mapping, including library playgrounds and hybrid universes.
|
||||
+ if (canonicalJson(document?.projects) !== canonicalJson(old.projects))
|
||||
+ fail('organization-projects-protected');
|
||||
++ replyLimitsFence(old, document, actor);
|
||||
+ validateBusinessDocument(document, file, { rolesDir });
|
||||
+ const bytes = JSON.stringify(document, null, 2) + "\n";
|
||||
+ // Check and log exactly what lands on disk, for every setter: a value JSON
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir, rolesDir, barrier = () => {} }) {
|
||||
- const written = JSON.parse(bytes);
|
||||
- if (canonicalJson(written.projects) !== canonicalJson(old.projects))
|
||||
- fail('organization-projects-protected');
|
||||
-+ replyLimitsFence(old, written, actor);
|
||||
- validateBusinessDocument(written, file, { rolesDir });
|
||||
- const after = sha256(bytes);
|
||||
- const transaction = randomUUID();
|
||||
+ const written = JSON.parse(bytes);
|
||||
+ if (canonicalJson(written.projects) !== canonicalJson(old.projects))
|
||||
+ fail('organization-projects-protected');
|
||||
++ replyLimitsFence(old, written, actor);
|
||||
+ validateBusinessDocument(written, file, { rolesDir });
|
||||
+ if (beforeWrite) {
|
||||
+ beforeWrite();
|
||||
@@ packages/business/src/organization.mjs: export function organizationWriter({ dir, rolesDir, barrier = () => {} }) {
|
||||
});
|
||||
}
|
||||
@@ packages/library/src/guard.mjs (new)
|
||||
+}
|
||||
|
||||
## packages/library/src/index.mjs ##
|
||||
-@@ packages/library/src/index.mjs: export { renderItems, KINDS, NOTICES, UNREADABLE } from './render.mjs';
|
||||
- export { survey, formatSurvey, surveyMain } from './survey.mjs';
|
||||
- export { SYNC_STATE_FILE, mirrorPath, ensureMirror, withLibraryLock, servedCommit, readSyncState, libraryStatus, readLibraryFile } from './mirror.mjs';
|
||||
+@@ packages/library/src/index.mjs: export { SYNC_STATE_FILE, mirrorPath, ensureMirror, withLibraryLock, servedCommi
|
||||
export { syncCommand, sync, ASKPASS, SLOT, SYNC_INTERVAL_MS } from './sync.mjs';
|
||||
+ export { buildIndex, indexFor, clearIndexCache, indexCacheSize } from './index-build.mjs';
|
||||
+ export { sees, find, get, search, manuscript, universeInfo, QUERY_REPLY_CAP, LOOKUP_LIMIT, MANUSCRIPT_LINES } from './query.mjs';
|
||||
+export { REPLY_LIMITS, resolveReplyLimits, checkReplyLimits } from './limits.mjs';
|
||||
+export { GUARD_CODES, FIXED_TEXTS, WEB_CITE_DEFINITIONS, REASON_MAX, GuardError, parseReply, checkReply, libraryReader, guardReply, lastCommits } from './guard.mjs';
|
||||
|
||||
2: c25f5b8da ! 2: 7400509ba row 217: citation runner retry and acceptance draft (Untested)
|
||||
@@ Commit message
|
||||
row 217: citation runner retry and acceptance draft (Untested)
|
||||
|
||||
## BUILD-LOG.md ##
|
||||
-@@ BUILD-LOG.md: Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
|
||||
- 2026-10-23T17:29:46Z | Gyro Vikunja571 sage-3542 Connections amendment | Branch gyro/editor-connections-design cut exactly from landed PRD1.17 30e6bb680; read REQ-LIB-5 in that PRD. Replaced stale J-b waits in parent and W4. Proposed W8 owns current authorized Markdown/DOCX links/backlinks list, labels, versioned refresh, leakage refusals and fixture tests. Build order under mos-1470/comment961 is W7 closed routing candidate, W8 landing, then W7 human first-real-import opening. No REQ-LIB-8 condition or acceptance change. Q234/mos-1363/S0 M1-M14 and post-10-27/MVP priority fixed. Static diff, twelve brief sections and append-only checks pass. No repo Node, tests, build, browser, queue mutation or live action. Fenton reviews after authorized docs branch push; Sage lands on approval.
|
||||
+@@ BUILD-LOG.md: remain; no live state, schema or bus policy change.
|
||||
|
||||
- 2026-10-23T17:32:37Z | Gyro sage-3544 fenton-0016 N1/N2 delta | Before: W7 Gate/final real-conversion list omit the W8 build-order cross-reference and W8 human-view filtering cites agent settings. After: both locations explicitly put W8 landing before human opening as mos-1470 build order, not acceptance; comment/tracked-deletion links are not current story links and never appear in the human Connections view regardless of agent settings. New commit atop approved 5af060fb5, no amend. Static diff and append-only checks pass. Docs only, no repo Node/tests/live action. Fenton checks only this delta.
|
||||
-+
|
||||
+ 2026-10-24 | Goldie | Row265 / #1770 verified (mos-1567, sage-3942) | Approved correction adds solely address import pin + Row265 comment to project-runtime.test and one pure-source RUNNER_FILES mount; new block checks parser has no imports. Serialized fresh-short-TMP timeout-k10: unchanged sandbox10/10, parser15/15, rooms18/18, full bus957/957, twelve named refusal mutants killed (each Node1, driver0), restored parser15/15 + rooms18/18. All positives zero fail/skip/cancel; every mutation restored full broker SHA71b32ee4. Old first-red evidence retained, no other old-test change. Slot returned goldie-0034; Boyd packet explicitly includes mount-list review, candidate push next.
|
||||
+ 2026-10-24T07:18:53Z | Sage | Row 327 (#1825, Bradford, Poe and Dewey) LANDED 68c08b4e7. Before: refactor at 94d9e90a6; the push guard was a scratch script with no reviewed-binary check. After: scripts/push-check.sh and scripts/test-push-check.sh on refactor, 3 commits cherry-picked onto 6a5e12511 with blobs equal to the round 3 tip d858c9f8b, plus doc commits 76f84465f and 68c08b4e7. Binaries are found by numstat or a NUL in the first 8000 committed bytes, regardless of attributes; each needs its sha256 and path in an approved latest-round candidate; an unconfirmed queue tail exits 2. Reviews: Poe c31525 rev 3882, Dewey c31526 rev 3883. Gate: 1st run 06:57Z RED, not the candidate: canonical node_modules was empty from 05:45:15Z (sage-4023). Rerun with its own root npm ci GREEN 07:15:49Z: 17 package suites 0 failures (cli 986, plugins 119, webui 418), 11 scripts exit 0, push-check 6 mutants KILLED; skips are the queue canonical-root check and the row 244 live provider cases. The landed push-check.sh passed its own push (NO_BINARY, NO_ATTRIBUTION, PUSH_READY). mos-1575: gates install their own node_modules; canonical restored with npm ci (128 packages).
|
||||
+2026-10-23 | Beakley (88b97f65) | Row 217 #1718 takeover, before implementation | Clean base 45dca69f6 on beakley/row217. Recovering Launchpad handoff for citation guard, live settings, page store and runner retry. Acceptance is C2-06/design 5.2 plus sage-3595/3599/3602. Tracking agents/beakley/work/queue-217/BUILD.md; no product changes or Node/tests; Sage CLEAR required.
|
||||
+
|
||||
+2026-10-23 | Beakley (88b97f65) | Row 217 #1718 untested draft checkpoint | Continued Launchpad e25ef0373; added runner retry/text/note implementation, pure protocol constants and sage-3640 approved single read-only mount, CLI documentation and new acceptance test files. Static checks caught missing projects compatibility, async request mutation and Git pathspec matching; bounded fixes and regression tests authored. git diff --check clean. No Node/test/mutant executed; Sage holds CLEAR. 283/216/285 dependency checks and all acceptance execution remain open. Packet agents/beakley/work/queue-217/MANIFEST.md.
|
||||
@@ agents/beakley/work/queue-217/mutants.py (new)
|
||||
|
||||
## docs/SESSIONS.md ##
|
||||
@@ docs/SESSIONS.md: are never rewritten or removed; corrections are new entries.
|
||||
- 2026-10-23T17:48:43Z | Scrooge (629b6cd3) | Row 252 Console inbox Approve and Deny (#1753) | Rebased onto 306 landing as 580037105 (range-diff all =), slot run bus 907/0 webui 410/0 cli 943/0, in-review revs 3608/3609, Webby r1 APPROVE, J1-J19 specs to Sage; Sage landed 45ea3fa0d (done rev 3616). Part 1 mutant results were never in BUILD.md; they went to Sage by T3 (scrooge-0252-mutant-specs).
|
||||
- 2026-10-23 | Sage (1ef1e4f8) | Rows 308 and 252 landings, 571 Connections design amendment, Vikunja 597 | 308 (PRD 1.17, #1815) landed 30e6bb680 and 252 (#1753) landed 45ea3fa0d (replay of 580037105 onto 30e6bb680, range-diff all =), each after a full gate on the landed tree (252 also J1-J19, J11c and J18 equivalent); Gyro's 571 amendment (Fenton APPROVE) landed e8bb13df8; Vikunja 570, 435 and 597 done, canonical webui esbuild 0.28.2; queue revs 3589-3616 committed 59f013247
|
||||
- 2026-10-23 | Sage (1ef1e4f8) | Vikunja 571 W build rows; rows 13, 42, 257 and 289 check | Filed the design's ten W rows as queue rows 309-318 (revs 3617-3626, owners set to unassigned 3627-3636, queue commit 293b42fee pushed); Vikunja 571 done (comment 994). Row 13's candidate fd72d2689 is on refactor, gate is Monday's row 7 ledger run; 42 paused under mos-1184; 257 post-v1; 289 waits on 214 and 288. Slot released 17:56Z.
|
||||
+ 2026-10-24T04:27Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 C2-09b rooms | Goldie owns build, Boyd reviews under sage-3915. New goldie/row265 worktree at ec86f2c84, claim rev3814; room verbs/parser/new tests prepared, no old tests changed. Sage-3932 slot: new parser14/14 and rooms18/18 passed; whole bus in progress before refusal mutants, stop rule active.
|
||||
+ 2026-10-24T04:35Z | Goldie (a13dd6d5-5e73-4b7d-8318-02abeff24940) | Row265 / #1770 verified | First slot stopped at project-runtime import pin. mos-1567 narrowly authorizes pin and pure-source mount correction. sage-3942 rerun: sandbox10/10, parser15/15, rooms18/18, bus957/957, twelve refusal mutants killed/restored SHA71b32ee4, parser15/15 + rooms18/18 again. Slot returned goldie-0034; no further test runs. Boyd reviews RUNNER_FILES alongside rooms; own-branch push/claimant in-review next.
|
||||
+ 2026-10-24T07:18:53Z | Sage (1ef1e4f8) | Row 327 / #1825 push guard landed (mos-1572 option A, mos-1575) | Gate went red 06:57Z on an empty canonical node_modules (Glomgold's webui npm ci through a link to canonical, glomgold-0011); rerun with its own npm ci GREEN 07:15:49Z on 1bd214e38; pushed 68c08b4e7 07:18:03Z; #1825 closed c31530; canonical restored (128 packages); brief template rule 4db23a51f | landed
|
||||
+
|
||||
+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.
|
||||
|
||||
3: b6c3129d2 ! 3: a447880cb row 217: early-review coverage and availability RED cases (Untested)
|
||||
@@ Commit message
|
||||
row 217: early-review coverage and availability RED cases (Untested)
|
||||
|
||||
## BUILD-LOG.md ##
|
||||
-@@ BUILD-LOG.md: Row 299 (573, #1806, Gander, Filbert): before, the P10 band test timed a fault r
|
||||
+@@ BUILD-LOG.md: remain; no live state, schema or bus policy change.
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 takeover, before implementation | Clean base 45dca69f6 on beakley/row217. Recovering Launchpad handoff for citation guard, live settings, page store and runner retry. Acceptance is C2-06/design 5.2 plus sage-3595/3599/3602. Tracking agents/beakley/work/queue-217/BUILD.md; no product changes or Node/tests; Sage CLEAR required.
|
||||
|
||||
2026-10-23 | Beakley (88b97f65) | Row 217 #1718 untested draft checkpoint | Continued Launchpad e25ef0373; added runner retry/text/note implementation, pure protocol constants and sage-3640 approved single read-only mount, CLI documentation and new acceptance test files. Static checks caught missing projects compatibility, async request mutation and Git pathspec matching; bounded fixes and regression tests authored. git diff --check clean. No Node/test/mutant executed; Sage holds CLEAR. 283/216/285 dependency checks and all acceptance execution remain open. Packet agents/beakley/work/queue-217/MANIFEST.md.
|
||||
4: dde5b8496 = 4: 2655ec010 row 217: keep fixture status on its current served tip (Untested)
|
||||
@@ -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
|
||||
@@ -1,43 +0,0 @@
|
||||
2026-10-24T04:05:53Z
|
||||
23:05:53 up 10 days, 14:25, 2 users, load average: 2.29, 2.31, 1.89
|
||||
CLEAR sage-3910 TMPDIR=/mnt/storage/scratch/tmp/lEvgx1
|
||||
✔ install: absent (28.959485ms)
|
||||
✔ install: local (24.660305ms)
|
||||
✔ install: local endpoint (26.210523ms)
|
||||
✔ install: containerized missing endpoint (25.495263ms)
|
||||
✔ install: bad endpoint "tcp://localhost:2375" (28.62092ms)
|
||||
✔ install: bad endpoint "ssh://host/run/docker.sock" (32.126399ms)
|
||||
✔ install: bad endpoint "run/docker.sock" (26.69995ms)
|
||||
✔ install: bad endpoint "unix://relative.sock" (33.36326ms)
|
||||
✔ install: bad endpoint "unix:///a b.sock" (30.579866ms)
|
||||
✔ install: bad endpoint "unix:///a.sock\n" (40.844622ms)
|
||||
✔ install: bad endpoint "unix:///a" (36.371215ms)
|
||||
✔ install: bad endpoint "" (31.603044ms)
|
||||
✔ install: bad endpoint null (29.645166ms)
|
||||
✔ install: bad endpoint 4 (30.638453ms)
|
||||
✔ install: valid endpoint (28.088952ms)
|
||||
✔ install: unknown mode (28.182929ms)
|
||||
✔ install: missing mode (26.297287ms)
|
||||
✔ install: unknown key (27.205488ms)
|
||||
✔ install: null (29.189475ms)
|
||||
✔ install: array (30.347371ms)
|
||||
✔ helper refuses rootful (76.082505ms)
|
||||
✔ helper refuses missing (58.354463ms)
|
||||
✔ helper refuses substring (86.830586ms)
|
||||
✔ helper refuses object (108.0825ms)
|
||||
✔ helper refuses invalid JSON (85.203357ms)
|
||||
✔ helper refuses null success (85.225204ms)
|
||||
✔ helper refuses rootless output but failed (67.840402ms)
|
||||
✔ helper checks once and explicitly names host for both calls (119.763305ms)
|
||||
✔ local mode refuses before Docker null (35.42747ms)
|
||||
✔ local mode refuses before Docker {"mode":"local"} (30.531767ms)
|
||||
✔ invalid config refuses before Docker (30.092363ms)
|
||||
ℹ tests 31
|
||||
ℹ suites 0
|
||||
ℹ pass 31
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 833.790665
|
||||
EXIT=0
|
||||
@@ -1,23 +0,0 @@
|
||||
2026-10-24T04:06:01Z
|
||||
23:06:01 up 10 days, 14:25, 2 users, load average: 2.27, 2.30, 1.89
|
||||
CLEAR sage-3910 TMPDIR=/mnt/storage/scratch/tmp/lfgV9z
|
||||
✔ allows exact host and port, fragmented headers, and preserves tunnel head (21.273322ms)
|
||||
✔ unlisted host (1.324735ms)
|
||||
✔ unlisted port (1.081626ms)
|
||||
✔ GET (0.948442ms)
|
||||
✔ invalid port (0.95243ms)
|
||||
✔ userinfo (0.874803ms)
|
||||
✔ bad header (0.782898ms)
|
||||
✔ slow client has a total header deadline (81.829907ms)
|
||||
✔ oversized header refuses (1.267008ms)
|
||||
✔ missing, invalid and unknown lists fail closed (0.491274ms)
|
||||
✔ refused upstream returns 502 while retaining one allowed decision (1.716299ms)
|
||||
ℹ tests 11
|
||||
ℹ suites 0
|
||||
ℹ pass 11
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 156.342618
|
||||
EXIT=0
|
||||
@@ -1,43 +0,0 @@
|
||||
2026-10-24T04:08:52Z
|
||||
23:08:52 up 10 days, 14:28, 2 users, load average: 2.16, 2.49, 2.04
|
||||
CLEAR sage-3919 TMPDIR=/mnt/storage/scratch/tmp/o2n7Db
|
||||
✔ install: absent (31.8592ms)
|
||||
✔ install: local (29.807282ms)
|
||||
✔ install: local endpoint (24.009896ms)
|
||||
✔ install: containerized missing endpoint (26.296453ms)
|
||||
✔ install: bad endpoint "tcp://localhost:2375" (26.404525ms)
|
||||
✔ install: bad endpoint "ssh://host/run/docker.sock" (27.486365ms)
|
||||
✔ install: bad endpoint "run/docker.sock" (24.280876ms)
|
||||
✔ install: bad endpoint "unix://relative.sock" (24.363468ms)
|
||||
✔ install: bad endpoint "unix:///a b.sock" (24.920898ms)
|
||||
✔ install: bad endpoint "unix:///a.sock\n" (25.784031ms)
|
||||
✔ install: bad endpoint "unix:///a" (27.89803ms)
|
||||
✔ install: bad endpoint "" (28.939674ms)
|
||||
✔ install: bad endpoint null (26.129602ms)
|
||||
✔ install: bad endpoint 4 (27.601233ms)
|
||||
✔ install: valid endpoint (29.310223ms)
|
||||
✔ install: unknown mode (30.307014ms)
|
||||
✔ install: missing mode (26.432375ms)
|
||||
✔ install: unknown key (29.208115ms)
|
||||
✔ install: null (29.793ms)
|
||||
✔ install: array (28.956899ms)
|
||||
✔ helper refuses rootful (88.440017ms)
|
||||
✔ helper refuses missing (49.868469ms)
|
||||
✔ helper refuses substring (76.03165ms)
|
||||
✔ helper refuses object (77.494513ms)
|
||||
✔ helper refuses invalid JSON (78.525159ms)
|
||||
✔ helper refuses null success (79.166999ms)
|
||||
✔ helper refuses rootless output but failed (52.195589ms)
|
||||
✔ helper checks once and explicitly names host for both calls (124.380922ms)
|
||||
✔ local mode refuses before Docker null (28.199092ms)
|
||||
✔ local mode refuses before Docker {"mode":"local"} (29.618143ms)
|
||||
✔ invalid config refuses before Docker (27.543884ms)
|
||||
ℹ tests 31
|
||||
ℹ suites 0
|
||||
ℹ pass 31
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 762.528877
|
||||
EXIT=0
|
||||
@@ -1,245 +0,0 @@
|
||||
2026-10-24T04:09:14Z
|
||||
23:09:14 up 10 days, 14:29, 2 users, load average: 2.58, 2.56, 2.08
|
||||
CLEAR sage-3919 TMPDIR=/mnt/storage/scratch/tmp/7xUNh5
|
||||
✔ install: absent (28.837858ms)
|
||||
✔ install: local (28.328967ms)
|
||||
✔ install: local endpoint (26.178892ms)
|
||||
✔ install: containerized missing endpoint (25.578947ms)
|
||||
✔ install: bad endpoint "tcp://localhost:2375" (24.988885ms)
|
||||
✔ install: bad endpoint "ssh://host/run/docker.sock" (25.850327ms)
|
||||
✔ install: bad endpoint "run/docker.sock" (26.499708ms)
|
||||
✔ install: bad endpoint "unix://relative.sock" (42.276491ms)
|
||||
✔ install: bad endpoint "unix:///a b.sock" (32.161423ms)
|
||||
✔ install: bad endpoint "unix:///a.sock\n" (26.834457ms)
|
||||
✔ install: bad endpoint "unix:///a" (30.552354ms)
|
||||
✔ install: bad endpoint "" (28.938768ms)
|
||||
✔ install: bad endpoint null (27.00598ms)
|
||||
✔ install: bad endpoint 4 (29.63046ms)
|
||||
✔ install: valid endpoint (28.707851ms)
|
||||
✔ install: unknown mode (25.507911ms)
|
||||
✔ install: missing mode (27.101142ms)
|
||||
✔ install: unknown key (32.316453ms)
|
||||
✔ install: null (27.273355ms)
|
||||
✔ install: array (25.503395ms)
|
||||
✔ helper refuses rootful (81.447175ms)
|
||||
✔ helper refuses missing (49.32616ms)
|
||||
✔ helper refuses substring (80.299191ms)
|
||||
✔ helper refuses object (96.465808ms)
|
||||
✔ helper refuses invalid JSON (89.854499ms)
|
||||
✔ helper refuses null success (79.934412ms)
|
||||
✔ helper refuses rootless output but failed (61.053445ms)
|
||||
✔ helper checks once and explicitly names host for both calls (120.469053ms)
|
||||
✔ local mode refuses before Docker null (28.252291ms)
|
||||
✔ local mode refuses before Docker {"mode":"local"} (32.631557ms)
|
||||
✔ invalid config refuses before Docker (28.529643ms)
|
||||
ℹ tests 31
|
||||
ℹ suites 0
|
||||
ℹ pass 31
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 798.423992
|
||||
✔ allows exact host and port, fragmented headers, and preserves tunnel head (18.932222ms)
|
||||
✔ unlisted host (1.309946ms)
|
||||
✔ unlisted port (1.067401ms)
|
||||
✔ GET (0.988233ms)
|
||||
✔ invalid port (0.919738ms)
|
||||
✔ userinfo (0.832286ms)
|
||||
✔ bad header (0.761085ms)
|
||||
✔ slow client has a total header deadline (80.345593ms)
|
||||
✔ oversized header refuses (1.044536ms)
|
||||
✔ missing, invalid and unknown lists fail closed (0.486134ms)
|
||||
✔ refused upstream returns 502 while retaining one allowed decision (1.562662ms)
|
||||
ℹ tests 11
|
||||
ℹ suites 0
|
||||
ℹ pass 11
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 149.849801
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 454B done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#2 DONE 1.6s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/9] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 resolve docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20 done
|
||||
#4 ...
|
||||
|
||||
#5 [internal] load build context
|
||||
#5 transferring context: 31.36MB 0.1s done
|
||||
#5 DONE 0.2s
|
||||
|
||||
#4 [1/9] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 sha256:08489011619dfda982191cb9cc0418dc48ea3b1341588aeef534e4db0ab4d3d0 447B / 447B 0.1s done
|
||||
#4 sha256:1a0cf4b1ffc8dd659bb8c6e90471bc8fec24620e4fdb68bb2b6faa56154ae146 0B / 1.71MB 0.2s
|
||||
#4 sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 0B / 50.86MB 0.2s
|
||||
#4 sha256:517d640e32835287653c4b15eb5d9f6bcf48e103baea4f7e29bac937002f649b 3.31kB / 3.31kB 0.2s done
|
||||
#4 sha256:1a0cf4b1ffc8dd659bb8c6e90471bc8fec24620e4fdb68bb2b6faa56154ae146 1.71MB / 1.71MB 0.3s done
|
||||
#4 sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39 3.15MB / 28.25MB 0.3s
|
||||
#4 sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 6.29MB / 50.86MB 0.5s
|
||||
#4 sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39 11.53MB / 28.25MB 0.5s
|
||||
#4 sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 14.68MB / 50.86MB 0.6s
|
||||
#4 sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39 19.92MB / 28.25MB 0.6s
|
||||
#4 sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 24.12MB / 50.86MB 0.8s
|
||||
#4 sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39 28.25MB / 28.25MB 0.8s done
|
||||
#4 sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 49.28MB / 50.86MB 1.1s
|
||||
#4 extracting sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39
|
||||
#4 sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 50.86MB / 50.86MB 1.1s done
|
||||
#4 extracting sha256:7fd1ebe418b5079d4aa36f416af9b143d127bc75b0155d71cb5fd559b5e04d39 0.7s done
|
||||
#4 DONE 1.6s
|
||||
|
||||
#4 [1/9] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 extracting sha256:517d640e32835287653c4b15eb5d9f6bcf48e103baea4f7e29bac937002f649b 0.0s done
|
||||
#4 extracting sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a
|
||||
#4 extracting sha256:11ffcabe0f772f0f1a9c80b4b290b5ec0de54f11c671f0fa10e5844f9b52d17a 1.0s done
|
||||
#4 DONE 2.6s
|
||||
|
||||
#4 [1/9] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 extracting sha256:1a0cf4b1ffc8dd659bb8c6e90471bc8fec24620e4fdb68bb2b6faa56154ae146 0.0s done
|
||||
#4 extracting sha256:08489011619dfda982191cb9cc0418dc48ea3b1341588aeef534e4db0ab4d3d0 done
|
||||
#4 DONE 2.7s
|
||||
|
||||
#6 [2/9] WORKDIR /opt/mosaic
|
||||
#6 DONE 0.0s
|
||||
|
||||
#7 [3/9] COPY package.json package-lock.json ./
|
||||
#7 DONE 0.0s
|
||||
|
||||
#8 [4/9] RUN npm ci --omit=dev --ignore-scripts --no-audit --no-fund && npm cache clean --force
|
||||
#8 1.008 npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||
#8 2.464
|
||||
#8 2.464 added 128 packages in 2s
|
||||
#8 2.465 npm notice
|
||||
#8 2.465 npm notice New major version of npm available! 11.19.0 -> 12.2.1
|
||||
#8 2.465 npm notice Changelog: https://github.com/npm/cli/releases/tag/v12.2.1
|
||||
#8 2.465 npm notice To update run: npm install -g [email protected]
|
||||
#8 2.465 npm notice
|
||||
#8 2.562 npm warn using --force Recommended protections disabled.
|
||||
#8 DONE 2.7s
|
||||
|
||||
#9 [5/9] COPY packages/ packages/
|
||||
#9 DONE 0.1s
|
||||
|
||||
#10 [6/9] COPY scripts/ scripts/
|
||||
#10 DONE 0.0s
|
||||
|
||||
#11 [7/9] COPY contracts/ contracts/
|
||||
#11 DONE 0.0s
|
||||
|
||||
#12 [8/9] COPY roles/ roles/
|
||||
#12 DONE 0.0s
|
||||
|
||||
#13 [9/9] COPY RELEASE ./
|
||||
#13 DONE 0.0s
|
||||
|
||||
#14 exporting to image
|
||||
#14 exporting layers
|
||||
#14 exporting layers 3.3s done
|
||||
#14 exporting manifest sha256:b288643bbe89b43f6ffe7890598fe70801933c9e1e5d64efbfc6d87bbc502389 done
|
||||
#14 exporting config sha256:c8e137b79bfd807d4d9fc37d5ac211476decc3cc3c8db1e39b2e5dedf5471191 done
|
||||
#14 exporting attestation manifest sha256:5f2e757dd0fc2a424c78eb4bdd2ddd3039067afb54bc76bc03d6a6f9f1e2ac75 done
|
||||
#14 exporting manifest list sha256:7b4fa741d785225148156d1962a1770b40ab84b55ce8ffde5a3485b316f93b3a done
|
||||
#14 naming to docker.io/library/mosaic-core:0.0.12 done
|
||||
#14 unpacking to docker.io/library/mosaic-core:0.0.12
|
||||
#14 unpacking to docker.io/library/mosaic-core:0.0.12 1.6s done
|
||||
#14 DONE 4.9s
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 424B done
|
||||
#1 WARN: InvalidDefaultArgInFrom: Default value for ARG ${CORE_IMAGE} results in empty or invalid base image name (line 2)
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/mosaic-core:0.0.12
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/2] FROM docker.io/library/mosaic-core:0.0.12@sha256:7b4fa741d785225148156d1962a1770b40ab84b55ce8ffde5a3485b316f93b3a
|
||||
#4 resolve docker.io/library/mosaic-core:0.0.12@sha256:7b4fa741d785225148156d1962a1770b40ab84b55ce8ffde5a3485b316f93b3a done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [2/2] RUN npm install -g --no-audit --no-fund @anthropic-ai/[email protected] @earendil-works/[email protected] && npm cache clean --force && rm -rf /root/.npm /tmp/*
|
||||
#5 1.716 npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||
#5 6.031
|
||||
#5 6.031 added 167 packages in 6s
|
||||
#5 6.032 npm warn install-scripts 4 packages have install scripts not yet covered by allowScripts:
|
||||
#5 6.032 npm warn install-scripts @anthropic-ai/[email protected] (postinstall: node install.cjs)
|
||||
#5 6.032 npm warn install-scripts @google/[email protected] (preinstall: echo 'preinstall: no-op')
|
||||
#5 6.032 npm warn install-scripts [email protected] (postinstall: node install.js)
|
||||
#5 6.032 npm warn install-scripts [email protected] (postinstall: node scripts/postinstall)
|
||||
#5 6.032 npm warn install-scripts
|
||||
#5 6.032 npm warn install-scripts Run `npm install -g --allow-scripts=@anthropic-ai/claude-code,@google/genai,esbuild,protobufjs` to allow these scripts once, or `npm config set allow-scripts=@anthropic-ai/claude-code,@google/genai,esbuild,protobufjs --location=user` to allow them for all global installs.
|
||||
#5 6.119 npm warn using --force Recommended protections disabled.
|
||||
#5 DONE 6.3s
|
||||
|
||||
#6 exporting to image
|
||||
#6 exporting layers
|
||||
#6 exporting layers 18.7s done
|
||||
#6 exporting manifest sha256:16af90e8e3291626f37fb5b2e78904d87126d875e7bcc240dd2ba453ca62bc10 done
|
||||
#6 exporting config sha256:ad269f0a84c0b1c5833b787793a45df782c1aae86e37f6216782a12a01f4557b done
|
||||
#6 exporting attestation manifest sha256:436490e0d139cb0db83f260c42ac3364377971160b2418cd03ee07c18873a5f6 done
|
||||
#6 exporting manifest list sha256:bc95495952e58a005c275a9d00842242c17965d0d9c2a83c476048cbfc110946 done
|
||||
#6 naming to docker.io/library/mosaic-session:0.0.12 done
|
||||
#6 unpacking to docker.io/library/mosaic-session:0.0.12
|
||||
#6 unpacking to docker.io/library/mosaic-session:0.0.12 5.3s done
|
||||
#6 DONE 24.0s
|
||||
|
||||
[33m1 warning found (use docker --debug to expand):
|
||||
[0m - InvalidDefaultArgInFrom: Default value for ARG ${CORE_IMAGE} results in empty or invalid base image name (line 2)
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 299B done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/4] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 resolve docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20 done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [2/4] WORKDIR /opt/mosaic
|
||||
#5 CACHED
|
||||
|
||||
#6 [internal] load build context
|
||||
#6 transferring context: 459B 0.0s done
|
||||
#6 DONE 0.0s
|
||||
|
||||
#7 [3/4] COPY packages/egress/ packages/egress/
|
||||
#7 DONE 0.0s
|
||||
|
||||
#8 [4/4] COPY contracts/egress.json contracts/egress.json
|
||||
#8 DONE 0.0s
|
||||
|
||||
#9 exporting to image
|
||||
#9 exporting layers 0.0s done
|
||||
#9 exporting manifest sha256:f3f318ddc871b5a5f953aa0709cf69194260e633e26b15daafefe40572a36f27 done
|
||||
#9 exporting config sha256:c315f86a3be49d29aa7cad287a1653424206adb43683a34b91633b9bb8a14c6b done
|
||||
#9 exporting attestation manifest sha256:d41ee39a55170821cf46236fbf6069519e52c7386e27259ee17113777fa348e1 done
|
||||
#9 exporting manifest list sha256:af29f552efea177d706779ed9afb43c89763b58de913da0a570208cdda619d50 done
|
||||
#9 naming to docker.io/library/mosaic-egress:0.0.12 done
|
||||
#9 unpacking to docker.io/library/mosaic-egress:0.0.12 0.0s done
|
||||
#9 DONE 0.1s
|
||||
internal network: listed TLS reached, unlisted host/port refused, external DNS refused
|
||||
Vikunja client public GET 200; notifier REST dummy-token GET 401
|
||||
test-install: PASS (provider-host measurement remains Mos gate)
|
||||
EXIT=0
|
||||
@@ -1,24 +0,0 @@
|
||||
2026-10-24T04:13:52Z
|
||||
23:13:52 up 10 days, 14:33, 2 users, load average: 2.19, 2.69, 2.26
|
||||
CLEAR sage-3923 TMPDIR=/mnt/storage/scratch/tmp/5Tw4Jn
|
||||
✔ allows exact host and port, fragmented headers, and preserves tunnel head (17.065009ms)
|
||||
✔ unlisted host (1.179696ms)
|
||||
✔ unlisted port (4.182798ms)
|
||||
✔ GET (0.916554ms)
|
||||
✔ invalid port (0.897474ms)
|
||||
✔ userinfo (0.772938ms)
|
||||
✔ bad header (0.737254ms)
|
||||
✔ slow client has a total header deadline (81.64527ms)
|
||||
✔ oversized header refuses (1.073337ms)
|
||||
✔ missing, invalid and unknown lists fail closed (0.464571ms)
|
||||
✔ refused upstream returns 502 while retaining one allowed decision (1.555082ms)
|
||||
✔ upstream reset after CONNECT closes the tunnel without a second HTTP response (21.757224ms)
|
||||
ℹ tests 12
|
||||
ℹ suites 0
|
||||
ℹ pass 12
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 173.90579
|
||||
EXIT=0
|
||||
@@ -1,207 +0,0 @@
|
||||
2026-10-24T04:13:56Z
|
||||
23:13:56 up 10 days, 14:33, 2 users, load average: 2.18, 2.67, 2.26
|
||||
CLEAR sage-3923 TMPDIR=/mnt/storage/scratch/tmp/Yb2lkZ
|
||||
✔ install: absent (26.874578ms)
|
||||
✔ install: local (25.86789ms)
|
||||
✔ install: local endpoint (24.545469ms)
|
||||
✔ install: containerized missing endpoint (26.458263ms)
|
||||
✔ install: bad endpoint "tcp://localhost:2375" (24.315713ms)
|
||||
✔ install: bad endpoint "ssh://host/run/docker.sock" (27.113397ms)
|
||||
✔ install: bad endpoint "run/docker.sock" (24.399221ms)
|
||||
✔ install: bad endpoint "unix://relative.sock" (26.259544ms)
|
||||
✔ install: bad endpoint "unix:///a b.sock" (24.051655ms)
|
||||
✔ install: bad endpoint "unix:///a.sock\n" (23.493287ms)
|
||||
✔ install: bad endpoint "unix:///a" (25.527734ms)
|
||||
✔ install: bad endpoint "" (24.647712ms)
|
||||
✔ install: bad endpoint null (24.029319ms)
|
||||
✔ install: bad endpoint 4 (22.545369ms)
|
||||
✔ install: valid endpoint (24.217907ms)
|
||||
✔ install: unknown mode (22.578207ms)
|
||||
✔ install: missing mode (26.668685ms)
|
||||
✔ install: unknown key (25.239503ms)
|
||||
✔ install: null (26.507504ms)
|
||||
✔ install: array (23.325961ms)
|
||||
✔ helper refuses rootful (83.142099ms)
|
||||
✔ helper refuses missing (48.938896ms)
|
||||
✔ helper refuses substring (74.574145ms)
|
||||
✔ helper refuses object (69.21506ms)
|
||||
✔ helper refuses invalid JSON (71.320245ms)
|
||||
✔ helper refuses null success (70.397988ms)
|
||||
✔ helper refuses rootless output but failed (50.077162ms)
|
||||
✔ helper checks once and explicitly names host for both calls (116.70882ms)
|
||||
✔ local mode refuses before Docker null (26.523468ms)
|
||||
✔ local mode refuses before Docker {"mode":"local"} (26.276186ms)
|
||||
✔ invalid config refuses before Docker (26.092328ms)
|
||||
ℹ tests 31
|
||||
ℹ suites 0
|
||||
ℹ pass 31
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 707.332707
|
||||
✔ allows exact host and port, fragmented headers, and preserves tunnel head (15.694598ms)
|
||||
✔ unlisted host (1.162772ms)
|
||||
✔ unlisted port (1.047448ms)
|
||||
✔ GET (0.913924ms)
|
||||
✔ invalid port (0.930799ms)
|
||||
✔ userinfo (0.750312ms)
|
||||
✔ bad header (0.739214ms)
|
||||
✔ slow client has a total header deadline (81.348784ms)
|
||||
✔ oversized header refuses (0.992296ms)
|
||||
✔ missing, invalid and unknown lists fail closed (0.441271ms)
|
||||
✔ refused upstream returns 502 while retaining one allowed decision (1.4408ms)
|
||||
✔ upstream reset after CONNECT closes the tunnel without a second HTTP response (21.481904ms)
|
||||
ℹ tests 12
|
||||
ℹ suites 0
|
||||
ℹ pass 12
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 169.285852
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 454B done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/9] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 resolve docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20 done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [internal] load build context
|
||||
#5 transferring context: 31.37MB 0.1s done
|
||||
#5 DONE 0.1s
|
||||
|
||||
#6 [3/9] COPY package.json package-lock.json ./
|
||||
#6 CACHED
|
||||
|
||||
#7 [2/9] WORKDIR /opt/mosaic
|
||||
#7 CACHED
|
||||
|
||||
#8 [4/9] RUN npm ci --omit=dev --ignore-scripts --no-audit --no-fund && npm cache clean --force
|
||||
#8 CACHED
|
||||
|
||||
#9 [5/9] COPY packages/ packages/
|
||||
#9 DONE 0.1s
|
||||
|
||||
#10 [6/9] COPY scripts/ scripts/
|
||||
#10 DONE 0.0s
|
||||
|
||||
#11 [7/9] COPY contracts/ contracts/
|
||||
#11 DONE 0.0s
|
||||
|
||||
#12 [8/9] COPY roles/ roles/
|
||||
#12 DONE 0.0s
|
||||
|
||||
#13 [9/9] COPY RELEASE ./
|
||||
#13 DONE 0.0s
|
||||
|
||||
#14 exporting to image
|
||||
#14 exporting layers
|
||||
#14 exporting layers 0.4s done
|
||||
#14 exporting manifest sha256:065dd55d59585806e540929e2ea66df397d47292cc84160bb7be491ecd2b9d59 done
|
||||
#14 exporting config sha256:3d97362dc6b6242fc540f08f538068b91ec28b1d3c9a34d7bc2bebff137a7a40 done
|
||||
#14 exporting attestation manifest sha256:f66bf47e4ec5b67db64f44d8554192f646111116e165ec3bc017b5a2b011204b done
|
||||
#14 exporting manifest list sha256:d840b0ec16ce6548549d18fb8bfc6b13c76ee77e9131a317582f919c61dcaf7f done
|
||||
#14 naming to docker.io/library/mosaic-core:0.0.12 done
|
||||
#14 unpacking to docker.io/library/mosaic-core:0.0.12
|
||||
#14 unpacking to docker.io/library/mosaic-core:0.0.12 0.2s done
|
||||
#14 DONE 0.6s
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 424B done
|
||||
#1 WARN: InvalidDefaultArgInFrom: Default value for ARG ${CORE_IMAGE} results in empty or invalid base image name (line 2)
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/mosaic-core:0.0.12
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/2] FROM docker.io/library/mosaic-core:0.0.12@sha256:d840b0ec16ce6548549d18fb8bfc6b13c76ee77e9131a317582f919c61dcaf7f
|
||||
#4 resolve docker.io/library/mosaic-core:0.0.12@sha256:d840b0ec16ce6548549d18fb8bfc6b13c76ee77e9131a317582f919c61dcaf7f done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [2/2] RUN npm install -g --no-audit --no-fund @anthropic-ai/[email protected] @earendil-works/[email protected] && npm cache clean --force && rm -rf /root/.npm /tmp/*
|
||||
#5 1.700 npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||
#5 5.518
|
||||
#5 5.518 added 167 packages in 5s
|
||||
#5 5.519 npm warn install-scripts 4 packages have install scripts not yet covered by allowScripts:
|
||||
#5 5.519 npm warn install-scripts @anthropic-ai/[email protected] (postinstall: node install.cjs)
|
||||
#5 5.519 npm warn install-scripts @google/[email protected] (preinstall: echo 'preinstall: no-op')
|
||||
#5 5.519 npm warn install-scripts [email protected] (postinstall: node install.js)
|
||||
#5 5.519 npm warn install-scripts [email protected] (postinstall: node scripts/postinstall)
|
||||
#5 5.519 npm warn install-scripts
|
||||
#5 5.519 npm warn install-scripts Run `npm install -g --allow-scripts=@anthropic-ai/claude-code,@google/genai,esbuild,protobufjs` to allow these scripts once, or `npm config set allow-scripts=@anthropic-ai/claude-code,@google/genai,esbuild,protobufjs --location=user` to allow them for all global installs.
|
||||
#5 5.590 npm warn using --force Recommended protections disabled.
|
||||
#5 DONE 5.7s
|
||||
|
||||
#6 exporting to image
|
||||
#6 exporting layers
|
||||
#6 exporting layers 16.9s done
|
||||
#6 exporting manifest sha256:d4c83e350da6f18bfa7f3dbcef9ab078d72ef7f1f957a2926726e17973969e6a done
|
||||
#6 exporting config sha256:8afa310f48e06614963dcbcdc9c3ac497d9e4bad4ddd0524062ba8a52bc3cda2 done
|
||||
#6 exporting attestation manifest sha256:b7f082a8cd17d2c90eb27a81359aea66186b80d56a6d0c5e89d29187a2f78ed4 done
|
||||
#6 exporting manifest list sha256:2b6299e5a329adf85ea36038cb0407f2328e72e848dbfe95a17bd1fefbf9cf92 done
|
||||
#6 naming to docker.io/library/mosaic-session:0.0.12 done
|
||||
#6 unpacking to docker.io/library/mosaic-session:0.0.12
|
||||
#6 unpacking to docker.io/library/mosaic-session:0.0.12 4.7s done
|
||||
#6 DONE 21.7s
|
||||
|
||||
[33m1 warning found (use docker --debug to expand):
|
||||
[0m - InvalidDefaultArgInFrom: Default value for ARG ${CORE_IMAGE} results in empty or invalid base image name (line 2)
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 299B done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/4] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 resolve docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20 done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [internal] load build context
|
||||
#5 transferring context: 459B 0.0s done
|
||||
#5 DONE 0.0s
|
||||
|
||||
#6 [2/4] WORKDIR /opt/mosaic
|
||||
#6 CACHED
|
||||
|
||||
#7 [3/4] COPY packages/egress/ packages/egress/
|
||||
#7 DONE 0.0s
|
||||
|
||||
#8 [4/4] COPY contracts/egress.json contracts/egress.json
|
||||
#8 DONE 0.0s
|
||||
|
||||
#9 exporting to image
|
||||
#9 exporting layers 0.0s done
|
||||
#9 exporting manifest sha256:e47c86064470f291d2ea468a1002f1e5f9b2e682e42940d06bd33d4e39945a6e done
|
||||
#9 exporting config sha256:ba520eadeb66ccfa2dbd3170744fca08affb4dac377d6cf2d26ec27d98d4ee25 done
|
||||
#9 exporting attestation manifest sha256:93cbd2f8a7fb1afb858b7b1a35a3020af8e9623e3a98be71d04e9d746c25d148 done
|
||||
#9 exporting manifest list sha256:a55e9d5ec6da74933bbefac6816efd0ea5246e825f61eaa4297e7baf7b09501c done
|
||||
#9 naming to docker.io/library/mosaic-egress:0.0.12 done
|
||||
#9 unpacking to docker.io/library/mosaic-egress:0.0.12 0.0s done
|
||||
#9 DONE 0.1s
|
||||
internal network: listed TLS reached, unlisted host/port refused, external DNS refused
|
||||
Vikunja client public GET 200; notifier REST dummy-token GET 401
|
||||
test-install: PASS (provider-host measurement remains Mos gate)
|
||||
EXIT=0
|
||||
@@ -1,165 +0,0 @@
|
||||
2026-10-24T04:29:25Z
|
||||
23:29:25 up 10 days, 14:49, 2 users, load average: 2.63, 2.97, 2.72
|
||||
CLEAR sage-3936 TMPDIR=/mnt/storage/scratch/tmp/jcNy2F archived=a14fdc443 expected RED
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=false) (62.262337ms)
|
||||
✖ refusal 408 releases server socket (allowHalfOpen=true) (552.049114ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=false) (12.304169ms)
|
||||
✖ refusal 400 releases server socket (allowHalfOpen=true) (509.122366ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=false) (11.566877ms)
|
||||
✖ refusal 403 releases server socket (allowHalfOpen=true) (508.134074ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=false) (11.339612ms)
|
||||
✖ refusal 431 releases server socket (allowHalfOpen=true) (507.396552ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=false) (11.812225ms)
|
||||
✖ refusal 502 releases server socket (allowHalfOpen=true) (509.521901ms)
|
||||
✖ inherited cache is discarded; private cache stays unexported (rootless=false) (49.005306ms)
|
||||
✖ inherited cache is discarded; private cache stays unexported (rootless=true) (42.961333ms)
|
||||
ℹ tests 12
|
||||
ℹ suites 0
|
||||
ℹ pass 5
|
||||
ℹ fail 7
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 2739.328587
|
||||
|
||||
✖ failing tests:
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:11:79
|
||||
✖ refusal 408 releases server socket (allowHalfOpen=true) (552.049114ms)
|
||||
AssertionError [ERR_ASSERTION]: refused peer must not retain a server socket
|
||||
|
||||
1 !== 0
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:30: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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 1,
|
||||
expected: 0,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:11:79
|
||||
✖ refusal 400 releases server socket (allowHalfOpen=true) (509.122366ms)
|
||||
AssertionError [ERR_ASSERTION]: refused peer must not retain a server socket
|
||||
|
||||
1 !== 0
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:30: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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 1,
|
||||
expected: 0,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:11:79
|
||||
✖ refusal 403 releases server socket (allowHalfOpen=true) (508.134074ms)
|
||||
AssertionError [ERR_ASSERTION]: refused peer must not retain a server socket
|
||||
|
||||
1 !== 0
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:30: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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 1,
|
||||
expected: 0,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:11:79
|
||||
✖ refusal 431 releases server socket (allowHalfOpen=true) (507.396552ms)
|
||||
AssertionError [ERR_ASSERTION]: refused peer must not retain a server socket
|
||||
|
||||
1 !== 0
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:30: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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 1,
|
||||
expected: 0,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:11:79
|
||||
✖ refusal 502 releases server socket (allowHalfOpen=true) (509.521901ms)
|
||||
AssertionError [ERR_ASSERTION]: refused peer must not retain a server socket
|
||||
|
||||
1 !== 0
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/packages/egress/tests/refusal.test.mjs:30: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: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 1,
|
||||
expected: 0,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/scripts/install-tests/review-cache.test.mjs:10:36
|
||||
✖ inherited cache is discarded; private cache stays unexported (rootless=false) (49.005306ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
|
||||
|
||||
0 !== 2
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/scripts/install-tests/review-cache.test.mjs:19:10)
|
||||
at Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
at Test.run (node:internal/test_runner/test:1402:25)
|
||||
at Test.start (node:internal/test_runner/test:1262:17)
|
||||
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
|
||||
generatedMessage: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 2,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
test at ../../../../../../mnt/storage/scratch/tmp/jcNy2F/legacy/scripts/install-tests/review-cache.test.mjs:10:36
|
||||
✖ inherited cache is discarded; private cache stays unexported (rootless=true) (42.961333ms)
|
||||
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
'--host',
|
||||
+ 'unix:///inherited.sock',
|
||||
+ 'ps'
|
||||
- 'unix:///configured.sock',
|
||||
- 'info',
|
||||
- '--format',
|
||||
- '{{json .SecurityOptions}}'
|
||||
]
|
||||
|
||||
at TestContext.<anonymous> (file:///mnt/storage/scratch/tmp/jcNy2F/legacy/scripts/install-tests/review-cache.test.mjs:20:10)
|
||||
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: true,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: [ '--host', 'unix:///inherited.sock', 'ps' ],
|
||||
expected: [ '--host', 'unix:///configured.sock', 'info', '--format', '{{json .SecurityOptions}}' ],
|
||||
operator: 'deepStrictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
EXIT=1 (expected 1 for reproduced defects)
|
||||
@@ -1,24 +0,0 @@
|
||||
2026-10-24T04:29:39Z
|
||||
23:29:39 up 10 days, 14:49, 2 users, load average: 2.20, 2.85, 2.69
|
||||
CLEAR sage-3936 TMPDIR=/mnt/storage/scratch/tmp/0gZQZl
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=false) (53.837502ms)
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=true) (42.030239ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=false) (1.261482ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=true) (0.904817ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=false) (0.917847ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=true) (0.804008ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=false) (0.718814ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=true) (0.668466ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=false) (1.344911ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=true) (0.979004ms)
|
||||
✔ inherited cache is discarded; private cache stays unexported (rootless=false) (82.339935ms)
|
||||
✔ inherited cache is discarded; private cache stays unexported (rootless=true) (112.830463ms)
|
||||
ℹ tests 12
|
||||
ℹ suites 0
|
||||
ℹ pass 12
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 245.761199
|
||||
EXIT=0
|
||||
@@ -1,45 +0,0 @@
|
||||
2026-10-24T04:29:49Z
|
||||
23:29:49 up 10 days, 14:49, 2 users, load average: 2.09, 2.81, 2.68
|
||||
CLEAR sage-3936 TMPDIR=/mnt/storage/scratch/tmp/tUdE4l
|
||||
✔ install: absent (26.366604ms)
|
||||
✔ install: local (22.63247ms)
|
||||
✔ install: local endpoint (22.799393ms)
|
||||
✔ install: containerized missing endpoint (25.600693ms)
|
||||
✔ install: bad endpoint "tcp://localhost:2375" (23.03486ms)
|
||||
✔ install: bad endpoint "ssh://host/run/docker.sock" (23.131519ms)
|
||||
✔ install: bad endpoint "run/docker.sock" (24.109097ms)
|
||||
✔ install: bad endpoint "unix://relative.sock" (23.350143ms)
|
||||
✔ install: bad endpoint "unix:///a b.sock" (25.171936ms)
|
||||
✔ install: bad endpoint "unix:///a.sock\n" (23.993281ms)
|
||||
✔ install: bad endpoint "unix:///a" (23.480143ms)
|
||||
✔ install: bad endpoint "" (24.103262ms)
|
||||
✔ install: bad endpoint null (22.669641ms)
|
||||
✔ install: bad endpoint 4 (24.019575ms)
|
||||
✔ install: valid endpoint (24.603314ms)
|
||||
✔ install: unknown mode (24.602796ms)
|
||||
✔ install: missing mode (23.797819ms)
|
||||
✔ install: unknown key (22.998491ms)
|
||||
✔ install: null (25.129192ms)
|
||||
✔ install: array (24.482115ms)
|
||||
✔ helper refuses rootful (69.872106ms)
|
||||
✔ helper refuses missing (48.024972ms)
|
||||
✔ helper refuses substring (75.261764ms)
|
||||
✔ helper refuses object (69.618809ms)
|
||||
✔ helper refuses invalid JSON (69.071543ms)
|
||||
✔ helper refuses null success (72.882659ms)
|
||||
✔ helper refuses rootless output but failed (53.345431ms)
|
||||
✔ helper checks once and explicitly names host for both calls (102.552473ms)
|
||||
✔ local mode refuses before Docker null (26.011087ms)
|
||||
✔ local mode refuses before Docker {"mode":"local"} (28.185416ms)
|
||||
✔ invalid config refuses before Docker (27.514422ms)
|
||||
✔ inherited cache is discarded; private cache stays unexported (rootless=false) (75.055951ms)
|
||||
✔ inherited cache is discarded; private cache stays unexported (rootless=true) (109.227515ms)
|
||||
ℹ tests 33
|
||||
ℹ suites 0
|
||||
ℹ pass 33
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 690.153576
|
||||
EXIT=0
|
||||
@@ -1,34 +0,0 @@
|
||||
2026-10-24T04:29:59Z
|
||||
23:29:59 up 10 days, 14:49, 2 users, load average: 1.93, 2.75, 2.66
|
||||
CLEAR sage-3936 TMPDIR=/mnt/storage/scratch/tmp/TviERP
|
||||
✔ allows exact host and port, fragmented headers, and preserves tunnel head (23.927026ms)
|
||||
✔ unlisted host (1.732173ms)
|
||||
✔ unlisted port (1.604846ms)
|
||||
✔ GET (1.184716ms)
|
||||
✔ invalid port (1.343703ms)
|
||||
✔ userinfo (1.188622ms)
|
||||
✔ bad header (1.150055ms)
|
||||
✔ slow client has a total header deadline (81.793054ms)
|
||||
✔ oversized header refuses (1.244104ms)
|
||||
✔ missing, invalid and unknown lists fail closed (0.57805ms)
|
||||
✔ refused upstream returns 502 while retaining one allowed decision (1.746501ms)
|
||||
✔ upstream reset after CONNECT closes the tunnel without a second HTTP response (22.237884ms)
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=false) (55.691211ms)
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=true) (43.646383ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=false) (1.568816ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=true) (1.105107ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=false) (1.202959ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=true) (1.016559ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=false) (0.914639ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=true) (0.889516ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=false) (1.698346ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=true) (1.234793ms)
|
||||
ℹ tests 22
|
||||
ℹ suites 0
|
||||
ℹ pass 22
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 183.862745
|
||||
EXIT=0
|
||||
@@ -1,219 +0,0 @@
|
||||
2026-10-24T04:30:08Z
|
||||
23:30:08 up 10 days, 14:49, 2 users, load average: 1.79, 2.69, 2.64
|
||||
CLEAR sage-3936 TMPDIR=/mnt/storage/scratch/tmp/qmqk7B
|
||||
✔ install: absent (25.729884ms)
|
||||
✔ install: local (27.889152ms)
|
||||
✔ install: local endpoint (24.35751ms)
|
||||
✔ install: containerized missing endpoint (32.226985ms)
|
||||
✔ install: bad endpoint "tcp://localhost:2375" (36.932763ms)
|
||||
✔ install: bad endpoint "ssh://host/run/docker.sock" (30.311354ms)
|
||||
✔ install: bad endpoint "run/docker.sock" (25.198808ms)
|
||||
✔ install: bad endpoint "unix://relative.sock" (26.143708ms)
|
||||
✔ install: bad endpoint "unix:///a b.sock" (26.182728ms)
|
||||
✔ install: bad endpoint "unix:///a.sock\n" (24.78053ms)
|
||||
✔ install: bad endpoint "unix:///a" (25.183076ms)
|
||||
✔ install: bad endpoint "" (26.038913ms)
|
||||
✔ install: bad endpoint null (28.122111ms)
|
||||
✔ install: bad endpoint 4 (25.273681ms)
|
||||
✔ install: valid endpoint (24.978162ms)
|
||||
✔ install: unknown mode (25.362867ms)
|
||||
✔ install: missing mode (30.700943ms)
|
||||
✔ install: unknown key (25.157537ms)
|
||||
✔ install: null (25.311198ms)
|
||||
✔ install: array (22.791684ms)
|
||||
✔ helper refuses rootful (73.335956ms)
|
||||
✔ helper refuses missing (58.142601ms)
|
||||
✔ helper refuses substring (76.536037ms)
|
||||
✔ helper refuses object (71.066459ms)
|
||||
✔ helper refuses invalid JSON (75.615304ms)
|
||||
✔ helper refuses null success (74.72487ms)
|
||||
✔ helper refuses rootless output but failed (56.316538ms)
|
||||
✔ helper checks once and explicitly names host for both calls (116.375519ms)
|
||||
✔ local mode refuses before Docker null (33.189488ms)
|
||||
✔ local mode refuses before Docker {"mode":"local"} (33.416869ms)
|
||||
✔ invalid config refuses before Docker (33.260841ms)
|
||||
✔ inherited cache is discarded; private cache stays unexported (rootless=false) (77.918846ms)
|
||||
✔ inherited cache is discarded; private cache stays unexported (rootless=true) (125.24254ms)
|
||||
ℹ tests 33
|
||||
ℹ suites 0
|
||||
ℹ pass 33
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 751.025142
|
||||
✔ allows exact host and port, fragmented headers, and preserves tunnel head (21.619769ms)
|
||||
✔ unlisted host (1.449654ms)
|
||||
✔ unlisted port (1.146495ms)
|
||||
✔ GET (1.037357ms)
|
||||
✔ invalid port (0.994228ms)
|
||||
✔ userinfo (0.84581ms)
|
||||
✔ bad header (0.834734ms)
|
||||
✔ slow client has a total header deadline (81.37968ms)
|
||||
✔ oversized header refuses (1.096351ms)
|
||||
✔ missing, invalid and unknown lists fail closed (0.499339ms)
|
||||
✔ refused upstream returns 502 while retaining one allowed decision (1.730862ms)
|
||||
✔ upstream reset after CONNECT closes the tunnel without a second HTTP response (21.825124ms)
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=false) (55.028256ms)
|
||||
✔ refusal 408 releases server socket (allowHalfOpen=true) (42.613145ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=false) (1.348936ms)
|
||||
✔ refusal 400 releases server socket (allowHalfOpen=true) (1.104981ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=false) (1.097498ms)
|
||||
✔ refusal 403 releases server socket (allowHalfOpen=true) (0.965577ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=false) (0.806917ms)
|
||||
✔ refusal 431 releases server socket (allowHalfOpen=true) (0.752832ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=false) (1.582846ms)
|
||||
✔ refusal 502 releases server socket (allowHalfOpen=true) (1.14509ms)
|
||||
ℹ tests 22
|
||||
ℹ suites 0
|
||||
ℹ pass 22
|
||||
ℹ fail 0
|
||||
ℹ cancelled 0
|
||||
ℹ skipped 0
|
||||
ℹ todo 0
|
||||
ℹ duration_ms 181.752441
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 454B done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#2 DONE 0.7s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/9] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 resolve docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20 done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [internal] load build context
|
||||
#5 transferring context: 31.38MB 0.1s done
|
||||
#5 DONE 0.1s
|
||||
|
||||
#6 [2/9] WORKDIR /opt/mosaic
|
||||
#6 CACHED
|
||||
|
||||
#7 [3/9] COPY package.json package-lock.json ./
|
||||
#7 CACHED
|
||||
|
||||
#8 [4/9] RUN npm ci --omit=dev --ignore-scripts --no-audit --no-fund && npm cache clean --force
|
||||
#8 CACHED
|
||||
|
||||
#9 [5/9] COPY packages/ packages/
|
||||
#9 DONE 0.1s
|
||||
|
||||
#10 [6/9] COPY scripts/ scripts/
|
||||
#10 DONE 0.0s
|
||||
|
||||
#11 [7/9] COPY contracts/ contracts/
|
||||
#11 DONE 0.0s
|
||||
|
||||
#12 [8/9] COPY roles/ roles/
|
||||
#12 DONE 0.0s
|
||||
|
||||
#13 [9/9] COPY RELEASE ./
|
||||
#13 DONE 0.0s
|
||||
|
||||
#14 exporting to image
|
||||
#14 exporting layers
|
||||
#14 exporting layers 0.4s done
|
||||
#14 exporting manifest sha256:cfd93bac400adc7580134f6177efd9d748e4b4ad65b0ff22515ca3b3ffafa530 done
|
||||
#14 exporting config sha256:bda6c7420c2df9510f081d28f50d205083867d0ce907c12290fff226c020fe38 done
|
||||
#14 exporting attestation manifest sha256:79c61e7daf7794a3db88121ce6260fafab69f182ef89773914c41ca75a44574c done
|
||||
#14 exporting manifest list sha256:82fc7a3df060c3e58799cca4f89dbd57dc007c5534fdedce54d3de637cc83b67 done
|
||||
#14 naming to docker.io/library/mosaic-core:0.0.12 done
|
||||
#14 unpacking to docker.io/library/mosaic-core:0.0.12
|
||||
#14 unpacking to docker.io/library/mosaic-core:0.0.12 0.2s done
|
||||
#14 DONE 0.7s
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 424B done
|
||||
#1 WARN: InvalidDefaultArgInFrom: Default value for ARG ${CORE_IMAGE} results in empty or invalid base image name (line 2)
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/mosaic-core:0.0.12
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/2] FROM docker.io/library/mosaic-core:0.0.12@sha256:82fc7a3df060c3e58799cca4f89dbd57dc007c5534fdedce54d3de637cc83b67
|
||||
#4 resolve docker.io/library/mosaic-core:0.0.12@sha256:82fc7a3df060c3e58799cca4f89dbd57dc007c5534fdedce54d3de637cc83b67 done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [2/2] RUN npm install -g --no-audit --no-fund @anthropic-ai/[email protected] @earendil-works/[email protected] && npm cache clean --force && rm -rf /root/.npm /tmp/*
|
||||
#5 1.920 npm warn deprecated [email protected]: Use your platform's native DOMException instead
|
||||
#5 6.054
|
||||
#5 6.054 added 167 packages in 6s
|
||||
#5 6.055 npm warn install-scripts 4 packages have install scripts not yet covered by allowScripts:
|
||||
#5 6.055 npm warn install-scripts @anthropic-ai/[email protected] (postinstall: node install.cjs)
|
||||
#5 6.055 npm warn install-scripts @google/[email protected] (preinstall: echo 'preinstall: no-op')
|
||||
#5 6.055 npm warn install-scripts [email protected] (postinstall: node install.js)
|
||||
#5 6.055 npm warn install-scripts [email protected] (postinstall: node scripts/postinstall)
|
||||
#5 6.055 npm warn install-scripts
|
||||
#5 6.055 npm warn install-scripts Run `npm install -g --allow-scripts=@anthropic-ai/claude-code,@google/genai,esbuild,protobufjs` to allow these scripts once, or `npm config set allow-scripts=@anthropic-ai/claude-code,@google/genai,esbuild,protobufjs --location=user` to allow them for all global installs.
|
||||
#5 6.127 npm warn using --force Recommended protections disabled.
|
||||
#5 DONE 6.3s
|
||||
|
||||
#6 exporting to image
|
||||
#6 exporting layers
|
||||
#6 exporting layers 19.5s done
|
||||
#6 exporting manifest sha256:8b6b7de22cf08845f8fc02961c9677afb9faf0ddc4efe04ab4073a822a60518b done
|
||||
#6 exporting config sha256:94013fda37e404bc26b7b15281138cd60afbfea672cae2d2187acc0a7c3a0d7e done
|
||||
#6 exporting attestation manifest sha256:127fcf7ecd51a985d22f5a33d5c441d8fa1e246f88dc6e990c01197b46a61427 done
|
||||
#6 exporting manifest list sha256:9a272acf49ab376fa9739f66453979487ea8ab259bc43e56f6553e2da7b20835 done
|
||||
#6 naming to docker.io/library/mosaic-session:0.0.12 done
|
||||
#6 unpacking to docker.io/library/mosaic-session:0.0.12
|
||||
#6 unpacking to docker.io/library/mosaic-session:0.0.12 5.2s done
|
||||
#6 DONE 24.8s
|
||||
|
||||
[33m1 warning found (use docker --debug to expand):
|
||||
[0m - InvalidDefaultArgInFrom: Default value for ARG ${CORE_IMAGE} results in empty or invalid base image name (line 2)
|
||||
#0 building with "default" instance using docker driver
|
||||
|
||||
#1 [internal] load build definition from Dockerfile
|
||||
#1 transferring dockerfile: 299B done
|
||||
#1 DONE 0.0s
|
||||
|
||||
#2 [internal] load metadata for docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#2 DONE 0.0s
|
||||
|
||||
#3 [internal] load .dockerignore
|
||||
#3 transferring context: 2B done
|
||||
#3 DONE 0.0s
|
||||
|
||||
#4 [1/4] FROM docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20
|
||||
#4 resolve docker.io/library/node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20 done
|
||||
#4 DONE 0.0s
|
||||
|
||||
#5 [internal] load build context
|
||||
#5 transferring context: 517B 0.0s done
|
||||
#5 DONE 0.0s
|
||||
|
||||
#6 [2/4] WORKDIR /opt/mosaic
|
||||
#6 CACHED
|
||||
|
||||
#7 [3/4] COPY packages/egress/ packages/egress/
|
||||
#7 DONE 0.0s
|
||||
|
||||
#8 [4/4] COPY contracts/egress.json contracts/egress.json
|
||||
#8 DONE 0.0s
|
||||
|
||||
#9 exporting to image
|
||||
#9 exporting layers 0.0s done
|
||||
#9 exporting manifest sha256:db3e8991a9330374257298a4a5d4ff36779e8c8d0b00c8b8ead47fc82e32fada done
|
||||
#9 exporting config sha256:e7d66f4f785e49a6529b3ed4b708e3b985f4e737d03a66a2c861666288d435d9 done
|
||||
#9 exporting attestation manifest sha256:8d2362ebe73a0b71b175ea4d9571ab841c6f5b0913e8fa265d1f4544307987d2 done
|
||||
#9 exporting manifest list sha256:36d0bbeb3abc92fc099d95e1fac416df5cc29edf147fcfc4d8743cbe1d60e592 done
|
||||
#9 naming to docker.io/library/mosaic-egress:0.0.12 done
|
||||
#9 unpacking to docker.io/library/mosaic-egress:0.0.12 0.0s done
|
||||
#9 DONE 0.1s
|
||||
internal network: listed TLS reached, unlisted host/port refused, external DNS refused
|
||||
Vikunja client public GET 200; notifier REST dummy-token GET 401
|
||||
test-install: PASS (provider-host measurement remains Mos gate)
|
||||
EXIT=0
|
||||
@@ -1,363 +0,0 @@
|
||||
# Row 157 / I2 / #1652 — Bentina build record
|
||||
|
||||
## 2026-10-24 — recovery and pre-build hold
|
||||
|
||||
Authority: Sage sage-3906 under Q246 / mos-1566. Seat thread:
|
||||
`d1ae468e-51ba-40c4-9513-b39ebbb40450`. Branch `bentina/row157`,
|
||||
base `ec86f2c84` (required registration commit), initially clean.
|
||||
Read root AGENTS.md, agents/bentina/README.md, the I2 brief and its shared
|
||||
rules, and the approved containerized-install design. CURRENT.md is a
|
||||
historical narrative; queue and Sage's assignment select this row. Goal
|
||||
order recovered from 2026-09-27_goals-review.md. Boyd first review, then
|
||||
Darkwing install-path review, per Sage's newer assignment.
|
||||
|
||||
### Queue boundary
|
||||
|
||||
The initial worktree `scripts/mosaic queue next bentina` refused because
|
||||
queue commands require the canonical checkout. Retried the same read using
|
||||
`/mnt/storage/src/mosaic-stack/scripts/mosaic` in that checkout (the documented
|
||||
queue location, without changing its configuration):
|
||||
|
||||
```
|
||||
start row 157: I2 install images, the install config key, the endpoint helper and the egress proxy; brief docs/plans/2026-10-18_containerized-install-rows.md § I2 install images, the install config key, the endpoint helper and the egress proxy; brief differs from pinned blob; ask the lead to re-pin
|
||||
```
|
||||
|
||||
No claimant move until Sage resolves the stale brief pin. No other queue
|
||||
write authorized. Sent Sage bentina-0001 with this refusal and the outbound
|
||||
path findings below. Implementation has not started.
|
||||
|
||||
### Re-read of the I2 brief's cited files at ec86f2c84
|
||||
|
||||
| Cited file / old site | Current observation |
|
||||
|---|---|
|
||||
| scripts/hello.sh:24 | Calls processing-control/src/container-cli.mjs:25; Docker moved behind processing control. |
|
||||
| scripts/build.sh:13 | Still ambient `docker compose build`:13. |
|
||||
| scripts/release.sh:39,122 | Still ambient image inspect:39 and compose build:122. |
|
||||
| scripts/agent.sh:208 | Now execs processing-control/src/container-cli.mjs --tty:209. |
|
||||
| scripts/verify.sh:36,39,45 | Ambient image inspect:37 and compose build:40; request now uses processing-control container CLI:46. |
|
||||
| scripts/land-work.sh:87-88 | Ambient network inspect/remove unchanged at 87-88. |
|
||||
| scripts/test-release.sh:58 | Docker probes now at 78,129; cleanup network rm:25; network checks:131,133. |
|
||||
| scripts/test-task.sh:139,395,442,517 | Docker probes now at 166,422,470,513,557,579; cleanup network rm:21 and network checks:581,583. |
|
||||
| scripts/mosaic-task.mjs:396 | Now calls runContainer:402, imported from processing control, rather than directly spawning Docker. |
|
||||
| packages/cli/src/git-socket.mjs:243 | dropNetwork now spawns ambient docker network rm:266; I6 retains ownership. |
|
||||
| scripts/mosaic-config.mjs:109-160 / :115 | Loader expanded for instances, Console, federation and compaction settings. validate starts:293; allowed-key expression:304 retains a prefix used by stack-release-fixture.mjs. No install key yet. |
|
||||
|
||||
The design says to read via scripts/load_config; this is a function, not a
|
||||
file. Actual entry is scripts/common.sh:16 `load_config`, invoking
|
||||
mosaic-config.mjs env, then exporting four existing variables. No install
|
||||
mode/endpoint exports yet. No modification made.
|
||||
|
||||
Design sections 3/4/7 re-read: exact base digest
|
||||
`node@sha256:d6aa754f16b3197301076f047b5def2f02ea1dbbc2ca920407d46d7ec7f87b20`;
|
||||
three release-tagged images; optional install with local default; exact
|
||||
rootless SecurityOptions array element check; baked agents/services CONNECT
|
||||
lists; JSON decision log. Spike proxy source re-read: one-chunk request
|
||||
parsing, no slow-client bound, environment allowlist; it needs the reviewed
|
||||
implementation required by I2, not a direct copy. package.json pins pi
|
||||
0.85.1; spike Dockerfile.clis pins Claude Code 2.1.296 (current session-code
|
||||
pin still needs checking before implementation).
|
||||
|
||||
### Outbound stop condition (brief What ships; design section 7)
|
||||
|
||||
The brief explicitly says: “If one doesn't, stop and tell Sage before
|
||||
adding a dependency.” Not all broker outbound paths use fetch at this base:
|
||||
|
||||
- packages/bus/src/gitea-grant.mjs:11 imports node:https request;
|
||||
send():91-140 calls httpsRequest:115 with `agent: false`, auth header,
|
||||
optional CA, timeout and bounded response. It is not the measured fetch
|
||||
path. runtime.mjs imports and wires the grant executor.
|
||||
- packages/bus/src/web.mjs delegates to packages/discord/src/web.mjs.
|
||||
That implementation imports node:https/node:http:23-24, resolves public
|
||||
addresses and pins the connection to a vetted address (:161 onward).
|
||||
Changing it to fetch without preserving that fence would be a boundary
|
||||
change. Its arbitrary public destinations also need reconciliation with
|
||||
the design's fixed services host list; do not widen the list speculatively.
|
||||
- packages/tasks/src/vikunja.mjs:30,41 uses injected/default global fetch,
|
||||
redirect:error, and processing cancellation/deadline.
|
||||
- packages/cli/src/notifier-process.mjs:41-46 supplies global fetch to
|
||||
openDirect. packages/discord/src/notify.mjs:17 builds REST only; it
|
||||
explicitly does not run the gateway. packages/discord/src/rest.mjs:45
|
||||
calls injected fetch. The separate Discord connector gateway uses native
|
||||
WebSocket (gateway.mjs:193); do not claim the notifier needs that gateway.
|
||||
- No NODE_USE_ENV_PROXY or HTTPS_PROXY setup found in host.mjs,
|
||||
notifier-process.mjs or bus/process.mjs. I6 owns container startup;
|
||||
I2's eventual image/process verification must demonstrate the actual path
|
||||
with dummy credentials, after the transport ruling and a CLEAR slot.
|
||||
|
||||
Recommendation sent to Sage: re-pin the approved brief and rule on the
|
||||
bounded handling/ownership of non-fetch paths before implementation. No new
|
||||
dependency, host-list expansion, or replacement of DNS pinning authorized.
|
||||
|
||||
### Environment and evidence limits
|
||||
|
||||
`/run/user/1000/docker.sock` exists as a Unix socket owned by jwoltje.
|
||||
Existence is not a rootless attestation. No Docker command or endpoint probe
|
||||
has been run. All test execution requires Sage CLEAR; none requested yet
|
||||
because there is no implementation candidate. No test, image build,
|
||||
credential read, live config/data access, daemon/volume/unit change, commit
|
||||
or push. Once unblocked, implement within the owned file list, add required
|
||||
acceptance cases, then request a concrete CLEAR with paths and suites;
|
||||
use fresh /mnt/storage/scratch/tmp/XXXXXX TMPDIR and timeout -k 10 for each
|
||||
scripts/test-*.sh. Old-test changes require Sage authorization before edits.
|
||||
Provider-host measurement ships with expected output for Mos; no real token
|
||||
will be used here.
|
||||
|
||||
## sage-3907 — stop resolved; implementation draft
|
||||
|
||||
Sage confirms only I6 changed since the brief pin, and will re-pin row 157.
|
||||
I2 must not change non-fetch security transports or add a dependency. Record
|
||||
all gaps, retain each named service host and code path in the contract with
|
||||
an explicit note, and build the rest. Sage owns the transport ruling before
|
||||
broker rollout in later rows. This supersedes the pre-build transport hold;
|
||||
the queue claim still awaits a current pin. No queue move attempted.
|
||||
|
||||
Additional non-fetch broker paths found:
|
||||
|
||||
- runtime.mjs:511 calls seat/src/working.mjs:461 publishRemote, which runs
|
||||
git ls-remote/push at :479/:490 with credential helper input on fd 3.
|
||||
checkout.mjs:80 gitEnv emits a fixed environment without HTTPS_PROXY.
|
||||
This is Git HTTPS, not fetch; core's no-git design also prevents it from
|
||||
working today. The Gitea host entry retains this caveat.
|
||||
- runtime.mjs:292 wires hostGrant; host-grant.mjs:174 spawns ssh-keyscan
|
||||
to read public host keys at the registered address/port. It uses fixed
|
||||
PATH-only env, not fetch or HTTP CONNECT. runtime.mjs:435 wires
|
||||
hostExecutor; host-run.mjs:30-45 sshArgs explicitly sets
|
||||
ProxyCommand=none and ProxyJump=none, then ssh to run authorized commands
|
||||
using a pinned host key and private agent. Neither routes through an env
|
||||
HTTP proxy. Hosts/ports are per registry and may be SSH, so no fabricated
|
||||
:443 allowlist entry or network expansion was added.
|
||||
- Search-source plug-ins delegate to discord/src/web.mjs. searxng-url
|
||||
sends search GETs to the operator's configured host; searxng-bundled points
|
||||
at 127.0.0.1:8888. Both are non-fetch and depend on the existing DNS checks.
|
||||
No fixed host can be truthfully named for arbitrary web.fetch or operator
|
||||
search; no wildcard entry was added. These are documented gaps, not
|
||||
claims of proxy coverage.
|
||||
- Separate Discord connector gateway uses native WebSocket; retained
|
||||
gateway.discord.gg:443 with a NOT PROXIED note, as Sage directs. Notifier
|
||||
is REST-only; no gateway test or live connector run added.
|
||||
|
||||
Choices: dependency-free net proxy; exact list lookup; 8192-byte/5s total
|
||||
header bounds, 10s upstream connect/120s tunnel idle bounds. JSON allowed
|
||||
means the contract permitted the destination, not that upstream succeeded.
|
||||
Images use exact I1 base, core has NODE_USE_ENV_PROXY=1, session globally
|
||||
installs Claude 2.1.296 and package.json pi pin. Source context includes only
|
||||
tracked runtime paths plus explicit new I2 runtime paths, never agent work
|
||||
or host node_modules/.git. Tags derive from RELEASE. Core receives no git.
|
||||
The zai host candidate api.z.ai is confirmed by the pinned dependency's
|
||||
providers/zai.js:9 in canonical node_modules; real-token measurement remains
|
||||
Mos's gate. OpenAI candidate is from S6 and is only measured when configured.
|
||||
No live model-table config was read.
|
||||
|
||||
New tests cover config exit/immutability; helper rootful, null/nonzero,
|
||||
substring, wrong type/JSON, exact rootless and hostile DOCKER_HOST; proxy
|
||||
fragmentation/pipelined data, deny/port/malformed/slow/oversize and JSON logs.
|
||||
test-install additionally builds, inspects pins and exercises an internal
|
||||
network plus actual Vikunja/public GET and notifier REST/dummy GET with
|
||||
proxy log evidence. The generic S5 fetch test is not repeated.
|
||||
|
||||
Old-suite change is prepared as test-config.patch (adds new config cases
|
||||
before the existing summary). It has NOT been applied: Sage's old-test
|
||||
change rule requires approval first. No old tests changed. No tests run.
|
||||
|
||||
## sage-3910 — first CLEAR
|
||||
|
||||
Authorized four serialized runs exactly as requested, plus applying the
|
||||
addition-only test-config.patch. No broader suites; Sage supplies the
|
||||
landing gate. Return slot on run 4 completion or an actual stop.
|
||||
|
||||
Additional paths retained under Sage's explicit ruling:
|
||||
- scripts/install-tests/config.test.mjs: table of install schema/exit/byte
|
||||
preservation cases, reused by test-config.sh and test-install.sh.
|
||||
- scripts/install-tests/helper.test.mjs: fake Docker executable to assert
|
||||
exact argv and rootless refusal before the requested call, without a daemon.
|
||||
- scripts/install-tests/network-probe.mjs: actual internal-network tunnel,
|
||||
TLS, unlisted host/port and external DNS refusal in a core image.
|
||||
- scripts/install-tests/services-probe.mjs: actual Vikunja and notifier REST
|
||||
client functions, public GET plus invalid dummy token, with proxy log proof.
|
||||
All are new files; no old assertion changes.
|
||||
|
||||
## First CLEAR result and sage-3916 correction
|
||||
|
||||
Run 1: exit 0, config/helper 31/31, zero fail/skip/cancel,
|
||||
01-install-unit.log. Run 2: exit 0, proxy 11/11, zero fail/skip/cancel,
|
||||
02-egress.log. Run 3: exit 1, config selftest 55 pass / 1 fail; new install
|
||||
cases 20/20, 03-config.log. Each log records UTC/load/CLEAR/fresh scratch TMPDIR.
|
||||
Run 4 NOT RUN: no Docker command, probe or build. Slot returned to Sage in
|
||||
bentina-0004 before any rerun.
|
||||
|
||||
Old red: config without console loads with unchanged output
|
||||
(test-config.sh:266; log:53). Cause: this implementation unconditionally
|
||||
added install:{mode:local} to resolved JSON. Sage-3916 approves the source-only
|
||||
fix: omit output key when input omits it (optional-key convention), default
|
||||
env export to local. Applied this fix to mosaic-config.mjs and adjusted only
|
||||
the new absent-key case. No old assertion changed. No verification after fix:
|
||||
Poe has the current slot, Bentina runs next only on a new CLEAR. Run order
|
||||
will be 1, 3, 4; no reason to rerun unchanged proxy unit tests separately.
|
||||
|
||||
The approved test-config patch is addition-only: git diff --numstat reports
|
||||
4 added, 0 removed lines for scripts/test-config.sh. No existing line or
|
||||
assertion changed. git diff --stat before first run:
|
||||
|
||||
```
|
||||
BUILD-LOG.md | 2 ++
|
||||
README.md | 9 +++++++++
|
||||
docs/SESSIONS.md | 2 ++
|
||||
docs/TOOLS.md | 38 ++++++++++++++++++++++++++++++++++++++
|
||||
scripts/mosaic-config.mjs | 20 +++++++++++++++++++-
|
||||
scripts/test-config.sh | 4 ++++
|
||||
6 files changed, 74 insertions(+), 1 deletion(-)
|
||||
```
|
||||
|
||||
New untracked paths are not included by git diff --stat; see explicit paths
|
||||
above. Claim bentina-0003 initially refused queue-lock-held; same op retried.
|
||||
Sage reports re-pin rev 3808 (sage-3913).
|
||||
|
||||
## sage-3919 — corrected acceptance green, slot returned
|
||||
|
||||
Run 1 exit 0, helper/config 31/31 (04-install-unit-fixed.log); run 3 exit 0,
|
||||
config selftest 56/56 plus new install 20/20 (05-config-fixed.log); run 4
|
||||
exit 0 (06-install.log), helper/config 31/31 and proxy 11/11, images built
|
||||
at RELEASE 0.0.12, rootless endpoint explicitly attested, image version
|
||||
checks passed, internal-network TLS to listed host reached, unlisted host
|
||||
and port refused, external DNS refused. Actual Vikunja public GET returned
|
||||
200 and notifier REST dummy-token GET returned 401; services proxy logs
|
||||
show both host decisions. No real token or broker started. Test-owned
|
||||
networks/containers cleaned by suite. Slot returned bentina-0005. No broader
|
||||
suites: Sage's landing gate supplies them. Claim bentina-0003 acknowledged
|
||||
rev 3812 briefed -> in-progress. No queue files changed in this worktree.
|
||||
|
||||
Post-pass source review found one small correctness defect before handoff:
|
||||
upstream errors after a successful CONNECT would append a plaintext 502 to
|
||||
an established TLS tunnel. Corrected to close an established tunnel and
|
||||
reserve 502 for establishment errors. Added a local reset-after-CONNECT
|
||||
regression alongside the existing establishment-error test. This creates
|
||||
a new verification need: request a new CLEAR for egress units and install
|
||||
rebuild/probe before committing. Existing green logs above predate this fix;
|
||||
do not claim them for the final proxy bytes.
|
||||
|
||||
## sage-3923 — final proxy and install evidence
|
||||
|
||||
07-egress-final.log: exit 0, 12/12, zero fail/skip/cancel, including upstream
|
||||
reset after a CONNECT200 closes the tunnel without a second HTTP response.
|
||||
08-install-final.log: exit 0, 31/31 config/helper and 12/12 proxy,
|
||||
zero fail/skip/cancel, three images rebuilt, version checks passed,
|
||||
internal-network listed TLS200/unlisted host403/unlisted port403/external
|
||||
DNS refused, Vikunja public GET200 and notifier REST dummy-token GET401
|
||||
through services proxy; JSON log decisions verified. Explicit endpoint
|
||||
unix:///run/user/1000/docker.sock passed rootless check. Suite removed only
|
||||
its named i2 containers/networks. Slot returned to Sage in bentina-0007.
|
||||
|
||||
No runtime source change after these final reruns. Mos-only measurement
|
||||
runner was statically hardened to report a fixed message on malformed
|
||||
credential JSON, avoiding JSON.parse's error snippet echoing private input.
|
||||
The runner and provider script have not been executed here: Mos owns the
|
||||
real-token/provider-model-table check and its output must land on #1652.
|
||||
No claim of completed provider-host measurement or final host-list approval.
|
||||
|
||||
Acceptance accounting:
|
||||
- Install validator cases and unchanged config bytes: new 20 cases green;
|
||||
entire existing config suite 56/56 (05-config-fixed.log); absent output
|
||||
shape preserved; env/helper default local proven by helper's absent test.
|
||||
- Rootless guard: exact argv/array membership/status/type/refusal fake
|
||||
cases plus real rootless check in 08-install-final.log. No ambient Docker
|
||||
context used by new code. Other scripts' migration remains I6.
|
||||
- Images: exact base digest in Dockerfiles, release 0.0.12 tags, core node
|
||||
24.21.0/no-git/RELEASE assertion; session Claude2.1.296/pi0.85.1 assertions;
|
||||
all built through the helper on the explicit rootless endpoint.
|
||||
- Proxy: allow/deny/port/malformed/slow/fragmented/header-bound/upstream-error
|
||||
and structured logs verified in final unit suite; actual TLS tunnel and
|
||||
internal-network denials plus services client fetch paths verified by
|
||||
install suite. The generic S5 fetch probe was not repeated.
|
||||
- Non-fetch broker/gateway/SSH/Git/web paths remain documented gaps under
|
||||
sage-3907, not modified or silently claimed to be covered. All fixed
|
||||
service hosts retain entries and code-path notes. No dependency added.
|
||||
- Full suites: not run here per sage-3910; Sage's landing gate supplies
|
||||
broader coverage. Reviewer and Mos gates still pending.
|
||||
|
||||
Static source diff whitespace check passed (excluding captured .log files
|
||||
and unified .patch context). Raw build logs retain Docker/npm output
|
||||
including whitespace; no evidence was normalized or rewritten. Old-suite
|
||||
change remains +4/-0 and every prior assertion byte-identical. No queue
|
||||
file changed here. No secret read, token test, live state/unit operation,
|
||||
daemon/volume/restart action, protected-branch push, or integration.
|
||||
|
||||
Candidate handoff: base ec86f2c84; commit only this I2 work and receipts on
|
||||
bentina/row157, push through configured repository helper, then send Sage
|
||||
and Boyd the tip/base/manifest for first review. Darkwing follows Boyd.
|
||||
The manifest lists each changed path except its own self-reference.
|
||||
|
||||
## Round 2 — Boyd B1/B2 (boyd-0023; Sage sage-3933)
|
||||
|
||||
First candidate a14fdc443, manifest b0ed8395, CHANGES on #1652 comment31494.
|
||||
Read Boyd's exact scratch harnesses and logs under /mnt/storage/scratch/tmp/IyNqMs.
|
||||
B1 reproduction: normal peer control releases its socket, allowHalfOpen peer
|
||||
receives408 but getConnections still reports1 after100ms (assertion1 != 0).
|
||||
Root cause: refusal end sends FIN but clears the only deadline and leaves the
|
||||
read side open. B2 reproduction: same-PID exec inherits exported checked_pid
|
||||
and endpoint; fake rootful Docker sees ps on inherited.sock, no info; rc0 vs
|
||||
expected2. Root cause: source initializes neither cache validity nor endpoint.
|
||||
These findings agree with source inspection and require no design departure.
|
||||
No local tests were run while Goldie holds the slot.
|
||||
|
||||
Added tests before fixes, adapted from the reviewer with explicit cleanup:
|
||||
- packages/egress/tests/refusal.test.mjs: real loopback sockets, normal and
|
||||
half-open controls for every400/403/408/431 refusal; asserts server socket
|
||||
count reaches0, one denial log, expected response. Removing destruction
|
||||
after flush should fail half-open cases while normal controls still pass.
|
||||
- scripts/install-tests/review-cache.test.mjs: same-PID exec with inherited
|
||||
exported cache, fake rootful/rootless Docker, actual loader/helper; asserts
|
||||
first call is info at configured.sock, refusal or exact once-per-process
|
||||
cache behavior, and no cache keys in Docker's child environment. Removing
|
||||
source-time reset should fail; no real engine, config or credentials used.
|
||||
No existing test file or assertion edited.
|
||||
|
||||
Minimal fixes: proxy uses endAndClose for all refusal responses, including
|
||||
upstream establishment502: destroy after the small response flushes, plus a
|
||||
fixed1s drain deadline cleared on close. Established-tunnel reset behavior
|
||||
stays unchanged. Helper unsets checked_pid/endpoint/mode on every source,
|
||||
clearing inherited export attributes; ordinary function calls still reuse
|
||||
only an attestation obtained in the current process. No dependency, contract,
|
||||
host-list or authority change. Request CLEAR for new regression red/green,
|
||||
full targeted units and test-install rebuild before commit. Old-test red
|
||||
still stops and returns slot. Sage's broader landing gate remains separate.
|
||||
|
||||
Sage-3935 approves the five-run plan including archived red-first proof;
|
||||
Goldie holds the slot and Bentina is next. Still no node/docker test run.
|
||||
The new refusal test also includes normal/half-open502 establishment failures
|
||||
on a closed loopback port, exercising the shared termination helper on that
|
||||
path (allowed log stays true for an approved destination whose upstream fails).
|
||||
This stays within the named new regression file and approved commands.
|
||||
|
||||
## Round 2 verified — sage-3936 slot returned
|
||||
|
||||
Claimant move bentina-0012 acknowledged rev3825 in-review -> in-progress,
|
||||
before the correction commit. Five serialized runs, each fresh short scratch
|
||||
TMPDIR/UTC/load/CLEAR and timeout -k10:
|
||||
|
||||
| Run | Log (this directory) | Exit | Evidence |
|
||||
|---|---|---|---|
|
||||
| 1 old archived runtime + new tests | 09-r2-archived-red.log | 1 expected | 12 tests:5 normal-peer controls pass;7 intended failures (five half-open400/403/408/431/502 cases, two inherited-cache cases);0skip/cancel |
|
||||
| 2 fixed regressions | 10-r2-regressions-green.log | 0 | 12/12,0fail/skip/cancel |
|
||||
| 3 install unit suite | 11-r2-install-units.log | 0 | 33/33,0fail/skip/cancel |
|
||||
| 4 egress suite | 12-r2-egress-suite.log | 0 | 22/22,0fail/skip/cancel |
|
||||
| 5 install images/network/services | 13-r2-install.log | 0 | 33+22 unit tests green;three images rebuilt/version pins checked;explicit rootless guard;listed TLS200,unlisted host/port403,external DNS refused;Vikunja publicGET200/notifier REST dummyGET401;JSON decisions verified |
|
||||
|
||||
Run1 unpacked git archive of a14fdc443 into its own scratch directory and
|
||||
overlaid only the two new tests; it did not revert or modify the builder
|
||||
worktree. Failures were exact behavioral assertions, not infrastructure or
|
||||
syntax errors. All test sockets cleaned in t.after; the install suite
|
||||
removed only its i2-prefixed containers/networks. Slot returned to Sage in
|
||||
bentina-0014. No existing test file/assertion changed for round2. No code
|
||||
change after verification. Earlier config56/56 evidence remains in05 log;
|
||||
loader/config unchanged for this review. No broader suites authorized here.
|
||||
|
||||
The round2 manifest MANIFEST-r2.sha256 covers the full candidate delta from
|
||||
original base ec86f2c84, including the unchanged historical round1 manifest;
|
||||
it excludes only its own self-reference (its hash is supplied in the review
|
||||
message). Historical round1 manifest still describes a14fdc443 and is not
|
||||
rewritten to describe later source. New manifest, candidate tip/base and
|
||||
receipts go to Sage and Boyd, then Darkwing follows Boyd's approve. The
|
||||
owner's automated review-request credential boundary still belongs to Sage;
|
||||
no token read or identity substitution is authorized. Mos provider evidence
|
||||
and Sage's broader landing gate remain required. No protected-branch push,
|
||||
real-token test, live config/state/unit action or daemon/volume operation.
|
||||
@@ -1,44 +0,0 @@
|
||||
58e473e1783a9f64f6b1a696f747925b9a444d85dbe72e48e7a0dcbd62a2d4e5 BUILD-LOG.md
|
||||
67bd811b3030ba0355af2316d02e8b2931b4b2c5a74c5be904b5311de6ef81dd README.md
|
||||
6161cc0505bf0be33ba0e7c7f0f07382cca0ec2b5ace65ac54e16c4d1e3424fc agents/bentina/work/queue-157/01-install-unit.log
|
||||
f13213941dab22955841108d85e62f67ede2ddbc95c25a7b351f30070b035a85 agents/bentina/work/queue-157/02-egress.log
|
||||
b46c3fb5f252100f3e2de5b97bd0efc0c1fbbef26230252945f7bb309d359f5e agents/bentina/work/queue-157/03-config.log
|
||||
fc76e5f9b19a31b494ebf4a128ef5f171f1f0712dc3928bebb6556815577015c agents/bentina/work/queue-157/04-install-unit-fixed.log
|
||||
c9a46d969c5d28814addccd7cafe8e734d15c02a407ee80434d4e3e70a3fa4b7 agents/bentina/work/queue-157/05-config-fixed.log
|
||||
1d5505a6aba0078e7cf9936fb683e06ac900af12e9e8faf224099a5e2d825fc7 agents/bentina/work/queue-157/06-install.log
|
||||
c684dfdd8a460a915e15291fc0f92c9ba30f38d3d3dfa5fa190e7835fbcd448f agents/bentina/work/queue-157/07-egress-final.log
|
||||
5c3efacdbcda5628882045644c32169b7020a6e49d6b89b273aba20ae042898b agents/bentina/work/queue-157/08-install-final.log
|
||||
d2f7bd37b5ac8cc781fae1308a5b047e0ed0d1b63f8d5e22d56e0efa328c4883 agents/bentina/work/queue-157/09-r2-archived-red.log
|
||||
4230f9fcc91d1670df0d975e9c5794edb7aa9b21b24c4f415d1594373e769da4 agents/bentina/work/queue-157/10-r2-regressions-green.log
|
||||
3e5cd8d154b01ede9a9533f4ff40ac29b4e8193131fd63ba04707df51217d0bb agents/bentina/work/queue-157/11-r2-install-units.log
|
||||
4d23ae4a6d3247a498bd446960c075235f632474fba9e8db374a32aaf4760219 agents/bentina/work/queue-157/12-r2-egress-suite.log
|
||||
a4652f0eb6dfcc177c24c5d85d7ec08096e9f49304085f817828d7ef451acd64 agents/bentina/work/queue-157/13-r2-install.log
|
||||
5b595798fa8184b15412276d070a0891fdf5cb629eabb8b7bb5f6b3d2b69b3a5 agents/bentina/work/queue-157/BUILD.md
|
||||
b0ed8395108ad398f5c9c08fbac8a1b5ca02f579a5d7b709d19d3aaf0860f9ae agents/bentina/work/queue-157/MANIFEST.sha256
|
||||
21f9783dcfe2cac00a49d0d7930a57134bc59ec19dd7bf2e96950f79fae5b1b1 agents/bentina/work/queue-157/PROVIDER-EXPECTED.md
|
||||
6518c574291db5816057fbbc438435d0571e088c8f26d1a47ec03ff3047a5efa agents/bentina/work/queue-157/provider-hosts.sh
|
||||
6dbef8d20ede98a9311ba47137b587c07cbc03e921b2a8429652fe362aeb4b85 agents/bentina/work/queue-157/provider-runner.mjs
|
||||
e7cb4d0c67eadec557a25385b4ea9803970818354a9e8b0780ac4de07cf34911 agents/bentina/work/queue-157/test-config.patch
|
||||
cb2b251342f0020764b7b757b22567d52380053fc15f0e1c7e665a5ec1838f24 contracts/egress.json
|
||||
58107cfa274b7551ae163ea77c56d08df530e7f08e06539ddd2999c22252d749 docs/SESSIONS.md
|
||||
edcaa526bf0a518716d4e87895d49920b8912295688809a25102ce6b9d6ebdc3 docs/TOOLS.md
|
||||
6bd1dc7c244cfb4134d813e0b149ef1182a810eb99f01a95d548f0885b216437 images/README.md
|
||||
9c6c3d5736f1ed7eb6dcdb893761b937b7108e29730daf28fe8dd0064df73740 images/core/Dockerfile
|
||||
0179d84a7b9321832efb1d90c0290c8f2f6de03db3b2b6d8379672aca598c2a0 images/egress/Dockerfile
|
||||
e246e3e3da1065f3c8cf24cc1f7ae15290f3e4c6508f0c6f17a4889a77f2d591 images/session/Dockerfile
|
||||
3930764cf5848571507eec3e5b3eda2ebb8aa2d9642f83615b462bf5035e0e75 packages/egress/README.md
|
||||
2c45bfed1f19f8a42e05552f8a10584feed8d25ccc506252d55a9a3b6c90a21c packages/egress/package.json
|
||||
257058faee55a429d98955b6253d6b8a0bb058c50446764566586b06a8f76b61 packages/egress/src/cli.mjs
|
||||
ce3adb0515ca7e9041f36d7a82df355a3fc97e2a96fc6811ea3b9b47e464787b packages/egress/src/proxy.mjs
|
||||
5c4e778ec9ec5b93ab681d615a2240cd342d09adfe4df1634f3d6abbf16a405b packages/egress/tests/proxy.test.mjs
|
||||
258e954ad7e441a7dd7d25ca9208691ea167e9cb7f34d7d689ed11005adeb4b4 packages/egress/tests/refusal.test.mjs
|
||||
86e0152120b04fcfe2a4081b7686f179a139c5370027828c79572033f3cf81c3 scripts/images.sh
|
||||
3647b06df02b4d9c0a74b62c774ecdff9272e68a84c06cd85861d7bf18655d5a scripts/install-tests/config.test.mjs
|
||||
21e05bc3e0639427f5a9d4cf166d2991964134845272df76c712ad00ea8033b6 scripts/install-tests/helper.test.mjs
|
||||
aa5328566d3e5b46fee587657dac146712735dca0aca90d3d0ad84bc20e313e1 scripts/install-tests/network-probe.mjs
|
||||
45274f6745cf931f3002e6c36dcfc46a96c8f09e01e6243c18659749673752fd scripts/install-tests/review-cache.test.mjs
|
||||
72ae66696ad2faaf258c832fdfdf680efc8fca7099359e58da1ee01a88541d8a scripts/install-tests/services-probe.mjs
|
||||
79a8ecfc5ab279111031d5a44906450b732b517fe98511992cafd873ab7a84d3 scripts/lib/docker.sh
|
||||
7398bb289d2f28ed15a2984bdeee7e30a704890a33b5e2a5c9f7554115aca8f9 scripts/mosaic-config.mjs
|
||||
dcf1799238141689c9d80adc6680694a609e5fb9deef7b78d6b3f4765163e3fe scripts/test-config.sh
|
||||
08be25f67d8fc6676218b1014d34a2ce36a939231f58b657972d856ee26169b2 scripts/test-install.sh
|
||||
@@ -1,36 +0,0 @@
|
||||
6995aa3bcdf50e2441142cc9b6fc9ec84853e353e7a408bbc877ee7e188e73c4 BUILD-LOG.md
|
||||
67bd811b3030ba0355af2316d02e8b2931b4b2c5a74c5be904b5311de6ef81dd README.md
|
||||
6161cc0505bf0be33ba0e7c7f0f07382cca0ec2b5ace65ac54e16c4d1e3424fc agents/bentina/work/queue-157/01-install-unit.log
|
||||
f13213941dab22955841108d85e62f67ede2ddbc95c25a7b351f30070b035a85 agents/bentina/work/queue-157/02-egress.log
|
||||
b46c3fb5f252100f3e2de5b97bd0efc0c1fbbef26230252945f7bb309d359f5e agents/bentina/work/queue-157/03-config.log
|
||||
fc76e5f9b19a31b494ebf4a128ef5f171f1f0712dc3928bebb6556815577015c agents/bentina/work/queue-157/04-install-unit-fixed.log
|
||||
c9a46d969c5d28814addccd7cafe8e734d15c02a407ee80434d4e3e70a3fa4b7 agents/bentina/work/queue-157/05-config-fixed.log
|
||||
1d5505a6aba0078e7cf9936fb683e06ac900af12e9e8faf224099a5e2d825fc7 agents/bentina/work/queue-157/06-install.log
|
||||
c684dfdd8a460a915e15291fc0f92c9ba30f38d3d3dfa5fa190e7835fbcd448f agents/bentina/work/queue-157/07-egress-final.log
|
||||
5c3efacdbcda5628882045644c32169b7020a6e49d6b89b273aba20ae042898b agents/bentina/work/queue-157/08-install-final.log
|
||||
f4755f24d626dc69b8159c6934e4213a907659dbb4d46d29d82efc0405b50152 agents/bentina/work/queue-157/BUILD.md
|
||||
21f9783dcfe2cac00a49d0d7930a57134bc59ec19dd7bf2e96950f79fae5b1b1 agents/bentina/work/queue-157/PROVIDER-EXPECTED.md
|
||||
6518c574291db5816057fbbc438435d0571e088c8f26d1a47ec03ff3047a5efa agents/bentina/work/queue-157/provider-hosts.sh
|
||||
6dbef8d20ede98a9311ba47137b587c07cbc03e921b2a8429652fe362aeb4b85 agents/bentina/work/queue-157/provider-runner.mjs
|
||||
e7cb4d0c67eadec557a25385b4ea9803970818354a9e8b0780ac4de07cf34911 agents/bentina/work/queue-157/test-config.patch
|
||||
cb2b251342f0020764b7b757b22567d52380053fc15f0e1c7e665a5ec1838f24 contracts/egress.json
|
||||
d6239336e48b6a78b80680c88e83ba4b67f8cbed99bf2ee3a697b1b0611e54e9 docs/SESSIONS.md
|
||||
edcaa526bf0a518716d4e87895d49920b8912295688809a25102ce6b9d6ebdc3 docs/TOOLS.md
|
||||
6bd1dc7c244cfb4134d813e0b149ef1182a810eb99f01a95d548f0885b216437 images/README.md
|
||||
9c6c3d5736f1ed7eb6dcdb893761b937b7108e29730daf28fe8dd0064df73740 images/core/Dockerfile
|
||||
0179d84a7b9321832efb1d90c0290c8f2f6de03db3b2b6d8379672aca598c2a0 images/egress/Dockerfile
|
||||
e246e3e3da1065f3c8cf24cc1f7ae15290f3e4c6508f0c6f17a4889a77f2d591 images/session/Dockerfile
|
||||
3930764cf5848571507eec3e5b3eda2ebb8aa2d9642f83615b462bf5035e0e75 packages/egress/README.md
|
||||
2c45bfed1f19f8a42e05552f8a10584feed8d25ccc506252d55a9a3b6c90a21c packages/egress/package.json
|
||||
257058faee55a429d98955b6253d6b8a0bb058c50446764566586b06a8f76b61 packages/egress/src/cli.mjs
|
||||
2ec533e8a2c9ace2d2dc17ac9efe75a9930ae50e93f6700e3de8aa0475b42295 packages/egress/src/proxy.mjs
|
||||
5c4e778ec9ec5b93ab681d615a2240cd342d09adfe4df1634f3d6abbf16a405b packages/egress/tests/proxy.test.mjs
|
||||
86e0152120b04fcfe2a4081b7686f179a139c5370027828c79572033f3cf81c3 scripts/images.sh
|
||||
3647b06df02b4d9c0a74b62c774ecdff9272e68a84c06cd85861d7bf18655d5a scripts/install-tests/config.test.mjs
|
||||
21e05bc3e0639427f5a9d4cf166d2991964134845272df76c712ad00ea8033b6 scripts/install-tests/helper.test.mjs
|
||||
aa5328566d3e5b46fee587657dac146712735dca0aca90d3d0ad84bc20e313e1 scripts/install-tests/network-probe.mjs
|
||||
72ae66696ad2faaf258c832fdfdf680efc8fca7099359e58da1ee01a88541d8a scripts/install-tests/services-probe.mjs
|
||||
e524a285dcebe2a6350e7690650c2796e54661225ce00a67b4559e519f9e3fea scripts/lib/docker.sh
|
||||
7398bb289d2f28ed15a2984bdeee7e30a704890a33b5e2a5c9f7554115aca8f9 scripts/mosaic-config.mjs
|
||||
dcf1799238141689c9d80adc6680694a609e5fb9deef7b78d6b3f4765163e3fe scripts/test-config.sh
|
||||
08be25f67d8fc6676218b1014d34a2ce36a939231f58b657972d856ee26169b2 scripts/test-install.sh
|
||||
@@ -1,37 +0,0 @@
|
||||
# Mos provider-host gate (not run by Bentina)
|
||||
|
||||
Run only after candidate images build and Mos authorizes the real-token calls.
|
||||
Use a scratch config with install.mode containerized and the rootless endpoint;
|
||||
do not change the live config. Provide one JSON object on stdin with
|
||||
`claudeOAuth` and `zai`, plus optional `anthropic` / `openai` keys if those
|
||||
providers are in the actual model table. The script opens no host token file.
|
||||
Never paste the input or raw CLI output on the issue. It prints success flags
|
||||
and the proxy's host decisions only. Wrap in `timeout -k 10 600`.
|
||||
|
||||
From the checkout:
|
||||
|
||||
```
|
||||
Mos-private-json-producer | MOSAIC_CONFIG=/path/to/scratch-config.json agents/bentina/work/queue-157/provider-hosts.sh
|
||||
```
|
||||
|
||||
Expected required output (with just Claude Code and pi/zai):
|
||||
|
||||
```
|
||||
{"case":"claude","ok":true}
|
||||
{"case":"pi-zai","ok":true}
|
||||
{"hosts":["api.anthropic.com:443","api.z.ai:443"],"denied":[]}
|
||||
```
|
||||
|
||||
Optional pi/anthropic adds `{"case":"pi-anthropic","ok":true}` and no
|
||||
host. Optional pi/openai adds `{"case":"pi-openai","ok":true}` and
|
||||
`api.openai.com:443` to sorted hosts. All cases must return ok true, exit 0,
|
||||
and denied empty. Model names are explicit candidates; Mos must reconcile
|
||||
them to the actual model table without broadening a host list on failure.
|
||||
A new host, refusal, failure, or different model requirement returns to Sage;
|
||||
there is no wildcard or automatic discovery/update. The baked agents list
|
||||
remains provisional until Mos posts matching output on #1652.
|
||||
|
||||
Each resource name begins i2-provider; cleanup removes only this run's two
|
||||
networks and two containers. No volumes, daemon or restart operations. The
|
||||
measurement uses container root as the design requires; I5 still owns the
|
||||
full root filesystem re-measurement and final session limits.
|
||||
@@ -1,36 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
# Mos runs this explicitly with a caller-supplied scratch MOSAIC_CONFIG and
|
||||
# credential JSON on stdin. This script reads no host credential file.
|
||||
set -euo pipefail
|
||||
REPO="$(cd "$(dirname "${BASH_SOURCE[0]}")/../../../.." && pwd)"
|
||||
cd "$REPO"
|
||||
source scripts/lib/docker.sh
|
||||
mosaic_docker version >/dev/null
|
||||
release="$(tr -d '[:space:]' < RELEASE)"
|
||||
prefix="i2-provider-$(date -u +%s)-$$"
|
||||
nets=("$prefix-internal" "$prefix-egress")
|
||||
cleanup(){
|
||||
rc=$?; trap - EXIT
|
||||
mosaic_docker container rm -f "$prefix-session" "$prefix-proxy" >/dev/null 2>&1 || true
|
||||
for net in "${nets[@]}"; do mosaic_docker network rm "$net" >/dev/null 2>&1 || true; done
|
||||
exit "$rc"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
mosaic_docker network create --internal "${nets[0]}" >/dev/null
|
||||
mosaic_docker network create "${nets[1]}" >/dev/null
|
||||
mosaic_docker create --name "$prefix-proxy" --network "${nets[1]}" --read-only --cap-drop ALL --security-opt no-new-privileges --pids-limit 64 --memory 128m --memory-swap 128m --cpus 0.5 "mosaic-egress:$release" agents >/dev/null
|
||||
mosaic_docker network connect --alias proxy "${nets[0]}" "$prefix-proxy"
|
||||
mosaic_docker start "$prefix-proxy" >/dev/null
|
||||
ready=0
|
||||
for attempt in {1..50}; do
|
||||
if mosaic_docker exec "$prefix-proxy" node -e 'const s=require("node:net").connect(3128,"127.0.0.1");s.on("connect",()=>{s.destroy();process.exit(0)});s.on("error",()=>process.exit(1))'; then ready=1; break; fi
|
||||
sleep 0.1
|
||||
done
|
||||
[ "$ready" = 1 ] || { echo proxy-not-ready >&2; exit 1; }
|
||||
rc=0
|
||||
# Token travels only in stdin and the CLI child's env; never an engine env or log.
|
||||
mosaic_docker run --rm --init -i --name "$prefix-session" --network "${nets[0]}" --log-driver none --read-only --tmpfs /root:rw,nosuid --tmpfs /tmp:rw,noexec,nosuid --cap-drop ALL --security-opt no-new-privileges --pids-limit 512 --memory 4g --memory-swap 4g --cpus 2 \
|
||||
--mount "type=bind,src=$REPO/agents/bentina/work/queue-157/provider-runner.mjs,dst=/opt/mosaic/provider-runner.mjs,readonly" \
|
||||
"mosaic-session:$release" node provider-runner.mjs || rc=$?
|
||||
mosaic_docker logs "$prefix-proxy" | node -e 'let s="";process.stdin.on("data",c=>s+=c).on("end",()=>{const rows=s.trim().split("\n").filter(Boolean).map(JSON.parse);const deny=rows.filter(r=>r.host&&!r.allowed);console.log(JSON.stringify({hosts:[...new Set(rows.filter(r=>r.allowed).map(r=>r.host+":"+r.port))].sort(),denied:[...new Set(deny.map(r=>r.host+":"+r.port))].sort()}));if(deny.length)process.exitCode=1})' || rc=$?
|
||||
exit "$rc"
|
||||
@@ -1,17 +0,0 @@
|
||||
// Mos-only real-token measurement. Reads one JSON object on stdin. Never logs CLI output.
|
||||
import { execFile } from 'node:child_process';
|
||||
import { promisify } from 'node:util';
|
||||
const exec = promisify(execFile);
|
||||
let input='';for await(const chunk of process.stdin){input+=chunk;if(input.length>65536)throw new Error('measurement-input-too-large');}
|
||||
let keys;try{keys=JSON.parse(input);}catch{input='';process.stderr.write('measurement-input-invalid\n');process.exit(2);}input='';
|
||||
if(!keys.claudeOAuth||!keys.zai)throw new Error('measurement-needs-claudeOAuth-and-zai');
|
||||
const prompt='Reply with exactly I2_PROVIDER_OK and no other text.';
|
||||
const env={PATH:process.env.PATH,HOME:'/root',HTTPS_PROXY:'http://proxy:3128',HTTP_PROXY:'http://proxy:3128',NODE_USE_ENV_PROXY:'1',CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC:'1'};
|
||||
const pi=['--no-session','--no-tools','--no-approve','--no-extensions','--no-skills','--no-prompt-templates','--no-themes','--no-context-files'];
|
||||
const cases=[['claude','claude',['-p',prompt,'--tools',''],{CLAUDE_CODE_OAUTH_TOKEN:keys.claudeOAuth}],['pi-zai','pi',[...pi,'--provider','zai','--model','glm-5.3-flash','-p',prompt],{ZAI_API_KEY:keys.zai}]];
|
||||
if(keys.anthropic)cases.push(['pi-anthropic','pi',[...pi,'--provider','anthropic','--model','claude-sonnet-5-5','-p',prompt],{ANTHROPIC_API_KEY:keys.anthropic}]);
|
||||
if(keys.openai)cases.push(['pi-openai','pi',[...pi,'--provider','openai','--model','gpt-5.4','-p',prompt],{OPENAI_API_KEY:keys.openai}]);
|
||||
for(const [name,bin,args,secrets] of cases){
|
||||
let ok=false;try{const {stdout}=await exec(bin,args,{env:{...env,...secrets},timeout:120000,killSignal:'SIGKILL',maxBuffer:1024*1024});ok=stdout.includes('I2_PROVIDER_OK');}catch{}
|
||||
console.log(JSON.stringify({case:name,ok}));if(!ok)process.exitCode=1;
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
--- a/scripts/test-config.sh
|
||||
+++ b/scripts/test-config.sh
|
||||
@@ -291,5 +291,9 @@
|
||||
fi
|
||||
|
||||
echo
|
||||
+# I2: each install shape asserts its exit code and config-byte preservation.
|
||||
+node --test scripts/install-tests/config.test.mjs
|
||||
+check "install configuration cases" $?
|
||||
+
|
||||
echo "selftest: $PASS passed, $FAIL failed"
|
||||
[ "$FAIL" -eq 0 ]
|
||||
@@ -0,0 +1,10 @@
|
||||
# Bradford
|
||||
|
||||
Builder seat, Codex gpt-6.1-sol, started by Sage under Q246 and mos-1572. Owns the push check row:
|
||||
`scripts/push-check.sh`, which passes a binary only when an approved review candidate lists its path and sha256
|
||||
(docs/plans/2026-10-24_push-guard-binary-manifest.md, #1825).
|
||||
|
||||
No launcher in this directory. The seat runs as a T3 thread and works in its own worktree. It has no credentials of its
|
||||
own; it pushes only its own `bradford/*` branches through the repository credential helper (mos-0981), never `refactor`,
|
||||
`main` or another seat's branch. Poe gives the first Codex review and Dewey the Opus 5.5 landing review (mos-1542,
|
||||
mos-1571). Registered by Sage on 2026-10-24 so the queue can name the seat as row owner (store.mjs isSeatDir).
|
||||
@@ -0,0 +1,162 @@
|
||||
# Row 327 — reviewed binary push check (#1825)
|
||||
|
||||
2026-10-24 Bradford, branch bradford/row327, base b617b80f6.
|
||||
|
||||
## Plan and boundaries
|
||||
|
||||
Implement the scratch check's ordered tokens in scripts/push-check.sh, using an
|
||||
embedded Node program for byte-safe git paths and SHA-256 blob hashing. Bash is
|
||||
the public entry point; Node is already a repository requirement. Git commands
|
||||
use explicit resolved object IDs, disable external diff/textconv, and inspect
|
||||
committed bytes. No queue writes, hook changes, binary evidence, or live state.
|
||||
Fetch is opt-in. Read reviewed rows with the queue package rows() API rooted in
|
||||
the caller's repository; this preserves canonical/witness/replay checks.
|
||||
|
||||
Only the latest round counts; any changes receipt blocks that round. A matching
|
||||
approval authorizes exactly the manifest path/hash, or a path changed from the
|
||||
commit candidate's first parent with matching committed blob hash and mode.
|
||||
Deleted binaries need no candidate. Multiple --row values form a union.
|
||||
|
||||
Add scratch-only integration coverage in scripts/test-push-check.sh. Reuse queue
|
||||
test fixture helpers to bootstrap real scratch queues, then use queue verbs to
|
||||
open rounds and record receipts. All git writes, bare remotes and queues remain
|
||||
under TMPDIR. Test fail-closed ordering and five required mutants, generated as
|
||||
text copies in scratch. No old tests are modified. Add the TOOLS entry.
|
||||
|
||||
Every run needs Sage CLEAR; run timeout -k 10. Record plain-text results here or
|
||||
in this packet. After green checks, commit and push only bradford/row327 through
|
||||
the repository helper, send Sage and Poe tip/base/path sha256 manifest, and move
|
||||
327 in-review. Sage owns request posting and landing; Dewey reviews once there.
|
||||
|
||||
## Recovery and choices
|
||||
|
||||
Initial worktree queue next refused linked-worktree access as designed. Queue
|
||||
claim is performed from the canonical checkout; production reads in the guard
|
||||
retain the same refusal rather than invent a worktree override.
|
||||
|
||||
Requested Sage ruling on AGENTS log appends outside the brief's owned paths.
|
||||
|
||||
Sage sage-3989: lead handles BUILD-LOG and SESSIONS at landing. Session entry:
|
||||
2026-10-24 Bradford — row 327 / #1825 — implementation and scratch verification
|
||||
in this packet; outcome to be appended after acceptance.
|
||||
|
||||
Implementation note: commit candidates use an explicit first-parent diff (empty
|
||||
tree for a root commit), with rename detection disabled, like verify-commit.
|
||||
The changes-veto case has both an approval and a changes receipt; a veto mutant
|
||||
would otherwise still fail for lack of approval and provide false confidence.
|
||||
A receipt for another candidate cannot be produced through queue verbs: the
|
||||
suite corrupts only a scratch queue and expects the production reader to refuse.
|
||||
Diff color, external diff and textconv are disabled so scans inspect plain git
|
||||
output. Paths are read from NUL-delimited records (including spaces/tabs).
|
||||
|
||||
## Verification (Sage CLEAR sage-3991)
|
||||
|
||||
First new-suite run red: my whitespace-path fixture attempted a manifest path
|
||||
that the queue intentionally forbids. Corrected the fixture to a commit
|
||||
candidate, which can contain that git path. Production queue code and old tests
|
||||
remain unchanged. Raw first-run output is test-run-1.txt.
|
||||
|
||||
Second run green: PASS push-check 22 checks; KILLED skip-hash,
|
||||
accept-changes, earlier-round, working-tree, no-row. test-run-2.txt holds the
|
||||
plain-text receipt. bash -n both scripts and git diff --check passed. Runs used
|
||||
TMPDIR recorded in tmpdir.txt and timeout -k 10 240; all generated binary bytes
|
||||
were in disposable scratch repositories, never in this checkout or evidence.
|
||||
The slot was used for only the authorized new suite and syntax/diff checks.
|
||||
No claim of the lead's full scripts/test-*.sh landing gate is made here.
|
||||
|
||||
Final inspection after the first green run found a path-decoding concern: lossy
|
||||
UTF-8 decoding can conflate distinct git filenames. Hardened NUL-delimited path
|
||||
decoding to reject invalid UTF-8, and quote newline-containing paths in refusal
|
||||
output to preserve one STOP line. Added scratch cases for both. Requested a new
|
||||
CLEAR (bradford-0005) because the previous slot had already been released.
|
||||
|
||||
Final run (sage-3994 CLEAR) green on final code: PASS push-check 24 checks,
|
||||
all five mutants KILLED again, bash -n both scripts and git diff --check passed.
|
||||
Receipt: test-run-3.txt. The guard rejects non-UTF-8 git paths as environment
|
||||
errors rather than comparing replacement characters; newline paths remain
|
||||
checkable through commit candidates and refusals quote them on one line.
|
||||
|
||||
Acceptance for the builder stage: ordered tokens and stop behavior, explicit
|
||||
base/fetch, exact blob manifest/commit checks, latest-round/veto checks, deletion,
|
||||
log/FF/secrets/attribution refusals, and all required mutants are covered. Queue
|
||||
reads use rows() with production validation; tests use only scratch queues.
|
||||
Candidate-mismatched receipts are impossible through the queue API and are
|
||||
covered by a corrupt scratch queue refusing its read. The lead's full-suite gate,
|
||||
Poe first review, Dewey landing review, and adoption for Sage's next push remain
|
||||
landing stages. No hooks, role policy, credentials or other seats' paths changed.
|
||||
|
||||
## Poe first review R1 (poe-0010) — changes
|
||||
|
||||
cceea407e has a blocking subdirectory bypass: ls-tree without --full-tree can
|
||||
omit an existing binary outside the caller cwd, making it look deleted.
|
||||
Accepted the finding. Git now anchors all invocations at the repository root,
|
||||
ls-tree uses --full-tree, and diff/diff-tree use --no-relative. EXPECTED_LOG still
|
||||
resolves from the original caller cwd. Added outside-cwd and nested-binary cases
|
||||
under diff.relative=true: unreviewed stops, reviewed manifest/commit passes.
|
||||
No old test changed. New run requires Sage CLEAR before execution.
|
||||
|
||||
R1 verification under sage-3999 CLEAR: test-run-4.txt records PASS 29 checks
|
||||
and KILLED all five required mutants. Syntax and diff whitespace checks passed.
|
||||
A second bounded run used the new suite against cceea407e's script copied under
|
||||
TMPDIR: r1-regression-red.txt records the outside-cwd unreviewed binary reaching
|
||||
NO_BINARY/PUSH_READY (actual exit 0, expected 1). Thus the new regression detects
|
||||
the reviewed bug, while the revised guard refuses it. No code changed between
|
||||
the green run and this old-candidate reproduction. All runs used timeout -k 10.
|
||||
|
||||
Holding claimant queue writes per sage-3999 until Boyd finishes row 309's record.
|
||||
Last acknowledged row 327 state is in-progress (bradford-0010, revision 3868).
|
||||
|
||||
## Dewey landing review B1 (dewey-0956) — changes
|
||||
|
||||
Read the invited review body at /mnt/storage/scratch/tmp/dew327vWXloCT/body.md.
|
||||
B1 identifies a brief-level gap: numstat follows candidate/host git attributes,
|
||||
so *.bin diff makes a NUL-containing blob disappear from the binary-only set.
|
||||
The production script indeed filters numstat before reading any blob, consistent
|
||||
with that data flow. Proposed correction: enumerate every changed numstat path,
|
||||
skip absent/non-blob entries at SHA, classify binary when numstat says binary OR
|
||||
committed blob has NUL among first 8000 bytes. Read with cat-file, never worktree.
|
||||
Test committed .gitattributes, info/attributes, and core.attributesFile overrides
|
||||
in scratch; reject with no row, allow exact reviewed bytes; add NUL-scan mutant.
|
||||
Sage owns the brief amendment and next CLEAR/queue sequencing.
|
||||
|
||||
N1 acknowledged: candidate-equality check is defense in depth; invalid receipt
|
||||
cannot pass queue replay, so the corrupt-queue case does not isolate that check.
|
||||
N2/N3 recorded as described in review, without optional secrets/reader changes.
|
||||
N4 planned hardening: refuse unconfirmed durable tail notes from rows() with
|
||||
exit 2, with a real scratch witness-prefix case rather than a test-only reader.
|
||||
No test run or queue write started for B1/N4 before Sage CLEAR.
|
||||
|
||||
Sage sage-4013/4015 authorizes B1 and N4 within the brief; amendment committed on
|
||||
refactor at 9042754c4 (read with git show, no branch change). Fix and tests written
|
||||
before requesting CLEAR as directed. Tests cover all three attribute sources,
|
||||
approved manifest success under each override, exact 7999/8000 offset boundary,
|
||||
and a real prefix-witness rollback to yield an unconfirmed approval tail.
|
||||
Added only the requested sixth mutant, skip-nul-scan; the original five remain.
|
||||
No new production configuration knobs, no secrets-diff change, no queue writes.
|
||||
Will demonstrate red against the prior candidate using the new tests, then green
|
||||
against revised code, under the approved slot. Full landing gate remains Sage's.
|
||||
|
||||
After Dewey's round-2 CHANGES record (comment 31522, rev3876), Sage sage-4016
|
||||
released only the claimant return to in-progress. Acknowledged:
|
||||
`ok bradford-0017 rev 3877 row 327 in-review→in-progress`.
|
||||
No other queue write before the next in-review candidate move.
|
||||
Test slot remains pending Sage CLEAR after Gyro's build.
|
||||
|
||||
## Amendment 1 verification (sage-4017 CLEAR)
|
||||
|
||||
b1-regression-red.txt: new tests against 704910ca3 reproduce attributes-hidden
|
||||
asset.bin reaching NO_BINARY/PUSH_READY with exit0 instead of exit1.
|
||||
n4-regression-red.txt: revised code with only the N4 check removed lets the real
|
||||
scratch unconfirmed approval tail reach BINARY_REVIEWED/PUSH_READY, exit0 rather
|
||||
than exit2. These are expected negative controls; neither changed committed code.
|
||||
|
||||
Final full new-suite run is green: test-run-5.txt records PASS 38 checks and
|
||||
KILLED skip-hash, accept-changes, earlier-round, working-tree, no-row, skip-nul-scan.
|
||||
All runs used timeout -k 10 240 with the same scratch TMPDIR; no old tests were
|
||||
changed or run. bash -n both scripts and git diff --check also passed. No source
|
||||
changes followed this green run. Sage's full landing gate is still separate.
|
||||
|
||||
Scope in the final delta: classify all changed present blobs using numstat OR
|
||||
first-8000-byte NUL; fail closed on queue unconfirmed-tail notes; regression cases
|
||||
and requested sixth mutant; TOOLS entry and this plain-text packet. B1's brief
|
||||
amendment is Sage's 9042754c4; this branch does not edit the brief or queue files.
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
NO_BINARY
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY ee394f31d1e52751716e2413049f41b2f3072e65..76acc948149e718091fcd3f3807257e752a6616e
|
||||
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:100:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
BINARY_REVIEWED 1
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY c1a8a1e9b8c3988874a8f7a35afab7c06aea94a5..325cd3671a7bf70b9a3aee60f4446bc93594a12a
|
||||
|
||||
|
||||
|
||||
0 !== 2
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:121:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 2,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,27 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: LOG_OK
|
||||
FF_OK
|
||||
NO_BINARY
|
||||
SECRETS_CLEAN
|
||||
NO_ATTRIBUTION
|
||||
PUSH_READY 896bdf0ef56596c67d2dc427275743c46026e832..ad9f9c86112fadafef4d4854f46bd9994fe2fe5d
|
||||
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
at Object.check (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:44:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:130:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 0,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,21 @@
|
||||
node:internal/modules/run_main:107
|
||||
triggerUncaughtException(
|
||||
^
|
||||
|
||||
AssertionError [ERR_ASSERTION]: queue: candidate manifest path must be a repo-relative path: "space tab\tasset.bin"
|
||||
|
||||
|
||||
2 !== 1
|
||||
|
||||
at Object.round (file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:61:12)
|
||||
at file:///home/jwoltje/.t3/worktrees/mosaic-stack/bradford-row327/[eval1]:116:7
|
||||
at process.processTicksAndRejections (node:internal/process/task_queues:104:5) {
|
||||
generatedMessage: false,
|
||||
code: 'ERR_ASSERTION',
|
||||
actual: 2,
|
||||
expected: 1,
|
||||
operator: 'strictEqual',
|
||||
diff: 'simple'
|
||||
}
|
||||
|
||||
Node.js v26.8.1
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 22 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 24 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,6 @@
|
||||
PASS push-check 29 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
@@ -0,0 +1,7 @@
|
||||
PASS push-check 38 checks
|
||||
KILLED skip-hash
|
||||
KILLED accept-changes
|
||||
KILLED earlier-round
|
||||
KILLED working-tree
|
||||
KILLED no-row
|
||||
KILLED skip-nul-scan
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/YPrPwR
|
||||
@@ -0,0 +1,501 @@
|
||||
# Row 288 (#1793): C2-02 agent writes, notices, revert and Console saves
|
||||
|
||||
Owner: Bubba, Codex gpt-6.1-sol, thread 3d6672b5-5544-4b95-9e09-e79574f1aa14.
|
||||
Reviewer: Webby. Gate and landing: Sage. Append-only build record.
|
||||
|
||||
## 2026-10-23 start and implementation plan
|
||||
|
||||
Base 45dca69f6 on bubba/row288. Direct mandate mos-1499 (Q245), confirmed sage-3613.
|
||||
The canonical `scripts/mosaic queue next bubba` returned `nothing`; Sage owns the owner transition.
|
||||
The initial worktree invocation refused linked-worktree use; retried in canonical checkout.
|
||||
|
||||
Spec: docs/plans/2026-10-20_case2-rows.md, C2-02; agents/gosalyn/work/case2/DESIGN.md ruling after r11.
|
||||
Handoffs: Honker queue-283 BUILD.md Q4 (missing/non-100644 delete refuses); Morgana
|
||||
queue-225 BUILD.md A2 at 66f7becf2 (strict revert arguments/result), confirmed by Fethry fethry-0005.
|
||||
`project` is the business.projects key, never a chat UUID.
|
||||
|
||||
Dependencies merged with their commits intact, no amend or force-push:
|
||||
- 283 origin/honker/row283-build 88ec5e8e4 (new E4 head to follow).
|
||||
- 285 origin/scrooge/row285-r2 53db6b7ca.
|
||||
- 286 origin/ludwig/row286-r2 573fa0be0.
|
||||
- 284: no named remote branch yet. Tool changes come last.
|
||||
All merge commits are marked Untested. Nothing has run under Node. Sage's latest instruction
|
||||
sage-3613 reserves **all Node and test runs** for CLEAR; this supersedes the initial targeted-test
|
||||
permission. Build untested now as instructed, then run RED/GREEN checks/mutants on CLEAR.
|
||||
|
||||
Architecture: one host-only plumbing writer under the existing library lock; broker authorizes and
|
||||
selects credentials, then inserts the fixed notice directly. Human save/revert use editor +
|
||||
library-human independently of seat lifecycle. No worktree, deferred push, role expansion or UI.
|
||||
|
||||
### Tasks and acceptance
|
||||
|
||||
- [ ] Plumbing: new library/src/write.mjs, mirror state publication and package exports; new
|
||||
library/tests/write.test.mjs. One-parent write/delete, byte-exact content, seat identity/trailer,
|
||||
stale-base, nonregular/missing deletes, retry once on an unrelated remote change, push failure
|
||||
without local ref movement, human editor and revert reachability/single-path checks.
|
||||
- [ ] Broker + runtime: library.doc.write/delete, library.file.save, library.revert; strict keys,
|
||||
creative + library.write + live unheld project grant; direct exact notice; human-only save/revert.
|
||||
New bus/tests/library-write.test.mjs covers authorization, unchanged refs, A2 contract and socket.
|
||||
- [ ] Transport: only human library.file.save joins the existing large-save exception. New tests
|
||||
prove >64 KiB save accepted, agent writes retain 64 KiB bound, malformed/oversize saves refuse.
|
||||
- [ ] Tools after 284: library_doc_write/delete in harness tools; exact eight/ten-name snapshots
|
||||
in a new harness test; cli dispatch wiring.
|
||||
- [ ] Verify on CLEAR: new tests, library/bus/harness suites and all scripts/test-*.sh on Sage's
|
||||
assigned slot. Mutants remove supporting guard and force push; both must fail. Fixture-token
|
||||
search over captured output. No gate, landing or queue move claimed before Sage's acceptance.
|
||||
|
||||
Pre-flight interfaces: broker consumes library writer {project,path,commit}; revert adds reverted;
|
||||
writer consumes C2-03b push {pushed} or {raced,tip} and supportingPath(mapping,universe,path,tree).
|
||||
State publication must add optional lastPush while preserving old state readability. Refusals must
|
||||
restore fetched remote-tracking refs as well as preserve served. Runtime must bind credential file
|
||||
references itself; no file, identity, message or credential is supplied by the agent.
|
||||
|
||||
Necessary file-scope additions: packages/bus/src/runtime.mjs (actual adapter injection),
|
||||
packages/library/src/index.mjs (exports), and CLI's existing console adapter if saves require it.
|
||||
Reported to Sage in bubba-0002. Existing tests will not be edited without Mos's OK via Sage.
|
||||
|
||||
Review focus: remote tip races, nonregular entries and folded paths, unsafe human credential before
|
||||
git, revert after revoked/fired writer, and large-request exception never extending agent writes.
|
||||
|
||||
### Existing-test changes
|
||||
|
||||
None authored by Bubba yet. Dependency test changes remain their owners' original commits.
|
||||
|
||||
## 2026-10-23 first static build (not a gate result)
|
||||
|
||||
283 E4 merged intact at 76d651dba. Honker next reports e67c27b32 (test environment only), to merge
|
||||
before push. Della reports row 284 has not been built/pushed; row224's 23816cf28 is not a 284 head.
|
||||
No speculative 284 pin. Typed tools and served-blob lookup integration remain pending 284.
|
||||
|
||||
Implemented (unrun): bare plumbing writer, one-parent commit and fixed trailer, exact-content blobs,
|
||||
base comparison, supporting path guard and delete regular-blob check, one remote-race retry,
|
||||
ref restoration on refusal, immediate served publication/lastPush; human save and reachable one-path
|
||||
business-trailer revert; broker grants/identity/notice path; runtime adapter wiring; large-save socket
|
||||
exception. New tests: library/tests/write.test.mjs and bus/tests/library-write.test.mjs. No old test edits.
|
||||
|
||||
### Approved scope additions, sage-3628
|
||||
|
||||
Every hunk outside the brief's owned list:
|
||||
- `packages/bus/src/runtime.mjs`: `humanWriteOptions` checks editor before choosing the human slot;
|
||||
three library adapter entries bind dataRoot, command and the host-only seat store reference. These
|
||||
are needed to make actual bus calls reach the new writer without accepting agent-supplied files.
|
||||
- `packages/library/src/index.mjs`: export writeLibraryDoc/saveLibraryFile/revertLibraryCommit so
|
||||
runtime's existing library module adapter can call them.
|
||||
- `packages/library/src/sync.mjs`: shared write guard with opaque token compared by identity;
|
||||
push's race fetch recognizes only that owner and does not clear its guard; ordinary sync and a
|
||||
forged token still refuse library-sync-busy. Narrow publishLibraryWrite validates ids, reads the
|
||||
locked state, rebuilds the index via readLibrary, moves served/tracking and writes lastPush. The
|
||||
raw writeState remains private and is not exported through index.mjs.
|
||||
|
||||
Ludwig ludwig-0064 reviewed the intended interface and requested the opaque token (implemented),
|
||||
narrow publication (implemented), whole library + bus library-credential checks and a token mutant
|
||||
(planned). His 573fa0be0 remains current and unrun. 288's additions are separate commits, not folded
|
||||
into 286. Tracking restores only if the whole write refuses, not between the first race and retry.
|
||||
|
||||
Known tradeoff, accepted by Sage sage-3628 for MVP: the brief holds the flock through network Git;
|
||||
readers can hit the existing 5-second library-sync-busy while it runs. Structural supportingPath
|
||||
preflight is pure and precedes Git; served/fetched listTree checks repeat it with the real tree before
|
||||
any remote write. A tree-dependent check necessarily reads the tree first (Honker honker-0184 item2).
|
||||
|
||||
### Mutants for CLEAR
|
||||
|
||||
- Remove the `pathOf` calls for agent operations: the M12 broker/bare-ref tests must fail on a
|
||||
story/unsupported path while checking remote, tracking and served refs.
|
||||
- Prefix the push refspec in syncCommand with `+`: write.test moved-target race must fail, because
|
||||
its command seam preserves production syncCommand's refspec (only remote URL/protocol are fixture).
|
||||
- Replace `writers.get(mirror) === writeToken` with `true`: write.test forged-token case must fail.
|
||||
|
||||
No Node, test, build or mutant has run. `git diff --check` is clean. Counts are not claimed.
|
||||
|
||||
### Console dispatch integration
|
||||
|
||||
The existing cli delegates its transport wiring to console-bus.mjs, so the save dispatch needs that
|
||||
file too: one null `librarySave` option and one `--send` assignment to library.file.save. cli.mjs
|
||||
threads that option into startServer; row C2-11b owns the actual route/page that consumes it. New
|
||||
webui/tests/library-write-options.test.mjs covers --send and the user transport boundary. 225 owns
|
||||
libraryRevert dispatch; 288 adds only librarySave to avoid overlapping that ownership. Additional
|
||||
scope reported to Sage and Fethry. No changes to an existing test.
|
||||
|
||||
## 2026-10-23 second static pass and dependency review
|
||||
|
||||
First push: c867cada9 on origin/bubba/row288, reported bubba-0005 to Sage/Webby/Mos and
|
||||
bubba-0006 to Fethry/Ludwig. No PR created and no review/gate requested as complete.
|
||||
|
||||
Ludwig ludwig-0065 checked the exact sync diff against 286 without running anything. Token identity,
|
||||
ordinary-sync exclusion, 286 R1 preservation, guard key and end-of-write tracking restoration fit.
|
||||
F1: state publication could fail after served moved, leaving old state/new served. Root cause is
|
||||
publication order without rollback, compared against sync's existing rollback. Added an unrun
|
||||
filesystem rename-failure regression, then changed the narrow helper: on failure it validates the
|
||||
state under the same lock, CAS-restoring served if state has not published the new commit. If rename
|
||||
succeeded but directory fsync failed and the state validates against new served, it keeps that pair.
|
||||
All failure cases answer outcome-unknown; tracking remains the commit already pushed remotely.
|
||||
Verification is pending CLEAR, so this is a proposed fix, not a tested resolution.
|
||||
|
||||
Added the actual broker-to-bare tests for each M12 path refusal (both agent verbs), unchanged remote
|
||||
and all mirror refs, exact write/delete notices, and human revert after fixture grant removal/hold.
|
||||
The bare fixture moved to new library/tests/write-fixture.mjs so broker tests reuse real plumbing.
|
||||
Added the raw socket proof-nested-save-name case to pin the parsed-verb large-request check.
|
||||
Missing editor/slot tests now make the mirror metadata invalid first: reaching Git would change the
|
||||
refusal, so the tests check the pre-Git gate rather than merely count remote commands.
|
||||
|
||||
Additional required doc hunk: packages/library/README.md appends the four verb contracts,
|
||||
lastPush shape, exact notice, lock tradeoff and publication failure behavior. No existing test from
|
||||
the dependency/base has changed. All new/modified tests in this pass were authored by this row.
|
||||
`git diff --check` remains clean. No Node/tests/build/mutants run; 284 and CLEAR remain pending.
|
||||
|
||||
## 2026-10-23 early review follow-up (Webby E1-E6; Ludwig F2)
|
||||
|
||||
Sage sage-3652 approves console-bus.mjs wiring (null option + --send dispatch), confirms editor.user
|
||||
as the sole human login source and reserves CLEAR for T3/T4 after T2. Ordinary sync()'s separate
|
||||
post-rename fsync gap stays out of 288 per that ruling; no change to sync()'s existing rollback.
|
||||
|
||||
Honker 283 head 46bad7ea3 merged intact: mapping editor.user is optional, and if present uses the
|
||||
existing plain Gitea-user pattern. The omission at mapping level is valid; human writes refuse it.
|
||||
|
||||
- Ludwig F2 / Webby E6: confirmed the previous runtime used the fetch bot's mapping.user wrongly.
|
||||
Runtime now passes mapping.editor.user to humanCredential, never mapping.user. Missing user gives
|
||||
library-human-missing before Git. New real-runtime cases pin both save and revert with a separate
|
||||
fetch-bot login, positive pushes under her-gitea-login, and no command for an absent editor login.
|
||||
The broker's credential.agent is s.role, not args: added an exact assertion and strict-key refusal
|
||||
cases for caller-supplied agent and credential.
|
||||
- E1: replaced the business-id RegExp interpolation with a literal startsWith(business.id + '/')
|
||||
check and ID_PATTERN on only the instance suffix. New acme.co vs acme-co trailer test.
|
||||
- E2: new broker→bare case holds the seat in the fetch command. beforePush must refuse
|
||||
library-write-no-grant with all local refs and the remote unchanged and no notice. New mutant:
|
||||
remove `options.beforePush?.();` in write.mjs; the E2 test must fail.
|
||||
- E3: new broker cases for expired rotate_by, fire.stopped without fire.done, missing role.publish
|
||||
project, grant/identity Gitea-user mismatch, and missing identity name/email, for both agent verbs.
|
||||
- E4: the exceptional publication failure currently returns outcome-unknown before the broker has
|
||||
a successful result to put in a notice, so a remote agent commit can exist without a Console
|
||||
notice. There is no durable notice outbox/retry in this row. The trailer commit remains human
|
||||
revertible by id after sync; this is an explicit known failure-mode gap for the manifest, not
|
||||
a claim that every failed publication emits a notice. A new real-push test breaks state decoding
|
||||
after push admission, pins outcome-unknown, old served and no notice. It also found a local error
|
||||
propagation gap: errors before publishLibraryWrite's internal try now normalize to outcome-unknown
|
||||
in the writer once push has succeeded, so the caller is never told an ordinary refused-write code.
|
||||
- E5: 284 still has no build. Tools/8-or-10 snapshot and served-blob integration remain pending.
|
||||
librarySave is intentionally only an adapter option until C2-11b supplies its route/page.
|
||||
|
||||
All tests above are newly authored by row288 and remain unrun; no changes to baseline/dependency
|
||||
tests. RED/GREEN and mutants await CLEAR. Proposed fixes are not claimed verified. The new host-only
|
||||
library write module imports the existing pure ID_PATTERN to match the broker's accepted instance ids.
|
||||
|
||||
## 2026-10-23 mos-1520 ruling: post-push notice is required
|
||||
|
||||
Correction to the E4 interpretation above: Mos rejected the known-gap treatment. The requirement
|
||||
stays: a pushed agent commit has the exact notice even if local publication then fails. This is not
|
||||
an outbox or retry. The writer now calls the broker's trusted synchronous onPushed callback as soon
|
||||
as push returns pushed:true, before publication. The callback records the exact library-write notice
|
||||
and action.allowed in the normal Console-store transaction. Publication failure still answers
|
||||
outcome-unknown. The notice's Revert can refuse library-revert-not-agent until sync makes that commit
|
||||
reachable from served; README now says that explicitly and removes the rejected gap description.
|
||||
|
||||
The row's own real-push corruption test now pins the exact notice body with the pushed id, old
|
||||
served and outcome-unknown; after restoring readable state it pins Revert's refusal before sync and
|
||||
success after sync. The successful-write adapter fixture calls onPushed too, matching runtime's
|
||||
writer contract. No existing baseline/dependency test changed (mos-1520 explicitly authorizes this
|
||||
row's test correction without mos-1272).
|
||||
|
||||
Residual Console-store failure: if notice insertion/routing/its event transaction fails, the broker
|
||||
calls a separate host log sink with {event:library-notice-store-failed,code:outcome-unknown,business,
|
||||
instance,op,commit}. It logs no args, path content, credential, raw SQL or exception output. Runtime's
|
||||
new library.log adapter writes this metadata to stderr. The caller gets outcome-unknown even if
|
||||
recording action.refused in that same broken store fails. A new real-push test uses temporary SQLite
|
||||
abort triggers on notice insertion and refusal evidence, checks remote advanced/served unchanged,
|
||||
no message, the exact external log and outcome-unknown. It does not claim a notice can be stored in
|
||||
a failed Console store. If the host log sink itself also fails, no durable log can be promised; the
|
||||
caller still receives outcome-unknown. The runtime log hunk is the required residual-failure wiring.
|
||||
|
||||
Mutant added: move `options.onPushed?.({ project: context.project, path: change.path, commit });`
|
||||
from before `await publishLibraryWrite(...)` to immediately after that await inside the same try.
|
||||
Successful operations keep their notice, but the outcome-unknown publication path drops it. The
|
||||
C2-02 E4 real-push corruption test must fail on its exact notice assertion. Run on CLEAR and restore.
|
||||
|
||||
No Node/tests/build/mutants run. Static git diff --check clean. Della's first284 head0ed4fbab9 is
|
||||
explicitly incomplete and not a finished dependency; waiting for her complete-head pin before tools.
|
||||
|
||||
Webby webby-0253 (static, cef503cb9) closes E4 per mos-1520; no tests ran. N1: a failed notice insert throws from onPushed before publication, so served stays at the prior commit until sync; the store-failure test pins this safe direction. Only E5 (284 tools/snapshot integration) remains open in this early review.
|
||||
|
||||
## 2026-10-23 complete284 merge and final tool integration (unrun)
|
||||
|
||||
Della della-0037 supplied complete untested head47db04eba85ac3ceb7e81385603f97bb6f8c1a38,
|
||||
replacing the incomplete head. Merged intact as c0ca3894c. Its22423816cf28 and2164f3fbc25a
|
||||
lineage is retained. Three conflicts were in overlapping production wiring only:
|
||||
- broker.mjs: keep Della's LIBRARY_LOOKUPS object and #requestLibraryLookup byte-for-byte, and
|
||||
keep288 writer/notice methods; LIBRARY_VERBS contains both sets and request dispatch calls lookup.
|
||||
- runtime.mjs: keep lookup adapter plus288's metadata log and write adapters.
|
||||
- library/index.mjs: keep index/query exports,286's push/humanCredential exports and288's writer exports.
|
||||
No dependency test body was changed in the merge. These are overlapping consumer integrations,
|
||||
not rewrites of dependency commits. Every prerequisite still needs its own gate (mos-1351).
|
||||
|
||||
Added library_doc_write/library_doc_delete after the five lookups, only for a creative definition
|
||||
with a within-role library.write grant and library enabled. Closed schemas carry exactly
|
||||
{universe,path,base,content} and {universe,path,base}; base is string-or-null with 40-lowercase-hex
|
||||
pattern. No project, business, author, credential, commit or message. tools.action is library.write.
|
||||
New harness/tests/library-write-tools.test.mjs pins per-role eight/ten names, both schema invariants,
|
||||
no repo/commit/business/accept, exact required/verb/action, nullable base, and missing library/grant
|
||||
or noncreative exclusion. This satisfies sage-3678 and mos-1523's replacement coverage condition.
|
||||
|
||||
Publication's narrow helper now calls indexFor for the new served commit instead of only readLibrary,
|
||||
so the284 lookup index is rebuilt before publication. New broker integration uses library.get's
|
||||
served blob as write/delete base, independently checks served:path, reads the new text/blob immediately,
|
||||
preserves default-canon null, then sees null after delete. No change to284's query behavior.
|
||||
|
||||
### Authorized baseline-test migration, own commit (mos-1523 via sage-3677)
|
||||
|
||||
File: packages/harness/tests/library-tools.test.mjs. Numstat: +4/-4, exactly.
|
||||
The noncreative LOOKUPS assertion at :33 is unchanged. Every existing lookup schema assertion stays.
|
||||
The four old/new lines are:
|
||||
|
||||
```diff
|
||||
- ? ['web_search', 'web_fetch'] : []), ...LOOKUPS];
|
||||
+ ? ['web_search', 'web_fetch'] : []), ...LOOKUPS, 'library_doc_write', 'library_doc_delete'];
|
||||
-test('M3: per-role snapshots contain six names, or eight with the C2-08 web grant', t => {
|
||||
+test('M3: per-role snapshots contain eight names, or ten with the C2-08 web grant', t => {
|
||||
- for (const [i, tool] of tools.filter(t => t.name.startsWith('library_')).entries()) {
|
||||
+ for (const [i, tool] of tools.filter(t => LOOKUPS.includes(t.name)).entries()) {
|
||||
- assert.deepEqual(tools.map(t => t.name), ['send_message', ...LOOKUPS]);
|
||||
+ assert.deepEqual(tools.map(t => t.name), ['send_message', ...LOOKUPS, 'library_doc_write', 'library_doc_delete']);
|
||||
```
|
||||
|
||||
Additional schema mutant (mos-1523): add `commit: str("caller commit")` to writeBase in tools.mjs,
|
||||
thereby adding it to either/both write schemas. The new-file schema test must fail both its exact
|
||||
property set and forbidden-property assertions. Run on CLEAR and restore. No further assertion
|
||||
change in library-tools.test.mjs is authorized or made.
|
||||
|
||||
All code/tests/mutants remain unrun. No Node, build or syntax check before Sage's named CLEAR.
|
||||
Static diff --check is clean. Scope additions stay listed above, now including indexFor import and
|
||||
call in the previously approved narrow publication helper. E5 implementation is present; review and
|
||||
acceptance are pending evidence, not claimed complete.
|
||||
|
||||
## 2026-10-23 testing and landing boundary (sage-3682)
|
||||
|
||||
Latest complete dependency2845d587a552 (test/docs only over47db04eba) merged intact as f8f79ea2f.
|
||||
Own tool implementation cd2f50dae and separate mos-1523 migration29455c0c5 are pushed; Webby reads
|
||||
E5 and Dewey checks the migration. Static manifest-r1 covered21 own paths at f8f79ea2f.
|
||||
|
||||
Sage reserves first focused runs/RED-GREEN/mutants for T7, provisionally about22:25Z, unless he
|
||||
explicitly frees an earlier lane. No Node before his CLEAR. This is a schedule, not CLEAR. Full
|
||||
library/bus/harness and shell gates still need their own authorized slot; no gate result is claimed.
|
||||
|
||||
Before the gate, incorporate landed refactor after283/224/284 land while preserving every
|
||||
prerequisite. Under the standing add-commits/no-force-push rule, update this published branch by merge
|
||||
rather than rewriting its pushed history. 288 lands last in the chain; no landing is authorized here.
|
||||
|
||||
## 2026-10-23 E5 static closure and N2 wording
|
||||
|
||||
Dewey dewey-0948: the mos-1523 migration at29455c0c5 is static CLEAN, exactly+4/-4, with the
|
||||
noncreative assertion unchanged and new-file schema coverage meeting every condition. Webby
|
||||
webby-0263: E5 closed on29455c0c5/cd2f50dae (f8f79ea2f;98ca25ab1 only BUILD.md), nothing blocking.
|
||||
Both ran nothing; Webby did not read the scratch manifest, so no manifest verification is implied.
|
||||
|
||||
Webby N2: delete inherited the write base description "or null to create". Delete now overrides only
|
||||
that description: "The existing file's blob from library_get; a missing file cannot be deleted".
|
||||
The reviewed nullable-base schema/required keys/verbs remain unchanged. The row's new schema test
|
||||
pins create wording only on write and existing-file wording without create on delete. No further
|
||||
assertion change in the baseline library-tools.test.mjs. No Node/tests run; still await Sage CLEAR.
|
||||
|
||||
## 2026-10-23 dependency283 follow-up (honker-0195)
|
||||
|
||||
Merged origin/honker/row283-build b2a1f4092 intact, fast-forward lineage from46bad7ea3. It changes
|
||||
supporting.test's helper and Honker's BUILD receipts only; no production source changed. Honker
|
||||
reports library98/98, business231/231 and14/14 mutants killed on that dependency head. Those are
|
||||
his dependency receipts, not verification of288's combined branch. No288 Node/tests run; Sage's
|
||||
CLEAR is still required. The dependency's own gate/landing remains Sage's responsibility.
|
||||
|
||||
## 2026-10-23 new candidate after283 landing (sage-3727, honker-0200)
|
||||
|
||||
Created bubba/row288-r2 from the preserved published bubba/row2887c53adf10, then rebased with
|
||||
--rebase-merges --no-update-refs onto93694c5185d0a7f989d2fe78fb620e44599b744e. This supersedes
|
||||
the earlier merge-only refresh plan for this candidate: Sage explicitly requested a fresh branch,
|
||||
not a force-push. Both local and remote bubba/row288 remain7c53adf10, unchanged.
|
||||
|
||||
Git skipped12 duplicate283 commits already replayed upstream. Range-diff of
|
||||
45dca69f6..bubba/row288 against93694c518..bubba/row288-r2 (before this receipt) has35 equal
|
||||
commits,12 dropped,0 modified,0 added. Full output: scratch/bubba-row288/rebase-r2-range-diff.txt
|
||||
under /mnt/storage. The other prerequisite commits retain their patches; row216/224 identities are
|
||||
unchanged where Git could retain them. This is not new verification of any prerequisite.
|
||||
|
||||
Replayed merges had the same launcher-footer and broker/runtime/index conflicts as before. Reused
|
||||
the exact previously reviewed combined file bytes, keeping both launcher test bodies and all lookup
|
||||
and writer paths. Static comparison before this receipt: all21 own manifest paths byte-identical
|
||||
to7c53adf10; all16 other changed paths exactly match93694c518 upstream. These include newly landed
|
||||
226 and coordination/docs changes already on that base, not new288 edits. No baseline assertion or
|
||||
production change was introduced by conflict resolution.
|
||||
|
||||
Sage's base93694c518 is an ancestor of the candidate; old283 b2a1f4092 is not. Static diff --check
|
||||
clean. No Node, test, syntax, build, mutant or gate run. Named CLEAR/T7 still pending;288 lands last.
|
||||
|
||||
## 2026-10-24 static preflight before landed284 base (sage-4282)
|
||||
|
||||
No Node, npm, test, syntax, mutant, queue command or gate ran. Still on bubba/row288-r2,
|
||||
b44152ac6 plus this static follow-up; await Sage's landed284 base before a fresh candidate branch.
|
||||
Do not treat the earlier T7 estimate as CLEAR. Webby remains reviewer.
|
||||
|
||||
### Updated C2-02 brief and contract names (webby-0282 N1)
|
||||
|
||||
Read C2-02 on origin/refactor 95d4991d20a4ef291c824d37c886eaeaa9be7062; current brief blob 85e6fe2ecfc53ed615b7b61aade88ae0cbb222ef
|
||||
(the new ruling is identified by Sage as5e8a720b). Statically checked both the candidate and current
|
||||
refactor versions of all six creative contracts: roles/companion.md, research.md, ideas.md,
|
||||
proofreader.md, fact-checker.md and continuity.md. Every one names library_doc_write and
|
||||
library_doc_delete, exactly the two add() names in candidate harness/src/tools.mjs. No role contract
|
||||
change is needed or made. Exact-name evidence is tool-contract-audit.json in the scratch dir below.
|
||||
|
||||
### mos-1584 fixture audit
|
||||
|
||||
The new row288 harness tests reach businessDoc through resolvedFor, but their callbacks add only a
|
||||
creative role; they add no library business project. library:true is the typedTools option, not a
|
||||
businessDoc project. The broker/runtime/bare-library tests build minimal business objects directly,
|
||||
not businessDoc. The migrated baseline harness test likewise adds no library business project.
|
||||
There is therefore no new row288 businessDoc-with-library fixture requiring a chief-reference edit.
|
||||
The current and future landed-base imported fixtures must be rechecked after the pending rebase;
|
||||
any validating businessDoc fixture that adds a library project must retain/provide chief gitea.
|
||||
|
||||
Shortened only two row288-authored fixture credential values: write-fixture.mjs uses fx288-write,
|
||||
and the runtime test's two slots use fx288-human. Both are11 characters, below24. This corrects the
|
||||
25-character runtime value and avoids an edge at the older23-character write value. No assertion
|
||||
changed, no baseline test edit and no credential file was read. No live credential action occurred.
|
||||
|
||||
### mos-1612 whole-file run-list preparation (not run authorization)
|
||||
|
||||
Static lexer traversed real import/re-export/require and new-URL module-entry edges, skipping
|
||||
comments/quoted fixture code; reverse closures carry a chain witness for every selected test.
|
||||
Used the union of this older candidate and the current refactor source snapshots so newer importers
|
||||
are visible without prematurely rebasing. It selected270 whole test files. Required whole library,
|
||||
bus and harness suites add17 distinct files, making a proposed union of287 (not a narrow grep list):
|
||||
bus115, business2, cli58, harness16, library13, plugins1, processing-control1, seat5, tasks9, webui67.
|
||||
The brief also names all12 scripts/test-*.sh runners. No file/runner was executed.
|
||||
|
||||
packages/cli/tests/case1-accept.test.mjs is explicitly excluded under mos-1592/1612. The11
|
||||
nonliteral-import files have a manual expression audit; all already occur in the import-selected
|
||||
whole-file set. Generated programs and runtime plugin discovery are recorded static limitations,
|
||||
not asserted fully resolved by the lexer. Whole suites and the named script runners retain their
|
||||
brief-required coverage. Regenerate after landed284 rebase; report exact final sha/list before CLEAR.
|
||||
Each approved gate later needs own root/webui npm ci, required editor build, short scratch TMPDIR,
|
||||
whole files and gate skip receipts under the then-current rules. These are plans, not past evidence.
|
||||
|
||||
Artifacts: /mnt/storage/scratch/bubba-row288/static-2026-10-24/
|
||||
- import-run-list.py SHA256 ec18031c87bf6f96b3e794e2e56747bc5e1fe37580de7ce9444c60cd5f18ddc0
|
||||
- whole-files.txt SHA256 b2d6c11349268c347e51a64fe6bf9e7c4d560238a8fc5b5e10f600f1e6e8a39e
|
||||
- import-witnesses.json SHA256 01702657d34c4f2c0635f38741d0a5b57cfdda63d5e96897f188d03971afd5d9
|
||||
- dynamic-import-audit.txt SHA256 42b8721fde783c618e1347f2609ad6e4ae3144f563272f0bbbeb45c34f751018
|
||||
- brief-required-whole-files.txt SHA256 254828414cd9b1b0a785df5c23b7f2b9ea7564d1f85e648899801e46194d135f
|
||||
- proposed-whole-files.txt SHA256 bee666dce2c3f2d0bafe7e963fb443ad356b6ae8719ac3cb8ee413a329578035
|
||||
- brief-script-runners.txt SHA256 02cd25af486c163189977106e055575145bffba688c7836e2a508f5ec91e76d4
|
||||
- tool-contract-audit.json SHA256 bf07865d796b8b0aed85d84c015430ea03468c5331bcaae9eb80efafe1a182be
|
||||
- fixture-audit.json SHA256 436a69a6b8548d8426390e867ed4b0f83693a3116d825c26c6f8a3e788f477d6
|
||||
|
||||
## 2026-10-25 landed-base transplant (sage-4338), UNTESTED
|
||||
|
||||
Named base: 78b69e1e68b2b8a9dc4c02564381a0792c0c7549, including landed284 ce0b6ed41.
|
||||
New branch bubba/row288-r3-landed; published r2 e7c31a90d is untouched.
|
||||
The initial --rebase-merges replay tried to reapply already-landed285 and conflicted;
|
||||
aborted without resolving those conflicts. Transplanted only the twelve Bubba nonmerge
|
||||
commits, in order, onto the named base using cherry-pick. No dependency commits replayed.
|
||||
|
||||
Conflict resolutions (no test conflicts, no assertion changes):
|
||||
- BUILD-LOG.md and docs/SESSIONS.md: preserve the entire upstream side, append Bubba entries.
|
||||
- broker.mjs: retain landed LIBRARY_LOOKUPS and lookup dispatch, add writer verbs/methods;
|
||||
retain the complete landed library.status replyLimits branch after writer/save/revert dispatch.
|
||||
- server.mjs: retain landed refusal envelope including reason, combine project/library save detection.
|
||||
- library/index.mjs: retain every landed export, append the writer exports.
|
||||
- webui cli.mjs and console-bus.mjs: preserve landed libraryRevert and add librarySave alongside it.
|
||||
- runtime.mjs (notice follow-up): retain landed lookup adapter, add metadata-only log sink.
|
||||
All other changes merged automatically. No business role/vocabulary file or dependency packet changed.
|
||||
Baseline test migration remains packages/harness/tests/library-tools.test.mjs +4/-4 (mos-1523).
|
||||
Only additional own-test edit removes a trailing blank EOF line in write-fixture.mjs.
|
||||
|
||||
Line-reference recheck: the sole explicit source-line citation in this append-only packet,
|
||||
noncreative LOOKUPS :33, is still exactly line33 of library-tools.test.mjs and unchanged.
|
||||
Historical fired-chief path4308 described an older broker; current fire.stopped/fire.done are
|
||||
broker.mjs5126/5147 (firing detection863-865). Those historical receipts remain historical.
|
||||
Old head/brief identifiers and T7 times above are historical, not the present base or CLEAR.
|
||||
|
||||
Final import-list audit uses candidate + exact named-base import graphs, eleven changed source
|
||||
modules as roots, and all touched tests; no text grep selects a test. 272 whole files selected,
|
||||
plus17 brief-required library/bus/harness files =289 files. Package counts: bus116, business2,
|
||||
cli59, harness16, library13, plugins1, processing-control1, seat5, tasks9, webui67.
|
||||
All12 current scripts/test-*.sh runners retained. case1-accept.test.mjs excluded explicitly.
|
||||
The eleven nonliteral import expression sites were rechecked; whole parent tests already selected.
|
||||
Generated programs/runtime plugin discovery remain documented static limitations.
|
||||
Artifacts and chain witnesses: /mnt/storage/scratch/bubba-row288/static-r3/.
|
||||
No Node, npm, test, syntax check, build, mutant or gate run. Pending Sage CLEAR.
|
||||
|
||||
## 2026-10-25 first CLEAR and delete-path RED/GREEN (sage-4396/4398)
|
||||
|
||||
Own root npm ci rc0; own webui npm ci rc0; editor build rc0. Fresh TMPDIR from mktemp
|
||||
under /mnt/storage/scratch/tmp. All Node whole-file runs nice19, timeout600 kill-after10.
|
||||
Initial own write.test.mjs rc1,10 pass/2 fail: delete and revert-to-absent hit library-git.
|
||||
Isolated bare Git confirms update-index --force-remove rc128 (requires worktree), while
|
||||
--index-info rc0. First replacement and two delimiter-investigation reruns still rc1,
|
||||
10/2: runGit's stdin argument names an input FILE, not input text. No pre-existing test
|
||||
ran or was edited. Final correction writes a private NUL-delimited removal record in the
|
||||
already-cleaned staging dir and supplies that file to update-index -z --index-info.
|
||||
Whole write.test.mjs now rc0,12/12,0 skipped/cancelled. Source-only fix in owned write.mjs.
|
||||
Logs remain /mnt/storage/scratch/bubba-row288/gate-r3/ (write-fixed through write-fixed4).
|
||||
Sage4398 authorizes this fix and requires committed new candidate + driver restart from
|
||||
first whole file. Focused green is not the complete gate; remaining acceptance pending.
|
||||
|
||||
## 2026-10-25 new broker-fixture RED/GREEN, driver restart pending
|
||||
|
||||
Candidate7932c979a driver first library file rc0,12/12; second own bus library-write rc1,
|
||||
0/14 (fixture FK and undefined dataRoot). Own fixture lacked gitea_users parent; insert
|
||||
with valid16-hex nonce, consistent with landed credential tests. First attempted fixture
|
||||
nonce was invalid and INSERT OR IGNORE hid it; corrected nonce, no product/schema changes.
|
||||
Every bare.dataRoot reference was undefined: use bare.context.dataRoot. After these fixes,
|
||||
whole file rc1,13/14, last assertion assumed lines were strings; query returns [line,text].
|
||||
Corrected this row's new assertion to exact [1,'new served text']; whole file rc0,14/14,
|
||||
0 skipped/cancelled. Intermediate logs bus-fixture-fixed{,2,3} under gate-r4 retained.
|
||||
Only owned new bus/tests/library-write.test.mjs changes (+14/-12); no pre288 test changed
|
||||
or failed. Commit this fixture correction, then restart all289 whole files from the start.
|
||||
|
||||
## 2026-10-25 creative typed-tool fixture RED/GREEN
|
||||
|
||||
Candidate4fb11e74a restart: library write12/12 rc0; bus write14/14 rc0; own harness
|
||||
library-write-tools rc1,0/3 before assertions: new creative role fixture omitted the
|
||||
Gitea credential reference required by landed285. Added the same fixture reference copy
|
||||
as landed library-tools.test.mjs (no credential file read); no assertion changes. Whole
|
||||
own harness file now3/3 rc0. Only new owned test+BUILD changed. No pre288 test failed.
|
||||
Commit and restart driver from first whole file again; gate still not claimed green.
|
||||
|
||||
## 2026-10-25 completed candidate gate (sage-4396), SLOT RETURNED
|
||||
|
||||
Tested candidate2848d832e (three additive fix commits after requested8a47c462a).
|
||||
Driver restarted from first whole file after EACH fix. Positive gate-r6: all289 whole
|
||||
files rc0,2604 pass/0 fail/0 cancelled/1 deliberate FED R7 skip. Full required suites:
|
||||
library168/168 (13 files), bus1035/1035 (116), harness180/180 (16). Other selected:
|
||||
business25/25, cli619 pass/1 skip, plugins8/8, processing-control7/7, seat69/69,
|
||||
tasks95/95, webui398/398. Case1 acceptance excluded. Final import graph regenerated on
|
||||
2848d832e in static-r6: whole-files.txt byte-identical to static-r3 selection.
|
||||
|
||||
All12 scripts rc0: test-auth,conductor,config,discord,extension-package,
|
||||
federation-acceptance,foundation,land-work,push-check,queue,release,task.
|
||||
FED R7 dedicated runner covers ordinary-suite skip. Queue wrapper28/0 and node156/156;
|
||||
canonical-root verify/render check deliberately skipped in this linked worktree.
|
||||
Root/webui own npm ci and editor build rc0 before runs. All tests nice19, sequential,
|
||||
whole-file timeout600/kill-after10; scripts timeout1800/kill-after10. Fresh mktemp TMPDIR
|
||||
/mnt/storage/scratch/tmp/ for each restarted driver; no /tmp test root.
|
||||
|
||||
Six mutants killed (each rc1), restored positive whole files each rc0:
|
||||
- M1 supporting checks removed: broker M12 refusal assertion.
|
||||
- M2 forced push refspec: unrelated-blob retry/new-parent and guard assertions.
|
||||
- M3 forged owner token: missing expected rejection in exact-token test.
|
||||
- M4 beforePush grant recheck removed: held-during-fetch expected rejection.
|
||||
- M5 notice after publication: E4 exact notice and failed-store assertions.
|
||||
- M6 caller commit in schema: exact property-set schema assertion.
|
||||
Source SHA256 restored after every mutant; git status clean afterward.
|
||||
Captured logs across all four run attempts scanned for both fixture credentials:0 hits.
|
||||
No pre288 test failed; no pre288 assertion changed beyond approved mos-1523 +4/-4.
|
||||
|
||||
Per-run rc and log hashes: gate-r6-results.tsv; counts: gate-r6-summary.json in this
|
||||
packet. Full logs, mutant diffs, drivers and JSONL receipts under
|
||||
/mnt/storage/scratch/bubba-row288/gate-r6/. Earlier RED/intermediate logs retained in r3-r5.
|
||||
Slot-returned report sent to Sage as bubba-0034; no further tests after slot return.
|
||||
|
||||
Review notes to carry into request (webby-0296): N1 baseline library-tools.test.mjs73
|
||||
still says tool names unchanged while the pin gains writer names; retained to honor the
|
||||
narrow +4/-4 permission. N2 librarySave is dispatch plumbing only; C2-11b owns the route
|
||||
that consumes it. N3 sync comment omission is cosmetic and unchanged from reviewed r2.
|
||||
Commit-count correction: r3 initial head8a47c462a had13 commits, twelve transplants plus
|
||||
receipt (BUILD +36, SESSIONS +2, fixture EOF -1). Current tested head adds three fix commits.
|
||||
Formal manifest review/gate acceptance and landing remain Sage/Webby stages, not claimed.
|
||||
@@ -0,0 +1,308 @@
|
||||
kind name rc restored_rc log_sha256
|
||||
whole-file packages/library/tests/write.test.mjs 0 e0f6a09b70316beebbf33966b35bfd05b4a12b587744dadc9239bd28de1b976c
|
||||
whole-file packages/bus/tests/library-write.test.mjs 0 e0e9e609b20ea0564a7611046026cbdfd007832e0eb13507798e958d8d106ef0
|
||||
whole-file packages/harness/tests/library-write-tools.test.mjs 0 c8a3a493d1d2abce785e94fdda5b1732e8d4a5e6eb19767af1b7e8b5e560cf3b
|
||||
whole-file packages/webui/tests/library-write-options.test.mjs 0 2491eb6a01a0b4b2127bcb6a87a5dc778d079b7d1ea445509a1dffc49dea9051
|
||||
whole-file packages/bus/tests/access-revoke.test.mjs 0 a1b317bb687e8c369440f5481b4ef309615afb5a5922fa306980d2024019e544
|
||||
whole-file packages/bus/tests/account-migration.test.mjs 0 e697b58a1bb9b37c609b441fe786e557c7f0279e7a31eea791483ce4567db318
|
||||
whole-file packages/bus/tests/address.test.mjs 0 977f755d29a8e75578d0bef48ec40b7045736014b2e53e15a03cdb6dd39696d8
|
||||
whole-file packages/bus/tests/agents.test.mjs 0 3e8116bad1ab5594e627ba3e9f5403414885959935bcd9e6f75f1af4c625d4b0
|
||||
whole-file packages/bus/tests/approval-binding.test.mjs 0 d2fbee516b57857f3a6562427d2a08bd7fdb772aacabd33ebd9d2990f01ec7fa
|
||||
whole-file packages/bus/tests/broker.test.mjs 0 400e7f0616bc7432d8cb2a9efbae3c84d5b44ef59ce7f8fbebd4c802e2a9f44e
|
||||
whole-file packages/bus/tests/business.test.mjs 0 f42502884a158ed1d190b37b3884e19d44547ececf068f91765b8ad15faffba3
|
||||
whole-file packages/bus/tests/channel-proof.test.mjs 0 3984a7e2da2a60e60d0309f719a45a3ef04bca767bac34e00a760e19e941d732
|
||||
whole-file packages/bus/tests/chief-of-staff.test.mjs 0 8dd57acf0101d4c92ada92f4c33f68061d4e2cb430179a8ab99a0b7fc9a19997
|
||||
whole-file packages/bus/tests/citation-availability.test.mjs 0 d34d84d44b5949024ce6b32708c68e10b00a84600bb03598bf9538b358750455
|
||||
whole-file packages/bus/tests/citation-guard.test.mjs 0 acab66e65fd41f1fbfd9524f80456553fc033d8bfc18a9bec7a813bd0d4552d8
|
||||
whole-file packages/bus/tests/citation-runtime.test.mjs 0 ce33310d333c7a0af7451c3a3b610f5178961b80b6b63a839909b67657fd161e
|
||||
whole-file packages/bus/tests/comment-cursors.test.mjs 0 cd4de90a070faf2bdb776a96a6ba43aa4854f6f5f1b2b7459740bd7bdc0ffb7e
|
||||
whole-file packages/bus/tests/comment-migration.test.mjs 0 773659855873805b5bd950101d950945213658fde42d8012211e742ba9ddcc09
|
||||
whole-file packages/bus/tests/console-decide.test.mjs 0 275fc0a24a03f2f27210a65e2bd21ce615ec9b6b400c4e4177ddb97a9e8e85be
|
||||
whole-file packages/bus/tests/creative.test.mjs 0 eb950d5680ff7e4e09a9c11b1c169d4a740011ea72bb75921d35571ef5373df2
|
||||
whole-file packages/bus/tests/credential-claim.test.mjs 0 b2d40e4d2a353f4154af4974d5779f7b20c652a8110da3183f95959ae2540941
|
||||
whole-file packages/bus/tests/credential-status.test.mjs 0 ed367e3d123c9629b7d3d22f6fa60f48c74e71b36982c54ad2b3e8419f515431
|
||||
whole-file packages/bus/tests/credential-store.test.mjs 0 0fd528ba27757393973cba5b21da573bc681659416962bf7d3a3dff3018414af
|
||||
whole-file packages/bus/tests/credential-verbs.test.mjs 0 154b123af420abf08c6ab8b7bc6439052e7ab65c772abb0caac5e9b9cd3608e9
|
||||
whole-file packages/bus/tests/credentials.test.mjs 0 6474b45c076f474a6881d0dddd0cd3b4cd385d52ac4c55ef1a9f8c10e0028277
|
||||
whole-file packages/bus/tests/csuite-messaging.test.mjs 0 c0229df65240be8ad014d83def48dbd64a952b701f46e40ff01efdebb5644d6a
|
||||
whole-file packages/bus/tests/daily-quota-runtime.test.mjs 0 62d686aa1852088af569cd3b921194db6873311f2ba04e55b15a93900b1615cd
|
||||
whole-file packages/bus/tests/decision-close.test.mjs 0 9599744860a4e6e330ce50b8e93c478546edce5545a9171bed068743a266ae5c
|
||||
whole-file packages/bus/tests/decision-route.test.mjs 0 2b2a9570dab83b1d454f56c1311cb41103a14bcff49e207cbb4ac5d4c73d6f0f
|
||||
whole-file packages/bus/tests/decisions.test.mjs 0 a753df7d939155adf13c7177926728b2760cf61770117dd1655f29fe2c88a26f
|
||||
whole-file packages/bus/tests/end-launch.test.mjs 0 ff7a27c35e35be424cbefa799e219ffc073c494214642b4ce56ceed6b359335e
|
||||
whole-file packages/bus/tests/fire-revokes-grants.test.mjs 0 8e6bee9421480af8a1326d65903f258d5ea0a79df6188bf18301f32a5260547e
|
||||
whole-file packages/bus/tests/gitea-grant-docker.test.mjs 0 8b639ee86d1a7d2ef267e1d36264f4ce1b5beed2c8ce084c39c0de1d699ca8a0
|
||||
whole-file packages/bus/tests/gitea-grant.test.mjs 0 8fa39b3e58cfac4ec97f02ff876fde1a40a1894c826306c0b77d45c73586f753
|
||||
whole-file packages/bus/tests/gitea-migration.test.mjs 0 689fb43a38718f5f5d00ffb3b6d998d5d454854d5e77a936b56d7c4192ee12e9
|
||||
whole-file packages/bus/tests/grant-enroll.test.mjs 0 a8be59931d37a5c787c2087d29d766d6b701bbe34f8343134148292cd29d345c
|
||||
whole-file packages/bus/tests/grant-executor.test.mjs 0 0a7f5be29b28140c9f8e7f67c6a897eb455677fba4459952a83982f2b23c87e0
|
||||
whole-file packages/bus/tests/grant-host.test.mjs 0 54c4ed722116914221e9320fd41723e32aad59284e98d8e177130b0f4c4fe6c4
|
||||
whole-file packages/bus/tests/grant-migration.test.mjs 0 7cfaa3f24d1dc070d7bdb8de76b08fabcdb6877d3367c59f7601e08f683d658b
|
||||
whole-file packages/bus/tests/grant-scope-runtime.test.mjs 0 f8bccf5324f1e10282dfb4f4fd0f63c76c8e9481ae6cc0845a1d9028e3d9633e
|
||||
whole-file packages/bus/tests/grant-scope.test.mjs 0 e30a8ced066ad214a6f70dd4a39c75bacf296032a3201e4605fa3c8df23e0159
|
||||
whole-file packages/bus/tests/hard-waits.test.mjs 0 78d92a14781286d3ca11989786a8698a2b796ad1db78769fd5b3c7653ad7639e
|
||||
whole-file packages/bus/tests/host-run.test.mjs 0 51d231611940444d2c2a37fbb7b14267c705c1b5e453b02367d0a6def214dc93
|
||||
whole-file packages/bus/tests/host-tools.test.mjs 0 3bc5b5413661edd2026bca1721055ec7dce8d115918cc10c8f334e527176d23b
|
||||
whole-file packages/bus/tests/human.test.mjs 0 5c8f3fd402ae4e130029b3203ed41b3cb45b8781417d31dec1f47ebddd516349
|
||||
whole-file packages/bus/tests/instances-verb.test.mjs 0 940ca3884930f539272a2c39ca7e1c7fa3e51b3a4ea6fdcfb21719c652152257
|
||||
whole-file packages/bus/tests/interpreter.test.mjs 0 d0c6190a428005b7750b59e665968657b242b322af05ca7bdd4cd7e815b7f4ab
|
||||
whole-file packages/bus/tests/land.test.mjs 0 e9ecd1d8011ab6789fc3254bb069e76631b68b20ad65ae844ee12e0dc3b97cb0
|
||||
whole-file packages/bus/tests/launch-notice.test.mjs 0 750a54d4c40559c7fb5414071bace8056d6bfa71dfdbec4de12c94c90299c3c5
|
||||
whole-file packages/bus/tests/launcher-released.test.mjs 0 4d59486ca3077a4b2f51141ab79df635feb6b7bca2d6c0cfe5839a6a93715de6
|
||||
whole-file packages/bus/tests/library-credential.test.mjs 0 db7e2dc4afe23f74c49795e4dcd3d28414435519029a837641cbb35bd3f4fcef
|
||||
whole-file packages/bus/tests/library-lookups.test.mjs 0 fa18b5d4c829ec35ebbf519c4346a2ac38cff7538d58ea663acbbdd7930a6015
|
||||
whole-file packages/bus/tests/library-sync.test.mjs 0 ee0ab1ad2549d3e6ae6d8123fa99d697d9be6c629e09131da82f0ab6d58a60e2
|
||||
whole-file packages/bus/tests/library.test.mjs 0 62b663034a5de8d6d1abfaf3f94327d7aae435e3350874b424eefdb28bca1bd1
|
||||
whole-file packages/bus/tests/lifecycle-revoke.test.mjs 0 c0810c743b5108773b6cfbc2d108fa09ea274c437433355277ce2b1295fbf692
|
||||
whole-file packages/bus/tests/lifecycle-verbs.test.mjs 0 926bcfb20ab58a4ecbe85b4f8feb915f72adcdc6d6aee84f814187d0ac998efd
|
||||
whole-file packages/bus/tests/limit-checks.test.mjs 0 919d745dc570172716b1e06d0ea1e8f16ae7b05dbadba77fe92dbbcc8eb4cba7
|
||||
whole-file packages/bus/tests/limit-stop.test.mjs 0 2fc1ebee4e4d4862a100ed9ba97ace1e6d3fb3c608abea63b1ff634a04d5649a
|
||||
whole-file packages/bus/tests/limits-runtime.test.mjs 0 5845176b73f98a499d92096ce0d22a3987ada664a529bdbb26230c2d00b9e65c
|
||||
whole-file packages/bus/tests/limits.test.mjs 0 333f6757d9d00eda74e7d4641af660c9a0ce3d978e6a8550139d3a461c1d5866
|
||||
whole-file packages/bus/tests/message-citation.test.mjs 0 38422c1d6faf076c750c3fccb7e927e38fe955cc28778511acccf5704df5b191
|
||||
whole-file packages/bus/tests/message-filter.test.mjs 0 2ba52728df27756ac19ba65fe0705e7cf7a2a786a3b4df77a4eb4eec8072604c
|
||||
whole-file packages/bus/tests/messages.test.mjs 0 b87de4ab04682d59a2faa7b3fc64751247454e628e9c1ebd4c07b1df2acbf11c
|
||||
whole-file packages/bus/tests/messaging.test.mjs 0 831b48a9de594e17e8fc47f16ab8c2d722e8d57068a7d39deeaf4c0fa8d136bb
|
||||
whole-file packages/bus/tests/model-proxy.test.mjs 0 99c5128733ae5bb16489171513c158ec1e34dfce1d07c60f6bccb0f84ab7afb9
|
||||
whole-file packages/bus/tests/name-migration.test.mjs 0 bb8f92a17f6a022c7ec63161cccc0bb49a26c2a591fc369375cbebfa93a277a2
|
||||
whole-file packages/bus/tests/names.test.mjs 0 0fcf60cc8c7dee3e85548c759f03e1792de92b59131bb9fe4282a3b07859366c
|
||||
whole-file packages/bus/tests/peer-transport.test.mjs 0 3cb547003e50695ec2a25c950819b304f15203302281c00758a12c9b89b60f40
|
||||
whole-file packages/bus/tests/peercred.test.mjs 0 e75c700a68ba0c1013c8f36178d6554f0321dc331b2198fd5ffc1a684df76c3e
|
||||
whole-file packages/bus/tests/plugins-verb.test.mjs 0 359fef350befd1d743bcca89a96ebd0757346fd7c0622ba364039ba827620d26
|
||||
whole-file packages/bus/tests/principal.test.mjs 0 732724e6bb2bb953e7dbbbae5c23cc0a1c33a7b7b202f5cb8b46be9363bcb392
|
||||
whole-file packages/bus/tests/process.test.mjs 0 9c5883ea2ca858131317fa9be66d2a51a5d86dbe03c515b0544f4db56b2456a1
|
||||
whole-file packages/bus/tests/processing-runtime.test.mjs 0 bb6b94ac654d069abd6e484031893e649e239d933c135b226d1cb2fbd5a94ca9
|
||||
whole-file packages/bus/tests/processing-timeout.test.mjs 0 323036aa7f32f7aa324f61595531a29f3d5ef0ae2c24aec029842f2783d6be76
|
||||
whole-file packages/bus/tests/processing-web.test.mjs 0 dbd1543498fbc8d0625990436ae668b3a382eedeecd098b929c13d2bb61939ff
|
||||
whole-file packages/bus/tests/processing.test.mjs 0 529ec93e767444970ff03acb1ba719b45033daac239256c9cbd587c39f926a71
|
||||
whole-file packages/bus/tests/project-await.test.mjs 0 e948d721ef06ce95f909880942f7e7ebd73b2f42563e1faedacc7b403b8ebedf
|
||||
whole-file packages/bus/tests/project-files.test.mjs 0 3691b04705c17d4ef7218bc15771560aca5586c00ba0fd3fdf2a80f63d8dc659
|
||||
whole-file packages/bus/tests/project-runtime.test.mjs 0 9d8d6cedeb2044f19e548dda0e32cae1e997b75a6d89072f7367b6e0ce17a44f
|
||||
whole-file packages/bus/tests/publish.test.mjs 0 87f7a382580432646ca89d1228377719cb177bfdbb4f74ad617f6a70dbfb4b33
|
||||
whole-file packages/bus/tests/reload.test.mjs 0 25aa45aca6ba24d72e9e5ad66dfc8c049375c8df121dd748dde09af52f16f853
|
||||
whole-file packages/bus/tests/replies.test.mjs 0 0f05dc2194896540a1488310107e31b7e779cc02c381c201d0c95f69ab39fc51
|
||||
whole-file packages/bus/tests/requirements.test.mjs 0 29569dc30659dbecf359117cc9a59ff37927c60f5514b8ceb8d3796c2c3e53d1
|
||||
whole-file packages/bus/tests/review.test.mjs 0 a8daea8602be9429a8044ad636a438c18eee8ec77b6fa272dce606116d01de8c
|
||||
whole-file packages/bus/tests/revoke-window.test.mjs 0 1435c543c9367204f4ae6d25c2cb97145e762cb18e78ea90a15eb1672a220353
|
||||
whole-file packages/bus/tests/room-check.test.mjs 0 bbe5ac7abfb7e1b30f6fc8f9a247cd28aca82a8783753434339b790dd9857e1c
|
||||
whole-file packages/bus/tests/rooms.test.mjs 0 506fad116ab1d9bb2520fe691adc91ca26e64faa96ced35c193cb11da4e07ccb
|
||||
whole-file packages/bus/tests/routes-verb.test.mjs 0 c09fef3cb022bf7713cde4e1c512feefe67090eff05451fda9f55272140c916e
|
||||
whole-file packages/bus/tests/schema.test.mjs 0 2a1a668dc408aaebe6f604ec5c3b8858211edc52930e1a552173cecedf806d72
|
||||
whole-file packages/bus/tests/session-clear.test.mjs 0 1fce03f1d2a41f5ba294e9d406980a1d3251bc9a5dd4a02897413d6be3d9681c
|
||||
whole-file packages/bus/tests/session-compactions.test.mjs 0 745510273a9eaaf61de4c6453c5dcc70e4a6020c0bcec69673621eefa593dab7
|
||||
whole-file packages/bus/tests/sessions.test.mjs 0 d6c0337e0981ecb9aae2e912c27145bbd831e196828b2d59029666ceae5f605c
|
||||
whole-file packages/bus/tests/single-use.test.mjs 0 6f5cf7d47716ce94eccb069f9b7e5625c3587737921231649fc74e8bfd3aad3c
|
||||
whole-file packages/bus/tests/spec-migration.test.mjs 0 ede4ca62a772261bc868f4dfcb4861c9c3670110ba2afd39cc44183398c2eafd
|
||||
whole-file packages/bus/tests/spec-review.test.mjs 0 951aa2a54cfe4bf0960dd3d2180874cb8183ff9b0aee7b7251b05df11385e1a5
|
||||
whole-file packages/bus/tests/spec-socket.test.mjs 0 65735a2557e19b3d63a3ce7198c80fb5059f1974acd0708a89f192857b43b095
|
||||
whole-file packages/bus/tests/spec.test.mjs 0 488ab443b41b06b6ae4434f5b2ee8904169aa08ab3527f3ae4c3f438e54f9909
|
||||
whole-file packages/bus/tests/staff-request.test.mjs 0 edeb4ceffae3af33e330e1fac5d74c4fb1861d52ec5ac5005689791ab74da555
|
||||
whole-file packages/bus/tests/state.test.mjs 0 3b5f916c494563fc7c18f89450e0cecbbdad8e24680b373e897253b9ea6064fe
|
||||
whole-file packages/bus/tests/store.test.mjs 0 39d0a4033b89eff9b29ea6dcf6e56696a1d20a41e0e14b4bc8efbfae7962ecf4
|
||||
whole-file packages/bus/tests/task-page.test.mjs 0 6446cfc1a43cb4206b4130f316251d3d9a820f929a6efc59dc74e7cbe1fbd258
|
||||
whole-file packages/bus/tests/task-read.test.mjs 0 37134ced43ad5ada4291ad5e3474dcf7063892443b06d54a7456cd4cddb9cf2f
|
||||
whole-file packages/bus/tests/tasks.test.mjs 0 9d91ee510a7447545c2cf93ae6779544a05e01bb70346e595b91a4800fa42d7b
|
||||
whole-file packages/bus/tests/tester-threads.test.mjs 0 ff843610e02f20c5e1ab19de27b131ae7cbc3fd87b16d85e68336b5e914ffd77
|
||||
whole-file packages/bus/tests/tester-writes.test.mjs 0 517c41e666d2c59b7ffb6ddb22898ef58b816bb26eaa47e1ce7508087b607df5
|
||||
whole-file packages/bus/tests/tester.test.mjs 0 19eff6ddb3aca05ad5c006ac15e7860311f56941055850e86b8075cd39eff0d1
|
||||
whole-file packages/bus/tests/thread-claims.test.mjs 0 ee146e984bb3ae82ad60f90c83035053ff2966ffea91015b6c3c4f93b7e019bd
|
||||
whole-file packages/bus/tests/thread-migration.test.mjs 0 1dc2ae4e920d40a6fc2b1033f43ac0a2f766bfb86f07a596a983b9c1bccf87d5
|
||||
whole-file packages/bus/tests/thread-shares.test.mjs 0 3f99a82e9e4a43fa788ebb231c5e712969809fa83b6ca66f04b8cad13f411235
|
||||
whole-file packages/bus/tests/threads.test.mjs 0 2e5ba2be69a34c71f41a819c7a5e8615fcd085f847f9aa6d16095b9c8d742552
|
||||
whole-file packages/bus/tests/transport.test.mjs 0 c9d28b9acfc0c2213838df0d960506156ef6fffec24a0cee7336324f105fac0e
|
||||
whole-file packages/bus/tests/usage-broker.test.mjs 0 26fc080c6ffcb7c64cca39a07f302b59c21d1425ca3c90120eb3d3bb751c49da
|
||||
whole-file packages/bus/tests/usage-migration.test.mjs 0 cfc65c4233aedb325293170e782ccb83fcfdd85cc4afed1e913e91785fa4b7cf
|
||||
whole-file packages/bus/tests/usage-runtime.test.mjs 0 faa5fce30cbd7002137acfca3cde68b49b74321fb27b8a190736b35601430866
|
||||
whole-file packages/bus/tests/usage.test.mjs 0 d36d21e0b3f5c9621b50e8b71ff6d8daa341f5954f3612b7cc93cb6c734215c0
|
||||
whole-file packages/bus/tests/user-principal.test.mjs 0 1b56d881de2975ec4e3bc27fa15bc495ae0600709457da579337f0c9c98651e5
|
||||
whole-file packages/bus/tests/viewer.test.mjs 0 942ba4fd96c3bb4c527eb129e69ddb5cb7660915e8458cfee47661d268db0e24
|
||||
whole-file packages/bus/tests/web.test.mjs 0 048e3ef2840934f95d7e00de6502b19342215cfe5d00d1b8ada7c1bc6e87cfa1
|
||||
whole-file packages/bus/tests/workflow-roles.test.mjs 0 1bed1351ec3c50ddce65f9b8108f93a5c4061ef5cf36f3d09706d85b13e085ed
|
||||
whole-file packages/business/tests/case1-business-file.test.mjs 0 4481abbce73eae119fbedc5edf65120fa494931913aac6f0273b04263c251cc9
|
||||
whole-file packages/business/tests/launch-settings.test.mjs 0 540f5170ddc7e79a8abd9584c4586eade3ecc1f7544489060db99552c75e4685
|
||||
whole-file packages/cli/tests/access-boot.test.mjs 0 e41e1f1949d3568f8845234d573282c18a185578389d6947140cf540d7f99dc8
|
||||
whole-file packages/cli/tests/access.test.mjs 0 9e2a813092ad4b60cd89443424eb4142f217265e52ff7b769b7f16d247d5a367
|
||||
whole-file packages/cli/tests/app.test.mjs 0 5f5244ba0061dc4ffd1565c4abd3168d7cb2e6398625b69c841a54544b9a35a7
|
||||
whole-file packages/cli/tests/boot-status.test.mjs 0 ca090577e20ea46315cb377668e309571380e2323c867a8b90d0537022e681b7
|
||||
whole-file packages/cli/tests/case1-hostcheck.test.mjs 0 403e1127da5637904e8fe1c1eed5a7865c5bd5ee1c5d0fe684837a7370c41de4
|
||||
whole-file packages/cli/tests/case2-install.test.mjs 0 df8edefe13297ced929d09f01eec5c7ecf38c355d9871368cb19f2f392ae057a
|
||||
whole-file packages/cli/tests/case2-persona-import.test.mjs 0 5dc7a93c03567ec0e85e43bcafe07109881c30b2e83b4c4eab4631a155daece0
|
||||
whole-file packages/cli/tests/case2-unit.test.mjs 0 39b349dfd3125e74b780ce28e9ec24465a6a8c2bb9e431c819864f4eff1fdb77
|
||||
whole-file packages/cli/tests/channel-cli.test.mjs 0 9fd9c30aa604f77b7a069912cb987293af36f2f138cce850f8d26946f5ce42cd
|
||||
whole-file packages/cli/tests/channel-recovery.test.mjs 0 52c6bd980cd54ef22b9e6c78260a1e389e8177526340129ac64fbafa7f2e01ab
|
||||
whole-file packages/cli/tests/cli.test.mjs 0 59327fd89e3fb8f927210df6a2c62afe4522e59f59129b1967be2a238c498f26
|
||||
whole-file packages/cli/tests/compactions-launch.test.mjs 0 c9006b3039a6616be1816f5ce85bf68ba4fb54dadf10447e52fc92f7ed57bbe5
|
||||
whole-file packages/cli/tests/config.test.mjs 0 35e39fb0551e23f5738d0c30d66bd233f2290040885c511e526f0f0468b31cad
|
||||
whole-file packages/cli/tests/credentials.test.mjs 0 2b55cde2318a034ec4152e712863ac54f07f1b4db752c6282507d7f621bde67d
|
||||
whole-file packages/cli/tests/federation-acceptance.test.mjs 0 cca971a93a5dfd20e603b45cc2158b58ea0638e8bb7a33e6e0c5e12178ffa3df
|
||||
whole-file packages/cli/tests/follow.test.mjs 0 26a3ad0dbc124aff48a5f4908e3d8b78cb871e5560c0e389de457f58aea2dfe3
|
||||
whole-file packages/cli/tests/git-socket.test.mjs 0 10c21c34a79ebd5f89f6ed9182a492e9f42f0512a68f758c0566a763a84abeb9
|
||||
whole-file packages/cli/tests/grants-scope.test.mjs 0 37967ca8e82a89a0e88ed872fa562b5c094282cc759853b6dc31c292204bef3c
|
||||
whole-file packages/cli/tests/grants.test.mjs 0 687af745932625ea1d439a8139c760f14b4a327bf9b15c5b5b1cdbc7ea6be09f
|
||||
whole-file packages/cli/tests/host.test.mjs 0 50010e97e44392f28006bbd4127146b8aa1712ff4a016ca10864923701213dce
|
||||
whole-file packages/cli/tests/hosts.test.mjs 0 d5d507c3968c45b2aa25067d6bbb1eedd69785c0aa1bb51177c63b6ad64fcb53
|
||||
whole-file packages/cli/tests/idle-stop-race.test.mjs 0 8e6171855003b0f40921863430dc89cf20f8bbf14a9ce3c115f90486f08232b5
|
||||
whole-file packages/cli/tests/instances.test.mjs 0 c6b4d59443baa4af029af76a846a8093669a7593490f21408a2c40ad027acccf
|
||||
whole-file packages/cli/tests/launch-account.test.mjs 0 6cb63446fc8dbb6217e6d925caabb37a28bcf1ea5c27cf8d515d67c7842553b8
|
||||
whole-file packages/cli/tests/launch-limit-checks.test.mjs 0 fae971d715a90d1dbbeb3c054932a02d253e0a0d036d3b0db4e0c9edcd5ad7ef
|
||||
whole-file packages/cli/tests/launch-limits.test.mjs 0 d3f4b2c57e776bf6bbcafba6dbd9c4728918b0d81fc606dcd7d2dffefdad4001
|
||||
whole-file packages/cli/tests/launch-routes.test.mjs 0 e2bec020f96238079908c03537366c64800de0913a83f3a2877606d0266548d6
|
||||
whole-file packages/cli/tests/launcher.test.mjs 0 beafda99d34a532f3a1d6f96565b7a780e03924939b6c30b01a8169cceaa792a
|
||||
whole-file packages/cli/tests/lifecycle.test.mjs 0 014a2cea6d3f2a9f21f7fc16dc68b34740b03726612851047b877f8c1194ebe0
|
||||
whole-file packages/cli/tests/limits-tokens.test.mjs 0 6fdf9e6946dfb579cde42ec500d8cb8473a9d8318f43caecee7561a5e40fdec1
|
||||
whole-file packages/cli/tests/limits.test.mjs 0 bc2f13959d087ccaf6977c4cf1294e6fcee21f968677ab169580ce79643add18
|
||||
whole-file packages/cli/tests/mark-read.test.mjs 0 64864c54ab910488d55136b88f351771489cf744ba1c21e5c479121694dd88ab
|
||||
whole-file packages/cli/tests/model-proxy.test.mjs 0 119a5d02870a4062992efba7f44ee9dfe69ecf8a7076f121aa24a8c7edf24cf0
|
||||
whole-file packages/cli/tests/names.test.mjs 0 c2160aeb0c68855f59b5d97dc3b6101b7800028df708f5f42430ae5854eb23e2
|
||||
whole-file packages/cli/tests/notifier.test.mjs 0 18e62f48de18cc4d57916a556adeb3befb13921d5d7b036ef5a7f2bfa460cdc1
|
||||
whole-file packages/cli/tests/optional-tracker.test.mjs 0 e5adddfee06b2f1cbd2ec50caf84b5acbc58d4ff4ec4c1bc539a4535a3991827
|
||||
whole-file packages/cli/tests/other-tree.test.mjs 0 2dae57af2b8d508f2792ce37191aebf0cd28ad75f7621d4ab9f8d6daa60b748f
|
||||
whole-file packages/cli/tests/processing-cli.test.mjs 0 44b2854ba03810cdda3ccf0c6de883f953089d532bfcdc8f4bdd3faffac80fe9
|
||||
whole-file packages/cli/tests/project-name-repo.test.mjs 0 0468b9ecde6189d1398eef2e7e8043e870aa867a8a9d22b20b2ded26dc1543b5
|
||||
whole-file packages/cli/tests/project.test.mjs 0 79e648106151ca220d9535b16c416dfdcffffaed41e3c211e4325c151f0775f7
|
||||
whole-file packages/cli/tests/publish-socket.test.mjs 0 59a02b1fcc284407b06d0d2df8e6e1e5323059daa2e47c690f30a718d1e7c682
|
||||
whole-file packages/cli/tests/reply-limits.test.mjs 0 554a353d61891c3cbe8da01062025dcb0756ba4f4e7ab3fb8d7b56ceccf64437
|
||||
whole-file packages/cli/tests/revoke-window.test.mjs 0 743fdb0135e507dea5b968265907e5ac9228284b130feb0057d91e70ad561c02
|
||||
whole-file packages/cli/tests/session-clear.test.mjs 0 5abbd894dee9cfcb3464a40e5045f9062402d5ffe567972113715cc9e24c6ce3
|
||||
whole-file packages/cli/tests/session-cli.test.mjs 0 c469aed70c1ae408e176189f23a849f3acf0bfc7dc3ba1132c101a931359a462
|
||||
whole-file packages/cli/tests/session-launch.test.mjs 0 cde78f9dcee9afa243692fb0493697104425b61589bd7be6c4cbdb0f4bfbd5e5
|
||||
whole-file packages/cli/tests/stack-copy.test.mjs 0 3b92b3772c060378cd2ec0c1bf7fe6662721721a11d99d83c9debe3e3aa929c2
|
||||
whole-file packages/cli/tests/stack-instances.test.mjs 0 2839e390f564a6e58cd514ce4061ec0b741ed07b4e2b755a337439737601d97e
|
||||
whole-file packages/cli/tests/tester-http.test.mjs 0 bd9c598c84dd0be3b9873176c63e418ccc004265153be68e0cbe51c40b1ff91f
|
||||
whole-file packages/cli/tests/tester-reads.test.mjs 0 50a71ffd9093c4d51d8ad07bc9edbbd76306922f290d28194d656cd78f8528c5
|
||||
whole-file packages/cli/tests/tester-threads.test.mjs 0 cd3dd0020472c269d61934ddb32d77f6dc297090d63e819288f4038fe9edf096
|
||||
whole-file packages/cli/tests/tester.test.mjs 0 437498258b4ea5c2f2bfa8fe66114106ac10944911bd40bca944f2078b34e45f
|
||||
whole-file packages/cli/tests/thread-cli.test.mjs 0 c29897119f279434bec0248c12beb5ce97f6214b8b0bec995061000f047b1600
|
||||
whole-file packages/cli/tests/thread-launch.test.mjs 0 459ef35e2b4f9cb87151577f252282a716ddbd4985f26e9e26c01b08af13a7f2
|
||||
whole-file packages/cli/tests/thread-revoke.test.mjs 0 b8a72080a9624ce4bbc1b23b8903be1b74a8a6ced35b0b60f503d92a22d1028c
|
||||
whole-file packages/cli/tests/trackers-boot.test.mjs 0 f83d72dac4eec7369d62b495745e1fdeeb4ff1ba2e1efb376c9b583da1765a1d
|
||||
whole-file packages/cli/tests/transport.test.mjs 0 e0ae6c26b5669d4b955deffe941a3c4314be12297e72d6c099de750170688d9c
|
||||
whole-file packages/cli/tests/usage.test.mjs 0 639ebccda23e0e094d62cb0e7e5c80c403b74b284ac5189fb0d92e63387c92f8
|
||||
whole-file packages/cli/tests/verbs.test.mjs 0 43eefd242a987efe42d145d7863372a2b0a397031baec12ecd4c9e0644daff12
|
||||
whole-file packages/harness/tests/bundle.test.mjs 0 75fd5a9a6fa0b46078952ce216348e39ce481f6fc00b89f85da9ff729d5ba100
|
||||
whole-file packages/harness/tests/citation-runner.test.mjs 0 933021f114882a6c58f4071446a07d49ebc9f99c062ffe1fedc1f13b799db389
|
||||
whole-file packages/harness/tests/claude-gate.test.mjs 0 f66053597c8209c5175810e33d8b878ad74eb314f4057f5b4b0b1ac625272329
|
||||
whole-file packages/harness/tests/claude-session.test.mjs 0 9c4d8ffc00efd0da75d143bca1cd33f30f3e762e20086270d941170e80c962ed
|
||||
whole-file packages/harness/tests/creative.test.mjs 0 3433184ced3427613d645807f0757896baf52d214c3dd6a4a12c3951bbdc50ce
|
||||
whole-file packages/harness/tests/gate.test.mjs 0 991670779d9cf6f733d0060c6f1a59d122ab8e99f7e0a5f7183c9e974f1b1aaf
|
||||
whole-file packages/harness/tests/git-tools.test.mjs 0 2837565ec16cd8c4d032311675a1468bc4bc756ee0696d0e57ea35ffd56eea44
|
||||
whole-file packages/harness/tests/library-tools.test.mjs 0 05a8a5d8e8c4e7b3435d4a9b3f6292816356a99f7156ded2ef7873e1c84f8de7
|
||||
whole-file packages/harness/tests/mcp-server.test.mjs 0 6ce4c6c39b8a1ed70fbeaca410781a62d69a6412333e03640296048b799a09b9
|
||||
whole-file packages/harness/tests/pi-session.test.mjs 0 570376f798b43e82bbc1972f1d50d3915e94a8e4ca00e50076ab390df9830d7d
|
||||
whole-file packages/harness/tests/raise-domain.test.mjs 0 aa6be675614d9324c3ddc01ef40347b235adbccfe6cd73081096ae9e9742d754
|
||||
whole-file packages/harness/tests/runner.test.mjs 0 d3f8c752897e359e10a8e9d507c10ef3760a5ae37999f6f143cb222c42568437
|
||||
whole-file packages/harness/tests/skills.test.mjs 0 2f34800387f4d7f8b8d5f6758cd197f77d11034011bf7f4f79f4d74c582e3f0f
|
||||
whole-file packages/harness/tests/spec-tools.test.mjs 0 29cd1f7094266963a995f636d9575337246a9868d42a48f02231a99251261f47
|
||||
whole-file packages/harness/tests/tools.test.mjs 0 f27638f1fa38fd2d15a352f6c21f7980688d48d580f5a59dab1520fd7c30b30c
|
||||
whole-file packages/library/tests/guard.test.mjs 0 6529c2b48c252eeaf9c19487507a03cf46d952e7ffb3a41e640a54590e312df0
|
||||
whole-file packages/library/tests/index-build.test.mjs 0 4747cb8c842cdc424db727cb3b0e36a6d35f4e9c5c31c1a3bf61314897c2cf6d
|
||||
whole-file packages/library/tests/links.test.mjs 0 9b89f9275f19035c5f079b6920b248466048626c634153eba2fec165f9f6388f
|
||||
whole-file packages/library/tests/mapping.test.mjs 0 9110b98f955dd71588357858b913194ccf9e04dca9aa7c4559600cbe9b9e8e71
|
||||
whole-file packages/library/tests/mirror.test.mjs 0 cc2326da9796dbbbf5b3faa121180a7f00c43816a232a96faece7b58570f1227
|
||||
whole-file packages/library/tests/query.test.mjs 0 f1209bc132a63cba9a7312cbed7e3098126e05c792356648f1d9ec497a11aa82
|
||||
whole-file packages/library/tests/reader.test.mjs 0 3e17f34697ae65524cf7908dcc9ca1b24025bbc92989b2ba05f6e75c0f839c3b
|
||||
whole-file packages/library/tests/render.test.mjs 0 5e68091a309a07e5502b9cc500c7cdfabaa9e246bb77b0c04a0dd86bb9bfcde1
|
||||
whole-file packages/library/tests/scope.test.mjs 0 f55dec854adcd311d614b66959c5655cb3419d7ae7b06fe1f648b43cdecef32e
|
||||
whole-file packages/library/tests/supporting.test.mjs 0 2f50bbe9c942360a5becf5bb984ed5aedb12628d4578ea85c6e433ad0ad73130
|
||||
whole-file packages/library/tests/survey.test.mjs 0 72108eb8a07b990b93ca62c5fa4b55f1f89f3254ca1cf59d3de8ad194dcc3a0d
|
||||
whole-file packages/library/tests/sync.test.mjs 0 a68c69492149b6e9dc7dbf24fc434ebfd3243b2db2c7654b00107b997e99ead0
|
||||
whole-file packages/plugins/tests/harness-compactions.test.mjs 0 9eb9f67c06ae17b33198fbcdb443a0c73ca9cc0cd157cae2359a0647d2db3658
|
||||
whole-file packages/processing-control/tests/task.test.mjs 0 8db6adda6b5d5f7437e9e4cdf961134493409d7227fde02c0b0a76aeb21186f0
|
||||
whole-file packages/seat/tests/compactions-budget.test.mjs 0 1849994f45bfcccfb4ce18915887c740947a98041aa7bd66590ae7a62fa7078e
|
||||
whole-file packages/seat/tests/compactions-ledger.test.mjs 0 af689c631c9d62dee11f4400112fd10df82567c1f49d9f0d423b9d19d6f860d7
|
||||
whole-file packages/seat/tests/compactions.test.mjs 0 cf5e74e1211560ca47a2c13e8002635097f486e2ca06698795bc38263d889f3c
|
||||
whole-file packages/seat/tests/sandbox.test.mjs 0 c09d89b8e1b22db25578f62cd4a1d3b9f441d652178fb675800efb31de33a577
|
||||
whole-file packages/seat/tests/session.test.mjs 0 82171646932cddfc68f0e90ca3355f9595d32c5d228c1fdb855c06cb1d9c2feb
|
||||
whole-file packages/tasks/tests/adapter.test.mjs 0 8843067c21942ae6165a7feaced2382fd9d02d0c62bd30772191393cb5d962b8
|
||||
whole-file packages/tasks/tests/comment-restart.test.mjs 0 25aa6e953cf19ed3ae368581035b9d883ed924b41d593240e2b4ab5ba39f2982
|
||||
whole-file packages/tasks/tests/fields.test.mjs 0 e4eafd6b17a46262dddc548263da993bc3a672adca1cadcc698b6d8374f11e2d
|
||||
whole-file packages/tasks/tests/processing.test.mjs 0 0b89866cc076c43c37534dba926d492d8d334d08a6886325e3d4ac6ddbc88897
|
||||
whole-file packages/tasks/tests/shapes.test.mjs 0 0b8cc660a07e048d007993d726ae5b8e1f343cb571c18ee0284c3ba0c4b41602
|
||||
whole-file packages/tasks/tests/startup.test.mjs 0 5b44d779ab4ec86922dd35ce7c78096de02c0a0f2363cc6c2a5ee07816efc2ad
|
||||
whole-file packages/tasks/tests/sync.test.mjs 0 513ce9f6e64a3fa0179f8cc9b27db671267a43cdc44ab93f38d21982dd2b9631
|
||||
whole-file packages/tasks/tests/tree.test.mjs 0 d3c8f91f59150259b3226e9306c98efbaf2aa17b5b74cb9b376a103620f8aefe
|
||||
whole-file packages/tasks/tests/verbs.test.mjs 0 47b075d01ef38a5d0228902a6f9bcfec0b78b1a958cd071e8114139af73bca53
|
||||
whole-file packages/webui/tests/agents-browser.test.mjs 0 d3ae822399f58d2c4dfd90e054811a60663a66f9d3fbe69a76aa4ce7dc7260d0
|
||||
whole-file packages/webui/tests/agents.test.mjs 0 be18c8fed41173900617d3b646fac1ce14c07c208e7f24d6567f61f55c5c4dc2
|
||||
whole-file packages/webui/tests/assistant.test.mjs 0 056e4c2a37b7b395741ed1ba33546031a6e4ca53db843bd877b93bed764e02ad
|
||||
whole-file packages/webui/tests/board-held.test.mjs 0 01a24d222092ad46c24ea94f684a018b787dfc8d26a0f7d7fda5d9df7192e695
|
||||
whole-file packages/webui/tests/browser-edge.test.mjs 0 4d10b4fcefbc64cdf12bbfbd9b47f74810b3219f70624c35490cb23d66d3c4a1
|
||||
whole-file packages/webui/tests/browser.test.mjs 0 d8c31b7cc16d93961d65959fa9653eaba906f81da3a34e19b3da7cc922f840c3
|
||||
whole-file packages/webui/tests/bus-browser.test.mjs 0 ab1538aaabfdb02c336da61675a0d1d7f367483bc500a380e7f0ece050ab8609
|
||||
whole-file packages/webui/tests/bus.test.mjs 0 fd7acdf189fef230af80c32c4c972d9bfb1564069d7c4ed649c3a49bb6636e1e
|
||||
whole-file packages/webui/tests/channel-chat.test.mjs 0 678b8e3c9152662487fee1c52c8abcae95029b0672d5bbe26a824bbdb4a7ee0b
|
||||
whole-file packages/webui/tests/chat-browser.test.mjs 0 ec29dd03ac7950dfa90e31f72ae74e2112718f1c02ce4dce8055194a328b5f5b
|
||||
whole-file packages/webui/tests/chat-instances.test.mjs 0 72c88b1eb11397bcff524af72cfe826a276b97b58e33465c6e3334e2746e7783
|
||||
whole-file packages/webui/tests/chat-replies-browser.test.mjs 0 bea9b1f9333bc913b2f01c29a792ea4b2fdbed3ebc64b42548e06f0bd75c9fc5
|
||||
whole-file packages/webui/tests/chat-sessions-access.test.mjs 0 f2de41c7d1f6e246a8a13dc33e8662932964facc5b93d8f85ed5fca760c87fd8
|
||||
whole-file packages/webui/tests/chat.test.mjs 0 4c6564d3565b01d68f7d16937aafddbef2ec3e04744fa9d1544ac0500a386ff7
|
||||
whole-file packages/webui/tests/conversation.test.mjs 0 1c3f8811256ad82d7771a06878c3e70dc3d6f2beab82366b837780a7873ff6f1
|
||||
whole-file packages/webui/tests/decide-browser.test.mjs 0 c53e1b962df99686f9739e258b2b86fe6325544ab02509833f9b1176f1303845
|
||||
whole-file packages/webui/tests/decide-sso.test.mjs 0 f96f8085015a96e11aca2d94bfb9e75318c0c0dfa9659049ec7b7e31ad7bc6de
|
||||
whole-file packages/webui/tests/decision-http.test.mjs 0 c89b7af200edb82f9986479199f359cf6a06c870f1bcf22b538cdf3b167f1258
|
||||
whole-file packages/webui/tests/discord.test.mjs 0 1c3e6d64a370adbc6c7cb24391989e9c00d97330d393943402ff5c6a99c5f9fc
|
||||
whole-file packages/webui/tests/docs-browser.test.mjs 0 f39d989ccdc561175643583b27bc19ee76fa25dec5947baa206b0c38b41c1e2a
|
||||
whole-file packages/webui/tests/editor-browser.test.mjs 0 c807f81d596b3a2e3d2ea55e560f29e181a0354ce48676c6760844855acb0dd3
|
||||
whole-file packages/webui/tests/editor.test.mjs 0 6953a85fe791e9087d14c3bf5075de2c4a651e1a502937da3226065c529ffd2b
|
||||
whole-file packages/webui/tests/granted-user.test.mjs 0 ae3baaa0d2a1ed1ad3e9625a46a8071222dfdef4c2a70ae3ba5bf159b85dec0b
|
||||
whole-file packages/webui/tests/history-return-flow.test.mjs 0 8f9ceeb41a64ec2849383a78f4997f7383c86a01eb6cf1d16747c2eb6c7448d4
|
||||
whole-file packages/webui/tests/instances-browser.test.mjs 0 33b9cd4be552f89809e75f72c54f73dbe6459a5c53401a79a4d887e5a658c442
|
||||
whole-file packages/webui/tests/instances.test.mjs 0 904abfc06358c99b0f646c3e728027cd7bba2b27c98c767c7da95016e531277c
|
||||
whole-file packages/webui/tests/library-cli.test.mjs 0 dda07bd1b0d65058723c4d5e50f94fefb1ee103c33c8f61c13841cfedfd53f41
|
||||
whole-file packages/webui/tests/library-routes.test.mjs 0 5cd1f4c6ea99cce38ce59eee085ab31f9aa8bba39cebbaf52b355c4d8fec3098
|
||||
whole-file packages/webui/tests/library-status.test.mjs 0 0b4fb5a07a3d35fb2237401b460ddd3832a2f6fa357f6fbb06b8463251b77faa
|
||||
whole-file packages/webui/tests/limits-browser.test.mjs 0 1a55050c92be5b93e447878feafe59e017b205d114413e6de000faf784df1dad
|
||||
whole-file packages/webui/tests/limits-route.test.mjs 0 b74fe734b0ccbdde716bb52bc15791f80a0b251514a6b01d6ba59164b9639123
|
||||
whole-file packages/webui/tests/messages.test.mjs 0 19bce52278091c8d37ca48c1f6f72bc400cd9a9b3038ae9f31e35444fdab05b8
|
||||
whole-file packages/webui/tests/pinned-copy.test.mjs 0 a8c99249fda05c5be773c8d2231e2dd1a3f3b7d10a40a7ec3e6ca6c6cfb4c85a
|
||||
whole-file packages/webui/tests/preview.test.mjs 0 7f7fbb11dd5915b3351b5086ec9b0f0bed6837a32a2e5902b707fcb54f1bf1c3
|
||||
whole-file packages/webui/tests/processing-browser.test.mjs 0 ed5970f1e2b1fa393c80db5e5551523e77ad0ee107dfa686a76c5d923b7e2d8f
|
||||
whole-file packages/webui/tests/processing.test.mjs 0 ac7a3a0ff51bb15c04e228186d771dd75ef515e09156cd080a8bea881e7cdd8d
|
||||
whole-file packages/webui/tests/project-file.test.mjs 0 8bf04994dec5c6d6670bbae055802759588c27b04010582732cbbf32c2921487
|
||||
whole-file packages/webui/tests/project-name-repo.test.mjs 0 ca773d7109f132bd099c43003a8269edfa96b2ba3a9e01e3694fa6bd12b9143e
|
||||
whole-file packages/webui/tests/proof-cli.test.mjs 0 5095f1ec66a3fc153467baef2291073e27aba17fdc2757e0a3cf2a03057a6547
|
||||
whole-file packages/webui/tests/proof.test.mjs 0 cdb948d261f52232c6e31e25baaf234bd0af3b6d90360a41a6142d2f34a8a797
|
||||
whole-file packages/webui/tests/reads.test.mjs 0 ef69c9c1dc9a55d526a704297aa4e2802cdca8f0e1fd70ff79efad2114a071a6
|
||||
whole-file packages/webui/tests/relaunch.test.mjs 0 e9f075560291cb446dabcaeb86c8800b5ea4ca0396c6a999ddbff88b245cefd1
|
||||
whole-file packages/webui/tests/return-flow.test.mjs 0 bf809ee139c15e9b6b8fe7f6e0f2ce00d0860aa460f145242fc732eafe8da8de
|
||||
whole-file packages/webui/tests/room-browser.test.mjs 0 23286bf46f341220f9e89cc1d229f46a579edb2eae5d688fc768f99ee343c858
|
||||
whole-file packages/webui/tests/room-http.test.mjs 0 a921e1991386cb5e184475cf47a012b3020b575968268e9f3c0b396e244a1819
|
||||
whole-file packages/webui/tests/routes-browser.test.mjs 0 df1283a6e1c5970b404b314b6b76dbf412e5318d76f296ec00164c932166b020
|
||||
whole-file packages/webui/tests/routes.test.mjs 0 055aa274fa66910a4ff1518fea49fbbbbbc5360dc16e825a460538f312a0781d
|
||||
whole-file packages/webui/tests/send-browser.test.mjs 0 da1547383522dbfd74a571b5d7625a310ae88f8adddff0c2bd33cb59df3ac137
|
||||
whole-file packages/webui/tests/send.test.mjs 0 f273e78388935b5fbc18a974f50cb85789436d51c47a4d8dccaf4af4742c2392
|
||||
whole-file packages/webui/tests/serve.test.mjs 0 1971344643d9cf6b4440d95c9ede42093235883ffab04fc4b614c1b7e7078f22
|
||||
whole-file packages/webui/tests/settings-form.test.mjs 0 80bd949d1666f2fe1f4caa051e2c34e742bab0e4adbe5584bd534d9bad8bef53
|
||||
whole-file packages/webui/tests/settings-write.test.mjs 0 7090474fff40910edb93c032feef248adc40ad21666d09c3610cf10279164f99
|
||||
whole-file packages/webui/tests/shell.test.mjs 0 844287f7797201473f1fb8d97ff2355ff3ff505006723678db78f26d3e5c2a40
|
||||
whole-file packages/webui/tests/sso-browser.test.mjs 0 1f70c36ce7d054ad435e52d63083c8fe19cd71e70c723518de5e58b69a426a0a
|
||||
whole-file packages/webui/tests/sso.test.mjs 0 6d7b3061bdc6e22744634ddc5612ff781e5c952a120a346c29eead66a3736438
|
||||
whole-file packages/webui/tests/tester-browser.test.mjs 0 425c54a84e5bf04ca91d8dc57ee83c14aff14a38159243f10f1c9114dd563967
|
||||
whole-file packages/webui/tests/tester-cli.test.mjs 0 5eb7296792f16f24d4486f39101007114b3db81c6ab53ab969e925caaffaa7d9
|
||||
whole-file packages/webui/tests/tester-listener.test.mjs 0 43927869c50a0e223d121e2dea2d10346a053a39fc8157c9fc4813b7c3b17e1f
|
||||
whole-file packages/webui/tests/tester-socket.test.mjs 0 c05962be7f87084404c53e4f7ed2caffff3d69e98e69a3c9f3c53b150cc804e5
|
||||
whole-file packages/webui/tests/thread-claims-browser.test.mjs 0 cbb2aeca0de2c64dd4c8d063d3e45140738d8f4064d38effeaec245ed7181b42
|
||||
whole-file packages/webui/tests/thread-claims.test.mjs 0 164a6c927abd819218be6386e123b234dd9955b122bace699e0a12201797791c
|
||||
whole-file packages/webui/tests/thread-sharing.test.mjs 0 ad64ab207702483aed6f16d13393e5f3c5a1ab0a0c2dcdf32717e8148a45078c
|
||||
whole-file packages/webui/tests/usage-browser.test.mjs 0 14be967dcae157cbb0a7b9ea4e0bc67337941d91a11d789baeb3d3c8353ac0e9
|
||||
whole-file packages/webui/tests/usage.test.mjs 0 4e20eee53c3eb79dc2930ca054977d06da88dba45b706a96ed94abaea6ec3e93
|
||||
whole-file packages/webui/tests/user-option-swap.test.mjs 0 bd43c257ae31cad2ca6c7a0b3ee49c6e323737d236fb7ff2a2105fd5e59b9767
|
||||
whole-file packages/webui/tests/views.test.mjs 0 4226ea02d33b9de8f2eaf9f93b0a551cbd9e6100560a8811eed90aa8de76974c
|
||||
script scripts/test-auth.sh 0 03999aab66446a4192ea9855f5cc1bd406080d0dfa5250b45b30e118556a0d5a
|
||||
script scripts/test-conductor.sh 0 79b7a689ed96792d42edd1d14796e0293e84e2e339b49476e457ad89e1c4a186
|
||||
script scripts/test-config.sh 0 2c3c87fb193e82fa17428933eb69cb2b34a589e8338f7a94aaa8256729fdf08f
|
||||
script scripts/test-discord.sh 0 5c6918b4415e8eabc5df31ac5ad696ec2afdfe3d498d69eae64f228a3807eddb
|
||||
script scripts/test-extension-package.sh 0 1f672a73e507cc57a204f7d3806ddcb211a0a8fb3ffccefc12bbc41e299f65ac
|
||||
script scripts/test-federation-acceptance.sh 0 febb0148bc1316bba3189aacf34d7c78f5f5db5d97a35aa4528dfadbec8bfbd0
|
||||
script scripts/test-foundation.sh 0 3de063333ce60ef1ca1986ecdd8ac30187a2316b7ca8e3ae4b4e6c8bd435caee
|
||||
script scripts/test-land-work.sh 0 ec90beab6246420982f872a4f45a7173e7a06f4aa263630d6ec4a4865176cde0
|
||||
script scripts/test-push-check.sh 0 0304c110dc5cf269fd8a4bea9759e5d48895a51c9d411814ce39ca924073da79
|
||||
script scripts/test-queue.sh 0 f678da9550eb6daa5268465b3a07beefd661e506ed38b8e11bf0a1b4a68cc781
|
||||
script scripts/test-release.sh 0 ad0f2a6b271275003783d3ffab5520f167ea79e26683710ce92a71600037360c
|
||||
script scripts/test-task.sh 0 ad511e52af4bc0a843eabbb3efcedd88c89468ccee43be9022e23880d7901f16
|
||||
mutant M1-supporting 1 0 10581fdab579db4d63322eee3369a1a740266e00a7dcbaa95e7651a7e0447ab8
|
||||
mutant M2-force-push 1 0 b137e8362ae3e26a090a82e8c41c3e87beeaac43183cdd6db67aba55d5e372c9
|
||||
mutant M3-forged-token 1 0 bda603c18b7b2bf468a21e139f0cff0c15c22e19c9d41cf8c50f9c3ae0bd128d
|
||||
mutant M4-grant-before-push 1 0 a642ef8e57a98c1488bb787da241292e6ed5446ca4117940fb0ddb9800c6a105
|
||||
mutant M5-notice-after-publication 1 0 5645138c2cef5d1999948744783ff3904a78e9cefd7421674386a2d0c5fdc45a
|
||||
mutant M6-commit-schema 1 0 7201f53cb976b2db1994c4e25f7f6e8b58eea323c060dbddbfa0372464adb686
|
||||
|
@@ -0,0 +1,102 @@
|
||||
{
|
||||
"total": {
|
||||
"tests": 2605,
|
||||
"pass": 2604,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 1,
|
||||
"todo": 0
|
||||
},
|
||||
"packages": {
|
||||
"library": {
|
||||
"files": 13,
|
||||
"tests": 168,
|
||||
"pass": 168,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"bus": {
|
||||
"files": 116,
|
||||
"tests": 1035,
|
||||
"pass": 1035,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"harness": {
|
||||
"files": 16,
|
||||
"tests": 180,
|
||||
"pass": 180,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"webui": {
|
||||
"files": 67,
|
||||
"tests": 398,
|
||||
"pass": 398,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"business": {
|
||||
"files": 2,
|
||||
"tests": 25,
|
||||
"pass": 25,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"cli": {
|
||||
"files": 59,
|
||||
"tests": 620,
|
||||
"pass": 619,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 1,
|
||||
"todo": 0
|
||||
},
|
||||
"plugins": {
|
||||
"files": 1,
|
||||
"tests": 8,
|
||||
"pass": 8,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"processing-control": {
|
||||
"files": 1,
|
||||
"tests": 7,
|
||||
"pass": 7,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"seat": {
|
||||
"files": 5,
|
||||
"tests": 69,
|
||||
"pass": 69,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
},
|
||||
"tasks": {
|
||||
"files": 9,
|
||||
"tests": 95,
|
||||
"pass": 95,
|
||||
"fail": 0,
|
||||
"cancelled": 0,
|
||||
"skipped": 0,
|
||||
"todo": 0
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,295 @@
|
||||
# row333 P5 implementation — Mos1961
|
||||
|
||||
Base: 09a847eda. Branch: t3/model-proxy-p5-quota-usage. Actor: Codex.
|
||||
Accepted brief: docs/plans/2026-10-24_model-proxy-rows.md P5; associated design D18–D20 with mos-1600 correction.
|
||||
|
||||
Queue next codex refused a linked worktree; no canonical mutation. Parent supplied accepted assignment/authority and coordinated runtime collector ownership. No remote issue posting or live configuration/credential reads.
|
||||
|
||||
Ruling: preserve existing schema by carrying safe modelKeyId in usage cursor metadata; proxy telemetry uses a separate source excluded from turnRecords and every quota check. Existing account limits stay compatible. A model key daily quota is keys.<12-hex-id> with reset/timeZone; unset remains no quota. Human-only protection applies to model-key limit changes and resets. No launcher/session/harness/business route edits.
|
||||
|
||||
Verification uses serial nice19 node tests with private HOME/XDG_CONFIG_HOME/TMPDIR/MOSAIC_CONFIG and unchanged test budgets. Broad/full gates reserved to parent after row334 target returns. Receipts below are actual command outputs; failures retained.
|
||||
|
||||
Parent steering receipts: runtime ownership confirmed createUsage/createLimits collector wiring/tick/close exclusively P5; Fethry avoids this area. Broker changes only usage option accepted by human plugins.set and mustStop run identity. No launch/harness/session/business-route bytes changed.
|
||||
|
||||
Exact additive old expectation update authorized by parent: kinds.test.mjs old five-entry Object.keys(KINDS) expected array retains all five in their original order and adds usage. loader.test.mjs complete loaded() expected objects retain all original members and add usage:[]. No old assertion was removed, guard relaxed, timeout increased or sleep added.
|
||||
|
||||
First RED receipts: 01-token-red (native key limit incorrectly allows); 02-contract-red (daily key quota, key schema and HTTP method absent); 04-integration-red (new collector absent; native attribution and plugins.set config missing); 08-edges-red (lookup fails open, nonhuman usage writer allowed, Console labels absent); 10-lookup-behavior-red (existing runtime lookup extracted unchanged: missing exception for missing/foreign/ambiguous ownership). 09 captured the preceding missing export, not behavior proof. 05 captured duplicate local variable syntax error, fixed before 06. Runtime fixture failures 12/13 were missing required process identity then incorrect cap extraction; corrected fixture follows actual runtime contract. 14 proves actual model-key issue/preflight, native accounting at key quota, stopping, later launch denial and broker human plugin setting path.
|
||||
|
||||
Unexpected existing named failure (reported to parent before any rerun): receipt18 was 169/170, failing `REQ-LIMIT-4 a role run at its limit stops at the end of its turn: RESULT and read land first, the claim is revoked by limit-check` at limit-stop.test.mjs:61. Cause: additional run in the broker's second mustStop argument violated its existing exact subject contract. Fix keeps that argument unchanged; run moves to a separate internal third context and is consumed by host lookup only. The old assertion remains byte-for-byte unchanged. Correction to initial parent message: the quoted name here is the exact failing test name (the first report paraphrased it).
|
||||
|
||||
Scoped receipt19: original contract corrected, 170/170 current whole-file tests GREEN. Parent then required direct native-context/no-bypass regression: receipt20 genuinely RED (`stop:false` on a supplied safe-looking modelKeyId when lookup returned null). Removed that fallback entirely and stripped caller modelKeyId/run from the public check subject. Only trusted host resolver can provide the ID; only the separate third internal context provides run. Receipt21: direct context tests, original unmodified limit-stop file and proxy telemetry whole files 15/15 GREEN. Retiring/current mapping rejects wrong business/instance/run and unknown or ambiguous retained IDs.
|
||||
|
||||
Final implementation decisions and evidence:
|
||||
|
||||
- Native source records carry only the immutable run modelKeyId. New and retained generations resolve from safe Credentials.status metadata; missing, duplicate, foreign or no-longer-retained mappings fail `proxy-key-refused`. Third mustStop context is internal and associated by the broker from its authenticated session, never an agent argument. Missing context is fail-closed (receipt23 genuine RED `stop:false`, fixed in receipt24).
|
||||
- `tokens.keys.<12hex>` accepts the daily quota shape, uses daily-quota when reset/timeZone are present, and remains unset by default. Existing named account keys and account daily quotas retain their plugins and contracts. All model-key quota/reset changes and usage module/poll changes are fenced at both organization validation points for every writer, tester included.
|
||||
- Management queue HTTP GET is fixed to loopback with count=100, original 5-second default and 8 MiB response cap, no retries/redirects. Client api_key and upstream source hash immediately to the first 12 SHA-256 hex characters. Fields are whitelisted; malformed batches are atomic. No raw values, upstream body or arbitrary error text reaches product store/log/view/audit.
|
||||
- Exactly one bus writer owns the collector, shares one management client, drains once and assigns metadata owners, including retained keys. Unknown msk IDs get reconcile receipts; disabled businesses and foreign unmanaged keys get no telemetry. Polling defaults 15 seconds, accepts integer 1..59 and serializes concurrent ticks. `@proxy/cliproxy-queue` records are append-only but excluded before every native turn record/total/limit decision. Availability and account counts are explicitly proxy-reported in the Console.
|
||||
- Named upstream-value mutant changed `accountId: sha256(event.source).slice(0,12)` to the raw `event.source`: receipt16 exit1, four tests failed. Restoration matched original client SHA256 f5f86cad661034f223a76352d877fa8d7883bfa921a7a01282347a9a03272441, receipt17 positive 15/15. Final receipt24 also runs after restoration and is GREEN.
|
||||
- Final current whole-file verification: `bash agents/codex/work/queue-333/verify-scoped.sh` → 174/174 PASS, 24 explicitly listed whole files, serial nice19, private HOME/XDG_CONFIG_HOME/TMPDIR/MOSAIC_CONFIG, original test budgets. Raw output: receipts/24-final-current-wholefiles-green.txt SHA256 3358af061c35d42b00d5ee1e001939534c5e7563d4f5418ea85431605d0b9f6d. Runner SHA256 c8a2bf4539bffe38f3198308fd60e9c1ad338841b406af160ab0739c15394290.
|
||||
- Source freeze: source-inputs.sha256 enumerates all 202 consumed repository inputs (182 modules/scripts plus 20 schema/PIN/other files), traced on final execution and rehashed unchanged after it. Manifest SHA256 b4662dcafb2aeb27a06e5dbd3b9d0b6d184e8624e344fed351ff20e3b255951b. Raw per-process trace is receipts/source-inputs.raw.jsonl. candidate-sourcepaths.txt and candidate-sourcehashes.sha256 list every changed package file for parent combination; receipts.sha256 covers every raw run and source trace. Runner/trace use no content logging.
|
||||
- Cleanup: original private mktemp root removed and absence verified; scoped runner EXIT trap removes its separate private root. All fixture servers/stores close through test cleanup. Mutant backup and temporary root marker removed. Isolated worktree retained for parent review; no production process, real proxy, account, config, credential path or provider was contacted.
|
||||
|
||||
Limits and handoff: scoped GREEN is not the full landing gate. No package/full gates, Chromium/browser gates, acceptance binary, canonical queue mutation, remote issue post, push, merge or landing was run. Full/browser/combined gates remain with the parent under 1014.Q264 after admission; fresh independent Codex review is the parent's next task. No self-approval is claimed. Base remains 09a847eda and no unlanded662/657/658 feature bytes were imported.
|
||||
|
||||
## R2 fixtures
|
||||
|
||||
Base 09a847eda, row 333 tip ddb3e961f, R2 fixture commit 12eba4b59. Author: Claude (sub-agent of the Mosaic Stack lead, T3 c5c1e8ba). Issue #1831. No product code, business document schema or test assertion changed.
|
||||
|
||||
Cause. Row 333 added packages/plugins/src/model-quota.mjs and imports it from packages/business/src/launch.mjs:3 and packages/business/src/organization.mjs:11. The cli release fixtures build smaller copies than a real stack copy: they copy packages/business/src and add only packages/plugins/src/kinds.mjs. Their business loader therefore failed with "Cannot find module .../packages/plugins/src/model-quota.mjs". Real copies are unaffected, because scripts/stack-copy.sh ships all of packages/plugins (COPY_PATHS, line 41). R1's evidence ran the 24 touched test files only (verify-scoped.sh, 174/174) and no package or cli gate, so it never built a release fixture copy and could not see this.
|
||||
|
||||
Fixture changes (tests only):
|
||||
|
||||
- packages/cli/tests/business-imports.mjs (new, 26 lines): businessImportedFiles(repo) reads the relative imports of every .mjs under packages/business/src and returns, sorted and repo-relative, the files outside that directory they reach, following those files' own imports. An import of a missing file throws. At this tip it returns packages/library/src/limits.mjs, mapping.mjs, problems.mjs, packages/plugins/src/kinds.mjs and packages/plugins/src/model-quota.mjs.
|
||||
- packages/cli/tests/stack-release-fixture.mjs:314 (copies for stack-release.test.mjs, stack-release-external.test.mjs and stack-upgrade.test.mjs): after the business, library and roles copy, copy each returned file that is not already in the copy. kinds.mjs is skipped on purpose, because the fixture has already written its KINDS_OLD or KINDS_NEW form there.
|
||||
- packages/cli/tests/stack-release.test.mjs:1994 (the RCOPIES copies): same loop.
|
||||
|
||||
Searched for other fixtures that copy packages/business/src without the whole plugins directory: the grep over packages/*/tests, scripts and scripts/testing finds only those two. packages/cli/tests/case2-install.test.mjs:74 copies packages/business/src/vocabulary.mjs alone, which has no imports. stack-copy.test.mjs and stack-release-external.test.mjs:450 copy tracked files or the whole repository, so they carry model-quota.mjs already.
|
||||
|
||||
Production check (every place that copies, mounts or packages business code or plugins/src/kinds.mjs without the whole plugins directory):
|
||||
|
||||
- scripts/stack-copy.sh:32 copies packages/business/src and :41 copies the whole packages/plugins, so model-quota.mjs reaches every real copy. scripts/case2-install.sh:185 calls it.
|
||||
- scripts/stack-release.sh:371 and :378 import the copy's own packages/business/src/business.mjs, which reaches launch.mjs and so model-quota.mjs. That copy comes from stack-copy.sh, which takes both directories from the same commit.
|
||||
- packages/seat/src/sandbox.mjs RUNNER_FILES (:50-:72) mounts packages/business/src/vocabulary.mjs (:67) and packages/plugins/src/kinds.mjs (:68) only. A transitive import walk from all 19 listed files reaches no file of packages/business or packages/plugins outside that list; launch.mjs, organization.mjs, business.mjs, loader.mjs and model-quota.mjs are not reached. vocabulary.mjs and kinds.mjs import nothing. packages/seat/src imports only vocabulary.mjs from business (compactions.mjs:46, sandbox.mjs:40, session.mjs:42). model-quota.mjs is therefore not needed in the sandbox.
|
||||
- scripts/test-darkwing-launch.mjs:34 and scripts/test-rocko-launch.mjs:25 copy packages/seat/src alone, which needs only vocabulary.mjs.
|
||||
- Containerfile:23-26 copies contracts, src, two processing-control files and adapters; src imports nothing from packages. compose.yaml mounts the data root and the auth file only.
|
||||
- scripts/mosaic:35 and scripts/case2-precheck.sh:85,171 import business code from the repository or copy they sit in, which holds all of packages/plugins.
|
||||
|
||||
Result: no production path misses model-quota.mjs. No product change was needed or made.
|
||||
|
||||
RED, on ddb3e961f before the change (whole files, from packages/cli, one at a time, TMPDIR /mnt/storage/scratch/tmp/QYOMZY):
|
||||
|
||||
- stack-release.test.mjs: 224 tests, 56 pass, 168 fail, 0 skip, 186 s. 127 log lines carry the missing-module message.
|
||||
- stack-release-external.test.mjs: 25 tests, 4 pass, 21 fail, 0 skip, 32 s.
|
||||
- stack-upgrade.test.mjs: 21 tests, 7 pass, 14 fail, 0 skip, 25 s.
|
||||
|
||||
These match the counts the join child recorded (56/168, 4/21, 7/14).
|
||||
|
||||
GREEN, on 12eba4b59:
|
||||
|
||||
- stack-release.test.mjs: 224/224 pass, 0 fail, 0 skip, 694 s. stack-release-external.test.mjs: 25/25, 88 s. stack-upgrade.test.mjs: 21/21, 66 s.
|
||||
- cli whole (node --test tests/*.test.mjs): 1045 tests, 1044 pass, 0 fail, 1 skip, 656 s. The skip is "FED R7 scratch two-instance acceptance", which names scripts/test-federation-acceptance.sh as the way to run it.
|
||||
- business 286/286, 3 s. bus 1380/1380, 49 s. plugins 123/123, 1 s. model-proxy 108/108, 1.4 s. webui 492/492, 63 s. No skips in these. The model-final-completion.test.mjs:69 host flake (16 !== 19) did not appear, so no rerun was needed.
|
||||
- The counts for business (286) and plugins (123) are lower than the join's (292, 128) because the join included row 332's tests; this branch stays on base 09a847eda.
|
||||
|
||||
Mutant. With the helper changed to drop model-quota.mjs from its result (a one-line filter in business-imports.mjs), stack-release.test.mjs gave 224 tests, 56 pass, 168 fail in 183 s, with 127 "Cannot find module .../packages/plugins/src/model-quota.mjs" lines. The helper then printed four files, without model-quota.mjs. git checkout restored the file; git status --short printed nothing afterwards.
|
||||
|
||||
## Join onto landed 332
|
||||
|
||||
Written 2026-11-02T22:49Z by Claude (sub-agent of the Mosaic Stack lead, T3 c5c1e8ba), author of this join. Issue #1831. Checkout branch t3/row-333-join-replay.
|
||||
|
||||
Base and heads. Row 333 R2 head 0ef269da9 on base 09a847eda (R1 503b91e56, overlay 2627321f6, docs c012b2e0a and ddb3e961f, R2 fixtures 12eba4b59 and 0ef269da9). Row 332 landed on refactor at 5df0e9d6f (R2 and the lead correction). The branch started at 5df0e9d6f with no commits of its own and a clean tree. Command: git -c core.attributesFile=/mnt/storage/scratch/q284gate/union.attributes merge --no-ff --no-commit 0ef269da9. Merge commit c0c291cda, parents 5df0e9d6f and 0ef269da9, made at 22:33:47Z.
|
||||
|
||||
Why a replay. The earlier join (eabeb1aa8) was made on 332 R1. Row 332 then changed (R2 and a lead fix) and row 333 gained two fixture commits. Both rows change packages/business/src/launch.mjs and packages/plugins/README.md.
|
||||
|
||||
Conflicts. Exactly two paths, the two named in the brief. No other path conflicted.
|
||||
|
||||
- packages/business/src/launch.mjs, import block (lines 3 to 8 before resolution). 332 changed the errors import to `{ BusinessError, refuse }` for the proxy route refusals in checkModels. 333 added `import { isDailyModelQuota } from "../../plugins/src/model-quota.mjs"` for the daily model leaves in checkTokenLimits. They do not contradict. Resolution: both imports, the model-quota line first, then `{ BusinessError, refuse }`. The rest of launch.mjs merged without conflict: 332's checkModels route handling and the checkAccount `proxy` credential, and 333's checkTokenLimits keys block.
|
||||
- packages/plugins/README.md, end of file (lines 331 to 378 before resolution). 332 appended "Per-session proxy context (P3)" and 333 appended "Proxy usage telemetry (row333 / P5)" after the same last paragraph. Resolution: keep both, P3 section first, one blank line between, P5 section last.
|
||||
|
||||
Other paths touched by both sides, merged without a conflict and not edited by hand: BUILD-LOG.md and docs/SESSIONS.md (union attribute, both sides' lines kept), and packages/cli/tests/stack-release.test.mjs (333's 3 lines for the business-imports helper, 332's R2 hermetic-launch edits). No product or test file was edited by hand.
|
||||
|
||||
Comparison with the reference resolution (/mnt/storage/scratch/tmp/iLeQSZ/join-resolution.patch). I took git diff 5df0e9d6f for the two files and compared it with the reference patch after removing the index lines. The result is identical, and the hunk headers (-1,5 +1,6; -76,8 +77,16; -365,3 +365,12) are equal too, so there is no difference to explain. The reference was a diff against the 332 R1 blobs. launch.mjs is d9ef01b40 and README.md is d4625c9f6 on both 332 R1 and landed 332, so R2 and the lead fix did not change these two files, which is why the earlier resolution carries over unchanged. A correction to the merge commit message: it says the files match the reference "apart from hunk offsets", but the hunk offsets match as well. The commit stays as made.
|
||||
|
||||
Tests, on c0c291cda. node_modules linked from /mnt/storage/src/mosaic-stack (a link at the root and a real directory of links under packages/webui), TMPDIR /mnt/storage/scratch/tmp/Z280Ko (31 bytes), each suite whole, one at a time, from its package directory with node --test tests/*.test.mjs, 30-minute limit, started 22:34:09Z. Nothing was skipped, failed or rerun except as noted.
|
||||
|
||||
| Suite | Tests | Pass | Fail | Skip | Time |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| business | 293 | 293 | 0 | 0 | 2 s |
|
||||
| plugins | 129 | 129 | 0 | 0 | 1 s |
|
||||
| bus | 1382 | 1382 | 0 | 0 | 48 s |
|
||||
| model-proxy | 108 | 108 | 0 | 0 | 1 s |
|
||||
| harness | 205 | 205 | 0 | 0 | 13 s |
|
||||
| seat | 223 | 223 | 0 | 0 | 6 s |
|
||||
| webui | 498 | 498 | 0 | 0 | 132 s |
|
||||
| cli | 1102 | 1101 | 0 | 1 | 669 s |
|
||||
| bash scripts/test-federation-acceptance.sh | 1 | 1 | 0 | 0 | 5 s |
|
||||
|
||||
The one cli skip is "FED R7 scratch two-instance acceptance", which names scripts/test-federation-acceptance.sh as the way to run it. That script passed 1/1 in the last row, with "R7 cleanup: no child groups, ports or sockets remain". The model-final-completion.test.mjs:69 host flake (16 !== 19) did not appear, so no rerun was needed. Business and plugins are one test higher than the earlier join's 292 and 128, and bus 1382 is two above R2's 1380 on the 09a847eda base; this record does not attribute those differences to a cause.
|
||||
|
||||
Cleanup. No test process of mine remained after the runs. The node_modules links and the TMPDIR were removed; git ls-files -co --exclude-standard | grep node_modules printed nothing, and git status --short showed only this file and docs/SESSIONS.md before this commit.
|
||||
|
||||
## R3 rotation fix
|
||||
|
||||
Written 2026-11-03 by Claude Opus 5.5, implementation sub-agent of the Mosaic Stack lead (T3 c5c1e8ba). Issue #1831. Brief: /mnt/storage/scratch/mosaic-lead/briefs/row333-r3-fix.md. Review: /mnt/storage/scratch/mosaic-lead/reviews/row333-opus.md, findings 1 to 5. Branch t3/row333-r3-fix on base b37cc5087. Product, tests and docs are commit 3692fca52.
|
||||
|
||||
### Ruling 1: the quota follows the agent's key lineage
|
||||
|
||||
- Model record. `Credentials.#format` accepts an optional `previous`: a non-empty array of at most 64 entries, each exactly `{ keyId, retiredAt }` with a 12-hex id and a canonical ISO time. Anything else refuses `credential-format`, on write and when the file is opened. A record without the field loads unchanged. Safe status shows `previous` (ids and times) next to `retiring`, and an empty array for a record without it. No key value is in it.
|
||||
- When an id is added. `ModelKeys` adds an id when the key leaves the record. On a rotation the old key first becomes retiring, as before, and its id moves to `previous` when the sweep removes it, at grace expiry or at once when no run is bound to it. On a re-issue (the `#issue` path where the proxy no longer lists the old key) the old id goes straight to `previous`. The field stays absent until the first id leaves. Past 64 the writer drops the oldest, so a record never carries 65; the format refuses 65 as well. A fire removes the record, as before, so a re-hired agent starts a new lineage. The revocation proofs still compare whole records with `isDeepStrictEqual`; a test fires an agent whose record carries `previous` and the proof holds.
|
||||
- Lineage. An agent's lineage is its current id, its retiring ids, then its earlier ids. `modelUsageKey` checks uniqueness over every lineage on the host: an id in two agents' lineages, or twice in one, refuses `proxy-key-refused`. The new `modelKeyLineages` lists the business's lineages and applies the same host-wide check. `createLimits` takes a `keyLineages` hook, which refuses by default, and passes `lineages` to the checks only when a daily key leaf exists. The subject's key must be in exactly one lineage read in the same call, or the launch refuses and the turn stops. `report` shows every limit `check failed: proxy-key-refused` when the lineages can't be read.
|
||||
- daily-quota. A key leaf applies to a subject whose key is in the lineage holding the leaf's id, and its tally sums the day's records for every id in that lineage. Usage records and the Console per-key counts stay per key id. Missing or malformed `lineages` throws `bad-lineages`; account quotas never need them.
|
||||
- mustStop resolves the run's bound key, and that key's lineage decides the leaf. A run may be bound only to the current or a retiring key. A run whose bound id has moved to `previous` refuses `proxy-key-refused`, which stops it.
|
||||
- Orphaned leaves. A leaf whose id is in no hired agent's lineage counts its own id only and matches no subject, so it refuses no launch. The limits code logs `{event: 'limit-key-orphaned', business, path}` once when a leaf becomes orphaned, not per launch, and again only if it stops being orphaned and becomes orphaned later. `orphanedKeys` feeds `orphanedKeyQuotas` in the usage view, and the Console usage view lists each one: "Key quota <id> matches no agent, so it limits nothing. A fire and re-hire gives the agent a new key; set the quota on the new key id." A fire and re-hire therefore leaves the old leaf orphaned, and the human sees it in that view. The Token limits panel can only reset leaves, not rename them, so the text points at the new key id rather than at that panel.
|
||||
- Docs. packages/plugins/usage/cliproxy-queue/README.md (where row 333 documents `tokens.keys` leaves), packages/plugins/README.md (the limit-check interface gains `lineages` and `subject.modelKeyId`, plus the daily-quota section) and packages/plugins/limit-check/daily-quota/README.md each gain the rotation and orphan sentences. The business package documents no model-key leaf, so it has no doc change.
|
||||
- Rollback. A release from before this round refuses a record that carries `previous` with `credential-format`, which fails closed. No live stack holds proxy model records yet (no proxy cutover until Vikunja #774), so no migration was built.
|
||||
|
||||
Departures from the expected shape, and why:
|
||||
|
||||
- 65 entries: both refuse and trim. The format refuses 65 (a hand-edited or foreign record), and the writer trims to the newest 64 so the bus never writes one. Both are pinned.
|
||||
- A keyless agent under a key quota refuses even when every key leaf is orphaned. An orphaned leaf matches no subject, so the refusal is not needed to enforce it, but resolving the subject's key comes first and I kept that fail-closed order rather than add a second path that skips it.
|
||||
- Moving a leaf through the human writer. The brief says moving a leaf from A to B on rotation day must not reset the count. The tally does sum A and B: a leaf named B whose `since` is the day's start counts 160 (90 on A, 70 on B) and refuses. But the human settings writer treats a rename as a new leaf and stamps `since` with the move time, so a leaf moved through the writer counts only the usage after the move (100 in the test, not 160). I did not change the writer: the `since` stamping is the row 125/126 human-writer contract, in the business package, and changing it widens this round. With the lineage, the move is not needed, since the leaf on A keeps applying after rotation. Both cases are pinned in p5-key-lineage.test.mjs. Recommended follow-up if the lead wants a moved leaf to keep its count: let the writer carry `since` over when the old and new ids are in one lineage.
|
||||
- The proxy-usage owner map stays current plus retiring. It attributes proxy queue events, which can only name keys the proxy still accepts, so earlier ids would never match. That is telemetry, not the quota, and I left it.
|
||||
|
||||
### Ruling 2: key-quota-no-model-key
|
||||
|
||||
`modelUsageKey` throws `key-quota-no-model-key` when the agent has no model record, or one with no key issued. `createLimits` passes that code and `proxy-key-refused` through by name; any other lookup failure is still `proxy-key-refused`. Pass-through, after grepping `proxy-key-refused` across packages/*/src: the broker's organization-error pass-through list gains the code (bus/src/broker.mjs; no organization writer raises it today, but it now passes through the same way as the other proxy key codes). The launcher maps every bus refusal to `limit-check-failed` with message `bus: <code>`, and the turn-end stop reason is `limit: bus failed <code>`; neither needed a change, and both are pinned for the new code (cli launch-limit-checks.test.mjs, bus limit-stop.test.mjs). With no key quota there is no lookup and no refusal.
|
||||
|
||||
### Ruling 3: rotation between preflight and mayLaunch
|
||||
|
||||
The lineage covers it. Finding 3's case is preflight admitting A, the sweep rotating A to B, and `mayLaunch` checking B. B and A are now one lineage, so a leaf named A matches the subject B and counts A and B: the launch refuses. The rotation test asserts exactly this state (A retiring, B current, `mayLaunch` refuses under the A leaf). After a re-issue, A is not current or retiring, so binding a run to A refuses. I found no gap, so `mayLaunch` does not take the admitted key id.
|
||||
|
||||
### Ruling 4: the usage module gets readUsageQueue only
|
||||
|
||||
`createProxyUsage` hands the module `Object.freeze({ readUsageQueue: () => management.readUsageQueue() })`. cliproxy-queue reads `read({ readUsageQueue })`. The test wraps the real loader to capture the argument. It has exactly one own key, `readUsageQueue`, a function, is frozen with `Object.prototype` as its prototype, and a walk over every own property, accessor and prototype reachable from it finds neither the client, its prototype, its class nor any of its other methods by name or by reference. Spies on every client method show only `readUsageQueue` was called, and the event was still recorded.
|
||||
|
||||
### Ruling 5: fixture deadlines
|
||||
|
||||
Each wait in p5-telemetry-fixture.mjs (`waitLog`, `waitQueue`, `settleInitial`, `pollSettledAfterTick`) races a deadline on the real `setTimeout`, captured when the module loads, before any test mocks timers. The default is `WAIT_MS` = 5000 ms; the fixture takes `waitMs`. The rejection names what it waited for, for example `p5 fixture: no usage queue read number 1 within 50 ms`. The new test mocks every timer API, never advances it, and asserts all four rejections by exact message with `waitMs: 50`. The p5-background.test.mjs header is updated.
|
||||
|
||||
### Tests
|
||||
|
||||
Added: packages/bus/tests/p5-key-lineage.test.mjs (9 tests). It uses the real `Credentials`, `ManagementClient`, `ModelKeys` and its sweep, `createLimits`, `modelUsageKey`, `modelKeyLineages` and the daily-quota module, with a fake loopback management server, a made-up management key and a fresh temp root. Only `Date` is mocked.
|
||||
|
||||
- Rotation mid-day under a hit leaf named A: refuses before, right after (A retiring, B current), inside the grace, after the grace (A in `previous`) and after a restart that reloads the record. The run bound to A stops at its turn end after the rotation. Another agent stays allowed.
|
||||
- Re-issue: the proxy no longer lists A at preflight, B is issued, A is in `previous`, and the leaf still refuses, including after a restart. A limit of 101 allows.
|
||||
- The leaf moved from A to B on rotation day still refuses with count 160, and the run bound to A stops.
|
||||
- The settings-writer move: `since` is the move time and the count is 100.
|
||||
- Lineage uniqueness: an id in two agents' lineages refuses both, and the report shows check failed. An id twice in one lineage refuses too.
|
||||
- Format: a record without `previous` loads; thirteen malformed values refuse `credential-format` on write and on open, including 65 entries, a key value in place of an id and an empty array; 64 earlier plus 64 retiring load within the 16384-byte cap.
|
||||
- A re-issue on a record holding 64 drops the oldest.
|
||||
- Fire and re-hire: the revocation proof holds with `previous` present, the old leaf is orphaned, three launches go ahead, one log line, the view lists it, and no key value is in the logs, view, receipts, status or store files.
|
||||
- Ruling 2 on `modelUsageKey`, `mayLaunch` and `mustStop`, and no lookup without a key quota.
|
||||
|
||||
Also added: three daily-quota tests (lineage match and count, orphan, `bad-lineages`), one usage-render test (the orphan list, escaped), the ruling 4 test in proxy-usage.test.mjs, the ruling 5 test in p5-background.test.mjs, and the new code in limit-stop.test.mjs and cli launch-limit-checks.test.mjs. Changed for the new rules: limit-checks.test.mjs (a leaf on a retiring key now applies to the agent's current key too, so the launch refuses; an unrelated lineage still allows), p5-key-context.test.mjs (the two no-owner cases now expect `key-quota-no-model-key`; a wrong run stays `proxy-key-refused`), p5-key-compatibility.test.mjs (passes `lineages` to the module) and the p5-telemetry-fixture.mjs waits.
|
||||
|
||||
### Runs
|
||||
|
||||
All on 3692fca52, one at a time, each under a 30-minute limit, with TMPDIR under /mnt/storage/scratch/tmp and output to files there. Each whole run is `node --test` over the package's tests directory.
|
||||
|
||||
| Run | Tests | Pass | Fail | Skip | Time |
|
||||
|---|---|---|---|---|---|
|
||||
| bus whole | 1393 | 1393 | 0 | 0 | 49 s, 23:55:28Z to 23:56:17Z on 2026-11-02 |
|
||||
| plugins whole | 132 | 132 | 0 | 0 | 0.3 s, 23:56Z |
|
||||
| business whole | 293 | 293 | 0 | 0 | 2.6 s, 23:56Z |
|
||||
| webui whole | 499 | 499 | 0 | 0 | 66 s, 23:56:50Z to 23:57:56Z |
|
||||
| cli stack-release.test.mjs | 225 | 225 | 0 | 0 | 664 s, 23:58:03Z on 2026-11-02 to 00:09:07Z on 2026-11-03 |
|
||||
| cli stack-release-external.test.mjs | 25 | 25 | 0 | 0 | 88 s, 00:09:07Z to 00:10:35Z |
|
||||
| cli stack-upgrade.test.mjs | 25 | 25 | 0 | 0 | 69 s, 00:10:35Z to 00:11:44Z |
|
||||
| cli launch-limit-checks.test.mjs | 5 | 5 | 0 | 0 | 0.2 s, 00:11:44Z |
|
||||
|
||||
The model-final-completion.test.mjs:69 host flake (16 !== 19) did not appear, so no rerun was needed. Against the join record above, bus is up 11 (the 9 lineage tests, the ruling 4 test and the ruling 5 test), plugins up 3 (the daily-quota tests) and webui up 1 (the usage-render test); business is unchanged. The other changed tests changed existing cases or added table rows, not tests.
|
||||
|
||||
### Mutants
|
||||
|
||||
Each was applied to the committed tree, run against the named file, and restored with `git checkout -- <file>`; `git status --short` was clean after each.
|
||||
|
||||
| Mutant | Change | Killed by | Result |
|
||||
|---|---|---|---|
|
||||
| M1 | daily-quota matches a key leaf to the subject by the leaf's own id only | p5-key-lineage.test.mjs:101, the rotation test: right after the rotation the launch was allowed where a refusal with count 100 was expected. Also :138 (re-issue), :156 (moved leaf, run not stopped), :252 (fire and re-hire) and daily-quota.test.mjs:197 | lineage 4 of 9 fail, daily-quota 1 of 17 fail |
|
||||
| M2 | the tally counts only the leaf's own id | p5-key-lineage.test.mjs:155, the moved-leaf test: allowed where limit 160 and count 160 were expected. Also :179 (writer move), :252 (count 100, expected 105) and daily-quota.test.mjs:197 | lineage 3 of 9 fail, daily-quota 1 of 17 fail |
|
||||
| M3 | `#issue` records no old id on a re-issue | p5-key-lineage.test.mjs:137, the re-issue test: `previous` was undefined where `[{ keyId: 'f6548f12575e', retiredAt: '2026-10-24T12:01:00.000Z' }]` was expected. Also :241 (trim at 64) | lineage 2 of 9 fail |
|
||||
| M4 | the usage module gets `{ client: management, readUsageQueue }` | proxy-usage.test.mjs:89: own keys were `['client', 'readUsageQueue']` | 1 of 8 fail |
|
||||
| M4b | the client hidden as a non-enumerable property on the `readUsageQueue` function | proxy-usage.test.mjs:98: the walk reached the client | 1 of 8 fail |
|
||||
|
||||
M4b is extra; it shows the ruling 4 test finds a hidden path and not only an extra own key.
|
||||
|
||||
### Not done
|
||||
|
||||
- The settings writer still stamps a new `since` on a renamed leaf (Departures above). Recommended follow-up, not built.
|
||||
- No migration, per the brief: no live stack holds proxy model records yet.
|
||||
- No push, queue, Vikunja, Gitea or PR action, per the brief.
|
||||
|
||||
## R4 since carry
|
||||
|
||||
Written 2026-11-03 by Claude Opus 5.5, implementation sub-agent of the Mosaic Stack lead (T3 c5c1e8ba). Issue #1831. Brief: /mnt/storage/scratch/mosaic-lead/briefs/row333-r4-fix.md. Branch t3/row333-r4-fix on the R3 tip fe3ef5128 (base b37cc5087, no rebase). Product, tests and docs are commit f65faf9df. The R3 section above is unchanged; where R4 changes something it says, this section says so.
|
||||
|
||||
### Ruling 1: a moved key quota keeps its count
|
||||
|
||||
- The lookup. runtime.mjs builds `keyLineage(business, keyId)` as `modelKeyLineage(credentials.status(), business, keyId)` and passes it to `launchSettings`. `modelKeyLineage` (limits.mjs) returns the lineage in that business holding the id, or `[]` when none does. It is built on `modelKeyLineages`, so the same host-wide uniqueness check runs and a duplicate id throws. It reads the bus's own credential records through their safe status: ids, never a key value. The writer hands it only a business id and a key id, so no caller-supplied lineage reaches it, and the runtime spreads `organization` before `keyLineage`, so an organization option can't replace it.
|
||||
- The writer. `stamp` keeps its rules: a leaf with a stored `since` at the same path keeps it, and a caller-supplied `since` that differs refuses `invalid-request` (on a new leaf any caller `since` differs, so it always refuses). New: a `tokens.keys` leaf with no stored `since` that is a daily key quota asks the lookup for its key's lineage and takes the earliest stored `since` among the old document's `tokens.keys` daily key quotas whose ids are in it. Whether the same write removes the old leaf doesn't matter. With none it takes now. `reset` runs after `stamp` in the same write, so a reset sets now, in the move write or a later one.
|
||||
- Lookup failure. `launchSettings`'s default `keyLineage` throws, so a writer built without one refuses. A throw, an answer that isn't an array, an id that isn't twelve lowercase hex, or a non-empty answer without the asked id refuses `OrganizationError('proxy-key-refused')` and writes nothing. The broker already passes that code through by name. A write that adds no new daily key quota never calls the lookup: account limits, legacy leaves, a changed or unchanged quota, a reset.
|
||||
- Remove then re-add. A quota removed in one write and added back in a later one finds no old leaf, so it is a new quota and gets now. Documented in the `carried` comment and the READMEs.
|
||||
- Docs. packages/plugins/usage/cliproxy-queue/README.md: the last paragraph's "stamps a new `since` on a renamed leaf ... restarts its count" is replaced by the carry rule, the remove-then-re-add rule and the lookup refusal. packages/plugins/README.md (daily-quota section) and packages/plugins/limit-check/daily-quota/README.md (model-key section) gain the carry sentence. packages/business/README.md had no `since` rule and, as the R3 review said, no model-key leaf; it now has a paragraph after `launch.limits.tokens.daily` on the leaf, the writer's `since` rules with the carry, and `keyLineage`.
|
||||
|
||||
Choices and departures, and why:
|
||||
|
||||
- Which leaves ask. Only a new leaf that is a daily key quota once stamped (`isDailyModelQuota` with `since` set to now). A twelve-hex-named plain `{limit}` leaf is a legacy account limit under row 333's rule, so it keeps the plain new-leaf rule and the lookup is not called. Source leaves must be daily key quotas too, so a legacy leaf's `since` never carries into a daily quota.
|
||||
- A leaf that changes shape at the same path, a legacy `{limit, since}` becoming a daily quota, keeps its stored `since` under the existing same-path rule. Unchanged; found while writing the default-lookup case, which now adds a fresh id.
|
||||
- Earliest against latest. The business test separates them: A from T0, B added from A (T0) and then reset to T1, both moved to C, and C takes T0 where the latest would give T1. Mutant M3 shows the test tells them apart.
|
||||
- The real-runtime test uses a re-issue, not a rotation. The runtime keeps its `ModelKeys` inside and exposes no rotate, and its sweep rotates only at `rotateBy`, 30 days after issue, which no daily window spans without mocking the runtime's clock. The re-issue gives the same shape of lineage (B current, A among the earlier ids) and goes through the real `startBroker` wiring, the broker's `limits.set` and the runtime's own lookup. The rotation path through the writer is p5-key-lineage's R4 writer test, with the real `Credentials`, `ModelKeys`, `createLimits` and daily-quota module.
|
||||
- The R3 "settings-writer move" test, which pinned a count of 100, now requires 160 and is renamed for R4. The R3 departure 3 and its "Not done" item are superseded by this ruling.
|
||||
|
||||
### Ruling 2: the orphan set on every refresh
|
||||
|
||||
`observeOrphans` (limits.mjs) runs in `refresh`, which the runtime calls after each committed verb and at boot, and in `orphanedKeys`. With no daily key quota left it stores an empty set for the business; otherwise it reads the lineages and calls `noteOrphans`, which logs each id not in the stored set and stores the current set. When the lineages can't be read it leaves the stored set as it was and logs nothing. So a quota removed and added back logs again, and an unchanged orphan logs once however many refreshes see it. The set is in memory: a restart is a fresh observation, and a quota still orphaned after it logs once more. No marker is persisted. This is in the `orphansLogged` comment and the cliproxy-queue README.
|
||||
|
||||
Consequence: the orphan line now comes at the first refresh that sees the orphan, which can be boot or the refresh at the start of a launch decision, before that decision's own refusal line. Two R3 tests asserted the old order and now expect the orphan line first: the fire and re-hire test (the line comes at the keyless launch before the re-hire, not at the first launch after it) and the ruling 2 test. The number of orphan lines is unchanged in both.
|
||||
|
||||
### Ruling 3: the barrier's last yield
|
||||
|
||||
p5-telemetry-fixture.mjs captures `realSetImmediate` at module load with the other real timers, and `pollSettledAfterTick` yields on it inside the deadline, so a mocked `setImmediate` can't hold the barrier and the deadline covers the whole wait. Both options in the ruling, since together they cost nothing. The new p5-background test mocks `Date`, `setInterval`, `setTimeout` and `setImmediate`, advances one poll tick through the barrier, never ticks again, and requires the barrier to settle within a real bound of twice `WAIT_MS`, with the second queue read seen and the proxy state `available`. Against the R3 fixture it fails "pollSettledAfterTick did not settle" (about 10 s, the outer bound); I checked that before keeping the test.
|
||||
|
||||
### Ruling 4: records
|
||||
|
||||
- The 64-id bound is a limit. A lineage holds the current id, the retiring ids and the newest 64 earlier ids. Once an id falls out of the newest 64, a quota named by it is in no lineage, so it is orphaned while the agent stays hired: it limits nothing and the usage view lists it. Moving the quota to a current id fixes it, and since the old id is no longer in the lineage the writer can't carry its `since`, so the moved quota starts at now. Recorded here and in the cliproxy-queue README.
|
||||
- R3 departure 4, corrected. Its reason, that proxy queue events "can only name keys the proxy still accepts, so earlier ids would never match", is wrong. A queued event the proxy accepted before the key left the record and that the bus drains after it names an id that is no longer current or retiring. proxy-usage.mjs:42-67 builds its owner map from current and retiring ids only, so that event goes to the reconcile log as `proxy-usage-unknown-key` and is not recorded. That loses telemetry attribution for the event. It is not a quota bypass: quotas count the native transcript records, which carry the run's bound key id. The owner map is unchanged in R4.
|
||||
|
||||
### Tests
|
||||
|
||||
Added:
|
||||
|
||||
- packages/bus/tests/p5-key-lineage.test.mjs. The R3 writer test becomes the R4 writer test: A's quota is set at the start, the agent uses 60 on A, rotates, the human moves the unchanged quota to B, B's `since` equals A's, and after 30 more on A and 70 on B the launch refuses with count 160 and the report shows 160; a reset after the move sets now, the count is 0 and the launch goes ahead. New: a lineage that can't be read (an id in two agents' lineages) refuses a write adding a key quota with `proxy-key-refused`, the file unchanged, and a write adding none (a changed limit and a legacy hex leaf) saves without asking. New: an orphaned quota removed and added back logs twice, three more refreshes, a launch and `orphanedKeys` add nothing, and after a restart three refreshes add exactly one.
|
||||
- packages/bus/tests/p5-runtime.test.mjs. Real `startBroker`, fake loopback proxy: a 2-token quota on A, a turn spends 2 on A, the launch refuses, the proxy stops listing A, `modelPreflight` issues B, `limits.set` moves the unchanged quota to B with no reset, the stored leaf is B with A's `since`, no key value is in the limits view, and the next `mayLaunch` refuses.
|
||||
- packages/bus/tests/p5-background.test.mjs. The ruling 3 barrier test.
|
||||
- packages/business/tests/token-limit-settings.test.mjs, with a stub lookup. One test: B added beside A carries A's time; earliest over latest; an id in no lineage gets now; a caller-supplied `since` refuses on a new leaf, a moved leaf and with the carried time itself; a reset in the move write sets now; removed and added back gets now. The other: no lookup for account limits, legacy hex leaves, a changed quota or a reset; a lookup that throws (with and without a code) or answers a string, a list holding a number, a list holding an uppercase id, a list without the asked id or an object refuses `proxy-key-refused` with the file unchanged; the default writer refuses a new daily key quota and saves account and legacy limits.
|
||||
|
||||
Changed: the existing P5 business test passes a lookup answering `[]`, since a writer without one now refuses that leaf. In p5-key-lineage, the R3 fire and re-hire test and the ruling 2 test expect the orphan line first (Ruling 2 above).
|
||||
|
||||
### Runs
|
||||
|
||||
One at a time, each under a 30-minute limit (`timeout -k 10 1800 node --test`), Node v26.8.1, with TMPDIR under /mnt/storage/scratch/tmp and output to files there. Each whole run is `node --test` over the package's tests directory. All times are 2026-11-03 UTC. The first runs were on the working tree that became f65faf9df, committed with no edit between; the cli stack runs and the closing whole-package runs were on f65faf9df itself, the latter after the mutants were restored.
|
||||
|
||||
| Run | Tree | Tests | Pass | Fail | Skip | Time |
|
||||
|---|---|---|---|---|---|---|
|
||||
| bus whole | before commit | 1397 | 1397 | 0 | 0 | 50 s, 00:55:51Z to 00:56:41Z |
|
||||
| plugins whole | before commit | 132 | 132 | 0 | 0 | under 1 s, 00:56:53Z |
|
||||
| business whole | before commit | 295 | 295 | 0 | 0 | 4 s, 00:56:53Z to 00:56:57Z |
|
||||
| webui whole, run 1 | before commit | 499 | 498 | 1 | 0 | 88 s, 00:57:00Z to 00:58:28Z |
|
||||
| webui editor-browser.test.mjs alone | before commit | 16 | 16 | 0 | 0 | 15 s, 00:58:47Z to 00:59:02Z |
|
||||
| webui whole, run 2 | before commit | 499 | 499 | 0 | 0 | 119 s, 00:59:06Z to 01:01:05Z |
|
||||
| cli launch-limit-checks.test.mjs | before commit | 5 | 5 | 0 | 0 | under 1 s, 01:01:23Z |
|
||||
| cli stack-release.test.mjs | f65faf9df | 225 | 225 | 0 | 0 | 741 s, 01:02:50Z to 01:15:11Z |
|
||||
| cli stack-release-external.test.mjs | f65faf9df | 25 | 25 | 0 | 0 | 98 s, 01:15:25Z to 01:17:03Z |
|
||||
| cli stack-upgrade.test.mjs | f65faf9df | 25 | 25 | 0 | 0 | 148 s, 01:17:07Z to 01:19:35Z |
|
||||
| harness tools.test.mjs | f65faf9df | 23 | 23 | 0 | 0 | under 1 s, 01:20:41Z |
|
||||
| bus whole | f65faf9df | 1397 | 1397 | 0 | 0 | 54 s, 01:22:35Z to 01:23:29Z |
|
||||
| plugins whole | f65faf9df | 132 | 132 | 0 | 0 | 1 s, 01:23:29Z to 01:23:30Z |
|
||||
| business whole | f65faf9df | 295 | 295 | 0 | 0 | 4 s, 01:23:30Z to 01:23:34Z |
|
||||
| webui whole | f65faf9df | 499 | 499 | 0 | 0 | 131 s, 01:23:38Z to 01:25:49Z |
|
||||
|
||||
The webui run 1 failure was editor-browser.test.mjs:93, the CSP editor test: `Condition timed out: !document.querySelector("#doc-save").disabled` at :122, with the host's load average between 45 and 60. R4 changes nothing webui loads. The file passed alone and the whole package passed twice after, so I read it as load, not R4; both runs are listed. The model-final-completion.test.mjs:69 flake (16 !== 19) did not appear in either bus run. Against R3, bus is up 4 (p5-key-lineage's lookup-failure and orphan re-add tests, the p5-runtime move test, the p5-background barrier test; the writer test is renamed, not added) and business up 2. Plugins and webui are unchanged.
|
||||
|
||||
Pins. No test pins any changed path with a hash: the grep of every test, script and fixture naming a changed file's basename for a 64-hex string found only packages/queue/tests/fixtures/queue-marked.md, which names none of the four READMEs. The tests that read a changed file by path (limit-checks.test.mjs:319 and :323, host-run.test.mjs:429) are in packages/bus, run whole. Outside the four packages, harness tools.test.mjs imports `SETTINGS_KEYS` from launch-settings.mjs and ran whole (above). Nineteen packages/cli test files import `startBroker` from bus runtime.mjs; they import, they don't pin, and beyond the four cli files the brief names they were not run (Not done).
|
||||
|
||||
### Mutants
|
||||
|
||||
Each was applied to f65faf9df, run against the named files, and restored with `git checkout -- <file>`; `git status --short` was empty after each.
|
||||
|
||||
| Mutant | Change | Killed by | Result |
|
||||
|---|---|---|---|
|
||||
| M1 | launch-settings.mjs:73 `entry.since = kept ?? now;`, so stamp ignores the lineage | p5-key-lineage.test.mjs:173, the writer test, at :185: B's `since` was the move time `2026-10-24T12:01:00.000Z` where A's `2026-10-24T12:00:00.000Z` was expected. p5-runtime.test.mjs:62 at :106: the stored B leaf had the move time, not A's. token-limit-settings.test.mjs:178 at :184: B took the write time 08:00 where A's 07:00 was expected. Also p5-key-lineage :198 at :206 and token-limit-settings :204 at :212, both because the lookup is never called (`asked` was 0 where 1 was expected, and `[]` where `[A]` was) | p5-key-lineage 2 of 11 fail, p5-runtime 1 of 2, token-limit-settings 2 of 9 |
|
||||
| M2 | runtime.mjs:346 passes `launchSettings` no `keyLineage` | p5-runtime.test.mjs:62 at :88: `proxy-key-refused` from the broker at the first `limits.set` that adds a key quota, since the writer's default lookup refuses. The R3 P5 runtime test at :39 fails the same way | p5-runtime 2 of 2 fail |
|
||||
| M3 | launch-settings.mjs:96 sorts descending, so the latest `since` wins | token-limit-settings.test.mjs:178 at :189: C had `since` 08:00 (T1, B's reset time) where 07:00 (T0, A's) was expected | token-limit-settings 1 of 9 fail. p5-key-lineage and p5-runtime pass (13 of 13): each of their moves has one source leaf, so earliest and latest are the same there |
|
||||
| M4 | limits.mjs:130, `refresh` no longer calls `observeOrphans` | p5-key-lineage.test.mjs:348, the orphan re-add test, at :358: one `limit-key-orphaned` line where two were expected; the set was never cleared, so the re-added leaf was still remembered. Also the R3 fire and re-hire test at :299 and the R3 ruling 2 test at :341, each missing the orphan line the refresh now logs first | p5-key-lineage 3 of 11 fail |
|
||||
| M4b | limits.mjs:90 returns `[]` with no daily key quota but leaves the remembered set alone | p5-key-lineage.test.mjs:348 at :358, the same one-line-for-two failure | p5-key-lineage 1 of 11 fail |
|
||||
| M5 | p5-telemetry-fixture.mjs restored to its R3 content | p5-background.test.mjs:71, the barrier test: `pollSettledAfterTick did not settle` after 10 s | p5-background 1 of 5 fail |
|
||||
|
||||
M4b and M5 are extra. M4b shows the empty set itself is needed, not only the refresh call. M5 shows the ruling 3 test fails on the R3 barrier, whose last yield used the mocked `setImmediate` outside the deadline.
|
||||
|
||||
### Not done
|
||||
|
||||
- No push, queue, Vikunja, Gitea or PR action, per the brief.
|
||||
- No migration or persisted orphan marker, per the rulings.
|
||||
- The proxy-usage owner map still holds only current and retiring ids (Ruling 4 above).
|
||||
- The nineteen packages/cli test files that import bus runtime.mjs were not run beyond the four the brief names: they import it and pin nothing, and the runtime change adds only the lookup, used when a write adds a daily key quota.
|
||||
@@ -0,0 +1,31 @@
|
||||
packages/bus/src/broker.mjs: OK
|
||||
packages/bus/src/limits.mjs: OK
|
||||
packages/bus/src/proxy-usage.mjs: OK
|
||||
packages/bus/src/runtime.mjs: OK
|
||||
packages/bus/src/usage.mjs: OK
|
||||
packages/bus/tests/limit-checks.test.mjs: OK
|
||||
packages/bus/tests/p5-key-context.test.mjs: OK
|
||||
packages/bus/tests/p5-runtime.test.mjs: OK
|
||||
packages/bus/tests/proxy-usage.test.mjs: OK
|
||||
packages/bus/tests/usage.test.mjs: OK
|
||||
packages/business/src/business.mjs: OK
|
||||
packages/business/src/launch.mjs: OK
|
||||
packages/business/src/organization.mjs: OK
|
||||
packages/business/src/plugin-settings.mjs: OK
|
||||
packages/business/tests/plugin-settings.test.mjs: OK
|
||||
packages/business/tests/token-limit-settings.test.mjs: OK
|
||||
packages/model-proxy/README.md: OK
|
||||
packages/model-proxy/src/client.mjs: OK
|
||||
packages/model-proxy/tests/usage-client.test.mjs: OK
|
||||
packages/plugins/README.md: OK
|
||||
packages/plugins/limit-check/daily-quota/index.mjs: OK
|
||||
packages/plugins/limit-check/token-limit/index.mjs: OK
|
||||
packages/plugins/src/kinds.mjs: OK
|
||||
packages/plugins/tests/daily-quota.test.mjs: OK
|
||||
packages/plugins/tests/kinds.test.mjs: OK
|
||||
packages/plugins/tests/loader.test.mjs: OK
|
||||
packages/plugins/tests/token-limit.test.mjs: OK
|
||||
packages/plugins/usage/cliproxy-queue/README.md: OK
|
||||
packages/plugins/usage/cliproxy-queue/index.mjs: OK
|
||||
packages/webui/src/public/bus.js: OK
|
||||
packages/webui/tests/usage-render.test.mjs: OK
|
||||
@@ -0,0 +1,31 @@
|
||||
c0144adade79c2cfc6b8247721393f0250b1d64f6c6c04d85738cb80939c42e5 packages/bus/src/broker.mjs
|
||||
18c1aacd280ebf0f200d5e6fc1dd1a7e098a3046c1cb8427140bb2198ac81cd3 packages/bus/src/limits.mjs
|
||||
5a6c3707e6a64304cfd37f1875eb378c6eb58bf438cc40365fe913eaec7cee59 packages/bus/src/proxy-usage.mjs
|
||||
969d04eb06b97093c7f9f0dfa6b51084c781e967e2668814083bbba84a2af7b6 packages/bus/src/runtime.mjs
|
||||
4ae57d053c4b217e1c1a22ada3ed1c5d4a3f0e61b8d2798e9db37997cd071a29 packages/bus/src/usage.mjs
|
||||
45870a4903d1996915c0086a6beb4d0a4c75b38386b7c5e6d98b5bc811c3b541 packages/bus/tests/limit-checks.test.mjs
|
||||
e37114eab9c5f21015ea8e429f0574d3ea34b06263f1e42b83b31b8d2df222a7 packages/bus/tests/p5-key-context.test.mjs
|
||||
241e779016ffd0b54c5646cb4fac7e21ea1167e77afbd652ff4e01f8d238f99c packages/bus/tests/p5-runtime.test.mjs
|
||||
84c8351029272b6ee05e7fd81b4cc4453553ceeb7a5127a1333dae63d1336ad5 packages/bus/tests/proxy-usage.test.mjs
|
||||
2613ba0561572a7d4f753066922fddc90cca812cb0ce2b3e0a9a4d249a15e340 packages/bus/tests/usage.test.mjs
|
||||
aaa4578fd4133f64119de6c8786a14759240a8910677529fdeae57173058b7d9 packages/business/src/business.mjs
|
||||
0aa94dbd14acd379a4837cc3e70b9618b3fa797d74124314e7245a8a3070e98c packages/business/src/launch.mjs
|
||||
fa4ba1ae878cd27287865fa12115f8a6c1175a2dfd1011d5f8aca11e46e669c7 packages/business/src/organization.mjs
|
||||
9d2c68dd21c6c9553af75f4b137c4f169e95761f32528767e0518d0313311f50 packages/business/src/plugin-settings.mjs
|
||||
f0dfe004905dce31317d85d89a05802db878c3472e765e85dc9f1e04166e1df6 packages/business/tests/plugin-settings.test.mjs
|
||||
bc6b3a31e8918d70aced7151b91ac4b39afec4081054024b162acb0e8f8fae07 packages/business/tests/token-limit-settings.test.mjs
|
||||
2e97ddcf7deac43002f60c44571056273ddffd4aa0ed0d86f15f550d958a106e packages/model-proxy/README.md
|
||||
f5f86cad661034f223a76352d877fa8d7883bfa921a7a01282347a9a03272441 packages/model-proxy/src/client.mjs
|
||||
1ad66d56800a31cfbd387939e640653bc72150f4e73822d9e3c777b3bffbf1e1 packages/model-proxy/tests/usage-client.test.mjs
|
||||
d54d94604d2f8944292fd5a11be8378afc84c06fb6a04137221bfe1a89c5389c packages/plugins/README.md
|
||||
3749b9f6dd681ef424ee7d7e4d80ccee87b3655df8cd8fe9ccd0d505dcaaee9b packages/plugins/limit-check/daily-quota/index.mjs
|
||||
4d0c6f5f87101f94608c02001a49d62cef113da48c539b2d2488dfbed1a4c524 packages/plugins/limit-check/token-limit/index.mjs
|
||||
eaa258a1aadadb5a75450fa73fdbcea0b53636adb50ed9a508193d29d564ca78 packages/plugins/src/kinds.mjs
|
||||
3d4fab56fea4c45c6a317ef41121aa5b6da0502a6ef614b7931f91cafdfc1f71 packages/plugins/tests/daily-quota.test.mjs
|
||||
f3081e1dbdac20ade2246c743bcbb3934be686f79f378af21c365cd1451893ba packages/plugins/tests/kinds.test.mjs
|
||||
8588ad7eee0c9ce5de3b53e3b88562812a155a3d791a2bd3413bb1754655d78b packages/plugins/tests/loader.test.mjs
|
||||
6e96bb96278ec754ca1816a24f49ef677771615ab5cf186ae41969fc2f93d8cc packages/plugins/tests/token-limit.test.mjs
|
||||
e9deb2504741f45645cd52ea6a1daee031cd2d3d44775a1221e76cec73c6b480 packages/plugins/usage/cliproxy-queue/README.md
|
||||
6096a577cd5d7e8bf84fd6b98ab284e2f47d5facebd027548e07e6aeec442f96 packages/plugins/usage/cliproxy-queue/index.mjs
|
||||
3c7a35e25b4c1cfda19ac9466d4b2fbc86c880761a1d04ad3ece8bc485f60f93 packages/webui/src/public/bus.js
|
||||
39f50991578b98594183390a00efbca84fda90ef61617eea4215e2c75f90b82c packages/webui/tests/usage-render.test.mjs
|
||||
@@ -0,0 +1,31 @@
|
||||
packages/bus/src/broker.mjs
|
||||
packages/bus/src/limits.mjs
|
||||
packages/bus/src/proxy-usage.mjs
|
||||
packages/bus/src/runtime.mjs
|
||||
packages/bus/src/usage.mjs
|
||||
packages/bus/tests/limit-checks.test.mjs
|
||||
packages/bus/tests/p5-key-context.test.mjs
|
||||
packages/bus/tests/p5-runtime.test.mjs
|
||||
packages/bus/tests/proxy-usage.test.mjs
|
||||
packages/bus/tests/usage.test.mjs
|
||||
packages/business/src/business.mjs
|
||||
packages/business/src/launch.mjs
|
||||
packages/business/src/organization.mjs
|
||||
packages/business/src/plugin-settings.mjs
|
||||
packages/business/tests/plugin-settings.test.mjs
|
||||
packages/business/tests/token-limit-settings.test.mjs
|
||||
packages/model-proxy/README.md
|
||||
packages/model-proxy/src/client.mjs
|
||||
packages/model-proxy/tests/usage-client.test.mjs
|
||||
packages/plugins/README.md
|
||||
packages/plugins/limit-check/daily-quota/index.mjs
|
||||
packages/plugins/limit-check/token-limit/index.mjs
|
||||
packages/plugins/src/kinds.mjs
|
||||
packages/plugins/tests/daily-quota.test.mjs
|
||||
packages/plugins/tests/kinds.test.mjs
|
||||
packages/plugins/tests/loader.test.mjs
|
||||
packages/plugins/tests/token-limit.test.mjs
|
||||
packages/plugins/usage/cliproxy-queue/README.md
|
||||
packages/plugins/usage/cliproxy-queue/index.mjs
|
||||
packages/webui/src/public/bus.js
|
||||
packages/webui/tests/usage-render.test.mjs
|
||||
@@ -0,0 +1,20 @@
|
||||
# Intended admitted-runner controls — execution pending
|
||||
|
||||
These are first guards to establish on the admitted runner. Current controls have NOT run after the priority STOP; no source guard is described as observed RED/GREEN.
|
||||
|
||||
| R1 finding | Whole-file control | Baseline first guard / RED cause | Fixed positive and boundary controls |
|
||||
|---|---|---|---|
|
||||
|1 P1 identity|packages/bus/tests/p5-identity.test.mjs|Boot foreign sentinel still leaves queueCalls=1 where0 required; later foreign/refused listener increments calls; all are behavior assertions, not fixture errors.|Matching sentinel drains without any issued agent key; boot/later refusal zero queue consumption; human plugins/usage reads stay available; fresh sentinel check precedes each drain; sticky refusal never retries the management list.|
|
||||
|2 P2 namespace/checks|packages/bus/tests/p5-key-compatibility.test.mjs|Plain abcdefabcdef account native count at10 is ignored; no-model lookup returns proxy-key-refused below limit; empty checks wrongly perform metadata lookup; chief reset of plain account leaf refuses.|Below/at legacy quota, original account count/report with no proxy and unrelated proxy metadata; zero lookups for plain leaves or empty checks (legacy and daily); shared validated daily shape; daily model matching/report positive; old/new daily/plain/removal/reset human fence; malformed partial daily schema refuses.|
|
||||
|3 P2 nonblocking|packages/bus/tests/p5-background.test.mjs|The queue response is causally held; queue arrival plus one event-loop barrier leaves f.bus=null because503 startBroker awaits the poll. Startup assertion must fail before releasing the held response.|Ready/control/native key preflight/native usage/limit work completes while held; interval shares singleflight; explicit success/failure release updates availability; close of a held poll remains pending at4999ms and completes at the original5000ms virtual client deadline. No sleeps/deadline increase.|
|
||||
|
||||
The preserved24 whole files remain explicitly listed in whole-files.txt, plus the three new controls and the affected existing ModelKeys whole file (28 total). Current503-added cumulative-model fixture tests in token-limit/limit-checks/p5-key-context are corrected to legacy plain-account or accepted DAILY model semantics; their count/refusal/ownership assertions remain. All original09a847 base assertions/deadlines are retained; authorized usage inventory additions are unchanged.
|
||||
|
||||
Overlay sequence (isolated private copies only):
|
||||
1. Materialize Git503b91e56137482abef475bc3b1b72a64b0a329c in a private admitted runner root. Do not run product from this author worktree.
|
||||
2. Apply packet/baseline-controls.patch, which adds exactly the current three control files and fake fixture; it changes no production byte. This is the original503 baseline for all three first guards.
|
||||
3. Execute each control whole file under the admitted private gate-tool/native priority contract. Retain every genuine behavior RED.
|
||||
4. Apply packet/baseline-to-fixed.patch. It is the complete fixed source/test delta with the four already-installed controls removed from the patch to avoid reapplication. This must yield packet/source-tests.patch's exact fixed overlay on503.
|
||||
5. Rehash every fixed input, run the three controls then all28 current whole files with original budgets, collect native priority root/actual-child evidence, raw receipts/exit codes, actual consumed-source map and cleanup. Priority/setup failure stops, not retries.
|
||||
|
||||
Additional forensic snapshot: baselines/runtime-before-background-fix.mjs captures finding1+2-prepared runtime immediately before the finding3 source edit. It is evidence only; canonical baseline for replay is Git503 plus controls. No snapshot substitutes unobserved source controls for runtime evidence.
|
||||
Loaded 100 of 10992 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user