docs(row278): record green third gate and final review evidence
This commit is contained in:
1 parent
3e4c77ac60
commit
385a7194c7
90 files changed
+17402
-2
No files matched your search
@@ -5299,3 +5299,7 @@ Before: managed project/thread verbs had no Console conversation area. After: fi
|
||||
2026-10-22T11:37:16Z | Gander row278 #1783 implementation prepared, verification held | Before: owner thread claims were visible through row277 but absent from the Console Agents view. After: prepared a separate four-field table, a Console-owned read adapter, section-local refusal handling and an explicit tester refusal before busRead. Ten tests and six unique check definitions are prepared but unrun. Base moved from980cec88c to6af85df4b under sage-2625 on new gander/row278-b; no candidate path overlapped. No Node process, syntax check, test, browser, queue command, push helper or live action ran. Next: Sage CLEAR for the queue claim and gate; Webby reviews the verified manifest.
|
||||
|
||||
2026-10-22T12:09:45.285844+00:00 | Gander row278 run1 void, loader fake repaired | First new-file run stopped3/1/0 because the fake omitted BusReadError imported by base chat.mjs. Sage-2638 places the first-own-test red and permits the assertion-preserving export; test-only commit964b6b184. Runtime bytes unchanged. All run1 results void, no timeout or run leftovers. Run2 must restart every step after busy CLEAR; a second red goes to Sage then Mos before any change. No product acceptance or push claimed.
|
||||
|
||||
### 2026-10-22 | Gander | row278 gate run3
|
||||
|
||||
Fresh gate on3e4c77ac6 under sage-2648: bus793/0, WebUI345/0/1 (esbuild version skip), all ten shell files425/0, touched files15/0, M1-M6 killed6/6. No timeout; sweep0 run-created leftovers. Runs1/2 void. Seven-path manifest8fa859a0 goes to Webby for final review. No landing or live change.
|
||||
@@ -86,3 +86,41 @@ Longest receipt selection: scanned every available Gander row196 JSON result/sum
|
||||
| scripts/test-task.sh | 36.783798 | 231 | ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json |
|
||||
|
||||
Run3 numbers will be appended here after execution. Run1/run2 remain void next to their numbers above. No result carries.
|
||||
|
||||
## Run3 green under sage-2648
|
||||
|
||||
Candidate3e4c77ac6, source9696d1fcb, manifest8fa859a0. Fresh run from the top; nothing carried from void runs1/2. Started12:26:46Z and completed verification12:31:45Z,299 wall seconds. No unexpected failure, assertion change or timeout.
|
||||
|
||||
| Step | Pass/fail/skip | Wall seconds |
|
||||
|---|---:|---:|
|
||||
| syntax-0 | 1/0/0 | 0.064 |
|
||||
| syntax-1 | 1/0/0 | 0.064 |
|
||||
| syntax-2 | 1/0/0 | 0.064 |
|
||||
| syntax-3 | 1/0/0 | 0.064 |
|
||||
| syntax-4 | 1/0/0 | 0.064 |
|
||||
| syntax-6 | 1/0/0 | 0.064 |
|
||||
| red-0 | 0/1/0 intended RED | 0.214 |
|
||||
| red-1 | 0/1/0 intended RED | 3.773 |
|
||||
| focused-0 | 4/0/0 | 0.365 |
|
||||
| focused-1 | 6/0/0 | 3.922 |
|
||||
| focused-2 | 5/0/0 | 8.082 |
|
||||
| bus whole | 793/0/0 | 22.463 |
|
||||
| webui whole | 345/0/1 | 56.982 |
|
||||
| scripts/test-auth.sh whole | 15/0/0 | 0.816 |
|
||||
| scripts/test-conductor.sh whole | 17/0/0 | 6.078 |
|
||||
| scripts/test-config.sh whole | 31/0/0 | 1.868 |
|
||||
| scripts/test-discord.sh whole | 81/0/0 | 7.431 |
|
||||
| scripts/test-extension-package.sh whole | 18/0/0 | 1.366 |
|
||||
| scripts/test-foundation.sh whole | 44/0/0 | 39.901 |
|
||||
| scripts/test-land-work.sh whole | 86/0/0 | 11.338 |
|
||||
| scripts/test-queue.sh whole | 28/0/0 | 21.158 |
|
||||
| scripts/test-release.sh whole | 14/0/0 | 2.67 |
|
||||
| scripts/test-task.sh whole | 91/0/0 | 13.843 |
|
||||
|
||||
Syntax6/0. Both intended REDs repeat and restore byte-identical source and tracked status. Touched files whole: new HTTP4/0, new browser6/0, existing shell5/0. M1-M6 killed6/6, survivor0, timeout0, with passing bases and exact restores; run3/KILL-TABLE.md records named killers and times. Bus793/0, WebUI345/0/1, ten shell whole files425/0. Whole-phase reported assertions1563/0/1; this counts shell summary assertions, without adding nested TAP tests again. Focused repeats are listed separately. All direct test command JSONs use timeout -k10 300. Each whole shell command matches its pre-recorded limit exactly. No script changed.
|
||||
|
||||
Named skip: rebuilding from the source gives the same bytes, because esbuild0.28.1 is installed and0.28.2 is required. MOSAIC_REQUIRE_EDITOR_BUILD=1 would fail instead. No dependency install. The log line is saved in SUMMARY.json.
|
||||
|
||||
Sweep:0 run-created leftovers. The broad sweep found eight additional MCP/npm/code-mode processes plus the previously known browser helper; all predate the gate by over an hour. Their11:23:49-11:24:06Z start times are recorded with /proc ticks and UTC ps in run3/sweep.json and preexisting-processes.txt; initial broad output retained. Nothing signalled. Source and all ten script hashes still match their frozen values. No product/test bytes changed during the gate.
|
||||
|
||||
Seven-path manifest remains8fa859a0c617defe42e50028b057a603c6634f6db47ac2e3f7c01dfb290228a3. Records commit follows; publish own branch only under sage-2648, then hand directly to Webby and Sage. BUILD-LOG stays outside the landing manifest.
|
||||
@@ -7,3 +7,5 @@ Seven manifest paths are pinned from committed blobs; shell.test.mjs is now incl
|
||||
Run1 and run2 are void. Run3 must repeat syntax, both expected REDs, all three touched test files whole, M1-M6, bus and webui whole, and ten whole shell files. Direct Node test calls use timeout -k10 300. The whole shell-file calls use their SHELL-LIMITS.json value, derived and recorded in BUILD.md, with no script edit. No Node or test has run since the second stop. Sage grants the slot after Megavolt.
|
||||
|
||||
A further unexpected red, any moved existing assertion or a shell timeout goes to Sage and Mos unplaced, with no change/rerun. The editor rebuild environment skip (installed esbuild0.28.1 versus required0.28.2) stays named; no install. No push until green. BUILD-LOG is excluded from the landing manifest and lands as a doc-only append after code.
|
||||
|
||||
Run3 is now GREEN under sage-2648 on3e4c77ac6. run3/SUMMARY.json, raw command/log files and KILL-TABLE.md are the acceptance records. Bus793/0, WebUI345/0/1 (named esbuild version skip), ten shells425/0, touched whole files15/0, M1-M6 killed6/6, no timeout, sweep0 run-created leftovers. Source/test/script bytes match the pinned candidate. Run1/run2 remain void. Webby final manifest review is next after publication.
|
||||
@@ -15,6 +15,6 @@
|
||||
"packages/webui/README.md": "426007525d15ad0fa11ba02d6cc5d8436c7ff3fa38beb01e9a651c202169d6a5",
|
||||
"packages/webui/tests/shell.test.mjs": "fd7ad903b682f8f6ceee2d75111b01aa97f50233cd875dd5553e3e83de33ce32"
|
||||
},
|
||||
"verification": "Run1 and run2 void. Run3 not started; Sage holds the slot.",
|
||||
"publication": "held until green"
|
||||
"verification": "Run3 green under sage-2648; run3/SUMMARY.json contains fresh evidence. Runs1/2 void.",
|
||||
"publication": "authorized after green under sage-2648"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Assemble run3 evidence from complete logs without running tests."""
|
||||
import hashlib, json, re
|
||||
from pathlib import Path
|
||||
HERE=Path(__file__).resolve().parent
|
||||
RUN=HERE/'run3'
|
||||
def main():
|
||||
sections={n:json.loads((RUN/n/'results.json').read_text()) for n in ['syntax','red','focused','changes','whole']}
|
||||
for n in ['syntax','focused','whole']:
|
||||
assert all(s['code']==0 and not s['timeout'] for s in sections[n]['steps']), n
|
||||
assert len(sections['whole']['steps'])==12
|
||||
assert all(s['code']!=0 and not s['timeout'] for s in sections['red']['steps'])
|
||||
changes=sections['changes']['changes']
|
||||
assert len(changes)==6 and all(s['outcome']=='killed' and not s['timeout'] for s in changes)
|
||||
limits=json.loads((HERE/'SHELL-LIMITS.json').read_text())['scripts']
|
||||
shells=[]
|
||||
for s in sections['whole']['steps'][2:]:
|
||||
command=json.loads(Path(s['log']).with_suffix('.command.json').read_text())
|
||||
script=command[-1]
|
||||
assert command==['timeout','-k','10',str(limits[script]['limit_seconds']),'bash',script]
|
||||
raw=Path(s['log']).read_text(errors='replace')
|
||||
matches=re.findall(r'([^\n]*?: (\d+) passed, (\d+) failed)',raw)
|
||||
assert matches, script
|
||||
line, passed, failed=matches[-1]
|
||||
assert int(failed)==0
|
||||
shells.append(dict(script=script,pass_count=int(passed),fail_count=int(failed),seconds=s['seconds'],limit_seconds=limits[script]['limit_seconds'],summary_line=line,command=command))
|
||||
webui=Path(sections['whole']['steps'][1]['log']).read_text(errors='replace')
|
||||
skips=[line for line in webui.splitlines() if '# SKIP' in line]
|
||||
direct=[]
|
||||
for p in RUN.rglob('*.command.json'):
|
||||
cmd=json.loads(p.read_text())
|
||||
if 'node' in cmd and '--test' in cmd:
|
||||
assert cmd[:5]==['timeout','-k','10','300','node']
|
||||
direct.append(str(p))
|
||||
expected=json.loads((HERE/'CANDIDATE-SHAS.json').read_text())
|
||||
repo=HERE.parents[3]
|
||||
assert all(hashlib.sha256((repo/n).read_bytes()).hexdigest()==v for n,v in expected.items())
|
||||
assert all(hashlib.sha256((repo/n).read_bytes()).hexdigest()==v['script_sha256'] for n,v in limits.items())
|
||||
result=dict(status='GREEN',grant='sage-2648',candidate='3e4c77ac6056e8efa887eecdbc4001d249b880f6',source='9696d1fcb78d6082cae8dcb61913225e98c9c138',manifest=hashlib.sha256((HERE/'MANIFEST.sha256').read_bytes()).hexdigest(),sections=sections,shells=shells,named_skips=skips,killed=len(changes),survived=0,timeouts=0,timeout_wrapped_direct_test_commands=direct,all_candidate_and_script_hashes_match=True)
|
||||
(RUN/'SUMMARY.json').write_text(json.dumps(result,indent=2)+'\n')
|
||||
defs={d['id']:d for d in json.loads((HERE/'changes.json').read_text())}
|
||||
lines=['# Run3 kill table','','All six bases passed; no timeout. Every change restored exact bytes and tracked git status.','','| Check | Named killer | Base seconds | Changed seconds | Result |','|---|---|---:|---:|---|']
|
||||
lines += [f"| {s['id']} | {defs[s['id']]['pattern']} | {s['base_seconds']} | {s['seconds']} | {s['outcome']} |" for s in changes]
|
||||
(RUN/'KILL-TABLE.md').write_text('\n'.join(lines)+'\n')
|
||||
print(json.dumps(dict(shells=shells,named_skips=skips,killed=len(changes)),indent=2))
|
||||
if __name__=='__main__': main()
|
||||
@@ -0,0 +1,12 @@
|
||||
# Run3 kill table
|
||||
|
||||
All six bases passed; no timeout. Every change restored exact bytes and tracked git status.
|
||||
|
||||
| Check | Named killer | Base seconds | Changed seconds | Result |
|
||||
|---|---|---:|---:|---|
|
||||
| M1 | row278 browser lists held claims | 0.816 | 3.774 | killed |
|
||||
| M2 | row278 browser lists held claims | 0.816 | 0.766 | killed |
|
||||
| M3 | row278 browser claims 403 stays local | 0.866 | 3.925 | killed |
|
||||
| M4 | row278 tester socket refuses thread claims | 0.214 | 0.214 | killed |
|
||||
| M5 | row278 Console adapter calls argument-free | 0.315 | 0.315 | killed |
|
||||
| M6 | row278 browser claims 403 stays local | 0.866 | 3.823 | killed |
|
||||
@@ -0,0 +1,671 @@
|
||||
{
|
||||
"status": "GREEN",
|
||||
"grant": "sage-2648",
|
||||
"candidate": "3e4c77ac6056e8efa887eecdbc4001d249b880f6",
|
||||
"source": "9696d1fcb78d6082cae8dcb61913225e98c9c138",
|
||||
"manifest": "8fa859a0c617defe42e50028b057a603c6634f6db47ac2e3f7c01dfb290228a3",
|
||||
"sections": {
|
||||
"syntax": {
|
||||
"grant": "sage-2648",
|
||||
"stage": "syntax",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-0.log",
|
||||
"name": "syntax-0",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-1.log",
|
||||
"name": "syntax-1",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-2.log",
|
||||
"name": "syntax-2",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-3.log",
|
||||
"name": "syntax-3",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-4.log",
|
||||
"name": "syntax-4",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-6.log",
|
||||
"name": "syntax-6",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
}
|
||||
]
|
||||
},
|
||||
"red": {
|
||||
"grant": "sage-2648",
|
||||
"stage": "red",
|
||||
"steps": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/red/red-0.log",
|
||||
"name": "red-0",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.773,
|
||||
"log": "agents/gander/work/queue-278/run3/red/red-1.log",
|
||||
"name": "red-1",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"focused": {
|
||||
"grant": "sage-2648",
|
||||
"stage": "focused",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.365,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-0.log",
|
||||
"name": "focused-0",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 4,
|
||||
"pass": 4,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 3.922,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-1.log",
|
||||
"name": "focused-1",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 8.082,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-2.log",
|
||||
"name": "focused-2",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 5,
|
||||
"pass": 5,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"changes": {
|
||||
"grant": "sage-2648",
|
||||
"static": [
|
||||
{
|
||||
"id": "M1",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "e1b693b5ddf3cd55091dd4c0a47934ca22fe7851c6e942f2386a6eefdcb5a1a0"
|
||||
},
|
||||
{
|
||||
"id": "M2",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "6a7274e2d2281ac2d927a00e6cabe72656f648f721607f0896cac107a4e22fdb"
|
||||
},
|
||||
{
|
||||
"id": "M3",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "7c30c0cfa6908bc0946df325d417f726ea67373b8afffe72fd3aebcd6a52c52b"
|
||||
},
|
||||
{
|
||||
"id": "M4",
|
||||
"file": "packages/webui/src/serve.mjs",
|
||||
"occurrences": 1,
|
||||
"before": "aa25b50543b5bc632ac984e85b0d8b43b1c9af2d617bfc7c19351d07310f396d",
|
||||
"after": "10324c3a22dbefac6286af4f06e53a6e8057aef56f744eaf7bdd879ac76626e1"
|
||||
},
|
||||
{
|
||||
"id": "M5",
|
||||
"file": "packages/webui/src/cli.mjs",
|
||||
"occurrences": 1,
|
||||
"before": "7ac85787f614aabce4b8eccef01fcdbf1018003e806c5de97d40f47c4041710a",
|
||||
"after": "3fa30f91b19a1ea0348214b927925b163e51a6184b97910ded2dbc2282e1ddf6"
|
||||
},
|
||||
{
|
||||
"id": "M6",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "c1c4f97a962d8da9055373ca7ac4441712c2c9f4ea675d7b137a3306d0621012"
|
||||
}
|
||||
],
|
||||
"bases": {
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs|row278 browser lists held claims": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.816,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M1-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs|row278 browser claims 403 stays local": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.866,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M3-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims.test.mjs|row278 tester socket refuses thread claims": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M4-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims.test.mjs|row278 Console adapter calls argument-free": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.315,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M5-base.log"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.774,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M1.log",
|
||||
"id": "M1",
|
||||
"base_seconds": 0.816,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.766,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M2.log",
|
||||
"id": "M2",
|
||||
"base_seconds": 0.816,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.925,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M3.log",
|
||||
"id": "M3",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M4.log",
|
||||
"id": "M4",
|
||||
"base_seconds": 0.214,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.315,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M5.log",
|
||||
"id": "M5",
|
||||
"base_seconds": 0.315,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.823,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M6.log",
|
||||
"id": "M6",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
}
|
||||
]
|
||||
},
|
||||
"whole": {
|
||||
"grant": "sage-2648",
|
||||
"stage": "whole",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 22.463,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/bus.log",
|
||||
"name": "bus",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 793,
|
||||
"pass": 793,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 56.982,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/webui.log",
|
||||
"name": "webui",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 346,
|
||||
"pass": 345,
|
||||
"fail": 0,
|
||||
"skipped": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.816,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-auth.log",
|
||||
"name": "test-auth",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 6.078,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-conductor.log",
|
||||
"name": "test-conductor",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 1.868,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-config.log",
|
||||
"name": "test-config",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 7.431,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-discord.log",
|
||||
"name": "test-discord",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 1.366,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-extension-package.log",
|
||||
"name": "test-extension-package",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 39.901,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-foundation.log",
|
||||
"name": "test-foundation",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 11.338,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-land-work.log",
|
||||
"name": "test-land-work",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 21.158,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-queue.log",
|
||||
"name": "test-queue",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 2.67,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-release.log",
|
||||
"name": "test-release",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 13.843,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-task.log",
|
||||
"name": "test-task",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"shells": [
|
||||
{
|
||||
"script": "scripts/test-auth.sh",
|
||||
"pass_count": 15,
|
||||
"fail_count": 0,
|
||||
"seconds": 0.816,
|
||||
"limit_seconds": 126,
|
||||
"summary_line": "selftest: 15 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"126",
|
||||
"bash",
|
||||
"scripts/test-auth.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-conductor.sh",
|
||||
"pass_count": 17,
|
||||
"fail_count": 0,
|
||||
"seconds": 6.078,
|
||||
"limit_seconds": 145,
|
||||
"summary_line": "selftest: 17 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"145",
|
||||
"bash",
|
||||
"scripts/test-conductor.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-config.sh",
|
||||
"pass_count": 31,
|
||||
"fail_count": 0,
|
||||
"seconds": 1.868,
|
||||
"limit_seconds": 130,
|
||||
"summary_line": "selftest: 31 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"130",
|
||||
"bash",
|
||||
"scripts/test-config.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-discord.sh",
|
||||
"pass_count": 81,
|
||||
"fail_count": 0,
|
||||
"seconds": 7.431,
|
||||
"limit_seconds": 147,
|
||||
"summary_line": "discord suite: 81 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"147",
|
||||
"bash",
|
||||
"scripts/test-discord.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-extension-package.sh",
|
||||
"pass_count": 18,
|
||||
"fail_count": 0,
|
||||
"seconds": 1.366,
|
||||
"limit_seconds": 130,
|
||||
"summary_line": "extension package selftest: 18 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"130",
|
||||
"bash",
|
||||
"scripts/test-extension-package.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-foundation.sh",
|
||||
"pass_count": 44,
|
||||
"fail_count": 0,
|
||||
"seconds": 39.901,
|
||||
"limit_seconds": 240,
|
||||
"summary_line": "selftest: 44 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"240",
|
||||
"bash",
|
||||
"scripts/test-foundation.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-land-work.sh",
|
||||
"pass_count": 86,
|
||||
"fail_count": 0,
|
||||
"seconds": 11.338,
|
||||
"limit_seconds": 158,
|
||||
"summary_line": "land-work selftests: 86 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"158",
|
||||
"bash",
|
||||
"scripts/test-land-work.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-queue.sh",
|
||||
"pass_count": 28,
|
||||
"fail_count": 0,
|
||||
"seconds": 21.158,
|
||||
"limit_seconds": 191,
|
||||
"summary_line": "queue suite: 28 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"191",
|
||||
"bash",
|
||||
"scripts/test-queue.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-release.sh",
|
||||
"pass_count": 14,
|
||||
"fail_count": 0,
|
||||
"seconds": 2.67,
|
||||
"limit_seconds": 157,
|
||||
"summary_line": "selftest: 14 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"157",
|
||||
"bash",
|
||||
"scripts/test-release.sh"
|
||||
]
|
||||
},
|
||||
{
|
||||
"script": "scripts/test-task.sh",
|
||||
"pass_count": 91,
|
||||
"fail_count": 0,
|
||||
"seconds": 13.843,
|
||||
"limit_seconds": 231,
|
||||
"summary_line": "selftest: 91 passed, 0 failed",
|
||||
"command": [
|
||||
"timeout",
|
||||
"-k",
|
||||
"10",
|
||||
"231",
|
||||
"bash",
|
||||
"scripts/test-task.sh"
|
||||
]
|
||||
}
|
||||
],
|
||||
"named_skips": [
|
||||
"ok 98 - rebuilding from the source gives the same bytes (needs the pinned esbuild; MOSAIC_REQUIRE_EDITOR_BUILD=1 makes its absence a failure) # SKIP esbuild 0.28.1 is installed at /mnt/storage/src/mosaic-stack/node_modules/esbuild; the editor rebuild needs exactly 0.28.2 (npm ci --ignore-scripts in packages/webui) (set MOSAIC_REQUIRE_EDITOR_BUILD=1 to fail instead of skip)"
|
||||
],
|
||||
"killed": 6,
|
||||
"survived": 0,
|
||||
"timeouts": 0,
|
||||
"timeout_wrapped_direct_test_commands": [
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/focused/focused-2.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/focused/focused-0.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/focused/focused-1.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M1-base.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M4-base.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M1.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M4.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M6.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M2.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M3-base.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M3.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M5-base.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/changes/M5.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/whole/bus.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/whole/webui.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/red/red-1.command.json",
|
||||
"/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-278/run3/red/red-0.command.json"
|
||||
],
|
||||
"all_candidate_and_script_hashes_match": true,
|
||||
"sweep": {
|
||||
"timestamp": "2026-10-22T12:31:45.380268+00:00",
|
||||
"count": 0,
|
||||
"remaining": [],
|
||||
"excluded_preexisting_infrastructure": [
|
||||
{
|
||||
"pid": 2880439,
|
||||
"comm": "chrome-devtools",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880281,
|
||||
"comm": "npm exec @model",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880282,
|
||||
"comm": "npm exec chrome",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880283,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880284,
|
||||
"comm": "npm exec @playw",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880445,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:50.780000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880487,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:51.030000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880537,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:51.160000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2883251,
|
||||
"comm": "codex-code-mode",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:24:06.230000+00:00",
|
||||
"predates_run": true
|
||||
}
|
||||
],
|
||||
"note": "Read-only cwd sweep. Initial broad sweep retained as sweep-initial.json. Eight additional MCP/npm/code-mode infrastructure processes all started 11:23:49-11:24:06 UTC, before run3 start12:26:46 UTC; /proc start ticks and UTC ps receipt confirm. No signalling. Run-created leftovers0."
|
||||
},
|
||||
"shell_total": {
|
||||
"pass": 425,
|
||||
"fail": 0
|
||||
},
|
||||
"whole_totals_including_shell_assertions": {
|
||||
"pass": 1563,
|
||||
"fail": 0,
|
||||
"skipped": 1
|
||||
},
|
||||
"wall_seconds": 299.0
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/gn8bsPt
|
||||
@@ -0,0 +1,388 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 605.442749
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 720.520615
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
not ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 3560.890687
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:39:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: "Uncaught (in promise) Error: !!document.querySelector('#b-thread-claims'): undefined"
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async setup (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:33:3)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:40:49)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3682.526905
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
not ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 577.050233
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:39:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
'2' !== '1'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: '1'
|
||||
actual: '2'
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:46:10)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 703.48697
|
||||
TAP version 13
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
ok 1 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 662.131003
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 780.998834
|
||||
TAP version 13
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
not ok 1 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 3697.871789
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:55:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: `Uncaught (in promise) Error: document.querySelector('[aria-labelledby="b-thread-claims"] code')?.textContent==="human-required": undefined`
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:61:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3840.85204
|
||||
TAP version 13
|
||||
# Subtest: row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
ok 1 - row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
---
|
||||
duration_ms: 13.92771
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 124.707285
|
||||
TAP version 13
|
||||
# Subtest: row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
not ok 1 - row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
---
|
||||
duration_ms: 14.582953
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:46:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
200 !== 403
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 403
|
||||
actual: 200
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:51:10)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 129.872985
|
||||
TAP version 13
|
||||
# Subtest: row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
ok 1 - row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
---
|
||||
duration_ms: 113.932137
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 230.121832
|
||||
TAP version 13
|
||||
# Subtest: row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
not ok 1 - row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
---
|
||||
duration_ms: 116.71152
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:54:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
{
|
||||
args: [],
|
||||
tester: false,
|
||||
+ verb: 'agents'
|
||||
- verb: 'thread.claims'
|
||||
}
|
||||
]
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
0:
|
||||
verb: 'thread.claims'
|
||||
args:
|
||||
tester: false
|
||||
actual:
|
||||
0:
|
||||
verb: 'agents'
|
||||
args:
|
||||
tester: false
|
||||
operator: 'deepStrictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:67:10)
|
||||
Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
Test.run (node:internal/test_runner/test:1402:25)
|
||||
Test.start (node:internal/test_runner/test:1262:17)
|
||||
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 234.638433
|
||||
TAP version 13
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
not ok 1 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 3622.781369
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:55:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: `Uncaught (in promise) Error: !!document.querySelector('.s1-stale') && document.querySelector('[aria-labelledby="b-thread-claims"] code')?.textContent==='not-read': undefined`
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:67:3)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3737.654687
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"static": [
|
||||
{
|
||||
"id": "M1",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "e1b693b5ddf3cd55091dd4c0a47934ca22fe7851c6e942f2386a6eefdcb5a1a0"
|
||||
},
|
||||
{
|
||||
"id": "M2",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "6a7274e2d2281ac2d927a00e6cabe72656f648f721607f0896cac107a4e22fdb"
|
||||
},
|
||||
{
|
||||
"id": "M3",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "7c30c0cfa6908bc0946df325d417f726ea67373b8afffe72fd3aebcd6a52c52b"
|
||||
},
|
||||
{
|
||||
"id": "M4",
|
||||
"file": "packages/webui/src/serve.mjs",
|
||||
"occurrences": 1,
|
||||
"before": "aa25b50543b5bc632ac984e85b0d8b43b1c9af2d617bfc7c19351d07310f396d",
|
||||
"after": "10324c3a22dbefac6286af4f06e53a6e8057aef56f744eaf7bdd879ac76626e1"
|
||||
},
|
||||
{
|
||||
"id": "M5",
|
||||
"file": "packages/webui/src/cli.mjs",
|
||||
"occurrences": 1,
|
||||
"before": "7ac85787f614aabce4b8eccef01fcdbf1018003e806c5de97d40f47c4041710a",
|
||||
"after": "3fa30f91b19a1ea0348214b927925b163e51a6184b97910ded2dbc2282e1ddf6"
|
||||
},
|
||||
{
|
||||
"id": "M6",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "c1c4f97a962d8da9055373ca7ac4441712c2c9f4ea675d7b137a3306d0621012"
|
||||
}
|
||||
],
|
||||
"bases": {
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs|row278 browser lists held claims": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.816,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M1-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs|row278 browser claims 403 stays local": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.866,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M3-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims.test.mjs|row278 tester socket refuses thread claims": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M4-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims.test.mjs|row278 Console adapter calls argument-free": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.315,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M5-base.log"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.774,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M1.log",
|
||||
"id": "M1",
|
||||
"base_seconds": 0.816,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.766,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M2.log",
|
||||
"id": "M2",
|
||||
"base_seconds": 0.816,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.925,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M3.log",
|
||||
"id": "M3",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M4.log",
|
||||
"id": "M4",
|
||||
"base_seconds": 0.214,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.315,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M5.log",
|
||||
"id": "M5",
|
||||
"base_seconds": 0.315,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.823,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M6.log",
|
||||
"id": "M6",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser lists held claims", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 605.442749
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 720.520615
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser lists held claims", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,27 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
not ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 3560.890687
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:39:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: "Uncaught (in promise) Error: !!document.querySelector('#b-thread-claims'): undefined"
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async setup (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:33:3)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:40:49)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3682.526905
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser lists held claims", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,33 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
not ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 577.050233
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:39:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
'2' !== '1'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: '1'
|
||||
actual: '2'
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:46:10)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 703.48697
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser claims 403 stays local", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
ok 1 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 662.131003
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 780.998834
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser claims 403 stays local", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,26 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
not ok 1 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 3697.871789
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:55:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: `Uncaught (in promise) Error: document.querySelector('[aria-labelledby="b-thread-claims"] code')?.textContent==="human-required": undefined`
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:61:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3840.85204
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 tester socket refuses thread claims", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
ok 1 - row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
---
|
||||
duration_ms: 13.92771
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 124.707285
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 tester socket refuses thread claims", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
@@ -0,0 +1,33 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
not ok 1 - row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
---
|
||||
duration_ms: 14.582953
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:46:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
200 !== 403
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 403
|
||||
actual: 200
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:51:10)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 129.872985
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 Console adapter calls argument-free", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
ok 1 - row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
---
|
||||
duration_ms: 113.932137
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 230.121832
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 Console adapter calls argument-free", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
@@ -0,0 +1,50 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
not ok 1 - row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
---
|
||||
duration_ms: 116.71152
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:54:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
{
|
||||
args: [],
|
||||
tester: false,
|
||||
+ verb: 'agents'
|
||||
- verb: 'thread.claims'
|
||||
}
|
||||
]
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
0:
|
||||
verb: 'thread.claims'
|
||||
args:
|
||||
tester: false
|
||||
actual:
|
||||
0:
|
||||
verb: 'agents'
|
||||
args:
|
||||
tester: false
|
||||
operator: 'deepStrictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:67:10)
|
||||
Test.runInAsyncScope (node:async_hooks:226:14)
|
||||
Test.run (node:internal/test_runner/test:1402:25)
|
||||
Test.start (node:internal/test_runner/test:1262:17)
|
||||
startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 234.638433
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser claims 403 stays local", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,26 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
not ok 1 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 3622.781369
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:55:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: `Uncaught (in promise) Error: !!document.querySelector('.s1-stale') && document.querySelector('[aria-labelledby="b-thread-claims"] code')?.textContent==='not-read': undefined`
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:67:3)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3737.654687
|
||||
@@ -0,0 +1,129 @@
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"static": [
|
||||
{
|
||||
"id": "M1",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "e1b693b5ddf3cd55091dd4c0a47934ca22fe7851c6e942f2386a6eefdcb5a1a0"
|
||||
},
|
||||
{
|
||||
"id": "M2",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "6a7274e2d2281ac2d927a00e6cabe72656f648f721607f0896cac107a4e22fdb"
|
||||
},
|
||||
{
|
||||
"id": "M3",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "7c30c0cfa6908bc0946df325d417f726ea67373b8afffe72fd3aebcd6a52c52b"
|
||||
},
|
||||
{
|
||||
"id": "M4",
|
||||
"file": "packages/webui/src/serve.mjs",
|
||||
"occurrences": 1,
|
||||
"before": "aa25b50543b5bc632ac984e85b0d8b43b1c9af2d617bfc7c19351d07310f396d",
|
||||
"after": "10324c3a22dbefac6286af4f06e53a6e8057aef56f744eaf7bdd879ac76626e1"
|
||||
},
|
||||
{
|
||||
"id": "M5",
|
||||
"file": "packages/webui/src/cli.mjs",
|
||||
"occurrences": 1,
|
||||
"before": "7ac85787f614aabce4b8eccef01fcdbf1018003e806c5de97d40f47c4041710a",
|
||||
"after": "3fa30f91b19a1ea0348214b927925b163e51a6184b97910ded2dbc2282e1ddf6"
|
||||
},
|
||||
{
|
||||
"id": "M6",
|
||||
"file": "packages/webui/src/public/bus.js",
|
||||
"occurrences": 1,
|
||||
"before": "c0306a4db82c286826b157cceb036496666f58ce8073d14280e58c10377ed0d0",
|
||||
"after": "c1c4f97a962d8da9055373ca7ac4441712c2c9f4ea675d7b137a3306d0621012"
|
||||
}
|
||||
],
|
||||
"bases": {
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs|row278 browser lists held claims": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.816,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M1-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs|row278 browser claims 403 stays local": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.866,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M3-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims.test.mjs|row278 tester socket refuses thread claims": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M4-base.log"
|
||||
},
|
||||
"packages/webui/tests/thread-claims.test.mjs|row278 Console adapter calls argument-free": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.315,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M5-base.log"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.774,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M1.log",
|
||||
"id": "M1",
|
||||
"base_seconds": 0.816,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.766,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M2.log",
|
||||
"id": "M2",
|
||||
"base_seconds": 0.816,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.925,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M3.log",
|
||||
"id": "M3",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M4.log",
|
||||
"id": "M4",
|
||||
"base_seconds": 0.214,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.315,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M5.log",
|
||||
"id": "M5",
|
||||
"base_seconds": 0.315,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.823,
|
||||
"log": "agents/gander/work/queue-278/run3/changes/M6.log",
|
||||
"id": "M6",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
2026-10-22T12:31:45Z
|
||||
@@ -0,0 +1,169 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
ok 1 - row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
---
|
||||
duration_ms: 30.943221
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 HTTP read preserves bus refusal and rejects a malformed result
|
||||
ok 2 - row278 HTTP read preserves bus refusal and rejects a malformed result
|
||||
---
|
||||
duration_ms: 8.173781
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
ok 3 - row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
---
|
||||
duration_ms: 4.541077
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
ok 4 - row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
---
|
||||
duration_ms: 113.434013
|
||||
type: 'test'
|
||||
...
|
||||
1..4
|
||||
# tests 4
|
||||
# suites 0
|
||||
# pass 4
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 268.961809
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 650.460597
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
ok 2 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 724.644513
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser renders only four escaped claim fields and never instance or other extras
|
||||
ok 3 - row278 browser renders only four escaped claim fields and never instance or other extras
|
||||
---
|
||||
duration_ms: 565.740361
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser sign-out removes claims and prevents reuse of cached answers
|
||||
ok 4 - row278 browser sign-out removes claims and prevents reuse of cached answers
|
||||
---
|
||||
duration_ms: 607.120628
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 tester browser keeps role rows without requesting the owner claims section
|
||||
ok 5 - row278 tester browser keeps role rows without requesting the owner claims section
|
||||
---
|
||||
duration_ms: 561.1764
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser discards a late claims answer after sign-out
|
||||
ok 6 - row278 browser discards a late claims answer after sign-out
|
||||
---
|
||||
duration_ms: 615.34577
|
||||
type: 'test'
|
||||
...
|
||||
1..6
|
||||
# tests 6
|
||||
# suites 0
|
||||
# pass 6
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3840.507537
|
||||
TAP version 13
|
||||
# Subtest: tokens.css and icons.svg are byte copies of docs/design
|
||||
ok 1 - tokens.css and icons.svg are byte copies of docs/design
|
||||
---
|
||||
duration_ms: 6.354382
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: JetBrains Mono files match the digests in their sources file, with the OFL text
|
||||
ok 2 - JetBrains Mono files match the digests in their sources file, with the OFL text
|
||||
---
|
||||
duration_ms: 3.767539
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: shipped strings are unchanged, and the web keeps its write boundary
|
||||
ok 3 - shipped strings are unchanged, and the web keeps its write boundary
|
||||
---
|
||||
duration_ms: 2.60801
|
||||
type: 'test'
|
||||
...
|
||||
# ROW191_LAYOUT {"width":1440,"height":1000,"controls":212.5,"tree":914,"main":914}
|
||||
# Subtest: shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette
|
||||
ok 4 - shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette
|
||||
---
|
||||
duration_ms: 5482.449405
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: five states on Board, Inbox, Tasks, Agents and Trail
|
||||
ok 5 - five states on Board, Inbox, Tasks, Agents and Trail
|
||||
---
|
||||
duration_ms: 2387.650792
|
||||
type: 'test'
|
||||
...
|
||||
1..5
|
||||
# tests 5
|
||||
# suites 0
|
||||
# pass 5
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 7989.37428
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "focused",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.365,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-0.log",
|
||||
"name": "focused-0",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 4,
|
||||
"pass": 4,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 3.922,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-1.log",
|
||||
"name": "focused-1",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 8.082,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-2.log",
|
||||
"name": "focused-2",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 5,
|
||||
"pass": 5,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
@@ -0,0 +1,34 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
ok 1 - row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
---
|
||||
duration_ms: 30.943221
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 HTTP read preserves bus refusal and rejects a malformed result
|
||||
ok 2 - row278 HTTP read preserves bus refusal and rejects a malformed result
|
||||
---
|
||||
duration_ms: 8.173781
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
ok 3 - row278 tester socket refuses thread claims explicitly with zero bus calls
|
||||
---
|
||||
duration_ms: 4.541077
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
ok 4 - row278 Console adapter calls argument-free thread.claims through the normal transport
|
||||
---
|
||||
duration_ms: 113.434013
|
||||
type: 'test'
|
||||
...
|
||||
1..4
|
||||
# tests 4
|
||||
# suites 0
|
||||
# pass 4
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 268.961809
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,46 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 650.460597
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser claims 403 stays local and role section remains byte-equal
|
||||
ok 2 - row278 browser claims 403 stays local and role section remains byte-equal
|
||||
---
|
||||
duration_ms: 724.644513
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser renders only four escaped claim fields and never instance or other extras
|
||||
ok 3 - row278 browser renders only four escaped claim fields and never instance or other extras
|
||||
---
|
||||
duration_ms: 565.740361
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser sign-out removes claims and prevents reuse of cached answers
|
||||
ok 4 - row278 browser sign-out removes claims and prevents reuse of cached answers
|
||||
---
|
||||
duration_ms: 607.120628
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 tester browser keeps role rows without requesting the owner claims section
|
||||
ok 5 - row278 tester browser keeps role rows without requesting the owner claims section
|
||||
---
|
||||
duration_ms: 561.1764
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: row278 browser discards a late claims answer after sign-out
|
||||
ok 6 - row278 browser discards a late claims answer after sign-out
|
||||
---
|
||||
duration_ms: 615.34577
|
||||
type: 'test'
|
||||
...
|
||||
1..6
|
||||
# tests 6
|
||||
# suites 0
|
||||
# pass 6
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3840.507537
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "packages/webui/tests/shell.test.mjs"]
|
||||
@@ -0,0 +1,41 @@
|
||||
TAP version 13
|
||||
# Subtest: tokens.css and icons.svg are byte copies of docs/design
|
||||
ok 1 - tokens.css and icons.svg are byte copies of docs/design
|
||||
---
|
||||
duration_ms: 6.354382
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: JetBrains Mono files match the digests in their sources file, with the OFL text
|
||||
ok 2 - JetBrains Mono files match the digests in their sources file, with the OFL text
|
||||
---
|
||||
duration_ms: 3.767539
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: shipped strings are unchanged, and the web keeps its write boundary
|
||||
ok 3 - shipped strings are unchanged, and the web keeps its write boundary
|
||||
---
|
||||
duration_ms: 2.60801
|
||||
type: 'test'
|
||||
...
|
||||
# ROW191_LAYOUT {"width":1440,"height":1000,"controls":212.5,"tree":914,"main":914}
|
||||
# Subtest: shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette
|
||||
ok 4 - shell in a browser: System default, seeded states, 400px, focus and the Ctrl+K palette
|
||||
---
|
||||
duration_ms: 5482.449405
|
||||
type: 'test'
|
||||
...
|
||||
# Subtest: five states on Board, Inbox, Tasks, Agents and Trail
|
||||
ok 5 - five states on Board, Inbox, Tasks, Agents and Trail
|
||||
---
|
||||
duration_ms: 2387.650792
|
||||
type: 'test'
|
||||
...
|
||||
1..5
|
||||
# tests 5
|
||||
# suites 0
|
||||
# pass 5
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 7989.37428
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "focused",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.365,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-0.log",
|
||||
"name": "focused-0",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 4,
|
||||
"pass": 4,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 3.922,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-1.log",
|
||||
"name": "focused-1",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 6,
|
||||
"pass": 6,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 8.082,
|
||||
"log": "agents/gander/work/queue-278/run3/focused/focused-2.log",
|
||||
"name": "focused-2",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 5,
|
||||
"pass": 5,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
PID PPID STARTED COMMAND
|
||||
2880281 2880050 Thu Oct 22 11:23:49 2026 npm exec @model
|
||||
2880282 2880050 Thu Oct 22 11:23:49 2026 npm exec chrome
|
||||
2880283 2880050 Thu Oct 22 11:23:49 2026 node-MainThread
|
||||
2880284 2880050 Thu Oct 22 11:23:49 2026 npm exec @playw
|
||||
2880445 2880281 Thu Oct 22 11:23:50 2026 node-MainThread
|
||||
2880487 2880284 Thu Oct 22 11:23:51 2026 node-MainThread
|
||||
2880537 2880439 Thu Oct 22 11:23:51 2026 node-MainThread
|
||||
2883251 2880050 Thu Oct 22 11:24:06 2026 codex-code-mode
|
||||
2880439 2880282 Thu Oct 22 11:23:50 2026 chrome-devtools
|
||||
@@ -0,0 +1,94 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
not ok 1 - row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
---
|
||||
duration_ms: 20.063315
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:17:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
404 !== 200
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 200
|
||||
actual: 404
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:24:10)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 143.720167
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
not ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 3570.99556
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:39:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: "Uncaught (in promise) Error: !!document.querySelector('#b-thread-claims'): undefined"
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async setup (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:33:3)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:40:49)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3691.203411
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "red",
|
||||
"steps": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/red/red-0.log",
|
||||
"name": "red-0",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.773,
|
||||
"log": "agents/gander/work/queue-278/run3/red/red-1.log",
|
||||
"name": "red-1",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 HTTP read returns held claims", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
@@ -0,0 +1,33 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
not ok 1 - row278 HTTP read returns held claims without send and refuses arguments before the bus
|
||||
---
|
||||
duration_ms: 20.063315
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:17:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
404 !== 200
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 200
|
||||
actual: 404
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims.test.mjs:24:10)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 143.720167
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row278 browser lists held claims", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
@@ -0,0 +1,27 @@
|
||||
TAP version 13
|
||||
# Subtest: row278 browser lists held claims and release preserves role rows and totals
|
||||
not ok 1 - row278 browser lists held claims and release preserves role rows and totals
|
||||
---
|
||||
duration_ms: 3570.99556
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:39:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: "Uncaught (in promise) Error: !!document.querySelector('#b-thread-claims'): undefined"
|
||||
code: 'ERR_TEST_FAILURE'
|
||||
stack: |-
|
||||
Object.evaluate (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/browser.mjs:49:35)
|
||||
process.processTicksAndRejections (node:internal/process/task_queues:104:5)
|
||||
async setup (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:33:3)
|
||||
async TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/webui/tests/thread-claims-browser.test.mjs:40:49)
|
||||
async Test.run (node:internal/test_runner/test:1409:7)
|
||||
async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3)
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 0
|
||||
# fail 1
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 3691.203411
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "red",
|
||||
"steps": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "agents/gander/work/queue-278/run3/red/red-0.log",
|
||||
"name": "red-0",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 3.773,
|
||||
"log": "agents/gander/work/queue-278/run3/red/red-1.log",
|
||||
"name": "red-1",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
2026-10-22T12:26:46Z
|
||||
@@ -0,0 +1,54 @@
|
||||
{
|
||||
"timestamp": "2026-10-22T12:31:45.380268+00:00",
|
||||
"count": 8,
|
||||
"remaining": [
|
||||
{
|
||||
"pid": 2880281,
|
||||
"comm": "npm exec @model",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880282,
|
||||
"comm": "npm exec chrome",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880283,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880284,
|
||||
"comm": "npm exec @playw",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880445,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880487,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880537,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2883251,
|
||||
"comm": "codex-code-mode",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
}
|
||||
],
|
||||
"excluded_preexisting_infrastructure": [
|
||||
{
|
||||
"pid": 2880439,
|
||||
"comm": "chrome-devtools",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
}
|
||||
],
|
||||
"note": "Read-only /proc cwd sweep over own worktree and this run TMPDIR; own ancestry excluded; PID2880439 pre-existing receipt in run1; no signalling."
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"timestamp": "2026-10-22T12:31:45.380268+00:00",
|
||||
"count": 0,
|
||||
"remaining": [],
|
||||
"excluded_preexisting_infrastructure": [
|
||||
{
|
||||
"pid": 2880439,
|
||||
"comm": "chrome-devtools",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196"
|
||||
},
|
||||
{
|
||||
"pid": 2880281,
|
||||
"comm": "npm exec @model",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880282,
|
||||
"comm": "npm exec chrome",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880283,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880284,
|
||||
"comm": "npm exec @playw",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:49.740000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880445,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:50.780000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880487,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:51.030000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2880537,
|
||||
"comm": "node-MainThread",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:23:51.160000+00:00",
|
||||
"predates_run": true
|
||||
},
|
||||
{
|
||||
"pid": 2883251,
|
||||
"comm": "codex-code-mode",
|
||||
"cwd": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196",
|
||||
"started_utc": "2026-10-22T11:24:06.230000+00:00",
|
||||
"predates_run": true
|
||||
}
|
||||
],
|
||||
"note": "Read-only cwd sweep. Initial broad sweep retained as sweep-initial.json. Eight additional MCP/npm/code-mode infrastructure processes all started 11:23:49-11:24:06 UTC, before run3 start12:26:46 UTC; /proc start ticks and UTC ps receipt confirm. No signalling. Run-created leftovers0."
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "syntax",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-0.log",
|
||||
"name": "syntax-0",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-1.log",
|
||||
"name": "syntax-1",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-2.log",
|
||||
"name": "syntax-2",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-3.log",
|
||||
"name": "syntax-3",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-4.log",
|
||||
"name": "syntax-4",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-6.log",
|
||||
"name": "syntax-6",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "syntax",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-0.log",
|
||||
"name": "syntax-0",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-1.log",
|
||||
"name": "syntax-1",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-2.log",
|
||||
"name": "syntax-2",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-3.log",
|
||||
"name": "syntax-3",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-4.log",
|
||||
"name": "syntax-4",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.064,
|
||||
"log": "agents/gander/work/queue-278/run3/syntax/syntax-6.log",
|
||||
"name": "syntax-6",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
["node", "--check", "packages/webui/src/cli.mjs"]
|
||||
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
["node", "--check", "packages/webui/src/serve.mjs"]
|
||||
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
["node", "--check", "packages/webui/src/public/bus.js"]
|
||||
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
["node", "--check", "packages/webui/tests/thread-claims.test.mjs"]
|
||||
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
["node", "--check", "packages/webui/tests/thread-claims-browser.test.mjs"]
|
||||
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
["node", "--check", "packages/webui/tests/shell.test.mjs"]
|
||||
Whitespace-only changes.
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "packages/bus/tests/"]
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,124 @@
|
||||
{
|
||||
"grant": "sage-2648",
|
||||
"stage": "whole",
|
||||
"steps": [
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 22.463,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/bus.log",
|
||||
"name": "bus",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 793,
|
||||
"pass": 793,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 56.982,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/webui.log",
|
||||
"name": "webui",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 346,
|
||||
"pass": 345,
|
||||
"fail": 0,
|
||||
"skipped": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.816,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-auth.log",
|
||||
"name": "test-auth",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 6.078,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-conductor.log",
|
||||
"name": "test-conductor",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 1.868,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-config.log",
|
||||
"name": "test-config",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 7.431,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-discord.log",
|
||||
"name": "test-discord",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 1.366,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-extension-package.log",
|
||||
"name": "test-extension-package",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 39.901,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-foundation.log",
|
||||
"name": "test-foundation",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 11.338,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-land-work.log",
|
||||
"name": "test-land-work",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 21.158,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-queue.log",
|
||||
"name": "test-queue",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 2.67,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-release.log",
|
||||
"name": "test-release",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 13.843,
|
||||
"log": "agents/gander/work/queue-278/run3/whole/test-task.log",
|
||||
"name": "test-task",
|
||||
"expected_red": false,
|
||||
"counts": {}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "126", "bash", "scripts/test-auth.sh"]
|
||||
@@ -0,0 +1,17 @@
|
||||
OK status with missing harness credential exits 3 and still lists accounts
|
||||
OK status reports harness credential (read-only) + mosaic accounts
|
||||
OK api key material never reaches output
|
||||
OK oauth token material never reaches output
|
||||
OK unparseable credential file exits 2
|
||||
OK symlinked credential file exits 4
|
||||
OK env-side credential names reported
|
||||
OK env var values never reach output
|
||||
OK accounts without an accounts dir reports none and creates nothing
|
||||
OK accounts lists files and marks the active one
|
||||
OK loose account perms flagged in listing
|
||||
OK agent --auth with missing account file refuses (exit 4)
|
||||
OK agent --auth with non-0600 account file refuses
|
||||
OK agent --auth with invalid account name refuses
|
||||
OK auth.sh without valid config refuses
|
||||
|
||||
selftest: 15 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "145", "bash", "scripts/test-conductor.sh"]
|
||||
@@ -0,0 +1,23 @@
|
||||
On branch gander/row278-b
|
||||
Your branch is up to date with 'origin/gander/row278-b'.
|
||||
|
||||
nothing to commit, working tree clean
|
||||
OK dry-run: allowed change, exit 0, nothing committed (exit 0)
|
||||
OK dry-run committed nothing
|
||||
OK apply: allowed change exits 0 (exit 0)
|
||||
OK apply: attribution in commit subject
|
||||
OK apply: target tree clean after commit
|
||||
OK disallowed path refused (exit 1)
|
||||
OK disallowed path: target untouched
|
||||
OK syntax gate refused broken .mjs (exit 1)
|
||||
OK syntax gate: target untouched
|
||||
OK suite failure refused (exit 1)
|
||||
OK suite failure: target reverted to clean
|
||||
OK disabled policy refused (exit 2)
|
||||
OK disabled policy: target untouched
|
||||
OK failed run refused (exit 1)
|
||||
OK failed run: target untouched
|
||||
OK missing run exits 4 (exit 4)
|
||||
OK invalid policy exits 2 (exit 2)
|
||||
|
||||
selftest: 17 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "130", "bash", "scripts/test-config.sh"]
|
||||
@@ -0,0 +1,33 @@
|
||||
OK absent adapter defaults to pi
|
||||
OK adapter mock validates (exit 0)
|
||||
OK unsupported adapter exits 2 (exit 2)
|
||||
OK env exports adapter
|
||||
OK bootstrap creates default when absent (exit 0)
|
||||
OK bootstrap wrote config file
|
||||
OK bootstrap is idempotent on existing config (exit 0)
|
||||
OK bootstrap did not rewrite existing config
|
||||
OK validate missing config exits 3 (exit 3)
|
||||
OK malformed JSON exits 2 (exit 2)
|
||||
OK unsupported configVersion exits 2 (exit 2)
|
||||
OK unknown top-level key exits 2 (exit 2)
|
||||
OK unknown execution key exits 2 (exit 2)
|
||||
OK unsupported backend exits 2 (exit 2)
|
||||
OK unsupported environment exits 2 (exit 2)
|
||||
OK relative dataRoot exits 2 (exit 2)
|
||||
OK non-canonical dataRoot exits 2 (exit 2)
|
||||
OK filesystem root dataRoot exits 2 (exit 2)
|
||||
OK home directory dataRoot exits 2 (exit 2)
|
||||
OK dataRoot containing config dir exits 2 (exit 2)
|
||||
OK control character in provider exits 2 (exit 2)
|
||||
OK symlinked config file exits 2 (exit 2)
|
||||
OK env exports resolve correctly
|
||||
OK valid console.sso loads and is in the output
|
||||
OK console.sso HS256 alg exits 2 naming the path (exit 2)
|
||||
OK console.sso alg none exits 2 naming the path (exit 2)
|
||||
OK console.sso missing slot field exits 2 naming the path (exit 2)
|
||||
OK console.sso slot name outside the pattern exits 2 naming the path (exit 2)
|
||||
OK unknown key under console exits 2 naming the path (exit 2)
|
||||
OK config without console loads with unchanged output
|
||||
OK failed validation modified nothing
|
||||
|
||||
selftest: 31 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "147", "bash", "scripts/test-discord.sh"]
|
||||
@@ -0,0 +1,85 @@
|
||||
toolchain: node v26.8.1
|
||||
|
||||
OK syntax: packages/discord/src/approvals.mjs
|
||||
OK syntax: packages/discord/src/authorize.mjs
|
||||
OK syntax: packages/discord/src/binding.mjs
|
||||
OK syntax: packages/discord/src/cli.mjs
|
||||
OK syntax: packages/discord/src/connector.mjs
|
||||
OK syntax: packages/discord/src/context.mjs
|
||||
OK syntax: packages/discord/src/engine-pi.mjs
|
||||
OK syntax: packages/discord/src/errors.mjs
|
||||
OK syntax: packages/discord/src/gateway.mjs
|
||||
OK syntax: packages/discord/src/git.mjs
|
||||
OK syntax: packages/discord/src/journal.mjs
|
||||
OK syntax: packages/discord/src/notify.mjs
|
||||
OK syntax: packages/discord/src/processing.mjs
|
||||
OK syntax: packages/discord/src/rest.mjs
|
||||
OK syntax: packages/discord/src/setspark.mjs
|
||||
OK syntax: packages/discord/src/tools.mjs
|
||||
OK syntax: packages/discord/src/web.mjs
|
||||
OK syntax: packages/discord/bin/git-credential.mjs
|
||||
OK syntax: packages/discord/extension/tools.mjs
|
||||
OK syntax: packages/discord/tests/approvals.test.mjs
|
||||
OK syntax: packages/discord/tests/authorize.test.mjs
|
||||
OK syntax: packages/discord/tests/binding.test.mjs
|
||||
OK syntax: packages/discord/tests/connector.test.mjs
|
||||
OK syntax: packages/discord/tests/context.test.mjs
|
||||
OK syntax: packages/discord/tests/copy-service.test.mjs
|
||||
OK syntax: packages/discord/tests/engine.test.mjs
|
||||
OK syntax: packages/discord/tests/fake-pi.mjs
|
||||
OK syntax: packages/discord/tests/gateway.test.mjs
|
||||
OK syntax: packages/discord/tests/git.test.mjs
|
||||
OK syntax: packages/discord/tests/helpers.mjs
|
||||
OK syntax: packages/discord/tests/journal.test.mjs
|
||||
OK syntax: packages/discord/tests/notify.test.mjs
|
||||
OK syntax: packages/discord/tests/offline-check.test.mjs
|
||||
OK syntax: packages/discord/tests/processing-stop.test.mjs
|
||||
OK syntax: packages/discord/tests/processing.test.mjs
|
||||
OK syntax: packages/discord/tests/recover.test.mjs
|
||||
OK syntax: packages/discord/tests/rest.test.mjs
|
||||
OK syntax: packages/discord/tests/setspark.test.mjs
|
||||
OK syntax: packages/discord/tests/tools.test.mjs
|
||||
OK syntax: packages/discord/tests/web.test.mjs
|
||||
OK syntax: packages/discord/fixtures/claim-worker.mjs
|
||||
OK syntax: packages/discord/fixtures/legacy-owner-worker.mjs
|
||||
OK syntax: scripts/discord.sh
|
||||
OK syntax: scripts/discord-service.sh
|
||||
OK packages/discord declares no dependencies
|
||||
OK no bot-token-shaped string in packages/discord
|
||||
OK fixture binding uses placeholder ids only
|
||||
OK fixture binding validates
|
||||
OK real pi with the extension exposes exactly list_dir, read_file, search and no built-in tool
|
||||
OK real pi with a writable root exposes exactly the three reads plus write_file and edit_file, and writes nothing at start
|
||||
OK real pi with a web key exposes the three reads plus web_fetch and web_search, and no write tool without a writable root
|
||||
OK real pi with a git root exposes the reads, writes and the four git verbs, commits nothing at start, and never shows the token
|
||||
OK real pi with protocol vault adds reserve_id to the git verbs
|
||||
OK real pi with a setspark key exposes the reads and the eight record verbs, no counters, and never shows the key
|
||||
OK real pi refuses a git key on a read-only root (fail closed)
|
||||
OK real pi with the pilot flags (--no-tools) exposes no tool at all
|
||||
OK real pi exits non-zero without MOSAIC_DISCORD_TOOLS: no session, no tools (fail closed)
|
||||
OK a failing nested test fails the run under a parent runner's NODE_TEST_CONTEXT
|
||||
OK node --test packages/discord/tests/ (ℹ pass 192)
|
||||
OK scripts/discord.sh --help exits 0
|
||||
OK scripts/discord.sh check without a binding exits 4
|
||||
OK scripts/discord.sh recover without a binding exits 4
|
||||
OK scripts/discord.sh reload without a binding exits 4
|
||||
OK scripts/discord-service.sh without a command exits 4
|
||||
OK service unit renders with the repository path, a supervised run as the main process, exit 3 never retried, and reload as SIGHUP
|
||||
OK service install writes the rendered unit (0644) and leaves no temp file
|
||||
OK service install a second time reports unchanged
|
||||
OK systemd-analyze verify accepts the rendered unit
|
||||
OK service uninstall removes the unit file
|
||||
OK service install with an unknown flag exits 4
|
||||
OK service install with USER unset finishes and names the account for lingering
|
||||
OK pinned render runs copy CLI with copy cwd/repo and no checkout executable
|
||||
OK pinned install writes the rendered unit in a temporary unit directory
|
||||
OK pinned install refuses short prerequisite and writes no unit
|
||||
OK pinned install refuses missing prerequisite and writes no unit
|
||||
OK pinned install refuses cli prerequisite and writes no unit
|
||||
OK pinned install refuses pi prerequisite and writes no unit
|
||||
OK status names the copy from fake systemctl effective cwd
|
||||
OK checkout install explicitly recommends --copy
|
||||
OK wrapper check --offline passes local fixture and makes no network call
|
||||
OK wrapper run --offline refuses usage
|
||||
|
||||
discord suite: 81 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "130", "bash", "scripts/test-extension-package.sh"]
|
||||
@@ -0,0 +1,21 @@
|
||||
OK initial ordinary-file install
|
||||
OK installed tree matches canonical source
|
||||
OK installed tree has no symlinks
|
||||
OK check detects installation drift
|
||||
OK sync refuses to overwrite installation drift
|
||||
OK check detects an extra destination file
|
||||
OK check detects an extra destination directory
|
||||
OK check rejects a destination symlink
|
||||
OK sync accepts a canonical source update
|
||||
OK updated installation matches canonical source
|
||||
scripts/test-extension-package.sh: line 14: 134460 Killed "$@" > /dev/null 2>&1
|
||||
OK forced interruption kills the replacing process
|
||||
OK next invocation recovers old consistent installation
|
||||
OK interrupted replacement rolled back
|
||||
OK sync succeeds after interruption recovery
|
||||
OK unlocked stale lock file does not block
|
||||
OK active lock refuses a concurrent sync
|
||||
OK source symlink fails closed
|
||||
OK nested second entrypoint fails closed
|
||||
|
||||
extension package selftest: 18 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "240", "bash", "scripts/test-foundation.sh"]
|
||||
@@ -0,0 +1,53 @@
|
||||
toolchain: node v26.8.1, python 3.12.8, jsonschema 4.26.0
|
||||
|
||||
OK syntax: scripts/foundation-inspect.mjs
|
||||
OK syntax: scripts/foundation/strict-json.mjs
|
||||
OK syntax: scripts/foundation/canonical.mjs
|
||||
OK syntax: scripts/foundation/resolve.mjs
|
||||
OK syntax: scripts/foundation/validate-record.mjs
|
||||
OK syntax: scripts/foundation/fixtures/build-fixtures.mjs
|
||||
OK syntax: scripts/foundation/canonical.test.mjs
|
||||
OK syntax: scripts/foundation/cli.test.mjs
|
||||
OK syntax: scripts/foundation/fixtures.test.mjs
|
||||
OK syntax: scripts/foundation/resolve.test.mjs
|
||||
OK syntax: scripts/foundation/strict-json.test.mjs
|
||||
OK syntax: scripts/foundation/verify-schema.py (ast only; no bytecode written)
|
||||
OK fixture generator runs
|
||||
OK checked-in fixtures/bundles equal a fresh generation
|
||||
OK checked-in fixtures/raw equal a fresh generation
|
||||
OK checked-in fixtures/index.json equal a fresh generation
|
||||
OK checked-in demo bundles equal a fresh generation
|
||||
OK a failing nested test fails the run under a parent runner's NODE_TEST_CONTEXT
|
||||
OK node --test scripts/foundation/ (ℹ pass 80)
|
||||
OK differential schema oracle: PASS: differential schema oracle (finite corpus; compatibility evidence, not equivalence proof)
|
||||
platform witness: strftime('%Y') for year 999 -> '999' (pinned checker refuses years 0001..0999)
|
||||
node v26.8.1; corpus 1568 records (38 pinned fixtures, 478 unique bundle records, 1052 typeCase/mutation/lexical cases)
|
||||
schema column: agree-valid 540, agree-invalid 991, DISAGREEMENTS 0; strict-only (parser-bound) cases: 27; unsupported-kind records not schema-assessed by the inspector: 10
|
||||
profile column (schema-valid records only): profile-valid 510, profile-invalid 30
|
||||
profile refusals asserted: 30 schema-agreed-valid records refused only by the strict typed-string profile (rule profile-pattern-mismatch), 12 declared by name; 73 named probes verified against declared schema/profile columns
|
||||
OK oracle: zero schema-column disagreements with the pinned checker
|
||||
OK oracle: strict-only profile refusals are counted and asserted
|
||||
OK demo: permitted read preview exits 0 (exit 0)
|
||||
OK demo: permitted file.change preview exits 0 (exit 0)
|
||||
OK demo: assignment.change proposal is unresolved (exit 3) (exit 3)
|
||||
OK demo: revoked registration is refused (exit 3) (exit 3)
|
||||
OK demo: message is not authority (exit 3) (exit 3)
|
||||
OK usage: no arguments exits 2 (exit 2)
|
||||
OK io: missing file exits 4 (exit 4)
|
||||
OK io: directory exits 4 (exit 4)
|
||||
OK io: symlink exits 4 (O_NOFOLLOW) (exit 4)
|
||||
OK bound: oversize fixture exits 2 (exit 2)
|
||||
OK profile: one final LF in a typed selection id is refused before admission (exit 2) (exit 2)
|
||||
OK profile: two final LFs fail the schema pattern itself (exit 2) (exit 2)
|
||||
OK profile: escaped newlines in free-form text stay allowed (exit 0) (exit 0)
|
||||
OK profile refusal is invalid-request/profile-pattern-mismatch with selection and operation withheld, value not echoed
|
||||
OK text output starts with the disclaimer
|
||||
OK json output is valid JSON with result allowed and exactly the charter §7 fields
|
||||
OK json golden matches byte-for-byte
|
||||
OK sandboxed bundle run (env -i, PATH=/nonexistent) produced the unresolved proposal
|
||||
OK sandbox inventory (path/type/size/mode/uid/gid/inode/mtime/sha256) unchanged by runs
|
||||
OK canary never printed (bundle run and credential-file run)
|
||||
OK a non-bundle JSON file is refused at the shape gate, not read into output
|
||||
OK no field of the non-bundle file is echoed
|
||||
|
||||
selftest: 44 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "158", "bash", "scripts/test-land-work.sh"]
|
||||
@@ -0,0 +1,88 @@
|
||||
OK args: exit 2, target-branch
|
||||
OK args: exit 2, target-branch
|
||||
OK args: exit 4
|
||||
OK args: exit 4
|
||||
OK args: exit 4
|
||||
OK --base next refuses before the config is read (got 2)
|
||||
OK a missing system config exits 3 (got 3)
|
||||
OK nobus: exit 3
|
||||
OK schema-table: exit 2, bus-schema
|
||||
OK schema-meta: exit 2, bus-schema
|
||||
OK openBus opens the database read-only
|
||||
OK other-business: exit 2, decision-not-found
|
||||
OK no-raise: exit 2, decision-not-found
|
||||
OK not-a-merge: exit 2, not-a-merge
|
||||
OK open: exit 2, not-resolved
|
||||
OK withdrawn: exit 2, not-resolved
|
||||
OK by-agent: exit 2, not-human
|
||||
OK via-webui: exit 2, not-human
|
||||
OK no-answer: exit 2, not-human
|
||||
OK answer-role: exit 2, not-human
|
||||
OK answer-run: exit 2, not-human
|
||||
OK answer-choice: exit 2, not-human
|
||||
OK two-answers: exit 2, not-human
|
||||
OK arbiter-cross: exit 2, not-human
|
||||
OK arbiter-cited: exit 2, not-human
|
||||
OK chose-no: exit 2, not-merge-option
|
||||
OK two-refs: exit 2, work-ref
|
||||
OK bad-ref: exit 2, work-ref
|
||||
OK task-ref-disagrees: exit 2, work-ref
|
||||
OK raise-task-disagrees: exit 2, work-ref
|
||||
OK target-main: exit 2, target-branch
|
||||
OK superseded-question: exit 2, superseded
|
||||
OK superseded-task: exit 2, superseded
|
||||
OK superseded-by: exit 2, superseded
|
||||
OK no-verdict: exit 2, no-verdict
|
||||
OK changes-later: exit 2, not-approved
|
||||
OK short-commit: exit 2, not-approved
|
||||
OK wrong-task-body: exit 2, not-approved
|
||||
OK args: exit 2, decision-not-found
|
||||
OK earlier-merge: exit 0
|
||||
OK ref-moved: exit 2, ref-moved
|
||||
OK root-top: exit 2, root-file
|
||||
OK root-newdir: exit 2, root-file
|
||||
OK root-src: exit 2, root-file
|
||||
OK unrelated: exit 2, base-conflict
|
||||
OK empty: exit 2, base-conflict
|
||||
OK an empty reviewed diff says so
|
||||
OK dirty-changed: exit 2, checkout-dirty
|
||||
OK dirty-staged: exit 2, checkout-dirty
|
||||
OK dirty-untracked: exit 2, checkout-dirty
|
||||
OK conflict: exit 2, base-conflict
|
||||
OK a refusal after the worktree is added leaves no worktree or scratch
|
||||
OK cleanup looks for the worktree's Docker network
|
||||
OK dirty-during: exit 2, checkout-dirty
|
||||
OK a reviewed path dirtied during the gate moves no ref
|
||||
OK drift: exit 2, patch-drift
|
||||
OK patch-drift leaves no worktree or scratch
|
||||
OK gate-pkg: exit 2, gate-failed
|
||||
OK gate-failed names the failing step's log, and it exists
|
||||
OK gate-failed leaves no worktree or scratch
|
||||
OK gate-script: exit 2, gate-failed
|
||||
OK a failing scripts/test-*.sh fails the gate
|
||||
OK a failed gate moves no ref
|
||||
OK nomods: exit 4
|
||||
OK a target without node_modules leaves no worktree or scratch
|
||||
OK moved: exit 2, base-moved
|
||||
OK base-moved keeps the base where it moved to
|
||||
OK dry: exit 0
|
||||
OK --dry-run writes no ref
|
||||
OK --dry-run prints the commit with --subject and --attribution
|
||||
OK --dry-run runs the gate
|
||||
OK --dry-run leaves no worktree or scratch
|
||||
OK land: exit 0
|
||||
OK the landing is one commit on the old base
|
||||
OK its diff is the reviewed diff by patch-id
|
||||
OK its tree is the dry run's
|
||||
OK the message has the option's subject, the citations and the attribution last
|
||||
OK it prints the line for the PM
|
||||
OK the checked-out base has the reviewed paths and keeps the unrelated edit
|
||||
OK only refs/heads/refactor exists in the target
|
||||
OK the work ref is unchanged
|
||||
OK the bus database is unchanged
|
||||
OK the gate ran each package suite but queue, and each scripts/test-*.sh
|
||||
OK the landing leaves no worktree or scratch
|
||||
OK the target's node_modules is still there, with its contents
|
||||
OK the worktree's Docker network is removed
|
||||
---
|
||||
land-work selftests: 86 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "191", "bash", "scripts/test-queue.sh"]
|
||||
@@ -0,0 +1,36 @@
|
||||
toolchain: node v26.8.1, git version 2.55.0
|
||||
|
||||
OK syntax: packages/queue/src/cli.mjs
|
||||
OK syntax: packages/queue/src/errors.mjs
|
||||
OK syntax: packages/queue/src/io.mjs
|
||||
OK syntax: packages/queue/src/lock.mjs
|
||||
OK syntax: packages/queue/src/queue.mjs
|
||||
OK syntax: packages/queue/src/review.mjs
|
||||
OK syntax: packages/queue/src/store.mjs
|
||||
OK syntax: packages/queue/tests/commit.test.mjs
|
||||
OK syntax: packages/queue/tests/data.test.mjs
|
||||
OK syntax: packages/queue/tests/dispatch.test.mjs
|
||||
OK syntax: packages/queue/tests/gate-owner.test.mjs
|
||||
OK syntax: packages/queue/tests/helpers.mjs
|
||||
OK syntax: packages/queue/tests/lock.test.mjs
|
||||
OK syntax: packages/queue/tests/migration.test.mjs
|
||||
OK syntax: packages/queue/tests/review.test.mjs
|
||||
OK syntax: packages/queue/tests/store.test.mjs
|
||||
OK syntax: packages/queue/tests/write.test.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/fake-gitea.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/kill-at.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/lock-child.mjs
|
||||
OK syntax: packages/queue/tests/fixtures/mosaic-pre-a2.sh
|
||||
OK syntax: scripts/queue-commit.sh
|
||||
OK syntax: scripts/git-hooks/pre-commit
|
||||
OK syntax: scripts/mosaic
|
||||
OK queue-commit.sh, the guard and scripts/mosaic are executable
|
||||
OK packages/queue declares no dependencies
|
||||
ℹ tests 156
|
||||
ℹ pass 156
|
||||
ℹ fail 0
|
||||
OK node --test packages/queue/tests/
|
||||
OK scripts/mosaic queue help
|
||||
skip queue verify and render --check: this checkout (/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196) is not the queue's canonical root (/mnt/storage/src/mosaic-stack)
|
||||
|
||||
queue suite: 28 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "157", "bash", "scripts/test-release.sh"]
|
||||
@@ -0,0 +1,16 @@
|
||||
OK valid RELEASE resolves (exit 0)
|
||||
OK invalid RELEASE exits 1 (exit 1)
|
||||
OK missing RELEASE exits 1 (exit 1)
|
||||
OK valid RELEASE leaves image tag consistent with version
|
||||
OK status safe on empty state (exit 0)
|
||||
OK status created no pointer
|
||||
OK fault-injected activation refuses (exit 1)
|
||||
OK refused activation wrote no pointer
|
||||
OK refusal logged exactly once with valid fields
|
||||
OK healthy activation succeeds (exit 0)
|
||||
OK pointer written with valid fields
|
||||
OK repeat activation succeeds (log grows) (exit 0)
|
||||
OK log is append-only across activations
|
||||
OK rollback without previous refuses (exit 1)
|
||||
|
||||
selftest: 14 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "231", "bash", "scripts/test-task.sh"]
|
||||
@@ -0,0 +1,96 @@
|
||||
OK valid task validates (exit 0)
|
||||
OK unknown task key exits 2 (exit 2)
|
||||
OK unsupported taskVersion exits 2 (exit 2)
|
||||
OK invalid task id exits 2 (exit 2)
|
||||
OK empty prompt exits 2 (exit 2)
|
||||
OK NUL in expectExact exits 2 (exit 2)
|
||||
OK out-of-range timeout exits 2 (exit 2)
|
||||
OK missing mission file exits 4 (exit 4)
|
||||
OK task with valid mission validates (exit 0)
|
||||
OK invalid mission exits 2 (exit 2)
|
||||
OK validate missing task exits 4 (exit 4)
|
||||
OK validation does not modify the task file
|
||||
OK prune dry-run exits 0 (exit 0)
|
||||
OK dry-run deleted nothing
|
||||
OK prune --keep=2 --yes removes oldest (exit 0)
|
||||
OK kept exactly 2 newest runs
|
||||
OK newest run kept, oldest pruned
|
||||
OK append-only receipt written (3 entries)
|
||||
OK sessions/workspaces untouched by prune
|
||||
OK prune with invalid keep exits 4 (exit 4)
|
||||
OK mock adapter: gate passes on matching mock response (exit 0)
|
||||
OK mock adapter: expect-mismatch recorded (exit 1)
|
||||
OK mismatch reason recorded
|
||||
OK unknown adapter fails closed (exit 1)
|
||||
OK mission task runs via mock adapter (exit 0)
|
||||
OK mission section injected into generated prompt
|
||||
OK retry of mission run succeeds (exit 0)
|
||||
OK retriedFrom lineage recorded
|
||||
OK mission section present after retry (relative path resolved)
|
||||
OK retry of missing run exits 4 (exit 4)
|
||||
OK skill install bundled ms-tools (exit 0)
|
||||
OK installed to skills-available
|
||||
OK double install refuses (exit 1)
|
||||
OK activate enables skill (exit 0)
|
||||
OK enabled dir populated
|
||||
OK uninstall while enabled refuses (exit 1)
|
||||
OK deactivate moves back to available (exit 0)
|
||||
OK uninstall removes from available (exit 0)
|
||||
OK seat with enabled skill launches
|
||||
OK skill path delivered to adapter
|
||||
OK shipped researcher contract resolves (ceiling + network)
|
||||
OK resolve-role refuses a non-role document (conductor policy) (exit 2)
|
||||
OK resolve-role refuses name/filename mismatch (exit 2)
|
||||
OK resolve-role refuses unknown network declaration (exit 2)
|
||||
OK resolve-role refuses duplicate role tool (exit 2)
|
||||
OK resolve-role refuses unsupported tool (exit 2)
|
||||
OK resolve-role refuses missing contract file (exit 4)
|
||||
OK version 1 role prints no contract line
|
||||
OK shipped version 2 roles resolve with their contracts (pm, cto, coder, reviewer)
|
||||
OK resolve-role accepts a minimal version 2 role (exit 0)
|
||||
OK resolve-role refuses an action outside the vocabulary (exit 2)
|
||||
OK resolve-role refuses a gated-only action in a role file (exit 2)
|
||||
OK resolve-role refuses a Vikunja verb no role may hold (exit 2)
|
||||
OK resolve-role refuses a version 2 role whose contract is missing (exit 2)
|
||||
OK resolve-role refuses a contract that is a symbolic link (exit 2)
|
||||
OK seat launches under role ceiling
|
||||
OK role ceiling narrows seat tools (read,write,bash -> read,bash)
|
||||
OK narrowing recorded loudly
|
||||
OK missing role contract refuses launch (exit 2)
|
||||
OK missing-contract refusal names the role
|
||||
OK empty ceiling intersection -> tool-free seat
|
||||
OK tool-free outcome recorded loudly
|
||||
OK overridden agents dir without seat definition refuses (exit 4)
|
||||
OK seat-resolution refusal names the seat
|
||||
OK policy: mission only -> mission tools
|
||||
OK policy: task only -> task tools
|
||||
OK policy: both -> intersection (task narrowed)
|
||||
OK policy: empty intersection -> tool-free
|
||||
OK invalid mission capabilities rejected (exit 2)
|
||||
mosaic-task: unsupported mission tool: "sudo" (supported: read, write, edit, bash, grep, find, ls)
|
||||
OK task run with user layer present (exit 0)
|
||||
OK user context dispatched into generated prompt
|
||||
OK workspace+tools task runs via mock (exit 0)
|
||||
OK workspace path + tools delivered to adapter
|
||||
OK persistent workspace created on host
|
||||
OK plain task still runs (no workspace/tools) (exit 0)
|
||||
OK workspace var present but empty when absent
|
||||
OK tools empty when absent
|
||||
OK unknown tool exits 2 (exit 2)
|
||||
OK workspace traversal exits 2 (exit 2)
|
||||
OK hello task succeeds with exact marker
|
||||
OK result.json written in run dir
|
||||
OK result.json contents are correct
|
||||
OK wrong expectExact fails with exit 1 (reason: expect-mismatch)
|
||||
OK each run gets a distinct run dir (no clobber)
|
||||
OK list shows both runs
|
||||
skip live provider cases (row 244: no provider call in the gate)
|
||||
OK onboard without name exits 4 (non-interactive) (exit 4)
|
||||
OK onboard --name renders profile (exit 0)
|
||||
OK profile written
|
||||
OK canon structure: required filled, optional placeholdered
|
||||
OK canon sections present
|
||||
skip live provider cases (row 244: no provider call in the gate)
|
||||
OK no agent identity on headless run
|
||||
|
||||
selftest: 91 passed, 0 failed
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "300", "node", "--test", "--test-reporter=tap", "packages/webui/tests/"]
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Read-only post-run cwd/process sweep; never signals a process."""
|
||||
import datetime, json, os
|
||||
from pathlib import Path
|
||||
HERE=Path(__file__).resolve().parent
|
||||
repo=HERE.parents[3]
|
||||
run=HERE/'run3'
|
||||
tmp=Path((run/'TMPDIR').read_text().strip())
|
||||
ancestors=set()
|
||||
pid=os.getpid()
|
||||
while pid and pid not in ancestors:
|
||||
ancestors.add(pid)
|
||||
try:
|
||||
status=Path(f'/proc/{pid}/status').read_text()
|
||||
pid=int(next(s.split(':')[1] for s in status.splitlines() if s.startswith('PPid:')))
|
||||
except (OSError,StopIteration): break
|
||||
remaining=[]
|
||||
excluded=[]
|
||||
for proc in Path('/proc').iterdir():
|
||||
if not proc.name.isdigit() or int(proc.name) in ancestors: continue
|
||||
try:
|
||||
cwd=(proc/'cwd').resolve(strict=True)
|
||||
if not (cwd==repo or repo in cwd.parents or cwd==tmp or tmp in cwd.parents): continue
|
||||
comm=(proc/'comm').read_text().strip()
|
||||
item=dict(pid=int(proc.name),comm=comm,cwd=str(cwd))
|
||||
if item['pid']==2880439 and comm.startswith('chrome-devtools'):
|
||||
excluded.append(item)
|
||||
else: remaining.append(item)
|
||||
except (OSError,ValueError): continue
|
||||
result=dict(timestamp=datetime.datetime.now(datetime.timezone.utc).isoformat(),count=len(remaining),remaining=remaining,excluded_preexisting_infrastructure=excluded,note='Read-only /proc cwd sweep over own worktree and this run TMPDIR; own ancestry excluded; PID2880439 pre-existing receipt in run1; no signalling.')
|
||||
(run/'sweep.json').write_text(json.dumps(result,indent=2)+'\n')
|
||||
print(json.dumps(result,indent=2))
|
||||
Reference in new issue
Block a user