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.
3.8 KiB
3.8 KiB
test-task.sh coverage with DOCKER_HOST=unix:///nonexistent.sock
Docker info refuses this endpoint. Four conditional blocks are skipped; printed skips count as neither passes nor failures. The skipped blocks contain 51 + 8 + 11 + 2 = 72 checks. The 26 executed checks plus these 72 account for the Docker-capable 98; this run claims only the executed 26.
Executed: schema/mission validation, immutable validation, prune receipts and retention, onboarding profile, and absence of an agent identity on a headless run.
Skipped adapter seam, mission/retry, skills/seat skills, role contracts/ceilings, seat fail-closed resolution, capability policy and user injection
Source lines 139-391:
- mock adapter: gate passes on matching mock response
- mock adapter: expect-mismatch recorded
- mismatch reason recorded
- unknown adapter fails closed
- mission task runs via mock adapter
- mission section injected into generated prompt
- retry of mission run succeeds
- retriedFrom lineage recorded
- mission section present after retry (relative path resolved)
- retry of missing run exits 4
- skill install bundled ms-tools
- installed to skills-available
- double install refuses
- activate enables skill
- enabled dir populated
- uninstall while enabled refuses
- deactivate moves back to available
- uninstall removes from available
- seat with enabled skill launches
- skill path delivered to adapter
- shipped researcher contract resolves (ceiling + network)
- resolve-role refuses a non-role document (conductor policy)
- resolve-role refuses name/filename mismatch
- resolve-role refuses unknown network declaration
- resolve-role refuses duplicate role tool
- resolve-role refuses unsupported tool
- resolve-role refuses missing contract file
- version 1 role prints no contract line
- shipped version 2 roles resolve with their contracts (pm, cto, coder, reviewer)
- resolve-role accepts a minimal version 2 role
- resolve-role refuses an action outside the vocabulary
- resolve-role refuses a gated-only action in a role file
- resolve-role refuses a Vikunja verb no role may hold
- resolve-role refuses a version 2 role whose contract is missing
- resolve-role refuses a contract that is a symbolic link
- seat launches under role ceiling
- role ceiling narrows seat tools (read,write,bash -> read,bash)
- narrowing recorded loudly
- missing role contract refuses launch (exit 2)
- missing-contract refusal names the role
- empty ceiling intersection -> tool-free seat
- tool-free outcome recorded loudly
- overridden agents dir without seat definition refuses (exit 4)
- seat-resolution refusal names the seat
- policy: mission only -> mission tools
- policy: task only -> task tools
- policy: both -> intersection (task narrowed)
- policy: empty intersection -> tool-free
- invalid mission capabilities rejected
- task run with user layer present
- user context dispatched into generated prompt
Skipped workspace and capability mock launches
Source lines 395-423:
- workspace+tools task runs via mock
- workspace path + tools delivered to adapter
- persistent workspace created on host
- plain task still runs (no workspace/tools)
- workspace var present but empty when absent
- tools empty when absent
- unknown tool exits 2
- workspace traversal exits 2
Skipped live provider task and session fork
Source lines 442-492:
- live hello task succeeds with exact marker
- result.json written in run dir
- result.json contents are correct
- wrong expectExact fails with exit 1 (reason: expect-mismatch)
- each run gets a distinct run dir (no clobber)
- list shows both runs
- fork base: teach succeeds
- fork child recalls ancestor context
- forked child recalled ancestor code word
- ancestor session untouched by fork
- child session dir has its own branch file
Skipped live user recall pair
Source lines 517-527:
- user recall run succeeds
- recalled user name (response: $RESP)