Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3b91cfdaf1 | ||
|
|
dd9d519b11 |
No files matched your search
@@ -311,3 +311,13 @@ Ran on pushed e1bc766d8, manifest a2ac5734, no carry. Both intendedREDs observed
|
||||
### mos-1298: pin the direct query session
|
||||
|
||||
M38 drops setsid but a blocking signals query can still fail closed with inner-timeout; the old kill rule was wrong. The named killer stays row253 C4 signals query. Every sleep/signals/member case in both exec/hop modes now reads the first query-pids line and asserts exact equality of its numeric PID and kernel SID. M38 must fail this new assertion, never a timeout or a cleanup-only assertion. Every old line of the C4 query test is preserved byte for byte. Product scripts remain byte-identical. No test or Node preflight run; fresh whole gate from start follows new candidate review and Sage CLEAR, with nothing carried. Base assertion failure, another survivor or any mismatch goes to Mos before a further change.
|
||||
|
||||
|
||||
### Run5 busy guard refusal, sage-2786
|
||||
|
||||
Fresh on48e450ce8/591020a1. Both intendedREDs observed; touched whole43/0/0 and34/0/0; all6base PID/SID equalities passed. Controls13/0, M1-M31 killed; no survivor, timeout or unexpected red. External SSH docker-compose process tripped busy guard before M32 base; no bypass/retry. M32-M40 and full whole stages NOTRUN; M38 assertion kill remains unproven. Wall425.340s,0skips,N9passed. Byte restoration verified; sweep0run-created leftovers. Reported unplaced for classification/resume direct to Duckworth/Mos, cc Sage in gander-0121 and returned slot. run5-gate/ preserves exact raw records.
|
||||
|
||||
|
||||
### Run5 GREEN, sage-2786 plus sage-2811 same-run resume
|
||||
|
||||
Candidate48e450ce8,source14e460061,manifest591020a1,baseaca16404c. CLI whole55files861/0/0;WebUI whole58files345/0/1;bus rebase union20files240/0/0;ten shells425/0 self-assertions. Separate touched whole77/0/0, intendedREDs2/2;20fresh controls passed. M1-M40 killed40 with exact restoration,0timeouts. M38 dies by required new PID/SID equality ERR_ASSERTION at203:10; all6base cases pass. No other round carries; foreign SSH busy refusal classified in sage-2811, freshM32base on resume. Stages wall sums1253.715/267.028/46.282/140.514s;active windows425.340+2106.873s. N9passed verbatim inRESULTS. Named skips: pinned-esbuild rebuild, noncanonical queue verify/render, two live-provider cases; exact lines in run5-gate/RESULTS.md. Manifest and shell hashes verify; sweep0run-created leftovers. Raw commands,logs,full counts and kill table retained. No product/test change during gate.
|
||||
@@ -0,0 +1,114 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Run explicit row253 changes only under Sage's grant. --static runs no tests."""
|
||||
import argparse
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import signal
|
||||
import subprocess
|
||||
import time
|
||||
|
||||
HERE = Path(__file__).resolve().parent
|
||||
REPO = HERE.parents[3]
|
||||
|
||||
def digest(data):
|
||||
return hashlib.sha256(data).hexdigest()
|
||||
|
||||
def busy():
|
||||
p = subprocess.run(['bash', '/mnt/storage/scratch/sage-busy-now.sh'], text=True, capture_output=True)
|
||||
if p.returncode or p.stdout.splitlines()[-1:] != ['CLEAR']:
|
||||
raise RuntimeError('busy refusal: ' + p.stdout + p.stderr)
|
||||
|
||||
def run(command, path, seconds=60):
|
||||
if command[:2] == ['node', '--test']:
|
||||
limits = json.loads((HERE/'WHOLE-GATE-LIMITS.json').read_text())['files']
|
||||
limit = limits.get(command[-1], 900)
|
||||
command = ['timeout','-k','10',str(limit),*command]
|
||||
seconds = limit + 30
|
||||
busy()
|
||||
started = time.monotonic()
|
||||
command_file = path.with_suffix('.command.json')
|
||||
command_file.write_text(json.dumps(command))
|
||||
# Keep command text out of wrapper argv: the busy guard scans every argv.
|
||||
# launch.py execs the structured command. bash owns a pipefail/tee pipeline.
|
||||
p = subprocess.Popen(['bash','-o','pipefail','-c',
|
||||
'python3 "$1" "$2" 2>&1 | tee "$3"', '--',str(HERE/'launch.py'),str(command_file),str(path)],
|
||||
cwd=REPO,start_new_session=True)
|
||||
expired = False
|
||||
try:
|
||||
code = p.wait(timeout=seconds)
|
||||
expired = code in (124, 137)
|
||||
except subprocess.TimeoutExpired:
|
||||
expired = True
|
||||
os.killpg(p.pid, signal.SIGKILL)
|
||||
code = p.wait()
|
||||
finally:
|
||||
try:
|
||||
os.killpg(p.pid, signal.SIGKILL)
|
||||
except ProcessLookupError:
|
||||
pass
|
||||
return dict(code=code, timeout=expired, seconds=round(time.monotonic()-started, 3), log=str(path))
|
||||
|
||||
def main():
|
||||
ap = argparse.ArgumentParser()
|
||||
ap.add_argument('--static', action='store_true')
|
||||
ap.add_argument('--grant')
|
||||
ap.add_argument('--out', type=Path)
|
||||
args = ap.parse_args()
|
||||
definitions = json.loads((HERE/'changes.json').read_text())
|
||||
checked = []
|
||||
for d in definitions:
|
||||
original = (REPO/d['file']).read_bytes()
|
||||
count = original.count(d['old'].encode())
|
||||
if count != 1:
|
||||
raise RuntimeError(f"{d['id']}: target occurs {count} times")
|
||||
changed = original.replace(d['old'].encode(), d['new'].encode(), 1)
|
||||
checked.append(dict(id=d['id'], file=d['file'], occurrences=count,
|
||||
before=digest(original), after=digest(changed)))
|
||||
if args.static:
|
||||
print(json.dumps(checked, indent=2))
|
||||
return
|
||||
if not args.grant or not args.out:
|
||||
ap.error('execution needs --grant and --out')
|
||||
if not os.environ.get('TMPDIR', '').startswith('/mnt/storage/scratch/tmp/g'):
|
||||
raise RuntimeError('TMPDIR must be the granted scratch directory')
|
||||
status = subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=REPO)
|
||||
args.out.mkdir(parents=True, exist_ok=True)
|
||||
results = dict(grant=args.grant, static=checked, bases={}, changes=[])
|
||||
failures = 0
|
||||
for d in [x for x in definitions if int(x['id'][1:]) >= 32]:
|
||||
key = d['killer']+'|'+d['pattern']
|
||||
command = ['node','--test','--test-reporter=tap','--test-name-pattern',d['pattern'],d['killer']]
|
||||
if key not in results['bases']:
|
||||
base = run(command, args.out/(d['id']+'-base.log'))
|
||||
results['bases'][key] = base
|
||||
(args.out/'results.json').write_text(json.dumps(results,indent=2)+'\n')
|
||||
if base['code'] != 0 or base['seconds'] > 30:
|
||||
raise RuntimeError('base failed or exceeded 30 seconds: '+d['id'])
|
||||
target = REPO/d['file']
|
||||
original = target.read_bytes()
|
||||
try:
|
||||
target.write_bytes(original.replace(d['old'].encode(),d['new'].encode(),1))
|
||||
pre = subprocess.run(['bash','-n',str(target)],capture_output=True)
|
||||
if pre.returncode:
|
||||
raise RuntimeError('invalid syntax: '+d['id'])
|
||||
result = run(command,args.out/(d['id']+'.log'))
|
||||
result.update(id=d['id'], base_seconds=results['bases'][key]['seconds'],
|
||||
outcome='timeout' if result['timeout'] else 'killed' if result['code'] != 0 else 'survived')
|
||||
results['changes'].append(result)
|
||||
if result['timeout']:
|
||||
raise RuntimeError('timeout requires Sage/Mos classification: '+d['id'])
|
||||
if result['outcome'] != 'killed':
|
||||
failures += 1
|
||||
finally:
|
||||
target.write_bytes(original)
|
||||
assert target.read_bytes() == original
|
||||
assert subprocess.check_output(['git','status','--porcelain','--untracked-files=no'],cwd=REPO) == status
|
||||
(args.out/'results.json').write_text(json.dumps(results,indent=2)+'\n')
|
||||
if failures >= 1:
|
||||
raise RuntimeError('first unexpected failure: end the sage-2297 window')
|
||||
print(json.dumps(results,indent=2))
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,141 @@
|
||||
{
|
||||
"cli_whole": [
|
||||
"packages/cli/tests/access.test.mjs",
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-auth.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/grants.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/lifecycle.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/processing-cli.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
],
|
||||
"webui_whole": [
|
||||
"packages/webui/tests/agents-browser.test.mjs",
|
||||
"packages/webui/tests/agents.test.mjs",
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/library-status.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/processing-browser.test.mjs",
|
||||
"packages/webui/tests/processing-ui.test.mjs",
|
||||
"packages/webui/tests/processing.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs",
|
||||
"packages/webui/tests/thread-claims.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
],
|
||||
"bus_rebase_union": [
|
||||
"packages/bus/tests/account-migration.test.mjs",
|
||||
"packages/bus/tests/chief-of-staff.test.mjs",
|
||||
"packages/bus/tests/comment-migration.test.mjs",
|
||||
"packages/bus/tests/end-launch.test.mjs",
|
||||
"packages/bus/tests/fire-revokes-grants.test.mjs",
|
||||
"packages/bus/tests/gitea-grant.test.mjs",
|
||||
"packages/bus/tests/gitea-migration.test.mjs",
|
||||
"packages/bus/tests/grant-executor.test.mjs",
|
||||
"packages/bus/tests/grant-migration.test.mjs",
|
||||
"packages/bus/tests/lifecycle-revoke.test.mjs",
|
||||
"packages/bus/tests/message-filter.test.mjs",
|
||||
"packages/bus/tests/name-migration.test.mjs",
|
||||
"packages/bus/tests/schema.test.mjs",
|
||||
"packages/bus/tests/sessions.test.mjs",
|
||||
"packages/bus/tests/spec-migration.test.mjs",
|
||||
"packages/bus/tests/tester-writes.test.mjs",
|
||||
"packages/bus/tests/thread-claims.test.mjs",
|
||||
"packages/bus/tests/thread-migration.test.mjs",
|
||||
"packages/bus/tests/threads.test.mjs",
|
||||
"packages/bus/tests/usage-migration.test.mjs"
|
||||
]
|
||||
}
|
||||
Whitespace-only changes.
@@ -0,0 +1,395 @@
|
||||
{
|
||||
"grant": "sage-2786",
|
||||
"head": "48e450ce8fbb10df0beabc8da67ab90ea14587ea",
|
||||
"product": "14e46006171ef700a72f971fda5cb3a0b8dcc4f2",
|
||||
"manifest": "591020a1096a1606c11f2ee34b37243acddf83d91c69922ccc5cfe22d6180d3a",
|
||||
"packages": {
|
||||
"cli_whole": {
|
||||
"count": 55,
|
||||
"files": [
|
||||
"packages/cli/tests/access.test.mjs",
|
||||
"packages/cli/tests/app.test.mjs",
|
||||
"packages/cli/tests/boot-status.test.mjs",
|
||||
"packages/cli/tests/case1-accept.test.mjs",
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs",
|
||||
"packages/cli/tests/case2-persona-import.test.mjs",
|
||||
"packages/cli/tests/case2-unit.test.mjs",
|
||||
"packages/cli/tests/channel-cli.test.mjs",
|
||||
"packages/cli/tests/channel-recovery.test.mjs",
|
||||
"packages/cli/tests/cli.test.mjs",
|
||||
"packages/cli/tests/config.test.mjs",
|
||||
"packages/cli/tests/credentials.test.mjs",
|
||||
"packages/cli/tests/follow.test.mjs",
|
||||
"packages/cli/tests/format.test.mjs",
|
||||
"packages/cli/tests/gate-lane-auth.test.mjs",
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs",
|
||||
"packages/cli/tests/gate-lane-image.test.mjs",
|
||||
"packages/cli/tests/gate-lane-state.test.mjs",
|
||||
"packages/cli/tests/gate-lane.test.mjs",
|
||||
"packages/cli/tests/git-socket.test.mjs",
|
||||
"packages/cli/tests/grants.test.mjs",
|
||||
"packages/cli/tests/host.test.mjs",
|
||||
"packages/cli/tests/hosts.test.mjs",
|
||||
"packages/cli/tests/instances.test.mjs",
|
||||
"packages/cli/tests/launch-account.test.mjs",
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs",
|
||||
"packages/cli/tests/launch-limits.test.mjs",
|
||||
"packages/cli/tests/launch-routes.test.mjs",
|
||||
"packages/cli/tests/launcher.test.mjs",
|
||||
"packages/cli/tests/lifecycle.test.mjs",
|
||||
"packages/cli/tests/limits-tokens.test.mjs",
|
||||
"packages/cli/tests/limits.test.mjs",
|
||||
"packages/cli/tests/mark-read.test.mjs",
|
||||
"packages/cli/tests/names.test.mjs",
|
||||
"packages/cli/tests/notifier.test.mjs",
|
||||
"packages/cli/tests/other-tree.test.mjs",
|
||||
"packages/cli/tests/processing-cli.test.mjs",
|
||||
"packages/cli/tests/project-name-repo.test.mjs",
|
||||
"packages/cli/tests/project.test.mjs",
|
||||
"packages/cli/tests/publish-socket.test.mjs",
|
||||
"packages/cli/tests/stack-copy.test.mjs",
|
||||
"packages/cli/tests/stack-instances.test.mjs",
|
||||
"packages/cli/tests/stack-release-external.test.mjs",
|
||||
"packages/cli/tests/stack-release.test.mjs",
|
||||
"packages/cli/tests/stack-upgrade.test.mjs",
|
||||
"packages/cli/tests/tester-http.test.mjs",
|
||||
"packages/cli/tests/tester-reads.test.mjs",
|
||||
"packages/cli/tests/tester-threads.test.mjs",
|
||||
"packages/cli/tests/tester.test.mjs",
|
||||
"packages/cli/tests/thread-cli.test.mjs",
|
||||
"packages/cli/tests/thread-launch.test.mjs",
|
||||
"packages/cli/tests/trackers-boot.test.mjs",
|
||||
"packages/cli/tests/transport.test.mjs",
|
||||
"packages/cli/tests/usage.test.mjs",
|
||||
"packages/cli/tests/verbs.test.mjs"
|
||||
]
|
||||
},
|
||||
"webui_whole": {
|
||||
"count": 58,
|
||||
"files": [
|
||||
"packages/webui/tests/agents-browser.test.mjs",
|
||||
"packages/webui/tests/agents.test.mjs",
|
||||
"packages/webui/tests/assistant.test.mjs",
|
||||
"packages/webui/tests/board-held.test.mjs",
|
||||
"packages/webui/tests/browser-edge.test.mjs",
|
||||
"packages/webui/tests/browser.test.mjs",
|
||||
"packages/webui/tests/bus-browser.test.mjs",
|
||||
"packages/webui/tests/bus.test.mjs",
|
||||
"packages/webui/tests/channel-chat.test.mjs",
|
||||
"packages/webui/tests/chat-browser.test.mjs",
|
||||
"packages/webui/tests/chat.test.mjs",
|
||||
"packages/webui/tests/conversation.test.mjs",
|
||||
"packages/webui/tests/discord.test.mjs",
|
||||
"packages/webui/tests/docs-browser.test.mjs",
|
||||
"packages/webui/tests/editor-browser.test.mjs",
|
||||
"packages/webui/tests/editor-provenance.test.mjs",
|
||||
"packages/webui/tests/editor.test.mjs",
|
||||
"packages/webui/tests/history-return-flow.test.mjs",
|
||||
"packages/webui/tests/instances-browser.test.mjs",
|
||||
"packages/webui/tests/instances.test.mjs",
|
||||
"packages/webui/tests/library-cli.test.mjs",
|
||||
"packages/webui/tests/library-status.test.mjs",
|
||||
"packages/webui/tests/limits-browser.test.mjs",
|
||||
"packages/webui/tests/limits-route.test.mjs",
|
||||
"packages/webui/tests/markdown-preview.test.mjs",
|
||||
"packages/webui/tests/messages.test.mjs",
|
||||
"packages/webui/tests/pinned-copy.test.mjs",
|
||||
"packages/webui/tests/preview.test.mjs",
|
||||
"packages/webui/tests/processing-browser.test.mjs",
|
||||
"packages/webui/tests/processing-ui.test.mjs",
|
||||
"packages/webui/tests/processing.test.mjs",
|
||||
"packages/webui/tests/project-file.test.mjs",
|
||||
"packages/webui/tests/project-name-repo.test.mjs",
|
||||
"packages/webui/tests/proof-cli.test.mjs",
|
||||
"packages/webui/tests/proof.test.mjs",
|
||||
"packages/webui/tests/reads.test.mjs",
|
||||
"packages/webui/tests/relaunch.test.mjs",
|
||||
"packages/webui/tests/return-flow.test.mjs",
|
||||
"packages/webui/tests/routes-browser.test.mjs",
|
||||
"packages/webui/tests/routes.test.mjs",
|
||||
"packages/webui/tests/send-browser.test.mjs",
|
||||
"packages/webui/tests/send.test.mjs",
|
||||
"packages/webui/tests/serve.test.mjs",
|
||||
"packages/webui/tests/service.test.mjs",
|
||||
"packages/webui/tests/settings-form.test.mjs",
|
||||
"packages/webui/tests/settings-write.test.mjs",
|
||||
"packages/webui/tests/shell.test.mjs",
|
||||
"packages/webui/tests/sso-browser.test.mjs",
|
||||
"packages/webui/tests/sso.test.mjs",
|
||||
"packages/webui/tests/tester-browser.test.mjs",
|
||||
"packages/webui/tests/tester-cli.test.mjs",
|
||||
"packages/webui/tests/tester-listener.test.mjs",
|
||||
"packages/webui/tests/tester-socket.test.mjs",
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs",
|
||||
"packages/webui/tests/thread-claims.test.mjs",
|
||||
"packages/webui/tests/usage-browser.test.mjs",
|
||||
"packages/webui/tests/usage.test.mjs",
|
||||
"packages/webui/tests/views.test.mjs"
|
||||
]
|
||||
},
|
||||
"bus_rebase_union": {
|
||||
"count": 20,
|
||||
"files": [
|
||||
"packages/bus/tests/account-migration.test.mjs",
|
||||
"packages/bus/tests/chief-of-staff.test.mjs",
|
||||
"packages/bus/tests/comment-migration.test.mjs",
|
||||
"packages/bus/tests/end-launch.test.mjs",
|
||||
"packages/bus/tests/fire-revokes-grants.test.mjs",
|
||||
"packages/bus/tests/gitea-grant.test.mjs",
|
||||
"packages/bus/tests/gitea-migration.test.mjs",
|
||||
"packages/bus/tests/grant-executor.test.mjs",
|
||||
"packages/bus/tests/grant-migration.test.mjs",
|
||||
"packages/bus/tests/lifecycle-revoke.test.mjs",
|
||||
"packages/bus/tests/message-filter.test.mjs",
|
||||
"packages/bus/tests/name-migration.test.mjs",
|
||||
"packages/bus/tests/schema.test.mjs",
|
||||
"packages/bus/tests/sessions.test.mjs",
|
||||
"packages/bus/tests/spec-migration.test.mjs",
|
||||
"packages/bus/tests/tester-writes.test.mjs",
|
||||
"packages/bus/tests/thread-claims.test.mjs",
|
||||
"packages/bus/tests/thread-migration.test.mjs",
|
||||
"packages/bus/tests/threads.test.mjs",
|
||||
"packages/bus/tests/usage-migration.test.mjs"
|
||||
]
|
||||
}
|
||||
},
|
||||
"node_limits": {
|
||||
"packages/cli/tests/access.test.mjs": 900,
|
||||
"packages/cli/tests/app.test.mjs": 900,
|
||||
"packages/cli/tests/boot-status.test.mjs": 900,
|
||||
"packages/cli/tests/case1-accept.test.mjs": 418,
|
||||
"packages/cli/tests/case1-hostcheck.test.mjs": 900,
|
||||
"packages/cli/tests/case2-persona-import.test.mjs": 900,
|
||||
"packages/cli/tests/case2-unit.test.mjs": 320,
|
||||
"packages/cli/tests/channel-cli.test.mjs": 900,
|
||||
"packages/cli/tests/channel-recovery.test.mjs": 900,
|
||||
"packages/cli/tests/cli.test.mjs": 900,
|
||||
"packages/cli/tests/config.test.mjs": 900,
|
||||
"packages/cli/tests/credentials.test.mjs": 900,
|
||||
"packages/cli/tests/follow.test.mjs": 900,
|
||||
"packages/cli/tests/format.test.mjs": 900,
|
||||
"packages/cli/tests/gate-lane-auth.test.mjs": 900,
|
||||
"packages/cli/tests/gate-lane-fixtures.test.mjs": 900,
|
||||
"packages/cli/tests/gate-lane-image.test.mjs": 900,
|
||||
"packages/cli/tests/gate-lane-state.test.mjs": 900,
|
||||
"packages/cli/tests/gate-lane.test.mjs": 900,
|
||||
"packages/cli/tests/git-socket.test.mjs": 900,
|
||||
"packages/cli/tests/grants.test.mjs": 900,
|
||||
"packages/cli/tests/host.test.mjs": 900,
|
||||
"packages/cli/tests/hosts.test.mjs": 900,
|
||||
"packages/cli/tests/instances.test.mjs": 900,
|
||||
"packages/cli/tests/launch-account.test.mjs": 900,
|
||||
"packages/cli/tests/launch-limit-checks.test.mjs": 900,
|
||||
"packages/cli/tests/launch-limits.test.mjs": 900,
|
||||
"packages/cli/tests/launch-routes.test.mjs": 900,
|
||||
"packages/cli/tests/launcher.test.mjs": 900,
|
||||
"packages/cli/tests/lifecycle.test.mjs": 160,
|
||||
"packages/cli/tests/limits-tokens.test.mjs": 900,
|
||||
"packages/cli/tests/limits.test.mjs": 900,
|
||||
"packages/cli/tests/mark-read.test.mjs": 900,
|
||||
"packages/cli/tests/names.test.mjs": 900,
|
||||
"packages/cli/tests/notifier.test.mjs": 900,
|
||||
"packages/cli/tests/other-tree.test.mjs": 900,
|
||||
"packages/cli/tests/processing-cli.test.mjs": 900,
|
||||
"packages/cli/tests/project-name-repo.test.mjs": 900,
|
||||
"packages/cli/tests/project.test.mjs": 900,
|
||||
"packages/cli/tests/publish-socket.test.mjs": 900,
|
||||
"packages/cli/tests/stack-copy.test.mjs": 900,
|
||||
"packages/cli/tests/stack-instances.test.mjs": 900,
|
||||
"packages/cli/tests/stack-release-external.test.mjs": 900,
|
||||
"packages/cli/tests/stack-release.test.mjs": 1871,
|
||||
"packages/cli/tests/stack-upgrade.test.mjs": 900,
|
||||
"packages/cli/tests/tester-http.test.mjs": 900,
|
||||
"packages/cli/tests/tester-reads.test.mjs": 900,
|
||||
"packages/cli/tests/tester-threads.test.mjs": 900,
|
||||
"packages/cli/tests/tester.test.mjs": 900,
|
||||
"packages/cli/tests/thread-cli.test.mjs": 126,
|
||||
"packages/cli/tests/thread-launch.test.mjs": 170,
|
||||
"packages/cli/tests/trackers-boot.test.mjs": 900,
|
||||
"packages/cli/tests/transport.test.mjs": 900,
|
||||
"packages/cli/tests/usage.test.mjs": 900,
|
||||
"packages/cli/tests/verbs.test.mjs": 900,
|
||||
"packages/webui/tests/agents-browser.test.mjs": 900,
|
||||
"packages/webui/tests/agents.test.mjs": 900,
|
||||
"packages/webui/tests/assistant.test.mjs": 900,
|
||||
"packages/webui/tests/board-held.test.mjs": 900,
|
||||
"packages/webui/tests/browser-edge.test.mjs": 900,
|
||||
"packages/webui/tests/browser.test.mjs": 900,
|
||||
"packages/webui/tests/bus-browser.test.mjs": 900,
|
||||
"packages/webui/tests/bus.test.mjs": 900,
|
||||
"packages/webui/tests/channel-chat.test.mjs": 900,
|
||||
"packages/webui/tests/chat-browser.test.mjs": 900,
|
||||
"packages/webui/tests/chat.test.mjs": 122,
|
||||
"packages/webui/tests/conversation.test.mjs": 900,
|
||||
"packages/webui/tests/discord.test.mjs": 900,
|
||||
"packages/webui/tests/docs-browser.test.mjs": 900,
|
||||
"packages/webui/tests/editor-browser.test.mjs": 900,
|
||||
"packages/webui/tests/editor-provenance.test.mjs": 900,
|
||||
"packages/webui/tests/editor.test.mjs": 900,
|
||||
"packages/webui/tests/history-return-flow.test.mjs": 900,
|
||||
"packages/webui/tests/instances-browser.test.mjs": 900,
|
||||
"packages/webui/tests/instances.test.mjs": 900,
|
||||
"packages/webui/tests/library-cli.test.mjs": 900,
|
||||
"packages/webui/tests/library-status.test.mjs": 900,
|
||||
"packages/webui/tests/limits-browser.test.mjs": 900,
|
||||
"packages/webui/tests/limits-route.test.mjs": 900,
|
||||
"packages/webui/tests/markdown-preview.test.mjs": 900,
|
||||
"packages/webui/tests/messages.test.mjs": 900,
|
||||
"packages/webui/tests/pinned-copy.test.mjs": 900,
|
||||
"packages/webui/tests/preview.test.mjs": 900,
|
||||
"packages/webui/tests/processing-browser.test.mjs": 900,
|
||||
"packages/webui/tests/processing-ui.test.mjs": 900,
|
||||
"packages/webui/tests/processing.test.mjs": 900,
|
||||
"packages/webui/tests/project-file.test.mjs": 900,
|
||||
"packages/webui/tests/project-name-repo.test.mjs": 900,
|
||||
"packages/webui/tests/proof-cli.test.mjs": 900,
|
||||
"packages/webui/tests/proof.test.mjs": 900,
|
||||
"packages/webui/tests/reads.test.mjs": 900,
|
||||
"packages/webui/tests/relaunch.test.mjs": 900,
|
||||
"packages/webui/tests/return-flow.test.mjs": 900,
|
||||
"packages/webui/tests/routes-browser.test.mjs": 900,
|
||||
"packages/webui/tests/routes.test.mjs": 900,
|
||||
"packages/webui/tests/send-browser.test.mjs": 900,
|
||||
"packages/webui/tests/send.test.mjs": 900,
|
||||
"packages/webui/tests/serve.test.mjs": 900,
|
||||
"packages/webui/tests/service.test.mjs": 900,
|
||||
"packages/webui/tests/settings-form.test.mjs": 900,
|
||||
"packages/webui/tests/settings-write.test.mjs": 900,
|
||||
"packages/webui/tests/shell.test.mjs": 900,
|
||||
"packages/webui/tests/sso-browser.test.mjs": 900,
|
||||
"packages/webui/tests/sso.test.mjs": 900,
|
||||
"packages/webui/tests/tester-browser.test.mjs": 900,
|
||||
"packages/webui/tests/tester-cli.test.mjs": 900,
|
||||
"packages/webui/tests/tester-listener.test.mjs": 900,
|
||||
"packages/webui/tests/tester-socket.test.mjs": 900,
|
||||
"packages/webui/tests/thread-claims-browser.test.mjs": 900,
|
||||
"packages/webui/tests/thread-claims.test.mjs": 900,
|
||||
"packages/webui/tests/usage-browser.test.mjs": 900,
|
||||
"packages/webui/tests/usage.test.mjs": 900,
|
||||
"packages/webui/tests/views.test.mjs": 900,
|
||||
"packages/bus/tests/account-migration.test.mjs": 122,
|
||||
"packages/bus/tests/chief-of-staff.test.mjs": 127,
|
||||
"packages/bus/tests/comment-migration.test.mjs": 122,
|
||||
"packages/bus/tests/end-launch.test.mjs": 122,
|
||||
"packages/bus/tests/fire-revokes-grants.test.mjs": 130,
|
||||
"packages/bus/tests/gitea-grant.test.mjs": 146,
|
||||
"packages/bus/tests/gitea-migration.test.mjs": 122,
|
||||
"packages/bus/tests/grant-executor.test.mjs": 185,
|
||||
"packages/bus/tests/grant-migration.test.mjs": 122,
|
||||
"packages/bus/tests/lifecycle-revoke.test.mjs": 122,
|
||||
"packages/bus/tests/message-filter.test.mjs": 122,
|
||||
"packages/bus/tests/name-migration.test.mjs": 121,
|
||||
"packages/bus/tests/schema.test.mjs": 121,
|
||||
"packages/bus/tests/sessions.test.mjs": 122,
|
||||
"packages/bus/tests/spec-migration.test.mjs": 121,
|
||||
"packages/bus/tests/tester-writes.test.mjs": 122,
|
||||
"packages/bus/tests/thread-claims.test.mjs": 121,
|
||||
"packages/bus/tests/thread-migration.test.mjs": 122,
|
||||
"packages/bus/tests/threads.test.mjs": 124,
|
||||
"packages/bus/tests/usage-migration.test.mjs": 121
|
||||
},
|
||||
"shell_limits": {
|
||||
"scripts/test-auth.sh": {
|
||||
"recorded_duration_seconds": 1.9081228229999543,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
|
||||
"limit_seconds": 126,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "dd4720cb0cbecd2fc523a318f2222d21d257c8c5889996a3d69e522ee971a707",
|
||||
"previous_maximum_seconds": 1.9081228229999543,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
|
||||
"row278_run3_seconds": 0.816
|
||||
},
|
||||
"scripts/test-conductor.sh": {
|
||||
"recorded_duration_seconds": 8.057173820000026,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
|
||||
"limit_seconds": 145,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "da84150467494a4c979759f400854411bd93a7efce981139757bf526d688a23b",
|
||||
"previous_maximum_seconds": 8.057173820000026,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
|
||||
"row278_run3_seconds": 6.078
|
||||
},
|
||||
"scripts/test-config.sh": {
|
||||
"recorded_duration_seconds": 3.1678915339999367,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
|
||||
"limit_seconds": 130,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "3301c1fabf616bb961d62f6decd0a46dadb0f399b8ba7f3c2ca60023d2b24c78",
|
||||
"previous_maximum_seconds": 3.1678915339999367,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r6/whole-results.json",
|
||||
"row278_run3_seconds": 1.868
|
||||
},
|
||||
"scripts/test-discord.sh": {
|
||||
"recorded_duration_seconds": 8.776727847000002,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"limit_seconds": 147,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "a5dcf783c51a5d5d184a357f91ebf9fa1c4e054f0cb84a3d1d7668f6156e025e",
|
||||
"previous_maximum_seconds": 8.776727847000002,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 7.431
|
||||
},
|
||||
"scripts/test-extension-package.sh": {
|
||||
"recorded_duration_seconds": 3.01285702399991,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"limit_seconds": 130,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "5d7b687f16fd1a9414b229501177d530ba3af4eadd3cac319b33f38fdba9bf99",
|
||||
"previous_maximum_seconds": 3.01285702399991,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 1.366
|
||||
},
|
||||
"scripts/test-foundation.sh": {
|
||||
"recorded_duration_seconds": 39.901,
|
||||
"receipt": "385a7194c:agents/gander/work/queue-278/run3/whole/results.json",
|
||||
"limit_seconds": 240,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "2e11038e7f784ec4f539eb768f63bab0fab9c9940334388a1fe2d47ab9e2b008",
|
||||
"previous_maximum_seconds": 39.70872647900006,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 39.901
|
||||
},
|
||||
"scripts/test-land-work.sh": {
|
||||
"recorded_duration_seconds": 12.623263413000037,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"limit_seconds": 158,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "c9d1d5c9b006d5c12e5f796a9828361059f8e0410846fc55c070c0148b15cef4",
|
||||
"previous_maximum_seconds": 12.623263413000037,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 11.338
|
||||
},
|
||||
"scripts/test-queue.sh": {
|
||||
"recorded_duration_seconds": 23.443742031000088,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"limit_seconds": 191,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "c270f181d1fa8b6d42ff4131c339beba786a8fd620bb66f8afdcec05e8b10868",
|
||||
"previous_maximum_seconds": 23.443742031000088,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 21.158
|
||||
},
|
||||
"scripts/test-release.sh": {
|
||||
"recorded_duration_seconds": 12.168674453999964,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"limit_seconds": 157,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "be706dff832257bd4781abeabd19faa4ac16edf9a4af0c96457e33cf3bb6deb3",
|
||||
"previous_maximum_seconds": 12.168674453999964,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 2.67
|
||||
},
|
||||
"scripts/test-task.sh": {
|
||||
"recorded_duration_seconds": 36.783798266,
|
||||
"receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"limit_seconds": 231,
|
||||
"derivation": "ceil(3 * longest successful whole-file receipt) + 120s headroom",
|
||||
"script_sha256": "10c4abb70bf9b83e617089b06a5436cc7fa6b866a176458b22128c3a15163f94",
|
||||
"previous_maximum_seconds": 36.783798266,
|
||||
"previous_receipt": "ec1e7fad8:agents/gander/work/queue-196/r5/resume/whole-results.json",
|
||||
"row278_run3_seconds": 13.843
|
||||
}
|
||||
},
|
||||
"carry": "NONE; mos-1297/1298 fresh whole gate",
|
||||
"review": "duckworth-0164 no blockers"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
# M1-M40 kill table
|
||||
|
||||
Every base passes; each change restored exact bytes and tracked status before the next. No timeout counts as kill.
|
||||
|
||||
| Check | Named killer | Base seconds | Changed seconds | Outcome |
|
||||
|---|---|---:|---:|---|
|
||||
| M1 | row253 factory refuses retired TCP | 0.265 | 0.215 | killed |
|
||||
| M2 | library refuses a privileged-floor miss | 0.515 | 0.465 | killed |
|
||||
| M3 | factory refuses duplicate socket | 0.465 | 0.616 | killed |
|
||||
| M4 | row253 installer refuses unsafe location and query facts | 4.073 | 5.778 | killed |
|
||||
| M5 | row253 installer refuses unsafe location and query facts | 4.073 | 3.923 | killed |
|
||||
| M6 | row253 installer refuses unsafe location and query facts | 4.073 | 0.565 | killed |
|
||||
| M7 | row253 protected homes | 0.214 | 0.265 | killed |
|
||||
| M8 | row253 installer refuses unsafe location and query facts | 4.073 | 3.172 | killed |
|
||||
| M9 | row253 installer refuses unsafe location and query facts | 4.073 | 2.87 | killed |
|
||||
| M10 | row253 installer refuses unsafe location and query facts | 4.073 | 4.023 | killed |
|
||||
| M11 | row253 installer refuses unsafe location and query facts | 4.073 | 3.973 | killed |
|
||||
| M12 | a bad args file refuses | 0.365 | 0.264 | killed |
|
||||
| M13 | a bad args file refuses | 0.365 | 1.116 | killed |
|
||||
| M14 | a bad args file refuses | 0.365 | 1.217 | killed |
|
||||
| M15 | row253 acceptance rejects bad config | 2.069 | 2.369 | killed |
|
||||
| M16 | row253 P8 refuses | 2.069 | 1.016 | killed |
|
||||
| M17 | row253 P10 refuses unsafe metadata | 13.144 | 1.016 | killed |
|
||||
| M18 | row253 P10 refuses unsafe metadata | 13.144 | 2.47 | killed |
|
||||
| M19 | row253 P10 refuses unsafe metadata | 13.144 | 6.328 | killed |
|
||||
| M20 | row253 P10 refuses unsafe metadata | 13.144 | 4.624 | killed |
|
||||
| M21 | row253 P10 refuses unsafe metadata | 13.144 | 8.683 | killed |
|
||||
| M22 | row253 P10 refuses unsafe metadata | 13.144 | 8.283 | killed |
|
||||
| M23 | row253 P10 refuses unsafe metadata | 13.144 | 11.038 | killed |
|
||||
| M24 | row253 factory socket uses actual config | 0.615 | 0.315 | killed |
|
||||
| M25 | row253 socket observation uses configured root | 1.116 | 1.017 | killed |
|
||||
| M26 | row253 P10 refuses unsafe metadata | 13.144 | 13.244 | killed |
|
||||
| M27 | row253 socket observation uses configured root | 1.116 | 1.117 | killed |
|
||||
| M28 | row253 installer refuses unsafe location and query facts | 4.073 | 3.171 | killed |
|
||||
| M29 | row253 installer refuses unsafe location and query facts | 4.073 | 2.269 | killed |
|
||||
| M30 | row253 installer refuses unsafe location and query facts | 4.073 | 0.866 | killed |
|
||||
| M31 | row253 config parser is strict | 0.214 | 0.265 | killed |
|
||||
| M32 | row253 C4 overflow is output-limit | 0.866 | 0.565 | killed |
|
||||
| M33 | row253 query reaps its group | 0.365 | 0.866 | killed |
|
||||
| M34 | row253 C4 signals query | 11.189 | 7.28 | killed |
|
||||
| M35 | row253 C4 stalled supervisor | 14.395 | 9.735 | killed |
|
||||
| M36 | row253 C4 member query | 11.088 | 7.28 | killed |
|
||||
| M37 | row253 C4 overflow is output-limit | 0.866 | 0.515 | killed |
|
||||
| M38 | row253 C4 signals query | 11.189 | 5.275 | killed |
|
||||
| M39 | row253 C4 inline supervisor is byte-identical | 0.215 | 0.214 | killed |
|
||||
| M40 | row253 C4 cleanup budget starts after inventory pass one | 0.265 | 0.214 | killed |
|
||||
@@ -0,0 +1,120 @@
|
||||
{
|
||||
"head": "48e450ce8fbb10df0beabc8da67ab90ea14587ea",
|
||||
"grant": "sage-2786",
|
||||
"manifest": "591020a1096a1606c11f2ee34b37243acddf83d91c69922ccc5cfe22d6180d3a",
|
||||
"wall_seconds": 425.34,
|
||||
"pause": "busy guard refused external SSH docker-compose process before M32 base; no retry",
|
||||
"reported": "gander-0121 direct to Duckworth and Mos, cc Sage; slot returned",
|
||||
"focused": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/focused/installer-red.log",
|
||||
"name": "installer-red",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.215,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/focused/acceptance-red.log",
|
||||
"name": "acceptance-red",
|
||||
"expected_red": true,
|
||||
"counts": {
|
||||
"tests": 1,
|
||||
"pass": 0,
|
||||
"fail": 1,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 70.67,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/focused/focused-1.log",
|
||||
"name": "focused-1",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 43,
|
||||
"pass": 43,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 126.752,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/focused/focused-2.log",
|
||||
"name": "focused-2",
|
||||
"expected_red": false,
|
||||
"counts": {
|
||||
"tests": 34,
|
||||
"pass": 34,
|
||||
"fail": 0,
|
||||
"skipped": 0
|
||||
}
|
||||
}
|
||||
],
|
||||
"controls_pass": 13,
|
||||
"killed": [
|
||||
"M1",
|
||||
"M2",
|
||||
"M3",
|
||||
"M4",
|
||||
"M5",
|
||||
"M6",
|
||||
"M7",
|
||||
"M8",
|
||||
"M9",
|
||||
"M10",
|
||||
"M11",
|
||||
"M12",
|
||||
"M13",
|
||||
"M14",
|
||||
"M15",
|
||||
"M16",
|
||||
"M17",
|
||||
"M18",
|
||||
"M19",
|
||||
"M20",
|
||||
"M21",
|
||||
"M22",
|
||||
"M23",
|
||||
"M24",
|
||||
"M25",
|
||||
"M26",
|
||||
"M27",
|
||||
"M28",
|
||||
"M29",
|
||||
"M30",
|
||||
"M31"
|
||||
],
|
||||
"survived": [],
|
||||
"not_run": [
|
||||
"M32",
|
||||
"M33",
|
||||
"M34",
|
||||
"M35",
|
||||
"M36",
|
||||
"M37",
|
||||
"M38",
|
||||
"M39",
|
||||
"M40",
|
||||
"CLI whole",
|
||||
"WebUI whole",
|
||||
"bus rebase union",
|
||||
"ten whole shells"
|
||||
],
|
||||
"timeouts": 0,
|
||||
"skips": 0,
|
||||
"sweep_count": 0,
|
||||
"classification": "pending Sage/Mos; no test red or product result at refusal"
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
sage-2824,16:53:55Z: Sage self-reports one canonical scripts/mosaic queue --help at16:53:3xZ, under1s, no tests or queue write, gone. Classified benign by Sage; continue grants2786/2811. No guard refusal from this call observed by this seat.
|
||||
@@ -0,0 +1,168 @@
|
||||
# Row253 whole gate RESULTS
|
||||
|
||||
HEAD 48e450ce8fbb10df0beabc8da67ab90ea14587ea, product 14e46006171ef700a72f971fda5cb3a0b8dcc4f2, manifest 591020a1096a1606c11f2ee34b37243acddf83d91c69922ccc5cfe22d6180d3a.
|
||||
|
||||
48e450ce8..actual record HEAD name-only outside agents/gander/:
|
||||
|
||||
```text
|
||||
```
|
||||
|
||||
All listed whole files ran, with no unlisted-file coverage claim. Intended REDs and focused repeats are separate from package totals. Bus coverage is the20-file rebase union, not a bus-whole claim.
|
||||
|
||||
| Whole file | Pass/fail/skip | Wall seconds | Limit seconds |
|
||||
|---|---:|---:|---:|
|
||||
| packages/cli/tests/access.test.mjs | 22/0/0 | 6.178 | 900 |
|
||||
| packages/cli/tests/app.test.mjs | 30/0/0 | 15.149 | 900 |
|
||||
| packages/cli/tests/boot-status.test.mjs | 3/0/0 | 1.668 | 900 |
|
||||
| packages/cli/tests/case1-accept.test.mjs | 34/0/0 | 123.341 | 418 |
|
||||
| packages/cli/tests/case1-hostcheck.test.mjs | 16/0/0 | 2.721 | 900 |
|
||||
| packages/cli/tests/case2-persona-import.test.mjs | 14/0/0 | 3.221 | 900 |
|
||||
| packages/cli/tests/case2-unit.test.mjs | 43/0/0 | 71.568 | 320 |
|
||||
| packages/cli/tests/channel-cli.test.mjs | 2/0/0 | 0.214 | 900 |
|
||||
| packages/cli/tests/channel-recovery.test.mjs | 1/0/0 | 2.569 | 900 |
|
||||
| packages/cli/tests/cli.test.mjs | 12/0/0 | 0.415 | 900 |
|
||||
| packages/cli/tests/config.test.mjs | 6/0/0 | 0.465 | 900 |
|
||||
| packages/cli/tests/credentials.test.mjs | 5/0/0 | 0.315 | 900 |
|
||||
| packages/cli/tests/follow.test.mjs | 6/0/0 | 0.716 | 900 |
|
||||
| packages/cli/tests/format.test.mjs | 4/0/0 | 0.114 | 900 |
|
||||
| packages/cli/tests/gate-lane-auth.test.mjs | 5/0/0 | 19.407 | 900 |
|
||||
| packages/cli/tests/gate-lane-fixtures.test.mjs | 8/0/0 | 0.465 | 900 |
|
||||
| packages/cli/tests/gate-lane-image.test.mjs | 13/0/0 | 0.415 | 900 |
|
||||
| packages/cli/tests/gate-lane-state.test.mjs | 14/0/0 | 2.17 | 900 |
|
||||
| packages/cli/tests/gate-lane.test.mjs | 13/0/0 | 0.665 | 900 |
|
||||
| packages/cli/tests/git-socket.test.mjs | 24/0/0 | 18.905 | 900 |
|
||||
| packages/cli/tests/grants.test.mjs | 6/0/0 | 0.365 | 900 |
|
||||
| packages/cli/tests/host.test.mjs | 43/0/0 | 13.795 | 900 |
|
||||
| packages/cli/tests/hosts.test.mjs | 8/0/0 | 0.315 | 900 |
|
||||
| packages/cli/tests/instances.test.mjs | 14/0/0 | 3.07 | 900 |
|
||||
| packages/cli/tests/launch-account.test.mjs | 7/0/0 | 0.365 | 900 |
|
||||
| packages/cli/tests/launch-limit-checks.test.mjs | 5/0/0 | 0.315 | 900 |
|
||||
| packages/cli/tests/launch-limits.test.mjs | 1/0/0 | 0.265 | 900 |
|
||||
| packages/cli/tests/launch-routes.test.mjs | 9/0/0 | 0.415 | 900 |
|
||||
| packages/cli/tests/launcher.test.mjs | 34/0/0 | 30.18 | 900 |
|
||||
| packages/cli/tests/lifecycle.test.mjs | 24/0/0 | 15.148 | 160 |
|
||||
| packages/cli/tests/limits-tokens.test.mjs | 5/0/0 | 0.215 | 900 |
|
||||
| packages/cli/tests/limits.test.mjs | 5/0/0 | 0.415 | 900 |
|
||||
| packages/cli/tests/mark-read.test.mjs | 6/0/0 | 0.966 | 900 |
|
||||
| packages/cli/tests/names.test.mjs | 2/0/0 | 0.265 | 900 |
|
||||
| packages/cli/tests/notifier.test.mjs | 27/0/0 | 0.766 | 900 |
|
||||
| packages/cli/tests/other-tree.test.mjs | 4/0/0 | 0.265 | 900 |
|
||||
| packages/cli/tests/processing-cli.test.mjs | 4/0/0 | 0.265 | 900 |
|
||||
| packages/cli/tests/project-name-repo.test.mjs | 2/0/0 | 0.315 | 900 |
|
||||
| packages/cli/tests/project.test.mjs | 4/0/0 | 0.565 | 900 |
|
||||
| packages/cli/tests/publish-socket.test.mjs | 9/0/0 | 7.23 | 900 |
|
||||
| packages/cli/tests/stack-copy.test.mjs | 17/0/0 | 17.403 | 900 |
|
||||
| packages/cli/tests/stack-instances.test.mjs | 24/0/0 | 4.073 | 900 |
|
||||
| packages/cli/tests/stack-release-external.test.mjs | 25/0/0 | 99.183 | 900 |
|
||||
| packages/cli/tests/stack-release.test.mjs | 218/0/0 | 683.647 | 1871 |
|
||||
| packages/cli/tests/stack-upgrade.test.mjs | 21/0/0 | 70.916 | 900 |
|
||||
| packages/cli/tests/tester-http.test.mjs | 2/0/0 | 0.164 | 900 |
|
||||
| packages/cli/tests/tester-reads.test.mjs | 6/0/0 | 2.469 | 900 |
|
||||
| packages/cli/tests/tester-threads.test.mjs | 5/0/0 | 2.971 | 900 |
|
||||
| packages/cli/tests/tester.test.mjs | 11/0/0 | 0.365 | 900 |
|
||||
| packages/cli/tests/thread-cli.test.mjs | 11/0/0 | 1.868 | 126 |
|
||||
| packages/cli/tests/thread-launch.test.mjs | 11/0/0 | 17.303 | 170 |
|
||||
| packages/cli/tests/trackers-boot.test.mjs | 2/0/0 | 0.916 | 900 |
|
||||
| packages/cli/tests/transport.test.mjs | 3/0/0 | 2.369 | 900 |
|
||||
| packages/cli/tests/usage.test.mjs | 2/0/0 | 0.365 | 900 |
|
||||
| packages/cli/tests/verbs.test.mjs | 9/0/0 | 3.522 | 900 |
|
||||
| packages/webui/tests/agents-browser.test.mjs | 2/0/0 | 14.396 | 900 |
|
||||
| packages/webui/tests/agents.test.mjs | 8/0/0 | 0.315 | 900 |
|
||||
| packages/webui/tests/assistant.test.mjs | 6/0/0 | 0.214 | 900 |
|
||||
| packages/webui/tests/board-held.test.mjs | 3/0/0 | 9.54 | 900 |
|
||||
| packages/webui/tests/browser-edge.test.mjs | 1/0/0 | 1.669 | 900 |
|
||||
| packages/webui/tests/browser.test.mjs | 1/0/0 | 1.818 | 900 |
|
||||
| packages/webui/tests/bus-browser.test.mjs | 2/0/0 | 3.572 | 900 |
|
||||
| packages/webui/tests/bus.test.mjs | 10/0/0 | 3.171 | 900 |
|
||||
| packages/webui/tests/channel-chat.test.mjs | 3/0/0 | 0.265 | 900 |
|
||||
| packages/webui/tests/chat-browser.test.mjs | 11/0/0 | 18.958 | 900 |
|
||||
| packages/webui/tests/chat.test.mjs | 23/0/0 | 0.615 | 122 |
|
||||
| packages/webui/tests/conversation.test.mjs | 4/0/0 | 4.626 | 900 |
|
||||
| packages/webui/tests/discord.test.mjs | 1/0/0 | 0.966 | 900 |
|
||||
| packages/webui/tests/docs-browser.test.mjs | 1/0/0 | 1.97 | 900 |
|
||||
| packages/webui/tests/editor-browser.test.mjs | 16/0/0 | 14.747 | 900 |
|
||||
| packages/webui/tests/editor-provenance.test.mjs | 5/0/1 | 0.315 | 900 |
|
||||
| packages/webui/tests/editor.test.mjs | 5/0/0 | 1.969 | 900 |
|
||||
| packages/webui/tests/history-return-flow.test.mjs | 1/0/0 | 52.48 | 900 |
|
||||
| packages/webui/tests/instances-browser.test.mjs | 1/0/0 | 1.518 | 900 |
|
||||
| packages/webui/tests/instances.test.mjs | 5/0/0 | 0.515 | 900 |
|
||||
| packages/webui/tests/library-cli.test.mjs | 1/0/0 | 0.365 | 900 |
|
||||
| packages/webui/tests/library-status.test.mjs | 1/0/0 | 0.114 | 900 |
|
||||
| packages/webui/tests/limits-browser.test.mjs | 2/0/0 | 2.169 | 900 |
|
||||
| packages/webui/tests/limits-route.test.mjs | 4/0/0 | 0.265 | 900 |
|
||||
| packages/webui/tests/markdown-preview.test.mjs | 19/0/0 | 8.734 | 900 |
|
||||
| packages/webui/tests/messages.test.mjs | 3/0/0 | 3.071 | 900 |
|
||||
| packages/webui/tests/pinned-copy.test.mjs | 10/0/0 | 7.48 | 900 |
|
||||
| packages/webui/tests/preview.test.mjs | 11/0/0 | 1.167 | 900 |
|
||||
| packages/webui/tests/processing-browser.test.mjs | 9/0/0 | 7.331 | 900 |
|
||||
| packages/webui/tests/processing-ui.test.mjs | 5/0/0 | 0.164 | 900 |
|
||||
| packages/webui/tests/processing.test.mjs | 6/0/0 | 0.215 | 900 |
|
||||
| packages/webui/tests/project-file.test.mjs | 10/0/0 | 0.265 | 900 |
|
||||
| packages/webui/tests/project-name-repo.test.mjs | 1/0/0 | 0.164 | 900 |
|
||||
| packages/webui/tests/proof-cli.test.mjs | 3/0/0 | 2.219 | 900 |
|
||||
| packages/webui/tests/proof.test.mjs | 4/0/0 | 0.315 | 900 |
|
||||
| packages/webui/tests/reads.test.mjs | 11/0/0 | 1.818 | 900 |
|
||||
| packages/webui/tests/relaunch.test.mjs | 1/0/0 | 1.117 | 900 |
|
||||
| packages/webui/tests/return-flow.test.mjs | 1/0/0 | 21.111 | 900 |
|
||||
| packages/webui/tests/routes-browser.test.mjs | 1/0/0 | 1.568 | 900 |
|
||||
| packages/webui/tests/routes.test.mjs | 5/0/0 | 0.415 | 900 |
|
||||
| packages/webui/tests/send-browser.test.mjs | 2/0/0 | 13.895 | 900 |
|
||||
| packages/webui/tests/send.test.mjs | 13/0/0 | 1.018 | 900 |
|
||||
| packages/webui/tests/serve.test.mjs | 4/0/0 | 0.866 | 900 |
|
||||
| packages/webui/tests/service.test.mjs | 32/0/0 | 13.593 | 900 |
|
||||
| packages/webui/tests/settings-form.test.mjs | 5/0/0 | 5.327 | 900 |
|
||||
| packages/webui/tests/settings-write.test.mjs | 4/0/0 | 0.265 | 900 |
|
||||
| packages/webui/tests/shell.test.mjs | 5/0/0 | 8.735 | 900 |
|
||||
| packages/webui/tests/sso-browser.test.mjs | 2/0/0 | 7.129 | 900 |
|
||||
| packages/webui/tests/sso.test.mjs | 28/0/0 | 3.522 | 900 |
|
||||
| packages/webui/tests/tester-browser.test.mjs | 2/0/0 | 2.119 | 900 |
|
||||
| packages/webui/tests/tester-cli.test.mjs | 2/0/0 | 4.074 | 900 |
|
||||
| packages/webui/tests/tester-listener.test.mjs | 10/0/0 | 0.916 | 900 |
|
||||
| packages/webui/tests/tester-socket.test.mjs | 3/0/0 | 0.215 | 900 |
|
||||
| packages/webui/tests/thread-claims-browser.test.mjs | 6/0/0 | 4.875 | 900 |
|
||||
| packages/webui/tests/thread-claims.test.mjs | 4/0/0 | 0.417 | 900 |
|
||||
| packages/webui/tests/usage-browser.test.mjs | 1/0/0 | 0.966 | 900 |
|
||||
| packages/webui/tests/usage.test.mjs | 2/0/0 | 0.265 | 900 |
|
||||
| packages/webui/tests/views.test.mjs | 3/0/0 | 5.125 | 900 |
|
||||
| packages/bus/tests/account-migration.test.mjs | 3/0/0 | 0.415 | 122 |
|
||||
| packages/bus/tests/chief-of-staff.test.mjs | 42/0/0 | 2.419 | 127 |
|
||||
| packages/bus/tests/comment-migration.test.mjs | 5/0/0 | 0.666 | 122 |
|
||||
| packages/bus/tests/end-launch.test.mjs | 7/0/0 | 0.515 | 122 |
|
||||
| packages/bus/tests/fire-revokes-grants.test.mjs | 22/0/0 | 3.722 | 130 |
|
||||
| packages/bus/tests/gitea-grant.test.mjs | 49/0/0 | 9.534 | 146 |
|
||||
| packages/bus/tests/gitea-migration.test.mjs | 5/0/0 | 0.465 | 122 |
|
||||
| packages/bus/tests/grant-executor.test.mjs | 42/0/0 | 22.312 | 185 |
|
||||
| packages/bus/tests/grant-migration.test.mjs | 6/0/0 | 0.565 | 122 |
|
||||
| packages/bus/tests/lifecycle-revoke.test.mjs | 8/0/0 | 0.766 | 122 |
|
||||
| packages/bus/tests/message-filter.test.mjs | 6/0/0 | 0.565 | 122 |
|
||||
| packages/bus/tests/name-migration.test.mjs | 1/0/0 | 0.265 | 121 |
|
||||
| packages/bus/tests/schema.test.mjs | 1/0/0 | 0.214 | 121 |
|
||||
| packages/bus/tests/sessions.test.mjs | 7/0/0 | 0.665 | 122 |
|
||||
| packages/bus/tests/spec-migration.test.mjs | 1/0/0 | 0.215 | 121 |
|
||||
| packages/bus/tests/tester-writes.test.mjs | 8/0/0 | 0.515 | 122 |
|
||||
| packages/bus/tests/thread-claims.test.mjs | 6/0/0 | 0.315 | 121 |
|
||||
| packages/bus/tests/thread-migration.test.mjs | 3/0/0 | 0.415 | 122 |
|
||||
| packages/bus/tests/threads.test.mjs | 17/0/0 | 1.52 | 124 |
|
||||
| packages/bus/tests/usage-migration.test.mjs | 1/0/0 | 0.214 | 121 |
|
||||
| scripts/test-auth.sh | 15/0/0 | 1.067 | 126 |
|
||||
| scripts/test-conductor.sh | 17/0/0 | 6.529 | 145 |
|
||||
| scripts/test-config.sh | 31/0/0 | 1.968 | 130 |
|
||||
| scripts/test-discord.sh | 81/0/0 | 8.033 | 147 |
|
||||
| scripts/test-extension-package.sh | 18/0/0 | 1.617 | 130 |
|
||||
| scripts/test-foundation.sh | 44/0/0 | 49.367 | 240 |
|
||||
| scripts/test-land-work.sh | 86/0/0 | 16.854 | 158 |
|
||||
| scripts/test-queue.sh | 28/0/0 | 35.155 | 191 |
|
||||
| scripts/test-release.sh | 14/0/0 | 3.271 | 157 |
|
||||
| scripts/test-task.sh | 91/0/0 | 16.653 | 231 |
|
||||
|
||||
N9 verbatim: ok 43 - inside a session's sandbox a bind below 1024 fails with EACCES, and a bind on a free high port succeeds
|
||||
|
||||
Every named skip:
|
||||
|
||||
- packages/webui/tests/editor-provenance.test.mjs: ok 6 - 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)
|
||||
- scripts/test-queue.sh: 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)
|
||||
- scripts/test-task.sh: skip live provider cases (row 244: no provider call in the gate)
|
||||
- scripts/test-task.sh: skip live provider cases (row 244: no provider call in the gate)
|
||||
|
||||
|
||||
Same-run resume under sage-2811 after classified external-process guard refusal. No other round carries. Actual record HEADdd9d519b1 differs from candidate48e450ce8 only under agents/gander/. Stage measured wall sums: CLI1253.715s,WebUI267.028s,bus union46.282s,shells140.514s; control20/0 in64.223s; variants40/40 killed in128.497s. Active window walls425.340s and2106.873s, excluding the classified gap. M21 named P10 assertion kill; M38 ERR_ASSERTION strictEqual at case2-unit.test.mjs:203:10, signals/exec PID1298470 vs SID1298319. Both scripts match candidate; all7manifest checks pass. Sweep0run-created leftovers.
|
||||
@@ -0,0 +1 @@
|
||||
sage-2811 classifies the external busy refusal as unrelated and clears this same run5 from M32 with fresh bases. resume5.py is driver.py with only its execution loop filtered to M32-M40; static uniqueness still checks all40, run()/busy()/restoration unchanged. Candidate48e450ce8; actual record HEADdd9d519b1 differs only in agents/gander/. No other round carries.
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
||||
/mnt/storage/scratch/tmp/gTLW
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 overflow is output-limit", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 overflow is output-limit in both sudo modes
|
||||
ok 1 - row253 C4 overflow is output-limit in both sudo modes
|
||||
---
|
||||
duration_ms: 625.994428
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 760.206204
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 overflow is output-limit", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 overflow is output-limit in both sudo modes
|
||||
not ok 1 - row253 C4 overflow is output-limit in both sudo modes
|
||||
---
|
||||
duration_ms: 323.005464
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:211:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /^case2-unit: tester config query output-limit\n$/. Input:
|
||||
|
||||
'case2-unit: tester config query has invalid facts\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
case2-unit: tester config query has invalid facts
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:293:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:215:49)
|
||||
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 490.238569
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 query reaps its group", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 query reaps its group even when a child closes stdout before the query returns
|
||||
ok 1 - row253 query reaps its group even when a child closes stdout before the query returns
|
||||
---
|
||||
duration_ms: 157.91649
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 283.847211
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 query reaps its group", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,28 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 query reaps its group even when a child closes stdout before the query returns
|
||||
not ok 1 - row253 query reaps its group even when a child closes stdout before the query returns
|
||||
---
|
||||
duration_ms: 663.440496
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:263:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'query descendant 1248560 still S'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: true
|
||||
actual: false
|
||||
operator: '=='
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:277:9)
|
||||
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 784.189133
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 signals query", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 signals query has exact inner reason and cleans all members
|
||||
ok 1 - row253 C4 signals query has exact inner reason and cleans all members
|
||||
---
|
||||
duration_ms: 10950.217059
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 11089.397589
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 signals query", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 signals query has exact inner reason and cleans all members
|
||||
not ok 1 - row253 C4 signals query has exact inner reason and cleans all members
|
||||
---
|
||||
duration_ms: 7064.848782
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:192:49'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /^case2-unit: tester config query inner-timeout\n$/. Input:
|
||||
|
||||
'case2-unit: tester config query outer-timeout\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
case2-unit: tester config query outer-timeout
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:293:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:201:3)
|
||||
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 7210.704044
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 stalled supervisor", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup
|
||||
ok 1 - row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup
|
||||
---
|
||||
duration_ms: 14171.49424
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 14286.424938
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 stalled supervisor", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup
|
||||
not ok 1 - row253 C4 stalled supervisor uses the outer reason and explicit residual cleanup
|
||||
---
|
||||
duration_ms: 9539.03879
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:221:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /^case2-unit: tester config query outer-timeout\n$/. Input:
|
||||
|
||||
'case2-unit: tester config query inner-command\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
case2-unit: tester config query inner-command
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:293:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:227:3)
|
||||
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 9657.55839
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 member query", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 member query has exact inner reason and cleans all members
|
||||
ok 1 - row253 C4 member query has exact inner reason and cleans all members
|
||||
---
|
||||
duration_ms: 10905.789988
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 11021.001085
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 member query", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 member query has exact inner reason and cleans all members
|
||||
not ok 1 - row253 C4 member query has exact inner reason and cleans all members
|
||||
---
|
||||
duration_ms: 7081.317279
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:192:49'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /^case2-unit: tester config query inner-timeout\n$/. Input:
|
||||
|
||||
'case2-unit: tester config query outer-timeout\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
case2-unit: tester config query outer-timeout
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:293:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:201:3)
|
||||
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 7220.110326
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 overflow is output-limit", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 overflow is output-limit in both sudo modes
|
||||
not ok 1 - row253 C4 overflow is output-limit in both sudo modes
|
||||
---
|
||||
duration_ms: 314.41894
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:211:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /^case2-unit: tester config query output-limit\n$/. Input:
|
||||
|
||||
'case2-unit: tester config query has invalid facts\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
case2-unit: tester config query has invalid facts
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:293:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:215:49)
|
||||
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 453.186682
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 signals query", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 signals query has exact inner reason and cleans all members
|
||||
not ok 1 - row253 C4 signals query has exact inner reason and cleans all members
|
||||
---
|
||||
duration_ms: 5074.020127
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:192:49'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
signals/exec: direct query PID must equal its kernel SID
|
||||
+ actual - expected
|
||||
|
||||
+ 1298470
|
||||
- 1298319
|
||||
^
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 1298319
|
||||
actual: 1298470
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:203: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 5205.043793
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 inline supervisor is byte-identical", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 inline supervisor is byte-identical in both host scripts
|
||||
ok 1 - row253 C4 inline supervisor is byte-identical in both host scripts
|
||||
---
|
||||
duration_ms: 1.534242
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 137.347553
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 inline supervisor is byte-identical", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,202 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 inline supervisor is byte-identical in both host scripts
|
||||
not ok 1 - row253 C4 inline supervisor is byte-identical in both host scripts
|
||||
---
|
||||
duration_ms: 2.718028
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:235:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
+ actual - expected
|
||||
|
||||
"IFS= read -r -d '' TESTER_SUPERVISOR <<'MOSAIC_TESTER_SUPERVISOR' || :\n" +
|
||||
+ '# one-copy drift\n' +
|
||||
'set +m\n' +
|
||||
'seconds="$1" setsid_bin="$2" sleep_bin="$3"; shift 3\n' +
|
||||
'child="" timer="" verified=0\n' +
|
||||
'stat_fields() {\n' +
|
||||
' local pid="$1" raw="" rest\n' +
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: |-
|
||||
IFS= read -r -d '' TESTER_SUPERVISOR <<'MOSAIC_TESTER_SUPERVISOR' || :
|
||||
set +m
|
||||
seconds="$1" setsid_bin="$2" sleep_bin="$3"; shift 3
|
||||
child="" timer="" verified=0
|
||||
stat_fields() {
|
||||
local pid="$1" raw="" rest
|
||||
# EOF is expected: stat has no NUL. Decide on content, not read's status.
|
||||
IFS= read -r -d '' raw < "/proc/$pid/stat" 2>/dev/null || :
|
||||
[ -n "$raw" ] || { [ -e "/proc/$pid/stat" ] && return 1; return 3; }
|
||||
rest="${raw##*) }"
|
||||
[ "$rest" != "$raw" ] || return 1
|
||||
read -r ST_STATE ST_PARENT ST_GROUP ST_SESSION _ <<< "$rest"
|
||||
[[ "$ST_STATE" =~ ^[A-Za-z]$ && "$ST_SESSION" =~ ^[0-9]+$ && "$ST_GROUP" =~ ^[0-9]+$ ]]
|
||||
}
|
||||
clock_cs() {
|
||||
local boot spare
|
||||
read -r boot spare < /proc/uptime || return 1
|
||||
[[ "$boot" =~ ^([0-9]+)\.([0-9]{2})$ ]] || return 1
|
||||
CLOCK_CS=$((10#${BASH_REMATCH[1]} * 100 + 10#${BASH_REMATCH[2]}))
|
||||
}
|
||||
clean_session() {
|
||||
local entry pid rc live until=""
|
||||
while :; do
|
||||
live=0
|
||||
for entry in /proc/[0-9]*/stat; do
|
||||
pid="${entry%/stat}"; pid="${pid##*/}"
|
||||
rc=0; stat_fields "$pid" || rc=$?
|
||||
[ "$rc" != 3 ] || continue
|
||||
[ "$rc" = 0 ] || return 1
|
||||
[ "$ST_SESSION" = "$child" ] || continue
|
||||
case "$ST_STATE" in Z|X) continue ;; esac
|
||||
live=1
|
||||
if ! kill -KILL "$pid" 2>/dev/null; then
|
||||
rc=0; stat_fields "$pid" || rc=$?
|
||||
[ "$rc" = 3 ] || { [ "$rc" = 0 ] && { [ "$ST_STATE" = Z ] || [ "$ST_STATE" = X ]; }; } || return 1
|
||||
fi
|
||||
done
|
||||
[ "$live" != 0 ] || return 0
|
||||
clock_cs || return 1
|
||||
# Inventory pass 1 is outside the bounded confirmation/retry budget.
|
||||
[ -n "$until" ] || until=$((CLOCK_CS + 25))
|
||||
[ "$CLOCK_CS" -lt "$until" ] || return 1
|
||||
"$sleep_bin" 0.01
|
||||
done
|
||||
}
|
||||
finish() {
|
||||
local rc="$?"
|
||||
trap - EXIT HUP INT TERM
|
||||
if [ "$verified" = 1 ]; then
|
||||
clean_session || rc=86
|
||||
elif [ -n "$child" ]; then
|
||||
kill -KILL "$child" 2>/dev/null || :
|
||||
fi
|
||||
[ -z "$child" ] || wait "$child" 2>/dev/null || :
|
||||
if [ -n "$timer" ]; then kill -KILL "$timer" 2>/dev/null || :; wait "$timer" 2>/dev/null || :; fi
|
||||
exit "$rc"
|
||||
}
|
||||
trap finish EXIT
|
||||
trap 'exit 88' HUP INT TERM
|
||||
"$sleep_bin" "$seconds" & timer=$!
|
||||
"$setsid_bin" "$@" & child=$!
|
||||
# Allow session creation the whole inner budget, rather than a 200 ms margin.
|
||||
while :; do
|
||||
rc=0; stat_fields "$child" || rc=$?
|
||||
[ "$rc" = 0 ] || exit 85
|
||||
if [ "$ST_SESSION" = "$child" ]; then verified=1; break; fi
|
||||
kill -0 "$timer" 2>/dev/null || exit 81
|
||||
"$sleep_bin" 0.002
|
||||
done
|
||||
[ "$verified" = 1 ] || exit 85
|
||||
while kill -0 "$child" 2>/dev/null; do
|
||||
kill -0 "$timer" 2>/dev/null || exit 81
|
||||
"$sleep_bin" 0.01
|
||||
done
|
||||
kill -0 "$timer" 2>/dev/null || exit 81
|
||||
rc=0; wait "$child" || rc=$?
|
||||
[ "$rc" = 0 ] || exit 87
|
||||
exit 0
|
||||
MOSAIC_TESTER_SUPERVISOR
|
||||
|
||||
actual: |-
|
||||
IFS= read -r -d '' TESTER_SUPERVISOR <<'MOSAIC_TESTER_SUPERVISOR' || :
|
||||
# one-copy drift
|
||||
set +m
|
||||
seconds="$1" setsid_bin="$2" sleep_bin="$3"; shift 3
|
||||
child="" timer="" verified=0
|
||||
stat_fields() {
|
||||
local pid="$1" raw="" rest
|
||||
# EOF is expected: stat has no NUL. Decide on content, not read's status.
|
||||
IFS= read -r -d '' raw < "/proc/$pid/stat" 2>/dev/null || :
|
||||
[ -n "$raw" ] || { [ -e "/proc/$pid/stat" ] && return 1; return 3; }
|
||||
rest="${raw##*) }"
|
||||
[ "$rest" != "$raw" ] || return 1
|
||||
read -r ST_STATE ST_PARENT ST_GROUP ST_SESSION _ <<< "$rest"
|
||||
[[ "$ST_STATE" =~ ^[A-Za-z]$ && "$ST_SESSION" =~ ^[0-9]+$ && "$ST_GROUP" =~ ^[0-9]+$ ]]
|
||||
}
|
||||
clock_cs() {
|
||||
local boot spare
|
||||
read -r boot spare < /proc/uptime || return 1
|
||||
[[ "$boot" =~ ^([0-9]+)\.([0-9]{2})$ ]] || return 1
|
||||
CLOCK_CS=$((10#${BASH_REMATCH[1]} * 100 + 10#${BASH_REMATCH[2]}))
|
||||
}
|
||||
clean_session() {
|
||||
local entry pid rc live until=""
|
||||
while :; do
|
||||
live=0
|
||||
for entry in /proc/[0-9]*/stat; do
|
||||
pid="${entry%/stat}"; pid="${pid##*/}"
|
||||
rc=0; stat_fields "$pid" || rc=$?
|
||||
[ "$rc" != 3 ] || continue
|
||||
[ "$rc" = 0 ] || return 1
|
||||
[ "$ST_SESSION" = "$child" ] || continue
|
||||
case "$ST_STATE" in Z|X) continue ;; esac
|
||||
live=1
|
||||
if ! kill -KILL "$pid" 2>/dev/null; then
|
||||
rc=0; stat_fields "$pid" || rc=$?
|
||||
[ "$rc" = 3 ] || { [ "$rc" = 0 ] && { [ "$ST_STATE" = Z ] || [ "$ST_STATE" = X ]; }; } || return 1
|
||||
fi
|
||||
done
|
||||
[ "$live" != 0 ] || return 0
|
||||
clock_cs || return 1
|
||||
# Inventory pass 1 is outside the bounded confirmation/retry budget.
|
||||
[ -n "$until" ] || until=$((CLOCK_CS + 25))
|
||||
[ "$CLOCK_CS" -lt "$until" ] || return 1
|
||||
"$sleep_bin" 0.01
|
||||
done
|
||||
}
|
||||
finish() {
|
||||
local rc="$?"
|
||||
trap - EXIT HUP INT TERM
|
||||
if [ "$verified" = 1 ]; then
|
||||
clean_session || rc=86
|
||||
elif [ -n "$child" ]; then
|
||||
kill -KILL "$child" 2>/dev/null || :
|
||||
fi
|
||||
[ -z "$child" ] || wait "$child" 2>/dev/null || :
|
||||
if [ -n "$timer" ]; then kill -KILL "$timer" 2>/dev/null || :; wait "$timer" 2>/dev/null || :; fi
|
||||
exit "$rc"
|
||||
}
|
||||
trap finish EXIT
|
||||
trap 'exit 88' HUP INT TERM
|
||||
"$sleep_bin" "$seconds" & timer=$!
|
||||
"$setsid_bin" "$@" & child=$!
|
||||
# Allow session creation the whole inner budget, rather than a 200 ms margin.
|
||||
while :; do
|
||||
rc=0; stat_fields "$child" || rc=$?
|
||||
[ "$rc" = 0 ] || exit 85
|
||||
if [ "$ST_SESSION" = "$child" ]; then verified=1; break; fi
|
||||
kill -0 "$timer" 2>/dev/null || exit 81
|
||||
"$sleep_bin" 0.002
|
||||
done
|
||||
[ "$verified" = 1 ] || exit 85
|
||||
while kill -0 "$child" 2>/dev/null; do
|
||||
kill -0 "$timer" 2>/dev/null || exit 81
|
||||
"$sleep_bin" 0.01
|
||||
done
|
||||
kill -0 "$timer" 2>/dev/null || exit 81
|
||||
rc=0; wait "$child" || rc=$?
|
||||
[ "$rc" = 0 ] || exit 87
|
||||
exit 0
|
||||
MOSAIC_TESTER_SUPERVISOR
|
||||
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:238:34)
|
||||
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 126.372046
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 cleanup budget starts after inventory pass one", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 cleanup budget starts after inventory pass one
|
||||
ok 1 - row253 C4 cleanup budget starts after inventory pass one
|
||||
---
|
||||
duration_ms: 48.881506
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 169.630508
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 C4 cleanup budget starts after inventory pass one", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,34 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 C4 cleanup budget starts after inventory pass one
|
||||
not ok 1 - row253 C4 cleanup budget starts after inventory pass one
|
||||
---
|
||||
duration_ms: 27.786408
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:241:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly equal:
|
||||
|
||||
1 !== 0
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 0
|
||||
actual: 1
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:260:9)
|
||||
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 159.852259
|
||||
@@ -0,0 +1,412 @@
|
||||
{
|
||||
"grant": "sage-2811",
|
||||
"static": [
|
||||
{
|
||||
"id": "M1",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "4de5294507816ddc4114c418a6bb7c197b3fefe92f19b3b18cb95384e23de594"
|
||||
},
|
||||
{
|
||||
"id": "M2",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "caf88ee7ad50b89169a0f57e12b696fe3828238af2ef1008ba6b6016ea7b2528"
|
||||
},
|
||||
{
|
||||
"id": "M3",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "4401886e41fdb4c27610198b66f12d0b3103c5422e0862e9cea30a6f67c93fde"
|
||||
},
|
||||
{
|
||||
"id": "M4",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "ef9a92bb24c72832bdba4d782bf4662394ee05e06a12b750a23d488d9181cd1d"
|
||||
},
|
||||
{
|
||||
"id": "M5",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "4ab80b9db782a97c935f732bec87ac3bb45b58bf9076bc9f9abb4970fef1cada"
|
||||
},
|
||||
{
|
||||
"id": "M6",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "7064e1926c77aedb5453c7771cd42091a5e90fc546821ddbb75d39e6a87c5a31"
|
||||
},
|
||||
{
|
||||
"id": "M7",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "aece2a211aefa1dc4cfb6a3540f922ee5e7f23de26ce974b7655f8fe1722ee16"
|
||||
},
|
||||
{
|
||||
"id": "M8",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "076d4f8f73570a21ad512b12eb5f6f494cb246b2a9d071fea27cc3c126efca2b"
|
||||
},
|
||||
{
|
||||
"id": "M9",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "244cee7128d3b6e380ff24ab9e31f6c456d5153dddf88bb4719028277f523276"
|
||||
},
|
||||
{
|
||||
"id": "M10",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "0e7d369f34cd41708d7b5104113093ebac0296d08902193ced03a1a2bbb83567"
|
||||
},
|
||||
{
|
||||
"id": "M11",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "84181be89249975dd48e1a5daa51eab4bae7b483ea8edf5d6c0cdf373459c046"
|
||||
},
|
||||
{
|
||||
"id": "M12",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "7f8b45e467b197bc00fb740a6507ee85cae332e404e8ffdd8c749b4264239e97"
|
||||
},
|
||||
{
|
||||
"id": "M13",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "85ec11381f4e6662ec1729d84c57022e2f573a2f4c2682250fa005803cdfd63c"
|
||||
},
|
||||
{
|
||||
"id": "M14",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "131f78c490b5ec26142c0703be0b5341551dd9d154c13e519604215fe1240b67"
|
||||
},
|
||||
{
|
||||
"id": "M15",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "077b2eb210c853a03152733f4aa99e450ef0fa17d28f97f8adb78229b02ef147"
|
||||
},
|
||||
{
|
||||
"id": "M16",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "2439d201b902c13fe3903a2d936c8700f0124a430b7d9b2877d485e1f381d3fb"
|
||||
},
|
||||
{
|
||||
"id": "M17",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "1be36e62095e97c64c0bdc5d50b4a3a2e6dd18f1c45cfe1da0fe66cbb8aebd61"
|
||||
},
|
||||
{
|
||||
"id": "M18",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "f5e61c286c51e5a2b26acab22fc5a32c35add0cb8126dc25b5ce747677e34888"
|
||||
},
|
||||
{
|
||||
"id": "M19",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "2f337c03acc60978f1850275a2c8ba6d1b2c74befeb8d73f94d2b477e43b8c56"
|
||||
},
|
||||
{
|
||||
"id": "M20",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "99689c22c6eb73ff9d599ba7305da552357baa99145305ca400f083017bbe3b1"
|
||||
},
|
||||
{
|
||||
"id": "M21",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "bff90f2b1f59086575f98ff96dbd51bacb0265342f595b4bee96cb228d67c030"
|
||||
},
|
||||
{
|
||||
"id": "M22",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "7a8cb7ce47774ab80a55331fc831b7458487be7187b10128746321b375dc83ff"
|
||||
},
|
||||
{
|
||||
"id": "M23",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "e6814801188a6eb98f705d93ac123e988e4daf43afbe96464451f925b1c98d1c"
|
||||
},
|
||||
{
|
||||
"id": "M24",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "ea8d8875f0b4503a6cf4fb96bd88184af65a7f61d1236b9b49baacc748b0c741"
|
||||
},
|
||||
{
|
||||
"id": "M25",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "cfed9261a03eafcdcfb903226b0ddb3fba779d1105e3b4c411b66c10e1672d11"
|
||||
},
|
||||
{
|
||||
"id": "M26",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "1a245b5403b1b9b5f25dfb8cc8ee24acf99121ff063277d52c928ba18543f997"
|
||||
},
|
||||
{
|
||||
"id": "M27",
|
||||
"file": "scripts/case1-accept.sh",
|
||||
"occurrences": 1,
|
||||
"before": "c02bef6b3495e5a4548d7b4e89675ed52be26a0c9ccce4d9d5cfc5fe2ce437bd",
|
||||
"after": "efaa027cf7ec3252a675be80219e40fa7b5a3317b28c21fe02363d23ec6e5323"
|
||||
},
|
||||
{
|
||||
"id": "M28",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "bb734cc1a42c0853068f77154dddaaee8eeef5696f67de2e27d1a898409f3b44"
|
||||
},
|
||||
{
|
||||
"id": "M29",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "a6f353aa419862a473eee28e41c5208b464a378ae23e14a73b62ed92bd36cd1f"
|
||||
},
|
||||
{
|
||||
"id": "M30",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "d22cf0f492178b3071604abd550355573c28bf4c26f4a3582f6895710ad3d788"
|
||||
},
|
||||
{
|
||||
"id": "M31",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "3e7450a19cf152653bf6e73be39ef9fb552ec7a656564ca35e44bc12f1586ef5"
|
||||
},
|
||||
{
|
||||
"id": "M32",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "ff11fc1013d70d861643cfd70aa964422cb6a82fb8b4b959bae04703803838b9"
|
||||
},
|
||||
{
|
||||
"id": "M33",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "1c2a58bef2369d8af90b65f9473dd7a112f484db983d8460e2524cb8a673f18b"
|
||||
},
|
||||
{
|
||||
"id": "M34",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "13c1ab861017f3c3c65f50d34a64d7028482e3bc11a8e5908632ec6685416025"
|
||||
},
|
||||
{
|
||||
"id": "M35",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "8f05c1a3a18c5294c63a5853317ce5a5066303145410039629697b5d15d99bfe"
|
||||
},
|
||||
{
|
||||
"id": "M36",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "c1247a7cab2c24e0ab017c49f66797ed16149d3f52cfa41c0968f154261d0d00"
|
||||
},
|
||||
{
|
||||
"id": "M37",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "f210b9c796322333849bc4897b9db3e44bd573fef24c4ba757151981b891f11b"
|
||||
},
|
||||
{
|
||||
"id": "M38",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "736418014b96a09ebe82d996ff6f45b9eb1f3c1e0ada274c505f89fbbd732783"
|
||||
},
|
||||
{
|
||||
"id": "M39",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "1486b8907be4f327bc17b64ddf615cd8b3db1193c185f7934bcba1c7ccc5ec31"
|
||||
},
|
||||
{
|
||||
"id": "M40",
|
||||
"file": "scripts/case2-unit.sh",
|
||||
"occurrences": 1,
|
||||
"before": "d7670bdb049ae41ba3774fc83de633636859b6723be858cfb31ea106b0e8812b",
|
||||
"after": "2f654a76d887ca62525e01c307a2a8f828ee426087dc63a2d4df6a07dc525d53"
|
||||
}
|
||||
],
|
||||
"bases": {
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 C4 overflow is output-limit": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.866,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M32-base.log"
|
||||
},
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 query reaps its group": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.365,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M33-base.log"
|
||||
},
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 C4 signals query": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 11.189,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M34-base.log"
|
||||
},
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 C4 stalled supervisor": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 14.395,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M35-base.log"
|
||||
},
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 C4 member query": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 11.088,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M36-base.log"
|
||||
},
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 C4 inline supervisor is byte-identical": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.215,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M39-base.log"
|
||||
},
|
||||
"packages/cli/tests/case2-unit.test.mjs|row253 C4 cleanup budget starts after inventory pass one": {
|
||||
"code": 0,
|
||||
"timeout": false,
|
||||
"seconds": 0.265,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M40-base.log"
|
||||
}
|
||||
},
|
||||
"changes": [
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.565,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M32.log",
|
||||
"id": "M32",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.866,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M33.log",
|
||||
"id": "M33",
|
||||
"base_seconds": 0.365,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 7.28,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M34.log",
|
||||
"id": "M34",
|
||||
"base_seconds": 11.189,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 9.735,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M35.log",
|
||||
"id": "M35",
|
||||
"base_seconds": 14.395,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 7.28,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M36.log",
|
||||
"id": "M36",
|
||||
"base_seconds": 11.088,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.515,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M37.log",
|
||||
"id": "M37",
|
||||
"base_seconds": 0.866,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 5.275,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M38.log",
|
||||
"id": "M38",
|
||||
"base_seconds": 11.189,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M39.log",
|
||||
"id": "M39",
|
||||
"base_seconds": 0.215,
|
||||
"outcome": "killed"
|
||||
},
|
||||
{
|
||||
"code": 1,
|
||||
"timeout": false,
|
||||
"seconds": 0.214,
|
||||
"log": "/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/agents/gander/work/queue-253/run5-gate/changes-resume/M40.log",
|
||||
"id": "M40",
|
||||
"base_seconds": 0.265,
|
||||
"outcome": "killed"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 factory refuses retired TCP", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 factory refuses retired TCP and a value after the socket marker
|
||||
ok 1 - row253 factory refuses retired TCP and a value after the socket marker
|
||||
---
|
||||
duration_ms: 38.357381
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 194.512914
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 factory refuses retired TCP", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,37 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 factory refuses retired TCP and a value after the socket marker
|
||||
not ok 1 - row253 factory refuses retired TCP and a value after the socket marker
|
||||
---
|
||||
duration_ms: 22.089268
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:568:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /case2-unit.sh retires tester TCP; use --tester-socket/. Input:
|
||||
|
||||
'case2-unit: unknown serve flag: --tester-port\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
case2-unit: unknown serve flag: --tester-port
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:293:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:570:3)
|
||||
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 147.615863
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 installer refuses unsafe location and query facts", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,36 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 installer refuses unsafe location and query facts before unit writes
|
||||
not ok 1 - row253 installer refuses unsafe location and query facts before unit writes
|
||||
---
|
||||
duration_ms: 3780.354212
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/gTLW/case2-unit-Kq7Byl/units/[email protected] and /mnt/storage/scratch/tmp/gTLW/case2-unit-Kq7Byl/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started [email protected], then mosaic-webui.service
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 1
|
||||
actual: 0
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:292:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39)
|
||||
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 3936.333695
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 installer refuses unsafe location and query facts", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,36 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 installer refuses unsafe location and query facts before unit writes
|
||||
not ok 1 - row253 installer refuses unsafe location and query facts before unit writes
|
||||
---
|
||||
duration_ms: 3754.732926
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:136:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/gTLW/case2-unit-HFfMMK/units/[email protected] and /mnt/storage/scratch/tmp/gTLW/case2-unit-HFfMMK/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started [email protected], then mosaic-webui.service
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 1
|
||||
actual: 0
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:292:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:159:39)
|
||||
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 3900.369822
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "a bad args file refuses", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
---
|
||||
duration_ms: 151.01654
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 290.237122
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "a bad args file refuses", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,30 @@
|
||||
TAP version 13
|
||||
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
not ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
---
|
||||
duration_ms: 77.168755
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:673:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'retired TCP'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: 'case1-accept: refusing: unknown serve flag --tester-port'
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:694:12)
|
||||
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 187.609968
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "a bad args file refuses", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,64 @@
|
||||
TAP version 13
|
||||
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
not ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
---
|
||||
duration_ms: 880.4584
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:673:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
no tester socket: F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-31b4eb967654
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
|
||||
0 !== 2
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 2
|
||||
actual: 0
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:692:12)
|
||||
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 1015.475719
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "a bad args file refuses", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,64 @@
|
||||
TAP version 13
|
||||
# Subtest: row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
not ok 1 - row 195 accept: a bad args file refuses with exit 2 before any check, each for its own reason
|
||||
---
|
||||
duration_ms: 1010.319462
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:673:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
socket value: F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-308e5e4db110
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
|
||||
0 !== 2
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 2
|
||||
actual: 0
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:692:12)
|
||||
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 1122.663526
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 acceptance rejects bad config", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 acceptance rejects bad config and unsupported copies before talk
|
||||
ok 1 - row253 acceptance rejects bad config and unsupported copies before talk
|
||||
---
|
||||
duration_ms: 1875.517959
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 1988.985784
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 acceptance rejects bad config", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,64 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 acceptance rejects bad config and unsupported copies before talk
|
||||
not ok 1 - row253 acceptance rejects bad config and unsupported copies before talk
|
||||
---
|
||||
duration_ms: 2162.891467
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:291:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
failed: F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-a861b9eeb0d5
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
|
||||
0 !== 2
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 2
|
||||
actual: 0
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:302:12)
|
||||
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 2285.724494
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P8 refuses", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P8 refuses both retired TCP and board listeners
|
||||
ok 1 - row253 P8 refuses both retired TCP and board listeners
|
||||
---
|
||||
duration_ms: 1857.061499
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 1979.254331
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P8 refuses", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,40 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P8 refuses both retired TCP and board listeners
|
||||
not ok 1 - row253 P8 refuses both retired TCP and board listeners
|
||||
---
|
||||
duration_ms: 844.894916
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:322:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
Expected values to be strictly deep-equal:
|
||||
+ actual - expected
|
||||
|
||||
[
|
||||
+ 'closed'
|
||||
- 'unnamed'
|
||||
]
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
0: 'unnamed'
|
||||
actual:
|
||||
0: 'closed'
|
||||
operator: 'deepStrictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:325:12)
|
||||
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 958.367885
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 12922.519815
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 13043.44002
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 851.886835
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'parent-mode'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-c0576f256e1d
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 961.548344
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 2249.955562
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'socket-mode'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-1d6559cbbe4d
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 2389.399921
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 6119.111773
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'peer-pid'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-9f0a9525015d
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=555 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 6243.376076
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "library refuses a privileged-floor miss", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
|
||||
ok 1 - library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
|
||||
---
|
||||
duration_ms: 322.369564
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 449.842369
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "library refuses a privileged-floor miss", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,36 @@
|
||||
TAP version 13
|
||||
# Subtest: library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
|
||||
not ok 1 - library refuses a privileged-floor miss, a bad proof pair and every flag outside its set
|
||||
---
|
||||
duration_ms: 277.101394
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:501:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
expected a refusal, got 0: case2-unit: wrote /mnt/storage/scratch/tmp/gTLW/case2-unit-BAjErb/units/[email protected] and /mnt/storage/scratch/tmp/gTLW/case2-unit-BAjErb/units/mosaic-webui.service from copy aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa; enabled and started [email protected], then mosaic-webui.service
|
||||
|
||||
|
||||
0 !== 1
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 1
|
||||
actual: 0
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
refuses (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:292:10)
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:526:5)
|
||||
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 394.449643
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 4432.823809
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'peer'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-7ff36518510d
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=998 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 4552.422554
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 8443.132209
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'peer-malformed'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-74d9c733ba72
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 8595.291832
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 8038.103105
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'python-not-elf'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-c7b3bc2eefa7
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 8176.67433
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 10817.188496
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'changed-inode'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-8c47b1fdc391
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=1024 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 10937.269709
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 factory socket uses actual config", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 factory socket uses actual config and target-uid query without widening hardening
|
||||
ok 1 - row253 factory socket uses actual config and target-uid query without widening hardening
|
||||
---
|
||||
duration_ms: 391.157771
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 552.748836
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "320", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 factory socket uses actual config", "packages/cli/tests/case2-unit.test.mjs"]
|
||||
@@ -0,0 +1,35 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 factory socket uses actual config and target-uid query without widening hardening
|
||||
not ok 1 - row253 factory socket uses actual config and target-uid query without widening hardening
|
||||
---
|
||||
duration_ms: 59.285658
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:127:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
case2-unit: tester config query inner-command
|
||||
|
||||
|
||||
1 !== 0
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected: 0
|
||||
actual: 1
|
||||
operator: 'strictEqual'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case2-unit.test.mjs:129:45)
|
||||
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 203.580569
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 socket observation uses configured root", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,16 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes
|
||||
ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes
|
||||
---
|
||||
duration_ms: 914.915689
|
||||
type: 'test'
|
||||
...
|
||||
1..1
|
||||
# tests 1
|
||||
# suites 0
|
||||
# pass 1
|
||||
# fail 0
|
||||
# cancelled 0
|
||||
# skipped 0
|
||||
# todo 0
|
||||
# duration_ms 1026.527806
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 socket observation uses configured root", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,94 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 socket observation uses configured root, metadata and the Console peer without sending bytes
|
||||
not ok 1 - row253 socket observation uses configured root, metadata and the Console peer without sending bytes
|
||||
---
|
||||
duration_ms: 807.473804
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:230:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: |-
|
||||
The input did not match the regular expression /P10 tester-socket-squat unnamed boundary=observed path=\/srv\/mosaic\/custom-data\/console\/tester.sock/. Input:
|
||||
|
||||
'F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)\n' +
|
||||
'F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200\n' +
|
||||
'F3 tester-reply pass chief replied to case1-accept-f8b804262c83\n' +
|
||||
'F4 precheck pass case2-precheck.sh --profile factory exits 0\n' +
|
||||
"F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'\n" +
|
||||
"F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'\n" +
|
||||
'F7 pm-live pass one live launch: pm run r-0002\n' +
|
||||
"F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'\n" +
|
||||
'F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"\n' +
|
||||
'F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0\n' +
|
||||
'F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent\n' +
|
||||
'P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.\n' +
|
||||
"P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent\n" +
|
||||
'P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines\n' +
|
||||
"P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve\n" +
|
||||
'P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)\n' +
|
||||
'P6 group-members closed sudo holds only localadmin, and docker and lxd have no members\n' +
|
||||
'P7 sudoers-d closed no file under /etc/sudoers.d names mosaic\n' +
|
||||
'P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/custom-data/console/tester.sock\n' +
|
||||
'P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member\n' +
|
||||
'P10 tester-socket-squat unnamed boundary=failed reason=probe-inner-command path=/srv/mosaic/custom-data/console/tester.sock MainPID=200; hostile same-uid substitution remains\n' +
|
||||
'P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]\n' +
|
||||
'count pass 11\n' +
|
||||
'count FAIL 0\n' +
|
||||
'count closed 7\n' +
|
||||
'count accepted Q182+Q183 1\n' +
|
||||
'count accepted Q183 1\n' +
|
||||
'count accepted mos-1096 1\n' +
|
||||
'count unnamed 1\n' +
|
||||
'case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos\n'
|
||||
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-f8b804262c83
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/custom-data/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=failed reason=probe-inner-command path=/srv/mosaic/custom-data/console/tester.sock MainPID=200; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:236: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 942.245267
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 P10 refuses unsafe metadata", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
@@ -0,0 +1,61 @@
|
||||
TAP version 13
|
||||
# Subtest: row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
not ok 1 - row253 P10 refuses unsafe metadata, wrong peers and an unsafe Python without claiming closure
|
||||
---
|
||||
duration_ms: 13016.160739
|
||||
type: 'test'
|
||||
location: '/home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:243:1'
|
||||
failureType: 'testCodeFailure'
|
||||
error: 'floor'
|
||||
code: 'ERR_ASSERTION'
|
||||
name: 'AssertionError'
|
||||
expected:
|
||||
actual: |-
|
||||
F1 units-user pass [email protected] and mosaic-webui.service are active as mosaic (uid 997)
|
||||
F2 console-loopback pass healthz answers, and 732 is bound to 127.0.0.1 only, by MainPID 200
|
||||
F3 tester-reply pass chief replied to case1-accept-a8f68522a3b7
|
||||
F4 precheck pass case2-precheck.sh --profile factory exits 0
|
||||
F5 bwrap-label pass bwrap 300 reads 'bwrap (enforce)' and its claude descendant 302 reads 'bwrap//&unpriv_bwrap (enforce)'
|
||||
F6 claude-pin pass /opt/mosaic-stack/claude-2.1.0/node_modules/@anthropic-ai/claude-code/bin/claude.exe prints '2.1.0 (Claude Code)'
|
||||
F7 pm-live pass one live launch: pm run r-0002
|
||||
F8 credential-file pass /srv/mosaic/.config/mosaic-dev/secrets/claude-session.env is 'mosaic 600 regular file'
|
||||
F9 autoupdater-off pass /etc/claude-code/managed-settings.json is root:root 0644 with env.DISABLE_AUTOUPDATER "1"
|
||||
F10 node-pin pass /opt/mosaic-stack/node-v24.1.0/bin/node prints v24.1.0
|
||||
F11 no-discord pass /srv/mosaic/.mosaic-dev/discord is absent
|
||||
P1 mosaic-sudo closed sudo -l: User mosaic is not allowed to run sudo on dev-53.
|
||||
P2 mosaic-groups-keys closed id -G is '997'; authorized_keys is absent
|
||||
P3 localadmin-sudo accepted Q183 sudo -l -U localadmin lists 1 NOPASSWD lines
|
||||
P4 pve-root-pbs accepted Q182+Q183 root on pve over VM 1008, and PBS backups that hold /srv/mosaic with the credential; this script can't see pve
|
||||
P5 jarvis-reach closed jarvis is in none of sudo, docker and lxd (groups: jarvis)
|
||||
P6 group-members closed sudo holds only localadmin, and docker and lxd have no members
|
||||
P7 sudoers-d closed no file under /etc/sudoers.d names mosaic
|
||||
P8 lan-listeners closed 732 is on 127.0.0.1 only by MainPID 200; no TCP listener on 7331 or 7333; tester uses /srv/mosaic/.mosaic-dev/console/tester.sock
|
||||
P9 bwrap-userns accepted mos-1096 hostcheck items 1-6 ok, jarvis is denied bwrap, and group mosaic has no other member
|
||||
P10 tester-socket-squat unnamed boundary=observed path=/srv/mosaic/.mosaic-dev/console/tester.sock parent=0700 owner=997 socket=0600 peer_pid=200 peer_uid=997 floor=700 port=732; hostile same-uid substitution remains
|
||||
P11 hostcheck-before-bus closed mosaic-hostcheck.service is enabled, and its Before= names [email protected]
|
||||
count pass 11
|
||||
count FAIL 0
|
||||
count closed 7
|
||||
count accepted Q182+Q183 1
|
||||
count accepted Q183 1
|
||||
count accepted mos-1096 1
|
||||
count unnamed 1
|
||||
case1-accept: every F check passes; send the whole output to Duckworth, and each unnamed line to Mos
|
||||
|
||||
operator: 'match'
|
||||
stack: |-
|
||||
TestContext.<anonymous> (file:///home/jwoltje/.t3/worktrees/mosaic-stack/gander-row196/packages/cli/tests/case1-accept.test.mjs:285:12)
|
||||
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 13148.120866
|
||||
@@ -0,0 +1 @@
|
||||
["timeout", "-k", "10", "418", "node", "--test", "--test-reporter=tap", "--test-name-pattern", "row253 socket observation uses configured root", "packages/cli/tests/case1-accept.test.mjs"]
|
||||
Loaded 100 of 443 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user