motionloom 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/.agents/skills/motionloom/SKILL.md +14 -0
  2. package/.claude/skills/motionloom.md +5 -0
  3. package/.codex/skills/motionloom.md +11 -0
  4. package/AGENTS.md +17 -0
  5. package/CHANGELOG.md +68 -0
  6. package/CODE_OF_CONDUCT.md +19 -0
  7. package/CONTRIBUTING.md +65 -0
  8. package/README.md +193 -134
  9. package/ROADMAP.md +36 -0
  10. package/SECURITY.md +28 -0
  11. package/SKILL.md +57 -9
  12. package/SUPPORT.md +23 -0
  13. package/agent-card.json +42 -6
  14. package/agent-surfaces.json +79 -0
  15. package/bin/motionloom.mjs +33 -5
  16. package/docs/AGENT-INTEGRATION.md +47 -0
  17. package/docs/CHECKLIST.md +2 -1
  18. package/docs/STATUS.md +33 -0
  19. package/docs/audits/2.1.0-deep-stress-evaluation.md +97 -0
  20. package/docs/audits/ci-replay-remediation-2026-08-13.md +33 -0
  21. package/docs/audits/data/2.1.0-deep-stress-6900.json +329 -0
  22. package/docs/audits/data/deep-stress-latest.json +329 -0
  23. package/docs/audits/external-project-corpus-2026-08-13.md +26 -0
  24. package/docs/releases/2.1.0.md +23 -0
  25. package/docs/releases/2.2.0.md +35 -0
  26. package/docs/releases/npm-publish-from-workstation.md +6 -6
  27. package/examples/agent-consumer/README.md +18 -0
  28. package/examples/agent-consumer/fixture-manifest.json +82 -0
  29. package/package.json +69 -28
  30. package/references/agent-interoperability.md +29 -0
  31. package/references/intelligence-core.md +5 -1
  32. package/schemas/agent-surfaces.schema.json +78 -0
  33. package/schemas/project-memory.schema.json +180 -0
  34. package/schemas/remediation-history.schema.json +23 -0
  35. package/schemas/scene-manifest.schema.json +1 -0
  36. package/schemas/visual-truth.schema.json +80 -0
  37. package/scripts/analyze.py +56 -0
  38. package/scripts/capture-runtime-telemetry.py +119 -0
  39. package/scripts/devlab.py +126 -0
  40. package/scripts/discovery.py +257 -0
  41. package/scripts/docs-audit.py +112 -0
  42. package/scripts/eval-intelligence.py +23 -0
  43. package/scripts/eval-projects.py +156 -0
  44. package/scripts/intelligence.py +106 -6
  45. package/scripts/pr.py +151 -0
  46. package/scripts/prepack-clean.mjs +37 -0
  47. package/scripts/project-memory.py +483 -0
  48. package/scripts/project_memory_loader.py +31 -0
  49. package/scripts/quality-gate.py +43 -3
  50. package/scripts/release-verify.py +52 -0
  51. package/scripts/remediation-learning.py +326 -0
  52. package/scripts/render.py +65 -0
  53. package/scripts/report.py +60 -2
  54. package/scripts/review-hook.py +13 -2
  55. package/scripts/skill-doctor.py +12 -2
  56. package/scripts/to-dotlottie.mjs +26 -20
  57. package/scripts/visual-truth.py +310 -0
  58. package/src/core/analyzer.py +174 -25
  59. package/src/output/browser-review-smoke/manifest.json +1 -0
  60. package/src/output/browser-review-smoke/visual-truth.json +68 -0
  61. package/tests/evals/intelligence-cases.json +10 -0
  62. package/tests/evals/project-corpus.json +51 -0
  63. package/tests/scripts/run_tests.py +111 -1
  64. package/tests/scripts/test_project_memory.py +129 -0
