Candidate on base 94ece491f: 5 files, manifest 1910eb5a; only
decision-close.test.mjs changed since round 1. Mutants m1-m4 killed
(m4 is Filbert's f4); gate passed with no flakes.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
78 lines
5.4 KiB
Plaintext
78 lines
5.4 KiB
Plaintext
✔ pure resolution selects current default or explicit enrolled account (1.87753ms)
|
||
✔ scope is explicit, bounded and never inferred (1.567153ms)
|
||
✔ fork pin is preserved against default change, override, missing account and revocation (0.709136ms)
|
||
✔ unenrolled account/provider, missing harness, model expansion and native model ceiling refuse (0.784548ms)
|
||
✔ only explicit synthetic credential forms and internal fixture stores admitted (8.644978ms)
|
||
✔ two concurrent workspaces of the same agent publish distinct complete private generations (50.699602ms)
|
||
✔ same execution ID is exclusively claimed and cannot overwrite a published generation (33.074452ms)
|
||
✔ failed generation after-auth preserves prior files, records failure and refuses blind same-ID retry (47.088974ms)
|
||
✔ failed generation before-publish preserves prior files, records failure and refuses blind same-ID retry (67.265607ms)
|
||
✔ credential lock contention refuses without duplicate side effects (11.142228ms)
|
||
✔ symlinked pre-existing final target is refused and never followed (25.892678ms)
|
||
✔ invalid registry cannot resolve; no fallback to supplied partial entries (0.284897ms)
|
||
✔ post-publication failure records uncertainty, preserves complete generation and prevents replay (26.445812ms)
|
||
✔ expired credentials refresh under transaction and subsequent generation reuses rotation (88.822519ms)
|
||
✔ refresh failure retains prior generation and store state (64.921613ms)
|
||
✔ refresh timeout retains prior generation and store state (143.382594ms)
|
||
✔ refresh malformed retains prior generation and store state (64.036033ms)
|
||
✔ concurrent refresh on same account refuses contention while unrelated account proceeds (222.63961ms)
|
||
✔ invalid refresh options refuse before burning claim (34.825711ms)
|
||
✔ fixed fake process rotates both OAuth fields without mutating caller input (25.928187ms)
|
||
✔ concurrent isolated processes preserve separate provider credentials (25.010968ms)
|
||
✔ fake failure is refused with fixed diagnostics (24.993962ms)
|
||
✔ fake malformed is refused with fixed diagnostics (22.259244ms)
|
||
✔ fake timeout is refused with fixed diagnostics (102.957235ms)
|
||
✔ fake unchanged is refused with fixed diagnostics (24.696725ms)
|
||
✔ caller executable/environment injection is rejected before spawning (0.295914ms)
|
||
✔ valid fixture tree validates and lists without secrets (64.894828ms)
|
||
✔ unknown-field refuses (0.357018ms)
|
||
✔ invalid-id refuses uppercase and traversal shapes (0.262255ms)
|
||
✔ plain-http baseUrl requires allowInsecureTransport (0.281252ms)
|
||
✔ native provider rejects allowInsecureTransport (0.127303ms)
|
||
✔ unsupported credential type and kind refuse (0.611856ms)
|
||
✔ account provider-path mismatch refuses (0.114494ms)
|
||
✔ profile account refs must be provider/account shaped (0.216201ms)
|
||
✔ seat selection accepts fork pin field, validates account refs (0.206759ms)
|
||
✔ harness manifest id must equal executable (gate 1) (0.193388ms)
|
||
✔ CLI validate: duplicate provider id across files refuses (27.807738ms)
|
||
✔ CLI validate: missing referenced provider/account refuse (31.715378ms)
|
||
✔ CLI validate: broken JSON refuses without secret echo (25.870752ms)
|
||
✔ CLI usage errors exit 2 (49.63936ms)
|
||
✔ credential.json sibling presence does not break validation and is never read (64.490388ms)
|
||
✔ D1 missing, empty and structurally empty roots refuse, no list projection (162.368012ms)
|
||
✔ D1 required directory auth cannot be absent (50.632938ms)
|
||
✔ D1 required directory auth/providers cannot be absent (49.33764ms)
|
||
✔ D1 required directory auth/accounts cannot be absent (61.31019ms)
|
||
✔ D1 required directory auth/settings cannot be absent (66.945094ms)
|
||
✔ D1 required directory harnesses cannot be absent (60.931445ms)
|
||
✔ D1 root file and unreadable metadata refuse (103.629135ms)
|
||
✔ D2 no symlink traversal at auth/providers/openai-codex.json (60.095567ms)
|
||
✔ D2 no symlink traversal at auth/accounts/openai-codex/homelab-openai (62.083693ms)
|
||
✔ D2 no symlink traversal at auth/providers (53.259606ms)
|
||
✔ D2 no symlink traversal at auth (53.216759ms)
|
||
✔ D2 root and ancestor symlinks and lexical traversal refuse (152.141119ms)
|
||
✔ private filesystem modes enforced for root (51.937594ms)
|
||
✔ private filesystem modes enforced for auth (50.444286ms)
|
||
✔ private filesystem modes enforced for auth/providers/openai-codex.json (55.086353ms)
|
||
✔ private filesystem modes enforced for auth/accounts/openai-codex/homelab-openai/account.json (62.426613ms)
|
||
✔ D3 numeric version 1 only across all record kinds (1.164071ms)
|
||
✔ D4 nested unknown keys and missing per-kind required fields refuse (59.136461ms)
|
||
✔ D5 unenrolled default refuses even when account exists (63.039432ms)
|
||
✔ D6 provider/account credential type must match (60.870421ms)
|
||
✔ D7 every harness endpoint enforces HTTP opt-in and shape (0.451383ms)
|
||
✔ D8 URLs reject embedded credentials and unsupported protocols without echo (166.083809ms)
|
||
✔ D9 malformed JSON diagnostics contain no content excerpt (59.913392ms)
|
||
✔ D10 missing metadata is missing-path, not invalid-json (59.378422ms)
|
||
✔ D10 library returns no partial entries on any invalid record (70.909709ms)
|
||
✔ null/scalar/array metadata refuses without stack or echo (240.736822ms)
|
||
✔ credential sibling is never opened, even when an unreadable symlink (34.6766ms)
|
||
✔ oversized metadata refuses before parsing (55.804946ms)
|
||
ℹ tests 69
|
||
ℹ suites 0
|
||
ℹ pass 69
|
||
ℹ fail 0
|
||
ℹ cancelled 0
|
||
ℹ skipped 0
|
||
ℹ todo 0
|
||
ℹ duration_ms 2079.298271
|