agents: Rocko row 147 packets r1, r2 and r2-before-142 (#1641)

Round 2 candidate 7a585aa9606863a0d44a26094b585160914e3d8fd5f13436b56470cd69e6d867,
packet manifest 4292da90162c801a9c56716a0539f8fa072e67e93e4f4d9a0f1e107b84b652ea,
base 02ee7f640. Filbert approved round 2 in comment 28707. Committed by Sage
for Rocko, who has no git access; secrets grep clean, no binaries (one empty file).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
2026-10-15 19:00:06 -05:00
co-authored by Claude Opus 5.5
parent 2b4b6f7513
commit fafee2f228
107 changed files with 7477 additions and 0 deletions
+108
View File
@@ -0,0 +1,108 @@
# Row 147 / #1641 — standard project record repository, round 1
Base `fba879f6a12060fd4934b8ae9347b15c76032689`. Detached candidate:
`/mnt/storage/src/mosaic-stack-rocko-147-r1`. Reviewer Filbert; owner gate Sage.
Source is uncommitted. No live paths, units, store, secrets, remote or push used.
Row 138 waits for Filbert's 147 approval; row 143 is reassigned to Researcher (sage-0414).
## Result and interface
Previously a project had only its code `root`, with no shared record layout.
`packages/project/` now defines layout 1, three closed package-owned JSON schemas,
five validating templates, initializer, full layout checker and one agent writer.
README.md and DESIGN.md document the exact shape and the shared API. Context is
`{business, project, dataRoot}`. The separate repository resolves from optional
business.projects[project].repo, otherwise dataRoot/projects/business/project.
root remains the code checkout and cannot overlap the records repository.
`mosaic project init BUSINESS PROJECT` creates local main, writes the layout and
commits as business.human. It refuses non-empty directories and undeclared
projects. CLI init refuses agent environments. `mosaic project check` is local
and read-only; it names every discovered problem and exits 2. No bus is needed.
The writer validates data, filename/ID agreement and actor shape before writing.
It takes `{definition,instance}` from its trusted caller, authors a commit as
`definition.instance` and commits only its requested record. The future broker
must supply the authenticated actor; this library is not a second identity
system. Agent paths under spec/ refuse. No spec citations, role grant, broker
verb, harness tool, Console editor or migration belongs to this row.
Stricter-than-brief refusals approved in sage-0400: remote repositories and dirty
repositories (including staged/untracked/ignored files and hidden index flags).
These are named project-remote / project-dirty in the README and tested. They
prevent agent commits from including human pending edits or contacting a remote.
Other guards cover path confinement, symlinks/hardlinks, separate code/record
roots, metadata identity, writer locking and unexpected git config. Git uses the
existing bounded process-group runner, sanitized config/environment, disabled
hooks/filters/fsmonitor/transports and explicit actor identity. A failed commit
with unchanged HEAD restores only the writer's file/index; uncertain changed
HEAD preserves evidence instead of rewinding. Writer locks do not serialize
arbitrary human editors; callers must coordinate simultaneous saves.
Requirements/decisions begin empty, with an empty .gitkeep so their directories
survive checkout. No fictional requirements or decisions are installed. JSON
schemas stay in the package; project templates cannot replace them. Unknown
schema keywords refuse rather than silently weaken a future schema. Records are
bounded regular UTF-8 files without NULs, named by their IDs; check inspects the
whole layout and reports bad records, wrong names and unknown paths separately.
## Scope additions — sage-0400, brief 10d4b526a / rev1396
- scripts/mosaic dispatches `project` to packages/cli/src/cli.mjs, tested by the
real dispatcher in cli/tests/project.test.mjs.
- scripts/stack-copy.sh includes packages/project. The real pinned-copy test
checks source/schema/template presence and starts its real CLI/bus/Console
fixture, so missing package dependencies fail. No live install or unit action.
The original brief base was8686c7e84. Rebuilt onfba879f6a after row145 changed
cli.mjs; its plug-in imports/command remain. The one textual conflict was USAGE:
both PLUGINS_USAGE and PROJECT_USAGE are retained, with no conflict markers.
Sage sage-0410 confirms fba879f6a..dda7e31b0 is docs/agents only and explicitly
keeps this base. No code from paused138 was carried into147.
## Evidence and scheduled gate
Focused single-file checks authorized by sage-0401, fixture-only local git:
- project/tests/project.test.mjs: 14 passed, 0 failed.
- business/tests/project-repo.test.mjs: 1 passed, 0 failed.
- cli/tests/project.test.mjs: 3 passed, 0 failed.
- cli/tests/stack-copy.test.mjs: 12 passed, 0 failed (real pinned-copy fixture).
Red logs preserve the missing implementation before building. A fixture test
initially named a nonexistent fixture.root and was corrected before treating
CLI coverage as evidence; current rebased logs are authoritative.
50 mutants are prepared in mutants.py, one deliberate fault per check, with
whole-process-group timeout cleanup. A timeout, syntax error or accidental import
error is never a kill. The package-copy fault intentionally removes the package
and is killed by artifact presence/runtime loading coverage; it is a packaging
acceptance check. MUTANT_ONLY supports a selected retry; final report must cover
all cases. Every source file restores its original bytes in finally.
Mutants, suites and scripts are NOT YET RUN. Waiting for Sage's explicit
"slot yours" (sage-0410), after Researcher/146 priority. Owner gate belongs to
Sage and runs after mutants. gate.py is an UNRUN suggested owner runner: touched
project/business/CLI suites plus every scripts/test-*.sh. DOCKER_HOST is a dead
socket except task/release, where it is unset for those runs only so Docker
cases are not silently skipped. Sage can use their repository-wide gate instead.
The runner stops on any failure; no automatic retry hides a flake. Two recurrences
of #258/#261/#262/#263 in a gate stop and are reported. No Docker action so far.
Final mutant/gate counts, restored manifests and process/network cleanup must be
appended here after authorized verification, before claiming review readiness.
## Mutant verification — sage-0428, 2026-10-15 23:21:48 UTC
Slot granted explicitly by Sage. Final sequential run killed 50/50, with no
survivors, invalid mutants or timeouts. See mutants/table.md, results.json and
per-check logs. The first attempt stopped at check20 because its replacement
removed a loop body and caused SyntaxError; that is NOT counted as a kill.
20-required-template-invalid-attempt.log preserves it. The mutant replacement
was corrected to an empty statement and all 50 were rerun, green kills.
All 24 candidate hashes match the original manifest. The staged diff exactly
matches pre-mutant-index.patch. No source/test changes were needed. Every test
runner exited; the /proc cwd-scoped sweep found no node/chromium/python under
this worktree. DOCKER_HOST was unix:///nonexistent.sock. No Docker used or
network created. Sent Sage slot clear at the observed stamp above. Owner gate
is pending; no suites/scripts were run by Rocko and no in-review move made.
This section supersedes the earlier unrun/scheduled mutant status.
+55
View File
@@ -0,0 +1,55 @@
# Row 147 layout contract, version 1
Initial design base8686c7e84; candidate rebased ontofba879f6a; scope additions sage-0400 / brief10d4b526a. No live steps.
The separate local repository resolves from business.projects[project].repo,
or dataRoot/projects/business.id/project. root remains the code checkout; the
two paths must not overlap. IDs and normalized absolute paths are checked.
Layout:
- project.json: layoutVersion=1, business, project, name, createdAt (canonical UTC).
- spec/north-star.md: the human's Markdown north star.
- docs/*.md (nested Markdown is accepted by check).
- requirements/ID.json: recordVersion=1, id, title, text, status
(draft, accepted, complete).
- decisions/ID.json: recordVersion=1, id, question, options [{key,text}],
recommendation, status (open, accepted, rejected), choice (null while open).
Option keys are distinct, recommendation/closed choice name an option.
- templates/{project,requirement,decision}.json and {document,north-star}.md.
These are data/templates, never schemas; every JSON template validates against
the package-owned schema. Empty requirement/decision directories use an empty
.gitkeep, checked as a layout marker, so the layout survives checkout.
The package owns one closed JSON schema for project, requirement and decision.
A small fail-closed validator implements only keywords those schemas use, and
refuses unsupported schema keywords instead of ignoring a future constraint.
No project-local schema is loaded. Markdown must be bounded UTF-8 without NULs.
Check reports all discovered layout/record/name problems, rather than only the
first. Unknown top-level paths, links and non-regular files refuse. .git is
validated separately and never treated as a content directory.
Public APIs (packages/project/src/index.mjs):
- projectRepo({business,project,dataRoot}) -> absolute repository path.
- initProject(context) -> {repo,commit}; first commit is authored by business.human.
- checkProject(context) -> {ok,repo,problems}; read-only, no bus/network.
- validateRecord(kind,value) -> problem strings.
- writeRecord({...context,path,record,author:{definition,instance}}) -> {repo,path,commit}.
path is docs/NAME.md, requirements/ID.json or decisions/ID.json. Names match
JSON IDs. spec/ is refused for every agent actor. The trusted caller supplies
actor metadata; row138 binds it to the authenticated role. This package only
validates the actor's shape, not a new identity/proof system.
Writer requires the entire project to pass check, a clean worktree/index and
no remotes. It uses a per-repository exclusive writer lock, sanitized local git
(no global/system config, hooks, filters, fsmonitor or transports), validates
before writing, and commits only the requested record as definition.instance.
It won't absorb pending human edits. Commit failure rolls back only its own
uncommitted file/index when HEAD is unchanged; changed/uncertain HEAD refuses
without destructive repair. Init refuses a non-empty directory and undeclared
project. No remote is created; no git push/fetch exists in this package.
CLI uses the existing system/business loaders, then these APIs. Both commands
are local: mosaic project init BUSINESS PROJECT and mosaic project check
BUSINESS PROJECT. scripts/mosaic dispatch and stack-copy's package inclusion
are the only scope additions. No broker/harness path, grants, spec commit
citations, Console editor or schema change belongs to this row.
+28
View File
@@ -0,0 +1,28 @@
# Build-stage handoff — verification pending
- Row147 #1641, reviewer Filbert, gate owner Sage.
- Claim rev1394. Brief re-pinned rev1396 (sage-0400), source10d4b526a.
- Basefba879f6a12060fd4934b8ae9347b15c76032689; Sage0410 explicitly keeps
this base because later refactor commits are docs/agents only.
- Detached source /mnt/storage/src/mosaic-stack-rocko-147-r1, uncommitted.
- Candidate manifest SHA-256:
a7f53bc5fe0b67440084e48f706e4aa864f0b36ec9bcea05eec0d2787f75fc39.
- 24/24 clean base+patch reconstruction hashes verify. Gate not yet run.
- Focused project14, CLI3, business repo1, pinned-copy12 pass. No suites,
scripts or mutants run; sage-0410 requires explicit "slot yours" first.
- mutants.py contains50 planned checks, not results. Gate.py is an unrun
suggested Sage owner runner. Researcher140 and Dewey146 have priority.
- Own build-stage BUILD-LOG and SESSIONS entries committed through a temp
index as81e59d25c (only these entries; concurrent seat edits preserved).
Earlier paused138 line committed276965d6d; that also carried Researcher's
concurrent22:44 line, accepted by Sage0412. No push.
- Rows138 and143 remain held. No new spec scheme or live action implemented.
- Source and packet have not been marked review-ready. Append final verification
evidence before Sage's review-request move. Packet-manifest paths are relative
to this directory; candidate-manifest paths are relative to repository root.
Update 2026-10-15 23:21:48 UTC: sage-0428 authorized the mutant batch.
Final 50/50 killed; initial invalid20 corrected and the entire batch rerun.
Candidate24/24 and staged blobs restored unchanged, runner sweep empty, no
Docker. Slot returned to Sage for owner gate. Readiness/move waits for that
result. Row143 is Researcher's; row138 design-only pending147 approval.
+1
View File
@@ -0,0 +1 @@
fba879f6a12060fd4934b8ae9347b15c76032689
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,24 @@
b5c9ea8ff3a724a193316cc7fb2a4d362250dc3251fecd6952b5276f3f73a7a8 docs/TOOLS.md
7c353b41808a46ac988547c6e0ceeee0727fea94c500afd7a7d0b7e2bf10cbbc packages/business/src/business.mjs
eba8a16fe394299de78e981c106fc13a728da931b84aefe0d039c0c747214c98 packages/business/tests/project-repo.test.mjs
68ca82be4a9ee7d39aa7c2c698c0181a48d4000839508b460eb3f01b6c0954a5 packages/cli/src/cli.mjs
c10ef02af609cb5a075dca4b25092fd5b281eaa436b89bade218e0499a13a5fc packages/cli/src/project.mjs
78bf2466b0edf3aa6e4d8e2e8bf293060df1356491eea370866753b4e312bf7d packages/cli/tests/project.test.mjs
d393a46ae99767937a3ab28bbe54a81a849843cbe3f5f7373927a7219a861805 packages/cli/tests/stack-copy.test.mjs
1640dc1c80ff0e78dc00ffdae8954fa3bebdaca5e7a1f8b973aef8af5cd77066 packages/project/README.md
13664e88d0f233bcf18f05e75946e70a1f2a7ba8d099248b73936230cefadd8d packages/project/package.json
925bb03ac99e5845e4bfa20b4561a331f034f88e187db82213df6602a7ceee4b packages/project/schemas/decision.schema.json
f069c012e9660d5d0491a21f98e936b725f6818e1c3136dfec61b3c800bd58de packages/project/schemas/project.schema.json
79a1e7b567af7162bb88ca69861075fc579a858e8aec4e49824ccdc370b690c3 packages/project/schemas/requirement.schema.json
6534d25ac364390d98ba28baa093168de307f0ee0bc013f6fee6f26f6667e838 packages/project/src/git.mjs
e0e9f57d085a052149c8816ff7bba9ef300f9f017d12080d9b0ecc6c293252bf packages/project/src/index.mjs
79632f4c2bc0cbcda26113ad1ff025fb18d2876de334bea4f3a026ae09ae253c packages/project/src/paths.mjs
e49ab5e825f0706da2f3c8dfcf33c1331a38d77ca2d35b03359ee68ea74652c5 packages/project/src/validate.mjs
0b1985a131474a041ea96652a5035224144a51fb50f3d2406013f37596fa98fb packages/project/templates/decision.json
5052534a4b89510d84a9b8815f933bd1c4a8912a91508b6dfe1764dac8c4f14a packages/project/templates/document.md
24b7e3224dba45753e2d6139fcf05d2ed8c29d999752b02a637cfb8489fd9e0a packages/project/templates/north-star.md
14d780b49cbda0c306ca38c1523ccd69d6bf40c73ab744c829e085ef610cd084 packages/project/templates/project.json
682343c67c81ca244b07bf39723c328f80706ba4d957aa45601b2a64ceeeb215 packages/project/templates/requirement.json
0b06ab6de44baf7ddd6c8a169fc2b44d173a00a5a94a96680e2e10ee97eee282 packages/project/tests/project.test.mjs
b3845214d21cc5ac20c2ab268c4fff1cc88d48c3695f2da29207467eeb7982db scripts/mosaic
ef037cfa4b0df63aec247e412212c627a3aa973b22766b673265f36726c88b1f scripts/stack-copy.sh
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env python3
"""Sage's owner-gate runner. Rocko has not run this without the test slot."""
import pathlib,subprocess,os,signal,sys,json
root=pathlib.Path(sys.argv[1] if len(sys.argv)>1 else '/mnt/storage/src/mosaic-stack-rocko-147-r1')
out=pathlib.Path(__file__).resolve().parent/'gate';out.mkdir(exist_ok=True)
steps=[]
# Touched packages; Sage may use the repository-wide landing gate instead.
for name in ['project','business','cli']:
files=[str(f.relative_to(root)) for f in sorted((root/'packages'/name/'tests').glob('*.test.mjs'))]
steps.append(('pkg-'+name,['node','--test','--test-concurrency=1','--test-reporter=spec',*files]))
for file in sorted((root/'scripts').glob('test-*.sh')):steps.append(('script-'+file.stem,['bash',str(file.relative_to(root))]))
results=[]
for name,command in steps:
env={**os.environ,'DOCKER_HOST':'unix:///nonexistent.sock'}
if name in ['script-test-task','script-test-release']:env.pop('DOCKER_HOST',None)
with (out/(name+'.log')).open('w') as log:
p=subprocess.Popen(command,cwd=root,env=env,stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
try:rc=p.wait(timeout=1200)
except subprocess.TimeoutExpired:os.killpg(p.pid,signal.SIGKILL);p.wait();rc='timeout'
results.append(dict(suite=name,exit=rc,command=command));(out/'results.json').write_text(json.dumps(results,indent=2)+'\n');print(name,rc,flush=True)
if rc!=0:sys.exit(1)
@@ -0,0 +1,9 @@
✔ optional project repo is preserved and must be a normalized absolute path (6.325698ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 56.365146
@@ -0,0 +1,11 @@
✔ project init/check use declared business repo and never contact the bus (114.706738ms)
✔ project commands validate args and refuse undeclared projects and agent init (27.838936ms)
✔ project dispatcher reaches the human CLI (80.681817ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 345.149142
@@ -0,0 +1,20 @@
✔ shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation (363.281344ms)
✔ wrapper preserves Q81 lease and marker, rejects foreign/symlink; check uses effective roots (401.22419ms)
✔ bus unit copy/pm pins, install refuses all busy states and failed reads, drop-in refusal (394.747567ms)
✔ missing package manifest refuses before npm; npm failure removes the unpublished temp copy (269.430799ms)
✔ real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse (3222.03526ms)
✔ bus status reads effective copy/pm/drop-ins without writes; check refuses an overridden ExecStart (564.612516ms)
✔ drop-ins in either override field and malformed metadata refuse; uninstall also checks --no-reload (193.036686ms)
✔ install never shows a template name on systemd 261; template drop-ins still refuse (291.636044ms)
✔ unlisted instance drop-in is found in another unit lookup directory; path discovery errors refuse (161.18602ms)
✔ inherited mosaic-.service.d override refuses without changing the unit (183.039061ms)
✔ inherited service.d override refuses without changing the unit (173.96388ms)
✔ inherited drop-in unreadable directory or file refuses before writing (151.534089ms)
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6430.668
@@ -0,0 +1,19 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.069413ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.965734ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.025458ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.622381ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.36427ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.331772ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (13.080783ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.23819ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.340895ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.968761ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.017684ms)
ℹ tests 11
ℹ suites 0
ℹ pass 11
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 278.252921
+81
View File
@@ -0,0 +1,81 @@
#!/usr/bin/env python3
"""Sequential focused acceptance mutants, each isolated in a process group; timeout is not a kill."""
import json,os,pathlib,signal,subprocess,sys
ROOT=pathlib.Path(sys.argv[1] if len(sys.argv)>1 else '/mnt/storage/src/mosaic-stack-rocko-147-r1')
OUT=pathlib.Path(__file__).resolve().parent/'mutants';OUT.mkdir(exist_ok=True)
T='packages/project/tests/project.test.mjs';C='packages/cli/tests/project.test.mjs';B='packages/business/tests/project-repo.test.mjs'
cases=[]
def add(id,path,old,new,test=T):cases.append(dict(id=id,path=path,old=old,new=new,test=test))
p='packages/project/src/index.mjs'
add('01-init-nonempty',p,"if (existsSync(repo) && readdirSync(repo).length)","if (false)")
add('02-unknown-top-level',p,"if (!['.git', 'project.json', ...DIRECTORIES].includes(name))",'if (false)')
add('03-check-record-schema',p,'for (const problem of validateRecord(kind, value))','for (const problem of [])')
add('04-check-filename-id',p,'if (value && name !== `${value.id}.json`)','if (false)')
add('05-writer-record-schema',p,'const problems = validateRecord(kind, record);','const problems = [];')
add('06-writer-filename-id',p,'problems.length || record.id !== match[2]','problems.length')
add('07-agent-spec-refusal',p,'bytes = recordBytes(path, record)','bytes = recordBytes(path.replace(/^spec\\//, "docs/"), record)')
add('08-author-shape',p,"if (!object(author) || Object.keys(author).sort().join(',') !== 'definition,instance')",'if (false)')
add('09-agent-commit-author',p,'identity(name));','identity(context.business.human));')
add('10-human-initial-author',p,"identity(human));","identity('wrong-human'));")
add('11-preserve-dirty-human-edits',p,' await requireClean(repo);',' /* dirty check omitted */')
add('12-exclusive-writer',p,"fd = openSync(lock, 'wx', 0o600);","fd = openSync(lock, 'w', 0o600);")
add('13-context-business',p,'if (value && value.business !== context.business.id)','if (false)')
add('14-file-links',p,'!st.isFile() || st.isSymbolicLink() || st.nlink !== 1 || st.size > MAX_BYTES','!st.isFile() && !st.isSymbolicLink() || st.size > MAX_BYTES')
add('15-invalid-utf8',p,"{ fatal: true }","{ fatal: false }")
add('16-file-nul',p,"if (value.includes('\\0'))",'if (false)')
add('17-file-size',p,'st.nlink !== 1 || st.size > MAX_BYTES','st.nlink !== 1')
add('18-writer-size',p,"if (text.includes('\\0') || Buffer.byteLength(text) > MAX_BYTES)",'if (false)')
add('19-unknown-project-schema',p,'if (!TEMPLATES.includes(name))','if (false)')
add('20-required-template',p,"if (!readdirSync(base).includes(name)) problem(`templates/${name}`, 'missing');",'/* required template omitted */;')
add('21-rollback-file',p,'if (before === null) unlinkSync(file); else publish(file, before);','/* rollback omitted */')
p='packages/project/src/git.mjs'
add('22-no-remotes',p,"if (key.startsWith('remote.')) throw new ProjectError('project-remote', 'project repository must have no remote');","if (key.startsWith('remote.')) continue;")
add('23-disable-hooks',p,'core.hooksPath=/dev/null','core.hooksPath=.git/hooks')
p='packages/project/src/paths.mjs'
add('24-code-repo-separation',p,'if (contains(root, repo) || contains(repo, root))','if (false)')
add('25-repo-override',p,"entry.repo ?? join(dataRoot, 'projects', business.id, project)","join(dataRoot, 'projects', business.id, project)")
p='packages/project/src/validate.mjs'
add('26-const-version',p,"if (Object.hasOwn(schema, 'const') && value !== schema.const)",'if (false)')
add('27-enum-values',p,'if (schema.enum && !schema.enum.includes(value))','if (false)')
add('28-schema-types',p,'if (types.length && !types.some(matches))','if (false)')
add('29-id-pattern',p,'if (schema.pattern && !new RegExp(schema.pattern).test(value))','if (false)')
add('30-canonical-date',p,"if (schema.format === 'date-time' && (!Number.isFinite(Date.parse(value)) ||\n new Date(value).toISOString() !== value || value.length !== 24))",'if (false)')
add('31-min-array',p,'if (schema.minItems !== undefined && value.length < schema.minItems)','if (false)')
add('32-max-array',p,'if (schema.maxItems !== undefined && value.length > schema.maxItems)','if (false)')
add('33-required-fields',p,'for (const key of schema.required ?? [])','for (const key of [])')
add('34-closed-keys',p,'else if (schema.additionalProperties === false)','else if (false)')
add('35-decision-choice',p,"if (value.status === 'open' ? value.choice !== null : !keys.includes(value.choice))",'if (false)')
add('36-distinct-options',p,'if (new Set(keys).size !== keys.length)','if (false)')
add('37-recommendation-option',p,'if (!keys.includes(value.recommendation))','if (false)')
p='packages/business/src/business.mjs'
add('38-business-repo-preservation',p,'...(Object.hasOwn(entry, "repo") ? { repo: entry.repo } : {})','...{}',B)
add('39-business-repo-validation',p,'if (Object.hasOwn(entry, "repo") && (typeof entry.repo !== "string" || !isAbsolute(entry.repo) ||\n normalize(entry.repo) !== entry.repo || entry.repo.includes("\\0")))','if (false)',B)
add('40-human-cli-init','packages/cli/src/project.mjs',"if (verb === 'init') refuseInsideAgent(io.env);",'/* agent check omitted */',C)
add('41-cli-dispatch','scripts/mosaic','project|limits|inbox|','limits|inbox|',C)
add('42-pinned-package','scripts/stack-copy.sh',' packages/cli/src packages/project',' packages/cli/src','packages/cli/tests/stack-copy.test.mjs')
add('43-min-string','packages/project/src/validate.mjs','if (schema.minLength !== undefined && value.length < schema.minLength)','if (false)')
add('44-max-string','packages/project/src/validate.mjs','if (schema.maxLength !== undefined && value.length > schema.maxLength)','if (false)')
add('45-schema-keywords','packages/project/src/validate.mjs','for (const key of Object.keys(schema))','for (const key of [])')
add('46-absolute-normalized-repo','packages/project/src/paths.mjs',"if (typeof path !== 'string' || !isAbsolute(path) || normalize(path) !== path || path.includes('\\0'))",'if (false)')
add('47-declared-project','packages/project/src/paths.mjs','if (!Object.hasOwn(business?.projects ?? {}, project))','if (false)')
add('48-git-config','packages/project/src/git.mjs','if (!allowed[key]?.includes(value))','if (false)')
add('49-empty-layout-marker','packages/project/src/index.mjs',"if (text !== '') problem(label, 'layout marker must be empty');",'if (false) problem(label, \'layout marker must be empty\');')
add('50-gitdir-before-lock','packages/project/src/index.mjs','if (!metadata.isDirectory() || metadata.isSymbolicLink())','if (false)')
results=[]
if os.environ.get('MUTANT_ONLY'):cases=[c for c in cases if c['id'] in os.environ['MUTANT_ONLY'].split(',')]
for c in cases:
file=ROOT/c['path'];original=file.read_bytes();text=original.decode();count=text.count(c['old'])
if count!=1:raise RuntimeError(f"{c['id']}: expected one site, found {count}")
file.write_text(text.replace(c['old'],c['new']))
try:
with (OUT/(c['id']+'.log')).open('w') as log:
p=subprocess.Popen(['node','--test',c['test']],cwd=ROOT,env={**os.environ,'DOCKER_HOST':'unix:///nonexistent.sock'},stdout=log,stderr=subprocess.STDOUT,start_new_session=True)
try:rc=p.wait(timeout=120)
except subprocess.TimeoutExpired:os.killpg(p.pid,signal.SIGKILL);p.wait();rc='timeout'
content=(OUT/(c['id']+'.log')).read_text()
invalid='SyntaxError:' in content or ('ERR_MODULE_NOT_FOUND' in content and c['id']!='42-pinned-package')
verdict='INVALID' if invalid else 'TIMEOUT' if rc=='timeout' else 'SURVIVED' if rc==0 else 'KILLED'
row={k:c[k] for k in ['id','path','test']};row.update(result=verdict,exit=rc)
results.append(row);(OUT/'results.json').write_text(json.dumps(results,indent=2)+'\n');print(c['id'],verdict,rc,flush=True)
finally:file.write_bytes(original)
if verdict!='KILLED':sys.exit(1)
@@ -0,0 +1,47 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.939809ms)
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (18.356812ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.271577ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.812219ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.754686ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.818136ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.123349ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.269306ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.251375ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.414757ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.738546ms)
✔ schema constraints and layout omissions are reported independently (12.756437ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.43685ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.208396ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 350.708514
✖ failing tests:
test at packages/project/tests/project.test.mjs:42:1
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (18.356812ms)
AssertionError [ERR_ASSERTION]: The validation function is expected to return "true". Received false
Caught error:
Error: project-invalid: keep.txt: unknown top-level path
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:51:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: Error: project-invalid: keep.txt: unknown top-level path
at Module.initProject (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/src/index.mjs:104:25)
at async waitForActual (node:assert:615:5)
at async strict.rejects (node:assert:738:25)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:51:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7),
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,43 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.034416ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.64704ms)
✖ check reports every bad record, filename mismatch and unknown top-level path (12.849049ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (66.212681ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.810384ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.670569ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.549372ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.267506ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.660202ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.395228ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.880388ms)
✔ schema constraints and layout omissions are reported independently (12.6221ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.673383ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.070857ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 347.746474
✖ failing tests:
test at packages/project/tests/project.test.mjs:55:1
✖ check reports every bad record, filename mismatch and unknown top-level path (12.849049ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /unexpected.txt/. Input:
'requirements/bad.json: requirement.status: must be one of draft, accepted, complete\n' +
'requirements/bad.json: file name must match record id\n' +
'decisions/wrong.json: file name must match record id'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:64:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'requirements/bad.json: requirement.status: must be one of draft, accepted, complete\nrequirements/bad.json: file name must match record id\ndecisions/wrong.json: file name must match record id',
expected: /unexpected.txt/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,62 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.043416ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.295018ms)
✖ check reports every bad record, filename mismatch and unknown top-level path (12.589685ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.928257ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.788168ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.4745ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.997935ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.315842ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.053229ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (27.03287ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.819788ms)
✖ schema constraints and layout omissions are reported independently (12.770478ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.281662ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.447211ms)
ℹ tests 14
ℹ suites 0
ℹ pass 12
ℹ fail 2
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 347.685639
✖ failing tests:
test at packages/project/tests/project.test.mjs:55:1
✖ check reports every bad record, filename mismatch and unknown top-level path (12.589685ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /requirements\/bad.json.*status/. Input:
'unexpected.txt: unknown top-level path\n' +
'requirements/bad.json: file name must match record id\n' +
'decisions/wrong.json: file name must match record id'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:62:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'unexpected.txt: unknown top-level path\nrequirements/bad.json: file name must match record id\ndecisions/wrong.json: file name must match record id',
expected: /requirements\/bad.json.*status/,
operator: 'match',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (12.770478ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /templates\/requirement.json.*status/. Input:
'docs/large.md: expected bounded regular file, not a link\n' +
'docs/nul.md: NUL is forbidden\n' +
'templates/document.md: missing'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:191:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'docs/large.md: expected bounded regular file, not a link\ndocs/nul.md: NUL is forbidden\ntemplates/document.md: missing',
expected: /templates\/requirement.json.*status/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.307507ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.702507ms)
✖ check reports every bad record, filename mismatch and unknown top-level path (12.779724ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (65.095735ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.687422ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.145217ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.110725ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.254738ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.819038ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.65516ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.767169ms)
✔ schema constraints and layout omissions are reported independently (13.05079ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.838495ms)
✔ a linked git directory is refused before a writer lock can touch its target (31.062603ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 348.774322
✖ failing tests:
test at packages/project/tests/project.test.mjs:55:1
✖ check reports every bad record, filename mismatch and unknown top-level path (12.779724ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /decisions\/wrong.json.*id/. Input:
'unexpected.txt: unknown top-level path\n' +
'requirements/bad.json: requirement.status: must be one of draft, accepted, complete'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:63:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'unexpected.txt: unknown top-level path\nrequirements/bad.json: requirement.status: must be one of draft, accepted, complete',
expected: /decisions\/wrong.json.*id/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,39 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.049114ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.695296ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.476297ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.927511ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.240064ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.95763ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.740986ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.306925ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.305522ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.775739ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.324196ms)
✔ schema constraints and layout omissions are reported independently (12.648741ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.44539ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.844487ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 364.897114
✖ failing tests:
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.240064ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:87:6)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.847528ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.736116ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.588923ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.280234ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.224547ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.846921ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.436433ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.250192ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (36.932065ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.005526ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.541166ms)
✔ schema constraints and layout omissions are reported independently (13.240216ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.471167ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.452283ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 365.33013
✖ failing tests:
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.224547ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:87:6)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.117219ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.741739ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.605374ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.628748ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (24.889557ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.865573ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.615362ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.32385ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.210668ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.393407ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.742908ms)
✔ schema constraints and layout omissions are reported independently (12.704751ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (19.271265ms)
✔ a linked git directory is refused before a writer lock can touch its target (31.667175ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 362.240928
✖ failing tests:
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (24.889557ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:87:6)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,39 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.0028ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.822356ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.514902ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.81338ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.205046ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.247855ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.705157ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.256952ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.414711ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.723522ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.754502ms)
✔ schema constraints and layout omissions are reported independently (12.971558ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (20.147224ms)
✔ a linked git directory is refused before a writer lock can touch its target (31.074497ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 368.13523
✖ failing tests:
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.205046ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:87:6)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,62 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (26.14075ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.538835ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.603048ms)
✖ one writer commits validated docs, requirements and decisions with the bound agent author (26.325374ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (16.035817ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.15027ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.209424ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.235204ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.005473ms)
✖ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.538401ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.750189ms)
✔ schema constraints and layout omissions are reported independently (12.713845ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.628096ms)
✔ a linked git directory is refused before a writer lock can touch its target (31.334885ms)
ℹ tests 14
ℹ suites 0
ℹ pass 12
ℹ fail 2
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 317.589728
✖ failing tests:
test at packages/project/tests/project.test.mjs:67:1
✖ one writer commits validated docs, requirements and decisions with the bound agent author (26.325374ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'jason'
- 'coder.builder'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:71:12)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'jason',
expected: 'coder.builder',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:147:1
✖ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.538401ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'jason'
- 'coder.builder'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:158:12)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'jason',
expected: 'coder.builder',
operator: 'strictEqual',
diff: 'simple'
}
@@ -0,0 +1,44 @@
✖ init creates a checked versioned layout, valid templates and human-authored local history (21.802562ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.38294ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.494273ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.713646ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.794492ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.709312ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.907254ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.306855ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.015969ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.494164ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.323241ms)
✔ schema constraints and layout omissions are reported independently (12.927062ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.438289ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.601746ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 350.313826
✖ failing tests:
test at packages/project/tests/project.test.mjs:27:1
✖ init creates a checked versioned layout, valid templates and human-authored local history (21.802562ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'wrong-human'
- 'jason'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:36:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'wrong-human',
expected: 'jason',
operator: 'strictEqual',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (27.948959ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (15.72555ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (13.58742ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.036452ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.340047ms)
✖ writer refuses human pending edits and remotes instead of absorbing or contacting them (23.128381ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.626186ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.251591ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (31.193092ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (22.073673ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.941995ms)
✔ schema constraints and layout omissions are reported independently (13.125278ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.837802ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.466887ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 354.059677
✖ failing tests:
test at packages/project/tests/project.test.mjs:92:1
✖ writer refuses human pending edits and remotes instead of absorbing or contacting them (23.128381ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:95:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,37 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.287853ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.774665ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.56726ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (67.789686ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.746746ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (20.86487ms)
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (33.16354ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.683453ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.698371ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.8678ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.438389ms)
✔ schema constraints and layout omissions are reported independently (13.633977ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.358646ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.108068ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 379.08078
✖ failing tests:
test at packages/project/tests/project.test.mjs:102:1
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (33.16354ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:112:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (26.385238ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.489612ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (13.529639ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.908135ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.544163ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.481051ms)
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.897116ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.564063ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.248881ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.480754ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.458055ms)
✔ schema constraints and layout omissions are reported independently (12.756438ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.45744ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.213378ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 350.495876
✖ failing tests:
test at packages/project/tests/project.test.mjs:102:1
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.897116ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /project.json.*business/. Input:
''
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:116:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: '',
expected: /project.json.*business/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,41 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.983442ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.670196ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.20262ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.606516ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.447096ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.209461ms)
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (11.984246ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.56323ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.004422ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.037872ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.377243ms)
✔ schema constraints and layout omissions are reported independently (12.420138ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (16.879715ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.075768ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 336.8576
✖ failing tests:
test at packages/project/tests/project.test.mjs:102:1
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (11.984246ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
true !== false
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:108:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: true,
expected: false,
operator: 'strictEqual',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.494908ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.441678ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.131637ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.239038ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.905807ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.239168ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.246225ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.263268ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.846227ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.886491ms)
✖ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.519443ms)
✔ schema constraints and layout omissions are reported independently (12.918688ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.145574ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.462528ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 348.392923
✖ failing tests:
test at packages/project/tests/project.test.mjs:163:1
✖ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.519443ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /invalid.md/. Input:
'templates/requirement.schema.json: unknown template'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:169:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'templates/requirement.schema.json: unknown template',
expected: /invalid.md/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,43 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.807731ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.441212ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (14.261983ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.889274ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.747656ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.537261ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.393348ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.266287ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.755633ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.351054ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.110596ms)
✖ schema constraints and layout omissions are reported independently (12.747292ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.977797ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.816282ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 349.299121
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (12.747292ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /nul.md/. Input:
'docs/large.md: expected bounded regular file, not a link\n' +
'templates/requirement.json: requirement.status: must be one of draft, accepted, complete\n' +
'templates/document.md: missing'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:190:44)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'docs/large.md: expected bounded regular file, not a link\ntemplates/requirement.json: requirement.status: must be one of draft, accepted, complete\ntemplates/document.md: missing',
expected: /nul.md/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,43 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (26.010934ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.004359ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (13.233125ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (65.813018ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.645249ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (20.416547ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (20.062418ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.306736ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (39.854391ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (27.463709ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (17.376678ms)
✖ schema constraints and layout omissions are reported independently (22.96268ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (31.503086ms)
✔ a linked git directory is refused before a writer lock can touch its target (37.059283ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 400.715071
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (22.96268ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /large.md/. Input:
'docs/nul.md: NUL is forbidden\n' +
'templates/requirement.json: requirement.status: must be one of draft, accepted, complete\n' +
'templates/document.md: missing'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:190:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'docs/nul.md: NUL is forbidden\ntemplates/requirement.json: requirement.status: must be one of draft, accepted, complete\ntemplates/document.md: missing',
expected: /large.md/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,39 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (33.85647ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (15.640239ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (15.945555ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (81.606886ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (16.733616ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (22.070364ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (21.084499ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.306216ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (36.72862ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.094027ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.104716ms)
✖ schema constraints and layout omissions are reported independently (42.892167ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (22.801159ms)
✔ a linked git directory is refused before a writer lock can touch its target (31.545416ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 438.288757
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (42.892167ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:184:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (28.72188ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (15.34452ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (15.552038ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (77.064346ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (19.066938ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (20.93128ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (20.884859ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.283175ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (40.212404ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (27.192536ms)
✖ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.284258ms)
✔ schema constraints and layout omissions are reported independently (14.781715ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (19.83572ms)
✔ a linked git directory is refused before a writer lock can touch its target (32.542944ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 398.734698
✖ failing tests:
test at packages/project/tests/project.test.mjs:163:1
✖ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.284258ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /unknown template/. Input:
'docs/invalid.md: The encoded data was not valid for encoding utf-8\n' +
'templates/requirement.schema.json: unknown record kind: requirement.schema'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:168:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'docs/invalid.md: The encoded data was not valid for encoding utf-8\ntemplates/requirement.schema.json: unknown record kind: requirement.schema',
expected: /unknown template/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,32 @@
file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/src/index.mjs:79
} catch (e) { problem(directory, e.message); }
^
SyntaxError: Unexpected token '}'
at compileSourceTextModule (node:internal/modules/esm/utils:355:16)
at ModuleLoader.moduleStrategy (node:internal/modules/esm/translators:93:18)
at #translate (node:internal/modules/esm/loader:441:20)
at afterLoad (node:internal/modules/esm/loader:509:29)
at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:514:12)
at #getOrCreateModuleJobAfterResolve (node:internal/modules/esm/loader:567:36)
at afterResolve (node:internal/modules/esm/loader:614:52)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:620:12)
at node:internal/modules/esm/loader:639:32
at TracingChannel.tracePromise (node:diagnostics_channel:547:22)
Node.js v26.8.1
✖ packages/project/tests/project.test.mjs (41.265605ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 46.870024
✖ failing tests:
test at packages/project/tests/project.test.mjs:1:1
✖ packages/project/tests/project.test.mjs (41.265605ms)
'test failed'
@@ -0,0 +1,43 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (27.175702ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (15.682231ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (17.003345ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (80.150352ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.687581ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (21.108321ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (22.212353ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.298833ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (38.931665ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (26.513215ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.670442ms)
✖ schema constraints and layout omissions are reported independently (14.877274ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (21.857961ms)
✔ a linked git directory is refused before a writer lock can touch its target (33.254189ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 404.115625
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (14.877274ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /templates\/document.md.*missing/. Input:
'docs/large.md: expected bounded regular file, not a link\n' +
'docs/nul.md: NUL is forbidden\n' +
'templates/requirement.json: requirement.status: must be one of draft, accepted, complete'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:192:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'docs/large.md: expected bounded regular file, not a link\ndocs/nul.md: NUL is forbidden\ntemplates/requirement.json: requirement.status: must be one of draft, accepted, complete',
expected: /templates\/document.md.*missing/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,44 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (29.051352ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (15.055311ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (15.065429ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (96.500537ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (17.634197ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (26.747905ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (21.868033ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.294785ms)
✖ git commit failure restores only the attempted record and leaves human history unchanged (38.510039ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (28.08895ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.446289ms)
✔ schema constraints and layout omissions are reported independently (15.671802ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (21.989123ms)
✔ a linked git directory is refused before a writer lock can touch its target (31.854135ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 422.327079
✖ failing tests:
test at packages/project/tests/project.test.mjs:130:1
✖ git commit failure restores only the attempted record and leaves human history unchanged (38.510039ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ '?? docs/failure.md'
- ''
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:143:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: '?? docs/failure.md',
expected: '',
operator: 'strictEqual',
diff: 'simple'
}
@@ -0,0 +1,37 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.945951ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.862106ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (14.443917ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (72.619288ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (17.580572ms)
✖ writer refuses human pending edits and remotes instead of absorbing or contacting them (39.215324ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (21.945647ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.322611ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (51.845057ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (33.904446ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (18.355227ms)
✔ schema constraints and layout omissions are reported independently (18.198115ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (22.456849ms)
✔ a linked git directory is refused before a writer lock can touch its target (34.737151ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 437.585133
✖ failing tests:
test at packages/project/tests/project.test.mjs:92:1
✖ writer refuses human pending edits and remotes instead of absorbing or contacting them (39.215324ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:99:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (31.710023ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (16.132203ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (15.120461ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (78.685095ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (19.594907ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (25.678513ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (19.215088ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.277459ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.630008ms)
✖ git hooks and ambient git identity cannot alter the record writer or execute outside actions (28.892022ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.736047ms)
✔ schema constraints and layout omissions are reported independently (13.413096ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.032126ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.036642ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 405.982288
✖ failing tests:
test at packages/project/tests/project.test.mjs:147:1
✖ git hooks and ambient git identity cannot alter the record writer or execute outside actions (28.892022ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(!readdirSync(c.root).includes('hook-ran'))
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:159:12)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,39 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.849322ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.824976ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.501305ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.328136ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.822206ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.3962ms)
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (9.64175ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.528439ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.504836ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.947612ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.011322ms)
✔ schema constraints and layout omissions are reported independently (12.98003ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.814954ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.003601ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 335.519316
✖ failing tests:
test at packages/project/tests/project.test.mjs:102:1
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (9.64175ms)
AssertionError [ERR_ASSERTION]: Missing expected exception.
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:105:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: /overlap/,
operator: 'throws',
diff: 'simple'
}
@@ -0,0 +1,44 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.388995ms)
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (10.4092ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (11.964262ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.573699ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.827707ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.576373ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.402723ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.240494ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.491101ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.58546ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.404367ms)
✔ schema constraints and layout omissions are reported independently (12.106631ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.012117ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.267591ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 339.469992
✖ failing tests:
test at packages/project/tests/project.test.mjs:42:1
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (10.4092ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ '/mnt/storage/scratch/tmp/project-record-kYR5CU/data/projects/acme/stack'
- '/mnt/storage/scratch/tmp/project-record-kYR5CU/records'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:44:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: '/mnt/storage/scratch/tmp/project-record-kYR5CU/data/projects/acme/stack',
expected: '/mnt/storage/scratch/tmp/project-record-kYR5CU/records',
operator: 'strictEqual',
diff: 'simple'
}
@@ -0,0 +1,45 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.90896ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.287869ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (11.965657ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.241883ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.552906ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.485336ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (16.934003ms)
✖ schemas remain package-owned and reject invalid nested data and dates (2.983711ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.132603ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.848543ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.355078ms)
✔ schema constraints and layout omissions are reported independently (12.367523ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.369956ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.006624ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 344.105264
✖ failing tests:
test at packages/project/tests/project.test.mjs:120:1
✖ schemas remain package-owned and reject invalid nested data and dates (2.983711ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('requirement', { ...requirement, recordVersion: '1' }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:123:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,62 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.114885ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.00603ms)
✖ check reports every bad record, filename mismatch and unknown top-level path (12.880448ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.086671ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.562671ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.173288ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.914224ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.253397ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.562467ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.0347ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.258293ms)
✖ schema constraints and layout omissions are reported independently (12.31985ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.590875ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.335823ms)
ℹ tests 14
ℹ suites 0
ℹ pass 12
ℹ fail 2
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 345.53806
✖ failing tests:
test at packages/project/tests/project.test.mjs:55:1
✖ check reports every bad record, filename mismatch and unknown top-level path (12.880448ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /requirements\/bad.json.*status/. Input:
'unexpected.txt: unknown top-level path\n' +
'requirements/bad.json: file name must match record id\n' +
'decisions/wrong.json: file name must match record id'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:62:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'unexpected.txt: unknown top-level path\nrequirements/bad.json: file name must match record id\ndecisions/wrong.json: file name must match record id',
expected: /requirements\/bad.json.*status/,
operator: 'match',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (12.31985ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /templates\/requirement.json.*status/. Input:
'docs/large.md: expected bounded regular file, not a link\n' +
'docs/nul.md: NUL is forbidden\n' +
'templates/document.md: missing'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:191:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'docs/large.md: expected bounded regular file, not a link\ndocs/nul.md: NUL is forbidden\ntemplates/document.md: missing',
expected: /templates\/requirement.json.*status/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.995426ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.288075ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.431289ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.40569ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.00623ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.119095ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.309031ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.254194ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.686854ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (28.886119ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (21.04157ms)
✖ schema constraints and layout omissions are reported independently (16.041005ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.693014ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.074142ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 365.029906
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (16.041005ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('requirement', value).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:181:12)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.705134ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.153741ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.350026ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.967536ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.656955ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.741771ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.755769ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.246756ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.693496ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.344472ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.736384ms)
✖ schema constraints and layout omissions are reported independently (12.665884ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.982106ms)
✔ a linked git directory is refused before a writer lock can touch its target (29.661783ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 345.689877
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (12.665884ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('requirement', value).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:181:12)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,46 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (28.593947ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.368964ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.282117ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.720607ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.4754ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.552204ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.579259ms)
✖ schemas remain package-owned and reject invalid nested data and dates (3.201705ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.768198ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.791692ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.865708ms)
✔ schema constraints and layout omissions are reported independently (12.818947ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.028322ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.230483ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 346.965664
✖ failing tests:
test at packages/project/tests/project.test.mjs:120:1
✖ schemas remain package-owned and reject invalid nested data and dates (3.201705ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('project', { layoutVersion: 1, business: 'acme', project: 'stack', name: 'Name', createdAt: '2026-02-30T00:00:00.000Z' }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:127:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,45 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.877864ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (17.805685ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.994529ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.31128ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.165186ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.027126ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (16.992975ms)
✖ schemas remain package-owned and reject invalid nested data and dates (3.057185ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.293554ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.798566ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.389298ms)
✔ schema constraints and layout omissions are reported independently (12.583314ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.041605ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.313431ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 345.783541
✖ failing tests:
test at packages/project/tests/project.test.mjs:120:1
✖ schemas remain package-owned and reject invalid nested data and dates (3.057185ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('decision', { ...decision, options: [decision.options[0]] }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:124:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.679277ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.738148ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.361888ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (67.854657ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.638705ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.665527ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (19.199864ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.281053ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.191511ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (26.804787ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (26.820476ms)
✖ schema constraints and layout omissions are reported independently (21.932093ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (23.063381ms)
✔ a linked git directory is refused before a writer lock can touch its target (33.15408ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 391.432588
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (21.932093ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('decision', { ...decision, options: Array.from({ length: 10 }, (_, i) => ({ key: 'k' + i, text: 'Option' })), recommendation: 'k0' }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:182:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,41 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (27.097297ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (15.218595ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (14.621796ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (66.77326ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.91309ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.93694ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.072655ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.247076ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.730648ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.936513ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.626274ms)
✖ schema constraints and layout omissions are reported independently (12.372615ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (19.541895ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.780305ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 368.750116
✖ failing tests:
test at packages/project/tests/project.test.mjs:177:1
✖ schema constraints and layout omissions are reported independently (12.372615ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('requirement', value).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:181:12)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.338982ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.127035ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.174821ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.36402ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (24.341554ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.403781ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.160603ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.303434ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.587446ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (25.301721ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.339131ms)
✔ schema constraints and layout omissions are reported independently (12.51304ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.116169ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.436411ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 358.588878
✖ failing tests:
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (24.341554ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:87:6)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.52968ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.512674ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.183682ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.545329ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.276996ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.155832ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.261891ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.229254ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.281253ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.323983ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.360319ms)
✔ schema constraints and layout omissions are reported independently (12.790961ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.836967ms)
✔ a linked git directory is refused before a writer lock can touch its target (29.786938ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 350.719366
✖ failing tests:
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (25.276996ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:87:6)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,45 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (61.458689ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.387027ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (13.289251ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (69.528435ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (17.683862ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (22.764902ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (20.367149ms)
✖ schemas remain package-owned and reject invalid nested data and dates (3.777097ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (40.788439ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (29.629902ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (16.443935ms)
✔ schema constraints and layout omissions are reported independently (15.343677ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (22.072087ms)
✔ a linked git directory is refused before a writer lock can touch its target (32.464235ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 482.504631
✖ failing tests:
test at packages/project/tests/project.test.mjs:120:1
✖ schemas remain package-owned and reject invalid nested data and dates (3.777097ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('decision', { ...decision, options: [decision.options[0], decision.options[0]] }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:125:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,45 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (26.081648ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.284205ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.227273ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (61.21401ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.570379ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.539168ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.433131ms)
✖ schemas remain package-owned and reject invalid nested data and dates (3.033773ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.150376ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.76702ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.462382ms)
✔ schema constraints and layout omissions are reported independently (12.439208ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.516725ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.511391ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 347.524289
✖ failing tests:
test at packages/project/tests/project.test.mjs:120:1
✖ schemas remain package-owned and reject invalid nested data and dates (3.033773ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('decision', { ...decision, recommendation: 'unknown' }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:126:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,32 @@
✖ optional project repo is preserved and must be a normalized absolute path (4.472247ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 53.600438
✖ failing tests:
test at packages/business/tests/project-repo.test.mjs:6:1
✖ optional project repo is preserved and must be a normalized absolute path (4.472247ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ undefined
- '/mnt/storage/scratch/tmp/mosaic-business-SsIIjv/records'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/business/tests/project-repo.test.mjs:11:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: undefined,
expected: '/mnt/storage/scratch/tmp/mosaic-business-SsIIjv/records',
operator: 'strictEqual',
diff: 'simple'
}
@@ -0,0 +1,27 @@
✖ optional project repo is preserved and must be a normalized absolute path (5.076763ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 61.101686
✖ failing tests:
test at packages/business/tests/project-repo.test.mjs:6:1
✖ optional project repo is preserved and must be a normalized absolute path (5.076763ms)
AssertionError [ERR_ASSERTION]: Missing expected exception.
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/business/tests/project-repo.test.mjs:14:12)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: /repo.*normalized absolute path/,
operator: 'throws',
diff: 'simple'
}
@@ -0,0 +1,28 @@
✔ project init/check use declared business repo and never contact the bus (111.068641ms)
✖ project commands validate args and refuse undeclared projects and agent init (83.815486ms)
✔ project dispatcher reaches the human CLI (78.678181ms)
ℹ tests 3
ℹ suites 0
ℹ pass 2
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 374.900296
✖ failing tests:
test at packages/cli/tests/project.test.mjs:27:1
✖ project commands validate args and refuse undeclared projects and agent init (83.815486ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/cli/tests/project.test.mjs:30:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: /agent/i,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,35 @@
✔ project init/check use declared business repo and never contact the bus (112.18923ms)
✔ project commands validate args and refuse undeclared projects and agent init (27.382779ms)
✖ project dispatcher reaches the human CLI (28.594171ms)
ℹ tests 3
ℹ suites 0
ℹ pass 2
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 262.87354
✖ failing tests:
test at packages/cli/tests/project.test.mjs:35:1
✖ project dispatcher reaches the human CLI (28.594171ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /mosaic project/. Input:
'refused: usage: mosaic launch <seat|seat-dir> [--task TEXT] [--project NAME] [--workspace PATH] [--harness NAME] [--repo PATH] [--config PATH] [-- args...]\n' +
' mosaic seat task <seat> <text> [--by NAME] [--layout repo|fleet|unknown] [--config PATH]\n'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/cli/tests/project.test.mjs:41:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'refused: usage: mosaic launch <seat|seat-dir> [--task TEXT] [--project NAME] [--workspace PATH] [--harness NAME] [--repo PATH] [--config PATH] [-- args...]\n mosaic seat task <seat> <text> [--by NAME] [--layout repo|fleet|unknown] [--config PATH]\n',
expected: /mosaic project/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,72 @@
✖ shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation (364.003209ms)
✔ wrapper preserves Q81 lease and marker, rejects foreign/symlink; check uses effective roots (388.397371ms)
✔ bus unit copy/pm pins, install refuses all busy states and failed reads, drop-in refusal (390.360131ms)
✔ missing package manifest refuses before npm; npm failure removes the unpublished temp copy (262.51534ms)
✖ real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse (2244.609009ms)
✔ bus status reads effective copy/pm/drop-ins without writes; check refuses an overridden ExecStart (457.864629ms)
✔ drop-ins in either override field and malformed metadata refuse; uninstall also checks --no-reload (160.808477ms)
✔ install never shows a template name on systemd 261; template drop-ins still refuse (163.135982ms)
✔ unlisted instance drop-in is found in another unit lookup directory; path discovery errors refuse (134.112638ms)
✔ inherited mosaic-.service.d override refuses without changing the unit (170.950469ms)
✔ inherited service.d override refuses without changing the unit (164.755861ms)
✔ inherited drop-in unreadable directory or file refuses before writing (144.728991ms)
ℹ tests 12
ℹ suites 0
ℹ pass 10
ℹ fail 2
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 5100.175358
✖ failing tests:
test at packages/cli/tests/stack-copy.test.mjs:34:1
✖ shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation (364.003209ms)
AssertionError [ERR_ASSERTION]: packages/project/src/index.mjs
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/cli/tests/stack-copy.test.mjs:37:357)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: false,
expected: true,
operator: '==',
diff: 'simple'
}
test at packages/cli/tests/stack-copy.test.mjs:101:1
✖ real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse (2244.609009ms)
AssertionError [ERR_ASSERTION]: node:internal/modules/esm/resolve:272
throw new ERR_MODULE_NOT_FOUND(
^
Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/mnt/storage/scratch/tmp/stack-copy-z65IJp/copies/811ff84cf1a28e29fef39d421f85ee455d1fc9bf/packages/project/src/index.mjs' imported from /mnt/storage/scratch/tmp/stack-copy-z65IJp/copies/811ff84cf1a28e29fef39d421f85ee455d1fc9bf/packages/cli/src/project.mjs
at finalizeResolution (node:internal/modules/esm/resolve:272:11)
at moduleResolve (node:internal/modules/esm/resolve:879:10)
at defaultResolve (node:internal/modules/esm/resolve:1006:11)
at #cachedDefaultResolve (node:internal/modules/esm/loader:708:20)
at #resolveAndMaybeBlockOnLoaderThread (node:internal/modules/esm/loader:728:38)
at ModuleLoader.resolveSync (node:internal/modules/esm/loader:766:56)
at #resolve (node:internal/modules/esm/loader:690:17)
at ModuleLoader.getOrCreateModuleJob (node:internal/modules/esm/loader:610:35)
at ModuleJob.syncLink (node:internal/modules/esm/module_job:277:33)
at ModuleJob.link (node:internal/modules/esm/module_job:389:17) {
code: 'ERR_MODULE_NOT_FOUND',
url: 'file:///mnt/storage/scratch/tmp/stack-copy-z65IJp/copies/811ff84cf1a28e29fef39d421f85ee455d1fc9bf/packages/project/src/index.mjs'
}
Node.js v26.8.1
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/cli/tests/stack-copy.test.mjs:111:84)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: '',
expected: /bus host up/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,45 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.795492ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.438039ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.74473ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.83314ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.892811ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.380266ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.742666ms)
✖ schemas remain package-owned and reject invalid nested data and dates (2.900774ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.269867ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.509079ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.022171ms)
✔ schema constraints and layout omissions are reported independently (12.574678ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.611983ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.198402ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 351.884934
✖ failing tests:
test at packages/project/tests/project.test.mjs:120:1
✖ schemas remain package-owned and reject invalid nested data and dates (2.900774ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('requirement', { ...requirement, title: '' }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:122:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,42 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.578021ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.058666ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.758236ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (64.329781ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.927672ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.038245ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.584527ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.262347ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.569592ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.996199ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.256158ms)
✔ schema constraints and layout omissions are reported independently (12.742713ms)
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (12.978942ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.553807ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 342.493547
✖ failing tests:
test at packages/project/tests/project.test.mjs:195:1
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (12.978942ms)
AssertionError [ERR_ASSERTION]: The expression evaluated to a falsy value:
assert.ok(api.validateRecord('requirement', { ...requirement, title: 'x'.repeat(513) }).length)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:200:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 0,
expected: true,
operator: '==',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.659404ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.254903ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (11.996017ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (60.384538ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.02788ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.022053ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.403933ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.245782ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.491155ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.833381ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.032282ms)
✔ schema constraints and layout omissions are reported independently (12.803266ms)
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (11.649935ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.71433ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 334.821485
✖ failing tests:
test at packages/project/tests/project.test.mjs:195:1
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (11.649935ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:207:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: /unsupported schema keyword/,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,39 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (25.423252ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.538062ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.703271ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.093045ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.33179ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.673668ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.093279ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.262797ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.94917ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.367273ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.270126ms)
✔ schema constraints and layout omissions are reported independently (12.907996ms)
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (10.973733ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.246034ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 339.527747
✖ failing tests:
test at packages/project/tests/project.test.mjs:195:1
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (10.973733ms)
AssertionError [ERR_ASSERTION]: Missing expected exception.
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:199:10)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
expected: /normalized absolute/,
operator: 'throws',
diff: 'simple'
}
@@ -0,0 +1,48 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (27.526099ms)
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.209864ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.345464ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.733266ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.764577ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (19.547261ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (18.289799ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.265883ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.516999ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.598503ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.659814ms)
✔ schema constraints and layout omissions are reported independently (13.205998ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.968279ms)
✔ a linked git directory is refused before a writer lock can touch its target (29.97194ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 350.668683
✖ failing tests:
test at packages/project/tests/project.test.mjs:42:1
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.209864ms)
AssertionError [ERR_ASSERTION]: The validation function is expected to return "true". Received false
Caught error:
TypeError: Cannot read properties of undefined (reading 'root')
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:48:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: TypeError: Cannot read properties of undefined (reading 'root')
at projectRepo (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/src/paths.mjs:31:67)
at Module.initProject (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/src/index.mjs:87:16)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:48:28)
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7),
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,38 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.905203ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.303672ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (11.962043ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.520349ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.546703ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.708513ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.862733ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.260445ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.445194ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.39224ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (14.094935ms)
✔ schema constraints and layout omissions are reported independently (12.748585ms)
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (26.760837ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.123511ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 354.749111
✖ failing tests:
test at packages/project/tests/project.test.mjs:195:1
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (26.760837ms)
AssertionError [ERR_ASSERTION]: Missing expected rejection.
at process.processTicksAndRejections (node:internal/process/task_queues:104:5)
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:210:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: false,
code: 'ERR_ASSERTION',
actual: undefined,
operator: 'rejects',
diff: 'simple'
}
@@ -0,0 +1,41 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.414933ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.487798ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.564469ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (62.300294ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (14.650182ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.873818ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.657169ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.242821ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (34.136643ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (24.585842ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.46638ms)
✔ schema constraints and layout omissions are reported independently (12.623481ms)
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.553683ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.511583ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 345.903465
✖ failing tests:
test at packages/project/tests/project.test.mjs:195:1
✖ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.553683ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /requirements\/\.gitkeep.*empty/. Input:
''
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:213:10)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: '',
expected: /requirements\/\.gitkeep.*empty/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,46 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.853063ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.299921ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.3815ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (63.310352ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.067485ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.51525ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.058398ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.258178ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (32.859634ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.667756ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.068913ms)
✔ schema constraints and layout omissions are reported independently (12.246697ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.375184ms)
✖ a linked git directory is refused before a writer lock can touch its target (30.867309ms)
ℹ tests 14
ℹ suites 0
ℹ pass 13
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 347.485782
✖ failing tests:
test at packages/project/tests/project.test.mjs:216:1
✖ a linked git directory is refused before a writer lock can touch its target (30.867309ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly deep-equal:
+ actual - expected
+ [
+ 'mosaic-record.lock',
+ 'mosaic-record.lock'
+ ]
- []
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147-r1/packages/project/tests/project.test.mjs:225:12)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: [ 'mosaic-record.lock', 'mosaic-record.lock' ],
expected: [],
operator: 'deepStrictEqual',
diff: 'simple'
}
@@ -0,0 +1,352 @@
[
{
"id": "01-init-nonempty",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "02-unknown-top-level",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "03-check-record-schema",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "04-check-filename-id",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "05-writer-record-schema",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "06-writer-filename-id",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "07-agent-spec-refusal",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "08-author-shape",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "09-agent-commit-author",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "10-human-initial-author",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "11-preserve-dirty-human-edits",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "12-exclusive-writer",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "13-context-business",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "14-file-links",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "15-invalid-utf8",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "16-file-nul",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "17-file-size",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "18-writer-size",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "19-unknown-project-schema",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "20-required-template",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "21-rollback-file",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "22-no-remotes",
"path": "packages/project/src/git.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "23-disable-hooks",
"path": "packages/project/src/git.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "24-code-repo-separation",
"path": "packages/project/src/paths.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "25-repo-override",
"path": "packages/project/src/paths.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "26-const-version",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "27-enum-values",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "28-schema-types",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "29-id-pattern",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "30-canonical-date",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "31-min-array",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "32-max-array",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "33-required-fields",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "34-closed-keys",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "35-decision-choice",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "36-distinct-options",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "37-recommendation-option",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "38-business-repo-preservation",
"path": "packages/business/src/business.mjs",
"test": "packages/business/tests/project-repo.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "39-business-repo-validation",
"path": "packages/business/src/business.mjs",
"test": "packages/business/tests/project-repo.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "40-human-cli-init",
"path": "packages/cli/src/project.mjs",
"test": "packages/cli/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "41-cli-dispatch",
"path": "scripts/mosaic",
"test": "packages/cli/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "42-pinned-package",
"path": "scripts/stack-copy.sh",
"test": "packages/cli/tests/stack-copy.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "43-min-string",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "44-max-string",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "45-schema-keywords",
"path": "packages/project/src/validate.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "46-absolute-normalized-repo",
"path": "packages/project/src/paths.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "47-declared-project",
"path": "packages/project/src/paths.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "48-git-config",
"path": "packages/project/src/git.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "49-empty-layout-marker",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
},
{
"id": "50-gitdir-before-lock",
"path": "packages/project/src/index.mjs",
"test": "packages/project/tests/project.test.mjs",
"result": "KILLED",
"exit": 1
}
]
@@ -0,0 +1,12 @@
{
"mutants": 50,
"killed": 50,
"survived": 0,
"timeouts": 0,
"invalid_final": 0,
"initial_invalid_attempt": "20-required-template: omitted loop body; corrected with empty statement, reran all 50",
"candidate_hashes_restored": 24,
"staged_index_unchanged": true,
"remaining_runners": [],
"docker_used": false
}
@@ -0,0 +1,52 @@
| Check | Result | Exit |
| --- | --- | --- |
| 01-init-nonempty | KILLED | 1 |
| 02-unknown-top-level | KILLED | 1 |
| 03-check-record-schema | KILLED | 1 |
| 04-check-filename-id | KILLED | 1 |
| 05-writer-record-schema | KILLED | 1 |
| 06-writer-filename-id | KILLED | 1 |
| 07-agent-spec-refusal | KILLED | 1 |
| 08-author-shape | KILLED | 1 |
| 09-agent-commit-author | KILLED | 1 |
| 10-human-initial-author | KILLED | 1 |
| 11-preserve-dirty-human-edits | KILLED | 1 |
| 12-exclusive-writer | KILLED | 1 |
| 13-context-business | KILLED | 1 |
| 14-file-links | KILLED | 1 |
| 15-invalid-utf8 | KILLED | 1 |
| 16-file-nul | KILLED | 1 |
| 17-file-size | KILLED | 1 |
| 18-writer-size | KILLED | 1 |
| 19-unknown-project-schema | KILLED | 1 |
| 20-required-template | KILLED | 1 |
| 21-rollback-file | KILLED | 1 |
| 22-no-remotes | KILLED | 1 |
| 23-disable-hooks | KILLED | 1 |
| 24-code-repo-separation | KILLED | 1 |
| 25-repo-override | KILLED | 1 |
| 26-const-version | KILLED | 1 |
| 27-enum-values | KILLED | 1 |
| 28-schema-types | KILLED | 1 |
| 29-id-pattern | KILLED | 1 |
| 30-canonical-date | KILLED | 1 |
| 31-min-array | KILLED | 1 |
| 32-max-array | KILLED | 1 |
| 33-required-fields | KILLED | 1 |
| 34-closed-keys | KILLED | 1 |
| 35-decision-choice | KILLED | 1 |
| 36-distinct-options | KILLED | 1 |
| 37-recommendation-option | KILLED | 1 |
| 38-business-repo-preservation | KILLED | 1 |
| 39-business-repo-validation | KILLED | 1 |
| 40-human-cli-init | KILLED | 1 |
| 41-cli-dispatch | KILLED | 1 |
| 42-pinned-package | KILLED | 1 |
| 43-min-string | KILLED | 1 |
| 44-max-string | KILLED | 1 |
| 45-schema-keywords | KILLED | 1 |
| 46-absolute-normalized-repo | KILLED | 1 |
| 47-declared-project | KILLED | 1 |
| 48-git-config | KILLED | 1 |
| 49-empty-layout-marker | KILLED | 1 |
| 50-gitdir-before-lock | KILLED | 1 |
@@ -0,0 +1,77 @@
d7bac47e7a1b5931d72f8c4895e58f56b5b7228510cf146ac33351e8e7db5eb6 BUILD.md
e05e8fd535fb93bf75784d5682f2c61ed776a8c2253417d6403cba7641281fb5 DESIGN.md
c4d07816ce6ffd3b85a1c3f00574548de6f734f92b366c1aaaa41f743c64c0e1 HANDOFF.md
66194ffa9c82a1e562b4ee66e2d08e8d53ce7a3a7a38d58a394f9705df605895 base.txt
c88a3c0111c15f858a1e96c3acfad8103ae1d23d5b6b7ccbc0e7d6ba0375ebbb build.patch
a7f53bc5fe0b67440084e48f706e4aa864f0b36ec9bcea05eec0d2787f75fc39 candidate-manifest.sha256
28cd76e75eb9cede7d02a2d6c9cc537e62409ac7e8a74ac65d579bf268fa8e6d gate.py
9161f444d7154f7aa60315432cd5031272f81141da8eae78eef3af4ac3baa85b green-business.log
965831fe4e5caa9eee8befb88341a58306a66832949bb863a94da200eada829c green-cli.log
f6d8c2b84c0bd89c9a5b47bf26fb0e1ef11f377e6e91b006850f8a7d8c324d4e green-copy.log
4897304927271570fcfa55ef51f82575eda3fbe9110d3bf12c069789bae4253c green-project.log
a6dc3ef09e58730ea7acc32458d284c6c7067f7bf1a781d073d3c744fb6d3ecf mutants/01-init-nonempty.log
454ad4373579ec0643e17d89380cd7df8c7840551943d3b8b89f494f29488d39 mutants/02-unknown-top-level.log
b516657a4e31f212bbdfda8644e027c7bf14d149a57ac08815283ebd321f849f mutants/03-check-record-schema.log
fb9891dad1871bb5b9fed8ea2dedfd6f5b5d9c886705dd1cb2aabc6502de26b3 mutants/04-check-filename-id.log
189599e05aa69244617bc4b152ea6d8bfd941bd84e61148767cf928d64b74f50 mutants/05-writer-record-schema.log
83b3002d26eaa42c1e0bb237dbaaf82a002ff2e72dc4c10880d41a2ea1508398 mutants/06-writer-filename-id.log
7136fd2b05d89ed30a86920f492e28b38158365c00992cb46a519571062e22d0 mutants/07-agent-spec-refusal.log
fbd368ec67220eabc3760841efd7ccf7273f3919fbf58923c0a1d88db80fbe05 mutants/08-author-shape.log
5e3d67b49dbf0bd43f4b763eb68b8b44f640ab05e96811be73bd977b325b56a1 mutants/09-agent-commit-author.log
19effec7692d0f18d961516ad678bc8cdaee8f582d5eff868ee4f3346cdc1191 mutants/10-human-initial-author.log
319c8f031ccafc7ac391fdbddf9ab348bedee53d70bcd383fa37e252f5051b4c mutants/11-preserve-dirty-human-edits.log
71c24928c7abe8c6418f580ed46b1da9e397c1a27302e6fc67945a1d2a558f88 mutants/12-exclusive-writer.log
07a4909db0a44a7a372291fc22d72d34ea065e728763f7ba08207fc5e35006c0 mutants/13-context-business.log
5f0d267f4b44f0b707acabf57677453385f960c485cc715ac7255d2e1dff8b3e mutants/14-file-links.log
959229615dae442ceb9719608bb5b29ce7590b65921f3f706ba367ca3b225bea mutants/15-invalid-utf8.log
02427c30928de4b8187e92a9d519708229e55f392ad49333c311fec52bee7700 mutants/16-file-nul.log
71c5390d1a11235bf38a48b763e16ca0713bf21204db36e406934c13c78d51f0 mutants/17-file-size.log
056e7a74c69fb80d1cdac38751b802dd46a2b47de6b285ae026bbdfdbd42c5af mutants/18-writer-size.log
6d53fc14d77718ce50b0c11a61f3d1a12c7f2684c45a15df6531a615e50ca803 mutants/19-unknown-project-schema.log
7a6b4401a219f35e60730e746adc5f37b7b7d9fdd44f3e7c188621137774208e mutants/20-required-template-invalid-attempt.log
eaf83120af97321a6ccd5ce3010274ab3ee97719b2c61bb14af0913be2eb3be7 mutants/20-required-template.log
a70a5fd0cdf48496f97c2a88ca6a07872e7a70ef8dd938dd1736dbf7f876b879 mutants/21-rollback-file.log
e5254ba85ad7f3e98557ba71a1942cc90461953fe448ffdbd2a623d35cf7fb1f mutants/22-no-remotes.log
ad3ffe8b101b14452d896c48cbca2ffa359077d384cbfe2478fbc044f4bc8216 mutants/23-disable-hooks.log
d2b953fbd50c014d7f6b52dcd8ef8c250fee0721d7466044c55ccfebc27baf85 mutants/24-code-repo-separation.log
8e50bf6628c7dbfdce568e79ab4fda32fdb9558776e5dd3e9e077628d0376ca9 mutants/25-repo-override.log
9daff4e738fb035d6d27bd7aecf94d86cae907ef12995c16a47ed28c013af88f mutants/26-const-version.log
f8e55ef343b23ac118ce876f707ed7a0b92e278a3d13b7009403a9246ffdd35d mutants/27-enum-values.log
0f3038e51537f16e44f66fba05077eeabe8ea9ca91a1a5d29e92c79e3df8661c mutants/28-schema-types.log
490d28b2a1ac6ddba56d097098caff5544f360445de052b8322ad5890fcd43c6 mutants/29-id-pattern.log
8aeb6b9d7c92b7c3061af64c0af89a701d4098e83d2e62e8e7d44a577a577fa4 mutants/30-canonical-date.log
c47738b4d26c723a6932b7a7a710ff5574740d229fed151b50c4b0f768e18f85 mutants/31-min-array.log
c3cc096ed754dd8c0f58fcaf826a508d50b8d54851f51c16efc1e7770d4041e5 mutants/32-max-array.log
1db6fbd8442b704447e1058832681351538c52404c59906ddb5b34467a565198 mutants/33-required-fields.log
ad27b9b9bcc647add33ddc932494475d5e627f3543db84db86b90dfa5923f3a6 mutants/34-closed-keys.log
9392c49aff885a8867e787fe3359f8c917fe4bf260e063fbcee7b87ae666dbf9 mutants/35-decision-choice.log
fffd57aa5018af8b6072b856c9a4de102f17b5cff92ecc20faf662915a68873c mutants/36-distinct-options.log
2fe67faeff108369617cd47eb851c80f52b39d60e9546674e76ce2d78f8b20f8 mutants/37-recommendation-option.log
67e108d2777010ac8ee2189d0b686fdd754357da7ac25294e5ce5cdec96bb79b mutants/38-business-repo-preservation.log
efb045c5854a4b521746f36d2ea6f668c7d42c3e06e9794112dd9b70b9620451 mutants/39-business-repo-validation.log
f3c1b745e4194d980f19b6711eff5c73ef8830c3e9530d6d479d854f3fd729bf mutants/40-human-cli-init.log
f982d26a8f8f7d5982806e5a88c84818ba9a7f5a46e608afa02de5a12ebaf026 mutants/41-cli-dispatch.log
47592a1b4b3d0de081ccd88fa1f380b39edd67673ed674ca0c6b2e13021cf045 mutants/42-pinned-package.log
b80f2a1528f854e5210fc6ddc89812609cdc02239bbbc82846a806b14cbe408a mutants/43-min-string.log
e91651760bf8593c08bde08c04cd3c99ba49eda4e5d0acc5f8653ff5a3e63a2a mutants/44-max-string.log
139df4587ef2f87629d4de3e96db3013f84498d6e9ce6cec9f4fe9ef52ad2371 mutants/45-schema-keywords.log
81184fb494a7a0ada07091c08556587de2450fe64cb44fb1b96547c4e03fa94d mutants/46-absolute-normalized-repo.log
a1d54bd48130c8b7af93ee444de5c38671aa259799444d9e4bf07ed32a6cb596 mutants/47-declared-project.log
84e4db4a57c1f9ab8d12378e5b251b6439e417791e4d3a41c04d0ac8a9a256ac mutants/48-git-config.log
2faa4d7cfe6ac4d2dceeac0e36ce81876fbfd6529ff1355f3abfe573a14e5630 mutants/49-empty-layout-marker.log
661fe31c707de8cd714538b09c89ed108f8e29e23ec9395fcb85c3f1d7f9d615 mutants/50-gitdir-before-lock.log
de7a042057a36dd5450846bc40050e52826705e42a819835e1b47ce83cf8b266 mutants/results.json
c0f48e593d9ea2c2276dc87deb49876fe20d643f6d4f70d40be8c14b8e6eecb4 mutants/summary.json
a82a1e53fe22d7458d481c106050aef254d327947151be27718f843f2727ceaf mutants/table.md
2e18826f08e1b6804122ad1b1af9fe6fab9ba67f2bcd42689136aa6adb025c00 mutants.py
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 pre-mutant-index.patch
196852243fb693ee25328e532a21c0e5fae0a6328fc2a397e95df3aa4db58842 prepare.py
a4609a1b6cd4085f2d3019da140a1bf0425c973e7d725444a53ce796b23f4aa0 rebased-business.log
eeb035eb5ec75aa51456607a33342b9731503ceeeb4049fc3c67b8cf2056d3b4 rebased-cli.log
01fb0cea989d6b2f839590f627a147ea7ce2c55434f3e480f41b758ffb9a8637 rebased-copy.log
e553c9c1075aa53d322c0b42505604bdd28b5c1b7488af685582b0ea7c0b7c5f rebased-project.log
a49cdf2bd32782f35db68d8879f05356ffe131442d8e451982cda947f2e7c6d8 rebuild-manifest.txt
459b0ea5e931940ab945eeda0b251e6c4a7b45dcde9b2921e42da2fed1cc0aaf red-business.log
1e30d66327189218ad40e24be069b4dd27dd2e6d48c64f14eb9c699f95d07371 red-cli.log
d581596783391dd6638ce0ee41f5fec7ad0fef3ce174d02a1453f4afc6b29df9 red-project.log
ede2d3fbc8b32f1d6651831a30054a2bca01b6f69861db407bf762bfeb612c09 scan.json
+15
View File
@@ -0,0 +1,15 @@
#!/usr/bin/env python3
import hashlib,pathlib,subprocess
root=pathlib.Path('/mnt/storage/src/mosaic-stack-rocko-147-r1');out=pathlib.Path(__file__).resolve().parent
tracked=subprocess.check_output(['git','diff','--name-only'],cwd=root,text=True).splitlines()
new=subprocess.check_output(['git','ls-files','--others','--exclude-standard','--','packages/project','packages/cli/src/project.mjs','packages/cli/tests/project.test.mjs','packages/business/tests/project-repo.test.mjs'],cwd=root,text=True).splitlines()
paths=sorted(set(tracked+new))
assert all(p.startswith(('packages/project/','packages/cli/','packages/business/','scripts/','docs/')) for p in paths)
patch=subprocess.check_output(['git','diff','--binary','--no-ext-diff'],cwd=root)
for path in sorted(new):
p=subprocess.run(['git','diff','--no-index','--binary','--','/dev/null',path],cwd=root,stdout=subprocess.PIPE)
assert p.returncode==1;patch+=p.stdout
(out/'build.patch').write_bytes(patch)
(out/'base.txt').write_bytes(subprocess.check_output(['git','rev-parse','HEAD'],cwd=root))
(out/'candidate-manifest.sha256').write_text(''.join(hashlib.sha256((root/p).read_bytes()).hexdigest()+' '+p+'\n' for p in paths))
print('candidate files',len(paths));print('candidate SHA',hashlib.sha256((out/'candidate-manifest.sha256').read_bytes()).hexdigest())
@@ -0,0 +1,9 @@
✔ optional project repo is preserved and must be a normalized absolute path (5.637282ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 49.466758
@@ -0,0 +1,11 @@
✔ project init/check use declared business repo and never contact the bus (113.877943ms)
✔ project commands validate args and refuse undeclared projects and agent init (32.736316ms)
✔ project dispatcher reaches the human CLI (84.325568ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 334.088376
@@ -0,0 +1,20 @@
✔ shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation (482.745626ms)
✔ wrapper preserves Q81 lease and marker, rejects foreign/symlink; check uses effective roots (442.947564ms)
✔ bus unit copy/pm pins, install refuses all busy states and failed reads, drop-in refusal (397.087137ms)
✔ missing package manifest refuses before npm; npm failure removes the unpublished temp copy (273.784863ms)
✔ real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse (3170.663379ms)
✔ bus status reads effective copy/pm/drop-ins without writes; check refuses an overridden ExecStart (437.561808ms)
✔ drop-ins in either override field and malformed metadata refuse; uninstall also checks --no-reload (159.077909ms)
✔ install never shows a template name on systemd 261; template drop-ins still refuse (162.980605ms)
✔ unlisted instance drop-in is found in another unit lookup directory; path discovery errors refuse (146.58988ms)
✔ inherited mosaic-.service.d override refuses without changing the unit (169.418985ms)
✔ inherited service.d override refuses without changing the unit (165.679044ms)
✔ inherited drop-in unreadable directory or file refuses before writing (146.994383ms)
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6224.527843
@@ -0,0 +1,22 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (32.745717ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (14.675649ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (14.206851ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (73.213285ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (16.377784ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (20.084596ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (19.731265ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.27014ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (35.911278ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (26.061822ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (15.657314ms)
✔ schema constraints and layout omissions are reported independently (15.085143ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (18.19364ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.428678ms)
ℹ tests 14
ℹ suites 0
ℹ pass 14
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 379.279339
@@ -0,0 +1,24 @@
docs/TOOLS.md: OK
packages/business/src/business.mjs: OK
packages/business/tests/project-repo.test.mjs: OK
packages/cli/src/cli.mjs: OK
packages/cli/src/project.mjs: OK
packages/cli/tests/project.test.mjs: OK
packages/cli/tests/stack-copy.test.mjs: OK
packages/project/README.md: OK
packages/project/package.json: OK
packages/project/schemas/decision.schema.json: OK
packages/project/schemas/project.schema.json: OK
packages/project/schemas/requirement.schema.json: OK
packages/project/src/git.mjs: OK
packages/project/src/index.mjs: OK
packages/project/src/paths.mjs: OK
packages/project/src/validate.mjs: OK
packages/project/templates/decision.json: OK
packages/project/templates/document.md: OK
packages/project/templates/north-star.md: OK
packages/project/templates/project.json: OK
packages/project/templates/requirement.json: OK
packages/project/tests/project.test.mjs: OK
scripts/mosaic: OK
scripts/stack-copy.sh: OK
@@ -0,0 +1,26 @@
✖ optional project repo is preserved and must be a normalized absolute path (4.106907ms)
ℹ tests 1
ℹ suites 0
ℹ pass 0
ℹ fail 1
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 56.245918
✖ failing tests:
test at packages/business/tests/project-repo.test.mjs:6:1
✖ optional project repo is preserved and must be a normalized absolute path (4.106907ms)
Error [BusinessError]: unsupported /mnt/storage/scratch/tmp/mosaic-business-dfPOtj/businesses/acme.json projects.stack key: "repo"
at refuse (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/business/src/errors.mjs:12:9)
at rejectUnknownKeys (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/business/src/util.mjs:17:33)
at validateBusinessDocument (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/business/src/business.mjs:179:5)
at check (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/business/tests/project-repo.test.mjs:8:23)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/business/tests/project-repo.test.mjs:11:16)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
exitCode: 2
}
+101
View File
@@ -0,0 +1,101 @@
✖ project init/check use declared business repo and never contact the bus (3.548192ms)
✖ project commands validate args and refuse undeclared projects and agent init (2.589804ms)
✖ project dispatcher reaches the human CLI and pinned copy contains the entire project package (31.15651ms)
ℹ tests 3
ℹ suites 0
ℹ pass 0
ℹ fail 3
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 134.797167
✖ failing tests:
test at packages/cli/tests/project.test.mjs:10:1
✖ project init/check use declared business repo and never contact the bus (3.548192ms)
TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received undefined
at join (node:path:1339:7)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/cli/tests/project.test.mjs:12:31)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
code: 'ERR_INVALID_ARG_TYPE'
}
test at packages/cli/tests/project.test.mjs:27:1
✖ project commands validate args and refuse undeclared projects and agent init (2.589804ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /declare/. Input:
'CliError: usage:\n' +
' mosaic limits [--business ID] [--json] | set --file PATCH [--business ID] | migrate --file ORGANIZATION --models MAPPING [--roles-dir DIR]\n' +
' mosaic inbox [--business <id>] [--json] [--tester]\n' +
' mosaic decide <decision> <option> [--note <text>] [--yes] [--business <id>]\n' +
' mosaic tasks [--business <id>] [--json] [--tester]\n' +
' mosaic agents [--business <id>] [--json] [--tester]\n' +
' mosaic trail <task|decision> [--business <id>] [--json] [--tester]\n' +
' mosaic talk <role> <text> [--wait <seconds> | --follow] [--business <id>] [--tester]\n' +
' mosaic follow [--business <id>] [--tester]\n' +
' mosaic stop <run>\n' +
' mosaic launches off|on [--business <id>]\n' +
' mosaic launches list [--json]\n' +
' mosaic bus start <business> [--pm]\n' +
' mosaic bus stop\n' +
' mosaic bus status [--json]'
at async TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/cli/tests/project.test.mjs:29:3)
at async Test.run (node:internal/test_runner/test:1409:7)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: CliError: usage:
mosaic limits [--business ID] [--json] | set --file PATCH [--business ID] | migrate --file ORGANIZATION --models MAPPING [--roles-dir DIR]
mosaic inbox [--business <id>] [--json] [--tester]
mosaic decide <decision> <option> [--note <text>] [--yes] [--business <id>]
mosaic tasks [--business <id>] [--json] [--tester]
mosaic agents [--business <id>] [--json] [--tester]
mosaic trail <task|decision> [--business <id>] [--json] [--tester]
mosaic talk <role> <text> [--wait <seconds> | --follow] [--business <id>] [--tester]
mosaic follow [--business <id>] [--tester]
mosaic stop <run>
mosaic launches off|on [--business <id>]
mosaic launches list [--json]
mosaic bus start <business> [--pm]
mosaic bus stop
mosaic bus status [--json]
at usage (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/cli/src/cli.mjs:52:24)
at main (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/cli/src/cli.mjs:405:9)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/cli/tests/project.test.mjs:29:24)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3),
expected: /declare/,
operator: 'rejects',
diff: 'simple'
}
test at packages/cli/tests/project.test.mjs:35:1
✖ project dispatcher reaches the human CLI and pinned copy contains the entire project package (31.15651ms)
AssertionError [ERR_ASSERTION]: The input did not match the regular expression /mosaic project/. Input:
'refused: usage: mosaic launch <seat|seat-dir> [--task TEXT] [--project NAME] [--workspace PATH] [--harness NAME] [--repo PATH] [--config PATH] [-- args...]\n' +
' mosaic seat task <seat> <text> [--by NAME] [--layout repo|fleet|unknown] [--config PATH]\n'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/cli/tests/project.test.mjs:41:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'refused: usage: mosaic launch <seat|seat-dir> [--task TEXT] [--project NAME] [--workspace PATH] [--harness NAME] [--repo PATH] [--config PATH] [-- args...]\n mosaic seat task <seat> <text> [--by NAME] [--layout repo|fleet|unknown] [--config PATH]\n',
expected: /mosaic project/,
operator: 'match',
diff: 'simple'
}
@@ -0,0 +1,207 @@
✖ init creates a checked versioned layout, valid templates and human-authored local history (5.250331ms)
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (0.272115ms)
✖ check reports every bad record, filename mismatch and unknown top-level path (0.234005ms)
✖ one writer commits validated docs, requirements and decisions with the bound agent author (0.243048ms)
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (0.245636ms)
✖ writer refuses human pending edits and remotes instead of absorbing or contacting them (0.212025ms)
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (0.238418ms)
✖ schemas remain package-owned and reject invalid nested data and dates (0.205145ms)
ℹ tests 8
ℹ suites 0
ℹ pass 0
ℹ fail 8
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 62.050421
✖ failing tests:
test at packages/project/tests/project.test.mjs:27:1
✖ init creates a checked versioned layout, valid templates and human-authored local history (5.250331ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:28:37)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.start (node:internal/test_runner/test:1262:17)
at startSubtestAfterBootstrap (node:internal/test_runner/harness:387:17) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:42:1
✖ init honors repo, refuses a non-empty directory and an undeclared project without touching files (0.272115ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:43:29)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async startSubtestAfterBootstrap (node:internal/test_runner/harness:387:3) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:55:1
✖ check reports every bad record, filename mismatch and unknown top-level path (0.234005ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:56:29)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:67:1
✖ one writer commits validated docs, requirements and decisions with the bound agent author (0.243048ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:68:29)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:78:1
✖ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (0.245636ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:79:29)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:91:1
✖ writer refuses human pending edits and remotes instead of absorbing or contacting them (0.212025ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:92:29)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:101:1
✖ links, repo/code overlap, identity mismatch and a busy writer refuse safely (0.238418ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at ready (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:21:10)
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:102:29)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
test at packages/project/tests/project.test.mjs:119:1
✖ schemas remain package-owned and reject invalid nested data and dates (0.205145ms)
AssertionError [ERR_ASSERTION]: Expected values to be strictly equal:
+ actual - expected
+ 'undefined'
- 'function'
at TestContext.<anonymous> (file:///mnt/storage/src/mosaic-stack-rocko-147/packages/project/tests/project.test.mjs:120:10)
at Test.runInAsyncScope (node:async_hooks:226:14)
at Test.run (node:internal/test_runner/test:1402:25)
at Test.processPendingSubtests (node:internal/test_runner/test:974:18)
at Test.postRun (node:internal/test_runner/test:1542:19)
at Test.run (node:internal/test_runner/test:1467:12)
at async Test.processPendingSubtests (node:internal/test_runner/test:974:7) {
generatedMessage: true,
code: 'ERR_ASSERTION',
actual: 'undefined',
expected: 'function',
operator: 'strictEqual',
diff: 'simple'
}
+9
View File
@@ -0,0 +1,9 @@
{
"files": 76,
"findings": [],
"scope": "packet only; no live config, secrets or database read",
"checks": [
"UTF-8 and NUL",
"private-key and credential-value patterns"
]
}
@@ -0,0 +1,51 @@
# Row 147 #1641 — round 2
Base: 277d1fa218ed0aeecd3d105b4de0e405958137ab (row146 landed).
Detached tree: /mnt/storage/src/mosaic-stack-rocko-147-r2.
Sage requested this rebase and notes3/5 in sage-0439 after Filbert's r1 approval
(comment28643). No source commits, live steps, credentials or push.
## Changes from round 1
The round1 patch applies cleanly with git apply --3way. The only shared source
path is packages/cli/src/cli.mjs: row146's CLI behavior is retained, alongside
147's project import, usage and dispatch. No manual conflict resolution or
product-code change was required. All candidate files other than that merged
CLI, the following assertion and the following documentation are byte-identical
to r1. See r1-drift.json.
- Note3: the existing spec write rejection now asserts code
project-spec-human-only. A generic path-regex refusal cannot satisfy it.
- Note5: TOOLS.md says an undeclared project is a project error (exit2), and
distinguishes configuration loading errors (exit3).
- Notes1,2,4 are deferred to Sage's follow-up row as explicitly ruled; no
init-recovery, cross-project overlap or human-author change in this packet.
Layout, schema, writer and safety contract remain r1/DESIGN.md and the package
README. Scope additions remain sage-0400: scripts/mosaic project dispatch and
scripts/stack-copy.sh package inclusion with their tests. Row138 is design-only
until Filbert's approval; row143 is assigned to Researcher.
## Verification
Only the six singly invoked test files authorized by sage-0439 ran here:
| File | Passed | Failed | Skipped |
| --- | ---: | ---: | ---: |
| packages/project/tests/project.test.mjs | 14 | 0 | 0 |
| packages/business/tests/project-repo.test.mjs | 1 | 0 | 0 |
| packages/cli/tests/project.test.mjs | 3 | 0 | 0 |
| packages/cli/tests/stack-copy.test.mjs | 12 | 0 | 0 |
| packages/cli/tests/tester.test.mjs | 7 | 0 | 0 |
| packages/cli/tests/verbs.test.mjs | 7 | 0 | 0 |
44 passed, no failures/skips. Each invocation is node --test FILE; logs are in
this directory. DOCKER_HOST=unix:///nonexistent.sock for the CLI/business runs;
the pure project check did not invoke Docker. No Docker/browser/sandbox used.
No suite, shell suite, mutant batch or gate was run in r2. Researcher holds the
slot; Sage owns the next landing gate. R1's 50/50 mutant kills are historical
r1 evidence, not claimed rerun on this base. Final gate and reviewer result
remain pending. No in-review move until directed.
Clean base+patch reconstruction verifies24/24 hashes (rebuild-manifest.txt).
Queue rev1445 reopens in-progress for r2; owner gate/review move pending.
@@ -0,0 +1 @@
277d1fa218ed0aeecd3d105b4de0e405958137ab
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,9 @@
✔ optional project repo is preserved and must be a normalized absolute path (6.044275ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 54.227699
@@ -0,0 +1,24 @@
6dc17c325ae73bdb02055740477d97a0919725b71636fc2d628ba9ba82f19dad docs/TOOLS.md
7c353b41808a46ac988547c6e0ceeee0727fea94c500afd7a7d0b7e2bf10cbbc packages/business/src/business.mjs
eba8a16fe394299de78e981c106fc13a728da931b84aefe0d039c0c747214c98 packages/business/tests/project-repo.test.mjs
1c4875e684922abc4d3560ef345f62beb501108292bd0071cb773d66a55af6cc packages/cli/src/cli.mjs
c10ef02af609cb5a075dca4b25092fd5b281eaa436b89bade218e0499a13a5fc packages/cli/src/project.mjs
78bf2466b0edf3aa6e4d8e2e8bf293060df1356491eea370866753b4e312bf7d packages/cli/tests/project.test.mjs
d393a46ae99767937a3ab28bbe54a81a849843cbe3f5f7373927a7219a861805 packages/cli/tests/stack-copy.test.mjs
1640dc1c80ff0e78dc00ffdae8954fa3bebdaca5e7a1f8b973aef8af5cd77066 packages/project/README.md
13664e88d0f233bcf18f05e75946e70a1f2a7ba8d099248b73936230cefadd8d packages/project/package.json
925bb03ac99e5845e4bfa20b4561a331f034f88e187db82213df6602a7ceee4b packages/project/schemas/decision.schema.json
f069c012e9660d5d0491a21f98e936b725f6818e1c3136dfec61b3c800bd58de packages/project/schemas/project.schema.json
79a1e7b567af7162bb88ca69861075fc579a858e8aec4e49824ccdc370b690c3 packages/project/schemas/requirement.schema.json
6534d25ac364390d98ba28baa093168de307f0ee0bc013f6fee6f26f6667e838 packages/project/src/git.mjs
e0e9f57d085a052149c8816ff7bba9ef300f9f017d12080d9b0ecc6c293252bf packages/project/src/index.mjs
79632f4c2bc0cbcda26113ad1ff025fb18d2876de334bea4f3a026ae09ae253c packages/project/src/paths.mjs
e49ab5e825f0706da2f3c8dfcf33c1331a38d77ca2d35b03359ee68ea74652c5 packages/project/src/validate.mjs
0b1985a131474a041ea96652a5035224144a51fb50f3d2406013f37596fa98fb packages/project/templates/decision.json
5052534a4b89510d84a9b8815f933bd1c4a8912a91508b6dfe1764dac8c4f14a packages/project/templates/document.md
24b7e3224dba45753e2d6139fcf05d2ed8c29d999752b02a637cfb8489fd9e0a packages/project/templates/north-star.md
14d780b49cbda0c306ca38c1523ccd69d6bf40c73ab744c829e085ef610cd084 packages/project/templates/project.json
682343c67c81ca244b07bf39723c328f80706ba4d957aa45601b2a64ceeeb215 packages/project/templates/requirement.json
fd22355dc655f1cf4c0b1dcf9847885736014508b0505e7b12de9028f60a0fe0 packages/project/tests/project.test.mjs
b3845214d21cc5ac20c2ab268c4fff1cc88d48c3695f2da29207467eeb7982db scripts/mosaic
ef037cfa4b0df63aec247e412212c627a3aa973b22766b673265f36726c88b1f scripts/stack-copy.sh
@@ -0,0 +1,11 @@
✔ project init/check use declared business repo and never contact the bus (102.418876ms)
✔ project commands validate args and refuse undeclared projects and agent init (26.948466ms)
✔ project dispatcher reaches the human CLI (75.90795ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 296.924498
@@ -0,0 +1,13 @@
3646598c0d810c20ed7d9261360980c011185b951b3546c53c2d53780c026dda BUILD.md
df6b11480b392ed26ff028ae8e5dfbc74e011f486738e306c95801f0f091f1f4 base.txt
63b3c00ae8fb2f5ba8e0762d8fb25b2be9b7d8ad9ed3f30fe791db2f6831300c build.patch
208a3c6e1890c308f97c11d0e9a92a3f7eba705622d5ae58f895a28ab0f7b4d4 business.log
0aaabc8ab1b5e36eb5f64eb93e9cb2d02b5444736e48079c27b9a01a7413870d candidate-manifest.sha256
45b3ed3202256db857ef180d3c8e603a17c476f6ad37babb00e3cfb9bbcb4fda cli-project.log
374f311951da82bf7dcc15bbc8b216532cb9679754efdc1be45be3e6c3fa078c project.log
526abe989e422344dc287176e695abd548a63e12ca28e437b13c0847e7b17e6e r1-drift.json
a49cdf2bd32782f35db68d8879f05356ffe131442d8e451982cda947f2e7c6d8 rebuild-manifest.txt
b11b66c93d7ebf1308362da09c1c168b77b7c01881d0c3b157f91be12c91fe9b scan.json
461c028e96486daf5628a9863812c86d7cd300606ac9365bd560d112fc3f9bbc stack-copy.log
39920a4ea9a62cfd4b05f0ee53d1c1f4860766b1b203910f379b23819966d7c0 tester.log
3ad7b94486d317e8a0b057225e3df5444f1fec753b8ccd0002b7f5a845d370fd verbs.log
@@ -0,0 +1,22 @@
✔ init creates a checked versioned layout, valid templates and human-authored local history (24.047135ms)
✔ init honors repo, refuses a non-empty directory and an undeclared project without touching files (13.091166ms)
✔ check reports every bad record, filename mismatch and unknown top-level path (12.494284ms)
✔ one writer commits validated docs, requirements and decisions with the bound agent author (60.980234ms)
✔ writer refuses spec paths, bad schemas, mismatched IDs and invalid actor metadata before changing history (15.840245ms)
✔ writer refuses human pending edits and remotes instead of absorbing or contacting them (18.895905ms)
✔ links, repo/code overlap, identity mismatch and a busy writer refuse safely (17.395944ms)
✔ schemas remain package-owned and reject invalid nested data and dates (0.260256ms)
✔ git commit failure restores only the attempted record and leaves human history unchanged (33.155248ms)
✔ git hooks and ambient git identity cannot alter the record writer or execute outside actions (23.338193ms)
✔ project-local schemas cannot weaken checks; invalid UTF-8 and linked git directories refuse (13.262103ms)
✔ schema constraints and layout omissions are reported independently (12.442534ms)
✔ unsupported schema keywords, malformed contexts, ignored local config and nonempty markers refuse (17.514169ms)
✔ a linked git directory is refused before a writer lock can touch its target (30.41393ms)
ℹ tests 14
ℹ suites 0
ℹ pass 14
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 342.254618
@@ -0,0 +1,8 @@
{
"changed_from_r1": [
"docs/TOOLS.md",
"packages/cli/src/cli.mjs",
"packages/project/tests/project.test.mjs"
],
"product_logic_changed": false
}
@@ -0,0 +1,24 @@
docs/TOOLS.md: OK
packages/business/src/business.mjs: OK
packages/business/tests/project-repo.test.mjs: OK
packages/cli/src/cli.mjs: OK
packages/cli/src/project.mjs: OK
packages/cli/tests/project.test.mjs: OK
packages/cli/tests/stack-copy.test.mjs: OK
packages/project/README.md: OK
packages/project/package.json: OK
packages/project/schemas/decision.schema.json: OK
packages/project/schemas/project.schema.json: OK
packages/project/schemas/requirement.schema.json: OK
packages/project/src/git.mjs: OK
packages/project/src/index.mjs: OK
packages/project/src/paths.mjs: OK
packages/project/src/validate.mjs: OK
packages/project/templates/decision.json: OK
packages/project/templates/document.md: OK
packages/project/templates/north-star.md: OK
packages/project/templates/project.json: OK
packages/project/templates/requirement.json: OK
packages/project/tests/project.test.mjs: OK
scripts/mosaic: OK
scripts/stack-copy.sh: OK
@@ -0,0 +1,5 @@
{
"files": 12,
"findings": [],
"scope": "packet-only UTF-8/NUL and private-key/credential-value patterns; no live reads"
}
@@ -0,0 +1,20 @@
✔ shared copy: npm ci, pushed reachability, readonly/existing copy, webui delegation (387.870963ms)
✔ wrapper preserves Q81 lease and marker, rejects foreign/symlink; check uses effective roots (388.952653ms)
✔ bus unit copy/pm pins, install refuses all busy states and failed reads, drop-in refusal (380.86482ms)
✔ missing package manifest refuses before npm; npm failure removes the unpublished temp copy (263.24709ms)
✔ real pinned install loads bus and Console; same-copy mosaic talk passes proof, other trees refuse (3155.276243ms)
✔ bus status reads effective copy/pm/drop-ins without writes; check refuses an overridden ExecStart (470.352131ms)
✔ drop-ins in either override field and malformed metadata refuse; uninstall also checks --no-reload (166.940571ms)
✔ install never shows a template name on systemd 261; template drop-ins still refuse (165.212537ms)
✔ unlisted instance drop-in is found in another unit lookup directory; path discovery errors refuse (153.124568ms)
✔ inherited mosaic-.service.d override refuses without changing the unit (174.56185ms)
✔ inherited service.d override refuses without changing the unit (172.560212ms)
✔ inherited drop-in unreadable directory or file refuses before writing (153.0437ms)
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 6092.921886
@@ -0,0 +1,15 @@
✔ talk --tester sends a [mos test] message as tester from inside an agent and prints the role's reply (17.428389ms)
✔ talk --tester refuses text without the [mos test] prefix before any call (8.65638ms)
✔ the read verbs take --tester inside an agent, and the trail shows the tester as the sender (13.997674ms)
✔ decide, stop and launches take no --tester (8.818342ms)
✔ the tester transport runs tester-cli.mjs, and the tester's refusals exit 3 (0.324989ms)
✔ with no stand-in transport, --tester runs tester-cli.mjs on the data root's socket (0.441021ms)
✔ talk --tester to a stopped role says nobody is told to launch it (8.059511ms)
ℹ tests 7
ℹ suites 0
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 152.010822
@@ -0,0 +1,15 @@
✔ talk sends a REQUEST, prints and reads everything that arrives, and stops at the reply (45.280416ms)
✔ talk --wait 0 only sends; no reply within --wait exits 1 and says where it will show (1015.655977ms)
✔ a late reply the Console has listed still reaches the next talk (2022.999428ms)
✔ talk says when the role isn't running, whether launch.by was told, and how to start launch.by (26.471431ms)
✔ talk, stop and launches off/on refuse inside an agent run; bad arguments are usage errors (9.238363ms)
✔ launches off and on go to the broker and change the business's launch state (10.654816ms)
✔ launches list reads sessions.json and marks a stale entry; stop reports it and refuses a non-runner (11.298555ms)
ℹ tests 7
ℹ suites 0
ℹ pass 7
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 3239.859226
+68
View File
@@ -0,0 +1,68 @@
# Row 147 #1641 — round 2
Base: 02ee7f640321f44e9408e7e2055c9372fbbb7eb8 (row142 landed, includes row146).
Detached tree: /mnt/storage/src/mosaic-stack-rocko-147-r2b.
Sage requested this rebase and notes3/5 in sage-0439 after Filbert's r1 approval
(comment28643). No source commits, live steps, credentials or push.
## Changes from round 1
The round1 patch applies cleanly with git apply --3way. The only shared source
path is packages/cli/src/cli.mjs: row146's CLI behavior is retained, alongside
147's project import, usage and dispatch. No manual conflict resolution or
product-code change was required. All candidate files other than that merged
CLI, the following assertion and the following documentation are byte-identical
to r1. See r1-drift.json.
- Note3: the existing spec write rejection now asserts code
project-spec-human-only. A generic path-regex refusal cannot satisfy it.
- Note5: TOOLS.md says an undeclared project is a project error (exit2), and
distinguishes configuration loading errors (exit3).
- Notes1,2,4 are deferred to Sage's follow-up row as explicitly ruled; no
init-recovery, cross-project overlap or human-author change in this packet.
Layout, schema, writer and safety contract remain r1/DESIGN.md and the package
README. Scope additions remain sage-0400: scripts/mosaic project dispatch and
scripts/stack-copy.sh package inclusion with their tests. Row138 is design-only
until Filbert's approval; row143 is assigned to Researcher.
## Verification
Only the six singly invoked test files authorized by sage-0439 ran here:
| File | Passed | Failed | Skipped |
| --- | ---: | ---: | ---: |
| packages/project/tests/project.test.mjs | 14 | 0 | 0 |
| packages/business/tests/project-repo.test.mjs | 1 | 0 | 0 |
| packages/cli/tests/project.test.mjs | 3 | 0 | 0 |
| packages/cli/tests/stack-copy.test.mjs | 12 | 0 | 0 |
| packages/cli/tests/tester.test.mjs | 7 | 0 | 0 |
| packages/cli/tests/verbs.test.mjs | 7 | 0 | 0 |
44 passed, no failures/skips. Each invocation is node --test FILE; logs are in
this directory. DOCKER_HOST=unix:///nonexistent.sock for the CLI/business runs;
the pure project check did not invoke Docker. No Docker/browser/sandbox used.
No suite, shell suite, mutant batch or gate was run in r2. Researcher holds the
slot; Sage owns the next landing gate. R1's 50/50 mutant kills are historical
r1 evidence, not claimed rerun on this base. Final gate and reviewer result
remain pending. No in-review move until directed.
Clean base+patch reconstruction verifies24/24 hashes (rebuild-manifest.txt).
Queue rev1445 reopens in-progress for r2; owner gate/review move pending.
## Same-round refresh after row142 — sage-0450
Supersedes r2's earlier base277d1fa21 and its focused logs/manifests. The previous
packet is preserved separately at ../r2-before-142/. R2 has not gone in review.
The existing patch applied cleanly to02ee7f640 with no conflict resolution or
additional source edit. cli.mjs retains row142's matching-reply-only filtering,
read acknowledgement, corrected timeout text and follow behavior; 147 adds only
its project import, usage and dispatcher in separate locations. TOOLS.md keeps
row142's talk/inbox/follow paragraph near line265 unchanged; 147's local project
records paragraph is appended near the end, including the r1 note5 correction.
All six single files were rerun singly on02ee7f640, including verbs.test.mjs
exactly as row142 left it: project14, business1, CLIproject3, copy12, tester7,
verbs7, total44 passed, no failures/skips. DOCKER_HOST=unix:///nonexistent.sock
for all six. No suite, gate, mutants, browser, sandbox or Docker run. The slot
remains with the previously assigned holder. Sage's landing gate is pending.
@@ -0,0 +1,9 @@
{
"base": "02ee7f640321f44e9408e7e2055c9372fbbb7eb8",
"changed_from_previous_r2": [
"docs/TOOLS.md",
"packages/cli/src/cli.mjs"
],
"new_product_edits": false,
"verbs_test_sha256": "35ec58396a293d077974d4a561005b25889ad97d9a1cdd8dee56001aa89236db"
}
+1
View File
@@ -0,0 +1 @@
02ee7f640321f44e9408e7e2055c9372fbbb7eb8
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,9 @@
✔ optional project repo is preserved and must be a normalized absolute path (6.082445ms)
ℹ tests 1
ℹ suites 0
ℹ pass 1
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 60.169367
@@ -0,0 +1,24 @@
234e8003cc2e31648d09511e8c4c20610a7bc2fddcf5f22168ecca6698105cd2 docs/TOOLS.md
7c353b41808a46ac988547c6e0ceeee0727fea94c500afd7a7d0b7e2bf10cbbc packages/business/src/business.mjs
eba8a16fe394299de78e981c106fc13a728da931b84aefe0d039c0c747214c98 packages/business/tests/project-repo.test.mjs
2d801112ac5f760976b8e2775fc3a089f56f06ffb2e4c14e3971bcb3e5e53d56 packages/cli/src/cli.mjs
c10ef02af609cb5a075dca4b25092fd5b281eaa436b89bade218e0499a13a5fc packages/cli/src/project.mjs
78bf2466b0edf3aa6e4d8e2e8bf293060df1356491eea370866753b4e312bf7d packages/cli/tests/project.test.mjs
d393a46ae99767937a3ab28bbe54a81a849843cbe3f5f7373927a7219a861805 packages/cli/tests/stack-copy.test.mjs
1640dc1c80ff0e78dc00ffdae8954fa3bebdaca5e7a1f8b973aef8af5cd77066 packages/project/README.md
13664e88d0f233bcf18f05e75946e70a1f2a7ba8d099248b73936230cefadd8d packages/project/package.json
925bb03ac99e5845e4bfa20b4561a331f034f88e187db82213df6602a7ceee4b packages/project/schemas/decision.schema.json
f069c012e9660d5d0491a21f98e936b725f6818e1c3136dfec61b3c800bd58de packages/project/schemas/project.schema.json
79a1e7b567af7162bb88ca69861075fc579a858e8aec4e49824ccdc370b690c3 packages/project/schemas/requirement.schema.json
6534d25ac364390d98ba28baa093168de307f0ee0bc013f6fee6f26f6667e838 packages/project/src/git.mjs
e0e9f57d085a052149c8816ff7bba9ef300f9f017d12080d9b0ecc6c293252bf packages/project/src/index.mjs
79632f4c2bc0cbcda26113ad1ff025fb18d2876de334bea4f3a026ae09ae253c packages/project/src/paths.mjs
e49ab5e825f0706da2f3c8dfcf33c1331a38d77ca2d35b03359ee68ea74652c5 packages/project/src/validate.mjs
0b1985a131474a041ea96652a5035224144a51fb50f3d2406013f37596fa98fb packages/project/templates/decision.json
5052534a4b89510d84a9b8815f933bd1c4a8912a91508b6dfe1764dac8c4f14a packages/project/templates/document.md
24b7e3224dba45753e2d6139fcf05d2ed8c29d999752b02a637cfb8489fd9e0a packages/project/templates/north-star.md
14d780b49cbda0c306ca38c1523ccd69d6bf40c73ab744c829e085ef610cd084 packages/project/templates/project.json
682343c67c81ca244b07bf39723c328f80706ba4d957aa45601b2a64ceeeb215 packages/project/templates/requirement.json
fd22355dc655f1cf4c0b1dcf9847885736014508b0505e7b12de9028f60a0fe0 packages/project/tests/project.test.mjs
b3845214d21cc5ac20c2ab268c4fff1cc88d48c3695f2da29207467eeb7982db scripts/mosaic
ef037cfa4b0df63aec247e412212c627a3aa973b22766b673265f36726c88b1f scripts/stack-copy.sh
@@ -0,0 +1,11 @@
✔ project init/check use declared business repo and never contact the bus (106.412404ms)
✔ project commands validate args and refuse undeclared projects and agent init (26.275232ms)
✔ project dispatcher reaches the human CLI (79.279467ms)
ℹ tests 3
ℹ suites 0
ℹ pass 3
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 305.670321
@@ -0,0 +1,14 @@
505e2b96876bd42fdbe451d8debb1f6d180ea864432d569349a8485abf521649 BUILD.md
f55055ce19c9c57b5983bd789d0dc63edb8bcdc9ccb25c92d7b097eaf5d9ee99 base-refresh.json
0e58b167c3a7f9695df523a89b33025be10159ff7d08ddda6f12f336704f98c0 base.txt
ccfdf3c0495501869fa73aad16b66ec34bcd8050a28ddfa648cb2d444ac62124 build.patch
f9a765306634639e295438e526b4bdd9b428f77864865cabd7ffc6b3d09a5bfe business.log
7a585aa9606863a0d44a26094b585160914e3d8fd5f13436b56470cd69e6d867 candidate-manifest.sha256
a75d447b179164ea397d1213e79e187a6164f1e191b55f6a94e8036e04fee2e9 cli-project.log
57a2b974ed8594bd2a0fd1de38cc8c8d1becce929ee9b6a25116da940917678b project.log
526abe989e422344dc287176e695abd548a63e12ca28e437b13c0847e7b17e6e r1-drift.json
a49cdf2bd32782f35db68d8879f05356ffe131442d8e451982cda947f2e7c6d8 rebuild-manifest.txt
9306f85832eb21da73b5992d8c71a5e83027caed5b81e32cad5eac5f9d98ebb3 scan.json
8d27a55dc5a644667c7ac6003f65554bf4fd0bf40deb38c85c3168d946d89bc0 stack-copy.log
af8dccebeeb67ec85383f93945fa7a7d3408661c2d980e1549993c4b16549e56 tester.log
5ed938f5e387286198cc69b2aa021fee063b8668eda21f3e14a2fc40a5c02f19 verbs.log

Some files were not shown because too many files have changed in this diff Show More