{"numTotalTestSuites":517,"numPassedTestSuites":517,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":1136,"numPassedTests":1136,"numFailedTests":0,"numPendingTests":0,"numTodoTests":0,"snapshot":{"added":0,"failure":false,"filesAdded":0,"filesRemoved":0,"filesRemovedList":[],"filesUnmatched":0,"filesUpdated":0,"matched":0,"total":0,"unchecked":0,"uncheckedKeysByFile":[],"unmatched":0,"updated":0,"didUpdate":false},"startTime":1785310544263,"success":true,"testResults":[{"assertionResults":[{"ancestorTitles":["FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures"],"fullName":"FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures FEAT-A01 FEAT-A04 FEAT-044 labels persistence, retry, and lost-update defects","status":"passed","title":"FEAT-A01 FEAT-A04 FEAT-044 labels persistence, retry, and lost-update defects","duration":5.5151030000000105,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures"],"fullName":"FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures FEAT-A06 FEAT-071 FEAT-073 labels premature handoff, poison-message, and webhook replay defects","status":"passed","title":"FEAT-A06 FEAT-071 FEAT-073 labels premature handoff, poison-message, and webhook replay defects","duration":0.6469899999999598,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures"],"fullName":"FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures FEAT-A01 FEAT-A04 FEAT-A06 finds every planted blocking defect and keeps correct twins silent","status":"passed","title":"FEAT-A01 FEAT-A04 FEAT-A06 finds every planted blocking defect and keeps correct twins silent","duration":25.257840999999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures"],"fullName":"FEAT-A01 FEAT-A04 FEAT-A06 FEAT-044 FEAT-071 FEAT-073 DATA-082 ARC-A02 stateful API and async corpus fixtures ARC-A02 repeats canonical API and async findings deterministically","status":"passed","title":"ARC-A02 repeats canonical API and async findings deterministically","duration":20.180994999999996,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310626879,"endTime":1785310626930.181,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/api-async.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures"],"fullName":"FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures FEAT-060 labels role, forged-claim, authority-header, and tenant defects","status":"passed","title":"FEAT-060 labels role, forged-claim, authority-header, and tenant defects","duration":5.363540999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures"],"fullName":"FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures FEAT-062 reports failed auth fixture and incomplete role matrix as coverage gaps","status":"passed","title":"FEAT-062 reports failed auth fixture and incomplete role matrix as coverage gaps","duration":5.4978889999999865,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures"],"fullName":"FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures FEAT-A05 FEAT-A14 finds planted security defects and keeps correct tenant boundary silent","status":"passed","title":"FEAT-A05 FEAT-A14 finds planted security defects and keeps correct tenant boundary silent","duration":3.1733930000000043,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures"],"fullName":"FEAT-A05 FEAT-062 FEAT-A14 ARC-A02 auth and tenant corpus fixtures ARC-A02 repeats canonical auth and tenant findings deterministically","status":"passed","title":"ARC-A02 repeats canonical auth and tenant findings deterministically","duration":7.684513999999979,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310626520,"endTime":1785310626542.6846,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/auth-tenant.test.ts"},{"assertionResults":[{"ancestorTitles":["CORPUS-G01 CORPUS-G02 CORPUS-G03 Phase 8 corpus exit gate"],"fullName":"CORPUS-G01 CORPUS-G02 CORPUS-G03 Phase 8 corpus exit gate CORPUS-G01 reports every registered detector class with no planted positive by name","status":"passed","title":"CORPUS-G01 reports every registered detector class with no planted positive by name","duration":25.648633000000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CORPUS-G01 CORPUS-G02 CORPUS-G03 Phase 8 corpus exit gate"],"fullName":"CORPUS-G01 CORPUS-G02 CORPUS-G03 Phase 8 corpus exit gate CORPUS-G02 rejects every aggregate blocking false positive with full findings","status":"passed","title":"CORPUS-G02 rejects every aggregate blocking false positive with full findings","duration":2.6209810000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CORPUS-G01 CORPUS-G02 CORPUS-G03 Phase 8 corpus exit gate"],"fullName":"CORPUS-G01 CORPUS-G02 CORPUS-G03 Phase 8 corpus exit gate CORPUS-G03 computes deterministic, internally consistent advisory precision and recall and keeps METRICS.md current","status":"passed","title":"CORPUS-G03 computes deterministic, internally consistent advisory precision and recall and keeps METRICS.md current","duration":4.933246999999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310625978,"endTime":1785310626010.9333,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/corpus-gate.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures"],"fullName":"UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures UNI-A05 FEAT-A09 labels coercion, fallback, sentinel, and non-finite decoder defects","status":"passed","title":"UNI-A05 FEAT-A09 labels coercion, fallback, sentinel, and non-finite decoder defects","duration":5.543304999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures"],"fullName":"UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures UNI-A06 FEAT-A11 labels chunk framing, terminal, and stdout protocol defects","status":"passed","title":"UNI-A06 FEAT-A11 labels chunk framing, terminal, and stdout protocol defects","duration":0.8807160000000067,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures"],"fullName":"UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures UNI-A05 UNI-A06 FEAT-A14 finds planted defects and keeps strict clean twins silent","status":"passed","title":"UNI-A05 UNI-A06 FEAT-A14 finds planted defects and keeps strict clean twins silent","duration":13.537830999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures"],"fullName":"UNI-A05 UNI-A06 FEAT-A09 FEAT-A11 FEAT-A14 ARC-A02 decoder and protocol corpus fixtures ARC-A02 repeats canonical decoder and protocol findings deterministically","status":"passed","title":"ARC-A02 repeats canonical decoder and protocol findings deterministically","duration":12.814010999999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310627374,"endTime":1785310627407.814,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/decoder-protocol.test.ts"},{"assertionResults":[{"ancestorTitles":["PRD-A01 PRD-012 PRD-013 corpus labels and scoring"],"fullName":"PRD-A01 PRD-012 PRD-013 corpus labels and scoring PRD-A01 rejects unknown lanes and exceptions without contract references","status":"passed","title":"PRD-A01 rejects unknown lanes and exceptions without contract references","duration":5.045328000000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PRD-A01 PRD-012 PRD-013 corpus labels and scoring"],"fullName":"PRD-A01 PRD-012 PRD-013 corpus labels and scoring PRD-A01 scores a planted blocking defect from real CLI verify output","status":"passed","title":"PRD-A01 scores a planted blocking defect from real CLI verify output","duration":188.808309,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PRD-A01 PRD-012 PRD-013 corpus labels and scoring"],"fullName":"PRD-A01 PRD-012 PRD-013 corpus labels and scoring PRD-012 retains unlabelled blocking findings as false positives","status":"passed","title":"PRD-012 retains unlabelled blocking findings as false positives","duration":183.63435300000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PRD-A01 PRD-012 PRD-013 corpus labels and scoring"],"fullName":"PRD-A01 PRD-012 PRD-013 corpus labels and scoring PRD-013 tracks advisory misses and unlabelled advisory findings","status":"passed","title":"PRD-013 tracks advisory misses and unlabelled advisory findings","duration":178.93202500000007,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310616254,"endTime":1785310616809.9321,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/harness.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures"],"fullName":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures UNI-A10 UNI-A07 labels leaked ownership, canceled cleanup, and cross-run isolation defects","status":"passed","title":"UNI-A10 UNI-A07 labels leaked ownership, canceled cleanup, and cross-run isolation defects","duration":5.9584879999999885,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures"],"fullName":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures UNI-A13 labels containment escape and non-atomic replacement defects","status":"passed","title":"UNI-A13 labels containment escape and non-atomic replacement defects","duration":0.7650150000000053,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures"],"fullName":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures UNI-A08 FEAT-A13 labels runtime references, production surface, binding, and stale artifact defects","status":"passed","title":"UNI-A08 FEAT-A13 labels runtime references, production surface, binding, and stale artifact defects","duration":0.6036009999999692,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures"],"fullName":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures UNI-A07 UNI-A08 UNI-A10 UNI-A13 finds planted defects and keeps clean twins silent","status":"passed","title":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 finds planted defects and keeps clean twins silent","duration":19.615702,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures"],"fullName":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures ARC-A02 repeats canonical lifecycle, filesystem, and closure findings deterministically","status":"passed","title":"ARC-A02 repeats canonical lifecycle, filesystem, and closure findings deterministically","duration":20.09914500000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures"],"fullName":"UNI-A07 UNI-A08 UNI-A10 UNI-A13 FEAT-A10 FEAT-A13 ARC-A02 lifecycle, filesystem, and closure corpus fixtures UNI-010 rejects a lifecycle fixture directory outside the corpus root","status":"passed","title":"UNI-010 rejects a lifecycle fixture directory outside the corpus root","duration":1.2968620000000328,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310626279,"endTime":1785310626327.2969,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/lifecycle-closure.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures UI-A01 labels RTL, locale expansion, bidi spacing, and breakpoint clipping coverage","status":"passed","title":"UI-A01 labels RTL, locale expansion, bidi spacing, and breakpoint clipping coverage","duration":6.193625999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures UI-A03 CLI-023 labels the carousel clip as a reviewed scoped exception","status":"passed","title":"UI-A03 CLI-023 labels the carousel clip as a reviewed scoped exception","duration":0.8600369999999202,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures UI-A01 ui-locale finds every planted blocking defect and has zero blocking false positives","status":"passed","title":"UI-A01 ui-locale finds every planted blocking defect and has zero blocking false positives","duration":296.78680499999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures ARC-A02 ui-locale has deterministic canonical findings","status":"passed","title":"ARC-A02 ui-locale has deterministic canonical findings","duration":446.70824600000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures UI-A01 ui-responsive finds every planted blocking defect and has zero blocking false positives","status":"passed","title":"UI-A01 ui-responsive finds every planted blocking defect and has zero blocking false positives","duration":270.08179799999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures ARC-A02 ui-responsive has deterministic canonical findings","status":"passed","title":"ARC-A02 ui-responsive has deterministic canonical findings","duration":528.8363749999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures UI-A02 covers locale clipping and bidi truncation with geometry evidence","status":"passed","title":"UI-A02 covers locale clipping and bidi truncation with geometry evidence","duration":326.304122,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A03 CLI-023 ARC-A02 locale and responsive corpus fixtures UI-A03 applies the reviewed carousel contract without suppressing responsive clipping","status":"passed","title":"UI-A03 applies the reviewed carousel contract without suppressing responsive clipping","duration":834.0291160000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310601503,"endTime":1785310604213.029,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/locale-responsive.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 ARC-A02 primitive corpus fixture"],"fullName":"UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 ARC-A02 primitive corpus fixture UNI-A01 FEAT-A15 FEAT-A16 labels every assigned primitive and security adapter class","status":"passed","title":"UNI-A01 FEAT-A15 FEAT-A16 labels every assigned primitive and security adapter class","duration":5.927637000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 ARC-A02 primitive corpus fixture"],"fullName":"UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 ARC-A02 primitive corpus fixture UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 finds planted defects and keeps clean siblings silent","status":"passed","title":"UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 finds planted defects and keeps clean siblings silent","duration":14.856640000000027,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 ARC-A02 primitive corpus fixture"],"fullName":"UNI-A01 UNI-A03 UNI-A09 UNI-A11 FEAT-A15 FEAT-A16 ARC-A02 primitive corpus fixture ARC-A02 repeats canonical primitive and security adapter findings deterministically","status":"passed","title":"ARC-A02 repeats canonical primitive and security adapter findings deterministically","duration":7.030307999999991,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310622960,"endTime":1785310622988.0303,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/primitives.test.ts"},{"assertionResults":[{"ancestorTitles":["registered detector classes"],"fullName":"registered detector classes derives a sorted, unique, kebab-case registry from product source","status":"passed","title":"derives a sorted, unique, kebab-case registry from product source","duration":9.42862199999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["registered detector classes"],"fullName":"registered detector classes registers a class from every product detector module","status":"passed","title":"registers a class from every product detector module","duration":7.084609,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["registered detector classes"],"fullName":"registered detector classes never sources a class from the corpus package itself","status":"passed","title":"never sources a class from the corpus package itself","duration":6.831618999999989,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310627042,"endTime":1785310627065.8315,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/registry.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture"],"fullName":"UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture UI-060 UI-061 UI-062 labels every registered accessibility detector class","status":"passed","title":"UI-060 UI-061 UI-062 labels every registered accessibility detector class","duration":9.354128000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture"],"fullName":"UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture UI-061 direct accessibility fixture targets a real unlabeled control","status":"passed","title":"UI-061 direct accessibility fixture targets a real unlabeled control","duration":2.8177689999999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture"],"fullName":"UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture UI-060 UI-061 UI-062 finds planted defects and keeps clean sibling blocking-silent","status":"passed","title":"UI-060 UI-061 UI-062 finds planted defects and keeps clean sibling blocking-silent","duration":688.95722,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture"],"fullName":"UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture UI-A11 clean sibling has zero axe-core violations","status":"passed","title":"UI-A11 clean sibling has zero axe-core violations","duration":645.9932640000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture"],"fullName":"UI-060 UI-061 UI-062 UI-A11 ARC-A02 accessibility corpus fixture ARC-A02 produces deterministic canonical accessibility findings","status":"passed","title":"ARC-A02 produces deterministic canonical accessibility findings","duration":1214.515379,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310620096,"endTime":1785310622658.5154,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/ui-a11y.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures"],"fullName":"UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures UI-070 declares offline optional asset absence without an image request","status":"passed","title":"UI-070 declares offline optional asset absence without an image request","duration":6.670826000000034,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures"],"fullName":"UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures UI-070 UI-071 UI-072 finds asset defects and keeps declared absent asset sibling silent","status":"passed","title":"UI-070 UI-071 UI-072 finds asset defects and keeps declared absent asset sibling silent","duration":348.4675189999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures"],"fullName":"UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures UI-052 UI-053 finds sweep defects and keeps clean matrix cells silent","status":"passed","title":"UI-052 UI-053 finds sweep defects and keeps clean matrix cells silent","duration":268.5564129999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures"],"fullName":"UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures UI-034 detects cross-representation contradiction and keeps matching representations silent","status":"passed","title":"UI-034 detects cross-representation contradiction and keeps matching representations silent","duration":276.5788479999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures"],"fullName":"UI-070 UI-071 UI-072 UI-052 UI-053 UI-034 ARC-A02 corpus fixtures ARC-A02 produces deterministic canonical findings for every matrix","status":"passed","title":"ARC-A02 produces deterministic canonical findings for every matrix","duration":1648.3233989999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310604742,"endTime":1785310607290.3235,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/ui-assets-sweeps-relations.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture"],"fullName":"UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture UI-040 UI-041 UI-042 UI-043 UI-044 labels every registered consistency detector class","status":"passed","title":"UI-040 UI-041 UI-042 UI-043 UI-044 labels every registered consistency detector class","duration":9.318189000000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture"],"fullName":"UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture UI-040 UI-041 UI-042 UI-043 UI-044 finds planted defects and keeps clean sibling blocking-silent","status":"passed","title":"UI-040 UI-041 UI-042 UI-043 UI-044 finds planted defects and keeps clean sibling blocking-silent","duration":1491.545061,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture"],"fullName":"UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture UI-043 keeps legitimately divergent checkout chrome separate from standard chrome","status":"passed","title":"UI-043 keeps legitimately divergent checkout chrome separate from standard chrome","duration":1003.5784249999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture"],"fullName":"UI-040 UI-041 UI-042 UI-043 UI-044 UI-A04 ARC-A02 consistency corpus fixture ARC-A02 produces deterministic canonical consistency findings","status":"passed","title":"ARC-A02 produces deterministic canonical consistency findings","duration":2717.0071940000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310610872,"endTime":1785310616094.007,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/ui-consistency.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures UI-A01 ui-ssr manifest labels rendered-state, geometry, layout, and interaction fixtures","status":"passed","title":"UI-A01 ui-ssr manifest labels rendered-state, geometry, layout, and interaction fixtures","duration":9.64828099999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures UI-A01 ui-ssr finds every rendered-state planted defect and keeps clean twin blocking-silent","status":"passed","title":"UI-A01 ui-ssr finds every rendered-state planted defect and keeps clean twin blocking-silent","duration":327.323303,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures ARC-A02 ui-ssr produces deterministic canonical rendered findings","status":"passed","title":"ARC-A02 ui-ssr produces deterministic canonical rendered findings","duration":444.53396999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures UI-A01 ui-client manifest labels rendered-state, geometry, layout, and interaction fixtures","status":"passed","title":"UI-A01 ui-client manifest labels rendered-state, geometry, layout, and interaction fixtures","duration":4.544646999999941,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures UI-A01 ui-client finds every rendered-state planted defect and keeps clean twin blocking-silent","status":"passed","title":"UI-A01 ui-client finds every rendered-state planted defect and keeps clean twin blocking-silent","duration":253.97865500000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures ARC-A02 ui-client produces deterministic canonical rendered findings","status":"passed","title":"ARC-A02 ui-client produces deterministic canonical rendered findings","duration":435.4313709999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures"],"fullName":"UI-A01 UI-A02 UI-A09 ARC-A02 SSR and client-rendered corpus fixtures UI-010 UI-012 UI-022 UI-023 finds rendered and geometry positives while clean twins stay silent","status":"passed","title":"UI-010 UI-012 UI-022 UI-023 finds rendered and geometry positives while clean twins stay silent","duration":1083.3354270000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310607806,"endTime":1785310610365.3354,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/ui-fixtures.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-033 UI-035 UI-036 UI-037 UI-038 UI-A09 ARC-A02 interaction corpus fixture"],"fullName":"UI-033 UI-035 UI-036 UI-037 UI-038 UI-A09 ARC-A02 interaction corpus fixture UI-033 UI-035 UI-036 UI-037 UI-038 labels every registered interaction detector class","status":"passed","title":"UI-033 UI-035 UI-036 UI-037 UI-038 labels every registered interaction detector class","duration":10.364508,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-033 UI-035 UI-036 UI-037 UI-038 UI-A09 ARC-A02 interaction corpus fixture"],"fullName":"UI-033 UI-035 UI-036 UI-037 UI-038 UI-A09 ARC-A02 interaction corpus fixture UI-033 UI-035 UI-036 UI-037 UI-038 finds planted defects and keeps clean sibling blocking-silent","status":"passed","title":"UI-033 UI-035 UI-036 UI-037 UI-038 finds planted defects and keeps clean sibling blocking-silent","duration":837.363435,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-033 UI-035 UI-036 UI-037 UI-038 UI-A09 ARC-A02 interaction corpus fixture"],"fullName":"UI-033 UI-035 UI-036 UI-037 UI-038 UI-A09 ARC-A02 interaction corpus fixture ARC-A02 produces deterministic canonical interaction findings","status":"passed","title":"ARC-A02 produces deterministic canonical interaction findings","duration":1389.614591,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310617355,"endTime":1785310619592.6145,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/ui-interaction.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture"],"fullName":"UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture UI-030 UI-031 UI-032 labels every registered layout detector class","status":"passed","title":"UI-030 UI-031 UI-032 labels every registered layout detector class","duration":9.666639000000032,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture"],"fullName":"UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture UI-030 scripted mutation records deterministic non-input CLS evidence","status":"passed","title":"UI-030 scripted mutation records deterministic non-input CLS evidence","duration":0.751730000000066,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture"],"fullName":"UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture UI-030 UI-031 UI-032 finds planted defects and keeps clean sibling silent","status":"passed","title":"UI-030 UI-031 UI-032 finds planted defects and keeps clean sibling silent","duration":806.723869,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture"],"fullName":"UI-030 UI-031 UI-032 UI-A01 ARC-A02 layout corpus fixture ARC-A02 produces deterministic canonical layout findings","status":"passed","title":"ARC-A02 produces deterministic canonical layout findings","duration":1459.2459809999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310623531,"endTime":1785310625808.246,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/corpus/test/ui-layout.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-070 completion ladder distinguishes async stages"],"fullName":"FEAT-070 completion ladder distinguishes async stages FEAT-070 enumerates completion rungs in ascending order","status":"passed","title":"FEAT-070 enumerates completion rungs in ascending order","duration":2.1757860000000164,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-070 completion ladder distinguishes async stages"],"fullName":"FEAT-070 completion ladder distinguishes async stages FEAT-070 rejects unknown completion rungs fail-closed","status":"passed","title":"FEAT-070 rejects unknown completion rungs fail-closed","duration":1.0473609999999667,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-070 completion ladder distinguishes async stages"],"fullName":"FEAT-070 completion ladder distinguishes async stages FEAT-070 derives proven rungs from completion evidence","status":"passed","title":"FEAT-070 derives proven rungs from completion evidence","duration":0.4518089999999688,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-070 completion ladder distinguishes async stages"],"fullName":"FEAT-070 completion ladder distinguishes async stages FEAT-070 compareCompletionRungs orders rungs monotonically","status":"passed","title":"FEAT-070 compareCompletionRungs orders rungs monotonically","duration":0.44630699999999024,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-070 completion ladder distinguishes async stages"],"fullName":"FEAT-070 completion ladder distinguishes async stages FEAT-070 journey outcome records highest proven rung only","status":"passed","title":"FEAT-070 journey outcome records highest proven rung only","duration":0.2926029999999855,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-072 synchronous coverage cannot claim downstream async branches"],"fullName":"FEAT-072 synchronous coverage cannot claim downstream async branches FEAT-072 keeps sync and async ledger rows distinct","status":"passed","title":"FEAT-072 keeps sync and async ledger rows distinct","duration":0.515420000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-072 synchronous coverage cannot claim downstream async branches"],"fullName":"FEAT-072 synchronous coverage cannot claim downstream async branches FEAT-072 rejects sync row claiming downstream async coverage","status":"passed","title":"FEAT-072 rejects sync row claiming downstream async coverage","duration":0.27280200000001287,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-072 synchronous coverage cannot claim downstream async branches"],"fullName":"FEAT-072 synchronous coverage cannot claim downstream async branches FEAT-072 rejects duplicate branch coverage rows","status":"passed","title":"FEAT-072 rejects duplicate branch coverage rows","duration":0.2442630000000463,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-071 queue-branch adapter exercises owned scenarios"],"fullName":"FEAT-071 queue-branch adapter exercises owned scenarios FEAT-071 enumerates queue branch scenario kinds fail-closed","status":"passed","title":"FEAT-071 enumerates queue branch scenario kinds fail-closed","duration":1.1257389999999532,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-071 queue-branch adapter exercises owned scenarios"],"fullName":"FEAT-071 queue-branch adapter exercises owned scenarios FEAT-071 runs only contract-owned scenarios","status":"passed","title":"FEAT-071 runs only contract-owned scenarios","duration":3.2916979999999967,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-071 queue-branch adapter exercises owned scenarios"],"fullName":"FEAT-071 queue-branch adapter exercises owned scenarios FEAT-071 duplicate scenario fires when idempotency is violated","status":"passed","title":"FEAT-071 duplicate scenario fires when idempotency is violated","duration":2.5427230000000236,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-071 queue-branch adapter exercises owned scenarios"],"fullName":"FEAT-071 queue-branch adapter exercises owned scenarios FEAT-071 poison-message scenario routes poison to dead-letter when owned","status":"passed","title":"FEAT-071 poison-message scenario routes poison to dead-letter when owned","duration":9.619011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-071 queue-branch adapter exercises owned scenarios"],"fullName":"FEAT-071 queue-branch adapter exercises owned scenarios FEAT-071 exercises all owned scenario kinds against good fixture","status":"passed","title":"FEAT-071 exercises all owned scenario kinds against good fixture","duration":8.13709399999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-073 terminal success obligation closure"],"fullName":"FEAT-073 terminal success obligation closure FEAT-073 blocks premature success on confirmed mandatory obligation","status":"passed","title":"FEAT-073 blocks premature success on confirmed mandatory obligation","duration":4.114963000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-073 terminal success obligation closure"],"fullName":"FEAT-073 terminal success obligation closure FEAT-073 keeps inferred obligation gaps advisory","status":"passed","title":"FEAT-073 keeps inferred obligation gaps advisory","duration":1.9267839999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-073 terminal success obligation closure"],"fullName":"FEAT-073 terminal success obligation closure FEAT-073 rejects claimed success without durable agreement per UNI-023","status":"passed","title":"FEAT-073 rejects claimed success without durable agreement per UNI-023","duration":0.9866059999999948,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-073 terminal success obligation closure"],"fullName":"FEAT-073 terminal success obligation closure FEAT-073 passes when all confirmed obligations are closed","status":"passed","title":"FEAT-073 passes when all confirmed obligations are closed","duration":0.7690110000000345,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A06 async fixture distinguishes acceptance handoff and effect"],"fullName":"FEAT-A06 async fixture distinguishes acceptance handoff and effect FEAT-A06 good fixture proves distinct completion rungs","status":"passed","title":"FEAT-A06 good fixture proves distinct completion rungs","duration":0.5200730000000249,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A06 async fixture distinguishes acceptance handoff and effect"],"fullName":"FEAT-A06 async fixture distinguishes acceptance handoff and effect FEAT-A06 broken fixture stops at HTTP acceptance without durable handoff","status":"passed","title":"FEAT-A06 broken fixture stops at HTTP acceptance without durable handoff","duration":0.23601700000000392,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A10 premature-success cannot complete before obligations close"],"fullName":"FEAT-A10 premature-success cannot complete before obligations close FEAT-A10 good fixture withholds terminal success until obligations close","status":"passed","title":"FEAT-A10 good fixture withholds terminal success until obligations close","duration":0.8045170000000326,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A10 premature-success cannot complete before obligations close"],"fullName":"FEAT-A10 premature-success cannot complete before obligations close FEAT-A10 broken fixture claims success before durable obligations close","status":"passed","title":"FEAT-A10 broken fixture claims success before durable obligations close","duration":1.0866080000000125,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["async adapter fail-closed validation"],"fullName":"async adapter fail-closed validation rejects queue contracts with empty branch id","status":"passed","title":"rejects queue contracts with empty branch id","duration":1.0376929999999902,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["async adapter fail-closed validation"],"fullName":"async adapter fail-closed validation rejects queue contracts with unknown scenario kinds","status":"passed","title":"rejects queue contracts with unknown scenario kinds","duration":0.33957900000001473,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["async adapter fail-closed validation"],"fullName":"async adapter fail-closed validation rejects obligation closure without branch id","status":"passed","title":"rejects obligation closure without branch id","duration":0.315257000000031,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310557021,"endTime":1785310557064.3152,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/async.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-040 boundary partition generation from schemas"],"fullName":"FEAT-040 boundary partition generation from schemas FEAT-040 generateBoundaryCases derives missing/null/empty partitions","status":"passed","title":"FEAT-040 generateBoundaryCases derives missing/null/empty partitions","duration":5.683547999999973,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-040 boundary partition generation from schemas"],"fullName":"FEAT-040 boundary partition generation from schemas FEAT-040 generateBoundaryCases derives min/max and just-inside/outside partitions","status":"passed","title":"FEAT-040 generateBoundaryCases derives min/max and just-inside/outside partitions","duration":1.0341060000000084,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-040 boundary partition generation from schemas"],"fullName":"FEAT-040 boundary partition generation from schemas FEAT-040 generateBoundaryCases derives precision, encoding, enum, and malformed partitions","status":"passed","title":"FEAT-040 generateBoundaryCases derives precision, encoding, enum, and malformed partitions","duration":4.258346000000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-040 boundary partition generation from schemas"],"fullName":"FEAT-040 boundary partition generation from schemas FEAT-040 generateBoundaryCases derives cardinality and uniqueness partitions","status":"passed","title":"FEAT-040 generateBoundaryCases derives cardinality and uniqueness partitions","duration":3.4999819999999886,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-040 boundary partition generation from schemas"],"fullName":"FEAT-040 boundary partition generation from schemas FEAT-040 generateBoundaryCases derives relation-ownership partitions","status":"passed","title":"FEAT-040 generateBoundaryCases derives relation-ownership partitions","duration":1.0152630000000045,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-040 boundary partition generation from schemas"],"fullName":"FEAT-040 boundary partition generation from schemas FEAT-040 enumerates every supported boundary partition fail-closed","status":"passed","title":"FEAT-040 enumerates every supported boundary partition fail-closed","duration":4.219028999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts FEAT-046 generateStrictDecoderCases derives coercion and overflow scenarios from schema","status":"passed","title":"FEAT-046 generateStrictDecoderCases derives coercion and overflow scenarios from schema","duration":0.8896990000000073,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts UNI-030 evaluateStrictDecoderScenarios flags numeric/string coercion violations","status":"passed","title":"UNI-030 evaluateStrictDecoderScenarios flags numeric/string coercion violations","duration":1.623012000000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts UNI-032 evaluateStrictDecoderScenarios flags fallback shadowing violations","status":"passed","title":"UNI-032 evaluateStrictDecoderScenarios flags fallback shadowing violations","duration":0.5792190000000232,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts UNI-030 evaluateStrictDecoderScenarios flags negative overflow violations","status":"passed","title":"UNI-030 evaluateStrictDecoderScenarios flags negative overflow violations","duration":0.6970339999999737,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts UNI-030 evaluateStrictDecoderScenarios flags non-finite violations","status":"passed","title":"UNI-030 evaluateStrictDecoderScenarios flags non-finite violations","duration":0.4806740000000218,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts FEAT-A09 strict decoders stay silent on known-good fixtures","status":"passed","title":"FEAT-A09 strict decoders stay silent on known-good fixtures","duration":2.070925999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts"],"fullName":"FEAT-046 strict-decoder case generation and UNI-030–UNI-034 verdicts FEAT-A09 runStrictDecoderCheck reports confirmed decoder violations","status":"passed","title":"FEAT-A09 runStrictDecoderCheck reports confirmed decoder violations","duration":0.5745399999999563,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["boundary adapter fail-closed validation"],"fullName":"boundary adapter fail-closed validation rejects generateBoundaryCases without a zod schema","status":"passed","title":"rejects generateBoundaryCases without a zod schema","duration":0.7756620000000112,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["boundary adapter fail-closed validation"],"fullName":"boundary adapter fail-closed validation rejects strict-decoder generation without id","status":"passed","title":"rejects strict-decoder generation without id","duration":0.2514550000000213,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["boundary adapter fail-closed validation"],"fullName":"boundary adapter fail-closed validation rejects strict-decoder evaluation when observation count mismatches","status":"passed","title":"rejects strict-decoder evaluation when observation count mismatches","duration":1.8484690000000228,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310559743,"endTime":1785310559772.8484,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/boundary.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 enumerates named schedule kinds fail-closed","status":"passed","title":"FEAT-044 enumerates named schedule kinds fail-closed","duration":11.034380999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 rejects unknown schedule kinds","status":"passed","title":"FEAT-044 rejects unknown schedule kinds","duration":5.05842899999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 rejects schedules referencing missing tasks or steps","status":"passed","title":"FEAT-044 rejects schedules referencing missing tasks or steps","duration":1.5321400000000267,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 double-submit schedule preserves single committed effect when idempotent","status":"passed","title":"FEAT-044 double-submit schedule preserves single committed effect when idempotent","duration":3.9073909999999614,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 double-submit schedule fires on non-idempotent duplicate commit","status":"passed","title":"FEAT-044 double-submit schedule fires on non-idempotent duplicate commit","duration":0.6824029999999652,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 lost-update schedule preserves merged state when conflict-safe","status":"passed","title":"FEAT-044 lost-update schedule preserves merged state when conflict-safe","duration":6.518613000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 lost-update schedule fires when stale write overwrites concurrent update","status":"passed","title":"FEAT-044 lost-update schedule fires when stale write overwrites concurrent update","duration":0.7424419999999827,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 compare-and-swap conflict schedule succeeds with version check","status":"passed","title":"FEAT-044 compare-and-swap conflict schedule succeeds with version check","duration":0.6045579999999973,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 compare-and-swap conflict schedule fires on stale version commit","status":"passed","title":"FEAT-044 compare-and-swap conflict schedule fires on stale version commit","duration":6.682083999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 lock-expiry schedule rejects write after lease expires when guarded","status":"passed","title":"FEAT-044 lock-expiry schedule rejects write after lease expires when guarded","duration":0.6133360000000039,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 lock-expiry schedule fires when expired lock still commits","status":"passed","title":"FEAT-044 lock-expiry schedule fires when expired lock still commits","duration":7.466367000000048,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 retry-overlap schedule preserves single effect under overlap","status":"passed","title":"FEAT-044 retry-overlap schedule preserves single effect under overlap","duration":3.3097890000000234,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 retry-overlap schedule fires when overlapping retries duplicate effects","status":"passed","title":"FEAT-044 retry-overlap schedule fires when overlapping retries duplicate effects","duration":0.40521799999999075,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 out-of-order delivery schedule tolerates reorder when sequenced","status":"passed","title":"FEAT-044 out-of-order delivery schedule tolerates reorder when sequenced","duration":1.0426080000000297,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 out-of-order delivery schedule fires when reorder breaks sequencing","status":"passed","title":"FEAT-044 out-of-order delivery schedule fires when reorder breaks sequencing","duration":0.3475429999999733,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-044 deterministic concurrency schedules"],"fullName":"FEAT-044 deterministic concurrency schedules FEAT-044 identical schedule produces identical trace (ARC determinism law)","status":"passed","title":"FEAT-044 identical schedule produces identical trace (ARC determinism law)","duration":2.9539289999999596,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A04 duplicate retry fixture proves one committed effect"],"fullName":"FEAT-A04 duplicate retry fixture proves one committed effect FEAT-A04 duplicate-retry schedule against idempotent store commits exactly one effect","status":"passed","title":"FEAT-A04 duplicate-retry schedule against idempotent store commits exactly one effect","duration":0.4466340000000173,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A04 duplicate retry fixture proves one committed effect"],"fullName":"FEAT-A04 duplicate retry fixture proves one committed effect FEAT-A04 deliberately non-idempotent duplicate-retry variant fires","status":"passed","title":"FEAT-A04 deliberately non-idempotent duplicate-retry variant fires","duration":0.3956900000000019,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["concurrency adapter fail-closed validation"],"fullName":"concurrency adapter fail-closed validation rejects schedules with empty id","status":"passed","title":"rejects schedules with empty id","duration":0.3158470000000193,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["concurrency adapter fail-closed validation"],"fullName":"concurrency adapter fail-closed validation rejects schedules with empty interleaving","status":"passed","title":"rejects schedules with empty interleaving","duration":3.1137110000000234,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["concurrency adapter fail-closed validation"],"fullName":"concurrency adapter fail-closed validation rejects systems without assertOutcome","status":"passed","title":"rejects systems without assertOutcome","duration":0.29452500000002146,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["concurrency adapter fail-closed validation"],"fullName":"concurrency adapter fail-closed validation createNamedSchedule rejects unknown kinds","status":"passed","title":"createNamedSchedule rejects unknown kinds","duration":0.23020999999999958,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310559300,"endTime":1785310559362.2944,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/concurrency.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 enumerates injectable fault boundaries fail-closed","status":"passed","title":"FEAT-045 enumerates injectable fault boundaries fail-closed","duration":7.534185999999977,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 enumerates fault kinds fail-closed","status":"passed","title":"FEAT-045 enumerates fault kinds fail-closed","duration":2.3213910000000624,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 rejects unknown fault boundaries","status":"passed","title":"FEAT-045 rejects unknown fault boundaries","duration":3.916699000000108,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 rejects unknown fault kinds","status":"passed","title":"FEAT-045 rejects unknown fault kinds","duration":0.5366470000000163,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 injects error fault at declared persistence boundary","status":"passed","title":"FEAT-045 injects error fault at declared persistence boundary","duration":13.22940600000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 fault without declared atomicity oracle never blocks","status":"passed","title":"FEAT-045 fault without declared atomicity oracle never blocks","duration":5.993999000000031,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-045 fault injection boundaries"],"fullName":"FEAT-045 fault injection boundaries FEAT-045 fault with atomicity oracle may block on confirmed violation","status":"passed","title":"FEAT-045 fault with atomicity oracle may block on confirmed violation","duration":5.296851999999944,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-074 cancellation timeout retry crash fixtures"],"fullName":"FEAT-074 cancellation timeout retry crash fixtures FEAT-074 cancellation fixture releases owned resources and rejects post-terminal success","status":"passed","title":"FEAT-074 cancellation fixture releases owned resources and rejects post-terminal success","duration":2.4193880000000263,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-074 cancellation timeout retry crash fixtures"],"fullName":"FEAT-074 cancellation timeout retry crash fixtures FEAT-074 cancellation fixture fires when owned resources leak after cancel","status":"passed","title":"FEAT-074 cancellation fixture fires when owned resources leak after cancel","duration":2.0311479999999165,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-074 cancellation timeout retry crash fixtures"],"fullName":"FEAT-074 cancellation timeout retry crash fixtures FEAT-074 timeout fixture releases owned resources","status":"passed","title":"FEAT-074 timeout fixture releases owned resources","duration":2.5992690000000493,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-074 cancellation timeout retry crash fixtures"],"fullName":"FEAT-074 cancellation timeout retry crash fixtures FEAT-074 retry fixture preserves single committed effect under error fault","status":"passed","title":"FEAT-074 retry fixture preserves single committed effect under error fault","duration":2.374553999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-074 cancellation timeout retry crash fixtures"],"fullName":"FEAT-074 cancellation timeout retry crash fixtures FEAT-074 crash-between fixture verifies atomic rollback via oracle","status":"passed","title":"FEAT-074 crash-between fixture verifies atomic rollback via oracle","duration":2.3906560000000354,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A10 cancellation leaves no owned resources or late success"],"fullName":"FEAT-A10 cancellation leaves no owned resources or late success FEAT-A10 cancellation fixture cannot emit post-terminal success","status":"passed","title":"FEAT-A10 cancellation fixture cannot emit post-terminal success","duration":1.187037000000032,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A10 cancellation leaves no owned resources or late success"],"fullName":"FEAT-A10 cancellation leaves no owned resources or late success FEAT-A10 broken cancellation fixture leaks resources or accepts late success","status":"passed","title":"FEAT-A10 broken cancellation fixture leaks resources or accepts late success","duration":1.2193240000000287,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["fault adapter fail-closed validation"],"fullName":"fault adapter fail-closed validation rejects systems without run","status":"passed","title":"rejects systems without run","duration":0.3626170000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["fault adapter fail-closed validation"],"fullName":"fault adapter fail-closed validation rejects faults with empty at","status":"passed","title":"rejects faults with empty at","duration":0.32962499999996453,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310557717,"endTime":1785310557772.3296,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/fault.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-011 evidence graph is evidence not truth"],"fullName":"FEAT-011 evidence graph is evidence not truth FEAT-011 accepts a zod-validated graph with node kinds and edge confidence labels","status":"passed","title":"FEAT-011 accepts a zod-validated graph with node kinds and edge confidence labels","duration":6.482283999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-011 evidence graph is evidence not truth"],"fullName":"FEAT-011 evidence graph is evidence not truth FEAT-011 rejects confirmed confidence at graph level","status":"passed","title":"FEAT-011 rejects confirmed confidence at graph level","duration":1.7583300000000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-011 evidence graph is evidence not truth"],"fullName":"FEAT-011 evidence graph is evidence not truth FEAT-011 rejects unknown node kinds","status":"passed","title":"FEAT-011 rejects unknown node kinds","duration":0.5603240000000369,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-012 contradictory paths stay separate"],"fullName":"FEAT-012 contradictory paths stay separate FEAT-012 detectContradictions yields adjudication without selecting a winner","status":"passed","title":"FEAT-012 detectContradictions yields adjudication without selecting a winner","duration":4.138504000000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-012 contradictory paths stay separate"],"fullName":"FEAT-012 contradictory paths stay separate DATA-A07 contradiction adjudication preserves both observations and provenance","status":"passed","title":"DATA-A07 contradiction adjudication preserves both observations and provenance","duration":0.7283899999999903,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-012 contradictory paths stay separate"],"fullName":"FEAT-012 contradictory paths stay separate FEAT-012 does not merge contradictory outcomes by majority","status":"passed","title":"FEAT-012 does not merge contradictory outcomes by majority","duration":0.8745990000000461,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-012 contradictory paths stay separate"],"fullName":"FEAT-012 contradictory paths stay separate FEAT-012 returns no adjudication when edges agree on outcome","status":"passed","title":"FEAT-012 returns no adjudication when edges agree on outcome","duration":0.46765299999998433,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310560331,"endTime":1785310560346.8745,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/graph.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-A01 confirmed failure when UI passes but persistence is wrong"],"fullName":"FEAT-A01 confirmed failure when UI passes but persistence is wrong FEAT-A01 reports blocking confirmed failure despite uiSuccess trigger","status":"passed","title":"FEAT-A01 reports blocking confirmed failure despite uiSuccess trigger","duration":37.994646999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A02 inferred discrepancy remains advisory"],"fullName":"FEAT-A02 inferred discrepancy remains advisory FEAT-A02 keeps inferred oracle violation advisory and records adjudication","status":"passed","title":"FEAT-A02 keeps inferred oracle violation advisory and records adjudication","duration":3.303213000000028,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-022 metadata-only assertions cannot certify"],"fullName":"FEAT-022 metadata-only assertions cannot certify FEAT-022 yields coverage gap when branch declares no domain-state oracles","status":"passed","title":"FEAT-022 yields coverage gap when branch declares no domain-state oracles","duration":2.418083000000024,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-021 runs declared persistence oracle after trigger execution","status":"passed","title":"FEAT-021 runs declared persistence oracle after trigger execution","duration":1.237993000000074,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-003 only confirmed journeys may block"],"fullName":"FEAT-003 only confirmed journeys may block FEAT-003 routes confirmed violations to blocking and inferred to advisory","status":"passed","title":"FEAT-003 routes confirmed violations to blocking and inferred to advisory","duration":18.259435000000053,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310560282,"endTime":1785310560346.2595,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/journey-runner.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-020 journey branch contract schema"],"fullName":"FEAT-020 journey branch contract schema FEAT-020 parses a branch with exactly the required fields","status":"passed","title":"FEAT-020 parses a branch with exactly the required fields","duration":7.177250000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-020 journey branch contract schema"],"fullName":"FEAT-020 journey branch contract schema FEAT-020 accepts PRD-020 truth-source labels on provenance claims","status":"passed","title":"FEAT-020 accepts PRD-020 truth-source labels on provenance claims","duration":1.2049269999999979,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-020 journey branch contract schema"],"fullName":"FEAT-020 journey branch contract schema FEAT-020 fails closed on unknown status","status":"passed","title":"FEAT-020 fails closed on unknown status","duration":1.5369830000000206,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-020 journey branch contract schema"],"fullName":"FEAT-020 journey branch contract schema FEAT-020 fails closed on missing required field","status":"passed","title":"FEAT-020 fails closed on missing required field","duration":0.8515110000000163,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-020 journey branch contract schema"],"fullName":"FEAT-020 journey branch contract schema FEAT-020 fails closed on unknown provenance label","status":"passed","title":"FEAT-020 fails closed on unknown provenance label","duration":0.7434910000000059,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-020 journey branch contract schema"],"fullName":"FEAT-020 journey branch contract schema FEAT-020 rejects extra fields","status":"passed","title":"FEAT-020 rejects extra fields","duration":0.49610400000000254,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310560603,"endTime":1785310560615.496,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/journey-schema.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-080 coverage ledger row mapping"],"fullName":"FEAT-080 coverage ledger row mapping FEAT-080 append and query preserve journey branch through last evidence mapping","status":"passed","title":"FEAT-080 append and query preserve journey branch through last evidence mapping","duration":5.677221999999972,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-080 coverage ledger row mapping"],"fullName":"FEAT-080 coverage ledger row mapping FEAT-080 rejects invalid row input fail-closed","status":"passed","title":"FEAT-080 rejects invalid row input fail-closed","duration":1.217757000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-084 scope metrics in coverage ledger"],"fullName":"FEAT-084 scope metrics in coverage ledger FEAT-084 rows carry selection, branch, perturbation, capability, and precondition metrics","status":"passed","title":"FEAT-084 rows carry selection, branch, perturbation, capability, and precondition metrics","duration":0.8215099999999893,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-084 scope metrics in coverage ledger"],"fullName":"FEAT-084 scope metrics in coverage ledger FEAT-084 zero selected targets never certify scope","status":"passed","title":"FEAT-084 zero selected targets never certify scope","duration":0.8884289999999737,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-084 scope metrics in coverage ledger"],"fullName":"FEAT-084 scope metrics in coverage ledger FEAT-084 zero exercised branch count never certifies scope","status":"passed","title":"FEAT-084 zero exercised branch count never certifies scope","duration":0.35849300000000994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-084 scope metrics in coverage ledger"],"fullName":"FEAT-084 scope metrics in coverage ledger FEAT-084 complete metrics certify scope when no gaps remain","status":"passed","title":"FEAT-084 complete metrics certify scope when no gaps remain","duration":0.4576900000000137,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-083 blocking oracle witness requirements"],"fullName":"FEAT-083 blocking oracle witness requirements FEAT-083 requires UNI-010 through UNI-014 witness kinds for blocking oracles","status":"passed","title":"FEAT-083 requires UNI-010 through UNI-014 witness kinds for blocking oracles","duration":0.2493130000000292,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-083 blocking oracle witness requirements"],"fullName":"FEAT-083 blocking oracle witness requirements FEAT-083 missing witness kind makes blocking oracle ineligible fail-closed","status":"passed","title":"FEAT-083 missing witness kind makes blocking oracle ineligible fail-closed","duration":0.7906019999999785,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-083 blocking oracle witness requirements"],"fullName":"FEAT-083 blocking oracle witness requirements FEAT-083 passing complete witness plan is blocking eligible","status":"passed","title":"FEAT-083 passing complete witness plan is blocking eligible","duration":3.027447000000052,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-083 blocking oracle witness requirements"],"fullName":"FEAT-083 blocking oracle witness requirements FEAT-083 failing witness makes blocking oracle ineligible","status":"passed","title":"FEAT-083 failing witness makes blocking oracle ineligible","duration":0.6668410000000335,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A08 coverage-incomplete fixtures"],"fullName":"FEAT-A08 coverage-incomplete fixtures FEAT-A08 empty selector produces coverage-incomplete","status":"passed","title":"FEAT-A08 empty selector produces coverage-incomplete","duration":0.33689499999996997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A08 coverage-incomplete fixtures"],"fullName":"FEAT-A08 coverage-incomplete fixtures FEAT-A08 inert perturbation produces coverage-incomplete","status":"passed","title":"FEAT-A08 inert perturbation produces coverage-incomplete","duration":0.3284280000000308,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A08 coverage-incomplete fixtures"],"fullName":"FEAT-A08 coverage-incomplete fixtures FEAT-A08 failed precondition produces coverage-incomplete","status":"passed","title":"FEAT-A08 failed precondition produces coverage-incomplete","duration":0.3158990000000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A08 coverage-incomplete fixtures"],"fullName":"FEAT-A08 coverage-incomplete fixtures FEAT-A08 known-bad fixture that passes produces coverage-incomplete","status":"passed","title":"FEAT-A08 known-bad fixture that passes produces coverage-incomplete","duration":0.5257159999999885,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-043 omitted combinations feed ledger"],"fullName":"FEAT-043 omitted combinations feed ledger FEAT-043 omitted combinations append uncovered dimension rows for ledger consumption","status":"passed","title":"FEAT-043 omitted combinations append uncovered dimension rows for ledger consumption","duration":3.276305999999977,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310558088,"endTime":1785310558107.2764,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/ledger.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-042 metamorphic relation classes"],"fullName":"FEAT-042 metamorphic relation classes FEAT-042 representation-preserving transform preserves domain meaning","status":"passed","title":"FEAT-042 representation-preserving transform preserves domain meaning","duration":2.3959820000000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-042 metamorphic relation classes"],"fullName":"FEAT-042 metamorphic relation classes FEAT-042 retry non-duplication rejects duplicate committed effects","status":"passed","title":"FEAT-042 retry non-duplication rejects duplicate committed effects","duration":0.8760699999999702,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-042 metamorphic relation classes"],"fullName":"FEAT-042 metamorphic relation classes FEAT-042 independent-op reordering preserves final state","status":"passed","title":"FEAT-042 independent-op reordering preserves final state","duration":0.6808399999999892,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-042 metamorphic relation classes"],"fullName":"FEAT-042 metamorphic relation classes FEAT-042 locale change does not alter stored amount or ownership","status":"passed","title":"FEAT-042 locale change does not alter stored amount or ownership","duration":19.215210000000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-042 metamorphic relation classes"],"fullName":"FEAT-042 metamorphic relation classes FEAT-042 serialization round-trip preserves value","status":"passed","title":"FEAT-042 serialization round-trip preserves value","duration":0.638668999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-042 metamorphic relation classes"],"fullName":"FEAT-042 metamorphic relation classes FEAT-042 relation classes are enumerated and validated fail-closed","status":"passed","title":"FEAT-042 relation classes are enumerated and validated fail-closed","duration":6.824209999999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-047 noninterference case generation"],"fullName":"FEAT-047 noninterference case generation FEAT-047 generates perturbations for order, repetition, parallelism, locale, timezone, runtime, and environment","status":"passed","title":"FEAT-047 generates perturbations for order, repetition, parallelism, locale, timezone, runtime, and environment","duration":1.0651210000000333,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A12 independent scenario outcomes under perturbation"],"fullName":"FEAT-A12 independent scenario outcomes under perturbation FEAT-A12 reordered runs, changed HOME/timezone/runtime, and parallel execution preserve outcomes","status":"passed","title":"FEAT-A12 reordered runs, changed HOME/timezone/runtime, and parallel execution preserve outcomes","duration":2.9469949999999585,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A12 independent scenario outcomes under perturbation"],"fullName":"FEAT-A12 independent scenario outcomes under perturbation FEAT-A12 detects order-dependent and environment-leaking scenarios","status":"passed","title":"FEAT-A12 detects order-dependent and environment-leaking scenarios","duration":0.9769600000000196,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-043 combinatorial t-way planning"],"fullName":"FEAT-043 combinatorial t-way planning FEAT-043 planPairwise selects a 2-way covering set smaller than full cross-product","status":"passed","title":"FEAT-043 planPairwise selects a 2-way covering set smaller than full cross-product","duration":2.749623999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-043 combinatorial t-way planning"],"fullName":"FEAT-043 combinatorial t-way planning FEAT-043 reports every omitted full combination explicitly for ledger consumption","status":"passed","title":"FEAT-043 reports every omitted full combination explicitly for ledger consumption","duration":1.7889279999999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-043 combinatorial t-way planning"],"fullName":"FEAT-043 combinatorial t-way planning FEAT-043 configurable t-way selection covers 3-way tuples when t=3","status":"passed","title":"FEAT-043 configurable t-way selection covers 3-way tuples when t=3","duration":8.425104999999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-043 combinatorial t-way planning"],"fullName":"FEAT-043 combinatorial t-way planning FEAT-043 full cross-product has no omitted combinations when t equals dimension count","status":"passed","title":"FEAT-043 full cross-product has no omitted combinations when t equals dimension count","duration":0.3314739999999574,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation rejects metamorphic specs with empty id","status":"passed","title":"rejects metamorphic specs with empty id","duration":2.0088380000000257,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation rejects combinatorial planning with empty dimensions","status":"passed","title":"rejects combinatorial planning with empty dimensions","duration":0.2955959999999891,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation rejects combinatorial planning with invalid t","status":"passed","title":"rejects combinatorial planning with invalid t","duration":0.38691599999998516,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation rejects noninterference generation without scenario ids","status":"passed","title":"rejects noninterference generation without scenario ids","duration":0.23928999999998268,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation locale and retry metamorphic checks throw on violation","status":"passed","title":"locale and retry metamorphic checks throw on violation","duration":0.46300999999999704,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation independent-op reordering check throws when final states diverge","status":"passed","title":"independent-op reordering check throws when final states diverge","duration":2.9948630000000094,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["metamorphic and combinatorial adapter fail-closed validation"],"fullName":"metamorphic and combinatorial adapter fail-closed validation representation-preserving check throws when meanings diverge","status":"passed","title":"representation-preserving check throws when meanings diverge","duration":0.3492249999999899,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310556071,"endTime":1785310556127.349,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/metamorphic.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-081 semantic mutation operators"],"fullName":"FEAT-081 semantic mutation operators FEAT-081 enumerates semantic mutation kinds fail-closed","status":"passed","title":"FEAT-081 enumerates semantic mutation kinds fail-closed","duration":3.3999379999999633,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-081 semantic mutation operators"],"fullName":"FEAT-081 semantic mutation operators FEAT-081 rejects unknown mutation kinds","status":"passed","title":"FEAT-081 rejects unknown mutation kinds","duration":1.7711199999999963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-081 semantic mutation operators"],"fullName":"FEAT-081 semantic mutation operators FEAT-081 runMutationRound kills every semantic mutant on order fixture seam","status":"passed","title":"FEAT-081 runMutationRound kills every semantic mutant on order fixture seam","duration":1.9964459999999917,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-081 semantic mutation operators"],"fullName":"FEAT-081 semantic mutation operators FEAT-081 surviving semantic mutant becomes coverage finding","status":"passed","title":"FEAT-081 surviving semantic mutant becomes coverage finding","duration":1.0606520000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-082 oracle-deletion ratchet"],"fullName":"FEAT-082 oracle-deletion ratchet FEAT-082 removing owned oracle fails ratchet without reviewed migration","status":"passed","title":"FEAT-082 removing owned oracle fails ratchet without reviewed migration","duration":3.532531000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-082 oracle-deletion ratchet"],"fullName":"FEAT-082 oracle-deletion ratchet FEAT-082 weakening owned oracle fails ratchet without reviewed migration","status":"passed","title":"FEAT-082 weakening owned oracle fails ratchet without reviewed migration","duration":0.5157690000000343,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-082 oracle-deletion ratchet"],"fullName":"FEAT-082 oracle-deletion ratchet FEAT-082 reviewed contract migration retires oracle removal","status":"passed","title":"FEAT-082 reviewed contract migration retires oracle removal","duration":0.4576279999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A07 mutation removing semantic oracle fails coverage ratchet"],"fullName":"FEAT-A07 mutation removing semantic oracle fails coverage ratchet FEAT-A07 oracle removal without migration fails integrated Phase 1 ratchet","status":"passed","title":"FEAT-A07 oracle removal without migration fails integrated Phase 1 ratchet","duration":0.3966500000000224,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["mutation threshold measurement"],"fullName":"mutation threshold measurement measured fixture corpus thresholds are derived from runMutationRound scores","status":"passed","title":"measured fixture corpus thresholds are derived from runMutationRound scores","duration":1.3527910000000247,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310558498,"endTime":1785310558512.3528,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/mutation.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 conservation combinator detects balance closure violation","status":"passed","title":"FEAT-030 conservation combinator detects balance closure violation","duration":2.6746669999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 nonnegative-bounds combinator detects negative quantity","status":"passed","title":"FEAT-030 nonnegative-bounds combinator detects negative quantity","duration":0.5407930000000079,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 reversal-bounded combinator detects refund exceeding original","status":"passed","title":"FEAT-030 reversal-bounded combinator detects refund exceeding original","duration":0.361505999999963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 legal-transitions combinator detects illegal state","status":"passed","title":"FEAT-030 legal-transitions combinator detects illegal state","duration":0.3523519999999962,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 ownership-tenant-isolation combinator detects cross-tenant access","status":"passed","title":"FEAT-030 ownership-tenant-isolation combinator detects cross-tenant access","duration":0.36820299999999406,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 referential-lifecycle-integrity combinator detects dangling reference","status":"passed","title":"FEAT-030 referential-lifecycle-integrity combinator detects dangling reference","duration":0.394911000000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 effect-multiplicity combinator detects duplicate committed effect","status":"passed","title":"FEAT-030 effect-multiplicity combinator detects duplicate committed effect","duration":0.530824999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 monotonic-versions-ordering combinator detects version regression","status":"passed","title":"FEAT-030 monotonic-versions-ordering combinator detects version regression","duration":0.6419510000000059,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-030 property invariant classes as generic combinators"],"fullName":"FEAT-030 property invariant classes as generic combinators FEAT-030 runPropertyInvariant passes when conservation holds","status":"passed","title":"FEAT-030 runPropertyInvariant passes when conservation holds","duration":5.381333000000041,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-031 execution record fields"],"fullName":"FEAT-031 execution record fields FEAT-031 records generated input, states, actions, seed, shrink path, and counterexample on failure","status":"passed","title":"FEAT-031 records generated input, states, actions, seed, shrink path, and counterexample on failure","duration":2.8041180000000168,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A03 reproducible minimal counterexample"],"fullName":"FEAT-A03 reproducible minimal counterexample FEAT-A03 replaying recorded seed and shrink path reproduces the counterexample","status":"passed","title":"FEAT-A03 replaying recorded seed and shrink path reproduces the counterexample","duration":1.965721999999971,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-032 legal and illegal transition exploration"],"fullName":"FEAT-032 legal and illegal transition exploration FEAT-032 legal runs respect command preconditions","status":"passed","title":"FEAT-032 legal runs respect command preconditions","duration":6.402264000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-032 legal and illegal transition exploration"],"fullName":"FEAT-032 legal and illegal transition exploration FEAT-032 illegal runs explore trust-boundary transitions separately","status":"passed","title":"FEAT-032 illegal runs explore trust-boundary transitions separately","duration":1.6908429999999726,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-041 stateful model-based generation"],"fullName":"FEAT-041 stateful model-based generation FEAT-041 state machine adapter runs legal command sequences against model and real","status":"passed","title":"FEAT-041 state machine adapter runs legal command sequences against model and real","duration":2.720954000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-041 stateful model-based generation"],"fullName":"FEAT-041 stateful model-based generation FEAT-041 detects model-real divergence via conservation invariant","status":"passed","title":"FEAT-041 detects model-real divergence via conservation invariant","duration":1.7367110000000139,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["property adapter fail-closed validation"],"fullName":"property adapter fail-closed validation rejects specs with empty id","status":"passed","title":"rejects specs with empty id","duration":0.46900599999997894,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["property adapter fail-closed validation"],"fullName":"property adapter fail-closed validation rejects state machine specs missing command arbitraries","status":"passed","title":"rejects state machine specs missing command arbitraries","duration":0.28232500000001437,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310558812,"endTime":1785310558842.469,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/property.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-048 protocol case generation"],"fullName":"FEAT-048 protocol case generation FEAT-048 enumerates protocol case kinds fail-closed","status":"passed","title":"FEAT-048 enumerates protocol case kinds fail-closed","duration":3.486565999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-048 protocol case generation"],"fullName":"FEAT-048 protocol case generation FEAT-048 generateProtocolCases derives chunk-boundary and terminal-frame cases","status":"passed","title":"FEAT-048 generateProtocolCases derives chunk-boundary and terminal-frame cases","duration":1.568380999999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-048 protocol case generation"],"fullName":"FEAT-048 protocol case generation FEAT-048 generateProtocolCases derives stdout/stderr contamination and encoding cases","status":"passed","title":"FEAT-048 generateProtocolCases derives stdout/stderr contamination and encoding cases","duration":0.5523360000000253,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-048 protocol case generation"],"fullName":"FEAT-048 protocol case generation FEAT-048 protocol case kinds map to UNI-060 through UNI-063","status":"passed","title":"FEAT-048 protocol case kinds map to UNI-060 through UNI-063","duration":0.5758020000000101,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-048 protocol case generation"],"fullName":"FEAT-048 protocol case generation FEAT-048 rejects invalid protocol contracts fail-closed","status":"passed","title":"FEAT-048 rejects invalid protocol contracts fail-closed","duration":1.1092279999999732,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-049 closure inventory and case generation"],"fullName":"FEAT-049 closure inventory and case generation FEAT-049 enumerates closure case kinds fail-closed","status":"passed","title":"FEAT-049 enumerates closure case kinds fail-closed","duration":0.3967049999999972,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-049 closure inventory and case generation"],"fullName":"FEAT-049 closure inventory and case generation FEAT-049 buildClosureInventory rejects source-only reachability claims","status":"passed","title":"FEAT-049 buildClosureInventory rejects source-only reachability claims","duration":0.5081450000000132,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-049 closure inventory and case generation"],"fullName":"FEAT-049 closure inventory and case generation FEAT-049 generateClosureCases derives runtime, artifact, inventory, and binding cases","status":"passed","title":"FEAT-049 generateClosureCases derives runtime, artifact, inventory, and binding cases","duration":0.659595999999965,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-049 closure inventory and case generation"],"fullName":"FEAT-049 closure inventory and case generation FEAT-049 closure case kinds map to UNI-050 through UNI-084","status":"passed","title":"FEAT-049 closure case kinds map to UNI-050 through UNI-084","duration":0.6291969999999765,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-013 discovery inventory never treats source presence as packaged reachability"],"fullName":"FEAT-013 discovery inventory never treats source presence as packaged reachability FEAT-013 source-only inventory entry fails closure without packaged reachability","status":"passed","title":"FEAT-013 source-only inventory entry fails closure without packaged reachability","duration":12.021042999999963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-013 discovery inventory never treats source presence as packaged reachability"],"fullName":"FEAT-013 discovery inventory never treats source presence as packaged reachability FEAT-013 buildClosureInventory rejects source-present but not packaged-reachable production entries","status":"passed","title":"FEAT-013 buildClosureInventory rejects source-present but not packaged-reachable production entries","duration":0.4035069999999905,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A11 chunked protocol and stdout-contamination fixtures"],"fullName":"FEAT-A11 chunked protocol and stdout-contamination fixtures FEAT-A11 known-good chunked protocol stays silent","status":"passed","title":"FEAT-A11 known-good chunked protocol stays silent","duration":2.380927999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A11 chunked protocol and stdout-contamination fixtures"],"fullName":"FEAT-A11 chunked protocol and stdout-contamination fixtures FEAT-A11 chunk-dependent decode across boundaries is blocking eligible","status":"passed","title":"FEAT-A11 chunk-dependent decode across boundaries is blocking eligible","duration":1.4521190000000388,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A11 chunked protocol and stdout-contamination fixtures"],"fullName":"FEAT-A11 chunked protocol and stdout-contamination fixtures FEAT-A11 stdout contamination fixture satisfies UNI-061","status":"passed","title":"FEAT-A11 stdout contamination fixture satisfies UNI-061","duration":1.248401000000058,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A11 chunked protocol and stdout-contamination fixtures"],"fullName":"FEAT-A11 chunked protocol and stdout-contamination fixtures FEAT-A11 known-good stdout protocol stays silent","status":"passed","title":"FEAT-A11 known-good stdout protocol stays silent","duration":0.9370769999999311,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A13 closure fixtures fail without source-only reachability"],"fullName":"FEAT-A13 closure fixtures fail without source-only reachability FEAT-A13 missing runtime file fails closure","status":"passed","title":"FEAT-A13 missing runtime file fails closure","duration":1.2959110000000464,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A13 closure fixtures fail without source-only reachability"],"fullName":"FEAT-A13 closure fixtures fail without source-only reachability FEAT-A13 stale built artifact fails closure","status":"passed","title":"FEAT-A13 stale built artifact fails closure","duration":1.4342930000000251,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A13 closure fixtures fail without source-only reachability"],"fullName":"FEAT-A13 closure fixtures fail without source-only reachability FEAT-A13 accidental test route fails closure","status":"passed","title":"FEAT-A13 accidental test route fails closure","duration":1.1814350000000786,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A13 closure fixtures fail without source-only reachability"],"fullName":"FEAT-A13 closure fixtures fail without source-only reachability FEAT-A13 absent production binding fails closure","status":"passed","title":"FEAT-A13 absent production binding fails closure","duration":1.2357230000000072,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A13 closure fixtures fail without source-only reachability"],"fullName":"FEAT-A13 closure fixtures fail without source-only reachability FEAT-A13 known-good closure inventory stays silent","status":"passed","title":"FEAT-A13 known-good closure inventory stays silent","duration":0.9501520000000028,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["protocol and closure adapter fail-closed validation"],"fullName":"protocol and closure adapter fail-closed validation runProtocolCheck rejects corrupt fixture input missing fixtureId","status":"passed","title":"runProtocolCheck rejects corrupt fixture input missing fixtureId","duration":0.9796079999999847,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["protocol and closure adapter fail-closed validation"],"fullName":"protocol and closure adapter fail-closed validation runClosureCheck rejects corrupt fixture input missing fixtureId","status":"passed","title":"runClosureCheck rejects corrupt fixture input missing fixtureId","duration":0.2823789999999917,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["protocol and closure adapter fail-closed validation"],"fullName":"protocol and closure adapter fail-closed validation UNI-084 empty selection without expected-empty contract yields coverage gap","status":"passed","title":"UNI-084 empty selection without expected-empty contract yields coverage gap","duration":0.8334839999999986,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310556634,"endTime":1785310556670.8335,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/protocol.test.ts"},{"assertionResults":[{"ancestorTitles":["FEAT-060 negative security journey generators"],"fullName":"FEAT-060 negative security journey generators FEAT-060 enumerates negative journey kinds fail-closed","status":"passed","title":"FEAT-060 enumerates negative journey kinds fail-closed","duration":3.1379069999999842,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-060 negative security journey generators"],"fullName":"FEAT-060 negative security journey generators FEAT-060 generateNegativeSecurityJourneys produces all authorization classes","status":"passed","title":"FEAT-060 generateNegativeSecurityJourneys produces all authorization classes","duration":0.9428710000000251,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-060 negative security journey generators"],"fullName":"FEAT-060 negative security journey generators FEAT-060 rejects unknown journey kinds fail-closed","status":"passed","title":"FEAT-060 rejects unknown journey kinds fail-closed","duration":1.6318009999999958,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 cross-tenant fixture verifies denial and zero side effects"],"fullName":"FEAT-A05 cross-tenant fixture verifies denial and zero side effects FEAT-A05 confirmed cross-tenant journey denies access with no side effects","status":"passed","title":"FEAT-A05 confirmed cross-tenant journey denies access with no side effects","duration":3.1462850000000344,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 cross-tenant fixture verifies denial and zero side effects"],"fullName":"FEAT-A05 cross-tenant fixture verifies denial and zero side effects FEAT-061 denied response with unauthorized side effect fails confirmed security contract","status":"passed","title":"FEAT-061 denied response with unauthorized side effect fails confirmed security contract","duration":3.332556000000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 cross-tenant fixture verifies denial and zero side effects"],"fullName":"FEAT-A05 cross-tenant fixture verifies denial and zero side effects FEAT-060 object-level and field-level authz journeys deny with zero side effects","status":"passed","title":"FEAT-060 object-level and field-level authz journeys deny with zero side effects","duration":1.849944999999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A05 cross-tenant fixture verifies denial and zero side effects"],"fullName":"FEAT-A05 cross-tenant fixture verifies denial and zero side effects FEAT-060 forged role claim and direct API access journeys deny with zero side effects","status":"passed","title":"FEAT-060 forged role claim and direct API access journeys deny with zero side effects","duration":1.5906909999999925,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-062 auth fixture failure produces coverage gap"],"fullName":"FEAT-062 auth fixture failure produces coverage gap FEAT-062 auth fixture failure yields coverage gap never certification","status":"passed","title":"FEAT-062 auth fixture failure yields coverage gap never certification","duration":1.5383330000000228,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A14 provenance authority per UNI-040 and UNI-041"],"fullName":"FEAT-A14 provenance authority per UNI-040 and UNI-041 FEAT-A14 enumerates authority fields fail-closed","status":"passed","title":"FEAT-A14 enumerates authority fields fail-closed","duration":0.5097039999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A14 provenance authority per UNI-040 and UNI-041"],"fullName":"FEAT-A14 provenance authority per UNI-040 and UNI-041 FEAT-063 client duplicate security field cannot override declared authority","status":"passed","title":"FEAT-063 client duplicate security field cannot override declared authority","duration":1.1407399999999939,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A14 provenance authority per UNI-040 and UNI-041"],"fullName":"FEAT-A14 provenance authority per UNI-040 and UNI-041 FEAT-063 broken resolver trusting client duplicate fails authority check","status":"passed","title":"FEAT-063 broken resolver trusting client duplicate fails authority check","duration":1.2768939999999702,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A14 provenance authority per UNI-040 and UNI-041"],"fullName":"FEAT-A14 provenance authority per UNI-040 and UNI-041 FEAT-A14 untrusted forwarding header cannot override declared authority","status":"passed","title":"FEAT-A14 untrusted forwarding header cannot override declared authority","duration":0.81436599999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A14 provenance authority per UNI-040 and UNI-041"],"fullName":"FEAT-A14 provenance authority per UNI-040 and UNI-041 FEAT-A14 broken resolver trusting untrusted header fails authority check","status":"passed","title":"FEAT-A14 broken resolver trusting untrusted header fails authority check","duration":0.9291840000000775,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A15 denied and not-found equivalence per UNI-042"],"fullName":"FEAT-A15 denied and not-found equivalence per UNI-042 FEAT-A15 without confirmed contract timing comparison remains advisory","status":"passed","title":"FEAT-A15 without confirmed contract timing comparison remains advisory","duration":1.3635340000000724,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A15 denied and not-found equivalence per UNI-042"],"fullName":"FEAT-A15 denied and not-found equivalence per UNI-042 FEAT-A15 with confirmed contract timing mismatch is blocking-eligible","status":"passed","title":"FEAT-A15 with confirmed contract timing mismatch is blocking-eligible","duration":1.53870500000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A15 denied and not-found equivalence per UNI-042"],"fullName":"FEAT-A15 denied and not-found equivalence per UNI-042 FEAT-064 matching denied and not-found cases satisfy equivalence","status":"passed","title":"FEAT-064 matching denied and not-found cases satisfy equivalence","duration":0.7151319999999259,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A15 denied and not-found equivalence per UNI-042"],"fullName":"FEAT-A15 denied and not-found equivalence per UNI-042 FEAT-064 mismatched status or body fails equivalence","status":"passed","title":"FEAT-064 mismatched status or body fails equivalence","duration":0.9634549999999535,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A16 context-safe validation per UNI-043"],"fullName":"FEAT-A16 context-safe validation per UNI-043 FEAT-A16 enumerates untrusted input contexts fail-closed","status":"passed","title":"FEAT-A16 enumerates untrusted input contexts fail-closed","duration":0.2844169999999622,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A16 context-safe validation per UNI-043"],"fullName":"FEAT-A16 context-safe validation per UNI-043 FEAT-A16 unsafe redirect and path values rejected with typed failures","status":"passed","title":"FEAT-A16 unsafe redirect and path values rejected with typed failures","duration":7.1626340000000255,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A16 context-safe validation per UNI-043"],"fullName":"FEAT-A16 context-safe validation per UNI-043 FEAT-065 safe redirect path filename origin values accepted","status":"passed","title":"FEAT-065 safe redirect path filename origin values accepted","duration":4.735374000000093,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-A16 context-safe validation per UNI-043"],"fullName":"FEAT-A16 context-safe validation per UNI-043 FEAT-A16 broken validator accepting unsafe values fails context-safe check","status":"passed","title":"FEAT-A16 broken validator accepting unsafe values fails context-safe check","duration":1.0705209999999852,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310555743,"endTime":1785310555783.0706,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/feature/test/security.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 a11y fixture gallery"],"fullName":"UI-A01 a11y fixture gallery UI-A01 UI-060 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-060 positive fixture fires with UI-001 evidence","duration":324.08742000000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 a11y fixture gallery"],"fullName":"UI-A01 a11y fixture gallery UI-A01 UI-060 negative fixture stays silent","status":"passed","title":"UI-A01 UI-060 negative fixture stays silent","duration":308.4503920000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 a11y fixture gallery"],"fullName":"UI-A01 a11y fixture gallery UI-A01 UI-061 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-061 positive fixture fires with UI-001 evidence","duration":285.66712499999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 a11y fixture gallery"],"fullName":"UI-A01 a11y fixture gallery UI-A01 UI-061 negative fixture stays silent","status":"passed","title":"UI-A01 UI-061 negative fixture stays silent","duration":283.06071399999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 a11y fixture gallery"],"fullName":"UI-A01 a11y fixture gallery UI-A01 UI-062 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-062 positive fixture fires with UI-001 evidence","duration":349.8916180000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 a11y fixture gallery"],"fullName":"UI-A01 a11y fixture gallery UI-A01 UI-062 negative fixture stays silent","status":"passed","title":"UI-A01 UI-062 negative fixture stays silent","duration":345.5579029999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-061 direct accessibility checks"],"fullName":"UI-061 direct accessibility checks UI-061 covers keyboard trap, focus, modal, ids, labels, landmarks, target size, and zoom/reflow","status":"passed","title":"UI-061 covers keyboard trap, focus, modal, ids, labels, landmarks, target size, and zoom/reflow","duration":287.43183,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-062 declared action sequence state checks"],"fullName":"UI-062 declared action sequence state checks UI-062 covers route leakage, stale cache, back-forward, offline, theme, and scroll-lock","status":"passed","title":"UI-062 covers route leakage, stale cache, back-forward, offline, theme, and scroll-lock","duration":346.9518509999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-060 axe-core integration"],"fullName":"UI-060 axe-core integration UI-060 deterministic axe violations may block on known-bad duplicate-id","status":"passed","title":"UI-060 deterministic axe violations may block on known-bad duplicate-id","duration":283.141478,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-082 capability profile"],"fullName":"UI-082 capability profile UI-082 DATA-072 records detector capability with enabled/disabled rules and known-bad calibration","status":"passed","title":"UI-082 DATA-072 records detector capability with enabled/disabled rules and known-bad calibration","duration":825.0797449999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-082 capability profile"],"fullName":"UI-082 capability profile UI-082 disabled blocking rule on known-bad produces coverage gap not green","status":"passed","title":"UI-082 disabled blocking rule on known-bad produces coverage gap not green","duration":290.95371200000045,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A11 forced-colors behavior anchor"],"fullName":"UI-A11 forced-colors behavior anchor UI-A11 browser computed values override axe approximation on conflict","status":"passed","title":"UI-A11 browser computed values override axe approximation on conflict","duration":1066.7885420000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A11 forced-colors behavior anchor"],"fullName":"UI-A11 forced-colors behavior anchor UI-A11 unsupported forced-colors capability remains explicit coverage gap","status":"passed","title":"UI-A11 unsupported forced-colors capability remains explicit coverage gap","duration":266.1973600000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-060 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-060 intentional-exception fixture stays silent via scoped contract","duration":290.1604130000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-061 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-061 intentional-exception fixture stays silent via scoped contract","duration":292.1201739999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-062 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-062 intentional-exception fixture stays silent via scoped contract","duration":343.5053889999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-082 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-082 intentional-exception fixture stays silent via scoped contract","duration":275.97095100000024,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-060 RTL variant detects violations","status":"passed","title":"UI-A01 UI-060 RTL variant detects violations","duration":292.03219199999967,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-061 RTL variant detects violations","status":"passed","title":"UI-A01 UI-061 RTL variant detects violations","duration":323.6182520000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-062 RTL variant detects violations","status":"passed","title":"UI-A01 UI-062 RTL variant detects violations","duration":376.5799619999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-060 scoped contract does not disable other a11y detectors","status":"passed","title":"UI-A03 UI-060 scoped contract does not disable other a11y detectors","duration":608.1332739999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["a11y detector registry"],"fullName":"a11y detector registry exports all accessibility detectors for UI-060 through UI-082","status":"passed","title":"exports all accessibility detectors for UI-060 through UI-082","duration":0.4497000000010303,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310743548,"endTime":1785310751614.4497,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/a11y.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A07 original screenshot byte stability"],"fullName":"UI-A07 original screenshot byte stability UI-A07 original screenshot remains byte-unchanged after annotateScreenshot","status":"passed","title":"UI-A07 original screenshot remains byte-unchanged after annotateScreenshot","duration":5.314796000000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A07 original screenshot byte stability"],"fullName":"UI-A07 original screenshot byte stability UI-A07 derivative artifact self-identifies as derived beside the original","status":"passed","title":"UI-A07 derivative artifact self-identifies as derived beside the original","duration":2.4044529999999895,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-026 measured-coordinate annotation renderer"],"fullName":"UI-026 measured-coordinate annotation renderer UI-026 draws defect outline and numbered marker from measured coordinates","status":"passed","title":"UI-026 draws defect outline and numbered marker from measured coordinates","duration":1.955171000000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-011 geometry-derived annotation"],"fullName":"REPORT-011 geometry-derived annotation REPORT-011 uses recorded geometry coordinates instead of visual-model inference","status":"passed","title":"REPORT-011 uses recorded geometry coordinates instead of visual-model inference","duration":1.9412510000000083,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-011 geometry-derived annotation"],"fullName":"REPORT-011 geometry-derived annotation REPORT-011 fails closed when original artifact hash does not match contract","status":"passed","title":"REPORT-011 fails closed when original artifact hash does not match contract","duration":1.7926530000000014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310813446,"endTime":1785310813459.7927,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/annotation.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 assets fixture gallery"],"fullName":"UI-A01 assets fixture gallery UI-A01 UI-070 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-070 positive fixture fires with UI-001 evidence","duration":188.27611799999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 assets fixture gallery"],"fullName":"UI-A01 assets fixture gallery UI-A01 UI-070 negative fixture stays silent","status":"passed","title":"UI-A01 UI-070 negative fixture stays silent","duration":145.864423,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 assets fixture gallery"],"fullName":"UI-A01 assets fixture gallery UI-A01 UI-071 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-071 positive fixture fires with UI-001 evidence","duration":147.140758,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 assets fixture gallery"],"fullName":"UI-A01 assets fixture gallery UI-A01 UI-071 negative fixture stays silent","status":"passed","title":"UI-A01 UI-071 negative fixture stays silent","duration":149.95858199999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 assets fixture gallery"],"fullName":"UI-A01 assets fixture gallery UI-A01 UI-072 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-072 positive fixture fires with UI-001 evidence","duration":152.5536649999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 assets fixture gallery"],"fullName":"UI-A01 assets fixture gallery UI-A01 UI-072 negative fixture stays silent","status":"passed","title":"UI-A01 UI-072 negative fixture stays silent","duration":163.83248700000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 missing/blocked image"],"fullName":"UI-070 missing/blocked image UI-070 records request evidence, decode failure, and visible fallback state","status":"passed","title":"UI-070 records request evidence, decode failure, and visible fallback state","duration":149.4957649999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-071 large empty container"],"fullName":"UI-071 large empty container UI-071 includes dimensions, descendants, background, and associated failures","status":"passed","title":"UI-071 includes dimensions, descendants, background, and associated failures","duration":150.00824199999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-072 unexplained disabled styling"],"fullName":"UI-072 unexplained disabled styling UI-072 compares opacity, cursor, pointer behavior, semantic disabled state, accessible explanation, and sibling norms","status":"passed","title":"UI-072 compares opacity, cursor, pointer behavior, semantic disabled state, accessible explanation, and sibling norms","duration":151.98270200000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-070 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-070 intentional-exception fixture stays silent via scoped contract","duration":164.9086809999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-070 RTL variant fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-070 RTL variant fires with UI-001 evidence","duration":148.7321199999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-071 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-071 intentional-exception fixture stays silent via scoped contract","duration":153.61084800000026,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-071 RTL variant fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-071 RTL variant fires with UI-001 evidence","duration":147.5667800000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-072 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-072 intentional-exception fixture stays silent via scoped contract","duration":149.01959799999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-072 RTL variant fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-072 RTL variant fires with UI-001 evidence","duration":149.52423,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 image settlement is bounded"],"fullName":"UI-070 image settlement is bounded UI-070 a lazy image that never enters the viewport does not hang the cell","status":"passed","title":"UI-070 a lazy image that never enters the viewport does not hang the cell","duration":6348.759437999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 anonymous images get distinct identities"],"fullName":"UI-070 anonymous images get distinct identities UI-070 two broken images without ids produce two findings","status":"passed","title":"UI-070 two broken images without ids produce two findings","duration":174.6560300000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-070 repeated test ids stay distinguishable"],"fullName":"UI-070 repeated test ids stay distinguishable UI-070 broken images in two cards sharing a test id produce two findings","status":"passed","title":"UI-070 broken images in two cards sharing a test id produce two findings","duration":170.56426900000042,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310774430,"endTime":1785310783437.5642,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/assets.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A10 UI-056 auth adapter cell seam"],"fullName":"UI-A10 UI-056 auth adapter cell seam UI-A10 UI-056 an adapter returning a mismatched role fails the cell as harness","status":"passed","title":"UI-A10 UI-056 an adapter returning a mismatched role fails the cell as harness","duration":89.82977999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 UI-056 auth adapter cell seam"],"fullName":"UI-A10 UI-056 auth adapter cell seam UI-A10 UI-056 an adapter that throws fails the cell as harness","status":"passed","title":"UI-A10 UI-056 an adapter that throws fails the cell as harness","duration":63.412954999999954,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 UI-056 auth adapter cell seam"],"fullName":"UI-A10 UI-056 auth adapter cell seam UI-A10 UI-056 a matching proof yields evidence","status":"passed","title":"UI-A10 UI-056 a matching proof yields evidence","duration":662.4542060000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310972891,"endTime":1785310973706.454,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/auth-adapter.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-040 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-040 positive fixture fires with UI-001 evidence","duration":293.37150999999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-040 negative fixture stays silent","status":"passed","title":"UI-A01 UI-040 negative fixture stays silent","duration":260.23862599999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-041 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-041 positive fixture fires with UI-001 evidence","duration":799.8811310000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-041 negative fixture stays silent","status":"passed","title":"UI-A01 UI-041 negative fixture stays silent","duration":589.0355950000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-042 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-042 positive fixture fires with UI-001 evidence","duration":787.4538440000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-042 negative fixture stays silent","status":"passed","title":"UI-A01 UI-042 negative fixture stays silent","duration":599.4121680000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-043 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-043 positive fixture fires with UI-001 evidence","duration":784.165262,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-043 negative fixture stays silent","status":"passed","title":"UI-A01 UI-043 negative fixture stays silent","duration":427.6486130000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-044 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-044 positive fixture fires with UI-001 evidence","duration":797.4196890000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 consistency fixture gallery"],"fullName":"UI-A01 consistency fixture gallery UI-A01 UI-044 negative fixture stays silent","status":"passed","title":"UI-A01 UI-044 negative fixture stays silent","duration":434.8304329999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-040 shared chrome fingerprint"],"fullName":"UI-040 shared chrome fingerprint UI-040 fingerprints landmarks, labels, links, auth controls, headings, locale, and direction","status":"passed","title":"UI-040 fingerprints landmarks, labels, links, auth controls, headings, locale, and direction","duration":512.2837550000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-041 fingerprint clustering"],"fullName":"UI-041 fingerprint clustering UI-041 reports provisional non-dominant clusters only","status":"passed","title":"UI-041 reports provisional non-dominant clusters only","duration":754.4270850000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-042 fingerprint outlier report"],"fullName":"UI-042 fingerprint outlier report UI-042 provides exact structural diff and prevalence","status":"passed","title":"UI-042 provides exact structural diff and prevalence","duration":778.029735000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-043 cohort separation"],"fullName":"UI-043 cohort separation UI-043 separates checkout, authentication, and standard layout cohorts","status":"passed","title":"UI-043 separates checkout, authentication, and standard layout cohorts","duration":764.9560450000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-044 computed-style fingerprint"],"fullName":"UI-044 computed-style fingerprint UI-044 reports computed-style outlier advisory per UNI-094","status":"passed","title":"UI-044 reports computed-style outlier advisory per UNI-094","duration":767.7743620000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A04 dominant-cluster outlier lane behavior"],"fullName":"UI-A04 dominant-cluster outlier lane behavior UI-A04 dominant-cluster outlier stays advisory before contract promotion","status":"passed","title":"UI-A04 dominant-cluster outlier stays advisory before contract promotion","duration":760.2411909999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A04 dominant-cluster outlier lane behavior"],"fullName":"UI-A04 dominant-cluster outlier lane behavior UI-A04 identical outlier blocks after exact-scope contract promotion","status":"passed","title":"UI-A04 identical outlier blocks after exact-scope contract promotion","duration":1545.3056969999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-040 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-040 intentional-exception fixture stays silent via scoped contract","duration":237.964347000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-041 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-041 intentional-exception fixture stays silent via scoped contract","duration":763.118375,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-042 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-042 intentional-exception fixture stays silent via scoped contract","duration":777.5359509999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-043 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-043 intentional-exception fixture stays silent via scoped contract","duration":586.1837859999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-044 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-044 intentional-exception fixture stays silent via scoped contract","duration":421.3944679999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-042 RTL variant detects fingerprint outlier","status":"passed","title":"UI-A01 UI-042 RTL variant detects fingerprint outlier","duration":774.6812850000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-044 changed-fingerprint variant produces distinct style measurement","status":"passed","title":"UI-A01 UI-044 changed-fingerprint variant produces distinct style measurement","duration":1372.7624410000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-042 scoped contract does not disable other consistency detectors","status":"passed","title":"UI-A03 UI-042 scoped contract does not disable other consistency detectors","duration":1528.8937299999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-040 without chrome contract classifies as advisory","status":"passed","title":"UI-002 UI-040 without chrome contract classifies as advisory","duration":231.0405049999972,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-042 outlier without cohort contract remains advisory","status":"passed","title":"UI-002 UI-042 outlier without cohort contract remains advisory","duration":761.0119230000018,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310723928,"endTime":1785310743040.012,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/consistency.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-010"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-010 UNI-013 UI-010 fires on chromium ltr","status":"passed","title":"UNI-013 UI-010 fires on chromium ltr","duration":1420.90511,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-010"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-010 UNI-013 UI-010 fires on chromium rtl","status":"passed","title":"UNI-013 UI-010 fires on chromium rtl","duration":1449.647209,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-010"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-010 UNI-013 UI-010 fires on firefox ltr","status":"passed","title":"UNI-013 UI-010 fires on firefox ltr","duration":2539.7124080000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-010"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-010 UNI-013 UI-010 fires on firefox rtl","status":"passed","title":"UNI-013 UI-010 fires on firefox rtl","duration":2427.751967,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-010"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-010 UNI-013 UI-010 fires on webkit ltr","status":"passed","title":"UNI-013 UI-010 fires on webkit ltr","duration":671.9906149999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-010"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-010 UNI-013 UI-010 fires on webkit rtl","status":"passed","title":"UNI-013 UI-010 fires on webkit rtl","duration":671.4208989999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-011"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-011 UNI-013 UI-011 fires on chromium ltr","status":"passed","title":"UNI-013 UI-011 fires on chromium ltr","duration":1334.1152760000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-011"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-011 UNI-013 UI-011 fires on chromium rtl","status":"passed","title":"UNI-013 UI-011 fires on chromium rtl","duration":1320.2155110000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-011"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-011 UNI-013 UI-011 fires on firefox ltr","status":"passed","title":"UNI-013 UI-011 fires on firefox ltr","duration":2445.663698999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-011"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-011 UNI-013 UI-011 fires on firefox rtl","status":"passed","title":"UNI-013 UI-011 fires on firefox rtl","duration":2449.0773050000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-011"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-011 UNI-013 UI-011 fires on webkit ltr","status":"passed","title":"UNI-013 UI-011 fires on webkit ltr","duration":684.2314249999981,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-011"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-011 UNI-013 UI-011 fires on webkit rtl","status":"passed","title":"UNI-013 UI-011 fires on webkit rtl","duration":666.119375000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-013"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-013 UNI-013 UI-013 fires on chromium ltr","status":"passed","title":"UNI-013 UI-013 fires on chromium ltr","duration":1339.195345,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-013"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-013 UNI-013 UI-013 fires on chromium rtl","status":"passed","title":"UNI-013 UI-013 fires on chromium rtl","duration":1318.3738819999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-013"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-013 UNI-013 UI-013 fires on firefox ltr","status":"passed","title":"UNI-013 UI-013 fires on firefox ltr","duration":2437.980437000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-013"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-013 UNI-013 UI-013 fires on firefox rtl","status":"passed","title":"UNI-013 UI-013 fires on firefox rtl","duration":2533.7195600000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-013"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-013 UNI-013 UI-013 fires on webkit ltr","status":"passed","title":"UNI-013 UI-013 fires on webkit ltr","duration":661.4782599999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-013"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-013 UNI-013 UI-013 fires on webkit rtl","status":"passed","title":"UNI-013 UI-013 fires on webkit rtl","duration":651.7594219999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-014"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-014 UNI-013 UI-014 fires on chromium ltr","status":"passed","title":"UNI-013 UI-014 fires on chromium ltr","duration":1342.0506639999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-014"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-014 UNI-013 UI-014 fires on chromium rtl","status":"passed","title":"UNI-013 UI-014 fires on chromium rtl","duration":1326.988787000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-014"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-014 UNI-013 UI-014 fires on firefox ltr","status":"passed","title":"UNI-013 UI-014 fires on firefox ltr","duration":2418.380316999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-014"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-014 UNI-013 UI-014 fires on firefox rtl","status":"passed","title":"UNI-013 UI-014 fires on firefox rtl","duration":2450.9678490000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-014"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-014 UNI-013 UI-014 fires on webkit ltr","status":"passed","title":"UNI-013 UI-014 fires on webkit ltr","duration":653.2117689999941,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-014"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-014 UNI-013 UI-014 fires on webkit rtl","status":"passed","title":"UNI-013 UI-014 fires on webkit rtl","duration":663.2451379999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-015"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-015 UNI-013 UI-015 fires on chromium ltr","status":"passed","title":"UNI-013 UI-015 fires on chromium ltr","duration":1323.797222000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-015"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-015 UNI-013 UI-015 fires on chromium rtl","status":"passed","title":"UNI-013 UI-015 fires on chromium rtl","duration":1319.959103000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-015"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-015 UNI-013 UI-015 fires on firefox ltr","status":"passed","title":"UNI-013 UI-015 fires on firefox ltr","duration":2436.108441999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-015"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-015 UNI-013 UI-015 fires on firefox rtl","status":"passed","title":"UNI-013 UI-015 fires on firefox rtl","duration":2474.7852770000027,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-015"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-015 UNI-013 UI-015 fires on webkit ltr","status":"passed","title":"UNI-013 UI-015 fires on webkit ltr","duration":656.8858029999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-015"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-015 UNI-013 UI-015 fires on webkit rtl","status":"passed","title":"UNI-013 UI-015 fires on webkit rtl","duration":659.6978139999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-016"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-016 UNI-013 UI-016 fires on chromium ltr","status":"passed","title":"UNI-013 UI-016 fires on chromium ltr","duration":993.7641520000034,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-016"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-016 UNI-013 UI-016 fires on chromium rtl","status":"passed","title":"UNI-013 UI-016 fires on chromium rtl","duration":1098.429274000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-016"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-016 UNI-013 UI-016 fires on firefox ltr","status":"passed","title":"UNI-013 UI-016 fires on firefox ltr","duration":2039.0166199999949,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-016"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-016 UNI-013 UI-016 fires on firefox rtl","status":"passed","title":"UNI-013 UI-016 fires on firefox rtl","duration":1982.4337439999945,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-016"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-016 UNI-013 UI-016 fires on webkit ltr","status":"passed","title":"UNI-013 UI-016 fires on webkit ltr","duration":675.3828160000048,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-016"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-016 UNI-013 UI-016 fires on webkit rtl","status":"passed","title":"UNI-013 UI-016 fires on webkit rtl","duration":664.4169870000042,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-018"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-018 UNI-013 UI-018 fires on chromium ltr","status":"passed","title":"UNI-013 UI-018 fires on chromium ltr","duration":1326.6329389999955,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-018"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-018 UNI-013 UI-018 fires on chromium rtl","status":"passed","title":"UNI-013 UI-018 fires on chromium rtl","duration":1316.3835729999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-018"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-018 UNI-013 UI-018 fires on firefox ltr","status":"passed","title":"UNI-013 UI-018 fires on firefox ltr","duration":2435.2408330000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-018"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-018 UNI-013 UI-018 fires on firefox rtl","status":"passed","title":"UNI-013 UI-018 fires on firefox rtl","duration":2425.0253379999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-018"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-018 UNI-013 UI-018 fires on webkit ltr","status":"passed","title":"UNI-013 UI-018 fires on webkit ltr","duration":672.1792649999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-018"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-018 UNI-013 UI-018 fires on webkit rtl","status":"passed","title":"UNI-013 UI-018 fires on webkit rtl","duration":663.8393360000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-021"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-021 UNI-013 UI-021 fires on chromium ltr","status":"passed","title":"UNI-013 UI-021 fires on chromium ltr","duration":1453.1727509999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-021"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-021 UNI-013 UI-021 fires on chromium rtl","status":"passed","title":"UNI-013 UI-021 fires on chromium rtl","duration":1398.7073279999968,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-021"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-021 UNI-013 UI-021 fires on firefox ltr","status":"passed","title":"UNI-013 UI-021 fires on firefox ltr","duration":2480.7381100000057,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-021"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-021 UNI-013 UI-021 fires on firefox rtl","status":"passed","title":"UNI-013 UI-021 fires on firefox rtl","duration":2517.301204000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-021"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-021 UNI-013 UI-021 fires on webkit ltr","status":"passed","title":"UNI-013 UI-021 fires on webkit ltr","duration":668.8983620000072,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-021"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-021 UNI-013 UI-021 fires on webkit rtl","status":"passed","title":"UNI-013 UI-021 fires on webkit rtl","duration":728.181998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-033"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-033 UNI-013 UI-033 fires on chromium ltr","status":"passed","title":"UNI-013 UI-033 fires on chromium ltr","duration":1061.546101999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-033"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-033 UNI-013 UI-033 fires on chromium rtl","status":"passed","title":"UNI-013 UI-033 fires on chromium rtl","duration":916.0761179999972,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-033"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-033 UNI-013 UI-033 fires on firefox ltr","status":"passed","title":"UNI-013 UI-033 fires on firefox ltr","duration":2116.3442050000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-033"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-033 UNI-013 UI-033 fires on firefox rtl","status":"passed","title":"UNI-013 UI-033 fires on firefox rtl","duration":2302.989170999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-033"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-033 UNI-013 UI-033 fires on webkit ltr","status":"passed","title":"UNI-013 UI-033 fires on webkit ltr","duration":681.4279299999907,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-033"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-033 UNI-013 UI-033 fires on webkit rtl","status":"passed","title":"UNI-013 UI-033 fires on webkit rtl","duration":663.3504590000084,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-035"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-035 UNI-013 UI-035 fires on chromium ltr","status":"passed","title":"UNI-013 UI-035 fires on chromium ltr","duration":1036.2155829999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-035"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-035 UNI-013 UI-035 fires on chromium rtl","status":"passed","title":"UNI-013 UI-035 fires on chromium rtl","duration":1065.9971159999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-035"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-035 UNI-013 UI-035 fires on firefox ltr","status":"passed","title":"UNI-013 UI-035 fires on firefox ltr","duration":2311.772425999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-035"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-035 UNI-013 UI-035 fires on firefox rtl","status":"passed","title":"UNI-013 UI-035 fires on firefox rtl","duration":2358.841941999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-035"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-035 UNI-013 UI-035 fires on webkit ltr","status":"passed","title":"UNI-013 UI-035 fires on webkit ltr","duration":682.0352850000054,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-035"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-035 UNI-013 UI-035 fires on webkit rtl","status":"passed","title":"UNI-013 UI-035 fires on webkit rtl","duration":656.7653589999973,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-036"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-036 UNI-013 UI-036 fires on chromium ltr","status":"passed","title":"UNI-013 UI-036 fires on chromium ltr","duration":939.8921669999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-036"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-036 UNI-013 UI-036 fires on chromium rtl","status":"passed","title":"UNI-013 UI-036 fires on chromium rtl","duration":935.0016610000021,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-036"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-036 UNI-013 UI-036 fires on firefox ltr","status":"passed","title":"UNI-013 UI-036 fires on firefox ltr","duration":2169.958351999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-036"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-036 UNI-013 UI-036 fires on firefox rtl","status":"passed","title":"UNI-013 UI-036 fires on firefox rtl","duration":2165.0794869999954,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-036"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-036 UNI-013 UI-036 fires on webkit ltr","status":"passed","title":"UNI-013 UI-036 fires on webkit ltr","duration":730.2907680000062,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-036"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-036 UNI-013 UI-036 fires on webkit rtl","status":"passed","title":"UNI-013 UI-036 fires on webkit rtl","duration":800.0181470000098,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-037"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-037 UNI-013 UI-037 fires on chromium ltr","status":"passed","title":"UNI-013 UI-037 fires on chromium ltr","duration":949.6665690000082,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-037"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-037 UNI-013 UI-037 fires on chromium rtl","status":"passed","title":"UNI-013 UI-037 fires on chromium rtl","duration":933.4736580000026,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-037"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-037 UNI-013 UI-037 fires on firefox ltr","status":"passed","title":"UNI-013 UI-037 fires on firefox ltr","duration":2295.2985210000043,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-037"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-037 UNI-013 UI-037 fires on firefox rtl","status":"passed","title":"UNI-013 UI-037 fires on firefox rtl","duration":2116.5505799999955,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-037"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-037 UNI-013 UI-037 fires on webkit ltr","status":"passed","title":"UNI-013 UI-037 fires on webkit ltr","duration":662.8639870000043,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-037"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-037 UNI-013 UI-037 fires on webkit rtl","status":"passed","title":"UNI-013 UI-037 fires on webkit rtl","duration":677.834422999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-038"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-038 UNI-013 UI-038 fires on chromium ltr","status":"passed","title":"UNI-013 UI-038 fires on chromium ltr","duration":796.770777999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-038"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-038 UNI-013 UI-038 fires on chromium rtl","status":"passed","title":"UNI-013 UI-038 fires on chromium rtl","duration":799.6058770000091,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-038"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-038 UNI-013 UI-038 fires on firefox ltr","status":"passed","title":"UNI-013 UI-038 fires on firefox ltr","duration":1992.8625500000053,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-038"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-038 UNI-013 UI-038 fires on firefox rtl","status":"passed","title":"UNI-013 UI-038 fires on firefox rtl","duration":1983.8893150000076,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-038"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-038 UNI-013 UI-038 fires on webkit ltr","status":"passed","title":"UNI-013 UI-038 fires on webkit ltr","duration":683.0877859999891,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-038"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-038 UNI-013 UI-038 fires on webkit rtl","status":"passed","title":"UNI-013 UI-038 fires on webkit rtl","duration":662.2847400000028,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-034"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-034 UNI-013 UI-034 fires on chromium ltr","status":"passed","title":"UNI-013 UI-034 fires on chromium ltr","duration":1362.1278329999914,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-034"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-034 UNI-013 UI-034 fires on chromium rtl","status":"passed","title":"UNI-013 UI-034 fires on chromium rtl","duration":1333.6150800000032,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-034"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-034 UNI-013 UI-034 fires on firefox ltr","status":"passed","title":"UNI-013 UI-034 fires on firefox ltr","duration":2490.8527849999955,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-034"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-034 UNI-013 UI-034 fires on firefox rtl","status":"passed","title":"UNI-013 UI-034 fires on firefox rtl","duration":2532.7822129999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-034"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-034 UNI-013 UI-034 fires on webkit ltr","status":"passed","title":"UNI-013 UI-034 fires on webkit ltr","duration":733.9844759999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-034"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-034 UNI-013 UI-034 fires on webkit rtl","status":"passed","title":"UNI-013 UI-034 fires on webkit rtl","duration":673.4943210000056,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-052"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-052 UNI-013 UI-052 fires on chromium ltr","status":"passed","title":"UNI-013 UI-052 fires on chromium ltr","duration":1352.0990139999922,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-052"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-052 UNI-013 UI-052 fires on chromium rtl","status":"passed","title":"UNI-013 UI-052 fires on chromium rtl","duration":832.4259529999981,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-052"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-052 UNI-013 UI-052 fires on firefox ltr","status":"passed","title":"UNI-013 UI-052 fires on firefox ltr","duration":2482.996511000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-052"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-052 UNI-013 UI-052 fires on firefox rtl","status":"passed","title":"UNI-013 UI-052 fires on firefox rtl","duration":1967.743088999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-052"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-052 UNI-013 UI-052 fires on webkit ltr","status":"passed","title":"UNI-013 UI-052 fires on webkit ltr","duration":658.9632239999919,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-052"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-052 UNI-013 UI-052 fires on webkit rtl","status":"passed","title":"UNI-013 UI-052 fires on webkit rtl","duration":681.9207800000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-060"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-060 UNI-013 UI-060 fires on chromium ltr","status":"passed","title":"UNI-013 UI-060 fires on chromium ltr","duration":944.7085880000086,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-060"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-060 UNI-013 UI-060 fires on chromium rtl","status":"passed","title":"UNI-013 UI-060 fires on chromium rtl","duration":966.0474089999916,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-060"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-060 UNI-013 UI-060 fires on firefox ltr","status":"passed","title":"UNI-013 UI-060 fires on firefox ltr","duration":2332.714482999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-060"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-060 UNI-013 UI-060 fires on firefox rtl","status":"passed","title":"UNI-013 UI-060 fires on firefox rtl","duration":2332.0160380000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-060"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-060 UNI-013 UI-060 fires on webkit ltr","status":"passed","title":"UNI-013 UI-060 fires on webkit ltr","duration":664.3439510000171,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-060"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-060 UNI-013 UI-060 fires on webkit rtl","status":"passed","title":"UNI-013 UI-060 fires on webkit rtl","duration":693.3072329999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-061"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-061 UNI-013 UI-061 fires on chromium ltr","status":"passed","title":"UNI-013 UI-061 fires on chromium ltr","duration":947.4523629999894,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-061"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-061 UNI-013 UI-061 fires on chromium rtl","status":"passed","title":"UNI-013 UI-061 fires on chromium rtl","duration":963.1062699999893,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-061"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-061 UNI-013 UI-061 fires on firefox ltr","status":"passed","title":"UNI-013 UI-061 fires on firefox ltr","duration":2351.3640480000176,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-061"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-061 UNI-013 UI-061 fires on firefox rtl","status":"passed","title":"UNI-013 UI-061 fires on firefox rtl","duration":2238.880183000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-061"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-061 UNI-013 UI-061 fires on webkit ltr","status":"passed","title":"UNI-013 UI-061 fires on webkit ltr","duration":663.6677849999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-061"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-061 UNI-013 UI-061 fires on webkit rtl","status":"passed","title":"UNI-013 UI-061 fires on webkit rtl","duration":682.8244230000128,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-062"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-062 UNI-013 UI-062 fires on chromium ltr","status":"passed","title":"UNI-013 UI-062 fires on chromium ltr","duration":1010.0247089999903,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-062"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-062 UNI-013 UI-062 fires on chromium rtl","status":"passed","title":"UNI-013 UI-062 fires on chromium rtl","duration":1049.3779189999914,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-062"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-062 UNI-013 UI-062 fires on firefox ltr","status":"passed","title":"UNI-013 UI-062 fires on firefox ltr","duration":2341.870962999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-062"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-062 UNI-013 UI-062 fires on firefox rtl","status":"passed","title":"UNI-013 UI-062 fires on firefox rtl","duration":2307.4712760000257,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-062"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-062 UNI-013 UI-062 fires on webkit ltr","status":"passed","title":"UNI-013 UI-062 fires on webkit ltr","duration":671.9007210000127,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-062"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-062 UNI-013 UI-062 fires on webkit rtl","status":"passed","title":"UNI-013 UI-062 fires on webkit rtl","duration":687.5050079999783,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-070"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-070 UNI-013 UI-070 fires on chromium ltr","status":"passed","title":"UNI-013 UI-070 fires on chromium ltr","duration":825.8922580000071,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-070"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-070 UNI-013 UI-070 fires on chromium rtl","status":"passed","title":"UNI-013 UI-070 fires on chromium rtl","duration":815.1544069999945,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-070"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-070 UNI-013 UI-070 fires on firefox ltr","status":"passed","title":"UNI-013 UI-070 fires on firefox ltr","duration":1996.5399489999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-070"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-070 UNI-013 UI-070 fires on firefox rtl","status":"passed","title":"UNI-013 UI-070 fires on firefox rtl","duration":1991.384102000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-070"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-070 UNI-013 UI-070 fires on webkit ltr","status":"passed","title":"UNI-013 UI-070 fires on webkit ltr","duration":674.7242649999971,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 cross-engine bad-fixture calibration","UI-070"],"fullName":"UNI-013 cross-engine bad-fixture calibration UI-070 UNI-013 UI-070 fires on webkit rtl","status":"passed","title":"UNI-013 UI-070 fires on webkit rtl","duration":657.7343230000115,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 unsupported engine coverage gaps"],"fullName":"UI-A10 unsupported engine coverage gaps UI-A10 records explicit unsupported-capability gaps for every unavailable engine","status":"passed","title":"UI-A10 records explicit unsupported-capability gaps for every unavailable engine","duration":0.7753529999754392,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 unsupported engine coverage gaps"],"fullName":"UI-A10 unsupported engine coverage gaps UI-A10 surfaces unavailable-engine gaps in classified coverage outcomes","status":"passed","title":"UI-A10 surfaces unavailable-engine gaps in classified coverage outcomes","duration":1.701375000004191,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 unsupported engine coverage gaps"],"fullName":"UI-A10 unsupported engine coverage gaps UI-A10 never silently skips unavailable engines across blocking-enabled detectors","status":"passed","title":"UI-A10 never silently skips unavailable engines across blocking-enabled detectors","duration":0.2079809999850113,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 disabled third-party rule coverage gap"],"fullName":"UI-A10 disabled third-party rule coverage gap UI-A10 disabled axe rule on known-bad produces coverage gap not green","status":"passed","title":"UI-A10 disabled axe rule on known-bad produces coverage gap not green","duration":835.2934710000118,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 required engines are launchable"],"fullName":"UNI-013 required engines are launchable UNI-013 chromium and firefox are available for calibration","status":"passed","title":"UNI-013 chromium and firefox are available for calibration","duration":652.4715379999834,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310813971,"endTime":1785310972472.4714,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/cross-engine.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-021 occluded siblings keep distinct identities"],"fullName":"UI-021 occluded siblings keep distinct identities UI-021 two occluded buttons produce two distinct findings","status":"passed","title":"UI-021 two occluded buttons produce two distinct findings","duration":875.3094199999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 an ancestor reached at a sample point is not an occluder"],"fullName":"UI-021 an ancestor reached at a sample point is not an occluder UI-021 rounded corners and wrapped inline links produce no finding","status":"passed","title":"UI-021 rounded corners and wrapped inline links produce no finding","duration":702.8057350000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-025 target crops stay inside the rendered page"],"fullName":"UI-025 target crops stay inside the rendered page UI-025 a target rect outside the page bounds does not fail the capture","status":"passed","title":"UI-025 a target rect outside the page bounds does not fail the capture","duration":126.27265500000021,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-025 target crops stay inside the rendered page"],"fullName":"UI-025 target crops stay inside the rendered page UI-025 a target rect below the fold is captured","status":"passed","title":"UI-025 a target rect below the fold is captured","duration":181.79229600000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-025 target crops stay inside the rendered page"],"fullName":"UI-025 target crops stay inside the rendered page UI-025 a target rect straddling the page edge is clamped to the rendered area","status":"passed","title":"UI-025 a target rect straddling the page edge is clamped to the rendered area","duration":147.96539099999973,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-020 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-020 positive fixture fires with UI-001 evidence","duration":802.8479560000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-020 negative fixture stays silent","status":"passed","title":"UI-A01 UI-020 negative fixture stays silent","duration":704.788787,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-021 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-021 positive fixture fires with UI-001 evidence","duration":758.0065350000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-021 negative fixture stays silent","status":"passed","title":"UI-A01 UI-021 negative fixture stays silent","duration":692.2791989999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-022 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-022 positive fixture fires with UI-001 evidence","duration":726.7689179999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-022 negative fixture stays silent","status":"passed","title":"UI-A01 UI-022 negative fixture stays silent","duration":705.5900599999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-023 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-023 positive fixture fires with UI-001 evidence","duration":709.2145959999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-023 negative fixture stays silent","status":"passed","title":"UI-A01 UI-023 negative fixture stays silent","duration":696.0755550000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-024 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-024 positive fixture fires with UI-001 evidence","duration":721.3803300000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 geometry fixture gallery"],"fullName":"UI-A01 geometry fixture gallery UI-A01 UI-024 negative fixture stays silent","status":"passed","title":"UI-A01 UI-024 negative fixture stays silent","duration":689.6821359999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A02 clipped repeated-label fixture"],"fullName":"UI-A02 clipped repeated-label fixture UI-A02 UI-020 reports glyph-rect proof, instance count, and UI-025 evidence within tolerance","status":"passed","title":"UI-A02 UI-020 reports glyph-rect proof, instance count, and UI-025 evidence within tolerance","duration":793.1180349999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-020 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-020 intentional-exception fixture stays silent via scoped contract","duration":732.7080330000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-022 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-022 intentional-exception fixture stays silent via scoped contract","duration":717.0573420000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-023 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-023 intentional-exception fixture stays silent via scoped contract","duration":708.0795520000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-021 intentional-exception allows legitimate child hits","status":"passed","title":"UI-A03 UI-021 intentional-exception allows legitimate child hits","duration":699.9982819999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-023 carousel clipping stays silent and does not disable other clipping detectors","status":"passed","title":"UI-A03 UI-023 carousel clipping stays silent and does not disable other clipping detectors","duration":1507.382404,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-020 RTL variant detects clipped glyphs","status":"passed","title":"UI-A01 UI-020 RTL variant detects clipped glyphs","duration":734.0816029999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-024 RTL variant detects truncated text without affordance","status":"passed","title":"UI-A01 UI-024 RTL variant detects truncated text without affordance","duration":735.5222980000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-020 changed-fingerprint variant produces distinct violation measurement","status":"passed","title":"UI-A01 UI-020 changed-fingerprint variant produces distinct violation measurement","duration":1515.086643999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-020 without visibility contract classifies as advisory","status":"passed","title":"UI-002 UI-020 without visibility contract classifies as advisory","duration":782.1630550000009,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-022 overlap without contract remains advisory","status":"passed","title":"UI-002 UI-022 overlap without contract remains advisory","duration":734.0857849999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-024 truncated text without full-visibility contract remains advisory","status":"passed","title":"UI-002 UI-024 truncated text without full-visibility contract remains advisory","duration":732.4423760000027,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 gallery completeness"],"fullName":"UI-A01 gallery completeness UI-A01 geometry gallery includes every required variant per rule","status":"passed","title":"UI-A01 geometry gallery includes every required variant per rule","duration":0.6162490000024263,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-021 clipped runs in one element keep one identity"],"fullName":"DATA-021 clipped runs in one element keep one identity DATA-021 emits one violation per clipping element","status":"passed","title":"DATA-021 emits one violation per clipping element","duration":0.28960400000141817,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 repeated test ids stay distinguishable"],"fullName":"UI-021 repeated test ids stay distinguishable UI-021 two cards sharing a test id produce distinct locators","status":"passed","title":"UI-021 two cards sharing a test id produce distinct locators","duration":832.182627000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310702939,"endTime":1785310723405.1826,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/geometry.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-033 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-033 positive fixture fires with UI-001 evidence","duration":300.01039399999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-033 negative fixture stays silent","status":"passed","title":"UI-A01 UI-033 negative fixture stays silent","duration":257.8432069999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-035 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-035 positive fixture fires with UI-001 evidence","duration":384.42793400000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-035 negative fixture stays silent","status":"passed","title":"UI-A01 UI-035 negative fixture stays silent","duration":387.4330809999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-036 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-036 positive fixture fires with UI-001 evidence","duration":260.2070530000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-036 negative fixture stays silent","status":"passed","title":"UI-A01 UI-036 negative fixture stays silent","duration":249.02712199999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-037 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-037 positive fixture fires with UI-001 evidence","duration":285.70217100000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-037 negative fixture stays silent","status":"passed","title":"UI-A01 UI-037 negative fixture stays silent","duration":282.12512600000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-038 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-038 positive fixture fires with UI-001 evidence","duration":151.28884100000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 interaction fixture gallery"],"fullName":"UI-A01 interaction fixture gallery UI-A01 UI-038 negative fixture stays silent","status":"passed","title":"UI-A01 UI-038 negative fixture stays silent","duration":148.2045659999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A09 failed form fixture satisfies UNI-090 via UI-035","status":"passed","title":"UI-A09 failed form fixture satisfies UNI-090 via UI-035","duration":385.5613619999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A09 canceled nested action fixture satisfies UNI-091 via UI-036","status":"passed","title":"UI-A09 canceled nested action fixture satisfies UNI-091 via UI-036","duration":280.0554609999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A09 reordered list fixture satisfies UNI-092 via UI-037","status":"passed","title":"UI-A09 reordered list fixture satisfies UNI-092 via UI-037","duration":253.71034700000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A09 hidden action fixture satisfies UNI-093 via UI-038","status":"passed","title":"UI-A09 hidden action fixture satisfies UNI-093 via UI-038","duration":154.47899899999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-033 interaction promise dimensions"],"fullName":"UI-033 interaction promise dimensions UI-033 compares promised accessible, DOM, style, URL, storage, network, and side effects","status":"passed","title":"UI-033 compares promised accessible, DOM, style, URL, storage, network, and side effects","duration":259.0332100000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-033 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-033 intentional-exception fixture stays silent via scoped contract","duration":266.3190139999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-035 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-035 intentional-exception fixture stays silent via scoped contract","duration":333.11312199999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-036 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-036 intentional-exception fixture stays silent via scoped contract","duration":283.06583300000057,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-037 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-037 intentional-exception fixture stays silent via scoped contract","duration":266.76402899999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-038 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-038 intentional-exception fixture stays silent via scoped contract","duration":150.18542999999954,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-035 RTL variant detects failed form continuity","status":"passed","title":"UI-A01 UI-035 RTL variant detects failed form continuity","duration":383.28577399999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-036 scoped contract does not disable other interaction detectors","status":"passed","title":"UI-A03 UI-036 scoped contract does not disable other interaction detectors","duration":633.0873060000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310805319,"endTime":1785310811675.0874,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/interaction.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 layout fixture gallery"],"fullName":"UI-A01 layout fixture gallery UI-A01 UI-030 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-030 positive fixture fires with UI-001 evidence","duration":483.08111999999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 layout fixture gallery"],"fullName":"UI-A01 layout fixture gallery UI-A01 UI-030 negative fixture stays silent","status":"passed","title":"UI-A01 UI-030 negative fixture stays silent","duration":342.90438500000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 layout fixture gallery"],"fullName":"UI-A01 layout fixture gallery UI-A01 UI-031 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-031 positive fixture fires with UI-001 evidence","duration":518.6333809999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 layout fixture gallery"],"fullName":"UI-A01 layout fixture gallery UI-A01 UI-031 negative fixture stays silent","status":"passed","title":"UI-A01 UI-031 negative fixture stays silent","duration":513.4678679999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 layout fixture gallery"],"fullName":"UI-A01 layout fixture gallery UI-A01 UI-032 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-032 positive fixture fires with UI-001 evidence","duration":1089.371451,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 layout fixture gallery"],"fullName":"UI-A01 layout fixture gallery UI-A01 UI-032 negative fixture stays silent","status":"passed","title":"UI-A01 UI-032 negative fixture stays silent","duration":1076.1173370000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-030 aggregate CLS"],"fullName":"UI-030 aggregate CLS UI-030 excludes recent-input layout shifts and uses CWV good threshold","status":"passed","title":"UI-030 excludes recent-input layout shifts and uses CWV good threshold","duration":434.8070910000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-031 skeleton geometry diff"],"fullName":"UI-031 skeleton geometry diff UI-031 reports skeleton-vs-settled geometry separately from aggregate CLS","status":"passed","title":"UI-031 reports skeleton-vs-settled geometry separately from aggregate CLS","duration":516.2850280000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-032 action checkpoint detectors"],"fullName":"UI-032 action checkpoint detectors UI-032 detects spinner-to-content-replacement through action checkpoints","status":"passed","title":"UI-032 detects spinner-to-content-replacement through action checkpoints","duration":1085.0387330000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-032 action checkpoint detectors"],"fullName":"UI-032 action checkpoint detectors UI-032 detects state-swap-instead-of-update through action checkpoints","status":"passed","title":"UI-032 detects state-swap-instead-of-update through action checkpoints","duration":980.681415,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-032 action checkpoint detectors"],"fullName":"UI-032 action checkpoint detectors UI-032 detects focus-loss through action checkpoints","status":"passed","title":"UI-032 detects focus-loss through action checkpoints","duration":982.2728159999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-032 action checkpoint detectors"],"fullName":"UI-032 action checkpoint detectors UI-032 detects scroll-jump through action checkpoints","status":"passed","title":"UI-032 detects scroll-jump through action checkpoints","duration":1016.3065929999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-032 action checkpoint detectors"],"fullName":"UI-032 action checkpoint detectors UI-032 detects stale-ui-after-mutation through action checkpoints","status":"passed","title":"UI-032 detects stale-ui-after-mutation through action checkpoints","duration":966.8074190000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-032 action checkpoint detectors"],"fullName":"UI-032 action checkpoint detectors UI-032 detects missing-optimistic-rollback through action checkpoints","status":"passed","title":"UI-032 detects missing-optimistic-rollback through action checkpoints","duration":1118.9833750000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-030 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-030 intentional-exception fixture stays silent via scoped contract","duration":449.14911100000063,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-031 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-031 intentional-exception fixture stays silent via scoped contract","duration":522.3520900000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-032 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-032 intentional-exception fixture stays silent via scoped contract","duration":1096.845811000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-030 RTL variant detects aggregate CLS","status":"passed","title":"UI-A01 UI-030 RTL variant detects aggregate CLS","duration":439.6541720000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-031 RTL variant detects skeleton geometry diff","status":"passed","title":"UI-A01 UI-031 RTL variant detects skeleton geometry diff","duration":509.7109150000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-032 RTL variant detects focus loss","status":"passed","title":"UI-A01 UI-032 RTL variant detects focus loss","duration":980.4489099999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-032 scoped contract does not disable other checkpoint detectors","status":"passed","title":"UI-A03 UI-032 scoped contract does not disable other checkpoint detectors","duration":2065.1898200000014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310787620,"endTime":1785310804809.19,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/layout.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 relations fixture gallery"],"fullName":"UI-A01 relations fixture gallery UI-A01 UI-034 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-034 positive fixture fires with UI-001 evidence","duration":198.07352699999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 relations fixture gallery"],"fullName":"UI-A01 relations fixture gallery UI-A01 UI-034 negative fixture stays silent","status":"passed","title":"UI-A01 UI-034 negative fixture stays silent","duration":162.516125,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A08 quota cross-representation anchor"],"fullName":"UI-A08 quota cross-representation anchor UI-A08 detects label/fill/ARIA contradiction without selecting intended representation","status":"passed","title":"UI-A08 detects label/fill/ARIA contradiction without selecting intended representation","duration":147.97670100000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A08 quota cross-representation anchor"],"fullName":"UI-A08 quota cross-representation anchor UI-034 extracts visible label, progress geometry, aria-valuenow, API, persisted, and status representations","status":"passed","title":"UI-034 extracts visible label, progress geometry, aria-valuenow, API, persisted, and status representations","duration":147.0739769999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-034 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-034 intentional-exception fixture stays silent via scoped contract","duration":168.27851999999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-034 RTL variant detects quota contradiction","status":"passed","title":"UI-A01 UI-034 RTL variant detects quota contradiction","duration":166.12563999999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310812336,"endTime":1785310813327.1257,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/relations.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-010 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-010 positive fixture fires with UI-001 evidence","duration":702.9944310000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-010 negative fixture stays silent","status":"passed","title":"UI-A01 UI-010 negative fixture stays silent","duration":665.676273,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-011 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-011 positive fixture fires with UI-001 evidence","duration":669.4657319999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-011 negative fixture stays silent","status":"passed","title":"UI-A01 UI-011 negative fixture stays silent","duration":653.7618990000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-012 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-012 positive fixture fires with UI-001 evidence","duration":666.00866,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-012 negative fixture stays silent","status":"passed","title":"UI-A01 UI-012 negative fixture stays silent","duration":651.8783449999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-013 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-013 positive fixture fires with UI-001 evidence","duration":658.180499,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-013 negative fixture stays silent","status":"passed","title":"UI-A01 UI-013 negative fixture stays silent","duration":664.2131170000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-014 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-014 positive fixture fires with UI-001 evidence","duration":654.6993460000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-014 negative fixture stays silent","status":"passed","title":"UI-A01 UI-014 negative fixture stays silent","duration":652.4695810000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-015 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-015 positive fixture fires with UI-001 evidence","duration":660.6291620000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-015 negative fixture stays silent","status":"passed","title":"UI-A01 UI-015 negative fixture stays silent","duration":652.4522920000009,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-016 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-016 positive fixture fires with UI-001 evidence","duration":304.47867300000144,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-016 negative fixture stays silent","status":"passed","title":"UI-A01 UI-016 negative fixture stays silent","duration":120.80707900000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-017 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-017 positive fixture fires with UI-001 evidence","duration":654.7580510000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-017 negative fixture stays silent","status":"passed","title":"UI-A01 UI-017 negative fixture stays silent","duration":658.9883740000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-018 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-018 positive fixture fires with UI-001 evidence","duration":657.8779409999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 rendered-state fixture gallery"],"fullName":"UI-A01 rendered-state fixture gallery UI-A01 UI-018 negative fixture stays silent","status":"passed","title":"UI-A01 UI-018 negative fixture stays silent","duration":652.8882850000009,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-010 intentional-exception excludes code-example semantics","status":"passed","title":"UI-A01 UI-010 intentional-exception excludes code-example semantics","duration":668.5539019999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-010 intentional-exception uses scoped contract not detector disablement","status":"passed","title":"UI-A03 UI-010 intentional-exception uses scoped contract not detector disablement","duration":672.7255190000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-012 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-012 intentional-exception fixture stays silent via scoped contract","duration":670.2458189999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-014 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-014 intentional-exception fixture stays silent via scoped contract","duration":657.1783149999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-015 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-015 intentional-exception fixture stays silent via scoped contract","duration":667.6812550000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-016 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-016 intentional-exception fixture stays silent via scoped contract","duration":301.0989160000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-018 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-018 intentional-exception fixture stays silent via scoped contract","duration":656.3481819999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-014 RTL variant detects direction mismatch for ar-SA","status":"passed","title":"UI-A01 UI-014 RTL variant detects direction mismatch for ar-SA","duration":663.3919320000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures DATA-021 UI-014 direction and language mismatches keep distinct identities","status":"passed","title":"DATA-021 UI-014 direction and language mismatches keep distinct identities","duration":661.9779529999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures DATA-021 UI-011 repeated identical console errors collapse to one finding","status":"passed","title":"DATA-021 UI-011 repeated identical console errors collapse to one finding","duration":660.2653119999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-017 RTL variant detects horizontal overflow","status":"passed","title":"UI-A01 UI-017 RTL variant detects horizontal overflow","duration":667.0011760000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-010 changed-fingerprint variant produces distinct violation token","status":"passed","title":"UI-A01 UI-010 changed-fingerprint variant produces distinct violation token","duration":1321.7247339999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-013 without loaded catalog classifies as advisory","status":"passed","title":"UI-002 UI-013 without loaded catalog classifies as advisory","duration":653.2625679999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-017 intentional overflow remains advisory","status":"passed","title":"UI-002 UI-017 intentional overflow remains advisory","duration":658.1799830000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-002 ambiguous intent remains advisory"],"fullName":"UI-002 ambiguous intent remains advisory UI-002 UI-012 undeclared network failure remains advisory","status":"passed","title":"UI-002 UI-012 undeclared network failure remains advisory","duration":658.4978349999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 gallery completeness"],"fullName":"UI-A01 gallery completeness UI-A01 rendered gallery includes every required variant per rule","status":"passed","title":"UI-A01 rendered gallery includes every required variant per rule","duration":0.7657739999995101,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-012 a resource failing repeatedly is one violation"],"fullName":"UI-012 a resource failing repeatedly is one violation UI-012 the same failing URL requested twice yields one finding","status":"passed","title":"UI-012 the same failing URL requested twice yields one finding","duration":666.3541120000009,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310752041,"endTime":1785310773950.354,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/rendered.test.ts"},{"assertionResults":[{"ancestorTitles":["PLAN-010 / PLAN-011 ui-detectors engine provisioning"],"fullName":"PLAN-010 / PLAN-011 ui-detectors engine provisioning PLAN-010 launches headless chromium and firefox","status":"passed","title":"PLAN-010 launches headless chromium and firefox","duration":1243.811384,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PLAN-010 / PLAN-011 ui-detectors engine provisioning"],"fullName":"PLAN-010 / PLAN-011 ui-detectors engine provisioning PLAN-011 engineAvailability reports launchable chromium and firefox","status":"passed","title":"PLAN-011 engineAvailability reports launchable chromium and firefox","duration":666.0048539999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310974274,"endTime":1785310976184.005,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/smoke.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 sweeps fixture gallery"],"fullName":"UI-A01 sweeps fixture gallery UI-A01 UI-052 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-052 positive fixture fires with UI-001 evidence","duration":191.08667100000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 sweeps fixture gallery"],"fullName":"UI-A01 sweeps fixture gallery UI-A01 UI-052 negative fixture stays silent","status":"passed","title":"UI-A01 UI-052 negative fixture stays silent","duration":160.200334,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 sweeps fixture gallery"],"fullName":"UI-A01 sweeps fixture gallery UI-A01 UI-053 positive fixture fires with UI-001 evidence","status":"passed","title":"UI-A01 UI-053 positive fixture fires with UI-001 evidence","duration":148.96731599999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 sweeps fixture gallery"],"fullName":"UI-A01 sweeps fixture gallery UI-A01 UI-053 negative fixture stays silent","status":"passed","title":"UI-A01 UI-053 negative fixture stays silent","duration":147.81834000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-052 locale sweep checks"],"fullName":"UI-052 locale sweep checks UI-052 covers text expansion, direction, digit spacing, formatting, font fallback, and bidi isolation","status":"passed","title":"UI-052 covers text expansion, direction, digit spacing, formatting, font fallback, and bidi isolation","duration":152.53977099999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-053 responsive sweep checks"],"fullName":"UI-053 responsive sweep checks UI-053 covers breakpoint boundaries, safe areas, touch targets, and table/overlay behavior","status":"passed","title":"UI-053 covers breakpoint boundaries, safe areas, touch targets, and table/overlay behavior","duration":153.01825499999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-054 dimension reachability proof"],"fullName":"UI-054 dimension reachability proof UI-054 inert enabled dimension produces coverage gap without inflating matrix coverage","status":"passed","title":"UI-054 inert enabled dimension produces coverage gap without inflating matrix coverage","duration":227.90435700000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-054 dimension reachability proof"],"fullName":"UI-054 dimension reachability proof UI-054 active enabled dimension produces observable difference without coverage gap","status":"passed","title":"UI-054 active enabled dimension produces observable difference without coverage gap","duration":249.7716660000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 inert matrix dimension coverage gap"],"fullName":"UI-A10 inert matrix dimension coverage gap UI-A10 records inert matrix dimension as coverage gap, not green matrix result","status":"passed","title":"UI-A10 records inert matrix dimension as coverage gap, not green matrix result","duration":232.5225519999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-052 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-052 intentional-exception fixture stays silent via scoped contract","duration":153.99470599999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-053 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-053 intentional-exception fixture stays silent via scoped contract","duration":146.0210850000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-054 intentional-exception fixture stays silent via scoped contract","status":"passed","title":"UI-A03 UI-054 intentional-exception fixture stays silent via scoped contract","duration":233.8073260000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-052 RTL variant detects locale sweep violations","status":"passed","title":"UI-A01 UI-052 RTL variant detects locale sweep violations","duration":149.8191429999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A01 UI-053 RTL variant detects responsive sweep violations","status":"passed","title":"UI-A01 UI-053 RTL variant detects responsive sweep violations","duration":150.4090809999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 intentional-exception and RTL fixtures"],"fullName":"UI-A01 intentional-exception and RTL fixtures UI-A03 UI-052 scoped contract does not disable other sweep detectors","status":"passed","title":"UI-A03 UI-052 scoped contract does not disable other sweep detectors","duration":300.7487799999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-052/UI-053 uninstrumented targets"],"fullName":"UI-052/UI-053 uninstrumented targets UI-052 reports silently clipped text without a page probe","status":"passed","title":"UI-052 reports silently clipped text without a page probe","duration":156.36517400000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-052/UI-053 uninstrumented targets"],"fullName":"UI-052/UI-053 uninstrumented targets UI-053 reports undersized touch targets without a page probe","status":"passed","title":"UI-053 reports undersized touch targets without a page probe","duration":164.2537159999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310783911,"endTime":1785310787031.2537,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/sweeps.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-A12 / CLI-033 core pipeline is unchanged when the vision adapter is absent","status":"passed","title":"UI-A12 / CLI-033 core pipeline is unchanged when the vision adapter is absent","duration":3.4049839999999847,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-A12 VisionAdapter returns annotations only and cannot emit findings directly","status":"passed","title":"UI-A12 VisionAdapter returns annotations only and cannot emit findings directly","duration":1.0502390000000048,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-081 linked annotations merge as metadata without changing lane or certainty","status":"passed","title":"UI-081 linked annotations merge as metadata without changing lane or certainty","duration":1.865984999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-081 unlinked annotations create visual-advisory findings via the classifier path","status":"passed","title":"UI-081 unlinked annotations create visual-advisory findings via the classifier path","duration":2.327315999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-080 vision output cannot create blocking findings or confirm intent","status":"passed","title":"UI-080 vision output cannot create blocking findings or confirm intent","duration":1.0437309999999798,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-A12 rejects annotations that reference unknown findings","status":"passed","title":"UI-A12 rejects annotations that reference unknown findings","duration":1.6369789999999966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A12 advisory-only vision adapter boundary"],"fullName":"UI-A12 advisory-only vision adapter boundary UI-A12 rejects invalid annotation payloads","status":"passed","title":"UI-A12 rejects invalid annotation payloads","duration":0.8068189999999902,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310811849,"endTime":1785310811860.807,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/ui-detectors/test/vision.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A01 primitive gallery blocking law"],"fullName":"UNI-A01 primitive gallery blocking law UNI-A01 and UNI-004 sweep every family fixture gallery","status":"passed","title":"UNI-A01 and UNI-004 sweep every family fixture gallery","duration":120.70649400000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A10 advisory gating and DATA-045 promotion"],"fullName":"UNI-A10 advisory gating and DATA-045 promotion UNI-A10 and UNI-054 advisory gating with promotion authority","status":"passed","title":"UNI-A10 and UNI-054 advisory gating with promotion authority","duration":69.1363879999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310563403,"endTime":1785310563593.1365,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/blocking-law.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A11 boundedness fixture gallery"],"fullName":"UNI-A11 boundedness fixture gallery UNI-A11 limits oversized streamed bodies during consumption with typed failure","status":"passed","title":"UNI-A11 limits oversized streamed bodies during consumption with typed failure","duration":11.701473999999962,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A11 boundedness fixture gallery"],"fullName":"UNI-A11 boundedness fixture gallery UNI-A11 blocks unbounded wait and retry loops without observable terminal failure","status":"passed","title":"UNI-A11 blocks unbounded wait and retry loops without observable terminal failure","duration":3.0025570000000243,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A11 boundedness fixture gallery"],"fullName":"UNI-A11 boundedness fixture gallery UNI-A11 blocks child processes that inherit undeclared descriptors, environment, and process-group","status":"passed","title":"UNI-A11 blocks child processes that inherit undeclared descriptors, environment, and process-group","duration":2.834073999999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bounded known-good and intentional-exception fixtures"],"fullName":"bounded known-good and intentional-exception fixtures known-good produces no blocking findings","status":"passed","title":"known-good produces no blocking findings","duration":2.7434630000000197,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bounded known-good and intentional-exception fixtures"],"fullName":"bounded known-good and intentional-exception fixtures intentional-exception stays silent","status":"passed","title":"intentional-exception stays silent","duration":2.2617569999999887,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["bounded detector fail-closed validation"],"fullName":"bounded detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":2.0216570000000047,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310565124,"endTime":1785310565149.0217,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/bounded.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A08 closure fixture gallery"],"fullName":"UNI-A08 closure fixture gallery UNI-A08 blocks missing runtime references, stale artifacts, and accidental test-route inventory","status":"passed","title":"UNI-A08 blocks missing runtime references, stale artifacts, and accidental test-route inventory","duration":11.878824000000009,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A08 closure fixture gallery"],"fullName":"UNI-A08 closure fixture gallery UNI-084 empty package selection without expected-empty contract yields coverage gap","status":"passed","title":"UNI-084 empty package selection without expected-empty contract yields coverage gap","duration":1.8736020000000053,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["closure known-good and intentional-exception fixtures"],"fullName":"closure known-good and intentional-exception fixtures known-good and intentional-exception produce no blocking findings","status":"passed","title":"known-good and intentional-exception produce no blocking findings","duration":1.9891720000000532,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["closure detector fail-closed validation"],"fullName":"closure detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":1.8754849999999692,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310564340,"endTime":1785310564358.8755,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/closure.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A03 quota fixture contradiction without winner"],"fullName":"UNI-A03 quota fixture contradiction without winner UNI-A03 blocks quota known-bad without guessing intended side","status":"passed","title":"UNI-A03 blocks quota known-bad without guessing intended side","duration":14.013459000000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A03 quota fixture contradiction without winner"],"fullName":"UNI-A03 quota fixture contradiction without winner UNI-020 fires on same-semantic disagreement in quota known-bad","status":"passed","title":"UNI-020 fires on same-semantic disagreement in quota known-bad","duration":6.557510000000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A03 quota fixture contradiction without winner"],"fullName":"UNI-A03 quota fixture contradiction without winner UNI-024 states contradiction without guessed winner in fix packet evidence","status":"passed","title":"UNI-024 states contradiction without guessed winner in fix packet evidence","duration":2.813240999999948,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A04 terminal-status fixture cannot report success"],"fullName":"UNI-A04 terminal-status fixture cannot report success UNI-A04 blocks terminal known-bad with outstanding mandatory task","status":"passed","title":"UNI-A04 blocks terminal known-bad with outstanding mandatory task","duration":2.6500110000000063,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A04 terminal-status fixture cannot report success"],"fullName":"UNI-A04 terminal-status fixture cannot report success UNI-022 rejects success while mandatory obligation remains incomplete","status":"passed","title":"UNI-022 rejects success while mandatory obligation remains incomplete","duration":1.9483299999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A04 terminal-status fixture cannot report success"],"fullName":"UNI-A04 terminal-status fixture cannot report success UNI-023 rejects claimed success without durable outcome agreement","status":"passed","title":"UNI-023 rejects claimed success without durable outcome agreement","duration":1.7477489999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["consistency known-good fixtures stay silent"],"fullName":"consistency known-good fixtures stay silent quota known-good produces no blocking findings","status":"passed","title":"quota known-good produces no blocking findings","duration":2.008721000000037,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["consistency known-good fixtures stay silent"],"fullName":"consistency known-good fixtures stay silent terminal known-good produces no blocking findings","status":"passed","title":"terminal known-good produces no blocking findings","duration":1.2339870000000133,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["consistency intentional-exception fixtures produce no block"],"fullName":"consistency intentional-exception fixtures produce no block quota intentional-exception stays silent","status":"passed","title":"quota intentional-exception stays silent","duration":1.4950259999999957,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["consistency intentional-exception fixtures produce no block"],"fullName":"consistency intentional-exception fixtures produce no block terminal intentional-exception stays silent","status":"passed","title":"terminal intentional-exception stays silent","duration":1.368758000000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-021 derived-value closure detector"],"fullName":"UNI-021 derived-value closure detector UNI-021 blocks when derived values fail closure","status":"passed","title":"UNI-021 blocks when derived values fail closure","duration":1.6632620000000315,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["consistency detector fail-closed validation"],"fullName":"consistency detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":1.7889900000000125,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310563874,"endTime":1785310563913.789,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/consistency.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A09 form continuity fixture gallery"],"fullName":"UNI-A09 form continuity fixture gallery UNI-A09 preserves non-sensitive values after failed or rejected form submission","status":"passed","title":"UNI-A09 preserves non-sensitive values after failed or rejected form submission","duration":11.285818000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A09 form continuity fixture gallery"],"fullName":"UNI-A09 form continuity fixture gallery UNI-A09 blocks when validation failure clears non-sensitive user input","status":"passed","title":"UNI-A09 blocks when validation failure clears non-sensitive user input","duration":4.278852000000029,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A09 form continuity fixture gallery"],"fullName":"UNI-A09 form continuity fixture gallery UNI-A09 allows sensitive-field clearing and confirmed consume transitions","status":"passed","title":"UNI-A09 allows sensitive-field clearing and confirmed consume transitions","duration":1.3920790000000238,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A09 canceled interaction fixture gallery"],"fullName":"UNI-A09 canceled interaction fixture gallery UNI-A09 blocks canceled nested action that emits parent navigation or progress","status":"passed","title":"UNI-A09 blocks canceled nested action that emits parent navigation or progress","duration":1.913755999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A09 canceled interaction fixture gallery"],"fullName":"UNI-A09 canceled interaction fixture gallery UNI-A09 keeps canceled interaction fixtures silent when no tied side effects emit","status":"passed","title":"UNI-A09 keeps canceled interaction fixtures silent when no tied side effects emit","duration":1.161703999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["continuity known-good and intentional-exception fixtures"],"fullName":"continuity known-good and intentional-exception fixtures known-good produces no blocking findings","status":"passed","title":"known-good produces no blocking findings","duration":1.2640010000000075,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["continuity known-good and intentional-exception fixtures"],"fullName":"continuity known-good and intentional-exception fixtures intentional-exception stays silent","status":"passed","title":"intentional-exception stays silent","duration":1.5211439999999925,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["continuity detector fail-closed validation"],"fullName":"continuity detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":4.347707000000014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310564729,"endTime":1785310564756.3477,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/continuity.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A05 strict decoder fixture gallery"],"fullName":"UNI-A05 strict decoder fixture gallery UNI-A05 blocks empty/null coercion to zero","status":"passed","title":"UNI-A05 blocks empty/null coercion to zero","duration":19.975576000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 strict decoder fixture gallery"],"fullName":"UNI-A05 strict decoder fixture gallery UNI-A05 blocks unsupported numeric syntax for decimal integer","status":"passed","title":"UNI-A05 blocks unsupported numeric syntax for decimal integer","duration":2.9106199999999944,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 strict decoder fixture gallery"],"fullName":"UNI-A05 strict decoder fixture gallery UNI-A05 blocks unsafe positive and negative integers","status":"passed","title":"UNI-A05 blocks unsafe positive and negative integers","duration":2.913160000000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 strict decoder fixture gallery"],"fullName":"UNI-A05 strict decoder fixture gallery UNI-A05 blocks malformed date normalization","status":"passed","title":"UNI-A05 blocks malformed date normalization","duration":2.3624679999999785,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A05 strict decoder fixture gallery"],"fullName":"UNI-A05 strict decoder fixture gallery UNI-A05 blocks fallback shadowing of valid secondary","status":"passed","title":"UNI-A05 blocks fallback shadowing of valid secondary","duration":2.4733360000000175,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["decoder rule-specific detectors"],"fullName":"decoder rule-specific detectors UNI-031 blocks non-idempotent and collision-prone canonicalization","status":"passed","title":"UNI-031 blocks non-idempotent and collision-prone canonicalization","duration":2.283334000000025,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["decoder rule-specific detectors"],"fullName":"decoder rule-specific detectors UNI-033 blocks sentinel collapse into valid values","status":"passed","title":"UNI-033 blocks sentinel collapse into valid values","duration":2.154755000000023,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["decoder rule-specific detectors"],"fullName":"decoder rule-specific detectors UNI-034 blocks raw driver exception leak at public boundary","status":"passed","title":"UNI-034 blocks raw driver exception leak at public boundary","duration":2.3475669999999695,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["decoder known-good fixtures stay silent"],"fullName":"decoder known-good fixtures stay silent known-good produces no blocking findings","status":"passed","title":"known-good produces no blocking findings","duration":3.1965379999999755,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["decoder intentional-exception fixtures produce no block"],"fullName":"decoder intentional-exception fixtures produce no block intentional-exception stays silent","status":"passed","title":"intentional-exception stays silent","duration":1.6657539999999926,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["decoder detector fail-closed validation"],"fullName":"decoder detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":1.9664720000000102,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310563475,"endTime":1785310563519.9666,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/decoder.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A13 filesystem fixture gallery"],"fullName":"UNI-A13 filesystem fixture gallery UNI-A13 blocks traversal, symlink-escape, and ambiguous-root path containment violations","status":"passed","title":"UNI-A13 blocks traversal, symlink-escape, and ambiguous-root path containment violations","duration":25.755655000000047,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A13 filesystem fixture gallery"],"fullName":"UNI-A13 filesystem fixture gallery UNI-A13 blocks partial-replacement filesystem fixtures that expose non-atomic canonical state","status":"passed","title":"UNI-A13 blocks partial-replacement filesystem fixtures that expose non-atomic canonical state","duration":10.148575999999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A13 filesystem fixture gallery"],"fullName":"UNI-A13 filesystem fixture gallery UNI-A13 blocks stale lock and temporary artifacts that fail ownership and recovery contracts","status":"passed","title":"UNI-A13 blocks stale lock and temporary artifacts that fail ownership and recovery contracts","duration":3.144362000000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A13 filesystem fixture gallery"],"fullName":"UNI-A13 filesystem fixture gallery UNI-A13 known-good fixtures recover stale lock and temporary artifacts per ownership contract","status":"passed","title":"UNI-A13 known-good fixtures recover stale lock and temporary artifacts per ownership contract","duration":4.265345000000025,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["filesystem known-good and intentional-exception fixtures"],"fullName":"filesystem known-good and intentional-exception fixtures known-good produces no blocking findings","status":"passed","title":"known-good produces no blocking findings","duration":5.141755999999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["filesystem known-good and intentional-exception fixtures"],"fullName":"filesystem known-good and intentional-exception fixtures intentional-exception stays silent","status":"passed","title":"intentional-exception stays silent","duration":3.5976689999999962,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["filesystem detector fail-closed validation"],"fullName":"filesystem detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":2.772453999999982,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310563987,"endTime":1785310564042.7725,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/filesystem.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A03 quota fixture contradiction without winner"],"fullName":"UNI-A03 quota fixture contradiction without winner UNI-A03 reports contradiction between 58% left text and 42% fill geometry","status":"passed","title":"UNI-A03 reports contradiction between 58% left text and 42% fill geometry","duration":5.820310000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A03 quota fixture contradiction without winner"],"fullName":"UNI-A03 quota fixture contradiction without winner UNI-002 contradiction verdict never selects an intended side","status":"passed","title":"UNI-002 contradiction verdict never selects an intended side","duration":1.0873109999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A03 quota fixture contradiction without winner"],"fullName":"UNI-A03 quota fixture contradiction without winner UNI-024 blocking-eligible contradiction preserves both normalized facts","status":"passed","title":"UNI-024 blocking-eligible contradiction preserves both normalized facts","duration":7.869078000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-020 same-semantic agreement after normalization"],"fullName":"UNI-020 same-semantic agreement after normalization UNI-020 agrees when normalized representations match","status":"passed","title":"UNI-020 agrees when normalized representations match","duration":0.4717380000000162,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-021 derived-value closure"],"fullName":"UNI-021 derived-value closure UNI-021 agrees when used + remaining closes to capacity","status":"passed","title":"UNI-021 agrees when used + remaining closes to capacity","duration":0.38022399999999834,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-021 derived-value closure"],"fullName":"UNI-021 derived-value closure UNI-021 contradicts when derived values fail closure","status":"passed","title":"UNI-021 contradicts when derived values fail closure","duration":0.27190000000001646,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-022 evidence relation graph kinds"],"fullName":"ARC-022 evidence relation graph kinds ARC-022 accepts every required relation kind in one graph","status":"passed","title":"ARC-022 accepts every required relation kind in one graph","duration":0.6109630000000266,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["evaluateRelation fail-closed validation"],"fullName":"evaluateRelation fail-closed validation returns unevaluable when relation id is missing","status":"passed","title":"returns unevaluable when relation id is missing","duration":0.23026399999997693,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["evaluateRelation fail-closed validation"],"fullName":"evaluateRelation fail-closed validation returns unevaluable when a relation node is missing","status":"passed","title":"returns unevaluable when a relation node is missing","duration":0.2333770000000186,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310565511,"endTime":1785310565528.2334,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/graph.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A07 metamorphic execution fixture gallery"],"fullName":"UNI-A07 metamorphic execution fixture gallery UNI-A07 proves order, repetition, and parallel invariance with stable identity","status":"passed","title":"UNI-A07 proves order, repetition, and parallel invariance with stable identity","duration":11.237036000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 metamorphic execution fixture gallery"],"fullName":"UNI-A07 metamorphic execution fixture gallery UNI-A07 blocks order-dependent scenario results","status":"passed","title":"UNI-A07 blocks order-dependent scenario results","duration":4.810752000000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A07 metamorphic execution fixture gallery"],"fullName":"UNI-A07 metamorphic execution fixture gallery UNI-A07 blocks shared-state and home-directory leaks across execution contexts","status":"passed","title":"UNI-A07 blocks shared-state and home-directory leaks across execution contexts","duration":2.0899269999999888,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A12 declared-isolation mode fixture gallery"],"fullName":"UNI-A12 declared-isolation mode fixture gallery UNI-A12 blocks demo, preview, fixture, and offline modes from reaching live dependencies","status":"passed","title":"UNI-A12 blocks demo, preview, fixture, and offline modes from reaching live dependencies","duration":2.068384999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A12 declared-isolation mode fixture gallery"],"fullName":"UNI-A12 declared-isolation mode fixture gallery UNI-A12 keeps declared-isolation fixtures silent when only allowed dependencies are reached","status":"passed","title":"UNI-A12 keeps declared-isolation fixtures silent when only allowed dependencies are reached","duration":1.2621510000000171,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isolation known-good fixtures stay silent"],"fullName":"isolation known-good fixtures stay silent known-good produces no blocking findings","status":"passed","title":"known-good produces no blocking findings","duration":1.449783000000025,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isolation intentional-exception fixtures produce no block"],"fullName":"isolation intentional-exception fixtures produce no block intentional-exception stays silent","status":"passed","title":"intentional-exception stays silent","duration":1.5762409999999818,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isolation detector fail-closed validation"],"fullName":"isolation detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":1.419258999999954,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310565208,"endTime":1785310565234.4192,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/isolation.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A06 stream fixture gallery"],"fullName":"UNI-A06 stream fixture gallery UNI-A06 proves chunk-boundary independence with identical decoded events","status":"passed","title":"UNI-A06 proves chunk-boundary independence with identical decoded events","duration":10.723621000000037,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A06 stream fixture gallery"],"fullName":"UNI-A06 stream fixture gallery UNI-A06 blocks chunk-dependent decode across boundaries","status":"passed","title":"UNI-A06 blocks chunk-dependent decode across boundaries","duration":4.60529600000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A06 stream fixture gallery"],"fullName":"UNI-A06 stream fixture gallery UNI-A06 blocks missing or duplicate terminal records","status":"passed","title":"UNI-A06 blocks missing or duplicate terminal records","duration":2.4053579999999783,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A06 stream fixture gallery"],"fullName":"UNI-A06 stream fixture gallery UNI-A06 blocks stdout contamination and terminal integrity defects","status":"passed","title":"UNI-A06 blocks stdout contamination and terminal integrity defects","duration":2.617642999999987,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A06 stream fixture gallery"],"fullName":"UNI-A06 stream fixture gallery UNI-A06 blocks serialization round-trip contract violations","status":"passed","title":"UNI-A06 blocks serialization round-trip contract violations","duration":2.6087739999999826,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["protocol known-good fixtures stay silent"],"fullName":"protocol known-good fixtures stay silent known-good produces no blocking findings","status":"passed","title":"known-good produces no blocking findings","duration":1.64057600000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["protocol intentional-exception fixtures produce no block"],"fullName":"protocol intentional-exception fixtures produce no block intentional-exception stays silent","status":"passed","title":"intentional-exception stays silent","duration":1.5713069999999902,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["protocol detector fail-closed validation"],"fullName":"protocol detector fail-closed validation rejects corrupt fixture input missing fixtureId","status":"passed","title":"rejects corrupt fixture input missing fixtureId","duration":2.208750000000009,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310564736,"endTime":1785310564764.2087,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/protocol.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-A02 deterministic universal primitive runner"],"fullName":"ARC-A02 deterministic universal primitive runner ARC-A02 identical plan and seed produce identical finding identities and ordering","status":"passed","title":"ARC-A02 identical plan and seed produce identical finding identities and ordering","duration":25.47411199999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-003 deterministic detector context"],"fullName":"ARC-003 deterministic detector context ARC-003 injects seed and deterministic clock into detector context","status":"passed","title":"ARC-003 injects seed and deterministic clock into detector context","duration":1.8398149999999873,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-023 witness gating suppresses product findings"],"fullName":"ARC-023 witness gating suppresses product findings ARC-023 failed precondition witness emits coverage outcome and suppresses detector findings","status":"passed","title":"ARC-023 failed precondition witness emits coverage outcome and suppresses detector findings","duration":3.0565819999999917,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-023 witness gating suppresses product findings"],"fullName":"ARC-023 witness gating suppresses product findings ARC-023 passing witnesses allow detector findings through classify","status":"passed","title":"ARC-023 passing witnesses allow detector findings through classify","duration":2.009281000000044,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-021 universal primitive runner classification entry"],"fullName":"ARC-021 universal primitive runner classification entry ARC-021 routes detector outcomes through the Phase 1 classify entry","status":"passed","title":"ARC-021 routes detector outcomes through the Phase 1 classify entry","duration":1.2697440000000029,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["harness failure routing"],"fullName":"harness failure routing routes detector throws to harness phase detector without product findings","status":"passed","title":"routes detector throws to harness phase detector without product findings","duration":1.5042589999999905,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["harness failure routing"],"fullName":"harness failure routing routes surface load throws to harness phase adapter without product findings","status":"passed","title":"routes surface load throws to harness phase adapter without product findings","duration":1.2352639999999724,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["runner fail-closed validation"],"fullName":"runner fail-closed validation rejects empty runId","status":"passed","title":"rejects empty runId","duration":1.9447250000000054,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["runner fail-closed validation"],"fullName":"runner fail-closed validation rejects invalid surface kind","status":"passed","title":"rejects invalid surface kind","duration":1.4920340000000465,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310563038,"endTime":1785310563078.492,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/runner.test.ts"},{"assertionResults":[{"ancestorTitles":["UNI-A02 coverage gap scenarios"],"fullName":"UNI-A02 coverage gap scenarios UNI-A02 empty selection produces empty-selection coverage gap","status":"passed","title":"UNI-A02 empty selection produces empty-selection coverage gap","duration":3.8170240000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A02 coverage gap scenarios"],"fullName":"UNI-A02 coverage gap scenarios UNI-A02 inert perturbation produces inert-perturbation coverage gap","status":"passed","title":"UNI-A02 inert perturbation produces inert-perturbation coverage gap","duration":0.4453770000000077,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A02 coverage gap scenarios"],"fullName":"UNI-A02 coverage gap scenarios UNI-A02 failed precondition produces unproven-precondition coverage gap","status":"passed","title":"UNI-A02 failed precondition produces unproven-precondition coverage gap","duration":1.0184480000000349,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-A02 coverage gap scenarios"],"fullName":"UNI-A02 coverage gap scenarios UNI-A02 disabled third-party rule produces unsupported-capability coverage gap","status":"passed","title":"UNI-A02 disabled third-party rule produces unsupported-capability coverage gap","duration":2.371875999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-010 non-vacuity witness"],"fullName":"UNI-010 non-vacuity witness UNI-010 certifies non-empty selection with matched targets","status":"passed","title":"UNI-010 certifies non-empty selection with matched targets","duration":0.43134599999996226,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-010 non-vacuity witness"],"fullName":"UNI-010 non-vacuity witness UNI-010 allows explicit expected-empty selection","status":"passed","title":"UNI-010 allows explicit expected-empty selection","duration":0.2560310000000072,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-084 empty selection coverage gap"],"fullName":"UNI-084 empty selection coverage gap UNI-084 empty package selection without expected-empty contract is a gap","status":"passed","title":"UNI-084 empty package selection without expected-empty contract is a gap","duration":0.370112000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-011 perturbation reachability witness"],"fullName":"UNI-011 perturbation reachability witness UNI-011 certifies perturbation applied and observed at boundary","status":"passed","title":"UNI-011 certifies perturbation applied and observed at boundary","duration":0.25941499999998996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-011 perturbation reachability witness"],"fullName":"UNI-011 perturbation reachability witness UNI-011 gaps when perturbation is applied but not observed at boundary","status":"passed","title":"UNI-011 gaps when perturbation is applied but not observed at boundary","duration":1.4843539999999962,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-012 positive control witness"],"fullName":"UNI-012 positive control witness UNI-012 certifies owned item is observable before absence checks","status":"passed","title":"UNI-012 certifies owned item is observable before absence checks","duration":0.377679999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-012 positive control witness"],"fullName":"UNI-012 positive control witness UNI-012 gaps when owned item is not observable","status":"passed","title":"UNI-012 gaps when owned item is not observable","duration":0.27938999999997804,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 bad-fixture calibration witness"],"fullName":"UNI-013 bad-fixture calibration witness UNI-013 certifies detector fires against known-bad in supported profile","status":"passed","title":"UNI-013 certifies detector fires against known-bad in supported profile","duration":0.28743800000000874,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 bad-fixture calibration witness"],"fullName":"UNI-013 bad-fixture calibration witness UNI-013 gaps when detector is inert against known-bad in supported profile","status":"passed","title":"UNI-013 gaps when detector is inert against known-bad in supported profile","duration":0.2562810000000013,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-013 bad-fixture calibration witness"],"fullName":"UNI-013 bad-fixture calibration witness UNI-013 gaps when capability profile feature is untested","status":"passed","title":"UNI-013 gaps when capability profile feature is untested","duration":0.28457199999996874,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-014 precondition witness"],"fullName":"UNI-014 precondition witness UNI-014 certifies all configured preconditions before outcome assertion","status":"passed","title":"UNI-014 certifies all configured preconditions before outcome assertion","duration":0.20201500000001715,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UNI-014 precondition witness"],"fullName":"UNI-014 precondition witness UNI-014 names the first failed precondition in the coverage gap","status":"passed","title":"UNI-014 names the first failed precondition in the coverage gap","duration":7.213329000000044,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-023 precondition witness gates detector execution"],"fullName":"ARC-023 precondition witness gates detector execution ARC-023 unproven required precondition yields coverage gap witness","status":"passed","title":"ARC-023 unproven required precondition yields coverage gap witness","duration":0.21429199999994353,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["witness fail-closed validation"],"fullName":"witness fail-closed validation rejects negative matched selection counts","status":"passed","title":"rejects negative matched selection counts","duration":1.093919000000028,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["witness fail-closed validation"],"fullName":"witness fail-closed validation rejects non-integer matched selection counts","status":"passed","title":"rejects non-integer matched selection counts","duration":0.22762299999999414,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["witness fail-closed validation"],"fullName":"witness fail-closed validation rejects empty precondition names","status":"passed","title":"rejects empty precondition names","duration":0.21569099999999253,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["witness fail-closed validation"],"fullName":"witness fail-closed validation rejects empty detector id during calibration","status":"passed","title":"rejects empty detector id during calibration","duration":0.21213299999999435,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["witness fail-closed validation"],"fullName":"witness fail-closed validation rejects empty profile feature during calibration","status":"passed","title":"rejects empty profile feature during calibration","duration":0.19733500000000959,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310564354,"endTime":1785310564376.2156,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/universal/test/witnesses.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-002 portable report directory"],"fullName":"REPORT-002 portable report directory REPORT-002 emits data JSON, copied artifacts, and bundled client","status":"passed","title":"REPORT-002 emits data JSON, copied artifacts, and bundled client","duration":414.106846,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-013 missing screenshot handling"],"fullName":"REPORT-013 missing screenshot handling REPORT-013 records unavailable for browser findings without screenshots","status":"passed","title":"REPORT-013 records unavailable for browser findings without screenshots","duration":371.519453,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-013 missing screenshot handling"],"fullName":"REPORT-013 missing screenshot handling REPORT-013 records not-applicable for non-browser findings","status":"passed","title":"REPORT-013 records not-applicable for non-browser findings","duration":372.14109499999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-013 missing screenshot handling"],"fullName":"REPORT-013 missing screenshot handling REPORT-013 keeps screenshot references only when image capture is available","status":"passed","title":"REPORT-013 keeps screenshot references only when image capture is available","duration":382.764367,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-063 / CLI-A06 redaction"],"fullName":"REPORT-063 / CLI-A06 redaction REPORT-063 redacts configured secrets before report bytes are emitted","status":"passed","title":"REPORT-063 redacts configured secrets before report bytes are emitted","duration":381.2479310000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A02 deterministic report output"],"fullName":"ARC-A02 deterministic report output ARC-A02 identical inputs produce identical report directory bytes","status":"passed","title":"ARC-A02 identical inputs produce identical report directory bytes","duration":402.5086120000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310642938,"endTime":1785310645262.5085,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/build.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-014 coverage remediation"],"fullName":"REPORT-014 coverage remediation REPORT-014 derives remediation guidance from coverage reason","status":"passed","title":"REPORT-014 derives remediation guidance from coverage reason","duration":1.449893000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-015 harness remediation"],"fullName":"REPORT-015 harness remediation REPORT-015 derives rerun remediation from harness outcome","status":"passed","title":"REPORT-015 derives rerun remediation from harness outcome","duration":0.2960510000000056,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A09 server review rejection"],"fullName":"REPORT-A09 server review rejection REPORT-A09 rejects adjudication of coverage outcome IDs","status":"passed","title":"REPORT-A09 rejects adjudication of coverage outcome IDs","duration":3.5505250000000217,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A10 server batch review rejection"],"fullName":"REPORT-A10 server batch review rejection REPORT-A10 rejects batch not_defect on harness outcome IDs","status":"passed","title":"REPORT-A10 rejects batch not_defect on harness outcome IDs","duration":1.416891000000021,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310701420,"endTime":1785310701426.417,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/outcome-views.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-025 confirmed advisory remains non-blocking"],"fullName":"REPORT-025 confirmed advisory remains non-blocking REPORT-025 confirm defect stages advisory decision without promotion authority","status":"passed","title":"REPORT-025 confirm defect stages advisory decision without promotion authority","duration":10.218176,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-026 promotion preview and staging"],"fullName":"REPORT-026 promotion preview and staging REPORT-026 preview shows contract id, version, oracle, calibration evidence, and next-run blocking effect","status":"passed","title":"REPORT-026 preview shows contract id, version, oracle, calibration evidence, and next-run blocking effect","duration":3.949163999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-026 promotion preview and staging"],"fullName":"REPORT-026 promotion preview and staging REPORT-026 reviewed-policy scope cannot be promoted","status":"passed","title":"REPORT-026 reviewed-policy scope cannot be promoted","duration":4.248137999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-026 promotion preview and staging"],"fullName":"REPORT-026 promotion preview and staging REPORT-026 stages promotion request for orchestrator execution","status":"passed","title":"REPORT-026 stages promotion request for orchestrator execution","duration":7.3573749999999905,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-055 auto-derivation for detector-backed findings"],"fullName":"DATA-055 auto-derivation for detector-backed findings DATA-055 defaults to detector oracle replay and retained evidence calibration witness","status":"passed","title":"DATA-055 defaults to detector oracle replay and retained evidence calibration witness","duration":5.122331000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-055 auto-derivation for detector-backed findings"],"fullName":"DATA-055 auto-derivation for detector-backed findings DATA-055 fails closed when retained evidence is unavailable","status":"passed","title":"DATA-055 fails closed when retained evidence is unavailable","duration":1.9598760000000084,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-026 report service stages only"],"fullName":"ARC-026 report service stages only ARC-026 handlePromotionMutation never imports contract calibration or activation executors","status":"passed","title":"ARC-026 handlePromotionMutation never imports contract calibration or activation executors","duration":4.990696000000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-026 report service stages only"],"fullName":"ARC-026 report service stages only ARC-026 report package source has no in-process calibrate or activate imports","status":"passed","title":"ARC-026 report package source has no in-process calibrate or activate imports","duration":7.316874000000013,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310645793,"endTime":1785310645838.317,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/promotion.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-002 client contract tracks the canonical schemas"],"fullName":"REPORT-002 client contract tracks the canonical schemas pins every client enum to its canonical member list","status":"passed","title":"pins every client enum to its canonical member list","duration":2.074624,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-002 client contract tracks the canonical schemas"],"fullName":"REPORT-002 client contract tracks the canonical schemas accepts every draft the server schema accepts, including scoped undo entries","status":"passed","title":"accepts every draft the server schema accepts, including scoped undo entries","duration":0.855639999999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-002 client contract tracks the canonical schemas"],"fullName":"REPORT-002 client contract tracks the canonical schemas rejects a draft whose verdict leaves the canonical union","status":"passed","title":"rejects a draft whose verdict leaves the canonical union","duration":0.3121020000000101,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310701587,"endTime":1785310701590.312,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/report-contract.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-024 default exact decision scope"],"fullName":"REPORT-024 default exact decision scope REPORT-024 derives exact finding identity and evidence fingerprint scope by default","status":"passed","title":"REPORT-024 derives exact finding identity and evidence fingerprint scope by default","duration":4.6300130000000195,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-022 reviewed-policy reason requirement"],"fullName":"REPORT-022 reviewed-policy reason requirement REPORT-022 requires reason for not_defect with reviewed-policy scope","status":"passed","title":"REPORT-022 requires reason for not_defect with reviewed-policy scope","duration":3.212896999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-023 undo preserves notes"],"fullName":"REPORT-023 undo preserves notes REPORT-023 undo restores prior verdict while keeping reviewer notes","status":"passed","title":"REPORT-023 undo restores prior verdict while keeping reviewer notes","duration":7.7644260000000145,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-023 undo via review API"],"fullName":"REPORT-023 undo via review API REPORT-023 handleReviewMutation undo clears staged verdict","status":"passed","title":"REPORT-023 handleReviewMutation undo clears staged verdict","duration":4.752603999999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-071 crash-safe review draft"],"fullName":"REPORT-071 crash-safe review draft REPORT-071 persists staged decisions atomically to review draft file","status":"passed","title":"REPORT-071 persists staged decisions atomically to review draft file","duration":3.2010119999999915,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310674959,"endTime":1785310674982.201,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/review.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-060 / REPORT-A07 report-service security regressions"],"fullName":"ARC-060 / REPORT-A07 report-service security regressions ARC-060 / REPORT-A07 preserves hardening headers on rejected mutation responses","status":"passed","title":"ARC-060 / REPORT-A07 preserves hardening headers on rejected mutation responses","duration":30.224533000000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PLAN-020 executable threat-model coverage"],"fullName":"PLAN-020 executable threat-model coverage PLAN-020 requires every threat mitigation row to point at an executable test","status":"passed","title":"PLAN-020 requires every threat mitigation row to point at an executable test","duration":9.627444999999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310701801,"endTime":1785310701841.6274,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/security-regression.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-060 loopback bind"],"fullName":"REPORT-060 loopback bind REPORT-060 accepts 127.0.0.1 and ::1 loopback hosts","status":"passed","title":"REPORT-060 accepts 127.0.0.1 and ::1 loopback hosts","duration":9.949085999999966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-060 loopback bind"],"fullName":"REPORT-060 loopback bind ARC-A04 / REPORT-A07 rejects wildcard and non-loopback hosts fail-closed","status":"passed","title":"ARC-A04 / REPORT-A07 rejects wildcard and non-loopback hosts fail-closed","duration":2.1306869999999662,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-061 capability token and CSRF"],"fullName":"REPORT-061 capability token and CSRF REPORT-061 issues an unguessable per-run capability token","status":"passed","title":"REPORT-061 issues an unguessable per-run capability token","duration":3.330990999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-061 capability token and CSRF"],"fullName":"REPORT-061 capability token and CSRF REPORT-061 serves strict CSP without remote origins or inline eval","status":"passed","title":"REPORT-061 serves strict CSP without remote origins or inline eval","duration":23.802963999999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-061 capability token and CSRF"],"fullName":"REPORT-061 capability token and CSRF REPORT-A07 rejects mutation requests with missing capability token","status":"passed","title":"REPORT-A07 rejects mutation requests with missing capability token","duration":6.779575999999963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-061 capability token and CSRF"],"fullName":"REPORT-061 capability token and CSRF REPORT-A07 rejects mutation requests with wrong capability token","status":"passed","title":"REPORT-A07 rejects mutation requests with wrong capability token","duration":3.7100690000000327,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-061 capability token and CSRF"],"fullName":"REPORT-061 capability token and CSRF REPORT-A07 rejects cross-origin mutation requests fail-closed","status":"passed","title":"REPORT-A07 rejects cross-origin mutation requests fail-closed","duration":4.134505000000047,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-061 capability token and CSRF"],"fullName":"REPORT-061 capability token and CSRF REPORT-A07 rejects mutation requests with missing CSRF header","status":"passed","title":"REPORT-A07 rejects mutation requests with missing CSRF header","duration":3.8862989999999513,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-062 resolves safe relative paths beneath report root","status":"passed","title":"REPORT-062 resolves safe relative paths beneath report root","duration":1.5927790000000073,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement ARC-A04 / REPORT-A07 rejects ../ traversal paths fail-closed","status":"passed","title":"ARC-A04 / REPORT-A07 rejects ../ traversal paths fail-closed","duration":1.2732770000000073,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-A07 rejects absolute paths fail-closed","status":"passed","title":"REPORT-A07 rejects absolute paths fail-closed","duration":1.0366960000000063,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-A07 rejects file:// URLs fail-closed","status":"passed","title":"REPORT-A07 rejects file:// URLs fail-closed","duration":1.0172509999999875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-A07 rejects symlink escape fail-closed","status":"passed","title":"REPORT-A07 rejects symlink escape fail-closed","duration":1.7224459999999908,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-A07 rejects external write targets through the mutation endpoint","status":"passed","title":"REPORT-A07 rejects external write targets through the mutation endpoint","duration":3.8485470000000532,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-062 writes only beneath report root when mutation is authorized","status":"passed","title":"REPORT-062 writes only beneath report root when mutation is authorized","duration":3.927552999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-062 rejects writes outside configured report root","status":"passed","title":"REPORT-062 rejects writes outside configured report root","duration":4.220813000000021,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-062 rejects external absolute write targets fail-closed","status":"passed","title":"REPORT-062 rejects external absolute write targets fail-closed","duration":3.872419999999977,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-062 rejects file URL write targets fail-closed","status":"passed","title":"REPORT-062 rejects file URL write targets fail-closed","duration":3.567592999999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-062 artifact path confinement"],"fullName":"REPORT-062 artifact path confinement REPORT-062 rejects configured external write targets fail-closed","status":"passed","title":"REPORT-062 rejects configured external write targets fail-closed","duration":1.1526549999999816,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310645529,"endTime":1785310645614.1526,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/security.test.ts"},{"assertionResults":[{"ancestorTitles":["PLAN-010 / PLAN-011 report client bundle"],"fullName":"PLAN-010 / PLAN-011 report client bundle PLAN-011 build emits dist/client consumed by the report server","status":"passed","title":"PLAN-011 build emits dist/client consumed by the report server","duration":378.53912,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PLAN-010 / PLAN-011 report client bundle"],"fullName":"PLAN-010 / PLAN-011 report client bundle PLAN-010 bundled client references zero external origins","status":"passed","title":"PLAN-010 bundled client references zero external origins","duration":0.5194339999999897,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310701945,"endTime":1785310702323.539,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/smoke.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A12 report accessibility E2E"],"fullName":"REPORT-A12 report accessibility E2E REPORT-A12 completes finding, decision, batch, and finalization with keyboard-only controls and WCAG axe checks","status":"passed","title":"REPORT-A12 completes finding, decision, batch, and finalization with keyboard-only controls and WCAG axe checks","duration":3526.098513,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A12 report accessibility E2E"],"fullName":"REPORT-A12 report accessibility E2E REPORT-A12 preserves visible keyboard focus at 400% reflow and RTL","status":"passed","title":"REPORT-A12 preserves visible keyboard focus at 400% reflow and RTL","duration":3055.050446,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A12 report accessibility E2E"],"fullName":"REPORT-A12 report accessibility E2E REPORT-A12 removes animation and transition under reduced motion throughout review","status":"passed","title":"REPORT-A12 removes animation and transition under reduced motion throughout review","duration":2941.202313,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310659026,"endTime":1785310668548.2024,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/a11y.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A03 accepted finding lifecycle"],"fullName":"REPORT-A03 accepted finding lifecycle REPORT-A03 hides finalized not_defect findings by default, audits their evidence, and retains revocation history","status":"passed","title":"REPORT-A03 hides finalized not_defect findings by default, audits their evidence, and retains revocation history","duration":1795.7585540000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A04 reopened finding"],"fullName":"REPORT-A04 reopened finding REPORT-A04 shows materially changed evidence as reopened with the prior-decision diff","status":"passed","title":"REPORT-A04 shows materially changed evidence as reopened with the prior-decision diff","duration":1252.8771270000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310695607,"endTime":1785310698655.8772,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/accepted.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A02 filtered batch review"],"fullName":"REPORT-A02 filtered batch review REPORT-030 through REPORT-035 filter visible findings and confirm only eligible current scope","status":"passed","title":"REPORT-030 through REPORT-035 filter visible findings and confirm only eligible current scope","duration":2126.012896,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310699099,"endTime":1785310701225.013,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/batch.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A05 finalization and fix packets"],"fullName":"REPORT-A05 finalization and fix packets REPORT-050 through REPORT-054 atomically finalizes decisions and writes a complete non-overwriting fix packet","status":"passed","title":"REPORT-050 through REPORT-054 atomically finalizes decisions and writes a complete non-overwriting fix packet","duration":1873.0805759999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A05 finalization and fix packets"],"fullName":"REPORT-A05 finalization and fix packets REPORT-053 persists non-defects without creating an empty fix packet","status":"passed","title":"REPORT-053 persists non-defects without creating an empty fix packet","duration":1396.250654,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A05 finalization and fix packets"],"fullName":"REPORT-A05 finalization and fix packets REPORT-052 never overwrites an existing sortable packet filename","status":"passed","title":"REPORT-052 never overwrites an existing sortable packet filename","duration":1098.1320830000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310690787,"endTime":1785310695155.132,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/finalize.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A01 geometry marker placement"],"fullName":"REPORT-A01 geometry marker placement REPORT-A01 geometry fixture marker lands on clipped pixels within tolerance","status":"passed","title":"REPORT-A01 geometry fixture marker lands on clipped pixels within tolerance","duration":1735.7554740000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A08 relation presentation"],"fullName":"REPORT-A08 relation presentation REPORT-A08 proven same-semantic contradiction renders blocking with both representations","status":"passed","title":"REPORT-A08 proven same-semantic contradiction renders blocking with both representations","duration":186.5898070000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A08 relation presentation"],"fullName":"REPORT-A08 relation presentation REPORT-A08 unresolved intent-source contradiction renders advisory","status":"passed","title":"REPORT-A08 unresolved intent-source contradiction renders advisory","duration":189.51373699999976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-010 finding view elements"],"fullName":"REPORT-010 finding view elements REPORT-010 renders summary, execution context, and detector evidence for geometry finding","status":"passed","title":"REPORT-010 renders summary, execution context, and detector evidence for geometry finding","duration":1302.0088329999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310680476,"endTime":1785310683890.0088,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/finding-view.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A09 coverage non-adjudicable view"],"fullName":"REPORT-A09 coverage non-adjudicable view REPORT-A09 coverage-incomplete outcome displays witness and cannot be adjudicated","status":"passed","title":"REPORT-A09 coverage-incomplete outcome displays witness and cannot be adjudicated","duration":613.5400390000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A09 coverage non-adjudicable view"],"fullName":"REPORT-A09 coverage non-adjudicable view REPORT-A09 review mutation rejects coverage outcome IDs","status":"passed","title":"REPORT-A09 review mutation rejects coverage outcome IDs","duration":29.056178000000045,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A10 harness non-adjudicable view"],"fullName":"REPORT-A10 harness non-adjudicable view REPORT-A10 harness outcome displays phase and rerun remediation without adjudication actions","status":"passed","title":"REPORT-A10 harness outcome displays phase and rerun remediation without adjudication actions","duration":192.85839899999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A10 harness non-adjudicable view"],"fullName":"REPORT-A10 harness non-adjudicable view REPORT-A10 batch review cannot create accepted-product fingerprint from harness outcome","status":"passed","title":"REPORT-A10 batch review cannot create accepted-product fingerprint from harness outcome","duration":8.413421000000199,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-014 coverage view elements"],"fullName":"REPORT-014 coverage view elements REPORT-014 renders scope, execution context, reason, witnesses, capability profile, remediation","status":"passed","title":"REPORT-014 renders scope, execution context, reason, witnesses, capability profile, remediation","duration":187.77635499999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-015 harness view elements"],"fullName":"REPORT-015 harness view elements REPORT-015 renders phase, planned scope/context, cause, artifacts, rerun remediation","status":"passed","title":"REPORT-015 renders phase, planned scope/context, cause, artifacts, rerun remediation","duration":175.64362299999993,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310646303,"endTime":1785310647510.6436,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/outcome-views.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A11 staged contract promotion"],"fullName":"REPORT-A11 staged contract promotion REPORT-A11 confirmed unchanged advisory is visibly non-blocking until promotion","status":"passed","title":"REPORT-A11 confirmed unchanged advisory is visibly non-blocking until promotion","duration":1903.1216970000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A11 staged contract promotion"],"fullName":"REPORT-A11 staged contract promotion REPORT-A11 promotion action shows contract details and stages orchestrator request","status":"passed","title":"REPORT-A11 promotion action shows contract details and stages orchestrator request","duration":1388.4684539999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A11 staged contract promotion"],"fullName":"REPORT-A11 staged contract promotion REPORT-A11 next comparable report shows blocking after orchestrator promotion","status":"passed","title":"REPORT-A11 next comparable report shows blocking after orchestrator promotion","duration":2639.7668449999996,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310684428,"endTime":1785310690359.7668,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/promotion.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A02 confirm reject undo reload recovery"],"fullName":"REPORT-A02 confirm reject undo reload recovery REPORT-A02 confirm defect exposes accessible verdict text in confirmation state","status":"passed","title":"REPORT-A02 confirm defect exposes accessible verdict text in confirmation state","duration":1930.0057909999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A02 confirm reject undo reload recovery"],"fullName":"REPORT-A02 confirm reject undo reload recovery REPORT-A02 not a defect exposes accessible verdict text in confirmation state","status":"passed","title":"REPORT-A02 not a defect exposes accessible verdict text in confirmation state","duration":1328.928086,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A02 confirm reject undo reload recovery"],"fullName":"REPORT-A02 confirm reject undo reload recovery REPORT-A02 undo restores prior unreviewed state","status":"passed","title":"REPORT-A02 undo restores prior unreviewed state","duration":1363.9528409999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A02 confirm reject undo reload recovery"],"fullName":"REPORT-A02 confirm reject undo reload recovery REPORT-071 browser refresh restores staged decisions from crash-safe draft","status":"passed","title":"REPORT-071 browser refresh restores staged decisions from crash-safe draft","duration":1543.6794420000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A02 confirm reject undo reload recovery"],"fullName":"REPORT-A02 confirm reject undo reload recovery REPORT-071 process restart restores staged decisions without finalizing","status":"passed","title":"REPORT-071 process restart restores staged decisions without finalizing","duration":1472.4844859999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-020 explicit review actions"],"fullName":"REPORT-020 explicit review actions REPORT-020 renders exact confirm and not-a-defect action labels","status":"passed","title":"REPORT-020 renders exact confirm and not-a-defect action labels","duration":1271.749729000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-021 accessible review controls"],"fullName":"REPORT-021 accessible review controls REPORT-021 exposes accessible labels and keyboard shortcuts for review actions","status":"passed","title":"REPORT-021 exposes accessible labels and keyboard shortcuts for review actions","duration":1276.7495289999988,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310647955,"endTime":1785310658142.7495,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/review.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A06 static decision bundle export"],"fullName":"REPORT-A06 static decision bundle export REPORT-072 exports an unsigned hash-bound bundle without repository persistence","status":"passed","title":"REPORT-072 exports an unsigned hash-bound bundle without repository persistence","duration":1836.169731,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-064 concurrent review"],"fullName":"REPORT-064 concurrent review REPORT-064 reconciles a stale interactive draft before user retry","status":"passed","title":"REPORT-064 reconciles a stale interactive draft before user retry","duration":1651.7148429999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-064 concurrent review"],"fullName":"REPORT-064 concurrent review REPORT-064 rejects stale writes with changed decisions and preserves both verdicts for merge retry","status":"passed","title":"REPORT-064 rejects stale writes with changed decisions and preserves both verdicts for merge retry","duration":1133.1154749999996,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310675437,"endTime":1785310680058.1155,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/static-mode.spec.ts"},{"assertionResults":[{"ancestorTitles":["report client injection resistance"],"fullName":"report client injection resistance renders an unmatched route id as text, not markup","status":"passed","title":"renders an unmatched route id as text, not markup","duration":1956.2537049999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["report client injection resistance"],"fullName":"report client injection resistance renders a hostile harness cause as text, not markup","status":"passed","title":"renders a hostile harness cause as text, not markup","duration":137.6658699999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["report client injection resistance"],"fullName":"report client injection resistance rejects an outcome field that leaves its declared union","status":"passed","title":"rejects an outcome field that leaves its declared union","duration":130.99340200000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["report client injection resistance"],"fullName":"report client injection resistance rejects a report payload that violates the record contract","status":"passed","title":"rejects a report payload that violates the record contract","duration":1226.866306,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["report client injection resistance"],"fullName":"report client injection resistance drops an artifact path that points off-origin","status":"passed","title":"drops an artifact path that points off-origin","duration":1263.51188,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["report client injection resistance"],"fullName":"report client injection resistance serves a content security policy that forbids inline script","status":"passed","title":"serves a content security policy that forbids inline script","duration":1098.1563100000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310668970,"endTime":1785310674784.1562,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/report/test/e2e/xss.spec.ts"},{"assertionResults":[{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 sorts object keys by Unicode scalar order","status":"passed","title":"DATA-046 sorts object keys by Unicode scalar order","duration":2.310576999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 NFC-normalizes string values","status":"passed","title":"DATA-046 NFC-normalizes string values","duration":0.2381719999999916,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 preserves array element order","status":"passed","title":"DATA-046 preserves array element order","duration":0.21165500000000748,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 serializes finite normalized JSON numbers","status":"passed","title":"DATA-046 serializes finite normalized JSON numbers","duration":0.28638899999998557,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 emits UTF-8 JSON with exactly one trailing LF","status":"passed","title":"DATA-046 emits UTF-8 JSON with exactly one trailing LF","duration":0.3137450000000115,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 rejects NaN with CanonicalizationError","status":"passed","title":"DATA-046 rejects NaN with CanonicalizationError","duration":8.740401999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 rejects non-finite numbers with CanonicalizationError","status":"passed","title":"DATA-046 rejects non-finite numbers with CanonicalizationError","duration":0.41620399999999336,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 rejects negative zero ambiguity","status":"passed","title":"DATA-046 rejects negative zero ambiguity","duration":0.29455100000001266,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 rejects unsupported types without coercion","status":"passed","title":"DATA-046 rejects unsupported types without coercion","duration":0.5716780000000199,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 rejects circular references","status":"passed","title":"DATA-046 rejects circular references","duration":0.36010100000001444,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical serialization"],"fullName":"DATA-046 canonical serialization DATA-046 is idempotent through parse and re-canonicalize","status":"passed","title":"DATA-046 is idempotent through parse and re-canonicalize","duration":0.41104899999999134,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-080 canonical file encoding"],"fullName":"DATA-080 canonical file encoding DATA-080 uses sorted keys and normalized locale-independent encoding","status":"passed","title":"DATA-080 uses sorted keys and normalized locale-independent encoding","duration":0.24910099999999602,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-080 canonical file encoding"],"fullName":"DATA-080 canonical file encoding DATA-080 cross-check vector hashes identical structures with different key order and NFD vs NFC strings","status":"passed","title":"DATA-080 cross-check vector hashes identical structures with different key order and NFD vs NFC strings","duration":0.9350270000000194,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 sha256Canonical"],"fullName":"DATA-046 sha256Canonical DATA-046 hashes canonical UTF-8 bytes as lowercase hex SHA-256","status":"passed","title":"DATA-046 hashes canonical UTF-8 bytes as lowercase hex SHA-256","duration":0.40258700000001113,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310561606,"endTime":1785310561624.4026,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/canonical.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-040 ReviewDecision"],"fullName":"DATA-040 ReviewDecision DATA-040 round-trips the reviewed decision contract","status":"passed","title":"DATA-040 round-trips the reviewed decision contract","duration":8.072733999999969,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 round-trips exact and reviewed-policy scopes","status":"passed","title":"DATA-044 round-trips exact and reviewed-policy scopes","duration":2.3327279999999746,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 rejects detector IDs that are not lower-kebab","status":"passed","title":"DATA-044 rejects detector IDs that are not lower-kebab","duration":1.7514749999999708,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 rejects non-normalized SemVer detector versions","status":"passed","title":"DATA-044 rejects non-normalized SemVer detector versions","duration":0.4730180000000246,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 rejects glob scopes containing parent traversal","status":"passed","title":"DATA-044 rejects glob scopes containing parent traversal","duration":0.5525269999999978,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 rejects glob scopes containing backslashes","status":"passed","title":"DATA-044 rejects glob scopes containing backslashes","duration":0.5908059999999864,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 rejects implicit global glob patterns","status":"passed","title":"DATA-044 rejects implicit global glob patterns","duration":0.9798589999999763,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-044 DecisionScope"],"fullName":"DATA-044 DecisionScope DATA-044 requires justification and expiry on reviewed-policy scopes","status":"passed","title":"DATA-044 requires justification and expiry on reviewed-policy scopes","duration":1.3470079999999598,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical scope serialization"],"fullName":"DATA-046 canonical scope serialization DATA-046 sorts unordered dimensions, predicates, kinds, and supersedes before canonicalization","status":"passed","title":"DATA-046 sorts unordered dimensions, predicates, kinds, and supersedes before canonicalization","duration":2.9733570000000213,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical scope serialization"],"fullName":"DATA-046 canonical scope serialization DATA-A11 exact and reviewed-policy scopes round-trip through canonical serialization with stable hashes","status":"passed","title":"DATA-A11 exact and reviewed-policy scopes round-trip through canonical serialization with stable hashes","duration":1.3491329999999948,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-050 Contract envelope"],"fullName":"DATA-050 Contract envelope DATA-050 round-trips the contract envelope contract","status":"passed","title":"DATA-050 round-trips the contract envelope contract","duration":1.8577750000000037,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-050 Contract envelope"],"fullName":"DATA-050 Contract envelope DATA-050 requires active contracts to identify their own ID and version in applicableScope","status":"passed","title":"DATA-050 requires active contracts to identify their own ID and version in applicableScope","duration":0.6092119999999568,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-048 DecisionBundle"],"fullName":"DATA-048 DecisionBundle DATA-048 round-trips decision bundles with schemaVersion decision-bundle/v1","status":"passed","title":"DATA-048 round-trips decision bundles with schemaVersion decision-bundle/v1","duration":3.758812999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-048 DecisionBundle"],"fullName":"DATA-048 DecisionBundle DATA-048 computes bundleHash as SHA-256 of canonical bundle with bundleHash omitted","status":"passed","title":"DATA-048 computes bundleHash as SHA-256 of canonical bundle with bundleHash omitted","duration":0.5016679999999951,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310561040,"endTime":1785310561067.7588,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/decisions.test.ts"},{"assertionResults":[{"ancestorTitles":["schema package harness"],"fullName":"schema package harness ARC-A06 runs the verification harness","status":"passed","title":"ARC-A06 runs the verification harness","duration":4.943228000000033,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310562113,"endTime":1785310562117.943,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/harness.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-081 migration framework"],"fullName":"DATA-081 migration framework DATA-081 applies version-stepped migrations as a pure transform","status":"passed","title":"DATA-081 applies version-stepped migrations as a pure transform","duration":19.701580999999976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-081 migration framework"],"fullName":"DATA-081 migration framework DATA-081 fails closed when a step's fromVersion does not match the current record","status":"passed","title":"DATA-081 fails closed when a step's fromVersion does not match the current record","duration":0.7452490000000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 migration acceptance"],"fullName":"DATA-A13 migration acceptance DATA-A13 round-trips decision history losslessly through version-stepped fixtures","status":"passed","title":"DATA-A13 round-trips decision history losslessly through version-stepped fixtures","duration":1.2561110000000326,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 migration acceptance"],"fullName":"DATA-A13 migration acceptance DATA-A13 rejects destructive migration without an explicit backup artifact","status":"passed","title":"DATA-A13 rejects destructive migration without an explicit backup artifact","duration":0.712297000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 migration acceptance"],"fullName":"DATA-A13 migration acceptance DATA-A13 allows destructive migration when backup artifact ref is declared","status":"passed","title":"DATA-A13 allows destructive migration when backup artifact ref is declared","duration":1.8529539999999542,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310561344,"endTime":1785310561368.853,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/migrate.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-001 record envelope"],"fullName":"DATA-001 record envelope DATA-001 requires schemaVersion, id, and creationSource on every persisted record","status":"passed","title":"DATA-001 requires schemaVersion, id, and creationSource on every persisted record","duration":11.350941999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-002 parseRecord fail-closed validation"],"fullName":"DATA-002 parseRecord fail-closed validation DATA-002 rejects unsupported future schema versions with SchemaError","status":"passed","title":"DATA-002 rejects unsupported future schema versions with SchemaError","duration":1.0322999999999638,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-002 parseRecord fail-closed validation"],"fullName":"DATA-002 parseRecord fail-closed validation DATA-002 rejects unknown required semantics with SchemaError","status":"passed","title":"DATA-002 rejects unknown required semantics with SchemaError","duration":0.9374579999999924,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-010 MatrixCell"],"fullName":"DATA-010 MatrixCell DATA-010 round-trips the matrix cell contract","status":"passed","title":"DATA-010 round-trips the matrix cell contract","duration":0.32377199999996265,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-012 ExecutionContext"],"fullName":"DATA-012 ExecutionContext DATA-012 round-trips browser and non-browser execution contexts","status":"passed","title":"DATA-012 round-trips browser and non-browser execution contexts","duration":0.35416900000001306,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-012 ExecutionContext"],"fullName":"DATA-012 ExecutionContext DATA-012 rejects browser-only fields on non-browser contexts at parse time","status":"passed","title":"DATA-012 rejects browser-only fields on non-browser contexts at parse time","duration":0.9923949999999877,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-012 ExecutionContext"],"fullName":"DATA-012 ExecutionContext DATA-012 rejects non-browser fields on browser contexts at parse time","status":"passed","title":"DATA-012 rejects non-browser fields on browser contexts at parse time","duration":0.37275799999997616,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-012 ExecutionContext"],"fullName":"DATA-012 ExecutionContext DATA-012 makes browser-only fields impossible on non-browser contexts at compile time","status":"passed","title":"DATA-012 makes browser-only fields impossible on non-browser contexts at compile time","duration":0.3200740000000337,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-020 Finding"],"fullName":"DATA-020 Finding DATA-020 round-trips the finding contract including certainty union","status":"passed","title":"DATA-020 round-trips the finding contract including certainty union","duration":1.6487939999999526,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-039 CoverageOutcome"],"fullName":"DATA-039 CoverageOutcome DATA-039 round-trips coverage-incomplete records with closed reason union","status":"passed","title":"DATA-039 round-trips coverage-incomplete records with closed reason union","duration":1.632963000000018,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-001 HarnessOutcome"],"fullName":"HAR-001 HarnessOutcome HAR-001 round-trips harness failures with closed phase union","status":"passed","title":"HAR-001 round-trips harness failures with closed phase union","duration":0.7112459999999601,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-002 harness structural isolation"],"fullName":"HAR-002 harness structural isolation HAR-002 rejects harness outcomes that inject product-finding fields such as lane","status":"passed","title":"HAR-002 rejects harness outcomes that inject product-finding fields such as lane","duration":0.29997500000001764,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-002 harness structural isolation"],"fullName":"HAR-002 harness structural isolation HAR-002 rejects harness outcomes that inject decision or fingerprint fields","status":"passed","title":"HAR-002 rejects harness outcomes that inject decision or fingerprint fields","duration":0.5083119999999894,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A07 relation evidence round-trip"],"fullName":"DATA-A07 relation evidence round-trip DATA-A07 preserves both contradiction observations through parse and canonical serialization","status":"passed","title":"DATA-A07 preserves both contradiction observations through parse and canonical serialization","duration":1.2129150000000095,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A08 coverage reason serialization"],"fullName":"DATA-A08 coverage reason serialization DATA-A08 serializes distinct coverage-incomplete reasons without collision","status":"passed","title":"DATA-A08 serializes distinct coverage-incomplete reasons without collision","duration":0.4561499999999796,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A09 artifact provenance round-trip"],"fullName":"DATA-A09 artifact provenance round-trip DATA-A09 preserves artifact reference fields through parse and canonical serialization","status":"passed","title":"DATA-A09 preserves artifact reference fields through parse and canonical serialization","duration":0.5919890000000123,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310560727,"endTime":1785310560750.592,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/records.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-046 canonical property invariants"],"fullName":"DATA-046 canonical property invariants DATA-046 canonicalize is idempotent through parse and re-canonicalize","status":"passed","title":"DATA-046 canonicalize is idempotent through parse and re-canonicalize","duration":183.98253600000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-046 canonical property invariants"],"fullName":"DATA-046 canonical property invariants DATA-046 canonicalize is invariant to object key insertion order","status":"passed","title":"DATA-046 canonicalize is invariant to object key insertion order","duration":197.268299,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-080 canonical encoding property invariants"],"fullName":"DATA-080 canonical encoding property invariants DATA-080 canonicalize is invariant to NFD vs NFC string forms","status":"passed","title":"DATA-080 canonicalize is invariant to NFD vs NFC string forms","duration":28.138778000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-080 canonical encoding property invariants"],"fullName":"DATA-080 canonical encoding property invariants DATA-080 sha256Canonical is stable across key order and Unicode normalization","status":"passed","title":"DATA-080 sha256Canonical is stable across key order and Unicode normalization","duration":203.00955599999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310561953,"endTime":1785310562566.0095,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/property/canonical.prop.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-A13 migration property invariants"],"fullName":"DATA-A13 migration property invariants DATA-A13 version-stepped migration round-trips decision history losslessly","status":"passed","title":"DATA-A13 version-stepped migration round-trips decision history losslessly","duration":194.86722500000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 migration property invariants"],"fullName":"DATA-A13 migration property invariants DATA-A13 composed migration steps equal chained single-step migrations","status":"passed","title":"DATA-A13 composed migration steps equal chained single-step migrations","duration":209.18843100000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 migration property invariants"],"fullName":"DATA-A13 migration property invariants DATA-A13 non-destructive annotation migration preserves decision history","status":"passed","title":"DATA-A13 non-destructive annotation migration preserves decision history","duration":165.28406300000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-081 migration framework property invariants"],"fullName":"DATA-081 migration framework property invariants DATA-081 migrate applies an empty step list as identity","status":"passed","title":"DATA-081 migrate applies an empty step list as identity","duration":133.80535299999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-081 migration framework property invariants"],"fullName":"DATA-081 migration framework property invariants DATA-081 migrate fails closed when step versions do not match the record","status":"passed","title":"DATA-081 migrate fails closed when step versions do not match the record","duration":66.24093300000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-081 migration framework property invariants"],"fullName":"DATA-081 migration framework property invariants DATA-081 destructive migration without backup artifact always fails closed","status":"passed","title":"DATA-081 destructive migration without backup artifact always fails closed","duration":76.85788500000012,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-081 migration fixture sanity"],"fullName":"DATA-081 migration fixture sanity DATA-081 property harness round-trips a generated legacy store fixture","status":"passed","title":"DATA-081 property harness round-trips a generated legacy store fixture","duration":1.345777999999882,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310560942,"endTime":1785310561796.3457,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/schema/test/property/migrate.prop.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A03/CLI-A08/CLI-A16 CI lanes"],"fullName":"CLI-A03/CLI-A08/CLI-A16 CI lanes CLI-A03 emits a static focused artifact and valid unsigned decision bundle","status":"passed","title":"CLI-A03 emits a static focused artifact and valid unsigned decision bundle","duration":286.2031840000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A03/CLI-A08/CLI-A16 CI lanes"],"fullName":"CLI-A03/CLI-A08/CLI-A16 CI lanes CLI-A08 makes an absent or failed capability-profile canary coverage-incomplete","status":"passed","title":"CLI-A08 makes an absent or failed capability-profile canary coverage-incomplete","duration":54.508932999999956,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A03/CLI-A08/CLI-A16 CI lanes"],"fullName":"CLI-A03/CLI-A08/CLI-A16 CI lanes CLI-A16 emits disjoint machine-readable CI summary fields","status":"passed","title":"CLI-A16 emits disjoint machine-readable CI summary fields","duration":14.588661000000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310551164,"endTime":1785310551519.5886,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/ci-lanes.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers init","status":"passed","title":"CLI-001 registers init","duration":6.0881709999999885,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers discover","status":"passed","title":"CLI-001 registers discover","duration":1.5752529999999751,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers report","status":"passed","title":"CLI-001 registers report","duration":83.31425299999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers decisions","status":"passed","title":"CLI-001 registers decisions","duration":4.049763999999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers decisions","status":"passed","title":"CLI-001 registers decisions","duration":1.0835710000000063,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers decisions","status":"passed","title":"CLI-001 registers decisions","duration":3.947744000000057,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers contracts","status":"passed","title":"CLI-001 registers contracts","duration":0.9325400000000172,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers contracts","status":"passed","title":"CLI-001 registers contracts","duration":3.664769999999976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers contracts","status":"passed","title":"CLI-001 registers contracts","duration":1.2064400000000433,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers contracts","status":"passed","title":"CLI-001 registers contracts","duration":3.5311739999999645,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers contracts","status":"passed","title":"CLI-001 registers contracts","duration":0.8151870000000372,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers baseline","status":"passed","title":"CLI-001 registers baseline","duration":35.394401000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers baseline","status":"passed","title":"CLI-001 registers baseline","duration":9.035703999999896,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers finalize","status":"passed","title":"CLI-001 registers finalize","duration":0.8086190000000215,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 registers doctor","status":"passed","title":"CLI-001 registers doctor","duration":43.280295000000024,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for report","status":"passed","title":"CLI-001 rejects invalid arguments for report","duration":0.45438400000000456,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for decisions","status":"passed","title":"CLI-001 rejects invalid arguments for decisions","duration":0.22875699999997323,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for decisions","status":"passed","title":"CLI-001 rejects invalid arguments for decisions","duration":0.17724600000008195,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for contracts","status":"passed","title":"CLI-001 rejects invalid arguments for contracts","duration":2.173883000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for baseline","status":"passed","title":"CLI-001 rejects invalid arguments for baseline","duration":0.21754599999997026,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for finalize","status":"passed","title":"CLI-001 rejects invalid arguments for finalize","duration":0.15627700000004552,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-001 command surface"],"fullName":"CLI-001 command surface CLI-001 rejects invalid arguments for doctor","status":"passed","title":"CLI-001 rejects invalid arguments for doctor","duration":0.1451680000000124,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-030 minimal initialization"],"fullName":"CLI-030 minimal initialization CLI-030 generates programmatic state without product intent","status":"passed","title":"CLI-030 generates programmatic state without product intent","duration":12.157710000000066,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A13 blocking-state failures"],"fullName":"CLI-A13 blocking-state failures CLI-A13 rejects corrupt blocking state before creating canonical run artifacts","status":"passed","title":"CLI-A13 rejects corrupt blocking state before creating canonical run artifacts","duration":20.55552499999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-023 reviewed detector exceptions"],"fullName":"CLI-023 reviewed detector exceptions CLI-023 rejects an exception whose reviewed identifier is absent from canonical state","status":"passed","title":"CLI-023 rejects an exception whose reviewed identifier is absent from canonical state","duration":5.139662999999928,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310548996,"endTime":1785310549237.1396,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/commands.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-020 accepts full operational configuration","status":"passed","title":"CLI-020 accepts full operational configuration","duration":27.92054999999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-023 rejects inline broad detector ignores","status":"passed","title":"CLI-023 rejects inline broad detector ignores","duration":1.6681479999999738,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-021 accepts a valid versioned config with declared surfaces","status":"passed","title":"CLI-021 accepts a valid versioned config with declared surfaces","duration":1.9228200000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-021 rejects unknown keys at the root","status":"passed","title":"CLI-021 rejects unknown keys at the root","duration":1.8571880000000078,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-021 rejects unknown keys on nested objects","status":"passed","title":"CLI-021 rejects unknown keys on nested objects","duration":1.1687019999999961,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-022 secret reference handling"],"fullName":"CLI-022 secret reference handling CLI-022 preserves env references without serializing resolved values","status":"passed","title":"CLI-022 preserves env references without serializing resolved values","duration":1.2599440000000186,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-022 secret reference handling"],"fullName":"CLI-022 secret reference handling CLI-022 rejects env references that are not on the allowlist","status":"passed","title":"CLI-022 rejects env references that are not on the allowlist","duration":0.871690000000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-030 init-less default config"],"fullName":"CLI-030 init-less default config CLI-030 returns empty surfaces when no config path is provided","status":"passed","title":"CLI-030 returns empty surfaces when no config path is provided","duration":0.2461319999999887,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-030 init-less default config"],"fullName":"CLI-030 init-less default config CLI-030 returns empty surfaces when the config file is missing","status":"passed","title":"CLI-030 returns empty surfaces when the config file is missing","duration":0.5445399999999836,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A13 config error recovery"],"fullName":"CLI-A13 config error recovery CLI-A13 returns recovery instructions for unsupported schema versions","status":"passed","title":"CLI-A13 returns recovery instructions for unsupported schema versions","duration":0.9820910000000254,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A13 config error recovery"],"fullName":"CLI-A13 config error recovery CLI-A13 returns recovery instructions for invalid JSON","status":"passed","title":"CLI-A13 returns recovery instructions for invalid JSON","duration":0.9128819999999678,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A13 config error recovery"],"fullName":"CLI-A13 config error recovery CLI-A13 never throws on corrupt config input","status":"passed","title":"CLI-A13 never throws on corrupt config input","duration":1.985588000000007,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310546667,"endTime":1785310546708.9856,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/config.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-007 contract lifecycle commands"],"fullName":"CLI-007 contract lifecycle commands CLI-007 list and show are read-only and expose only DATA-050 contract records","status":"passed","title":"CLI-007 list and show are read-only and expose only DATA-050 contract records","duration":563.646579,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-007 contract lifecycle commands"],"fullName":"CLI-007 contract lifecycle commands CLI-007 calibrates known-bad evidence before orchestrated DATA-045 promotion and records retirement reason","status":"passed","title":"CLI-007 calibrates known-bad evidence before orchestrated DATA-045 promotion and records retirement reason","duration":806.6217749999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-007 contract lifecycle commands"],"fullName":"CLI-007 contract lifecycle commands CLI-007 rejects promotion when known-bad evidence changes after calibration","status":"passed","title":"CLI-007 rejects promotion when known-bad evidence changes after calibration","duration":436.3504519999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-007 contract lifecycle commands"],"fullName":"CLI-007 contract lifecycle commands CLI-007 fails closed on missing oracle","status":"passed","title":"CLI-007 fails closed on missing oracle","duration":272.31261900000027,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-007 contract lifecycle commands"],"fullName":"CLI-007 contract lifecycle commands CLI-007 fails closed on failed calibration","status":"passed","title":"CLI-007 fails closed on failed calibration","duration":245.7790369999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-007 contract lifecycle commands"],"fullName":"CLI-007 contract lifecycle commands CLI-007 fails closed on scope mismatch","status":"passed","title":"CLI-007 fails closed on scope mismatch","duration":495.4936520000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310545911,"endTime":1785310548731.4937,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/contracts.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-009 decisions export"],"fullName":"CLI-009 decisions export CLI-009 exports an unsigned DATA-048 bundle for the named report revision without secrets","status":"passed","title":"CLI-009 exports an unsigned DATA-048 bundle for the named report revision without secrets","duration":47.53038000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 persists only after exact noninteractive trust confirmation and reviewer identity","status":"passed","title":"CLI-A10 persists only after exact noninteractive trust confirmation and reviewer identity","duration":19.156103999999914,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects tampering without persisting decisions","status":"passed","title":"CLI-A10 rejects tampering without persisting decisions","duration":4.1581059999998615,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects project mismatch without persisting decisions","status":"passed","title":"CLI-A10 rejects project mismatch without persisting decisions","duration":3.6018400000000383,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects config mismatch without persisting decisions","status":"passed","title":"CLI-A10 rejects config mismatch without persisting decisions","duration":5.021280000000161,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects report revision mismatch without persisting decisions","status":"passed","title":"CLI-A10 rejects report revision mismatch without persisting decisions","duration":5.938510999999835,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects finding-set mismatch without persisting decisions","status":"passed","title":"CLI-A10 rejects finding-set mismatch without persisting decisions","duration":5.195948999999928,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects expiry without persisting decisions","status":"passed","title":"CLI-A10 rejects expiry without persisting decisions","duration":5.372221999999965,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-A10 rejects replay after recording the receipt","status":"passed","title":"CLI-A10 rejects replay after recording the receipt","duration":7.582382000000052,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A10 decisions import"],"fullName":"CLI-A10 decisions import CLI-013 displays complete bundle identity before interactive exact trust","status":"passed","title":"CLI-013 displays complete bundle identity before interactive exact trust","duration":9.007370999999921,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-009 decisions revoke"],"fullName":"CLI-009 decisions revoke CLI-009 revokes the active decision while preserving its Phase 1 history record","status":"passed","title":"CLI-009 revokes the active decision while preserving its Phase 1 history record","duration":6.303430000000162,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310545349,"endTime":1785310545468.3035,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/decisions.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A09 discovery inventory"],"fullName":"CLI-A09 discovery inventory CLI-A09 separates reachable production entries from excluded, source-only, stale, unresolved, and missing-binding candidates","status":"passed","title":"CLI-A09 separates reachable production entries from excluded, source-only, stale, unresolved, and missing-binding candidates","duration":210.945721,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A09 discovery inventory"],"fullName":"CLI-A09 discovery inventory CLI-035 reports coverage-incomplete and every exclusion reason when no target is selected","status":"passed","title":"CLI-035 reports coverage-incomplete and every exclusion reason when no target is selected","duration":219.75446900000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-033 optional LLM"],"fullName":"CLI-033 optional LLM CLI-033 keeps adapter LLM output advisory and succeeds without an LLM adapter","status":"passed","title":"CLI-033 keeps adapter LLM output advisory and succeeds without an LLM adapter","duration":196.271929,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310545651,"endTime":1785310546278.272,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/discover.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A15 doctor"],"fullName":"CLI-A15 doctor CLI-A15 reports every healthy prerequisite without mutating canonical state","status":"passed","title":"CLI-A15 reports every healthy prerequisite without mutating canonical state","duration":1290.639638,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A15 doctor"],"fullName":"CLI-A15 doctor CLI-A15 reports config-schema failure and preserves state","status":"passed","title":"CLI-A15 reports config-schema failure and preserves state","duration":323.70485600000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A15 doctor"],"fullName":"CLI-A15 doctor CLI-A15 reports missing browser runtime as an environment defect without mutation","status":"passed","title":"CLI-A15 reports missing browser runtime as an environment defect without mutation","duration":1021.2440560000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310548120,"endTime":1785310550755.2441,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/doctor.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A01 exit-status matrix"],"fullName":"CLI-A01 exit-status matrix returns 0 for advisory-only.config.json","status":"passed","title":"returns 0 for advisory-only.config.json","duration":30.32751600000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A01 exit-status matrix"],"fullName":"CLI-A01 exit-status matrix returns 1 for blocking-violation.config.json","status":"passed","title":"returns 1 for blocking-violation.config.json","duration":14.40991699999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A01 exit-status matrix"],"fullName":"CLI-A01 exit-status matrix returns 2 for invalid.config.json","status":"passed","title":"returns 2 for invalid.config.json","duration":1.3707520000000386,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A01 exit-status matrix"],"fullName":"CLI-A01 exit-status matrix returns 3 for harness-failure.config.json","status":"passed","title":"returns 3 for harness-failure.config.json","duration":6.020217999999886,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A01 exit-status matrix"],"fullName":"CLI-A01 exit-status matrix returns 4 for unsupported-capability.config.json","status":"passed","title":"returns 4 for unsupported-capability.config.json","duration":8.175741000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A01 exit-status matrix"],"fullName":"CLI-A01 exit-status matrix returns 0 and counts advisory findings without treating them as blocking","status":"passed","title":"returns 0 and counts advisory findings without treating them as blocking","duration":5.137646000000132,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A11 harness and coverage non-cascade"],"fullName":"CLI-A11 harness and coverage non-cascade returns 3 for hook harness failure with only a typed HarnessOutcome","status":"passed","title":"returns 3 for hook harness failure with only a typed HarnessOutcome","duration":15.068095000000085,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A11 harness and coverage non-cascade"],"fullName":"CLI-A11 harness and coverage non-cascade returns 4 for unsupported capability without dependent findings","status":"passed","title":"returns 4 for unsupported capability without dependent findings","duration":5.142804999999953,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A14 conflict and parity records"],"fullName":"CLI-A14 conflict and parity records returns 5 for review conflict while retaining both conflicting inputs","status":"passed","title":"returns 5 for review conflict while retaining both conflicting inputs","duration":1.0274129999997967,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A14 conflict and parity records"],"fullName":"CLI-A14 conflict and parity records returns 1 while machine output retains blocking, harness, and coverage conditions","status":"passed","title":"returns 1 while machine output retains blocking, harness, and coverage conditions","duration":0.6446970000001784,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A14 conflict and parity records"],"fullName":"CLI-A14 conflict and parity records emits byte-equal canonical findings through direct CLI, CI, and hook paths","status":"passed","title":"emits byte-equal canonical findings through direct CLI, CI, and hook paths","duration":58.989732000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A07 harness outcomes route through the shared model on every path"],"fullName":"ARC-A07 harness outcomes route through the shared model on every path ARC-A07 CLI, CI, report, hook, and ratchet paths agree on an adapter-phase harness outcome and emit no accepted-product fingerprint","status":"passed","title":"ARC-A07 CLI, CI, report, hook, and ratchet paths agree on an adapter-phase harness outcome and emit no accepted-product fingerprint","duration":48.127872000000025,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310545615,"endTime":1785310545810.128,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/exit-matrix.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 returns 0 when no blocking conditions are present","status":"passed","title":"CLI-010 returns 0 when no blocking conditions are present","duration":1.8021500000000117,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 returns 1 for blocking correctness violation","status":"passed","title":"CLI-010 returns 1 for blocking correctness violation","duration":0.20933799999997404,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 returns 2 for configuration or schema error","status":"passed","title":"CLI-010 returns 2 for configuration or schema error","duration":0.19295199999999113,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 returns 3 for harness or infrastructure failure","status":"passed","title":"CLI-010 returns 3 for harness or infrastructure failure","duration":3.389448000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 returns 4 for coverage incomplete for requested blocking scope","status":"passed","title":"CLI-010 returns 4 for coverage incomplete for requested blocking scope","duration":0.19870399999999222,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 returns 5 for review or decision conflict","status":"passed","title":"CLI-010 returns 5 for review or decision conflict","duration":0.17368200000001366,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-010 exit status contract"],"fullName":"CLI-010 exit status contract CLI-010 applies deterministic precedence 2 > 5 > 1 > 3 > 4 > 0 across all 32 combinations","status":"passed","title":"CLI-010 applies deterministic precedence 2 > 5 > 1 > 3 > 4 > 0 across all 32 combinations","duration":1.0562799999999868,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-011 advisory findings never contribute to exit status"],"fullName":"CLI-011 advisory findings never contribute to exit status CLI-011 returns 0 when only advisory findings are present at the runner layer","status":"passed","title":"CLI-011 returns 0 when only advisory findings are present at the runner layer","duration":0.19361699999998905,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-012 harness and coverage outcomes"],"fullName":"CLI-012 harness and coverage outcomes CLI-012 returns 3 for harness failure without product blocking violations","status":"passed","title":"CLI-012 returns 3 for harness failure without product blocking violations","duration":0.19609499999998548,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-012 harness and coverage outcomes"],"fullName":"CLI-012 harness and coverage outcomes CLI-012 returns 4 for coverage incomplete without harness failure","status":"passed","title":"CLI-012 returns 4 for coverage incomplete without harness failure","duration":0.21519700000001762,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-012 harness and coverage outcomes"],"fullName":"CLI-012 harness and coverage outcomes CLI-012 prefers harness failure over coverage incomplete","status":"passed","title":"CLI-012 prefers harness failure over coverage incomplete","duration":4.515909999999991,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310551752,"endTime":1785310551764.5159,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/exit-status.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-052 advisory hook mode"],"fullName":"CLI-052 advisory hook mode CLI-052 reports advisory findings but never exits 1 on impacted checks","status":"passed","title":"CLI-052 reports advisory findings but never exits 1 on impacted checks","duration":100.08376799999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-052 advisory hook mode"],"fullName":"CLI-052 advisory hook mode CLI-010 reports blocking findings through hook with exit 1","status":"passed","title":"CLI-010 reports blocking findings through hook with exit 1","duration":55.231983000000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-052 advisory hook mode"],"fullName":"CLI-052 advisory hook mode CLI-052 config errors still exit 2","status":"passed","title":"CLI-052 config errors still exit 2","duration":1.9036499999999705,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-051 hook impact unknown"],"fullName":"CLI-051 hook impact unknown CLI-051 reports broader command when a changed path matches no surface","status":"passed","title":"CLI-051 reports broader command when a changed path matches no surface","duration":11.96393599999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-051 hook impact unknown"],"fullName":"CLI-051 hook impact unknown CLI-051 reports broader command when any configured surface lacks inputs","status":"passed","title":"CLI-051 reports broader command when any configured surface lacks inputs","duration":11.63334199999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A04 impacted deterministic hook checks"],"fullName":"CLI-A04 impacted deterministic hook checks CLI-A04 resolves dependency-map paths to configured impacted checks","status":"passed","title":"CLI-A04 resolves dependency-map paths to configured impacted checks","duration":13.348693000000026,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-053 compact hook output"],"fullName":"CLI-053 compact hook output CLI-053 prints one compact line per finding with required fields","status":"passed","title":"CLI-053 prints one compact line per finding with required fields","duration":9.59993200000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-070 and CLI-072 hook budget"],"fullName":"CLI-070 and CLI-072 hook budget CLI-072 records a phase-identified harness outcome when configured hook budget expires","status":"passed","title":"CLI-072 records a phase-identified harness outcome when configured hook budget expires","duration":11.612206000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-070 and CLI-072 hook budget"],"fullName":"CLI-070 and CLI-072 hook budget CLI-072 preserves completed evidence before budget expiry","status":"passed","title":"CLI-072 preserves completed evidence before budget expiry","duration":38.15530699999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-071 hook isolation"],"fullName":"CLI-071 hook isolation CLI-071 gives concurrent hook runs independent mutable adapter state","status":"passed","title":"CLI-071 gives concurrent hook runs independent mutable adapter state","duration":15.862019999999916,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-004 hook parser validation"],"fullName":"CLI-004 hook parser validation CLI-004 requires at least one --changed path when --hook is set","status":"passed","title":"CLI-004 requires at least one --changed path when --hook is set","duration":0.5386039999999639,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310545347,"endTime":1785310545618.5386,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/hook.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-A06 installable preview"],"fullName":"ARC-A06 installable preview ARC-A06 distributed install runs universal verify without ../platform present","status":"passed","title":"ARC-A06 distributed install runs universal verify without ../platform present","duration":5842.649891,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A06 installable preview"],"fullName":"ARC-A06 installable preview ARC-A06 installed detector probes serialize without transpiler helper references","status":"passed","title":"ARC-A06 installed detector probes serialize without transpiler helper references","duration":5290.42104,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310548164,"endTime":1785310559297.4211,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/install.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-060 versioned machine result"],"fullName":"CLI-060 versioned machine result CLI-060 emits cli-result/v1 with run status, outcomes, counts, artifacts, timings, and environment","status":"passed","title":"CLI-060 emits cli-result/v1 with run status, outcomes, counts, artifacts, timings, and environment","duration":17.849556000000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-060 versioned machine result"],"fullName":"CLI-060 versioned machine result CLI-060 keeps findings, coverage outcomes, and harness outcomes disjoint","status":"passed","title":"CLI-060 keeps findings, coverage outcomes, and harness outcomes disjoint","duration":0.5362509999999929,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-005 explicit resolved scopes"],"fullName":"CLI-005 explicit resolved scopes CLI-005 records the default universal scope when no scope flag was provided","status":"passed","title":"CLI-005 records the default universal scope when no scope flag was provided","duration":1.732501999999954,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-005 explicit resolved scopes"],"fullName":"CLI-005 explicit resolved scopes CLI-005 records explicitly requested scopes without implying a default","status":"passed","title":"CLI-005 records explicitly requested scopes without implying a default","duration":0.5581700000000183,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-062 deterministic finding order"],"fullName":"CLI-062 deterministic finding order CLI-062 sorts findings by lane, severity, class, target, context, and id","status":"passed","title":"CLI-062 sorts findings by lane, severity, class, target, context, and id","duration":0.603053999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-062 deterministic finding order"],"fullName":"CLI-062 deterministic finding order CLI-062 applies the same ordering in buildMachineResult findings output","status":"passed","title":"CLI-062 applies the same ordering in buildMachineResult findings output","duration":0.7374229999999784,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-061 machine output emission"],"fullName":"CLI-061 machine output emission CLI-061 writes exactly one JSON document with a trailing newline to stdout","status":"passed","title":"CLI-061 writes exactly one JSON document with a trailing newline to stdout","duration":1.1489909999999668,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A02 JSON output remains parseable with progress enabled"],"fullName":"CLI-A02 JSON output remains parseable with progress enabled CLI-A02 keeps stderr progress lines from contaminating stdout JSON","status":"passed","title":"CLI-A02 keeps stderr progress lines from contaminating stdout JSON","duration":2.5625649999999496,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310544806,"endTime":1785310544832.5625,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/machine-output.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-A06 packed installation"],"fullName":"ARC-A06 packed installation ARC-A06 packs every package into a platform-independent healthy installation","status":"passed","title":"ARC-A06 packs every package into a platform-independent healthy installation","duration":48680.57376,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310551764,"endTime":1785310600444.5737,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/pack-install.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A15 supported-platform matrix"],"fullName":"CLI-A15 supported-platform matrix CLI-A15 records every required platform with doctor coverage and an evidence basis","status":"passed","title":"CLI-A15 records every required platform with doctor coverage and an evidence basis","duration":18.030168000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A15 supported-platform matrix"],"fullName":"CLI-A15 supported-platform matrix CLI-A15 labels unsupported browser execution as a capability-profile coverage gap","status":"passed","title":"CLI-A15 labels unsupported browser execution as a capability-profile coverage gap","duration":11.394811000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A15 supported-platform matrix"],"fullName":"CLI-A15 supported-platform matrix CLI-A15 doctor checks Node, pnpm, and every configured browser engine","status":"passed","title":"CLI-A15 doctor checks Node, pnpm, and every configured browser engine","duration":2484.1853340000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310549015,"endTime":1785310551529.1853,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/platform-matrix.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A05/CLI-A12 ratchet verification"],"fullName":"CLI-A05/CLI-A12 ratchet verification CLI-A05 preserves canonical state during verify and baseline diff","status":"passed","title":"CLI-A05 preserves canonical state during verify and baseline diff","duration":119.034132,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A05/CLI-A12 ratchet verification"],"fullName":"CLI-A05/CLI-A12 ratchet verification CLI-A12 keeps confirmed advisory non-blocking until exact active calibrated promotion","status":"passed","title":"CLI-A12 keeps confirmed advisory non-blocking until exact active calibrated promotion","duration":161.710014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310546336,"endTime":1785310546616.71,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/ratchet-cli.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-002 REPORT-001 REPORT-002 REPORT-003 report integration"],"fullName":"CLI-002 REPORT-001 REPORT-002 REPORT-003 report integration generates a portable static report from verify and regenerates it from retained run records","status":"passed","title":"generates a portable static report from verify and regenerates it from retained run records","duration":689.7212629999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-002 REPORT-001 REPORT-002 REPORT-003 report integration"],"fullName":"CLI-002 REPORT-001 REPORT-002 REPORT-003 report integration REPORT-003 leaves static mode usable when browser open is disabled","status":"passed","title":"REPORT-003 leaves static mode usable when browser open is disabled","duration":255.61091999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-002 REPORT-001 REPORT-002 REPORT-003 report integration"],"fullName":"CLI-002 REPORT-001 REPORT-002 REPORT-003 report integration finalizes a retained report noninteractively","status":"passed","title":"finalizes a retained report noninteractively","duration":651.980973,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310546929,"endTime":1785310548526.981,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/report-flag.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-A12 / CLI-A10 decision-bundle replay regression"],"fullName":"DATA-A12 / CLI-A10 decision-bundle replay regression DATA-A12 / CLI-A10 rejects nonce replay across fresh CLI processes","status":"passed","title":"DATA-A12 / CLI-A10 rejects nonce replay across fresh CLI processes","duration":509.082424,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-050 hook input boundary regression"],"fullName":"CLI-050 hook input boundary regression CLI-050 treats shell metacharacters in changed paths as data","status":"passed","title":"CLI-050 treats shell metacharacters in changed paths as data","duration":277.653238,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A08 default scan avoids arbitrary repository code execution"],"fullName":"ARC-A08 default scan avoids arbitrary repository code execution ARC-A08 never executes trap files or package lifecycle scripts outside the declared adapter surface","status":"passed","title":"ARC-A08 never executes trap files or package lifecycle scripts outside the declared adapter surface","duration":207.1110430000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310546903,"endTime":1785310547898.111,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/security-regression.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A01 ui scope reaches detectors through the command surface"],"fullName":"UI-A01 ui scope reaches detectors through the command surface reports a blocking UI-010 finding for the positive fixture","status":"passed","title":"reports a blocking UI-010 finding for the positive fixture","duration":980.813093,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 ui scope reaches detectors through the command surface"],"fullName":"UI-A01 ui scope reaches detectors through the command surface stays silent for the negative fixture","status":"passed","title":"stays silent for the negative fixture","duration":837.4167450000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A01 ui scope reaches detectors through the command surface"],"fullName":"UI-A01 ui scope reaches detectors through the command surface returns coverage-incomplete rather than green when no route is configured","status":"passed","title":"returns coverage-incomplete rather than green when no route is configured","duration":5.324175000000196,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310550529,"endTime":1785310552352.3242,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/ui-scope.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A07 universal verify command"],"fullName":"CLI-A07 universal verify command CLI-A07 advisory-only fixture exits 0 and reports advisory count","status":"passed","title":"CLI-A07 advisory-only fixture exits 0 and reports advisory count","duration":99.1363980000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A07 universal verify command"],"fullName":"CLI-A07 universal verify command CLI-A07 proven universal violation fixture exits 1","status":"passed","title":"CLI-A07 proven universal violation fixture exits 1","duration":55.44577500000014,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A07 universal verify command"],"fullName":"CLI-A07 universal verify command CLI-A07 harness-failure fixture exits 3","status":"passed","title":"CLI-A07 harness-failure fixture exits 3","duration":12.317984999999908,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A07 universal verify command"],"fullName":"CLI-A07 universal verify command CLI-A07 emits applicable, unsupported-capability, and coverage-incomplete outcomes distinctly","status":"passed","title":"CLI-A07 emits applicable, unsupported-capability, and coverage-incomplete outcomes distinctly","duration":12.128108000000111,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-004 strict parser"],"fullName":"CLI-004 strict parser CLI-004 rejects unknown commands with usage error on stderr and exit 2","status":"passed","title":"CLI-004 rejects unknown commands with usage error on stderr and exit 2","duration":0.6747550000000047,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-004 strict parser"],"fullName":"CLI-004 strict parser CLI-004 rejects unknown flags with usage error on stderr and exit 2","status":"passed","title":"CLI-004 rejects unknown flags with usage error on stderr and exit 2","duration":0.5146890000000894,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-005 scope handling"],"fullName":"CLI-005 scope handling CLI-005 applies default universal scope explicitly in machine output","status":"passed","title":"CLI-005 applies default universal scope explicitly in machine output","duration":2.673336999999947,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-005 scope handling"],"fullName":"CLI-005 scope handling CLI-044 unsupported preview scopes exit 4 with explicit coverage outcome","status":"passed","title":"CLI-044 unsupported preview scopes exit 4 with explicit coverage outcome","duration":2.3007440000001225,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-005 scope handling"],"fullName":"CLI-005 scope handling CLI-024 ui scope without a ui config block exits 4 as empty selection","status":"passed","title":"CLI-024 ui scope without a ui config block exits 4 as empty selection","duration":2362.460639,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-035 empty surface selection"],"fullName":"CLI-035 empty surface selection CLI-035 empty surfaces return coverage-incomplete with selection reasons on stderr","status":"passed","title":"CLI-035 empty surfaces return coverage-incomplete with selection reasons on stderr","duration":2.6865390000002662,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A13 config errors"],"fullName":"CLI-A13 config errors CLI-A13 invalid config exits 2 without throwing","status":"passed","title":"CLI-A13 invalid config exits 2 without throwing","duration":1.33510699999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A05 verify store immutability groundwork"],"fullName":"CLI-A05 verify store immutability groundwork CLI-A05 verify does not write baseline, decision, or contract store files","status":"passed","title":"CLI-A05 verify does not write baseline, decision, or contract store files","duration":6.6900839999998425,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-060 machine output channel separation"],"fullName":"CLI-060 machine output channel separation CLI-061 emits cli-result/v1 JSON only on stdout","status":"passed","title":"CLI-061 emits cli-result/v1 JSON only on stdout","duration":4.1251530000004095,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310545348,"endTime":1785310547911.1252,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/cli/test/verify.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A05 auth adapter harness suppression"],"fullName":"UI-A05 auth adapter harness suppression UI-A05 failed auth setup produces one harness outcome and suppresses cascaded page findings","status":"passed","title":"UI-A05 failed auth setup produces one harness outcome and suppresses cascaded page findings","duration":708.9371349999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A05 auth adapter harness suppression"],"fullName":"UI-A05 auth adapter harness suppression UI-A05 failed auth proof verification suppresses product findings for dependent cells","status":"passed","title":"UI-A05 failed auth proof verification suppresses product findings for dependent cells","duration":1279.108999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-023 matrix coverage gaps and auth proof verification"],"fullName":"ARC-023 matrix coverage gaps and auth proof verification ARC-023 planner coverage gaps become coverage outcomes without product findings","status":"passed","title":"ARC-023 planner coverage gaps become coverage outcomes without product findings","duration":56.190732000000025,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-023 matrix coverage gaps and auth proof verification"],"fullName":"ARC-023 matrix coverage gaps and auth proof verification ARC-023 verifyAuthProof rejects role mismatch fail-closed","status":"passed","title":"ARC-023 verifyAuthProof rejects role mismatch fail-closed","duration":0.8957249999998567,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-013 declared auth adapter loading"],"fullName":"ARC-013 declared auth adapter loading ARC-013 loads auth adapters through the declared-module registry","status":"passed","title":"ARC-013 loads auth adapters through the declared-module registry","duration":7.319261999999981,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-013 declared auth adapter loading"],"fullName":"ARC-013 declared auth adapter loading ARC-013 rejects malformed auth adapter modules with AuthAdapterLoadError","status":"passed","title":"ARC-013 rejects malformed auth adapter modules with AuthAdapterLoadError","duration":5.726782000000185,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310635755,"endTime":1785310637813.7268,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/auth.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-018 deterministic artifact naming and atomic writes"],"fullName":"ARC-018 deterministic artifact naming and atomic writes ARC-018 resolves deterministic relative paths from cell id and artifact kind","status":"passed","title":"ARC-018 resolves deterministic relative paths from cell id and artifact kind","duration":1.7054049999999847,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-018 deterministic artifact naming and atomic writes"],"fullName":"ARC-018 deterministic artifact naming and atomic writes ARC-018 writes cell artifacts under runs/<run-id>/cells/<cell-id>/ with resolved refs","status":"passed","title":"ARC-018 writes cell artifacts under runs/<run-id>/cells/<cell-id>/ with resolved refs","duration":7.591930999999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-018 deterministic artifact naming and atomic writes"],"fullName":"ARC-018 deterministic artifact naming and atomic writes ARC-018 re-running into a fresh run dir yields identical relative paths","status":"passed","title":"ARC-018 re-running into a fresh run dir yields identical relative paths","duration":4.840787999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-018 deterministic artifact naming and atomic writes"],"fullName":"ARC-018 deterministic artifact naming and atomic writes ARC-018 preserves prior artifact bytes when an atomic write is interrupted","status":"passed","title":"ARC-018 preserves prior artifact bytes when an atomic write is interrupted","duration":1.7251699999999914,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A07 original screenshot byte stability"],"fullName":"UI-A07 original screenshot byte stability UI-A07 writes the original screenshot once and never rewrites it across the run","status":"passed","title":"UI-A07 writes the original screenshot once and never rewrites it across the run","duration":3.4479479999999967,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-013 evidence capture metadata"],"fullName":"ARC-013 evidence capture metadata ARC-013 captures console errors with source location and stack","status":"passed","title":"ARC-013 captures console errors with source location and stack","duration":224.26096200000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-013 evidence capture metadata"],"fullName":"ARC-013 evidence capture metadata ARC-013 captures network request and response metadata","status":"passed","title":"ARC-013 captures network request and response metadata","duration":643.7630909999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-013 evidence capture metadata"],"fullName":"ARC-013 evidence capture metadata ARC-013 / UI-025 capture subset collects DOM, screenshot, and layout-shift performance evidence","status":"passed","title":"ARC-013 / UI-025 capture subset collects DOM, screenshot, and layout-shift performance evidence","duration":127.6337669999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-013 evidence capture metadata"],"fullName":"ARC-013 evidence capture metadata ARC-013 finalizeCapturedEvidence preserves console, network, and settled report","status":"passed","title":"ARC-013 finalizeCapturedEvidence preserves console, network, and settled report","duration":0.6159769999999298,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310627834,"endTime":1785310628849.6338,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/capture.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner"],"fullName":"ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner ARC-003 pins Date, Math.random, and timezone before page scripts run","status":"passed","title":"ARC-003 pins Date, Math.random, and timezone before page scripts run","duration":1343.2753790000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner"],"fullName":"ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner ARC-003 changes seeded Math.random when the run seed changes","status":"passed","title":"ARC-003 changes seeded Math.random when the run seed changes","duration":1251.6532419999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner"],"fullName":"ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner CLI-071 / ARC-013 uses a fresh incognito context per cell without shared storage","status":"passed","title":"CLI-071 / ARC-013 uses a fresh incognito context per cell without shared storage","duration":1268.7980380000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner"],"fullName":"ARC-003 / ARC-013 / CLI-071 isolated seeded cell runner ARC-013 applies locale and viewport from the matrix cell","status":"passed","title":"ARC-013 applies locale and viewport from the matrix cell","duration":668.63717,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-019 / CLI-072 settled model"],"fullName":"UI-019 / CLI-072 settled model UI-019 uses explicit app signal when configured","status":"passed","title":"UI-019 uses explicit app signal when configured","duration":291.14043200000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-019 / CLI-072 settled model"],"fullName":"UI-019 / CLI-072 settled model UI-019 falls back to composed quiet windows when no app signal is configured","status":"passed","title":"UI-019 falls back to composed quiet windows when no app signal is configured","duration":657.1576269999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-019 / CLI-072 settled model"],"fullName":"UI-019 / CLI-072 settled model CLI-072 / UI-019 settle timeout returns harness infrastructure with preserved partial evidence","status":"passed","title":"CLI-072 / UI-019 settle timeout returns harness infrastructure with preserved partial evidence","duration":393.1400020000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-019 / CLI-072 settled model"],"fullName":"UI-019 / CLI-072 settled model ARC-013 navigation failure returns harness setup without product classification","status":"passed","title":"ARC-013 navigation failure returns harness setup without product classification","duration":99.97598800000014,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310629277,"endTime":1785310635251.976,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/cell-runner.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-A02 browser-level seeded run determinism"],"fullName":"ARC-A02 browser-level seeded run determinism ARC-A02 identical runMatrix invocations produce identical classified outcomes","status":"passed","title":"ARC-A02 identical runMatrix invocations produce identical classified outcomes","duration":1354.154815,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A02 browser-level seeded run determinism"],"fullName":"ARC-A02 browser-level seeded run determinism ARC-A02 different seed changes rendered content fingerprints","status":"passed","title":"ARC-A02 different seed changes rendered content fingerprints","duration":1291.613991,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310639582,"endTime":1785310642227.614,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/determinism.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A06 / ARC-012 dynamic route fixtures"],"fullName":"UI-A06 / ARC-012 dynamic route fixtures UI-A06 rejects unresolved :param patterns as coverage gaps without navigable cells","status":"passed","title":"UI-A06 rejects unresolved :param patterns as coverage gaps without navigable cells","duration":2.510953999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A06 / ARC-012 dynamic route fixtures"],"fullName":"UI-A06 / ARC-012 dynamic route fixtures UI-A06 rejects unresolved wildcard patterns as coverage gaps without navigable cells","status":"passed","title":"UI-A06 rejects unresolved wildcard patterns as coverage gaps without navigable cells","duration":0.39482900000001564,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A06 / ARC-012 dynamic route fixtures"],"fullName":"UI-A06 / ARC-012 dynamic route fixtures ARC-012 expands fixtures into concrete navigable URLs and never emits placeholder segments","status":"passed","title":"ARC-012 expands fixtures into concrete navigable URLs and never emits placeholder segments","duration":4.052731999999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-051 pairwise generation"],"fullName":"UI-051 pairwise generation UI-051 defaults to pairwise coverage smaller than full cross-product","status":"passed","title":"UI-051 defaults to pairwise coverage smaller than full cross-product","duration":2.616151000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-050 / UI-054 / DATA-010 matrix dimensions and records"],"fullName":"UI-050 / UI-054 / DATA-010 matrix dimensions and records UI-050 includes route, role, locale, viewport, engine, and extra dimensions in planned cells","status":"passed","title":"UI-050 includes route, role, locale, viewport, engine, and extra dimensions in planned cells","duration":0.8875069999999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-050 / UI-054 / DATA-010 matrix dimensions and records"],"fullName":"UI-050 / UI-054 / DATA-010 matrix dimensions and records DATA-010 derives stable cell ids from canonical dimension values","status":"passed","title":"DATA-010 derives stable cell ids from canonical dimension values","duration":0.4258389999999963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-012 deterministic planning"],"fullName":"ARC-012 deterministic planning ARC-012 returns identical cell lists and order for identical config","status":"passed","title":"ARC-012 returns identical cell lists and order for identical config","duration":2.5486950000000093,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-012 deterministic planning"],"fullName":"ARC-012 deterministic planning ARC-012 honors declared full-cross-product dimension groups","status":"passed","title":"ARC-012 honors declared full-cross-product dimension groups","duration":0.4951939999999979,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310639100,"endTime":1785310639114.495,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/matrix.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A06 secret canary never appears in persisted output"],"fullName":"CLI-A06 secret canary never appears in persisted output CLI-A06 redacts canary from console, network headers, DOM, and data attributes before persistence","status":"passed","title":"CLI-A06 redacts canary from console, network headers, DOM, and data attributes before persistence","duration":721.6155840000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-061 / CLI-022 redaction contract"],"fullName":"ARC-061 / CLI-022 redaction contract ARC-061 redactEvidence replaces secrets in console and network metadata","status":"passed","title":"ARC-061 redactEvidence replaces secrets in console and network metadata","duration":0.48648900000011963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-061 / CLI-022 redaction contract"],"fullName":"ARC-061 / CLI-022 redaction contract CLI-022 redactArtifacts scans persisted text artifacts excluding screenshot pixels","status":"passed","title":"CLI-022 redactArtifacts scans persisted text artifacts excluding screenshot pixels","duration":8.42495699999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-061 / CLI-022 redaction contract"],"fullName":"ARC-061 / CLI-022 redaction contract CLI-A06 reports zero-replacement rules in RedactionReport without error","status":"passed","title":"CLI-A06 reports zero-replacement rules in RedactionReport without error","duration":1.8899390000001404,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-061 / CLI-022 redaction contract"],"fullName":"ARC-061 / CLI-022 redaction contract ARC-061 rejects invalid redaction rules","status":"passed","title":"ARC-061 rejects invalid redaction rules","duration":1.4347510000000057,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310638207,"endTime":1785310638941.4348,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/redaction.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-002 / PLAN-010 / PLAN-011 playwright package smoke"],"fullName":"ARC-002 / PLAN-010 / PLAN-011 playwright package smoke ARC-002 launches headless chromium and loads a data: URL","status":"passed","title":"ARC-002 launches headless chromium and loads a data: URL","duration":109.87464,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310642594,"endTime":1785310642703.8748,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/playwright/test/smoke.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-070 CLI-A04 UNI-A07 CORPUS-G01 CORPUS-G02 CORPUS-G03 benchmark report"],"fullName":"CLI-070 CLI-A04 UNI-A07 CORPUS-G01 CORPUS-G02 CORPUS-G03 benchmark report regenerates BENCHMARKS.md with identical structure while slotting measured values","status":"passed","title":"regenerates BENCHMARKS.md with identical structure while slotting measured values","duration":13775.652553,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310554826,"endTime":1785310568601.6526,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/bench-report.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-048 exportBundle"],"fullName":"DATA-048 exportBundle DATA-048 computes bundleHash as SHA-256 of canonical bundle with bundleHash omitted","status":"passed","title":"DATA-048 computes bundleHash as SHA-256 of canonical bundle with bundleHash omitted","duration":8.838764000000026,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 successful import records local reviewer attribution and one nonce-consumption receipt","status":"passed","title":"DATA-A12 successful import records local reviewer attribution and one nonce-consumption receipt","duration":54.69644500000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects tampered bundle hash with bundle-hash-mismatch","status":"passed","title":"DATA-A12 rejects tampered bundle hash with bundle-hash-mismatch","duration":7.674964000000045,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects payload tampering with bundle-hash-mismatch","status":"passed","title":"DATA-A12 rejects payload tampering with bundle-hash-mismatch","duration":2.442011999999977,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects cross-project identity mismatch","status":"passed","title":"DATA-A12 rejects cross-project identity mismatch","duration":2.638149999999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects config hash mismatch","status":"passed","title":"DATA-A12 rejects config hash mismatch","duration":2.875495000000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects report revision or finding-set mismatch","status":"passed","title":"DATA-A12 rejects report revision or finding-set mismatch","duration":2.8566940000000045,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects expired bundles","status":"passed","title":"DATA-A12 rejects expired bundles","duration":3.3103300000000218,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A12 decision bundle import"],"fullName":"DATA-A12 decision bundle import DATA-A12 rejects replay of a previously consumed nonce","status":"passed","title":"DATA-A12 rejects replay of a previously consumed nonce","duration":7.950424999999996,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310553456,"endTime":1785310553549.9504,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/bundle.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-024 deriveCertainty"],"fullName":"DATA-024 deriveCertainty DATA-024 derives proven from universal evidence","status":"passed","title":"DATA-024 derives proven from universal evidence","duration":2.0610080000000153,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-024 deriveCertainty"],"fullName":"DATA-024 deriveCertainty DATA-024 derives confirmed-contract when an active contract applies","status":"passed","title":"DATA-024 derives confirmed-contract when an active contract applies","duration":0.27001999999998816,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-024 deriveCertainty"],"fullName":"DATA-024 deriveCertainty DATA-024 derives visual-advisory for vision-only evidence","status":"passed","title":"DATA-024 derives visual-advisory for vision-only evidence","duration":0.205695999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-024 deriveCertainty"],"fullName":"DATA-024 deriveCertainty DATA-024 derives inferred for observed-only evidence","status":"passed","title":"DATA-024 derives inferred for observed-only evidence","duration":0.2517850000000408,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-A01 harness classification"],"fullName":"HAR-A01 harness classification HAR-A01 setup fixture emits only typed harness outcome and suppresses dependent product findings","status":"passed","title":"HAR-A01 setup fixture emits only typed harness outcome and suppresses dependent product findings","duration":28.877177000000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-A01 harness classification"],"fullName":"HAR-A01 harness classification HAR-A01 adapter fixture emits only typed harness outcome and suppresses dependent product findings","status":"passed","title":"HAR-A01 adapter fixture emits only typed harness outcome and suppresses dependent product findings","duration":19.488508999999965,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-A01 harness classification"],"fullName":"HAR-A01 harness classification HAR-A01 detector fixture emits only typed harness outcome and suppresses dependent product findings","status":"passed","title":"HAR-A01 detector fixture emits only typed harness outcome and suppresses dependent product findings","duration":5.793414000000041,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-A01 harness classification"],"fullName":"HAR-A01 harness classification HAR-A01 infrastructure fixture emits only typed harness outcome and suppresses dependent product findings","status":"passed","title":"HAR-A01 infrastructure fixture emits only typed harness outcome and suppresses dependent product findings","duration":4.544644000000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-045 confirmed advisory without promotion"],"fullName":"DATA-045 confirmed advisory without promotion DATA-045 keeps unpromoted confirmed_defect advisory even when proof conditions are met","status":"passed","title":"DATA-045 keeps unpromoted confirmed_defect advisory even when proof conditions are met","duration":6.018899999999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-045 confirmed advisory without promotion"],"fullName":"DATA-045 confirmed advisory without promotion DATA-045 blocks only through active promoted contract authority","status":"passed","title":"DATA-045 blocks only through active promoted contract authority","duration":15.04015400000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["blocking-eligible without proof"],"fullName":"blocking-eligible without proof ARC-015 classifies blocking-eligible detector outcomes without proof as advisory","status":"passed","title":"ARC-015 classifies blocking-eligible detector outcomes without proof as advisory","duration":1.3982509999999593,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-042 not_defect default visibility"],"fullName":"DATA-042 not_defect default visibility DATA-042 hides not_defect fingerprints from default output but keeps audit view","status":"passed","title":"DATA-042 hides not_defect fingerprints from default output but keeps audit view","duration":6.161511000000019,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A05 kernel slice"],"fullName":"ARC-A05 kernel slice ARC-A05 classifies identical evidence identically through two classifier entry paths","status":"passed","title":"ARC-A05 classifies identical evidence identically through two classifier entry paths","duration":1.8894800000000487,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-062 deterministic finding order"],"fullName":"CLI-062 deterministic finding order CLI-062 sorts findings by lane, severity, class, target, context, and id","status":"passed","title":"CLI-062 sorts findings by lane, severity, class, target, context, and id","duration":1.4447199999999611,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-025 disjoint classified run identities"],"fullName":"ARC-025 disjoint classified run identities ARC-025 keeps finding, coverage, and harness outcome ids disjoint","status":"passed","title":"ARC-025 keeps finding, coverage, and harness outcome ids disjoint","duration":1.2879409999999325,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310552211,"endTime":1785310552306.2878,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/classifier.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-055 derivePromotion"],"fullName":"DATA-055 derivePromotion DATA-055 records source decision and exact evidence fingerprint","status":"passed","title":"DATA-055 records source decision and exact evidence fingerprint","duration":14.007964999999956,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-055 derivePromotion"],"fullName":"DATA-055 derivePromotion DATA-055 fails closed when detector version is unavailable","status":"passed","title":"DATA-055 fails closed when detector version is unavailable","duration":0.6122179999999844,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-055 derivePromotion"],"fullName":"DATA-055 derivePromotion DATA-055 fails closed when decision scope is not exact","status":"passed","title":"DATA-055 fails closed when decision scope is not exact","duration":2.4437470000000303,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-055 derivePromotion"],"fullName":"DATA-055 derivePromotion DATA-055 fails closed when retained evidence is unavailable","status":"passed","title":"DATA-055 fails closed when retained evidence is unavailable","duration":0.30212000000000216,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-053 scope widening prevention"],"fullName":"DATA-053 scope widening prevention DATA-053 rejects widened-scope draft promotion","status":"passed","title":"DATA-053 rejects widened-scope draft promotion","duration":0.5728379999999902,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-053 scope widening prevention"],"fullName":"DATA-053 scope widening prevention DATA-053 accepts draft that preserves exact detector, target, and context dimensions","status":"passed","title":"DATA-053 accepts draft that preserves exact detector, target, and context dimensions","duration":2.0737780000000043,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-050 contract lifecycle"],"fullName":"DATA-050 contract lifecycle DATA-050 persists draft contracts and activates with self-referencing applicableScope","status":"passed","title":"DATA-050 persists draft contracts and activates with self-referencing applicableScope","duration":22.482009000000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-051 DATA-054 contract authority"],"fullName":"DATA-051 DATA-054 contract authority DATA-051 DATA-054 uncalibrated active contract yields ContractAuthorityError","status":"passed","title":"DATA-051 DATA-054 uncalibrated active contract yields ContractAuthorityError","duration":13.65254299999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-051 DATA-054 contract authority"],"fullName":"DATA-051 DATA-054 contract authority DATA-051 loads active contract when oracle and calibration evidence are available","status":"passed","title":"DATA-051 loads active contract when oracle and calibration evidence are available","duration":10.31462399999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-052 inferred contract separation"],"fullName":"DATA-052 inferred contract separation DATA-052 never loads inferred contracts for blocking authority","status":"passed","title":"DATA-052 never loads inferred contracts for blocking authority","duration":4.930127000000027,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310553566,"endTime":1785310553637.9302,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/contracts.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-041 atomic supersession"],"fullName":"DATA-041 atomic supersession DATA-041 finalization supersedes active decisions without mutating history","status":"passed","title":"DATA-041 finalization supersedes active decisions without mutating history","duration":40.24656600000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-041 atomic supersession"],"fullName":"DATA-041 atomic supersession DATA-041 rejects supersession when named decision is not active","status":"passed","title":"DATA-041 rejects supersession when named decision is not active","duration":6.802104999999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-047 overlapping active scopes"],"fullName":"DATA-047 overlapping active scopes DATA-047 rejects overlapping active scopes for the same fingerprint","status":"passed","title":"DATA-047 rejects overlapping active scopes for the same fingerprint","duration":4.4265589999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-047 overlapping active scopes"],"fullName":"DATA-047 overlapping active scopes DATA-047 allows overlap when the new decision supersedes every conflict","status":"passed","title":"DATA-047 allows overlap when the new decision supersedes every conflict","duration":6.8454490000000305,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-043 material fingerprint reopening"],"fullName":"DATA-043 material fingerprint reopening DATA-043 material fingerprint change reopens finding while preserving prior decision history","status":"passed","title":"DATA-043 material fingerprint change reopens finding while preserving prior decision history","duration":4.074757999999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-043 material fingerprint reopening"],"fullName":"DATA-043 material fingerprint reopening DATA-043 unchanged fingerprint does not reopen a reviewed finding","status":"passed","title":"DATA-043 unchanged fingerprint does not reopen a reviewed finding","duration":4.858676000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-042 not_defect visibility"],"fullName":"DATA-042 not_defect visibility DATA-042 hides not_defect from default queries but keeps it in audit queries","status":"passed","title":"DATA-042 hides not_defect from default queries but keeps it in audit queries","duration":5.8732499999999845,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-045 confirmed advisory without promotion"],"fullName":"DATA-045 confirmed advisory without promotion DATA-045 confirmed_defect without promotion has no blocking authority at read","status":"passed","title":"DATA-045 confirmed_defect without promotion has no blocking authority at read","duration":9.396908000000053,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-045 confirmed advisory without promotion"],"fullName":"DATA-045 confirmed advisory without promotion DATA-045 promotion field alone is required for blocking authority derivation","status":"passed","title":"DATA-045 promotion field alone is required for blocking authority derivation","duration":3.047604999999976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A06 concurrent decision finalization"],"fullName":"DATA-A06 concurrent decision finalization DATA-A06 loses no verdict when concurrent finalizations run under store lock","status":"passed","title":"DATA-A06 loses no verdict when concurrent finalizations run under store lock","duration":19.405819000000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A06 concurrent decision finalization"],"fullName":"DATA-A06 concurrent decision finalization DATA-A06 compare-and-swap conflict preserves both staged inputs for retry","status":"passed","title":"DATA-A06 compare-and-swap conflict preserves both staged inputs for retry","duration":3.7763009999999895,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310552961,"endTime":1785310553070.7764,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/decisions.test.ts"},{"assertionResults":[{"ancestorTitles":["core package harness"],"fullName":"core package harness ARC-A06 runs the verification harness","status":"passed","title":"ARC-A06 runs the verification harness","duration":1.8486560000000054,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310555241,"endTime":1785310555242.8486,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/harness.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-A01 path-independent stable identity"],"fullName":"DATA-A01 path-independent stable identity DATA-A01 yields identical findingId and evidenceFingerprint for equivalent semantics on different absolute paths","status":"passed","title":"DATA-A01 yields identical findingId and evidenceFingerprint for equivalent semantics on different absolute paths","duration":3.4408090000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A01 path-independent stable identity"],"fullName":"DATA-A01 path-independent stable identity DATA-A01 ignores nondeterministic key ordering in violation and context dimensions","status":"passed","title":"DATA-A01 ignores nondeterministic key ordering in violation and context dimensions","duration":0.4555700000000229,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A01 path-independent stable identity"],"fullName":"DATA-A01 path-independent stable identity DATA-A01 uses filesystem context identity without absolute machine paths","status":"passed","title":"DATA-A01 uses filesystem context identity without absolute machine paths","duration":0.3142819999999915,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A02 screenshot re-encode fingerprint stability"],"fullName":"DATA-A02 screenshot re-encode fingerprint stability DATA-A02 preserves fingerprint when screenshot encoding metadata differs but geometry is unchanged","status":"passed","title":"DATA-A02 preserves fingerprint when screenshot encoding metadata differs but geometry is unchanged","duration":1.062778000000037,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity"],"fullName":"DATA-A03 material fingerprint sensitivity DATA-A03 changes fingerprint when clipping amount changes","status":"passed","title":"DATA-A03 changes fingerprint when clipping amount changes","duration":0.4081249999999841,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity"],"fullName":"DATA-A03 material fingerprint sensitivity DATA-A03 changes fingerprint when normalized target structure changes","status":"passed","title":"DATA-A03 changes fingerprint when normalized target structure changes","duration":0.38308600000004844,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity"],"fullName":"DATA-A03 material fingerprint sensitivity DATA-A03 changes fingerprint when detector major behavior changes","status":"passed","title":"DATA-A03 changes fingerprint when detector major behavior changes","duration":0.31259100000005446,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity"],"fullName":"DATA-A03 material fingerprint sensitivity DATA-A03 changes fingerprint when applicable contract changes","status":"passed","title":"DATA-A03 changes fingerprint when applicable contract changes","duration":0.3399530000000368,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity"],"fullName":"DATA-A03 material fingerprint sensitivity DATA-A03 changes findingId when semantic target or detector identity changes","status":"passed","title":"DATA-A03 changes findingId when semantic target or detector identity changes","duration":0.7051940000000059,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310553950,"endTime":1785310553957.705,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/identity.test.ts"},{"assertionResults":[{"ancestorTitles":["PLAN-011 locked FOSS license report"],"fullName":"PLAN-011 locked FOSS license report PLAN-011 regenerates the committed report from the locked runtime graph","status":"passed","title":"PLAN-011 regenerates the committed report from the locked runtime graph","duration":542.335908,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["PLAN-011 locked FOSS license report"],"fullName":"PLAN-011 locked FOSS license report PLAN-011 requires a reason for every reviewed license allowlist entry","status":"passed","title":"PLAN-011 requires a reason for every reviewed license allowlist entry","duration":1.803199999999947,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310554502,"endTime":1785310555045.8032,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/license-report.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 exact and reviewed-policy scopes round-trip through canonical serialization with stable hashes","status":"passed","title":"DATA-A11 exact and reviewed-policy scopes round-trip through canonical serialization with stable hashes","duration":9.61140499999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-046 exact scope matches when detector, target, context, and contract align","status":"passed","title":"DATA-A11 DATA-046 exact scope matches when detector, target, context, and contract align","duration":1.1315609999999765,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-046 reviewed-policy scope matches glob target and predicates","status":"passed","title":"DATA-A11 DATA-046 reviewed-policy scope matches glob target and predicates","duration":0.5158330000000433,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-046 reports detector mismatch without silent non-match","status":"passed","title":"DATA-A11 DATA-046 reports detector mismatch without silent non-match","duration":0.335563000000036,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-046 reports target mismatch for exact and glob scopes","status":"passed","title":"DATA-A11 DATA-046 reports target mismatch for exact and glob scopes","duration":0.29476999999997133,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-046 reports context mismatch for kind and dimension predicates","status":"passed","title":"DATA-A11 DATA-046 reports context mismatch for kind and dimension predicates","duration":0.4704189999999926,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-046 reports contract version mismatch","status":"passed","title":"DATA-A11 DATA-046 reports contract version mismatch","duration":0.1850849999999582,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-047 expired reviewed-policy surfaces expired applicability","status":"passed","title":"DATA-A11 DATA-047 expired reviewed-policy surfaces expired applicability","duration":0.1875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-047 superseded narrower exact scope does not overlap broader reviewed-policy","status":"passed","title":"DATA-A11 DATA-047 superseded narrower exact scope does not overlap broader reviewed-policy","duration":0.4552320000000236,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-047 identical exact scopes overlap for finalization rejection","status":"passed","title":"DATA-A11 DATA-047 identical exact scopes overlap for finalization rejection","duration":0.21643399999999247,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A11 scope matching and canonical stability"],"fullName":"DATA-A11 scope matching and canonical stability DATA-A11 DATA-047 scopes with different detectors do not overlap","status":"passed","title":"DATA-A11 DATA-047 scopes with different detectors do not overlap","duration":0.14932899999996607,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-047 single-source scope matching algorithm"],"fullName":"DATA-047 single-source scope matching algorithm DATA-047 glob matches normalized target segments separated by slashes and dots","status":"passed","title":"DATA-047 glob matches normalized target segments separated by slashes and dots","duration":0.220450000000028,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310554236,"endTime":1785310554250.2205,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/match.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-A13 store migration fixtures"],"fullName":"DATA-A13 store migration fixtures DATA-A13 opens current fixture stores without changing their canonical bytes","status":"passed","title":"DATA-A13 opens current fixture stores without changing their canonical bytes","duration":40.08969000000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 store migration fixtures"],"fullName":"DATA-A13 store migration fixtures DATA-A13 requires every declared migration version to carry a committed fixture","status":"passed","title":"DATA-A13 requires every declared migration version to carry a committed fixture","duration":3.2411050000000046,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 store migration fixtures"],"fullName":"DATA-A13 store migration fixtures CLI-A13 rejects future fixture versions without changing source bytes","status":"passed","title":"CLI-A13 rejects future fixture versions without changing source bytes","duration":3.6103299999999763,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A13 store migration fixtures"],"fullName":"DATA-A13 store migration fixtures DATA-A13 rejects corrupt fixture stores atomically","status":"passed","title":"DATA-A13 rejects corrupt fixture stores atomically","duration":3.6582879999999705,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310554549,"endTime":1785310554599.6582,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/migration.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-060 baseline contract"],"fullName":"DATA-060 baseline contract DATA-060 rejects baseline records that embed full findings","status":"passed","title":"DATA-060 rejects baseline records that embed full findings","duration":3.6253580000000056,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-060 baseline contract"],"fullName":"DATA-060 baseline contract DATA-060 rejects baseline that claims blocking authority from decisions","status":"passed","title":"DATA-060 rejects baseline that claims blocking authority from decisions","duration":0.37091200000003255,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A05 unscanned prior defect"],"fullName":"DATA-A05 unscanned prior defect DATA-A05 unscanned prior defect never resolves","status":"passed","title":"DATA-A05 unscanned prior defect never resolves","duration":11.969876999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A05 unscanned prior defect"],"fullName":"DATA-A05 unscanned prior defect DATA-062 resolves only when comparable scan covered the prior scope","status":"passed","title":"DATA-062 resolves only when comparable scan covered the prior scope","duration":0.5989349999999831,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A10 contract-gated ratchet blocking"],"fullName":"DATA-A10 contract-gated ratchet blocking DATA-A10 unchanged confirmed advisory remains advisory without promotion","status":"passed","title":"DATA-A10 unchanged confirmed advisory remains advisory without promotion","duration":0.7328780000000279,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A10 contract-gated ratchet blocking"],"fullName":"DATA-A10 contract-gated ratchet blocking DATA-A10 promotion flips identical violation to blocking with authoritative contract","status":"passed","title":"DATA-A10 promotion flips identical violation to blocking with authoritative contract","duration":1.0588339999999903,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A10 contract-gated ratchet blocking"],"fullName":"DATA-A10 contract-gated ratchet blocking DATA-A10 removing contract authority returns advisory or coverage-incomplete, never false block","status":"passed","title":"DATA-A10 removing contract authority returns advisory or coverage-incomplete, never false block","duration":5.011731999999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-063 coverage-incomplete"],"fullName":"DATA-063 coverage-incomplete DATA-063 missing coverage never yields green ratchet status","status":"passed","title":"DATA-063 missing coverage never yields green ratchet status","duration":0.31214699999998174,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310553934,"endTime":1785310553958.3123,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/ratchet.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-A01 fixture detector plugin loads without core modification"],"fullName":"ARC-A01 fixture detector plugin loads without core modification ARC-A01 loads a declared fixture plugin and runs evaluate","status":"passed","title":"ARC-A01 loads a declared fixture plugin and runs evaluate","duration":33.86509100000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-062 declared-module-only detector loading"],"fullName":"ARC-062 declared-module-only detector loading ARC-062 imports only modules listed in refs","status":"passed","title":"ARC-062 imports only modules listed in refs","duration":4.25315999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-062 declared-module-only detector loading"],"fullName":"ARC-062 declared-module-only detector loading ARC-062 rejects malformed plugins with DetectorLoadError and never returns partial registration","status":"passed","title":"ARC-062 rejects malformed plugins with DetectorLoadError and never returns partial registration","duration":20.49437999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-062 declared-module-only detector loading"],"fullName":"ARC-062 declared-module-only detector loading ARC-062 rejects missing exports with DetectorLoadError","status":"passed","title":"ARC-062 rejects missing exports with DetectorLoadError","duration":0.9507399999999961,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-003 deterministic detector context"],"fullName":"ARC-003 deterministic detector context ARC-003 injects clock and seed through DetectorContext","status":"passed","title":"ARC-003 injects clock and seed through DetectorContext","duration":4.658110000000022,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310554238,"endTime":1785310554302.6582,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/sdk.test.ts"},{"assertionResults":[{"ancestorTitles":["ARC-050 store layout"],"fullName":"ARC-050 store layout ARC-050 exposes canonical project-state path builders","status":"passed","title":"ARC-050 exposes canonical project-state path builders","duration":3.331433000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A03 interrupted atomic write"],"fullName":"ARC-A03 interrupted atomic write ARC-A03 preserves prior valid canonical state when a write is interrupted","status":"passed","title":"ARC-A03 preserves prior valid canonical state when a write is interrupted","duration":20.737326999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-A03 interrupted atomic write"],"fullName":"ARC-A03 interrupted atomic write ARC-A03 never exposes partial content at the canonical path during temp write","status":"passed","title":"ARC-A03 never exposes partial content at the canonical path during temp write","duration":5.074471000000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A04 corrupt blocking decision state"],"fullName":"DATA-A04 corrupt blocking decision state DATA-A04 throws CorruptStateError instead of silently clearing accepted or blocking state","status":"passed","title":"DATA-A04 throws CorruptStateError instead of silently clearing accepted or blocking state","duration":4.159154999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A04 corrupt blocking decision state"],"fullName":"DATA-A04 corrupt blocking decision state DATA-A04 fails closed on unsupported future blocking schema versions","status":"passed","title":"DATA-A04 fails closed on unsupported future blocking schema versions","duration":1.8048429999999485,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A04 corrupt blocking decision state"],"fullName":"DATA-A04 corrupt blocking decision state ARC-052 quarantines corrupt advisory history and reports it","status":"passed","title":"ARC-052 quarantines corrupt advisory history and reports it","duration":5.086085999999966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A06 concurrent store finalization"],"fullName":"DATA-A06 concurrent store finalization DATA-A06 loses no verdict when concurrent finalizations run under store lock","status":"passed","title":"DATA-A06 loses no verdict when concurrent finalizations run under store lock","duration":14.774017000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A06 concurrent store finalization"],"fullName":"DATA-A06 concurrent store finalization DATA-A06 compare-and-swap conflict preserves both inputs for retry","status":"passed","title":"DATA-A06 compare-and-swap conflict preserves both inputs for retry","duration":6.418243999999959,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310552618,"endTime":1785310552680.4182,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/store.test.ts"},{"assertionResults":[{"ancestorTitles":["DATA-A01 identity property invariants"],"fullName":"DATA-A01 identity property invariants DATA-A01 findingId ignores absolute paths, timestamps, run IDs, and redactable environment noise","status":"passed","title":"DATA-A01 findingId ignores absolute paths, timestamps, run IDs, and redactable environment noise","duration":94.092353,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A01 identity property invariants"],"fullName":"DATA-A01 identity property invariants DATA-A01 evidenceFingerprint is invariant to key ordering in material facts","status":"passed","title":"DATA-A01 evidenceFingerprint is invariant to key ordering in material facts","duration":69.565965,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A02 fingerprint exclusion property invariants"],"fullName":"DATA-A02 fingerprint exclusion property invariants DATA-A02 evidenceFingerprint ignores screenshot encoding metadata when geometry is unchanged","status":"passed","title":"DATA-A02 evidenceFingerprint ignores screenshot encoding metadata when geometry is unchanged","duration":90.01694500000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity properties"],"fullName":"DATA-A03 material fingerprint sensitivity properties DATA-A03 evidenceFingerprint changes when detector major behavior changes","status":"passed","title":"DATA-A03 evidenceFingerprint changes when detector major behavior changes","duration":50.524320999999986,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity properties"],"fullName":"DATA-A03 material fingerprint sensitivity properties DATA-A03 evidenceFingerprint changes when normalized target structure changes","status":"passed","title":"DATA-A03 evidenceFingerprint changes when normalized target structure changes","duration":40.64320399999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity properties"],"fullName":"DATA-A03 material fingerprint sensitivity properties DATA-A03 evidenceFingerprint changes when measured violation changes","status":"passed","title":"DATA-A03 evidenceFingerprint changes when measured violation changes","duration":47.38108299999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity properties"],"fullName":"DATA-A03 material fingerprint sensitivity properties DATA-A03 evidenceFingerprint changes when applicable contract or config changes","status":"passed","title":"DATA-A03 evidenceFingerprint changes when applicable contract or config changes","duration":46.10359200000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity properties"],"fullName":"DATA-A03 material fingerprint sensitivity properties DATA-A03 evidenceFingerprint changes when execution-context dimensions change","status":"passed","title":"DATA-A03 evidenceFingerprint changes when execution-context dimensions change","duration":43.11429099999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-A03 material fingerprint sensitivity properties"],"fullName":"DATA-A03 material fingerprint sensitivity properties DATA-A03 findingId changes when semantic detector, target, or context identity changes","status":"passed","title":"DATA-A03 findingId changes when semantic detector, target, or context identity changes","duration":63.74454800000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-022 material fact coverage properties"],"fullName":"DATA-022 material fact coverage properties DATA-022 evidenceFingerprint depends only on declared material facts","status":"passed","title":"DATA-022 evidenceFingerprint depends only on declared material facts","duration":30.840671000000043,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-023 exclusion coverage properties"],"fullName":"DATA-023 exclusion coverage properties DATA-023 findingId excludes non-semantic environment fields from non-browser contexts","status":"passed","title":"DATA-023 findingId excludes non-semantic environment fields from non-browser contexts","duration":46.51707899999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785310552618,"endTime":1785310553241.517,"status":"passed","message":"","name":"/home/user/builds/invariantum-role-auth-d4a1c1698332/packages/core/test/property/identity.prop.test.ts"}]}