Candidate manifest sha256 710d50866e77055b7231a53e3601bd2bab7686b722160f81ddda030875f67e9b, 30 files. Targeted gate green, 77 of 77 mutants killed, repro DIGESTS_OK. Co-Authored-By: Claude Opus 5.5 <[email protected]>
104 lines
6.9 KiB
Plaintext
104 lines
6.9 KiB
Plaintext
✔ the role file loads and resolves through loadBusiness (7.210529ms)
|
||
✔ the shipped file is exactly the approved list (0.997354ms)
|
||
✔ the assistant's authority is message.send within role and nothing else (2.797165ms)
|
||
✔ the assistant talks to the user and the chief of staff only, and no other shipped role is limited (0.921494ms)
|
||
✔ a business grant through limits does not widen the role (2.020977ms)
|
||
✔ a launch block whose by is the assistant is refused (2.113662ms)
|
||
✔ the instance takes no credential references and no tracker (2.995707ms)
|
||
✔ an arbiter whose role definition declares messaging lists is refused, for each kind (12.354981ms)
|
||
✔ an arbiter without messaging lists is accepted beside the limited assistant (1.794345ms)
|
||
✔ the contract passes work to the chief of staff and directs no one (0.570745ms)
|
||
✔ config directory and file path follow MOSAIC_CONFIG (1.382322ms)
|
||
✔ the fixture business validates and comes back frozen (4.321231ms)
|
||
✔ two instances may share a definition (1.655369ms)
|
||
✔ top-level refusals (5.877603ms)
|
||
✔ arbiters and projects (8.08437ms)
|
||
✔ role instances (4.11319ms)
|
||
✔ Vikunja bots (15.626329ms)
|
||
✔ a role without Vikunja takes no tracker block (2.159346ms)
|
||
✔ credential references match the definition's services (2.905961ms)
|
||
✔ launch (7.855484ms)
|
||
✔ REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses (4.181426ms)
|
||
✔ loadBusiness: file checks (2.088052ms)
|
||
✔ loadBusiness: not a regular file (35.612542ms)
|
||
✔ loading writes nothing (0.950226ms)
|
||
✔ names that are Object.prototype properties don't count as declared (2.475049ms)
|
||
✔ the shipped example refuses as written and validates once filled in (1.009418ms)
|
||
✔ the role file loads and resolves through loadBusiness (6.957607ms)
|
||
✔ the shipped file is exactly the approved list (0.284368ms)
|
||
✔ the resolved record matches the approved list, so a widened file fails (2.156438ms)
|
||
✔ the chief of staff holds role.launch, message.send, role.end and organization.change; every other action is gated (1.876737ms)
|
||
✔ the pm does not hold role.launch (1.918297ms)
|
||
✔ a business grant of a gated action through limits does not widen the role (2.686195ms)
|
||
✔ a limit that drops role.launch leaves the chief of staff with no launch block (1.652263ms)
|
||
✔ a launch block whose by is the pm instance is refused (2.027121ms)
|
||
✔ the contract names no duty to talk to the human and the pm contract no launch (0.452426ms)
|
||
✔ the instance takes no credential references and no tracker (2.826253ms)
|
||
✔ usage errors exit 4 (284.867299ms)
|
||
✔ validate: a good business exits 0 and prints instance digests (66.864231ms)
|
||
✔ validate: project files (311.381354ms)
|
||
✔ validate: missing files and a broken system config (234.781758ms)
|
||
✔ validate: credential reference problems exit 2 and name each one (66.389679ms)
|
||
✔ validate: a token file inside the repository is refused (65.189828ms)
|
||
✔ validate: role definitions come from MOSAIC_ROLES_DIR (184.180347ms)
|
||
✔ resolve: prints one instance's record (255.064763ms)
|
||
✔ resolve: refusals (362.16787ms)
|
||
✔ parse: exactly one of file or env, plus the service's date (3.06151ms)
|
||
✔ check: a good file has no problems (0.972159ms)
|
||
✔ check never opens the file: a write-only token passes (0.429383ms)
|
||
✔ check: file problems (1.119737ms)
|
||
✔ check: token files can't live in the repository or dataRoot, even through a linked directory (1.126183ms)
|
||
✔ check: dates and environment references (0.480068ms)
|
||
✔ REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse (14.872413ms)
|
||
✔ REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment (0.810319ms)
|
||
✔ REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt (197.943192ms)
|
||
✔ REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses (167.556078ms)
|
||
✔ REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent (2.869435ms)
|
||
✔ REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor (99.278667ms)
|
||
✔ REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts (1.786284ms)
|
||
✔ REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes (64.919925ms)
|
||
✔ REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names (15.300205ms)
|
||
✔ REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names (255.301675ms)
|
||
✔ REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too (38.841947ms)
|
||
✔ REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing (1.438786ms)
|
||
✔ path and load (2.683038ms)
|
||
✔ refusals (1.886366ms)
|
||
✔ systemVars flattens the validated config (2.224648ms)
|
||
✔ precedence: system, business, project, project role, agent (5.982927ms)
|
||
✔ limits narrow the definition and never widen it (10.068349ms)
|
||
✔ role.launch stays within-role only for the instance the launch block names (5.439835ms)
|
||
✔ limits.authority without role.launch leaves the launcher with no launch block (2.748722ms)
|
||
✔ limits.authority narrows cross-role actions too (1.091267ms)
|
||
✔ classify (1.031402ms)
|
||
✔ the record carries what the broker and launcher need (1.095178ms)
|
||
✔ digest: key order doesn't matter, any value change does (7.298075ms)
|
||
✔ refusals (1.731446ms)
|
||
✔ the four shipped version 2 roles load (4.159984ms)
|
||
✔ shipped role scopes match addendum B section 2 and the SR runbook (1.423669ms)
|
||
✔ shipped authority follows the note's table (1.017526ms)
|
||
✔ every role file in roles/ loads through the validator, and a v2 contract exists (1.081695ms)
|
||
✔ version 1 files keep loading with no authority (6.638739ms)
|
||
✔ the conductor policy isn't a role (0.287336ms)
|
||
✔ a missing role file is exit 4, a symbolic link too (0.357471ms)
|
||
✔ version 2 refusals (1.168789ms)
|
||
✔ authority: closed vocabulary, no gated-only action, no overlap (1.854533ms)
|
||
✔ messaging: optional, role definitions and human, never the tester (2.220448ms)
|
||
✔ credentials: Gitea scopes (1.161654ms)
|
||
✔ credentials: Vikunja scopes are a group-to-verbs map from the grantable list (1.016553ms)
|
||
✔ credentials: services (0.425301ms)
|
||
✔ contract: a non-empty regular Markdown file beside the role file (0.571769ms)
|
||
✔ every key names known layers and a merge rule (1.26062ms)
|
||
✔ unknown keys and wrong layers refuse (0.915488ms)
|
||
✔ types (2.612126ms)
|
||
✔ merge: defaults, then the most specific layer wins (0.384919ms)
|
||
✔ merge: limits only narrow, and provenance lists each source (0.465692ms)
|
||
✔ merge doesn't change its inputs (0.207851ms)
|
||
ℹ tests 95
|
||
ℹ suites 0
|
||
ℹ pass 95
|
||
ℹ fail 0
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 1907.782693
|