@@ -0,0 +1,97 @@
1
+ # MotionLoom 2.1.0 — Deep Stress and Agent Intelligence Evaluation
2
+
3
+ ## Executive conclusion
4
+
5
+ MotionLoom đã vượt qua một đợt deep stress **6.900 logical trials** trên canonical smoke task `browser-review-smoke-task`, với seed `20260813`, wall time `25.883117s`, `6.900/6.900` pass, `0` false positive và `0` false negative. Các thử nghiệm gọi trực tiếp validator/helper production và fault-injection trên artifact thật; đây **không phải** tuyên bố rằng đã render 6.900 animation trong browser.
6
+
7
+ Kết luận hiện tại là MotionLoom có nền tảng **trust-boundary, context binding, provenance và review-first** mạnh. Nó đã đủ đáng tin để giảm những vòng chỉnh sửa sai do stale evidence, cross-task mix-up, tamper, wrong scene, replay path escape và attestation sai chữ ký. Tuy nhiên, nó chưa thể được gọi là hệ thống “hiểu chất lượng hình ảnh animation” hoàn chỉnh: visual comparison có nhãn provenance, historical learning, device/browser matrix và đo số vòng sửa thực tế vẫn còn thiếu.
8
+
9
+ ## Test matrix and evidence
10
+
11
+ | Contract surface | Trials | Expected result | Observed result | p95 / max |
12
+ | --- | ---: | --- | --- | ---: |
13
+ | Canonical JSON metamorphic ordering | 600 | Reordered mappings serialize identically | 600 pass, 0 FP/FN | 0.027 / 0.216 ms |
14
+ | DSSE Ed25519 round-trip | 250 | Valid signature verifies | 250 pass | 0.144 / 0.163 ms |
15
+ | DSSE payload tamper | 250 | Modified payload is rejected | 250 pass | 0.140 / 0.179 ms |
16
+ | Statement contract | 600 | 200 valid accepted; 400 mutated rejected | 600 pass | 0.008 / 0.060 ms |
17
+ | Attestation verifier boundary | 1,500 | Codes 0, 11, 14 and 13 remain stable | 1,500 pass; 375 per code | 0.505 / 0.842 ms |
18
+ | Strict quality gate | 400 | Canonical production bundle accepted | 400 pass | 29.717 / 45.588 ms |
19
+ | Intelligence P1 | 400 | Graph/P1 reports accepted | 400 pass | 21.977 / 32.027 ms |
20
+ | Replay hash validation | 475 | Clean replay remains clean | 475 pass | 10.210 / 13.316 ms |
21
+ | Semantic lint clean path | 475 | Canonical lint report remains valid | 475 pass | 0.063 / 0.121 ms |
22
+ | Continuity clean path | 475 | Canonical multi-scene continuity remains valid | 475 pass | 0.054 / 0.101 ms |
23
+ | Approval invariant | 475 | Attestation and verifier report remain `approval=false` | 475 pass | 0.149 / 0.203 ms |
24
+ | Fault injection: graph, IR, provenance, replay, P1, continuity, semantic, attestation | 1,000 | Every controlled mutation is rejected | 1,000 pass, 0 FN | 0.095–16.092 ms p95 by case |
25
+
26
+ The machine-readable source is [`data/2.1.0-deep-stress-6900.json`](data/2.1.0-deep-stress-6900.json). Its SHA-256 is `8e4b967a87cf1dab2268c23fc15a98b5ebde1699d81a102505d98ccb89bf3a2d`.
27
+
28
+ The fault corpus deliberately checks task ID substitution, scene substitution, provenance substitution, replay path escape, fix-plan source hash tampering, wrong-scene P1 validation, continuity structural drift, semantic structural drift, attestation approval mutation and payload mutation. The semantic/continuity validator hardening added during this audit closed a real malformed-report acceptance gap; the continuity regression fixture was then corrected to preserve the production SHA-256 context binding rather than a legacy empty placeholder.
29
+
30
+ ## Runtime and Dev Lab cross-check
31
+
32
+ The in-process stress run was complemented by a real browser runtime test. Rive, GSAP and Framer Motion all passed the runtime adapter harness with 0/50/100% snapshots, no console errors and telemetry at approximately 16.7–16.8 ms maximum/p95 RAF interval in the sampled run. This establishes that the adapter evidence path works for the canonical examples, but it is not a 5.000-run visual or cross-device benchmark.
33
+
34
+ The Dev Lab production build passed after the attestation rail and Timeline Desk review-driven pass. Two non-blocking operational warnings remain: pnpm ignores the legacy `pnpm` field in `package.json`, and the main JavaScript bundle is approximately 780.38 kB before gzip / 225.37 kB gzip, above the 500 kB advisory threshold. These do not invalidate the current build, but code splitting should be planned before the Lab grows further.
35
+
36
+ ## Scorecard
37
+
38
+ The following scores are an engineering rubric based on the evidence above, not a universal benchmark or a claim of autonomous animation taste.
39
+
40
+ | Capability | Score | Evidence-based assessment |
41
+ | --- | ---: | --- |
42
+ | Determinism and contract integrity | **9.5/10** | 6,900/6,900 pass; canonicalization, replay, semantic and continuity paths remained stable. |
43
+ | Trust boundary and evidence identity | **9.4/10** | 1,500 verifier cases plus 1,000 cross-boundary mutations rejected correctly; approval invariant preserved. |
44
+ | Project-aware binding | **8.8/10** | Graph, provenance, Motion IR, task/scene and fix-plan hashes are actively checked; more project archetypes are needed. |
45
+ | Runtime truthfulness | **7.9/10** | Three real adapters pass with telemetry; visual correctness and environment diversity are not yet measured at scale. |
46
+ | Agent handoff and review-first collaboration | **7.8/10** | Reports, issues, fix-plan, continuity, handoff and Dev Lab review rail exist; remediation-cycle outcomes are not yet learned from history. |
47
+ | Performance and operational ergonomics | **8.2/10** | In-process p95 is low and strict gate is under 30 ms in the fixture; browser/device scaling and bundle size remain open. |
48
+ | Release usability | **8.9/10** | `motionloom@2.0.0` is public on npm with a CLI wrapper and workstation release guide; Python/runtime dependencies remain external prerequisites. |
49
+
50
+ **Overall engineering readiness: 8.6/10.** The score is high for evidence integrity and deterministic orchestration, not for end-to-end visual intelligence. The strongest differentiator is that MotionLoom can explain why an artifact is unsafe to trust instead of merely generating another animation.
51
+
52
+ ## What is working well
53
+
54
+ MotionLoom now has a credible chain from project context to graph, provenance, Motion IR, runtime evidence, semantic feedback, continuity, signed attestation and review-first handoff. That chain is materially more useful to an Agent than a collection of framework snippets because the Agent can bind an artifact to a task and explain whether a failure is stale context, wrong scene, tampering, unsupported capability or an actual quality issue.
55
+
56
+ The new hardening also demonstrates an important behavior: the system distinguishes a valid signature from user approval. A cryptographically verified bundle remains `approval=false`, and the Dev Lab remains the place where the user sees, tests, fixes and explicitly confirms a PR-side effect. This protects against the common failure mode where automation quietly treats “technically valid” as “approved.”
57
+
58
+ The fix-plan and handoff surfaces are promising for reducing repeated edits. The system can identify a root cause, constrain patch scope and select a rerun scope instead of asking an Agent to regenerate the whole scene. That is the right architecture for reducing accidental churn, even though the audit did not yet measure a historical reduction percentage across real user iterations.
59
+
60
+ ## What is not yet proven
61
+
62
+ The 6.900 trials are predominantly deterministic contract tests over one canonical smoke task. They prove boundary behavior, not broad semantic understanding across many project types, animation styles, body rigs, asset families, browser engines, device pixel ratios, reduced-motion settings or long-running timelines.
63
+
64
+ The harness does not yet perform pixel-diff or perceptual comparison against labeled expected frames. Therefore it can prove that a frame was captured, bound and verified, but not that a character’s hand pose, easing feel, silhouette, staging or brand motion is visually correct. A second limitation is that clean-path repetition can hide state leaks that only appear after many different task bundles; a future matrix must rotate fixtures, not only repeat the same fixture.
65
+
66
+ The Agent collaboration score is also necessarily provisional. The repository emits structured reports and actionable handoff data, but it does not yet have a benchmark of “first-pass acceptance rate,” “mean corrections per scene,” “rerender avoidance rate,” or “time from issue to accepted fix.” Without those measures, the claim that MotionLoom reduces user workload is architecturally plausible but not yet empirically quantified.
67
+
68
+ ## Prioritized development recommendations
69
+
70
+ | Priority | Recommendation | Why it reduces wrong animation edits | Acceptance metric |
71
+ | --- | --- | --- | --- |
72
+ | P0 | Promote `deep-stress.py` to a documented nightly/PR audit with fixed seeds, thresholds and retained JSON artifacts | Prevents trust-boundary regressions from returning silently | 5,000+ logical trials, 0 FN, 0 FP, stable p95 budget |
73
+ | P0 | Add visual-comparison contract with provenance-labeled 0/50/100% fixtures, pixel diff and perceptual hash | Distinguishes “evidence is valid” from “motion looks correct” | Labeled fixture pass/fail with explainable region-level diff |
74
+ | P1 | Add multi-project corpus: landing UI, product onboarding, body rig, Lottie export, Rive state machine and mixed framework scene | Tests whether project-aware binding generalizes beyond one smoke bundle | At least 10 project archetypes and cross-task mutation coverage |
75
+ | P1 | Add browser matrix for Chromium/WebKit/Firefox, DPR 1/2, reduced motion and 30/60/120 Hz timing | Captures runtime failures that in-process validators cannot see | Zero console errors; telemetry threshold per environment |
76
+ | P1 | Create append-only remediation ledger: issue, proposed fix, patch scope, rerun scope, user outcome | Lets the Agent learn which fixes reduce repeated edits instead of regenerating blindly | Track first-pass acceptance, correction count and rerender avoidance |
77
+ | P1 | Add benchmark history and aggregate metrics by project/context/framework/capability | Detects drift and capability regressions over time | Trend report, outlier alert and reproducible run hash |
78
+ | P2 | Split Dev Lab public route and heavy workbench bundles with dynamic imports; migrate pnpm config to supported settings | Reduces load cost as evidence rails grow | Main chunk below advisory threshold and no pnpm warning |
79
+ | P2 | Add capability confidence and “why this adapter” explanation to Agent handoff | Makes unsupported or stale capability selection visible before rendering | Every selected capability has evidence hash, freshness and reason |
80
+
81
+ ## Recommended next milestone
82
+
83
+ The next milestone should be **2.2.0 Visual Truth and Remediation Learning**. It should not add more framework adapters first. It should add labeled visual fixtures, perceptual comparison, multi-project context corpus and the remediation ledger. Only after those are working should historical outcomes influence recommendations; otherwise the Agent risks learning from unverified visual outputs.
84
+
85
+ ## Reproduction
86
+
87
+ From the repository root:
88
+
89
+ ```bash
90
+ npm run audit:deep
91
+ python3 tests/scripts/run_tests.py
92
+ python3 scripts/eval-intelligence.py
93
+ python3 scripts/skill-doctor.py --json
94
+ npm run runtime:test
95
+ ```
96
+
97
+ The deep audit command writes a machine-readable report under `docs/audits/data/` when invoked with the documented script defaults. The strict production checks remain separate so a fast developer test does not accidentally imply that browser review, telemetry, attestation or user approval has occurred.
@@ -0,0 +1,33 @@
1
+ # CI Replay Remediation — 2026-08-13
2
+
3
+ ## Evidence
4
+
5
+ The `MotionLoom Quality` workflow for commit [`d148f21`](https://github.com/lenhonbp/MotionLoom/commit/d148f2175e47e3fc32f7156fc83af82c749b47ed) completed with failure in run [`31709781319`](https://github.com/lenhonbp/MotionLoom/actions/runs/31709781319). Documentation and Package Hygiene and Security Analysis completed successfully on the same commit.
6
+
7
+ The failing step was **Enforce context-bound quality gate**. The recorded rejection was:
8
+
9
+ > `replay bundle has 11 mismatch(es)`
10
+
11
+ The preceding Intelligence, project graph, Motion IR and provenance checks were valid. The failure therefore represented stale replay hashes, not an approval decision or a request to weaken the verifier.
12
+
13
+ ## Root cause
14
+
15
+ The Quality workflow treated `replay-bundle.json` as a committed integrity snapshot, but earlier steps intentionally regenerate runtime telemetry, semantic-lint benchmark output, report/manifest output, signed attestation output and rendered runtime evidence for changed scenes. The quality gate then verified the old replay bundle against those newly generated files. A local verification before the generated-artifact phase could pass while the same sequence in CI correctly reported mismatches.
16
+
17
+ ## Remediation
18
+
19
+ The workflow now runs the canonical command below after runtime snapshot rendering and before the context-bound quality gate:
20
+
21
+ ```text
22
+ python3 scripts/intelligence.py replay capture \
23
+ --task-dir "artifacts/${scene}-task" --root . \
24
+ --output "artifacts/${scene}-task/replay-bundle.json"
25
+ ```
26
+
27
+ The change does not remove replay verification, expand exclusions, or turn heuristic evidence into approval. A regression assertion checks that replay capture follows runtime rendering and precedes the quality gate. A temporary task-bundle test also confirms that tampered evidence is rejected, canonical capture rebuilds its hashes, and the rebuilt bundle verifies successfully.
28
+
29
+ ## Local verification
30
+
31
+ After the remediation, the following checks passed locally: engine regression, docs audit, Skill Doctor, skill-creator validator, runtime adapter smoke, Agent discovery, installation matrix, Visual Truth validation, Remediation Learning validation, quality attestation with Visual Truth required, npm dry-run, Python syntax compilation and `git diff --check`.
32
+
33
+ This audit records the CI incident and its fix as evidence; it does not change the published `motionloom@2.1.0` version or grant user approval.
@@ -0,0 +1,329 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "audit": "motionloom-deep-stress",
4
+ "generated_at": "2026-08-13T08:44:23.535422Z",
5
+ "seed": 20260813,
6
+ "requested_iterations": 5000,
7
+ "actual_iterations": 6900,
8
+ "fixture": {
9
+ "task_id": "browser-review-smoke-task",
10
+ "scene": "browser-review-smoke"
11
+ },
12
+ "summary": {
13
+ "passed": 6900,
14
+ "failed": 0,
15
+ "pass_rate": 1.0,
16
+ "false_positive": 0,
17
+ "false_negative": 0,
18
+ "clean_contracts_preserved": true,
19
+ "faults_rejected_without_false_negative": true,
20
+ "approval_false_invariant_preserved": true
21
+ },
22
+ "metrics": {
23
+ "canonical-json-metamorphic": {
24
+ "attempts": 600,
25
+ "passed": 600,
26
+ "failed": 0,
27
+ "false_positive": 0,
28
+ "false_negative": 0,
29
+ "codes": {
30
+ "equal": 600
31
+ },
32
+ "p50_ms": 0.018963,
33
+ "p95_ms": 0.027028,
34
+ "max_ms": 0.215561,
35
+ "pass_rate": 1.0
36
+ },
37
+ "dsse-ed25519-roundtrip": {
38
+ "attempts": 250,
39
+ "passed": 250,
40
+ "failed": 0,
41
+ "false_positive": 0,
42
+ "false_negative": 0,
43
+ "codes": {
44
+ "verified": 250
45
+ },
46
+ "p50_ms": 0.128048,
47
+ "p95_ms": 0.144034,
48
+ "max_ms": 0.163253,
49
+ "pass_rate": 1.0
50
+ },
51
+ "dsse-ed25519-tamper": {
52
+ "attempts": 250,
53
+ "passed": 250,
54
+ "failed": 0,
55
+ "false_positive": 0,
56
+ "false_negative": 0,
57
+ "codes": {
58
+ "invalid-signature": 250
59
+ },
60
+ "p50_ms": 0.130132,
61
+ "p95_ms": 0.140209,
62
+ "max_ms": 0.178904,
63
+ "pass_rate": 1.0
64
+ },
65
+ "statement-contract": {
66
+ "attempts": 600,
67
+ "passed": 600,
68
+ "failed": 0,
69
+ "false_positive": 0,
70
+ "false_negative": 0,
71
+ "codes": {
72
+ "valid": 200,
73
+ "rejected": 400
74
+ },
75
+ "p50_ms": 0.007181,
76
+ "p95_ms": 0.008413,
77
+ "max_ms": 0.059516,
78
+ "pass_rate": 1.0
79
+ },
80
+ "attestation-verifier-boundary": {
81
+ "attempts": 1500,
82
+ "passed": 1500,
83
+ "failed": 0,
84
+ "false_positive": 0,
85
+ "false_negative": 0,
86
+ "codes": {
87
+ "0": 375,
88
+ "11": 375,
89
+ "14": 375,
90
+ "13": 375
91
+ },
92
+ "p50_ms": 0.303064,
93
+ "p95_ms": 0.505011,
94
+ "max_ms": 0.842255,
95
+ "pass_rate": 1.0
96
+ },
97
+ "strict-quality-gate-clean": {
98
+ "attempts": 400,
99
+ "passed": 400,
100
+ "failed": 0,
101
+ "false_positive": 0,
102
+ "false_negative": 0,
103
+ "codes": {
104
+ "accepted": 400
105
+ },
106
+ "p50_ms": 24.511679,
107
+ "p95_ms": 29.717216,
108
+ "max_ms": 45.587579,
109
+ "pass_rate": 1.0
110
+ },
111
+ "intelligence-p1-clean": {
112
+ "attempts": 400,
113
+ "passed": 400,
114
+ "failed": 0,
115
+ "false_positive": 0,
116
+ "false_negative": 0,
117
+ "codes": {
118
+ "accepted": 400
119
+ },
120
+ "p50_ms": 17.860905,
121
+ "p95_ms": 21.976583,
122
+ "max_ms": 32.027403,
123
+ "pass_rate": 1.0
124
+ },
125
+ "replay-hash-clean": {
126
+ "attempts": 475,
127
+ "passed": 475,
128
+ "failed": 0,
129
+ "false_positive": 0,
130
+ "false_negative": 0,
131
+ "codes": {
132
+ "clean": 475
133
+ },
134
+ "p50_ms": 8.02739,
135
+ "p95_ms": 10.20982,
136
+ "max_ms": 13.31553,
137
+ "pass_rate": 1.0
138
+ },
139
+ "semantic-lint-clean": {
140
+ "attempts": 475,
141
+ "passed": 475,
142
+ "failed": 0,
143
+ "false_positive": 0,
144
+ "false_negative": 0,
145
+ "codes": {
146
+ "clean": 475
147
+ },
148
+ "p50_ms": 0.044806,
149
+ "p95_ms": 0.062948,
150
+ "max_ms": 0.120889,
151
+ "pass_rate": 1.0
152
+ },
153
+ "continuity-clean": {
154
+ "attempts": 475,
155
+ "passed": 475,
156
+ "failed": 0,
157
+ "false_positive": 0,
158
+ "false_negative": 0,
159
+ "codes": {
160
+ "clean": 475
161
+ },
162
+ "p50_ms": 0.036813,
163
+ "p95_ms": 0.053581,
164
+ "max_ms": 0.1014,
165
+ "pass_rate": 1.0
166
+ },
167
+ "approval-invariant": {
168
+ "attempts": 475,
169
+ "passed": 475,
170
+ "failed": 0,
171
+ "false_positive": 0,
172
+ "false_negative": 0,
173
+ "codes": {
174
+ "approval=false": 475
175
+ },
176
+ "p50_ms": 0.103737,
177
+ "p95_ms": 0.148545,
178
+ "max_ms": 0.202869,
179
+ "pass_rate": 1.0
180
+ },
181
+ "fault-graph-task-id": {
182
+ "attempts": 100,
183
+ "passed": 100,
184
+ "failed": 0,
185
+ "false_positive": 0,
186
+ "false_negative": 0,
187
+ "codes": {
188
+ "rejected": 100
189
+ },
190
+ "p50_ms": 14.465091,
191
+ "p95_ms": 16.091659,
192
+ "max_ms": 16.891256,
193
+ "pass_rate": 1.0
194
+ },
195
+ "fault-motion-ir-scene": {
196
+ "attempts": 100,
197
+ "passed": 100,
198
+ "failed": 0,
199
+ "false_positive": 0,
200
+ "false_negative": 0,
201
+ "codes": {
202
+ "rejected": 100
203
+ },
204
+ "p50_ms": 2.367015,
205
+ "p95_ms": 2.776738,
206
+ "max_ms": 3.812271,
207
+ "pass_rate": 1.0
208
+ },
209
+ "fault-provenance-task-id": {
210
+ "attempts": 100,
211
+ "passed": 100,
212
+ "failed": 0,
213
+ "false_positive": 0,
214
+ "false_negative": 0,
215
+ "codes": {
216
+ "rejected": 100
217
+ },
218
+ "p50_ms": 0.913747,
219
+ "p95_ms": 1.226514,
220
+ "max_ms": 1.544532,
221
+ "pass_rate": 1.0
222
+ },
223
+ "fault-replay-path-escape": {
224
+ "attempts": 100,
225
+ "passed": 100,
226
+ "failed": 0,
227
+ "false_positive": 0,
228
+ "false_negative": 0,
229
+ "codes": {
230
+ "rejected": 100
231
+ },
232
+ "p50_ms": 8.533108,
233
+ "p95_ms": 10.344097,
234
+ "max_ms": 11.235017,
235
+ "pass_rate": 1.0
236
+ },
237
+ "fault-p1-fix-plan-hash": {
238
+ "attempts": 100,
239
+ "passed": 100,
240
+ "failed": 0,
241
+ "false_positive": 0,
242
+ "false_negative": 0,
243
+ "codes": {
244
+ "rejected": 100
245
+ },
246
+ "p50_ms": 0.827828,
247
+ "p95_ms": 1.029271,
248
+ "max_ms": 1.439878,
249
+ "pass_rate": 1.0
250
+ },
251
+ "fault-p1-wrong-scene": {
252
+ "attempts": 100,
253
+ "passed": 100,
254
+ "failed": 0,
255
+ "false_positive": 0,
256
+ "false_negative": 0,
257
+ "codes": {
258
+ "rejected": 100
259
+ },
260
+ "p50_ms": 0.710469,
261
+ "p95_ms": 1.010883,
262
+ "max_ms": 1.146831,
263
+ "pass_rate": 1.0
264
+ },
265
+ "fault-continuity-structure": {
266
+ "attempts": 100,
267
+ "passed": 100,
268
+ "failed": 0,
269
+ "false_positive": 0,
270
+ "false_negative": 0,
271
+ "codes": {
272
+ "rejected": 100
273
+ },
274
+ "p50_ms": 0.069471,
275
+ "p95_ms": 0.091397,
276
+ "max_ms": 0.11505,
277
+ "pass_rate": 1.0
278
+ },
279
+ "fault-semantic-structure": {
280
+ "attempts": 100,
281
+ "passed": 100,
282
+ "failed": 0,
283
+ "false_positive": 0,
284
+ "false_negative": 0,
285
+ "codes": {
286
+ "rejected": 100
287
+ },
288
+ "p50_ms": 0.068215,
289
+ "p95_ms": 0.095822,
290
+ "max_ms": 0.118719,
291
+ "pass_rate": 1.0
292
+ },
293
+ "fault-attestation-approval": {
294
+ "attempts": 100,
295
+ "passed": 100,
296
+ "failed": 0,
297
+ "false_positive": 0,
298
+ "false_negative": 0,
299
+ "codes": {
300
+ "10": 100
301
+ },
302
+ "p50_ms": 0.220256,
303
+ "p95_ms": 0.316655,
304
+ "max_ms": 0.349047,
305
+ "pass_rate": 1.0
306
+ },
307
+ "fault-attestation-payload": {
308
+ "attempts": 100,
309
+ "passed": 100,
310
+ "failed": 0,
311
+ "false_positive": 0,
312
+ "false_negative": 0,
313
+ "codes": {
314
+ "11": 100
315
+ },
316
+ "p50_ms": 0.284957,
317
+ "p95_ms": 0.388469,
318
+ "max_ms": 0.452502,
319
+ "pass_rate": 1.0
320
+ }
321
+ },
322
+ "failures": [],
323
+ "interpretation": {
324
+ "logical_trials": "Each trial executes a real repository validator/helper against canonical fixture bytes or a controlled mutation; this is not a claim that 5,000 browser renders were performed.",
325
+ "false_positive": "A clean canonical case was rejected.",
326
+ "false_negative": "A controlled tamper, binding, revocation or invalid-contract case was accepted."
327
+ },
328
+ "wall_time_s": 25.883117
329
+ }