Files
jason.woltje 6bad02612a lead: commit dewey's untracked evidence (721 files: queue-124-review queue-143 queue-149 queue-165-review queue-170 queue-175 queue-177 queue-184 queue-191)
Unclaimed files left in the canonical checkout. Inventory: canonical-cleanup-inventory.md (commit-as-evidence groups). detect-secrets scan clean on 2026-11-02: hits are sha256 pins, git object ids, test sentinels already in tracked tests and unit-file lines.
2026-11-02 15:05:14 -06:00

128 lines
9.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
✔ the role file loads and resolves through loadBusiness (8.326097ms)
✔ the shipped file is exactly the approved list (0.959494ms)
✔ the assistant's authority is message.send and record.write within role (10.603518ms)
✔ the assistant talks to the user and the chief of staff only, and no other shipped role is limited (1.533404ms)
✔ a business grant through limits does not widen the role (3.116108ms)
✔ a launch block whose by is the assistant is refused (2.739398ms)
✔ the instance takes no credential references and no tracker (3.971404ms)
✔ an arbiter whose role definition declares messaging lists is refused, for each kind (5.346349ms)
✔ an arbiter without messaging lists is accepted beside the limited assistant (2.650503ms)
✔ the contract passes work to the chief of staff and directs no one (0.841714ms)
✔ REQ-HARN-2: the assistant holds the web grant, and no other role file does (3.488769ms)
✔ config directory and file path follow MOSAIC_CONFIG (3.775529ms)
✔ the fixture business validates and comes back frozen (15.584732ms)
✔ two instances may share a definition (2.834026ms)
✔ top-level refusals (8.358692ms)
✔ arbiters and projects (13.421416ms)
✔ role instances (5.299173ms)
✔ Vikunja bots (9.526108ms)
✔ a role without Vikunja takes no tracker block (3.239351ms)
✔ credential references match the definition's services (3.317882ms)
✔ launch (10.630828ms)
✔ REQ-THREAD-2 REQ-LAUNCH-1 launch.threadIdleSeconds: absent is the default, a positive integer is used, anything else refuses (4.125246ms)
✔ loadBusiness: file checks (1.858615ms)
✔ loadBusiness: not a regular file (36.740525ms)
✔ loading writes nothing (0.970095ms)
✔ names that are Object.prototype properties don't count as declared (2.563406ms)
✔ the shipped example refuses as written and validates once filled in (2.695018ms)
✔ the role file loads and resolves through loadBusiness (9.571584ms)
✔ the shipped file is exactly the approved list (0.30037ms)
✔ the resolved record matches the approved list, so a widened file fails (3.093786ms)
✔ the chief of staff holds role.launch, message.send, role.end, organization.change, record.write and instance.name; every other action is gated (2.079047ms)
✔ the pm does not hold role.launch (2.778003ms)
✔ a business grant of a gated action through limits does not widen the role (2.315457ms)
✔ a limit that drops role.launch leaves the chief of staff with no launch block (2.590739ms)
✔ a launch block whose by is the pm instance is refused (2.224669ms)
✔ the contract names no duty to talk to the human and the pm contract no launch (0.471465ms)
✔ the instance takes no credential references and no tracker (3.291183ms)
✔ usage errors exit 4 (301.935961ms)
✔ validate: a good business exits 0 and prints instance digests (62.469018ms)
✔ validate: project files (311.219517ms)
✔ validate: missing files and a broken system config (221.96377ms)
✔ validate: credential reference problems exit 2 and name each one (68.880534ms)
✔ validate: a token file inside the repository is refused (63.455937ms)
✔ validate: role definitions come from MOSAIC_ROLES_DIR (178.259273ms)
✔ resolve: prints one instance's record (248.279652ms)
✔ resolve: refusals (357.618801ms)
✔ parse: exactly one of file or env, plus the service's date (3.458971ms)
✔ check: a good file has no problems (1.574691ms)
✔ check never opens the file: a write-only token passes (0.472782ms)
✔ check: file problems (1.343382ms)
✔ check: token files can't live in the repository or dataRoot, even through a linked directory (1.115693ms)
✔ check: dates and environment references (0.508042ms)
✔ each definition loads, with a contract file, and is exactly the approved list (4.105607ms)
✔ an organization file that declares them passes, and each resolves to least privilege (7.091474ms)
✔ the chief of staff launches each one; no other role does (3.864558ms)
✔ a C-suite role can't be made the launcher: launch.by must hold role.launch (2.813368ms)
✔ limits can narrow a C-suite role but never widen it (1.971892ms)
✔ any unknown key, tool, action or version in a role file is refused (1.469537ms)
✔ REQ-WAIT-1: GATED_ONLY is exactly the hard waits; the new actions are in the vocabulary (1.597339ms)
✔ REQ-WAIT-3: every action is routed or a hard wait, never both, and the routed list names only actions (2.252186ms)
✔ REQ-WAIT-3: instance.name is routed under REQ-MSG-2 (1.5), not a hard wait (row 141, sage-0589) (0.253233ms)
✔ REQ-WAIT-2: a role listing a hard wait at either class is refused; the actions that left can be granted (5.94017ms)
✔ REQ-LIMIT-1 schema: every scope unset or zero, adjustable above four, bad values and unknown models refuse (27.282969ms)
✔ REQ-LIMIT-1 counts each exact scope at/over limit, unlimited and old tuple after model reassignment (1.324295ms)
✔ REQ-ROLE-3 writer: atomic validated revision, immutable previous bytes and authenticated actor/old/new receipt (253.793682ms)
✔ REQ-ROLE-3 writer: pre-rename fault leaves old file, post-rename recovery records commit, conflicting recovery refuses (211.651594ms)
✔ REQ-LIMIT-1 / decision145 migration prints only, preserves values, rejects ambiguity, and is idempotent (3.112997ms)
✔ REQ-LIMIT-1 shared settings validates the complete proposed selection and logs exact actor (193.019157ms)
✔ REQ-LIMIT-1 provider is table data: another provider routes separately and aliases share exact counts (1.741781ms)
✔ REQ-ROLE-3 refuses live writer locks, symlink targets and uncertain recovery without changing bytes (111.151507ms)
✔ REQ-PLUG-1 schema: plugins is optional, names known kinds and checked module names (16.602271ms)
✔ REQ-PLUG-1 REQ-ROLE-3 the setter writes plugins through the organization writer and logs old and new names (293.184913ms)
✔ vikunja:19/309 a patch changes only the kinds it names; null removes one kind, explicitly and in the trail (344.936345ms)
✔ vikunja:19/309 an unknown kind (set or removed), a bad module, an empty patch and null on the wrong shape are refused, nothing written (1.497199ms)
✔ REQ-PLUG-1 REQ-ROLE-3 the writer checks the bytes it writes: a Date in plugins is refused there too (38.26716ms)
✔ REQ-PLUG-1 REQ-ROLE-3 a refused setter write throws a code, changes nothing and logs nothing (1.502007ms)
✔ vikunja:19/305 with an exists check, the setter refuses a module no tree file answers to, before anything is written (100.964679ms)
✔ optional project repo is preserved and must be a normalized absolute path (13.061579ms)
✔ loaded business project repo cannot be nested in any declared code checkout (4.495061ms)
✔ path and load (2.680051ms)
✔ refusals (1.457433ms)
✔ record.write is within-role for the eleven approved v2 agents, never gated-only (6.408131ms)
✔ systemVars flattens the validated config (2.812877ms)
✔ precedence: system, business, project, project role, agent (7.546406ms)
✔ limits narrow the definition and never widen it (4.028962ms)
✔ role.launch stays within-role only for the instance the launch block names (9.608588ms)
✔ limits.authority without role.launch leaves the launcher with no launch block (3.915906ms)
✔ limits.authority narrows cross-role actions too (1.666305ms)
✔ classify (1.735205ms)
✔ the record carries what the broker and launcher need (1.514588ms)
✔ digest: key order doesn't matter, any value change does (10.336881ms)
✔ refusals (2.925604ms)
✔ the four shipped version 2 roles load (5.372147ms)
✔ shipped role scopes match addendum B section 2 and the SR runbook (1.409778ms)
✔ shipped authority follows the note's table (3.715098ms)
✔ every role file in roles/ loads through the validator, and a v2 contract exists (1.533572ms)
✔ version 1 files keep loading with no authority (1.67428ms)
✔ the conductor policy isn't a role (0.297075ms)
✔ a missing role file is exit 4, a symbolic link too (0.70171ms)
✔ version 2 refusals (2.316078ms)
✔ authority: closed vocabulary, no gated-only action, no overlap (2.55031ms)
✔ messaging: optional, role definitions and human, never the tester (2.378562ms)
✔ credentials: Gitea scopes (0.781817ms)
✔ credentials: Vikunja scopes are a group-to-verbs map from the grantable list (1.008268ms)
✔ credentials: services (0.461249ms)
✔ contract: a non-empty regular Markdown file beside the role file (0.645126ms)
✔ every key names known layers and a merge rule (1.186295ms)
✔ unknown keys and wrong layers refuse (0.999523ms)
✔ types (2.714258ms)
✔ merge: defaults, then the most specific layer wins (0.474304ms)
✔ merge: limits only narrow, and provenance lists each source (0.500801ms)
✔ merge doesn't change its inputs (0.178836ms)
✔ web.searxng takes https anywhere and http on loopback, so Jason's 127.0.0.1:8888 passes (0.257258ms)
✔ both definitions load, with a contract file, and are exactly the approved lists (1.948444ms)
✔ security-reviewer has no write or shell tool and classifies only the verdict as its own (3.638634ms)
✔ merge-gate's only grant is git.merge.protected cross-role, and it has no write tool (1.344496ms)
✔ neither role can be an arbiter: its messaging lists refuse the business file (row 133) (3.622878ms)
✔ every role contract carries the proactive line in its Authority section (0.51374ms)
✔ pm and chief-of-staff say where a raise goes under REQ-DEC-2 (0.373736ms)
ℹ tests 119
ℹ suites 0
ℹ pass 119
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 1900.01903