Candidate 1126314bd522de838aad03689bed41f6b12a33c2d7f30b2eff1b38653f559ae0, 4 files on48b893871. The first gate stopped at script-queue: the pre-A2 fixture check pinned the old header comment. The check now skips comment lines (brief amended in06e964026). Second gate: 24 suites, 0 failed. Co-Authored-By: Claude Opus 5.5 <[email protected]>
101 lines
6.6 KiB
Plaintext
101 lines
6.6 KiB
Plaintext
✔ the role file loads and resolves through loadBusiness (8.249303ms)
|
||
✔ the shipped file is exactly the approved list (1.076052ms)
|
||
✔ the assistant's authority is message.send within role and nothing else (2.841432ms)
|
||
✔ the assistant talks to the user and the chief of staff only, and no other shipped role is limited (0.972263ms)
|
||
✔ a business grant through limits does not widen the role (2.293792ms)
|
||
✔ a launch block whose by is the assistant is refused (2.417502ms)
|
||
✔ the instance takes no credential references and no tracker (3.64661ms)
|
||
✔ the contract passes work to the chief of staff and directs no one (0.787815ms)
|
||
✔ config directory and file path follow MOSAIC_CONFIG (2.230454ms)
|
||
✔ the fixture business validates and comes back frozen (7.303144ms)
|
||
✔ two instances may share a definition (2.901772ms)
|
||
✔ top-level refusals (6.590059ms)
|
||
✔ arbiters and projects (11.643519ms)
|
||
✔ role instances (4.154108ms)
|
||
✔ Vikunja bots (11.86028ms)
|
||
✔ a role without Vikunja takes no tracker block (3.337853ms)
|
||
✔ credential references match the definition's services (4.147753ms)
|
||
✔ launch (12.98169ms)
|
||
✔ loadBusiness: file checks (2.570057ms)
|
||
✔ loadBusiness: not a regular file (44.026396ms)
|
||
✔ loading writes nothing (1.242314ms)
|
||
✔ names that are Object.prototype properties don't count as declared (3.106382ms)
|
||
✔ the shipped example refuses as written and validates once filled in (1.028843ms)
|
||
✔ the role file loads and resolves through loadBusiness (11.190626ms)
|
||
✔ the shipped file is exactly the approved list (0.371752ms)
|
||
✔ the resolved record matches the approved list, so a widened file fails (3.305857ms)
|
||
✔ the chief of staff holds role.launch, message.send, role.end and organization.change; every other action is gated (2.325708ms)
|
||
✔ the pm does not hold role.launch (2.554339ms)
|
||
✔ a business grant of a gated action through limits does not widen the role (2.335106ms)
|
||
✔ a limit that drops role.launch leaves the chief of staff with no launch block (2.045776ms)
|
||
✔ a launch block whose by is the pm instance is refused (2.021139ms)
|
||
✔ the contract names no duty to talk to the human and the pm contract no launch (0.681828ms)
|
||
✔ the instance takes no credential references and no tracker (2.903702ms)
|
||
✔ usage errors exit 4 (311.011509ms)
|
||
✔ validate: a good business exits 0 and prints instance digests (71.559247ms)
|
||
✔ validate: project files (330.205583ms)
|
||
✔ validate: missing files and a broken system config (261.861821ms)
|
||
✔ validate: credential reference problems exit 2 and name each one (150.246685ms)
|
||
✔ validate: a token file inside the repository is refused (115.509175ms)
|
||
✔ validate: role definitions come from MOSAIC_ROLES_DIR (295.298749ms)
|
||
✔ resolve: prints one instance's record (464.132936ms)
|
||
✔ resolve: refusals (591.155305ms)
|
||
✔ parse: exactly one of file or env, plus the service's date (3.963491ms)
|
||
✔ check: a good file has no problems (1.18861ms)
|
||
✔ check never opens the file: a write-only token passes (0.53341ms)
|
||
✔ check: file problems (1.288577ms)
|
||
✔ check: token files can't live in the repository or dataRoot, even through a linked directory (1.294226ms)
|
||
✔ check: dates and environment references (0.619647ms)
|
||
✔ REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse (25.388797ms)
|
||
✔ REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment (1.314793ms)
|
||
✔ REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt (38.822428ms)
|
||
✔ REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses (20.676777ms)
|
||
✔ REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent (3.349368ms)
|
||
✔ REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor (20.664866ms)
|
||
✔ REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts (1.868796ms)
|
||
✔ REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes (9.047791ms)
|
||
✔ REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names (15.563917ms)
|
||
✔ REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names (37.260247ms)
|
||
✔ REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too (5.011955ms)
|
||
✔ REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing (1.844561ms)
|
||
✔ path and load (3.19451ms)
|
||
✔ refusals (3.012456ms)
|
||
✔ systemVars flattens the validated config (2.903554ms)
|
||
✔ precedence: system, business, project, project role, agent (7.791127ms)
|
||
✔ limits narrow the definition and never widen it (2.992751ms)
|
||
✔ role.launch stays within-role only for the instance the launch block names (8.023441ms)
|
||
✔ limits.authority without role.launch leaves the launcher with no launch block (2.830167ms)
|
||
✔ limits.authority narrows cross-role actions too (1.227966ms)
|
||
✔ classify (1.297062ms)
|
||
✔ the record carries what the broker and launcher need (1.343695ms)
|
||
✔ digest: key order doesn't matter, any value change does (7.081219ms)
|
||
✔ refusals (2.434611ms)
|
||
✔ the four shipped version 2 roles load (4.622523ms)
|
||
✔ shipped role scopes match addendum B section 2 and the SR runbook (1.687494ms)
|
||
✔ shipped authority follows the note's table (1.026534ms)
|
||
✔ every role file in roles/ loads through the validator, and a v2 contract exists (0.874202ms)
|
||
✔ version 1 files keep loading with no authority (1.077054ms)
|
||
✔ the conductor policy isn't a role (0.248389ms)
|
||
✔ a missing role file is exit 4, a symbolic link too (0.546342ms)
|
||
✔ version 2 refusals (2.094139ms)
|
||
✔ authority: closed vocabulary, no gated-only action, no overlap (3.499953ms)
|
||
✔ messaging: optional, role definitions and human, never the tester (2.805507ms)
|
||
✔ credentials: Gitea scopes (1.467193ms)
|
||
✔ credentials: Vikunja scopes are a group-to-verbs map from the grantable list (1.546314ms)
|
||
✔ credentials: services (3.913246ms)
|
||
✔ contract: a non-empty regular Markdown file beside the role file (0.866764ms)
|
||
✔ every key names known layers and a merge rule (1.292624ms)
|
||
✔ unknown keys and wrong layers refuse (1.053135ms)
|
||
✔ types (2.782478ms)
|
||
✔ merge: defaults, then the most specific layer wins (0.442491ms)
|
||
✔ merge: limits only narrow, and provenance lists each source (0.519525ms)
|
||
✔ merge doesn't change its inputs (0.208357ms)
|
||
ℹ tests 92
|
||
ℹ suites 0
|
||
ℹ pass 92
|
||
ℹ fail 0
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 2703.426842
|