{"numTotalTestSuites":594,"numPassedTestSuites":594,"numFailedTestSuites":0,"numPendingTestSuites":0,"numTotalTests":1383,"numPassedTests":1383,"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":1785783303590,"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.700857999999982,"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.8169330000000059,"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":30.963344000000006,"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":24.16069600000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783379263,"endTime":1785783379325.1606,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":6.423618000000005,"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":6.213853,"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.4905140000000188,"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":8.956377000000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783380609,"endTime":1785783380634.9563,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":33.381708,"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.7043390000000045,"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":5.2487390000000005,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783379534,"endTime":1785783379575.2488,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.915051000000005,"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":1.0473140000000285,"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":14.974609000000044,"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":15.023856000000023,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783379902,"endTime":1785783379939.024,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.952536999999978,"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":218.98302300000003,"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":222.644156,"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":210.46925199999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783377945,"endTime":1785783378602.4692,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.903676000000019,"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.6940200000000232,"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.5933260000000473,"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":22.287504000000013,"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":24.377400000000023,"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.2617159999999785,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783378899,"endTime":1785783378954.2617,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":5.845680000000016,"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.7457449999999426,"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":316.987435,"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":482.6871990000001,"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":276.6131990000001,"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":541.1087299999999,"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":318.9637069999999,"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":901.639248,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783359573,"endTime":1785783362417.6392,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":6.042059999999992,"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":16.800115000000005,"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":8.785672000000034,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783380213,"endTime":1785783380244.7856,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":11.051964000000012,"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":8.14393800000002,"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":9.862342999999981,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783380375,"endTime":1785783380403.8623,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":4.809353999999985,"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":0.47054000000002816,"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":711.5408209999999,"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":715.0139550000001,"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":1298.0339270000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783369035,"endTime":1785783371765.034,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":2.3050870000000714,"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":353.7941430000001,"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":303.18865100000005,"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":272.6177339999999,"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":1628.616661,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783362952,"endTime":1785783365512.6167,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":5.443189999999959,"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":1877.2504680000002,"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":1081.7352440000004,"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":3326.103193,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783352733,"endTime":1785783359024.1033,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":6.165722999999957,"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":281.50424999999996,"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":457.0162009999999,"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":0.7256609999999455,"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":210.2623289999999,"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":449.263275,"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":1067.394841,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783366038,"endTime":1785783368510.3948,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":5.073633000000086,"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":860.370539,"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":1579.6681090000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783372291,"endTime":1785783374736.6682,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":4.989270000000033,"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.5087800000000016,"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":836.4347090000001,"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":1640.1896,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783375272,"endTime":1785783377754.1897,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.5609590000000253,"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.4738370000000032,"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.6604370000000017,"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.4587799999999902,"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.3949269999999956,"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.6205600000000118,"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.3293679999999881,"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.4504440000000045,"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.4508260000000064,"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.526102000000037,"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.8193259999999896,"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":2.190743999999995,"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":1.2649569999999812,"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":1.6507240000000252,"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":0.9988369999999804,"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.8962030000000141,"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.9752100000000041,"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.5001019999999698,"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.22540600000002087,"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.9911109999999894,"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.4018269999999688,"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.2091440000000375,"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.39127000000002,"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.28776199999998653,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331264,"endTime":1785783331293.2878,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.873479999999972,"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.1246869999999944,"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":1.191170999999997,"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":1.0148760000000152,"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.0574349999999981,"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":2.052104999999983,"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.9850629999999683,"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":2.022194000000013,"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.8405280000000062,"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.787510999999995,"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.5031379999999785,"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":1.4919239999999832,"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.5829970000000344,"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.9308620000000474,"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.272104000000013,"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":0.3451329999999757,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331376,"endTime":1785783331397.3452,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":3.9449430000000234,"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":1.8384450000000072,"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":0.6242519999999843,"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":0.9803259999999909,"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.5466380000000015,"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":1.1598160000000064,"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.48088999999998805,"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.6263050000000021,"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":0.4757979999999975,"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":1.0713709999999992,"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":0.5565479999999923,"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":0.4146470000000022,"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.37818599999999947,"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":0.47788100000002487,"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.32879599999998277,"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":0.5574839999999881,"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.4996889999999894,"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.48432900000000245,"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.4036890000000142,"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":0.328975000000014,"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.35770899999999983,"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.2381419999999821,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331495,"endTime":1785783331512.3577,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":3.9844059999999786,"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":0.5580670000000509,"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":2.191683000000012,"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.478004999999996,"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":4.167667999999992,"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.780260999999996,"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":1.9313119999999913,"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":1.2670490000000427,"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":1.8582630000000222,"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":3.6319389999999885,"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.2712960000000066,"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.103701000000001,"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.0751220000000217,"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.3019780000000196,"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.3677139999999781,"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.3044699999999807,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783330655,"endTime":1785783330689.3044,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.27765500000001,"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.8477849999999876,"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.8356180000000109,"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":2.318953999999991,"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.9868610000000047,"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.9622389999999825,"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.4673739999999782,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331731,"endTime":1785783331745.4673,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":34.80041,"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":2.826326999999992,"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.2447649999999726,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 pure UI journey treats passing browser promises as terminal UI-only success","status":"passed","title":"FEAT-A17 pure UI journey treats passing browser promises as terminal UI-only success","duration":3.3457409999999754,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 inferred pure UI promise mismatch is advisory and not domain-certified","status":"passed","title":"FEAT-A17 inferred pure UI promise mismatch is advisory and not domain-certified","duration":1.7144139999999766,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 confirmed pure UI promise mismatch blocks only through confirmed branch authority","status":"passed","title":"FEAT-A17 confirmed pure UI promise mismatch blocks only through confirmed branch authority","duration":7.881183999999962,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 preserves an accepted supplied disposition per confirmed mismatch","status":"passed","title":"FEAT-A17 preserves an accepted supplied disposition per confirmed mismatch","duration":15.815267999999946,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 bootstraps confirmed authority when supplied stores contain no authority","status":"passed","title":"FEAT-A17 bootstraps confirmed authority when supplied stores contain no authority","duration":7.431993000000034,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 bootstraps reviewed authority for a confirmed pure UI browser mismatch","status":"passed","title":"FEAT-A17 bootstraps reviewed authority for a confirmed pure UI browser mismatch","duration":7.937755000000038,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 browser promise mismatch prevents domain certification when domain oracle passes","status":"passed","title":"FEAT-A17 browser promise mismatch prevents domain certification when domain oracle passes","duration":1.6179029999999557,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 merges confirmed browser mismatch through reviewed authority after passing domain oracle","status":"passed","title":"FEAT-A17 merges confirmed browser mismatch through reviewed authority after passing domain oracle","duration":9.614570000000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-024 prevents domain certification when browser capture loses a required dimension","status":"passed","title":"FEAT-024 prevents domain certification when browser capture loses a required dimension","duration":1.5760020000000168,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-A17 FEAT-024 keeps browser success uncertified when bridge forwards a failed domain oracle","status":"passed","title":"FEAT-A17 FEAT-024 keeps browser success uncertified when bridge forwards a failed domain oracle","duration":6.990066999999954,"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.085915,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-021 browser interaction is trigger not oracle"],"fullName":"FEAT-021 browser interaction is trigger not oracle FEAT-021 pairs each persistence adapter with its own before snapshot","status":"passed","title":"FEAT-021 pairs each persistence adapter with its own before snapshot","duration":1.356533000000013,"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":7.589570999999978,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783329965,"endTime":1785783330079.5896,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":6.711155000000019,"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":0.9942410000000166,"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.5828439999999944,"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.5267900000000054,"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.5486260000000129,"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.4055569999999875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 parses ordered target-owned promise expectations","status":"passed","title":"FEAT-024 parses ordered target-owned promise expectations","duration":4.4507890000000145,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects oracle references that diverge from declared journey adapters","status":"passed","title":"FEAT-024 rejects oracle references that diverge from declared journey adapters","duration":0.830601999999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects unknown semantic action kinds, expectation dimensions, and fields","status":"passed","title":"FEAT-024 rejects unknown semantic action kinds, expectation dimensions, and fields","duration":1.9221670000000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'unknown-operator'","status":"passed","title":"FEAT-024 rejects 'unknown-operator'","duration":0.7209259999999915,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'exists-with-value'","status":"passed","title":"FEAT-024 rejects 'exists-with-value'","duration":0.48226600000000985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'equals-without-value'","status":"passed","title":"FEAT-024 rejects 'equals-without-value'","duration":0.5018439999999771,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'unsafe-path'","status":"passed","title":"FEAT-024 rejects 'unsafe-path'","duration":0.5614179999999749,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'empty-path'","status":"passed","title":"FEAT-024 rejects 'empty-path'","duration":0.4344680000000096,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'unnormalized-path'","status":"passed","title":"FEAT-024 rejects 'unnormalized-path'","duration":0.32449499999998466,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'adapter-verdict'","status":"passed","title":"FEAT-024 rejects 'adapter-verdict'","duration":0.3473370000000102,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects 'adapter-predicate'","status":"passed","title":"FEAT-024 rejects 'adapter-predicate'","duration":0.28590900000000374,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["FEAT-024 browser journey adapter bridge schema"],"fullName":"FEAT-024 browser journey adapter bridge schema FEAT-024 rejects duplicate expectation IDs and dimension-path pairs","status":"passed","title":"FEAT-024 rejects duplicate expectation IDs and dimension-path pairs","duration":0.720877999999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783330926,"endTime":1785783330949.721,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":6.032859000000002,"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.3536400000000128,"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.8507549999999924,"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.7275590000000136,"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.3193950000000143,"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.34659099999998944,"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.3561069999999802,"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.7334820000000093,"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.063122000000021,"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.49542500000001155,"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.2909779999999955,"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.24920499999996082,"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.3222499999999968,"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.5452390000000378,"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":2.8563649999999825,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331648,"endTime":1785783331666.8564,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.4609399999999937,"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.9794750000000079,"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.593829999999997,"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":20.944221,"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.7788280000000043,"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":2.7770170000000007,"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.188411000000002,"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":1.5499069999999904,"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":1.3334979999999916,"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.906029999999987,"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.2103919999999846,"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":2.8543769999999995,"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.34564900000000875,"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":0.4666249999999934,"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.27685299999998847,"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.3980489999999861,"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.31254599999999755,"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.4745280000000207,"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":0.42560499999999024,"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.275983999999994,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783330288,"endTime":1785783330331.4255,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.4373489999999833,"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":2.068127000000004,"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":2.5708569999999895,"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.1986309999999776,"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":4.44603699999999,"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.5726099999999974,"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.48698699999999917,"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.4333469999999693,"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.289609999999982,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783330401,"endTime":1785783330418.2896,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":3.3997039999999856,"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.47280399999999645,"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.3683820000000253,"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.3778329999999812,"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.40023400000001175,"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.4111769999999808,"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.48763600000000906,"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.40792999999999324,"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.433805000000007,"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":3.299615000000017,"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":2.0765320000000145,"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":4.407294000000007,"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.8094229999999811,"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.121719000000013,"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.9843229999999892,"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.37181800000001886,"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.2956789999999785,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331045,"endTime":1785783331074.2957,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.824600000000032,"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.4896439999999984,"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.6385879999999702,"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.6037430000000086,"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.0258469999999988,"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.3622530000000097,"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.4659499999999639,"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.6991199999999935,"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.7604860000000144,"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":7.383014000000003,"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.4643429999999853,"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.4304369999999835,"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.3577870000000303,"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.4554370000000176,"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.9751530000000344,"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.1939429999999902,"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.5023709999999824,"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":0.9240409999999883,"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":0.9812170000000151,"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":1.0060849999999846,"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":1.2668239999999855,"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.3455280000000016,"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.8014990000000353,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783330785,"endTime":1785783330817.8015,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.568353000000002,"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":1.0119589999999903,"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":2.0182329999999524,"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.3059519999999907,"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.515422000000001,"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.9866170000000238,"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.6111050000000091,"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.540604999999971,"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.4548030000000267,"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.2350910000000113,"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.410995000000014,"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.8606290000000172,"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.9725880000000302,"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.1032930000000079,"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.1074110000000132,"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.8166830000000118,"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.8935329999999908,"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.42257399999999734,"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":6.485156999999958,"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":3.314826000000039,"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.1668160000000398,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783330031,"endTime":1785783330071.1667,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":380.42268000000007,"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":340.59904000000006,"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":333.47453199999995,"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":312.7200149999999,"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":371.02243999999996,"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":396.7063699999999,"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":316.8846199999998,"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":409.93302399999993,"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":320.3800489999999,"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":870.8253299999997,"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":344.3968769999992,"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":1114.6063429999995,"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":270.8128939999997,"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":311.250266,"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":315.2094270000007,"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":362.6671409999999,"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":322.97178799999983,"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":315.1142689999997,"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":333.2502020000011,"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":350.7101610000009,"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":583.3145120000008,"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.37216300000000047,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783781613,"endTime":1785783790291.372,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":6.4031120000000215,"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":3.0599619999999845,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-026 measured-coordinate annotation renderer"],"fullName":"UI-026 measured-coordinate annotation renderer REPORT-075 REPORT-A16 carries only markers so shared original pixels are never duplicated per finding","status":"passed","title":"REPORT-075 REPORT-A16 carries only markers so shared original pixels are never duplicated per finding","duration":1.835250000000002,"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.6805129999999906,"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.7865730000000042,"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":2.3187149999999974,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783806829,"endTime":1785783806846.3186,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":215.97409199999998,"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":161.96318899999994,"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":150.28366799999992,"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":181.62169099999994,"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":188.327583,"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":171.45606999999995,"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":175.458527,"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":164.803766,"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":161.018329,"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":176.92436300000008,"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":181.31075699999974,"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":188.67191700000012,"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":175.37290499999972,"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":191.83054699999957,"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":175.577765,"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":6381.112346,"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":191.84130399999958,"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":191.83613200000036,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783771697,"endTime":1785783781123.8362,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/assets.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A10 auth adapter proof verification"],"fullName":"UI-A10 auth adapter proof verification 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":96.81229800000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 auth adapter proof verification"],"fullName":"UI-A10 auth adapter proof verification 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":67.17467699999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 auth adapter proof verification"],"fullName":"UI-A10 auth adapter proof verification UI-A10 UI-056 a matching proof yields evidence","status":"passed","title":"UI-A10 UI-056 a matching proof yields evidence","duration":1012.667715,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783803359,"endTime":1785783804535.6677,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/auth-adapter.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-041 comparable-cell grouping"],"fullName":"UI-041 comparable-cell grouping keeps route and role variants in one group","status":"passed","title":"keeps route and role variants in one group","duration":10.949075999999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-041 comparable-cell grouping"],"fullName":"UI-041 comparable-cell grouping separates locale, exact viewport, device scale factor, and engine","status":"passed","title":"separates locale, exact viewport, device scale factor, and engine","duration":0.8518550000000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-041 comparable-cell grouping"],"fullName":"UI-041 comparable-cell grouping retains only comparable outliers after composite grouping","status":"passed","title":"retains only comparable outliers after composite grouping","duration":0.384483000000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783806477,"endTime":1785783806489.3845,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/comparison-groups.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-040 consistency evidence canonicalization"],"fullName":"UI-040 consistency evidence canonicalization omits an absent style fingerprint instead of emitting undefined","status":"passed","title":"omits an absent style fingerprint instead of emitting undefined","duration":3.0487469999999917,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783807135,"endTime":1785783807138.0488,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/consistency-evidence-canonical.test.ts"},{"assertionResults":[{"ancestorTitles":["shared chrome identity comparisons"],"fullName":"shared chrome identity comparisons reports collection members by identity and links as one reordered fact","status":"passed","title":"reports collection members by identity and links as one reordered fact","duration":2.397081999999955,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared chrome identity comparisons"],"fullName":"shared chrome identity comparisons preserves repeated heading levels as distinct members","status":"passed","title":"preserves repeated heading levels as distinct members","duration":0.376940999999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["shared chrome identity comparisons"],"fullName":"shared chrome identity comparisons assigns duplicate link identities from href occurrence ordinal","status":"passed","title":"assigns duplicate link identities from href occurrence ordinal","duration":0.3050509999999349,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-041 UI-042 shared chrome matrix reporting"],"fullName":"UI-041 UI-042 shared chrome matrix reporting retains a changed duplicated-href link through role-tolerance suppression","status":"passed","title":"retains a changed duplicated-href link through role-tolerance suppression","duration":8.407587000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-041 UI-042 shared chrome matrix reporting"],"fullName":"UI-041 UI-042 shared chrome matrix reporting emits UI-041 only when a non-dominant cluster has multiple cells","status":"passed","title":"emits UI-041 only when a non-dominant cluster has multiple cells","duration":0.5457369999999173,"failureMessages":[],"meta":{},"tags":[]},{"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":309.34656199999995,"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":271.458885,"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":1033.3965560000001,"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":648.613679,"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":815.8196979999998,"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":643.8325469999995,"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":828.4907940000003,"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":456.59297700000025,"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":838.53478,"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":460.3250109999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-040 shared chrome fingerprint"],"fullName":"UI-040 shared chrome fingerprint UI-040 ignores unlabeled landmark descendants but preserves explicit landmark labels","status":"passed","title":"UI-040 ignores unlabeled landmark descendants but preserves explicit landmark labels","duration":124.82655700000032,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-040 shared chrome fingerprint"],"fullName":"UI-040 shared chrome fingerprint UI-040 collects chrome structure and excludes the main-content region","status":"passed","title":"UI-040 collects chrome structure and excludes the main-content region","duration":121.72908000000007,"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":522.2024780000002,"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":984.5612170000004,"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":818.2265159999988,"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":799.0239930000007,"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":844.6309309999997,"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":808.7690399999992,"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":1699.6411279999993,"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":283.6582440000002,"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":1075.688741,"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":836.2744629999997,"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":631.0022370000006,"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":450.128772,"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 stays outside locale comparison group","status":"passed","title":"UI-A01 UI-042 RTL variant stays outside locale comparison group","duration":804.9103299999988,"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":1447.4617889999972,"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":1814.4692670000004,"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":267.80269699999917,"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":809.682632,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783457732,"endTime":1785783479196.6826,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1435.6677160000002,"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":1336.688454,"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":4000.889886,"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":2441.8750569999993,"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":660.6152259999999,"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":658.3965329999992,"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":1325.1045460000005,"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":1325.1928009999992,"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":2444.226106000002,"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":2431.107806,"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":666.7316420000025,"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":699.5450789999995,"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":1334.354499000001,"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":1513.957523000001,"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":2746.3170040000005,"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":2782.0720440000005,"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":829.2708859999984,"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":827.071516,"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":1794.9627550000005,"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":1739.320596999998,"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":3214.5243899999987,"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":3084.2482269999964,"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":809.9764670000004,"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":804.7480230000001,"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":1598.6278590000002,"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":1529.0807370000039,"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":3067.3106199999966,"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":2704.8147899999967,"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":1030.6654160000035,"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":810.075288,"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":1061.852880999999,"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":1139.899716,"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":2801.6416119999994,"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":2473.6620240000047,"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":783.4008830000021,"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":775.6625900000072,"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":1470.6703080000007,"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":1435.3058210000017,"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":2786.388261,"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":2663.5989589999954,"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":745.7100340000034,"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":784.0117299999984,"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":1577.162267000007,"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":1530.6658840000018,"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":2668.7140470000013,"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":2608.735453000001,"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":728.4061719999881,"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":814.6277280000068,"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":1271.805601,"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":1308.3678740000032,"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":3109.8550530000066,"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":3366.854146999991,"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":1148.5966679999983,"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":1035.1305770000035,"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":1381.869021999999,"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":1309.923883999989,"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":3545.5039810000017,"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":2935.453615999999,"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":809.9260189999914,"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":835.0840249999892,"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":1167.6264159999992,"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":1152.3420740000001,"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":2763.0738439999986,"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":3121.6893560000026,"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":897.4143760000006,"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":883.4427180000057,"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":1171.8684310000099,"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":1133.0543879999896,"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":3145.6452470000077,"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":3194.794743000006,"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":949.1044449999899,"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":1057.6718899999978,"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":1110.9344449999917,"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":1059.8807510000042,"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":2774.9209709999996,"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":2745.528389999992,"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":1281.5382180000015,"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":1103.1255609999935,"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":1529.6596180000051,"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":1500.9679290000058,"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":2775.6316970000044,"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":2798.407837000006,"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":805.3019389999972,"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":878.4945799999987,"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":1554.8701719999954,"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":816.1513089999789,"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":2476.6301549999916,"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":2002.4376210000191,"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":703.9774250000191,"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":686.0296669999952,"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":943.043697999994,"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":1096.585762999981,"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":2543.918583999999,"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":2556.827341999975,"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":788.6889610000071,"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":792.445939999976,"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":1083.1771749999898,"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":1120.839891999989,"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":2964.321893000015,"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":2302.6760660000145,"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":736.9616969999915,"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":747.0530480000016,"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":1142.3002719999931,"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":1213.006567000004,"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":2557.3030190000136,"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":2705.867949000007,"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":698.8427319999901,"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":692.6854150000145,"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":878.9005959999922,"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":879.990386999998,"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":2076.730092999991,"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":2083.8972439999925,"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":692.2738400000089,"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":707.5767080000078,"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.9679790000081994,"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":2.365495000005467,"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.2157080000033602,"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":863.8893809999863,"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":699.9234270000015,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783480100,"endTime":1785783668178.9233,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/cross-engine.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles runs blocking and conditional discovered oracles through production matrix","status":"passed","title":"runs blocking and conditional discovered oracles through production matrix","duration":865.4571169999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles proves every adversarial negative emits measured contracts and zero findings","status":"passed","title":"proves every adversarial negative emits measured contracts and zero findings","duration":2896.390966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles blocks an aria-modal dialog with an operable background after an inert candidate","status":"passed","title":"blocks an aria-modal dialog with an operable background after an inert candidate","duration":315.9767689999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles does not report a toggling aria-pressed button","status":"passed","title":"does not report a toggling aria-pressed button","duration":297.54288799999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles reports an aria-pressed button that never updates","status":"passed","title":"reports an aria-pressed button that never updates","duration":301.01799499999925,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles records navigation without a comparable aria-pressed state","status":"passed","title":"records navigation without a comparable aria-pressed state","duration":634.1800589999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles records a coverage gap when activation produces no observable reaction","status":"passed","title":"records a coverage gap when activation produces no observable reaction","duration":514.4803019999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A14 discovered-control standard oracles"],"fullName":"UI-A14 discovered-control standard oracles records a coverage gap when activation leaves the document","status":"passed","title":"records a coverage gap when activation leaves the document","duration":470.76055799999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A15 coupled numeric observations"],"fullName":"UI-A15 coupled numeric observations preserves a removed display as a coverage gap while retaining its measured sibling","status":"passed","title":"preserves a removed display as a coverage gap while retaining its measured sibling","duration":533.0939560000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A15 coupled numeric observations"],"fullName":"UI-A15 coupled numeric observations rejects measured timer, first-only, and stock-clamped controls for independent behavioral reasons","status":"passed","title":"rejects measured timer, first-only, and stock-clamped controls for independent behavioral reasons","duration":967.1361040000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A15 coupled numeric observations"],"fullName":"UI-A15 coupled numeric observations surfaces only a stable advisory candidate across independent measured cells and promotes through core","status":"passed","title":"surfaces only a stable advisory candidate across independent measured cells and promotes through core","duration":532.1983640000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A15 coupled numeric observations"],"fullName":"UI-A15 coupled numeric observations does not surface a page measured once and rejects blocking bands","status":"passed","title":"does not surface a page measured once and rejects blocking bands","duration":296.9751849999993,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783762593,"endTime":1785783771219.975,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/discovered-oracles.test.ts"},{"assertionResults":[{"ancestorTitles":["family auth adapters"],"fullName":"family auth adapters UI-A10 UI-055 each family runner applies the adapter declared for the cell role","status":"passed","title":"UI-A10 UI-055 each family runner applies the adapter declared for the cell role","duration":17.682716999999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783806345,"endTime":1785783806362.6826,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/family-auth.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-073 REPORT-075 geometry screenshot evidence"],"fullName":"REPORT-073 REPORT-075 geometry screenshot evidence REPORT-A13 REPORT-A15 persists original, measured annotation, and target crop on a real geometry finding","status":"passed","title":"REPORT-A13 REPORT-A15 persists original, measured annotation, and target crop on a real geometry finding","duration":1642.2075439999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-073 REPORT-075 geometry screenshot evidence"],"fullName":"REPORT-073 REPORT-075 geometry screenshot evidence REPORT-077 REPORT-A17 keeps a finding with no measured target rectangle and still attaches the cell original","status":"passed","title":"REPORT-077 REPORT-A17 keeps a finding with no measured target rectangle and still attaches the cell original","duration":824.9068100000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783795621,"endTime":1785783798087.9067,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/geometry-artifacts.test.ts"},{"assertionResults":[{"ancestorTitles":["clip escape is measured against the clip ancestor, not the viewport"],"fullName":"clip escape is measured against the clip ancestor, not the viewport reports the escape past a clip box scrolled out of view","status":"passed","title":"reports the escape past a clip box scrolled out of view","duration":145.63309700000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["geometry CSSOM compatibility"],"fullName":"geometry CSSOM compatibility canonicalizes clip-chain evidence when overflowClipMargin is unsupported","status":"passed","title":"canonicalizes clip-chain evidence when overflowClipMargin is unsupported","duration":122.51968399999998,"failureMessages":[],"meta":{},"tags":[]},{"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":799.551876,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 fixed header and footer sandwich with insufficient scroll stays blocking"],"fullName":"UI-021 fixed header and footer sandwich with insufficient scroll stays blocking UI-021 sandwiched target between fixed bars with too little scroll produces a finding","status":"passed","title":"UI-021 sandwiched target between fixed bars with too little scroll produces a finding","duration":751.046672,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 in-flow occluder over interactive target stays blocking"],"fullName":"UI-021 in-flow occluder over interactive target stays blocking UI-021 static in-flow overlay occlusion produces a finding","status":"passed","title":"UI-021 static in-flow overlay occlusion produces a finding","duration":785.912832,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 overflow-x clip on root does not defeat scroll reachability"],"fullName":"UI-021 overflow-x clip on root does not defeat scroll reachability UI-021 fixed bottom bar on overflow-x clip root scroll page produces no finding","status":"passed","title":"UI-021 fixed bottom bar on overflow-x clip root scroll page produces no finding","duration":790.490413,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 overflow-x clip on root does not defeat scroll reachability"],"fullName":"UI-021 overflow-x clip on root does not defeat scroll reachability UI-021 probe keeps targetInRootScroller true when only overflow-x is clip","status":"passed","title":"UI-021 probe keeps targetInRootScroller true when only overflow-x is clip","duration":107.03166699999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 overflow-y auto ancestor marks target outside root scroller"],"fullName":"UI-021 overflow-y auto ancestor marks target outside root scroller UI-021 probe marks targetInRootScroller false inside overflow-y auto ancestor","status":"passed","title":"UI-021 probe marks targetInRootScroller false inside overflow-y auto ancestor","duration":124.66661999999951,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 scroll-reachable target under fixed bottom bar stays silent"],"fullName":"UI-021 scroll-reachable target under fixed bottom bar stays silent UI-021 fixed bottom bar occlusion cleared by root scroll produces no finding","status":"passed","title":"UI-021 fixed bottom bar occlusion cleared by root scroll produces no finding","duration":773.0535200000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 static children of fixed bottom bar do not block scroll reachability"],"fullName":"UI-021 static children of fixed bottom bar do not block scroll reachability UI-021 fixed wrapper with static link children overlapping footer link produces no finding","status":"passed","title":"UI-021 fixed wrapper with static link children overlapping footer link produces no finding","duration":813.1864329999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 fixed bar inside transform ancestor is not viewport-pinned"],"fullName":"UI-021 fixed bar inside transform ancestor is not viewport-pinned UI-021 fixed bar nested in transform ancestor still produces a finding","status":"passed","title":"UI-021 fixed bar nested in transform ancestor still produces a finding","duration":813.66147,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 rounded corner sample outside painted geometry is not occlusion"],"fullName":"UI-021 rounded corner sample outside painted geometry is not occlusion UI-021 rounded fixed target with corner samples outside painted circle produces no finding","status":"passed","title":"UI-021 rounded fixed target with corner samples outside painted circle produces no finding","duration":768.0566749999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 genuine fixed cover still reports occlusion"],"fullName":"UI-021 genuine fixed cover still reports occlusion UI-021 square fixed target fully covered by another fixed element produces a finding","status":"passed","title":"UI-021 square fixed target fully covered by another fixed element produces a finding","duration":747.9099379999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-021 partial cover with target still in hit stack reports occlusion"],"fullName":"UI-021 partial cover with target still in hit stack reports occlusion UI-021 partial overlay with target beneath cover in hit stack produces a finding","status":"passed","title":"UI-021 partial overlay with target beneath cover in hit stack produces a finding","duration":751.9173310000006,"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":723.7626100000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-020 text-glyphs-clipped measures against clip ancestor not viewport"],"fullName":"UI-020 text-glyphs-clipped measures against clip ancestor not viewport below-the-fold text on a scrollable page with overflow-x clip body is not clipped","status":"passed","title":"below-the-fold text on a scrollable page with overflow-x clip body is not clipped","duration":753.2877399999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-020 text-glyphs-clipped measures against clip ancestor not viewport"],"fullName":"UI-020 text-glyphs-clipped measures against clip ancestor not viewport off-screen skip link with no clip ancestor is not clipped","status":"passed","title":"off-screen skip link with no clip ancestor is not clipped","duration":710.7621550000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-020 text-glyphs-clipped measures against clip ancestor not viewport"],"fullName":"UI-020 text-glyphs-clipped measures against clip ancestor not viewport screen-reader-only 1x1 overflow hidden box is not clipped","status":"passed","title":"screen-reader-only 1x1 overflow hidden box is not clipped","duration":704.3741719999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-020 text-glyphs-clipped measures against clip ancestor not viewport"],"fullName":"UI-020 text-glyphs-clipped measures against clip ancestor not viewport genuine overflow hidden wrapper with extending text still reports clipped glyphs","status":"passed","title":"genuine overflow hidden wrapper with extending text still reports clipped glyphs","duration":759.7139629999983,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-020 text-glyphs-clipped measures against clip ancestor not viewport"],"fullName":"UI-020 text-glyphs-clipped measures against clip ancestor not viewport genuine overflow hidden wrapper below the fold still reports clipped glyphs","status":"passed","title":"genuine overflow hidden wrapper below the fold still reports clipped glyphs","duration":779.8112740000015,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap evidence records position and svg context"],"fullName":"UI-022 unexpected-overlap evidence records position and svg context fixed overlap participant records positionB fixed and viewportPinnedB true","status":"passed","title":"fixed overlap participant records positionB fixed and viewportPinnedB true","duration":98.1587899999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap evidence records position and svg context"],"fullName":"UI-022 unexpected-overlap evidence records position and svg context two shapes inside one svg are excluded before sibling text pairing","status":"passed","title":"two shapes inside one svg are excluded before sibling text pairing","duration":113.85298400000102,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap evidence records position and svg context"],"fullName":"UI-022 unexpected-overlap evidence records position and svg context two overlapping panels in separate subtrees record sharedSvgRoot false","status":"passed","title":"two overlapping panels in separate subtrees record sharedSvgRoot false","duration":115.87656600000082,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-022 a viewport-pinned element over page content is not an unexpected overlap","status":"passed","title":"UI-022 a viewport-pinned element over page content is not an unexpected overlap","duration":756.3283950000005,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-022 two shapes inside one svg are not an unexpected overlap","status":"passed","title":"UI-022 two shapes inside one svg are not an unexpected overlap","duration":712.9692869999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-022 two in-flow elements with non-overlapping text stay silent","status":"passed","title":"UI-022 two in-flow elements with non-overlapping text stay silent","duration":739.0612450000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-022 an absolutely-positioned non-text overlay stays silent","status":"passed","title":"UI-022 an absolutely-positioned non-text overlay stays silent","duration":727.6762520000011,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-022 an svg shape overlapping text stays silent","status":"passed","title":"UI-022 an svg shape overlapping text stays silent","duration":700.6774640000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-A01 UI-022 decorative absolute layer behind content stays silent","status":"passed","title":"UI-A01 UI-022 decorative absolute layer behind content stays silent","duration":727.2262719999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-022 unexpected-overlap classification suppresses proven non-defects"],"fullName":"UI-022 unexpected-overlap classification suppresses proven non-defects UI-A01 UI-022 opaque text-over-text overlap still reports","status":"passed","title":"UI-A01 UI-022 opaque text-over-text overlap still reports","duration":744.1769319999985,"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":118.88490000000093,"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":195.6538099999998,"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":165.32907799999884,"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":815.9407520000022,"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":724.1147329999985,"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":744.1097740000005,"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":723.8509809999996,"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":764.382705,"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":708.1740370000007,"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":740.1309519999995,"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":723.368355999999,"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":726.448682000002,"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":707.1730270000007,"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":792.697157999999,"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":781.7351390000003,"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":755.717055000001,"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":757.0000959999998,"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":730.3780909999987,"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":1539.4322610000017,"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":742.6263299999991,"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":783.1069839999982,"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":1576.005557999997,"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":807.4333880000049,"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":742.7190570000021,"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":745.6285570000036,"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.5905069999935222,"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.34402300000510877,"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":782.6499499999991,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783668675,"endTime":1785783706234.65,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/geometry.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 derives exists, absent, and equals checks in contract order","status":"passed","title":"UI-057 derives exists, absent, and equals checks in contract order","duration":2.426257000000021,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 distinguishes JSON-pointer presence from an absent sparse array entry","status":"passed","title":"UI-057 distinguishes JSON-pointer presence from an absent sparse array entry","duration":0.37686800000000176,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 executes semantic actions and settles in declared order","status":"passed","title":"UI-057 executes semantic actions and settles in declared order","duration":0.660746999999958,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence DATA-A14 UI-A13 aggregates all unproven journey obligations into one deterministic coverage event","status":"passed","title":"DATA-A14 UI-A13 aggregates all unproven journey obligations into one deterministic coverage event","duration":0.37103000000001884,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-A13 preserves first declared obligation order while deduplicating coverage witnesses","status":"passed","title":"UI-A13 preserves first declared obligation order while deduplicating coverage witnesses","duration":0.20574800000002824,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 snapshots all dimensions as deterministic copied JSON observations","status":"passed","title":"UI-057 snapshots all dimensions as deterministic copied JSON observations","duration":0.695447999999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-A13 aggregates newly unavailable after-action dimensions with missing exact oracle refs","status":"passed","title":"UI-A13 aggregates newly unavailable after-action dimensions with missing exact oracle refs","duration":7.899718000000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 detaches capture listeners after use","status":"passed","title":"UI-057 detaches capture listeners after use","duration":0.4056399999999485,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 captures all eight normalized dimensions in stable order without outer HTML","status":"passed","title":"UI-057 captures all eight normalized dimensions in stable order without outer HTML","duration":153.209739,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence UI-057 fails closed when observed DOM IDs are duplicated","status":"passed","title":"UI-057 fails closed when observed DOM IDs are duplicated","duration":125.63017200000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / UI-A13 declared journey evidence"],"fullName":"UI-057 / UI-A13 declared journey evidence FEAT-A17 passes reviewed stores through runDeclaredJourney for confirmed browser mismatches","status":"passed","title":"FEAT-A17 passes reviewed stores through runDeclaredJourney for confirmed browser mismatches","duration":21.793477000000053,"failureMessages":[],"meta":{},"tags":[]},{"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":336.9152690000001,"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":348.9741120000001,"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":454.22867299999984,"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":479.53941699999973,"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":373.98322899999994,"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":355.71107699999993,"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":332.3905209999998,"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":320.711268,"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":195.19579300000032,"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":184.80644500000017,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A14 preserves byte-identical probe behavior when discovery is absent or disabled","status":"passed","title":"UI-A14 preserves byte-identical probe behavior when discovery is absent or disabled","duration":575.0924250000007,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A14 discovers live native, ARIA, shadow, frame, and Tab controls deterministically","status":"passed","title":"UI-A14 discovers live native, ARIA, shadow, frame, and Tab controls deterministically","duration":1135.2880930000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A14 emits one coverage outcome when discovery finds no activatable controls","status":"passed","title":"UI-A14 emits one coverage outcome when discovery finds no activatable controls","duration":290.2270549999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A14 declared actions keep the probe route when discovery is enabled","status":"passed","title":"UI-A14 declared actions keep the probe route when discovery is enabled","duration":317.73671099999956,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A09 uninstrumented active detector cells report coverage incomplete without a fixture probe","status":"passed","title":"UI-A09 uninstrumented active detector cells report coverage incomplete without a fixture probe","duration":716.0401089999996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A09 interaction continuity anchors"],"fullName":"UI-A09 interaction continuity anchors UI-A13 journey-handled cells skip the matrix while every other cell still reports coverage","status":"passed","title":"UI-A13 journey-handled cells skip the matrix while every other cell still reports coverage","duration":316.20579,"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":412.5220789999994,"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":279.4040650000006,"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":306.7141040000006,"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":167.77908799999932,"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":296.00823299999865,"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":313.41420599999947,"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":355.6480139999985,"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":320.0176420000007,"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":320.21995699999934,"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":179.44989300000088,"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":448.53362500000003,"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":731.4013750000013,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783750916,"endTime":1785783762094.4014,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/interaction.test.ts"},{"assertionResults":[{"ancestorTitles":["UI-030 summary states the defect in plain language"],"fullName":"UI-030 summary states the defect in plain language names the most affected element without implying it caused the jump","status":"passed","title":"names the most affected element without implying it caused the jump","duration":2.3990579999999966,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-030 summary states the defect in plain language"],"fullName":"UI-030 summary states the defect in plain language still reads as a sentence when no shift source was recorded","status":"passed","title":"still reads as a sentence when no shift source was recorded","duration":0.2972899999999754,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-030 summary states the defect in plain language"],"fullName":"UI-030 summary states the defect in plain language uses union impact area when equal shifts identify the most affected element","status":"passed","title":"uses union impact area when equal shifts identify the most affected element","duration":0.3868319999999983,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783807274,"endTime":1785783807277.3867,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/layout-summary.test.ts"},{"assertionResults":[{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution records sources with locator and integer-rounded rects","status":"passed","title":"records sources with locator and integer-rounded rects","duration":32.053286999999955,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution records sources as an empty array when entry.sources is absent","status":"passed","title":"records sources as an empty array when entry.sources is absent","duration":9.001461000000063,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution uses <detached> for null, non-Element, and disconnected nodes","status":"passed","title":"uses <detached> for null, non-Element, and disconnected nodes","duration":3.9559249999999793,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution omits sources missing currentRect without throwing from the observer callback","status":"passed","title":"omits sources missing currentRect without throwing from the observer callback","duration":6.660080999999991,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution records <detached> when locator resolution throws for one source","status":"passed","title":"records <detached> when locator resolution throws for one source","duration":2.307015999999976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution re-establishes __invLayoutShifts when the global is cleared between deliveries","status":"passed","title":"re-establishes __invLayoutShifts when the global is cleared between deliveries","duration":1.7603710000000774,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution ships as an expression without a trailing semicolon","status":"passed","title":"ships as an expression without a trailing semicolon","duration":4.679787000000033,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["layout-shift observer attribution"],"fullName":"layout-shift observer attribution caps sources at five per layout-shift entry","status":"passed","title":"caps sources at five per layout-shift entry","duration":2.5607669999999416,"failureMessages":[],"meta":{},"tags":[]},{"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":508.45207200000004,"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":414.9547739999998,"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":615.8134599999998,"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":586.5557129999997,"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":1177.445517,"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":1210.7777159999996,"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":514.6134950000005,"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":644.510378,"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":1141.5173479999994,"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":1105.3388640000012,"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":1047.5139920000001,"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":1078.5254769999992,"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":999.8664570000001,"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":1143.7916489999989,"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":471.3356309999999,"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":540.5943919999991,"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":1128.5342249999994,"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":464.8577669999995,"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":555.4516430000003,"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":1024.7547779999986,"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":2166.549812000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783731805,"endTime":1785783750410.5498,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/layout.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-072 matrix partial evidence"],"fullName":"CLI-072 matrix partial evidence CLI-072 settle timeout preserves partial evidence artifact on harness outcome","status":"passed","title":"CLI-072 settle timeout preserves partial evidence artifact on harness outcome","duration":544.057661,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-072 matrix partial evidence"],"fullName":"CLI-072 matrix partial evidence CLI-072 without artifactRunDir keeps harness outcome and empty artifactRefs","status":"passed","title":"CLI-072 without artifactRunDir keeps harness outcome and empty artifactRefs","duration":456.196966,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783805115,"endTime":1785783806115.197,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/matrix-partial-evidence.test.ts"},{"assertionResults":[{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 single fixed bottom bar with ample scroll and target 4px under bar is reachable","status":"passed","title":"UI-021 single fixed bottom bar with ample scroll and target 4px under bar is reachable","duration":1.778365000000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 fixed top and bottom bars with scroll range too small for the gap is not reachable","status":"passed","title":"UI-021 fixed top and bottom bars with scroll range too small for the gap is not reachable","duration":0.21970799999999713,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 fixed top and bottom bars with ample scroll and gap wider than target is reachable","status":"passed","title":"UI-021 fixed top and bottom bars with ample scroll and gap wider than target is reachable","duration":0.25264699999999607,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 non-empty all-fixed occluders with empty fixedOccluders is contradictory and not reachable","status":"passed","title":"UI-021 non-empty all-fixed occluders with empty fixedOccluders is contradictory and not reachable","duration":0.19877900000000182,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 non-fixed occluder on a long scrollable page is not reachable","status":"passed","title":"UI-021 non-fixed occluder on a long scrollable page is not reachable","duration":0.26650399999999763,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 mixed fixed and non-fixed occluders is not reachable","status":"passed","title":"UI-021 mixed fixed and non-fixed occluders is not reachable","duration":0.17775700000001393,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 target taller than viewport is not reachable","status":"passed","title":"UI-021 target taller than viewport is not reachable","duration":0.2374160000000245,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 non-scrollable page with fixed occluder overlap is not reachable","status":"passed","title":"UI-021 non-scrollable page with fixed occluder overlap is not reachable","duration":0.20548000000002276,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 fixed and sticky targets are not reachable","status":"passed","title":"UI-021 fixed and sticky targets are not reachable","duration":0.2515500000000088,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 target outside root scroller is not reachable","status":"passed","title":"UI-021 target outside root scroller is not reachable","duration":0.24636099999997896,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 overflow-x clip ancestor does not block reachability when target stays in root scroller","status":"passed","title":"UI-021 overflow-x clip ancestor does not block reachability when target stays in root scroller","duration":0.14427299999999832,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 fixed occluder without x-axis overlap is reachable","status":"passed","title":"UI-021 fixed occluder without x-axis overlap is reachable","duration":0.13314700000000812,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 static hit occluder inside viewport-pinned wrapper is reachable","status":"passed","title":"UI-021 static hit occluder inside viewport-pinned wrapper is reachable","duration":0.12450300000000425,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 non-viewport-pinned occluder is not reachable regardless of position","status":"passed","title":"UI-021 non-viewport-pinned occluder is not reachable regardless of position","duration":0.18676099999998996,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["isScrollReachable"],"fullName":"isScrollReachable UI-021 pinned hit occluder larger than fixedOccluders participates in exclusion math","status":"passed","title":"UI-021 pinned hit occluder larger than fixedOccluders participates in exclusion math","duration":0.11536600000002295,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["detectInteractiveTargetOccluded"],"fullName":"detectInteractiveTargetOccluded UI-021 suppresses findings when scroll reachability clears occlusion","status":"passed","title":"UI-021 suppresses findings when scroll reachability clears occlusion","duration":0.791877999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["detectInteractiveTargetOccluded"],"fullName":"detectInteractiveTargetOccluded UI-021 keeps findings when occlusion is not scroll-reachable","status":"passed","title":"UI-021 keeps findings when occlusion is not scroll-reachable","duration":0.30804699999998775,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783806987,"endTime":1785783806993.308,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/ui-detectors/test/reachability.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":274.68388300000004,"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":197.98673999999994,"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":199.20980899999995,"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":199.46206099999995,"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":229.6021850000002,"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":214.67065200000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783801467,"endTime":1785783802782.6707,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":733.8503090000002,"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":700.7710339999999,"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":679.7671670000002,"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":729.1654350000003,"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":716.2231919999999,"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":753.3438589999996,"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":717.6809389999999,"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":708.5736080000006,"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":708.5001330000005,"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":678.674419,"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":737.1197940000002,"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":751.5495109999993,"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":416.47046500000033,"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":155.85922000000028,"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":695.138003,"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":680.1182289999997,"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":681.7404900000001,"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":685.6444940000001,"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":712.4442909999998,"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":735.9577140000001,"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":687.8001439999989,"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":683.2009020000005,"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":683.1357530000005,"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":366.73493899999994,"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":732.9683119999991,"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":723.617295,"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":738.9471249999988,"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":718.5407579999992,"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":692.0600809999996,"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":1385.967052,"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":710.4440990000003,"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":683.9850320000005,"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":712.4683870000008,"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.8933739999993122,"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":701.8079020000005,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783706712,"endTime":1785783730314.8079,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1470.345228,"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":696.0456250000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783798676,"endTime":1785783800843.0457,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":271.66254599999996,"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":214.16265499999997,"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":203.73421900000005,"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":211.96380399999998,"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":189.54472199999987,"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":189.41369199999986,"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":338.1667209999998,"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":297.70298100000036,"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":303.03073200000017,"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":220.85844499999985,"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":204.02430099999992,"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":279.95926999999983,"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":148.50204600000006,"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":149.84517099999994,"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":302.7616229999999,"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":147.47579600000063,"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":162.9586020000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-053 WCAG 2.5.8 target size"],"fullName":"UI-053 WCAG 2.5.8 target size UI-053 reports undersized targets only when the 24px spacing exception does not apply","status":"passed","title":"UI-053 reports undersized targets only when the 24px spacing exception does not apply","duration":187.69465599999967,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-053 WCAG 2.5.8 target size"],"fullName":"UI-053 WCAG 2.5.8 target size UI-053 treats a target clipped to zero painted area as no target at all","status":"passed","title":"UI-053 treats a target clipped to zero painted area as no target at all","duration":183.09350499999982,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-053 WCAG 2.5.8 target size"],"fullName":"UI-053 WCAG 2.5.8 target size UI-053 names the neighbor that defeated the spacing exception","status":"passed","title":"UI-053 names the neighbor that defeated the spacing exception","duration":197.1723320000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783790766,"endTime":1785783795171.1724,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":5.1836529999999925,"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.249149999999986,"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":2.0615099999999984,"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.5024970000000053,"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.1934470000000204,"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":2.6885289999999884,"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.8240770000000168,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783806663,"endTime":1785783806678.824,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":76.60754499999996,"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":44.00591599999996,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783333769,"endTime":1785783333890.0059,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":12.290327999999988,"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.084807000000012,"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.5624449999999683,"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":3.0202580000000125,"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.3047389999999837,"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":1.9651590000000283,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783334445,"endTime":1785783334470.965,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":14.477311000000043,"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":2.4663280000000327,"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":2.454878000000008,"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.8530620000000226,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783333828,"endTime":1785783333850.853,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.383454000000029,"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":3.1011230000000296,"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":3.3765809999999874,"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.067724999999996,"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.688605999999993,"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.421447999999998,"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":1.9423329999999623,"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":4.5429189999999835,"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.3291329999999562,"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.4009599999999978,"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":4.587403999999992,"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.525020999999981,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783333498,"endTime":1785783333540.525,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":10.413440999999978,"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.779313000000002,"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.4351990000000114,"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.9291430000000105,"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.486182000000042,"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.563338999999985,"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.4501060000000052,"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":1.5264349999999922,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783334784,"endTime":1785783334809.5264,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":13.142219000000011,"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.811835999999971,"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.5939369999999826,"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.1856389999999806,"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.43004099999996,"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.5034560000000283,"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":1.9662890000000175,"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.441988999999978,"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.3428799999999796,"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.6187770000000228,"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":2.828444999999988,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783334126,"endTime":1785783334164.8284,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":11.974688000000015,"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":3.024501999999984,"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.058127000000013,"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":2.8555600000000254,"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":2.111980000000017,"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":1.9791999999999916,"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.6580789999999865,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783334480,"endTime":1785783334508.658,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":2.8161329999999793,"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.2905760000000157,"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":1.0193280000000016,"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.33910000000000196,"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.4092870000000062,"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.27522899999999595,"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.7169460000000072,"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.27554900000001226,"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.3236519999999814,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783335228,"endTime":1785783335236.3237,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.024969999999996,"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":5.344874000000004,"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.0947780000000193,"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.0919250000000034,"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.3186100000000351,"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.085374999999999,"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.4411499999999933,"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":2.116782999999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783334173,"endTime":1785783334200.1167,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":12.78377800000004,"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":5.274211999999977,"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.170011000000045,"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.468186000000003,"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.705362999999977,"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":2.063050999999973,"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":2.0306400000000053,"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":1.920808999999963,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783335037,"endTime":1785783335068.921,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":13.893920999999978,"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":2.7686120000000187,"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.0229760000000283,"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":1.931648999999993,"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.3891920000000368,"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.4819820000000163,"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.2305839999999648,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["runner fail-closed validation"],"fullName":"runner fail-closed validation rejects empty runId","status":"passed","title":"rejects empty runId","duration":2.2442439999999806,"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.2854399999999941,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783334740,"endTime":1785783334770.2854,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.043457000000018,"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.5103249999999946,"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":0.6575070000000096,"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.290808999999996,"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.42884599999999296,"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.26278100000001814,"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.48490199999997685,"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.3040100000000052,"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":0.45964999999998213,"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.4362130000000093,"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.276204000000007,"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.4223209999999824,"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.32204699999999775,"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.3504259999999988,"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.21820799999997575,"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":0.26295999999999253,"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.3124129999999923,"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":0.9097140000000081,"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.3436749999999904,"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.29485400000001505,"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.32138099999997394,"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.33378199999998515,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783335041,"endTime":1785783335055.3337,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":386.542997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-084 reviewable browser cells"],"fullName":"REPORT-084 reviewable browser cells REPORT-A25 indexes every persisted cell and preserves redacted interaction control descriptors","status":"passed","title":"REPORT-A25 indexes every persisted cell and preserves redacted interaction control descriptors","duration":374.741257,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-084 reviewable browser cells"],"fullName":"REPORT-084 reviewable browser cells REPORT-A25 rejects a browser finding that references an unknown cell","status":"passed","title":"REPORT-A25 rejects a browser finding that references an unknown cell","duration":1.2900669999999081,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-084 reviewable browser cells"],"fullName":"REPORT-084 reviewable browser cells REPORT-A25 rejects a coverage outcome that references an unknown cell","status":"passed","title":"REPORT-A25 rejects a coverage outcome that references an unknown cell","duration":2.402963999999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-084 reviewable browser cells"],"fullName":"REPORT-084 reviewable browser cells REPORT-A25 rejects an accepted finding that references an unknown cell","status":"passed","title":"REPORT-A25 rejects an accepted finding that references an unknown cell","duration":2.6296970000000783,"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":377.35537899999986,"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":369.686467,"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":394.6867229999998,"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":378.0267859999999,"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":380.3838599999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783441941,"endTime":1785783444609.3838,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/build.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-083 layout-shift findings carry a highlight region"],"fullName":"REPORT-083 layout-shift findings carry a highlight region REPORT-A24 converts viewport shift boxes to document coordinates and image-width units","status":"passed","title":"REPORT-A24 converts viewport shift boxes to document coordinates and image-width units","duration":4.266511000000008,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-083 layout-shift findings carry a highlight region"],"fullName":"REPORT-083 layout-shift findings carry a highlight region REPORT-A24 ranks equal shifts by union impact area","status":"passed","title":"REPORT-A24 ranks equal shifts by union impact area","duration":0.3477399999999875,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-083 layout-shift findings carry a highlight region"],"fullName":"REPORT-083 layout-shift findings carry a highlight region REPORT-A24 marks every shift source separately, worst contributor first","status":"passed","title":"REPORT-A24 marks every shift source separately, worst contributor first","duration":1.3677579999999807,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-083 layout-shift findings carry a highlight region"],"fullName":"REPORT-083 layout-shift findings carry a highlight region REPORT-A24 ignores shift sources whose recorded boxes carry no area","status":"passed","title":"REPORT-A24 ignores shift sources whose recorded boxes carry no area","duration":0.31107800000000907,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783456618,"endTime":1785783456624.311,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/finding-markers.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-076 annotated overlay never occupies the original slot"],"fullName":"REPORT-076 annotated overlay never occupies the original slot REPORT-076 selects the PNG original even when the annotated SVG sorts first","status":"passed","title":"REPORT-076 selects the PNG original even when the annotated SVG sorts first","duration":2.4480350000000044,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-076 annotated overlay never occupies the original slot"],"fullName":"REPORT-076 annotated overlay never occupies the original slot REPORT-076 reports no original when only the annotated overlay is present","status":"passed","title":"REPORT-076 reports no original when only the annotated overlay is present","duration":0.25297700000001555,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-076 build and client agree on which artifacts are screenshots"],"fullName":"REPORT-076 build and client agree on which artifacts are screenshots REPORT-076 renders the content-addressed cell screenshot as the original","status":"passed","title":"REPORT-076 renders the content-addressed cell screenshot as the original","duration":0.220926999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-076 build and client agree on which artifacts are screenshots"],"fullName":"REPORT-076 build and client agree on which artifacts are screenshots REPORT-076 gives every build-declared screenshot an image slot in the client","status":"passed","title":"REPORT-076 gives every build-declared screenshot an image slot in the client","duration":0.46564699999998993,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783456973,"endTime":1785783456976.4656,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/finding-presentation-artifacts.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.4776789999999949,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-084 coverage presentation"],"fullName":"REPORT-084 coverage presentation REPORT-A25 renders indexed browser context and interaction descriptor","status":"passed","title":"REPORT-A25 renders indexed browser context and interaction descriptor","duration":0.676275000000004,"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.2568960000000118,"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.686684000000014,"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.6914409999999975,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783456474,"endTime":1785783456481.6914,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.591469999999987,"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":4.827278000000007,"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.327676000000025,"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.257829999999984,"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":4.793664000000007,"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":2.2361760000000004,"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.78579400000001,"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":10.461027000000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783455818,"endTime":1785783455867.461,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.786906000000016,"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":1.2595299999999838,"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.43737200000001053,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783456829,"endTime":1785783456833.4373,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.797343000000012,"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.2304460000000006,"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.910918000000009,"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.670986999999997,"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.294195000000002,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783456273,"endTime":1785783456297.2942,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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 refuses to start on a report directory that does not exist","status":"passed","title":"ARC-060 / REPORT-A07 refuses to start on a report directory that does not exist","duration":3.279785000000004,"failureMessages":[],"meta":{},"tags":[]},{"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":29.015152999999998,"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":4.292658999999986,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783456065,"endTime":1785783456101.2927,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/security-regression.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-063 served styling survives the response CSP"],"fullName":"REPORT-063 served styling survives the response CSP delivers the stylesheet through a source the response CSP permits","status":"passed","title":"delivers the stylesheet through a source the response CSP permits","duration":32.104318000000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-063 served styling survives the response CSP"],"fullName":"REPORT-063 served styling survives the response CSP styles the findings list, which is the report landing screen","status":"passed","title":"styles the findings list, which is the report landing screen","duration":8.640511000000004,"failureMessages":[],"meta":{},"tags":[]},{"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":2.1557630000000074,"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.001632999999998,"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":2.9779489999999953,"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":3.8101070000000163,"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.985848999999973,"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.465020999999979,"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":3.8537090000000376,"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":2.946776,"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.2574490000000083,"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.1346599999999967,"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.0454490000000192,"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":0.9909099999999853,"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.2470109999999863,"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.4611919999999827,"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.4399849999999788,"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":3.617288999999971,"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":2.324217000000033,"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":2.4624019999999973,"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":0.9428639999999859,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783455555,"endTime":1785783455645.9429,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":365.682451,"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.5474570000000085,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783454974,"endTime":1785783455340.5474,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":3279.7128549999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A12 report accessibility E2E"],"fullName":"REPORT-A12 report accessibility E2E REPORT-A12 keeps the findings list inside the viewport when a filter option value is long","status":"passed","title":"REPORT-A12 keeps the findings list inside the viewport when a filter option value is long","duration":1191.653354,"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":2762.7628969999996,"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":2653.4188250000007,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783398217,"endTime":1785783408104.419,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1559.681959,"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":983.2675729999999,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783448402,"endTime":1785783450945.2676,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1883.4813009999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783451361,"endTime":1785783453244.4812,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1656.1300619999997,"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":1129.051857,"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":800.6680379999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783438177,"endTime":1785783441763.668,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/e2e/finalize.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A01 geometry marker placement"],"fullName":"REPORT-A01 geometry marker placement REPORT-A01 REPORT-A16 geometry fixture marker lands on clipped pixels within tolerance","status":"passed","title":"REPORT-A01 REPORT-A16 geometry fixture marker lands on clipped pixels within tolerance","duration":1525.5324719999999,"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":188.664579,"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":175.92187699999977,"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":1050.4818910000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783445043,"endTime":1785783447984.482,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/e2e/finding-view.spec.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A21 gallery evidence thumbnails"],"fullName":"REPORT-A21 gallery evidence thumbnails REPORT-080 REPORT-A21 renders a screenshot thumbnail per gallery card and states why one is absent","status":"passed","title":"REPORT-080 REPORT-A21 renders a screenshot thumbnail per gallery card and states why one is absent","duration":1522.922454,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A23 gallery highlighted thumbnails"],"fullName":"REPORT-A23 gallery highlighted thumbnails REPORT-082 REPORT-A23 frames the gallery thumbnail on the measured region with its highlight overlay","status":"passed","title":"REPORT-082 REPORT-A23 frames the gallery thumbnail on the measured region with its highlight overlay","duration":1090.673251,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A24 gallery thumbnails for findings without a measured rectangle"],"fullName":"REPORT-A24 gallery thumbnails for findings without a measured rectangle REPORT-083 REPORT-A24 highlights the shifted region and labels a whole-page context card","status":"passed","title":"REPORT-083 REPORT-A24 highlights the shifted region and labels a whole-page context card","duration":1071.659145,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A22 gallery quick decisions"],"fullName":"REPORT-A22 gallery quick decisions REPORT-081 REPORT-A22 records a per-finding verdict from the gallery without a batch confirmation","status":"passed","title":"REPORT-081 REPORT-A22 records a per-finding verdict from the gallery without a batch confirmation","duration":1161.0556860000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A25 coverage gap filtering and grouping"],"fullName":"REPORT-A25 coverage gap filtering and grouping REPORT-A25 filters coverage gaps without filtering findings and groups deterministically","status":"passed","title":"REPORT-A25 filters coverage gaps without filtering findings and groups deterministically","duration":1026.9456459999992,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783417274,"endTime":1785783423147.9456,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/report/test/e2e/gallery.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":607.464948,"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":30.007380000000126,"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":194.99658299999987,"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":11.007769999999937,"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":175.38559099999998,"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":184.47962599999983,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783453664,"endTime":1785783454868.4797,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1556.057424,"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":1140.9611900000002,"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":2139.148425,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783423597,"endTime":1785783428433.1484,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1554.840337,"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":1075.0469370000003,"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":1104.9889400000002,"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":1227.6719190000003,"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":1312.560426,"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":1045.552855,"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":977.003608,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783408550,"endTime":1785783416848.0037,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1567.641387,"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":1387.116351,"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":851.3772530000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783433941,"endTime":1785783437747.3772,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1678.631851,"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":139.23322899999994,"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":124.77576399999998,"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":940.0235720000001,"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":971.7636429999998,"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":810.9875240000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783428856,"endTime":1785783433520.9875,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.5688570000000084,"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.23895600000000172,"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.22540200000000254,"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.3325930000000028,"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.33483799999999064,"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":0.7165800000000218,"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.5326239999999984,"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.438666000000012,"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.7675890000000152,"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.47563900000000103,"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.48268999999999096,"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.26679199999998104,"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.9169049999999856,"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.467000999999982,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783333015,"endTime":1785783333024.467,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.691534999999988,"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.442096000000049,"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.6427460000000451,"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.6254969999999958,"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.6539440000000241,"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.5047930000000065,"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.8699020000000246,"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.2175060000000144,"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.714605000000006,"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.2081039999999916,"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":2.2295090000000073,"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.5704690000000028,"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":2.838544000000013,"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.49710499999997637,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783332810,"endTime":1785783332837.497,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":2.0391150000000096,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783333114,"endTime":1785783333116.039,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":8.748100000000022,"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.6433919999999773,"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":0.7731540000000052,"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.5165159999999958,"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.4132979999999975,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783332938,"endTime":1785783332950.4133,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.238760999999982,"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.0232310000000098,"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.9173260000000028,"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.31531700000005003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["DATA-010 MatrixCell"],"fullName":"DATA-010 MatrixCell DATA-075 preserves ordered declared journey refs without requiring legacy actions","status":"passed","title":"DATA-075 preserves ordered declared journey refs without requiring legacy actions","duration":2.043346999999983,"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.7800280000000157,"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":1.1034889999999677,"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.4627020000000357,"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.3629619999999818,"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.1507310000000075,"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.1985860000000343,"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.7480750000000285,"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.3115500000000111,"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.5930920000000128,"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":0.9820589999999925,"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.4633400000000165,"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.44040800000004765,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783332667,"endTime":1785783332692.4404,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":85.07013899999998,"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":138.22271400000005,"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":32.187160000000006,"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":198.86787599999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331950,"endTime":1785783332404.868,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":152.243426,"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":149.73168000000004,"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":80.96876499999996,"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":53.98878400000001,"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":53.07390399999997,"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":73.166202,"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.0904940000000352,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783331974,"endTime":1785783332540.0906,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/schema/test/property/migrate.prop.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A18 artifact identity"],"fullName":"REPORT-A18 artifact identity REPORT-A18 re-persisting a cell with changed bytes never reuses the earlier artifact","status":"passed","title":"REPORT-A18 re-persisting a cell with changed bytes never reuses the earlier artifact","duration":7.692363999999998,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A18 artifact identity"],"fullName":"REPORT-A18 artifact identity REPORT-A18 re-persisting identical bytes is idempotent","status":"passed","title":"REPORT-A18 re-persisting identical bytes is idempotent","duration":2.3241039999999913,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783397018,"endTime":1785783397027.3242,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/playwright/test/artifacts.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":707.133508,"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":1258.4124189999998,"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":55.11676499999976,"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.97099500000013,"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":2.8399199999998928,"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":2.516352999999981,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783390993,"endTime":1785783393020.5164,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.646351999999979,"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":6.899396000000024,"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.329901000000007,"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.549445999999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A07 original screenshot byte stability"],"fullName":"UI-A07 original screenshot byte stability UI-A07 never rewrites persisted screenshot bytes and refs changed bytes separately","status":"passed","title":"UI-A07 never rewrites persisted screenshot bytes and refs changed bytes separately","duration":3.8044140000000084,"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":219.725412,"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":642.941947,"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":162.41418099999987,"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.6199900000001435,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783393439,"endTime":1785783394483.6199,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/playwright/test/capture.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-079 cell original artifact integrity"],"fullName":"REPORT-079 cell original artifact integrity REPORT-A19 keeps each capture of a shared cell addressable by its own bytes","status":"passed","title":"REPORT-A19 keeps each capture of a shared cell addressable by its own bytes","duration":215.77083800000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783396013,"endTime":1785783396228.7708,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/playwright/test/cell-original.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":1364.731376,"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":1317.519803,"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":1304.0382359999999,"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":698.9069259999997,"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":314.1229519999997,"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":674.9182469999996,"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":422.4581069999995,"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":115.40394800000013,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783381089,"endTime":1785783387302.404,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":1406.0874749999998,"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":1299.95903,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783387871,"endTime":1785783390576.959,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.5247599999999863,"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.30959299999997825,"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.225488999999982,"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.7181270000000097,"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.8825569999999914,"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 REPORT-A25 carries the human-readable route pattern beside the opaque route id without re-keying cells","status":"passed","title":"REPORT-A25 carries the human-readable route pattern beside the opaque route id without re-keying cells","duration":0.42638399999998455,"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.354818999999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection selects exact route and optional role matches in declaration order","status":"passed","title":"selects exact route and optional role matches in declaration order","duration":0.6590270000000089,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection keeps passive cells unchanged and includes selected journey refs in identity","status":"passed","title":"keeps passive cells unchanged and includes selected journey refs in identity","duration":2.0131140000000016,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection selects journey only on declared viewport names","status":"passed","title":"selects journey only on declared viewport names","duration":0.4163199999999847,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection without appliesTo.viewports keeps journey on every configured viewport","status":"passed","title":"without appliesTo.viewports keeps journey on every configured viewport","duration":0.42405800000000227,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection rejects journey declarations naming an unconfigured viewport","status":"passed","title":"rejects journey declarations naming an unconfigured viewport","duration":0.5889099999999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection plans viewport-scoped journeys with stable unique cell ids","status":"passed","title":"plans viewport-scoped journeys with stable unique cell ids","duration":0.5011460000000056,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-057 / DATA-074 declared journey selection"],"fullName":"UI-057 / DATA-074 declared journey selection preserves each applicable journey across configured viewports","status":"passed","title":"preserves each applicable journey across configured viewports","duration":5.782326000000012,"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.575312999999994,"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.4116290000000049,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783396884,"endTime":1785783396909.4116,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/playwright/test/matrix.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-072 partial evidence artifacts"],"fullName":"CLI-072 partial evidence artifacts redactJsonPayload redacts secrets in canonical serialized JSON","status":"passed","title":"redactJsonPayload redacts secrets in canonical serialized JSON","duration":2.0084580000000045,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-072 partial evidence artifacts"],"fullName":"CLI-072 partial evidence artifacts writePartialEvidenceArtifact persists redacted partial evidence JSON","status":"passed","title":"writePartialEvidenceArtifact persists redacted partial evidence JSON","duration":4.7138690000000025,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783397142,"endTime":1785783397148.7139,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/playwright/test/partial-evidence.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":744.9358119999999,"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.4937489999999798,"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.506215999999995,"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.593605000000025,"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.3895919999999933,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-061 / CLI-022 redaction contract"],"fullName":"ARC-061 / CLI-022 redaction contract CLI-022 uses the configured replacement token when a rule supplies one","status":"passed","title":"CLI-022 uses the configured replacement token when a rule supplies one","duration":0.4837649999999485,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["ARC-061 / CLI-022 redaction contract"],"fullName":"ARC-061 / CLI-022 redaction contract CLI-022 rejects a blank replacement token","status":"passed","title":"CLI-022 rejects a blank replacement token","duration":0.3141120000000228,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783394893,"endTime":1785783395651.3142,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":137.91240599999998,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783396591,"endTime":1785783396728.9124,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/playwright/test/smoke.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI baseline scope selection"],"fullName":"CLI baseline scope selection parses repeatable baseline update scopes","status":"passed","title":"parses repeatable baseline update scopes","duration":3.1905290000000264,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI baseline scope selection"],"fullName":"CLI baseline scope selection rejects an invalid baseline update scope with verify-equivalent usage validation","status":"passed","title":"rejects an invalid baseline update scope with verify-equivalent usage validation","duration":0.8433699999999931,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI baseline scope selection"],"fullName":"CLI baseline scope selection parses baseline diff scopes","status":"passed","title":"parses baseline diff scopes","duration":0.41681800000003477,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI baseline scope selection"],"fullName":"CLI baseline scope selection runs baseline update with its requested ui scope","status":"passed","title":"runs baseline update with its requested ui scope","duration":582.272567,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783325307,"endTime":1785783325894.2725,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/baseline-command.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":125.18737900000002,"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":21.454881999999998,"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":13.065642000000025,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326212,"endTime":1785783326372.0657,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.440524000000039,"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.3498119999999858,"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":59.05530299999998,"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":0.951293000000021,"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":0.7103710000000092,"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":0.607881999999961,"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.7251959999999826,"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.5560249999999769,"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.5808319999999867,"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.5557319999999777,"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.5402369999999905,"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":21.25197700000001,"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":2.91269299999999,"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.9329720000000066,"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":19.026100999999983,"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.5076829999999859,"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.2390670000000341,"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.19803300000000945,"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":0.19105600000000322,"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.18515100000001894,"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.14654999999999063,"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.16920499999997674,"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":2.4873420000000124,"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":5.666807000000006,"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":2.1452830000000063,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326257,"endTime":1785783326386.1453,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/commands.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation UI-A14 accepts the opt-in interaction discovery kill switch","status":"passed","title":"UI-A14 accepts the opt-in interaction discovery kill switch","duration":16.796066999999994,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 accepts appliesTo.viewports and preserves it through parsing","status":"passed","title":"CLI-025 accepts appliesTo.viewports and preserves it through parsing","duration":4.499391000000003,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects appliesTo with non-string viewport entry","status":"passed","title":"CLI-025 rejects appliesTo with non-string viewport entry","duration":2.3084349999999745,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects appliesTo with empty viewport name","status":"passed","title":"CLI-025 rejects appliesTo with empty viewport name","duration":1.4742449999999963,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 accepts declared ui journeys without altering auth configuration","status":"passed","title":"CLI-025 accepts declared ui journeys without altering auth configuration","duration":2.3845759999999814,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects duplicate declaration id","status":"passed","title":"CLI-025 rejects duplicate declaration id","duration":1.346433999999988,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects empty routes","status":"passed","title":"CLI-025 rejects empty routes","duration":0.9143919999999639,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects duplicate routes","status":"passed","title":"CLI-025 rejects duplicate routes","duration":0.9624960000000442,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects duplicate roles","status":"passed","title":"CLI-025 rejects duplicate roles","duration":0.9302490000000034,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects blank adapter module","status":"passed","title":"CLI-025 rejects blank adapter module","duration":1.533143999999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects blank adapter export","status":"passed","title":"CLI-025 rejects blank adapter export","duration":1.7890390000000025,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects unknown journey fields and versions","status":"passed","title":"CLI-025 rejects unknown journey fields and versions","duration":1.5958410000000072,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects unknown journey fields and versions","status":"passed","title":"CLI-025 rejects unknown journey fields and versions","duration":0.9446670000000381,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation CLI-025 rejects unknown journey fields and versions","status":"passed","title":"CLI-025 rejects unknown journey fields and versions","duration":0.7700320000000147,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation UI-A10 preserves role-keyed auth adapter refs","status":"passed","title":"UI-A10 preserves role-keyed auth adapter refs","duration":1.1663320000000112,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation UI-A10 rejects unknown keys in auth adapter refs","status":"passed","title":"UI-A10 rejects unknown keys in auth adapter refs","duration":1.3857740000000263,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation UI-A10 rejects empty auth adapter module","status":"passed","title":"UI-A10 rejects empty auth adapter module","duration":1.4234149999999772,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-021 strict config validation"],"fullName":"CLI-021 strict config validation UI-A10 rejects empty auth adapter export","status":"passed","title":"UI-A10 rejects empty auth adapter export","duration":1.2725970000000189,"failureMessages":[],"meta":{},"tags":[]},{"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":4.187113000000011,"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":0.9408590000000459,"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.5136660000000006,"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":0.9034409999999866,"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":0.9462909999999738,"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.1619029999999952,"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.8546680000000038,"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.21686399999998685,"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.4029050000000325,"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":1.082653999999991,"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.803352000000018,"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.48924999999997,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783327087,"endTime":1785783327146.4893,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":455.08933,"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":669.7773360000001,"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":454.1803540000001,"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":215.355362,"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":204.62568899999997,"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":370.5480300000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783320686,"endTime":1785783323056.548,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/contracts.test.ts"},{"assertionResults":[{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet re-raises an accepted gap through main when its reason changes","status":"passed","title":"re-raises an accepted gap through main when its reason changes","duration":54.80022200000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet fails closed when the canonical baseline is absent","status":"passed","title":"fails closed when the canonical baseline is absent","duration":6.377781999999968,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet returns coverage-incomplete with the bootstrap remedy when a no-outcome run has no baseline","status":"passed","title":"returns coverage-incomplete with the bootstrap remedy when a no-outcome run has no baseline","duration":15.466778999999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet keeps a corrupt canonical baseline as a config error","status":"passed","title":"keeps a corrupt canonical baseline as a config error","duration":3.3071560000000204,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet initializes the missing canonical baseline only through baseline update","status":"passed","title":"initializes the missing canonical baseline only through baseline update","duration":8.225986999999975,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet uses persisted canonical decisions and baseline entries for an accepted coverage gap","status":"passed","title":"uses persisted canonical decisions and baseline entries for an accepted coverage gap","duration":12.874188000000004,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet does not let a detector acceptance suppress the same surface under another detector","status":"passed","title":"does not let a detector acceptance suppress the same surface under another detector","duration":18.362468999999976,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet does not let a surface acceptance suppress another surface under the same detector","status":"passed","title":"does not let a surface acceptance suppress another surface under the same detector","duration":21.12069200000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet keeps a new coverage gap coverage-incomplete","status":"passed","title":"keeps a new coverage gap coverage-incomplete","duration":0.9118100000000027,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet keeps coverage loss coverage-incomplete","status":"passed","title":"keeps coverage loss coverage-incomplete","duration":0.6409380000000056,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet re-raises an accepted gap when its capability profile changes","status":"passed","title":"re-raises an accepted gap when its capability profile changes","duration":0.9708760000000325,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet does not re-raise a CLI gap after unrelated capability catalogue growth","status":"passed","title":"does not re-raise a CLI gap after unrelated capability catalogue growth","duration":7.79682200000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 persisted coverage ratchet"],"fullName":"CLI-A18 persisted coverage ratchet parses legacy baseline/v1 entries without a capability profile as closed","status":"passed","title":"parses legacy baseline/v1 entries without a capability profile as closed","duration":0.4335280000000239,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326088,"endTime":1785783326239.4336,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/coverage-ratchet.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":27.858987999999954,"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":22.585184999999967,"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":5.0989190000000235,"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.997668000000033,"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":7.181626999999992,"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":4.394065000000012,"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":3.6817589999999996,"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":4.514331999999968,"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":9.46538499999997,"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":10.589039000000014,"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":5.653758000000039,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326731,"endTime":1785783326836.6538,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":213.13155300000003,"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":194.54940499999998,"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":204.12245199999995,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783324710,"endTime":1785783325322.1226,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":797.7836769999999,"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":207.2554849999999,"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":751.634757,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783321693,"endTime":1785783323449.6348,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":83.13788399999999,"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":81.34226400000011,"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.3926969999999983,"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":9.421526000000085,"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":12.543679999999995,"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.3411449999998695,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-026 journey exit propagation"],"fullName":"CLI-026 journey exit propagation adapter load boundary exit classification","status":"passed","title":"adapter load boundary exit classification","duration":3433.7947609999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-026 journey exit propagation"],"fullName":"CLI-026 journey exit propagation prepare boundary exit classification","status":"passed","title":"prepare boundary exit classification","duration":2744.0338550000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-026 journey exit propagation"],"fullName":"CLI-026 journey exit propagation inferred oracle boundary exit classification","status":"passed","title":"inferred oracle boundary exit classification","duration":3772.067535000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-026 journey exit propagation"],"fullName":"CLI-026 journey exit propagation confirmed oracle boundary exit classification","status":"passed","title":"confirmed oracle boundary exit classification","duration":3785.712205,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-026 journey exit propagation"],"fullName":"CLI-026 journey exit propagation unavailable coverage boundary exit classification","status":"passed","title":"unavailable coverage boundary exit classification","duration":2871.175319,"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":14.207422999999835,"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":4.466754000000947,"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":0.7155990000028396,"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.3993479999990086,"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":39.459452000002784,"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":40.94638499999928,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783304609,"endTime":1785783321509.9463,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":2.200875999999994,"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.27741899999998054,"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.18140500000001225,"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":0.17219700000001126,"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.17728299999998853,"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.149374000000023,"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.1398849999999925,"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.21993200000000002,"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.25574100000000044,"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.25350599999998735,"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":0.17998099999999795,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783327195,"endTime":1785783327200.2559,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/exit-status.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 rendered findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 rendered findings carry the cell original screenshot","duration":792.8331390000001,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 consistency findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 consistency findings carry the cell original screenshot","duration":1326.758054,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 relations findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 relations findings carry the cell original screenshot","duration":242.7654120000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 a11y findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 a11y findings carry the cell original screenshot","duration":423.28513599999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 assets findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 assets findings carry the cell original screenshot","duration":241.0208160000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 interaction findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 interaction findings carry the cell original screenshot","duration":346.7407109999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 layout findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 layout findings carry the cell original screenshot","duration":541.585384,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-078 non-geometry screenshot evidence"],"fullName":"REPORT-078 non-geometry screenshot evidence REPORT-A18 sweeps findings carry the cell original screenshot","status":"passed","title":"REPORT-A18 sweeps findings carry the cell original screenshot","duration":204.0870019999993,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783313085,"endTime":1785783317204.087,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/family-screenshot-artifacts.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":38.620416000000034,"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":15.996125000000006,"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.7803010000000086,"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":10.461505999999986,"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":14.637503000000038,"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":9.855225000000019,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-A18 known-impact hook coverage ratchet"],"fullName":"CLI-A18 known-impact hook coverage ratchet returns 4 for an unreviewed selected-surface coverage gap","status":"passed","title":"returns 4 for an unreviewed selected-surface coverage gap","duration":9.446802999999989,"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":11.015892999999949,"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":12.738764000000003,"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":32.780704000000014,"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":12.578715999999986,"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.4791969999999992,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783325688,"endTime":1785783325859.5786,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":4097.064005,"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":4134.578507,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783303945,"endTime":1785783312176.5786,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.09285699999998,"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.5896610000000351,"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":0.5022220000000175,"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.47193499999997357,"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.3496509999999944,"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.7831590000000119,"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.3547459999999774,"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":1.8707499999999868,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783327110,"endTime":1785783327134.8708,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":47572.217257,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783303824,"endTime":1785783351396.2173,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":8.517534000000012,"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":0.721983999999992,"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":2493.530255,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783323215,"endTime":1785783325717.5303,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":53.72813500000001,"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":48.65098800000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326738,"endTime":1785783326840.651,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/ratchet-cli.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-074 CLI report artifact re-materialization"],"fullName":"REPORT-074 CLI report artifact re-materialization REPORT-A14 copies real fixture images on initial and stored-run report materialization","status":"passed","title":"REPORT-A14 copies real fixture images on initial and stored-run report materialization","duration":1058.644069,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-074 CLI report artifact re-materialization"],"fullName":"REPORT-074 CLI report artifact re-materialization REPORT-A14 reports a run whose state directory was moved to another path","status":"passed","title":"REPORT-A14 reports a run whose state directory was moved to another path","duration":934.6761920000001,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783321483,"endTime":1785783323476.6763,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/report-artifacts.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":594.386204,"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-001 regenerates a report when the same verify runs twice","status":"passed","title":"REPORT-001 regenerates a report when the same verify runs twice","duration":639.92051,"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-001 retains no run record when report materialization fails","status":"passed","title":"REPORT-001 retains no run record when report materialization fails","duration":635.8882389999999,"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":241.89916600000015,"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 keeps the interactive report reachable until the process is stopped","status":"passed","title":"REPORT-003 keeps the interactive report reachable until the process is stopped","duration":642.7559120000001,"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":599.940842,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783317360,"endTime":1785783320714.941,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/report-flag.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-A18 stored run identity"],"fullName":"REPORT-A18 stored run identity REPORT-A18 keeps both instances when the same runId is stored with different records","status":"passed","title":"REPORT-A18 keeps both instances when the same runId is stored with different records","duration":33.79245199999997,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A18 stored run identity"],"fullName":"REPORT-A18 stored run identity REPORT-A18 report resolves the newest instance and --instance pins an older one","status":"passed","title":"REPORT-A18 report resolves the newest instance and --instance pins an older one","duration":30.053706000000034,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-A18 stored run identity"],"fullName":"REPORT-A18 stored run identity REPORT-A18 reports a run stored in the pre-content-addressed layout","status":"passed","title":"REPORT-A18 reports a run stored in the pre-content-addressed layout","duration":16.552358000000027,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326577,"endTime":1785783326657.5522,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/report-run-store.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":465.83885499999997,"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":537.435389,"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":229.65461400000004,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783323719,"endTime":1785783324952.6545,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/security-regression.test.ts"},{"assertionResults":[{"ancestorTitles":["REPORT-004 serving a portable report directory"],"fullName":"REPORT-004 serving a portable report directory REPORT-004 REPORT-A20 serves a report directory produced on another machine","status":"passed","title":"REPORT-004 REPORT-A20 serves a report directory produced on another machine","duration":49.097181000000035,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-004 serving a portable report directory"],"fullName":"REPORT-004 serving a portable report directory REPORT-004 REPORT-A20 binds the requested port","status":"passed","title":"REPORT-004 REPORT-A20 binds the requested port","duration":3.5226020000000062,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-004 serving a portable report directory"],"fullName":"REPORT-004 serving a portable report directory REPORT-004 REPORT-A20 fails closed when the report directory is absent","status":"passed","title":"REPORT-004 REPORT-A20 fails closed when the report directory is absent","duration":2.5237339999999904,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-004 serving a portable report directory"],"fullName":"REPORT-004 serving a portable report directory REPORT-004 REPORT-A20 parses the report directory, port, and no-open flags","status":"passed","title":"REPORT-004 REPORT-A20 parses the report directory, port, and no-open flags","duration":0.664968999999985,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["REPORT-004 serving a portable report directory"],"fullName":"REPORT-004 serving a portable report directory REPORT-004 REPORT-A20 rejects a port that is not a valid listening port","status":"passed","title":"REPORT-004 REPORT-A20 rejects a port that is not a valid listening port","duration":0.9951020000000312,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783326969,"endTime":1785783327025.995,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/serve-command.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 records rendered document direction for rendered-only runs","status":"passed","title":"records rendered document direction for rendered-only runs","duration":839.5196189999999,"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 records rendered document direction for consistency-only runs","status":"passed","title":"records rendered document direction for consistency-only runs","duration":897.4565359999997,"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 records rendered document direction when consistency and rendered detectors are excluded","status":"passed","title":"records rendered document direction when consistency and rendered detectors are excluded","duration":745.8914689999997,"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 reports a blocking UI-010 finding for the positive fixture","status":"passed","title":"reports a blocking UI-010 finding for the positive fixture","duration":778.3541260000002,"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":750.717654,"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.43613699999969,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 role authentication"],"fullName":"UI-A10 role authentication UI-A10 UI-055 a declared admin role without an adapter is refused, not run anonymously","status":"passed","title":"UI-A10 UI-055 a declared admin role without an adapter is refused, not run anonymously","duration":753.6161270000002,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 role authentication"],"fullName":"UI-A10 role authentication UI-A10 UI-055 a declared constructor role without an adapter is refused, not run anonymously","status":"passed","title":"UI-A10 UI-055 a declared constructor role without an adapter is refused, not run anonymously","duration":721.1577799999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 role authentication"],"fullName":"UI-A10 role authentication UI-A10 UI-055 a declared role with an adapter runs authenticated","status":"passed","title":"UI-A10 UI-055 a declared role with an adapter runs authenticated","duration":1410.3104440000006,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["UI-A10 role authentication"],"fullName":"UI-A10 role authentication UI-A10 UI-056 an adapter module that cannot be loaded is a harness failure","status":"passed","title":"UI-A10 UI-056 an adapter module that cannot be loaded is a harness failure","duration":4.61393599999974,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["appliesTo.viewports projection"],"fullName":"appliesTo.viewports projection passes appliesTo.viewports into planMatrix journey declarations","status":"passed","title":"passes appliesTo.viewports into planMatrix journey declarations","duration":82.35558500000116,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["appliesTo.viewports projection"],"fullName":"appliesTo.viewports projection passes appliesTo.viewports into adapter.prepare declarations","status":"passed","title":"passes appliesTo.viewports into adapter.prepare declarations","duration":69.38776099999995,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys CLI-A17 runs only exact route and optional-role matches, preserving passive cells","status":"passed","title":"CLI-A17 runs only exact route and optional-role matches, preserving passive cells","duration":3018.4603549999993,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys CLI-A18 routes declared before/after evidence through interaction detectors","status":"passed","title":"CLI-A18 routes declared before/after evidence through interaction detectors","duration":3550.621820999999,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys REPORT-A25 records rendered document direction for declared-journey cells","status":"passed","title":"REPORT-A25 records rendered document direction for declared-journey cells","duration":1083.4315539999989,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys records one coverage outcome, not a harness outcome, when a selected journey is unavailable","status":"passed","title":"records one coverage outcome, not a harness outcome, when a selected journey is unavailable","duration":90.705559,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys emits one adapter harness outcome for missing module","status":"passed","title":"emits one adapter harness outcome for missing module","duration":80.21627300000182,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys emits one adapter harness outcome for missing export","status":"passed","title":"emits one adapter harness outcome for missing export","duration":80.94187599999714,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys emits one adapter harness outcome for prepare failure","status":"passed","title":"emits one adapter harness outcome for prepare failure","duration":80.8569439999992,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-025 declared UI journeys"],"fullName":"CLI-025 declared UI journeys emits one adapter harness outcome for malformed plan","status":"passed","title":"emits one adapter harness outcome for malformed plan","duration":84.2130959999995,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783305304,"endTime":1785783320433.2131,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":39.84555499999999,"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":23.859087000000045,"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":11.528272000000015,"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":23.97696000000002,"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":1.1778080000000273,"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.48023399999999583,"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":3.8012389999999527,"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":3.5928539999999884,"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":560.6070839999999,"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.8595359999999346,"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.6093839999998636,"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":5.2493990000000395,"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.629111000000194,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["CLI-060 machine output channel separation"],"fullName":"CLI-060 machine output channel separation CLI-060 reports the measured run duration in timings","status":"passed","title":"CLI-060 reports the measured run duration in timings","duration":3.6504869999998846,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783323843,"endTime":1785783324530.6504,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/cli/test/verify.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":9794.190681,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783327301,"endTime":1785783337095.1907,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":9.080449999999985,"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":18.658888000000047,"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":4.662069000000031,"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.9551650000000222,"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.1844670000000406,"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.012773999999979,"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":3.967894000000001,"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":2.2713729999999828,"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.526920000000018,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783328936,"endTime":1785783328990.5269,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.5462180000000103,"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.33504299999998466,"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.28569399999997813,"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.2685859999999707,"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":25.967309999999998,"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":7.38715000000002,"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":6.01478800000001,"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":5.213577999999984,"failureMessages":[],"meta":{},"tags":[]},{"ancestorTitles":["HAR-A01 harness classification"],"fullName":"HAR-A01 harness classification HAR-004 rejects a harness browser context missing matrix cell dimensions","status":"passed","title":"HAR-004 rejects a harness browser context missing matrix cell dimensions","duration":2.0210629999999696,"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":5.750308999999959,"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":12.463964999999973,"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":0.9278259999999818,"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":3.781287999999961,"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":2.0665520000000015,"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.119403000000034,"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.2887400000000184,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783328241,"endTime":1785783328319.2888,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":8.942443000000026,"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.5746460000000297,"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":0.504306999999983,"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.41540000000003374,"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.8086260000000038,"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":1.1219520000000216,"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":10.946521000000018,"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":8.224964999999997,"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":8.21309199999996,"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":5.108891999999969,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783328602,"endTime":1785783328647.109,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":23.62810300000001,"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":7.202703000000042,"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.402618000000018,"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":8.414992999999981,"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":3.9139880000000176,"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":3.1472780000000284,"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":4.344558000000006,"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":3.110367999999994,"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":0.3539519999999925,"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":14.943532000000005,"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.4867249999999785,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783328282,"endTime":1785783328359.4868,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":2.2791249999999934,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783329692,"endTime":1785783329694.279,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.7809450000000027,"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.37691300000000183,"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.32365799999999467,"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.2661390000000097,"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.3412879999999916,"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.30822299999999814,"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.32274799999999004,"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.3005150000000185,"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.3950759999999889,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783329533,"endTime":1785783329540.395,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":506.652058,"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.7060880000000225,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783327377,"endTime":1785783327884.706,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.55232700000002,"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.2210819999999956,"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.5981370000000084,"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.30977000000001453,"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.3341360000000009,"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.36862299999998527,"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.33298899999999776,"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.31351500000002375,"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.5664700000000096,"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.2260180000000105,"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.14696200000000204,"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.2572349999999801,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783329509,"endTime":1785783329524.2573,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":30.167598000000055,"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.3881129999999757,"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":4.1585210000000075,"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.038378000000023,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783328934,"endTime":1785783328975.0383,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":2.9268109999999865,"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.4581099999999765,"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":4.875798000000032,"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.8845979999999827,"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.7105730000000108,"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.0889700000000175,"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":1.6816309999999817,"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.3729250000000093,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783329263,"endTime":1785783329276.373,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":12.487606999999997,"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":3.551459999999963,"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":8.016278999999997,"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.9911810000000401,"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":1.789923999999985,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783329232,"endTime":1785783329259.79,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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.359843000000012,"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":12.13169400000001,"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":2.8197440000000142,"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":2.6332889999999907,"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.0400260000000117,"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":3.485213999999985,"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":13.784293000000048,"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":3.9145000000000323,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783328615,"endTime":1785783328658.9146,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/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":67.67089700000002,"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":64.40621599999997,"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":77.97232300000002,"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":39.70698700000003,"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":45.370326999999975,"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.06016299999999,"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":47.89510700000005,"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":42.73246800000004,"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":54.91701499999999,"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":36.898896000000036,"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":50.24625100000003,"failureMessages":[],"meta":{},"tags":[]}],"startTime":1785783327435,"endTime":1785783328011.2463,"status":"passed","message":"","name":"/home/user/builds/invariantum-f1423b94fe2a/packages/core/test/property/identity.prop.test.ts"}]}