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
package/ROADMAP.md ADDED
@@ -0,0 +1,36 @@
1
+ # MotionLoom Roadmap
2
+
3
+ MotionLoom's roadmap is organized around one question: **does this reduce incorrect animation iterations while keeping the user in control of quality and Git side effects?** A roadmap item is not complete because a prompt or template exists; it is complete when the contract, evidence, regression coverage and Agent handoff are inspectable.
4
+
5
+ ## Current baseline: 2.2.0 release candidate
6
+
7
+ The current repository baseline includes project-aware analysis, durable Project Memory, context-bound Motion Spec, source binding, real runtime adapters for Lottie/dotLottie/SVG cutout/Rive/GSAP/Framer Motion, Dev Lab browser review, Intelligence Core, semantic and continuity feedback, runtime telemetry, external evidence verification, signed attestation, Agent interoperability surfaces, Visual Truth, Remediation Learning and cross-platform CLI/CI contracts. The package metadata is at `2.2.0`; remote publication remains pending explicit release approval.
8
+
9
+ ## Next milestones
10
+
11
+ | Milestone | Focus | Acceptance signal | Status |
12
+ |---|---|---|---|
13
+ | **2.2** | Visual Truth Contract | Provenance-bound frame comparison with `pass`, `fail`, `warn` and `unknown`; no automatic user approval | Included in 2.2.0 candidate |
14
+ | **2.3** | Remediation Learning | User-confirmed correction count, first-pass acceptance and rerender-avoidance ledger | Included in 2.2.0 candidate |
15
+ | **2.4** | Runtime Scale | Multi-project, browser and device corpus with capability compatibility explanations | Planned |
16
+ | **2.5** | Agent Interoperability | Versioned schemas, compatibility matrix and replayable task bundles across Agents | Included in 2.2.0 candidate |
17
+
18
+ ## Working-tree implementation status
19
+
20
+ The current implementation pass has delivered the contracts behind milestones 2.2, 2.3 and 2.5: canonical Agent discovery/install surfaces, consumer fixtures and a Ubuntu/macOS/Windows matrix; Visual Truth is bound into scene manifests, Dev Lab handoff and the review-first quality gate; Remediation Learning records hash-chained benchmark/outcome history; and CI replay evidence is rebuilt after generated artifacts. The remaining release work is remote tag/Release creation, npm publication and paired evaluation on additional real projects.
21
+
22
+ ## Product principles
23
+
24
+ MotionLoom will remain project-bound, evidence-first and review-first. Heuristics may prioritize risk but cannot become approval. Attestations may prove signer and byte identity but cannot replace a user. Dev Lab remains a post-render handoff in the pipeline rather than a separate Skill with its own authority. Framework support will be promoted only after real adapter evidence and cross-platform checks pass.
25
+
26
+ ## Metrics that matter
27
+
28
+ The project will track acceptance precision, false-approval rate, provenance completeness, replay success, time-to-fix, correction count, first-pass acceptance and rerender avoidance. Metrics must remain tied to labeled fixtures or user-confirmed review records; synthetic scores will not be presented as human visual approval.
29
+
30
+ ## Explicitly out of scope
31
+
32
+ MotionLoom will not silently open or push pull requests, claim visual approval from a signature, hide a missing runtime behind a static placeholder, copy memory across projects, or treat a public asset catalog as a license authority. See [SECURITY.md](SECURITY.md), [CONTRIBUTING.md](CONTRIBUTING.md) and the [trust-boundary reference](references/signed-attestation.md) before proposing a roadmap change.
33
+
34
+ ## Proposing a roadmap change
35
+
36
+ Open a feature request with the problem, affected Agent workflow, proposed contract, evidence needed, failure modes and how user authority is preserved. A roadmap proposal that cannot explain its trust boundary is not ready for implementation.
package/SECURITY.md ADDED
@@ -0,0 +1,28 @@
1
+ # Security Policy
2
+
3
+ ## Supported versions
4
+
5
+ | Version | Security fixes |
6
+ |---|---|
7
+ | `2.2.x` | Release candidate; support begins on publication |
8
+ | `2.1.x` | Current published line; supported until 2.2.0 publication |
9
+ | `2.0.x` | Best effort while upgrading |
10
+ | `<2.0.0` | Not supported |
11
+
12
+ ## Reporting a vulnerability
13
+
14
+ Please do not open a public issue for an exploitable vulnerability, credential exposure, path escape, evidence-bypass bug or supply-chain concern. Use [GitHub Private Vulnerability Reporting](https://github.com/lenhonbp/MotionLoom/security/advisories/new) when available. Include the affected version/commit, operating system, minimal reproduction, impact and a proposed mitigation if known. Redact project names, tokens, private assets, private keys and customer data.
15
+
16
+ If private reporting is unavailable, open a minimal issue titled **Security contact requested** without exploit details and ask the maintainer to enable a private channel. The maintainer will acknowledge a valid report, triage severity, coordinate a fix and publish a release note when disclosure is safe.
17
+
18
+ ## Security boundaries
19
+
20
+ MotionLoom can read and write files in the host project, invoke runtimes and prepare Git operations. The npm CLI does not silently push, open a PR or turn evidence into approval. Treat project context, artifact bundles, trust policies, private keys and browser sessions as sensitive. Keep managed signing keys outside the repository and never use CI fixture keys as production trust anchors.
21
+
22
+ Path guards, task identity, source/manifest hashes, evidence freshness, signer policy and approval invariants are security-relevant contracts. Report any bypass that allows cross-project memory, cross-task evidence, stale runtime output or unreviewed Git side effects.
23
+
24
+ See the [signed attestation reference](references/signed-attestation.md), [browser review contract](references/browser-review-contract.md) and [2.2.0 release note](docs/releases/2.2.0.md) for the current threat model and limitations.
25
+
26
+ ## CI/CD controls
27
+
28
+ GitHub Actions workflows default to read-only repository permissions. The publication workflow is manual-only, uses the protected `npm-release` environment, requests OIDC only for the release job, and keeps npm credentials in environment secrets. Dependency updates are proposed by Dependabot as pull requests rather than applied directly to `main`.
package/SKILL.md CHANGED
@@ -7,30 +7,49 @@ description: >-
7
7
  validate, review, or deliver animation inside an existing project.
8
8
  license: MIT
9
9
  metadata:
10
- version: "2.0.0"
10
+ version: "2.2.0"
11
11
  target_frameworks: "lottie,dotlottie,rive,gsap,framer-motion,spine,threejs"
12
12
  verified_runtimes: "lottie-json,dotlottie-package,svg-cutout-rig,rive,gsap,framer-motion"
13
13
  ---
14
14
 
15
15
  # MotionLoom Skill
16
16
 
17
+ > Public repository: [github.com/lenhonbp/MotionLoom](https://github.com/lenhonbp/MotionLoom) · npm: [motionloom](https://www.npmjs.com/package/motionloom) · release navigation: [CHANGELOG.md](CHANGELOG.md) · future work: [ROADMAP.md](ROADMAP.md)
18
+
17
19
  Treat every animation request as a production task, not as an isolated asset-generation prompt. Always bind the work to the host project's context, emit machine-readable artifacts, render through the target runtime, expose review evidence in Dev Lab, and stop before commit when a required gate or user confirmation is missing.
18
20
 
19
21
  ## Required workflow
20
22
 
21
- 1. **Understand** — read the host project manifest and run `bash scripts/analyze.sh <project-path>`. Load `project-context.json` from the audited project. If context is missing or ambiguous, stop at `needs_context`.
23
+ 1. **Understand** — read the host project manifest and run `motionloom analyze <project-path> --init-memory` (or `python scripts/analyze.py <project-path> --init-memory` in a repository checkout). Load `project-context.json` and `.motionloom/project-memory.json` from the audited project. If context is missing, stale or ambiguous, stop at `needs_context` and refresh before generation.
22
24
  2. **Plan** — classify the animation, select a framework, and generate a context-bound `motion-spec.json` with timing, easing, loop, accessibility, performance and source authority.
23
25
  3. **Source** — resolve an authoritative asset from the project or `assets/library/`. Record attribution, license and checksum in the scene manifest's required `source_binding`; the binding's SHA-256 must match the bytes referenced by `manifest.file`. Do not promote an unknown or placeholder asset to production.
24
26
  4. **Generate** — use the matching template or rig implementation. For body animation, preserve named anatomy, pivot and parent-first hierarchy.
25
- 5. **Render** — run `bash scripts/render.sh <scene>` for scene output, or `node scripts/runtime-adapters.mjs` for the verified Rive/GSAP/Framer Motion adapter matrix. Acceptance requires runtime evidence at 0/50/100%, not a static placeholder. Keep the render metadata beside the snapshots.
27
+ 5. **Render** — run the platform-neutral Node entrypoint for scene output, or `node scripts/runtime-adapters.mjs` for the verified Rive/GSAP/Framer Motion adapter matrix. Acceptance requires runtime evidence at 0/50/100%, not a static placeholder. Keep the render metadata beside the snapshots.
26
28
  6. **Bind Intelligence Core** — build a framework-neutral `motion-ir.json`, `project-graph.json`, `provenance.json`, `replay-bundle.json`, `semantic-lint-report.json` and `semantic-lint-benchmark.json` with `python3 scripts/intelligence.py`. Select only a capability registry entry whose status is `verified`, whose evidence is fresh and whose compatibility matches the target environment. A confidence score or benchmark result can prioritize investigation; neither can replace deterministic or human acceptance.
27
29
  6a. **Harden the trust boundary** — keep artifact and task bundles inside the repository/task root, reject symlinked evidence, bind replay to its exact `task_dir`, `task_id` and scene, select one deterministic report bundle per scene, and require browser candidate/review identity and expiry checks before readiness. The Dev Lab must reject cross-origin or identity-mismatched artifact bases. In strict runtime-observability runs, capture `runtime-telemetry.json` and a read-only `evidence-verifier-report.json`; verifier output must preserve `approval: false`. These checks expose risk and prevent evidence mixing, but do not turn heuristics or evidence integrity into approval.
28
30
  6b. **Attest** — derive a canonical statement from the exact scene/task hashes, sign it with an Ed25519 key through `scripts/attestation.py`, and verify it with the independent `scripts/attestation-verifier.py` against a fail-closed `trust-policy.json`. DSSE/SLSA-compatible attestation proves signer and binding integrity only; `approval` must remain `false` and never replaces user review.
29
- 7. **Browser review handoff** — run `python3 scripts/review-hook.py prepare --task-dir artifacts/<task-id> --lab-url <internal-lab-url>`. The hook prepares the exact candidate and emits a JSON action for a browser-capable Agent. Trigger or suggest that Agent to open the emitted URL, inspect frames 0/50/100, scrub the timeline and ask the user to review. This is not a separate Dev Lab Skill; it is a required post-render handoff.
31
+ 7. **Visual truth and browser review handoff** — after runtime rendering, build `visual-truth.json` from real baseline/candidate PNGs with `motionloom visual-truth build`. The contract records frame hashes, dimensions, runtime/source/manifest provenance and region-level review explanations; a changed frame means `review_required`, never automatic failure or approval. Then run `python3 scripts/review-hook.py prepare --task-dir artifacts/<task-id> --lab-url <internal-lab-url>`. The hook prepares the exact candidate and emits a JSON action for a browser-capable Agent. Trigger or suggest that Agent to open the emitted URL, inspect frames 0/50/100, scrub the timeline and ask the user to review. This is not a separate Dev Lab Skill; it is a required post-render handoff.
30
32
  8. **Review capture** — the browser Agent calls `window.__lab.getReview()` after the user approves or requests changes, then persists it with `python3 scripts/report.py review --task-dir artifacts/<task-id> --candidate-id <id> --decision approved|changes_requested --reviewer user`. A change request returns to generation; no approval means no PR.
31
- 9. **Validate** — run `python3 scripts/review-hook.py validate --task-dir artifacts/<task-id>`, `python3 scripts/intelligence.py semantic-lint benchmark --task-dir artifacts/<task-id> --iterations 25 --threshold-ms 500`, `bash scripts/capture-runtime-telemetry.sh <scene> artifacts/<task-id>`, the independent attestation verifier, `python3 scripts/report-contract.py --root . --scenes-file <changed-scenes> --require-attestation`, `python3 scripts/quality-gate.py --scene <scene> --context <context-path> --task-dir artifacts/<task-id> --require-intelligence --require-p1 --require-benchmark --require-telemetry --require-attestation`, and `python3 scripts/skill-doctor.py --json` when validating the Skill package itself.
33
+ 9. **Validate** — run `motionloom visual-truth validate --root . --input src/output/<scene>/visual-truth.json --scene <scene> --task-id <task-id>`, `motionloom review-hook validate --task-dir artifacts/<task-id>`, `motionloom intelligence semantic-lint benchmark --task-dir artifacts/<task-id> --iterations 25 --threshold-ms 500`, `motionloom runtime-telemetry <scene> artifacts/<task-id>`, the independent attestation verifier, `motionloom report-contract --root . --scenes-file <changed-scenes> --require-attestation`, `motionloom quality-gate --scene <scene> --context <context-path> --task-dir artifacts/<task-id> --require-intelligence --require-p1 --require-benchmark --require-telemetry --require-attestation --require-visual-truth`, and `motionloom doctor --json` when validating the Skill package itself.
32
34
  10. **Report** — create or update an artifact bundle with `python3 scripts/report.py`. Record facts with `report.py add`, structural defects with `report.py structure`, collect checksums with `report.py collect`, and run `report.py check` before rendering the final report. The final report must state completed, verified, not completed, blocked/failed, structure problems, browser candidate/review evidence and the recommended next Agent/Skill.
33
- 11. **Confirm** — only after approved browser review and a passing quality gate run `TASK_DIR=artifacts/<task-id> bash scripts/pr.sh <scene>`. Commit, push and open PR are explicit side effects.
35
+ 11. **Learn** — after a user-confirmed fix or a deterministic benchmark, record it with `motionloom remediation-learning record-outcome|record-benchmark`. Run `summary` to expose correction count, first-pass acceptance, success rate, issue-class outliers and benchmark pass rate. Only `--user-confirmed` outcomes contribute to remediation acceptance metrics.
36
+ 12. **Confirm** — only after approved browser review and a passing quality gate run the platform-neutral PR preparation command. Commit, push and open PR are explicit side effects.
37
+
38
+ ## Durable Project Memory
39
+
40
+ MotionLoom does not treat chat history as durable project memory. At the beginning of an animation task, load `.motionloom/project-memory.json`, validate its project identity and freshness, then recover the current project context. The memory records motion principles, asset/runtime policy, accepted and rejected decisions, user-confirmed remediation outcomes and invalidation metadata. It must remain task/project-bound and must never be copied across projects merely because the files look similar.
41
+
42
+ Use the cross-platform CLI surface:
43
+
44
+ ```text
45
+ motionloom memory init --project-root <project>
46
+ motionloom memory inspect --project-root <project> --json
47
+ motionloom memory refresh --project-root <project> --json
48
+ motionloom memory recover --project-root <project> --json
49
+ motionloom memory validate --project-root <project> --json
50
+ ```
51
+
52
+ Only user-confirmed decisions and outcomes may become durable remediation memory. A stale or mismatched memory must produce a machine-readable failure/recovery state; it must not silently influence generation or approval. Ubuntu, macOS and Windows are supported through the Node CLI wrapper and Python path APIs. Do not require Bash, fixed `/tmp` paths, POSIX separators or system `zip`/`unzip` in the npm command surface.
34
53
 
35
54
  ## Progressive disclosure
36
55
 
@@ -43,6 +62,7 @@ Treat every animation request as a production task, not as an isolated asset-gen
43
62
  - Read `docs/ROADMAP-INTELLIGENCE.md` before extending graph, provenance, capability or replay behavior.
44
63
  - Read `references/intelligence-core.md` before building or validating Intelligence Core artifacts.
45
64
  - Read `docs/research/AGENT-PROTOCOL-FINDINGS.md` before exposing MotionLoom through Agent tools or MCP resources.
65
+ - Read `references/agent-interoperability.md` when installing MotionLoom into Codex, Claude Code, Cursor, OpenCode or another Agent environment; run `motionloom discovery check --root <motionloom-checkout> --json` before relying on a surface.
46
66
 
47
67
  ## Non-negotiable contracts
48
68
 
@@ -57,6 +77,8 @@ Treat every animation request as a production task, not as an isolated asset-gen
57
77
  - Browser-review candidates are single-use, time-bounded and bound to the exact task, scene and candidate identity; Dev Lab artifact/task bases must be same-origin and identity-consistent before staging a review decision.
58
78
  - Report completeness must select one deterministic passing task bundle per scene and fail on ambiguous ties; a valid artifact is never sufficient to bypass explicit user approval.
59
79
  - Runtime telemetry must bind task, scene, source, manifest, Motion IR and deterministic scrub points; tampered, stale, missing or cross-task telemetry is a verification failure.
80
+ - Visual Truth must bind baseline/candidate PNG hashes, dimensions, source, manifest, runtime evidence and Motion IR where available; it explains changed regions for review but never emits approval.
81
+ - Remediation Learning history is append-only and hash-chained; correction counts and first-pass acceptance guide the next Agent but never approve an artifact or replace current-task evidence.
60
82
  - Signed attestation must bind the same task, scene, context, source, manifest, Motion IR and evidence hashes; unknown, expired or revoked signers fail closed. Attestation verification is an integrity result only and must preserve `approval: false`.
61
83
 
62
84
  ## Framework boundary
@@ -70,12 +92,38 @@ Every production `src/output/<scene>/manifest.json` must include a `source_bindi
70
92
  The Intelligence Core contracts are defined in `schemas/project-graph.schema.json`, `schemas/provenance.schema.json`, `schemas/capability-registry.schema.json`, `schemas/motion-ir.schema.json`, `schemas/signed-attestation.schema.json` and `schemas/trust-policy.schema.json`. They make project relationships, supply-chain steps, runtime selection, framework-neutral intent and signer trust inspectable without relying on prose.
71
93
 
72
94
  ```bash
73
- # Package a Lottie JSON scene as a dotLottie v2 archive.
74
- bash scripts/to-dotlottie.sh <scene> [output.lottie]
95
+ # Package a Lottie JSON scene as a dotLottie v2 archive (Node/fflate; no system zip required).
96
+ node scripts/to-dotlottie.mjs --scene-dir src/output/<scene> --output src/output/<scene>/animation.lottie
97
+
98
+ # Initialize and recover durable project memory.
99
+ motionloom memory init --project-root <project-path>
100
+ motionloom memory recover --project-root <project-path> --json
75
101
 
76
102
  # Run the official runtime adapters in a real browser harness.
77
103
  node scripts/runtime-adapters.mjs
78
104
 
105
+ # Capture and verify runtime telemetry without Bash dependencies.
106
+ motionloom runtime-telemetry <scene> artifacts/<task-id>
107
+
108
+ # Build and validate a provenance-bound visual comparison from real runtime PNGs.
109
+ motionloom visual-truth build --root . --scene <scene> \
110
+ --baseline src/output/<scene>/snapshot/frame-00.png \
111
+ --candidate src/output/<scene>/snapshot/frame-100.png \
112
+ --source src/output/<scene>/<source-file> \
113
+ --manifest src/output/<scene>/manifest.json \
114
+ --runtime-evidence artifacts/<task-id>/runtime-adapters/runtime-evidence.json \
115
+ --motion-ir artifacts/<task-id>/motion-ir.json --task-id <task-id> \
116
+ --output src/output/<scene>/visual-truth.json
117
+ motionloom visual-truth validate --root . --input src/output/<scene>/visual-truth.json \
118
+ --scene <scene> --task-id <task-id>
119
+
120
+ # Record only a user-confirmed remediation outcome, then summarize durable learning.
121
+ motionloom remediation-learning record-outcome --history artifacts/remediation-history.jsonl \
122
+ --event-id outcome-001 --issue-id easing-drift --summary "User accepted easing correction" \
123
+ --result pass --correction-count 1 --source-task-id <task-id> --user-confirmed --json
124
+ motionloom remediation-learning summary --history artifacts/remediation-history.jsonl \
125
+ --output artifacts/remediation-summary.json --json
126
+
79
127
  # Build the task-bound Intelligence Core artifacts.
80
128
  python3 scripts/intelligence.py motion-ir build --task-dir artifacts/<task-id>
81
129
  python3 scripts/intelligence.py graph build --task-dir artifacts/<task-id>
@@ -96,7 +144,7 @@ python3 scripts/attestation-verifier.py --attestation artifacts/<task-id>/attest
96
144
 
97
145
  `runtime-evidence.json` records the runtime package, three scrub points, observed state and generated snapshots. A template alone is never enough to upgrade a framework from `scaffold_only` to `verified`.
98
146
 
99
- For an observability-enabled run, `bash scripts/capture-runtime-telemetry.sh <scene> artifacts/<task-id>` regenerates the real-browser evidence and writes telemetry under the task bundle. `scripts/evidence-verifier.py` then checks task/scene/hash/path/age bindings with stable machine-readable output. A verifier pass means the evidence is internally consistent; it does not mean the animation is approved.
147
+ For an observability-enabled run, use the platform-neutral runtime telemetry entrypoint exposed by the package. It regenerates the real-browser evidence and writes telemetry under the task bundle. `scripts/evidence-verifier.py` then checks task/scene/hash/path/age bindings with stable machine-readable output. A verifier pass means the evidence is internally consistent; it does not mean the animation is approved.
100
148
 
101
149
  ## Output contract
102
150
 
package/SUPPORT.md ADDED
@@ -0,0 +1,23 @@
1
+ # Support
2
+
3
+ MotionLoom is a public Agent Skill and npm package. Start with the [README](README.md), [SKILL.md](SKILL.md), [production checklist](docs/CHECKLIST.md), [framework selection guide](docs/FRAMEWORK-SELECTION.md) and [runtime capability reference](references/runtime-capability.md).
4
+
5
+ ## Choose the right channel
6
+
7
+ | Situation | Use |
8
+ |---|---|
9
+ | A reproducible defect in code, schema, CLI or runtime adapter | [Bug report](https://github.com/lenhonbp/MotionLoom/issues/new?template=bug_report.yml) |
10
+ | A proposed capability or workflow improvement | [Feature request](https://github.com/lenhonbp/MotionLoom/issues/new?template=feature_request.yml) |
11
+ | A security or privacy concern | [SECURITY.md](SECURITY.md), never a public issue with exploit details |
12
+ | A documentation correction | Open a small pull request or use a documentation issue |
13
+ | A usage question | Search the README/docs first, then open an issue with the exact command and environment if no answer exists |
14
+
15
+ ## Troubleshooting order
16
+
17
+ Run `motionloom doctor --json`, confirm Node/Python versions, inspect the JSON exit code, check that the task bundle and project context belong to the same project, and rerun the smallest relevant contract test. A `needs_context`, `stale`, `invalid` or `blocked` state is an actionable result, not an invitation to bypass the gate.
18
+
19
+ When asking for help, include sanitized command output, the operating system, package version, runtime/framework, task state and a minimal fixture. Do not upload `.motionloom/project-memory.json`, private project context, private assets, credentials, signing keys or browser session data unless they are synthetic and safe to share.
20
+
21
+ ## Maintainer response
22
+
23
+ The project is maintained on a best-effort basis. A response may request a reproducible fixture or a contract-level test before implementation. Feature requests are evaluated against the [roadmap](ROADMAP.md), user-control principles and the project's ability to produce verifiable runtime evidence.
package/agent-card.json CHANGED
@@ -1,10 +1,20 @@
1
1
  {
2
2
  "card_version": "1.0",
3
3
  "name": "motionloom",
4
- "version": "2.0.0",
5
- "description": "Project-aware animation production with graph, provenance, framework-neutral motion IR, runtime verification and telemetry, DSSE-compatible signed attestation, external evidence verification, semantic feedback, continuity checks, internal browser review, trust-boundary hardening and deterministic Agent handoff.",
4
+ "version": "2.2.0",
5
+ "description": "Project-aware animation production with durable Project Memory, graph, provenance, framework-neutral motion IR, runtime verification and telemetry, Visual Truth, Remediation Learning, DSSE-compatible signed attestation, external evidence verification, semantic feedback, continuity checks, internal browser review, trust-boundary hardening and deterministic Agent handoff.",
6
6
  "capabilities": [
7
+ "agent.discovery.check",
8
+ "agent.discovery.source",
9
+ "agent.discovery.install-matrix",
7
10
  "project.analyze",
11
+ "project.memory.init",
12
+ "project.memory.inspect",
13
+ "project.memory.refresh",
14
+ "project.memory.recover",
15
+ "project.memory.validate",
16
+ "project.memory.record-decision",
17
+ "project.memory.record-outcome",
8
18
  "project.graph.build",
9
19
  "project.graph.validate",
10
20
  "motion.plan",
@@ -35,6 +45,12 @@
35
45
  "runtime.verify.framer-motion",
36
46
  "runtime.telemetry.capture",
37
47
  "runtime.telemetry.validate",
48
+ "visual-truth.build",
49
+ "visual-truth.validate",
50
+ "remediation-learning.record-outcome",
51
+ "remediation-learning.record-benchmark",
52
+ "remediation-learning.validate",
53
+ "remediation-learning.summary",
38
54
  "evidence.verify.external",
39
55
  "attestation.statement.build",
40
56
  "attestation.sign.ed25519",
@@ -56,6 +72,7 @@
56
72
  "source-asset"
57
73
  ],
58
74
  "output_artifacts": [
75
+ "agent-discovery-report",
59
76
  "project-context",
60
77
  "motion-spec",
61
78
  "runtime-scene",
@@ -79,7 +96,11 @@
79
96
  "replay-bundle",
80
97
  "semantic-lint-report",
81
98
  "semantic-lint-benchmark",
99
+ "visual-truth",
100
+ "remediation-history",
101
+ "remediation-summary",
82
102
  "hardening-audit-report",
103
+ "project-memory",
83
104
  "continuity-report",
84
105
  "fix-plan",
85
106
  "pr-patch"
@@ -124,16 +145,26 @@
124
145
  }
125
146
  ],
126
147
  "entrypoints": {
127
- "analyze": "bash scripts/analyze.sh <project-path>",
148
+ "discovery_check": "motionloom discovery check --root <motionloom-checkout> --json",
149
+ "discovery_source": "motionloom discovery source --root <motionloom-checkout> --json",
150
+ "discovery_install_matrix": "motionloom discovery install-matrix --root <motionloom-checkout> --json",
151
+ "analyze": "motionloom analyze <project-path> --init-memory",
152
+ "memory_init": "motionloom memory init --project-root <project-path>",
153
+ "memory_inspect": "motionloom memory inspect --project-root <project-path> --json",
154
+ "memory_refresh": "motionloom memory refresh --project-root <project-path> --json",
155
+ "memory_recover": "motionloom memory recover --project-root <project-path> --json",
156
+ "memory_validate": "motionloom memory validate --project-root <project-path> --json",
157
+ "memory_decision": "motionloom memory record-decision --project-root <project-path> --id <id> --status accepted|rejected --summary <summary> --user-confirmed",
158
+ "memory_outcome": "motionloom memory record-outcome --project-root <project-path> --id <id> --result <result> --user-confirmed",
128
159
  "report_init": "python3 scripts/report.py init --task-id <id>",
129
160
  "report_collect": "python3 scripts/report.py collect --task-dir <dir>",
130
161
  "report_render": "python3 scripts/report.py render --task-dir <dir>",
131
162
  "skill_doctor": "python3 scripts/skill-doctor.py --json",
132
163
  "quality_gate": "python3 scripts/quality-gate.py --scene <scene> --context <path>",
133
164
  "manifest_bind_source": "python3 scripts/manifest.py bind-source --scene <scene> --source <file> --kind <kind> --authority <authority> --license <license>",
134
- "dotlottie_package": "bash scripts/to-dotlottie.sh <scene> [output.lottie]",
165
+ "dotlottie_package": "motionloom manifest package-dotlottie --scene <scene> [--output <output.lottie>]",
135
166
  "runtime_adapter_test": "node scripts/runtime-adapters.mjs",
136
- "runtime_telemetry": "bash scripts/capture-runtime-telemetry.sh <scene> artifacts/<task-id>",
167
+ "runtime_telemetry": "node scripts/capture-runtime-telemetry.mjs <scene> artifacts/<task-id>",
137
168
  "evidence_verify": "python3 scripts/evidence-verifier.py --scene-dir src/output/<scene> --task-dir artifacts/<task-id> --runtime-evidence runtime-adapters/runtime-evidence.json --max-age-days 1 --output artifacts/<task-id>/evidence-verifier-report.json",
138
169
  "intelligence_graph": "python3 scripts/intelligence.py graph build --task-dir artifacts/<task-id>",
139
170
  "intelligence_provenance": "python3 scripts/intelligence.py provenance build --task-dir artifacts/<task-id>",
@@ -150,9 +181,14 @@
150
181
  "attestation_verify": "python3 scripts/attestation-verifier.py --attestation artifacts/<task-id>/attestation.json --trust-policy artifacts/<task-id>/trust-policy.json --expected-task-id <task-id> --expected-scene <scene>",
151
182
  "attestation_report": "python3 scripts/attestation-verifier.py --attestation artifacts/<task-id>/attestation.json --trust-policy artifacts/<task-id>/trust-policy.json --expected-task-id <task-id> --expected-scene <scene> --output artifacts/<task-id>/attestation-verifier-report.json",
152
183
  "quality_gate_attestation": "python3 scripts/quality-gate.py --scene <scene> --context <path> --task-dir artifacts/<task-id> --require-browser-review --require-intelligence --require-p1 --require-benchmark --require-telemetry --require-attestation",
184
+ "visual_truth_build": "motionloom visual-truth build --root <project-path> --scene <scene> --baseline <baseline.png> --candidate <candidate.png> --output src/output/<scene>/visual-truth.json",
185
+ "visual_truth_validate": "motionloom visual-truth validate --root <project-path> --input src/output/<scene>/visual-truth.json --scene <scene> --task-id <task-id>",
186
+ "remediation_record_outcome": "motionloom remediation-learning record-outcome --history artifacts/remediation-history.jsonl --event-id <id> --issue-id <issue-id> --summary <summary> --result pass|fail|partial|unknown --correction-count <n> --user-confirmed",
187
+ "remediation_record_benchmark": "motionloom remediation-learning record-benchmark --history artifacts/remediation-history.jsonl --event-id <id> --operation <operation> --task-id <task-id> --scene <scene> --iterations <n> --p95-ms <ms> --threshold-ms <ms>",
188
+ "remediation_summary": "motionloom remediation-learning summary --history artifacts/remediation-history.jsonl --output artifacts/remediation-summary.json --json",
153
189
  "browser_review_prepare": "python3 scripts/review-hook.py prepare --task-dir artifacts/<task-id> --lab-url <internal-lab-url>",
154
190
  "browser_review_validate": "python3 scripts/review-hook.py validate --task-dir artifacts/<task-id>",
155
- "pr_prepare": "bash scripts/pr.sh <scene>"
191
+ "pr_prepare": "node scripts/pr.mjs <scene>"
156
192
  },
157
193
  "report_contract": {
158
194
  "required_sections": ["completed", "verified", "not_completed", "problems", "structure_review", "next_agent", "browser_review"],
@@ -0,0 +1,79 @@
1
+ {
2
+ "schema_version": "1.0",
3
+ "name": "motionloom",
4
+ "version": "2.2.0",
5
+ "canonical": {
6
+ "skill": "SKILL.md",
7
+ "agent_card": "agent-card.json",
8
+ "cli": "bin/motionloom.mjs"
9
+ },
10
+ "surfaces": [
11
+ {
12
+ "id": "agents-skills",
13
+ "kind": "agent-skill",
14
+ "path": ".agents/skills/motionloom/SKILL.md",
15
+ "canonical": "SKILL.md",
16
+ "load_mode": "alias",
17
+ "agents": ["codex", "claude-code", "cursor", "opencode"]
18
+ },
19
+ {
20
+ "id": "claude-code",
21
+ "kind": "agent-instructions",
22
+ "path": ".claude/skills/motionloom.md",
23
+ "canonical": "SKILL.md",
24
+ "load_mode": "alias",
25
+ "agents": ["claude-code"]
26
+ },
27
+ {
28
+ "id": "codex",
29
+ "kind": "agent-instructions",
30
+ "path": ".codex/skills/motionloom.md",
31
+ "canonical": "SKILL.md",
32
+ "load_mode": "alias",
33
+ "agents": ["codex"]
34
+ },
35
+ {
36
+ "id": "repository-agent-guide",
37
+ "kind": "repository-guide",
38
+ "path": "AGENTS.md",
39
+ "canonical": "SKILL.md",
40
+ "load_mode": "router",
41
+ "agents": ["codex", "claude-code", "cursor", "opencode"]
42
+ }
43
+ ],
44
+ "installations": [
45
+ {
46
+ "id": "npm-registry",
47
+ "source_kind": "npm",
48
+ "command": "npm install --save-dev motionloom",
49
+ "verification": "motionloom discovery check --root . --json",
50
+ "provenance": "package-lock-or-pnpm-lock"
51
+ },
52
+ {
53
+ "id": "github-checkout",
54
+ "source_kind": "git",
55
+ "command": "git clone https://github.com/lenhonbp/MotionLoom.git",
56
+ "verification": "node bin/motionloom.mjs discovery check --root . --json",
57
+ "provenance": "git-commit-and-remote"
58
+ },
59
+ {
60
+ "id": "local-source",
61
+ "source_kind": "local",
62
+ "command": "node <motionloom-checkout>/bin/motionloom.mjs discovery check --root <motionloom-checkout> --json",
63
+ "verification": "python3 scripts/discovery.py check --root . --json",
64
+ "provenance": "absolute-or-relative-source-path"
65
+ }
66
+ ],
67
+ "compatibility": {
68
+ "operating_systems": ["ubuntu", "macos", "windows"],
69
+ "node": ">=18",
70
+ "python": ">=3.11",
71
+ "agents": ["codex", "claude-code", "cursor", "opencode"]
72
+ },
73
+ "rules": {
74
+ "canonical_instruction_source": "SKILL.md",
75
+ "no_surface_copy": true,
76
+ "no_network_required_for_check": true,
77
+ "approval_is_never_inferred": true
78
+ }
79
+ }
@@ -2,7 +2,7 @@
2
2
  /**
3
3
  * MotionLoom npm entrypoint.
4
4
  * Style: Timeline Desk — terse command routing, explicit evidence verbs and
5
- * no hidden approval side effects. The CLI delegates to the shipped Python
5
+ * no hidden approval side effects. The CLI delegates to shipped Python/Node
6
6
  * contracts so npm installation and repository execution use one surface.
7
7
  */
8
8
  import { fileURLToPath } from "node:url";
@@ -13,8 +13,10 @@ const ROOT = resolve(dirname(fileURLToPath(import.meta.url)), "..");
13
13
  const PYTHON = process.env.MOTIONLOOM_PYTHON || (process.platform === "win32" ? "python" : "python3");
14
14
 
15
15
  const PYTHON_COMMANDS = {
16
- analyze: "scripts/analyze.sh",
16
+ analyze: "scripts/analyze.py",
17
+ memory: "scripts/project-memory.py",
17
18
  attestation: "scripts/attestation.py",
19
+ "attestation-keygen": "scripts/attestation-keygen.py",
18
20
  "verify-attestation": "scripts/attestation-verifier.py",
19
21
  doctor: "scripts/skill-doctor.py",
20
22
  intelligence: "scripts/intelligence.py",
@@ -24,19 +26,29 @@ const PYTHON_COMMANDS = {
24
26
  "report-contract": "scripts/report-contract.py",
25
27
  report: "scripts/report.py",
26
28
  "review-hook": "scripts/review-hook.py",
29
+ devlab: "scripts/devlab.py",
30
+ "runtime-telemetry": "scripts/capture-runtime-telemetry.py",
31
+ render: "scripts/render.py",
32
+ pr: "scripts/pr.py",
27
33
  "validate-lottie": "scripts/validate-lottie.py",
28
34
  manifest: "scripts/manifest.py",
35
+ test: "tests/scripts/run_tests.py",
36
+ "deep-audit": "tests/scripts/deep-stress.py",
37
+ discovery: "scripts/discovery.py",
38
+ "visual-truth": "scripts/visual-truth.py",
39
+ "remediation-learning": "scripts/remediation-learning.py",
29
40
  };
30
41
 
31
42
  function printHelp() {
32
- console.log(`MotionLoom 2.0.0 — project-aware animation production and evidence contracts
43
+ console.log(`MotionLoom 2.2.0 — project-aware animation production and evidence contracts
33
44
 
34
45
  Usage:
35
46
  motionloom <command> [args...]
36
47
 
37
48
  Commands:
38
49
  doctor Validate the installed Skill package
39
- analyze Run project analysis (delegates to scripts/analyze.sh)
50
+ analyze Run project analysis and refresh Project Memory
51
+ memory Initialize, inspect, refresh, recover or validate memory
40
52
  intelligence Build or validate Intelligence Core artifacts
41
53
  attestation Build/validate canonical signed-attestation artifacts
42
54
  verify-attestation Verify an attestation against a trust policy
@@ -44,10 +56,26 @@ Commands:
44
56
  quality-gate Run the strict scene acceptance gate
45
57
  report-contract Validate task bundle completeness
46
58
  review-hook Prepare or validate browser review handoff
59
+ devlab Prepare or serve the internal Dev Lab cross-platform
60
+ runtime-telemetry Capture and externally verify runtime telemetry
47
61
  report Read or update task review reports
48
62
  validate-lottie Validate a Lottie animation
49
63
  manifest Build or validate a production manifest
50
64
  eval-intelligence Run adversarial Intelligence Core evaluation
65
+ discovery Check Agent surfaces, source identity and install matrix
66
+ visual-truth Build or validate provenance-bound visual comparisons
67
+ remediation-learning Record or summarize user-confirmed remediation and benchmark history
68
+
69
+ Cross-platform examples:
70
+ motionloom analyze . --init-memory
71
+ motionloom memory recover --project-root .
72
+ motionloom memory refresh --project-root . --json
73
+ motionloom memory record-decision --project-root . --id ui-easing \\
74
+ --status accepted --summary "Use ease-out for UI entry" --user-confirmed
75
+ motionloom discovery check --root . --json
76
+ motionloom discovery install-matrix --root . --json
77
+ motionloom visual-truth validate --root . --input src/output/<scene>/visual-truth.json
78
+ motionloom remediation-learning summary --history artifacts/remediation-history.jsonl --json
51
79
 
52
80
  The CLI never grants approval or opens a pull request by itself. User review
53
81
  and explicit repository side-effect confirmation remain separate gates.
@@ -67,7 +95,7 @@ if (!script) {
67
95
  process.exit(2);
68
96
  }
69
97
 
70
- const executable = script.endsWith(".sh") ? "bash" : PYTHON;
98
+ const executable = script.endsWith(".mjs") ? process.execPath : PYTHON;
71
99
  const result = spawnSync(executable, [resolve(ROOT, script), ...args], {
72
100
  cwd: ROOT,
73
101
  stdio: "inherit",
@@ -0,0 +1,47 @@
1
+ # Agent interoperability and installation contract
2
+
3
+ MotionLoom is distributed as one Skill with several **discovery surfaces**, not as several independent Skills. The root `SKILL.md` is canonical. `agent-card.json` is the capability contract. `agent-surfaces.json` records the supported surfaces, installation sources and compatibility policy.
4
+
5
+ ## Install sources
6
+
7
+ | Source | Typical command | Verification | Provenance to retain |
8
+ |---|---|---|---|
9
+ | npm registry | `npm install --save-dev motionloom` | `motionloom discovery check --root . --json` | lockfile and resolved package version |
10
+ | Git checkout | `git clone https://github.com/lenhonbp/MotionLoom.git` | `node bin/motionloom.mjs discovery check --root . --json` | remote URL and commit SHA |
11
+ | Local source | invoke `<checkout>/bin/motionloom.mjs` | `python3 scripts/discovery.py check --root . --json` | source path and local commit if present |
12
+
13
+ The check is offline and read-only. Installation, source identity and capability compatibility are separate from network authentication. A passing check means that the package is structurally discoverable; it does not mean that a scene is runtime-verified or approved.
14
+
15
+ ## Agent surfaces
16
+
17
+ | Surface | Path | Role |
18
+ |---|---|---|
19
+ | Agent Skills | `.agents/skills/motionloom/SKILL.md` | Portable alias for Agent Skills discovery |
20
+ | Claude Code | `.claude/skills/motionloom.md` | Claude-specific router to the canonical Skill |
21
+ | Codex | `.codex/skills/motionloom.md` | Codex-specific router to the canonical Skill |
22
+ | Repository router | `AGENTS.md` | Short first-load instructions for repository-aware Agents |
23
+
24
+ These files deliberately remain short. They must not become a second instruction source. Every surface points back to `SKILL.md`; drift is a contract failure and is checked by `motionloom discovery check` and the documentation audit.
25
+
26
+ ## Agent compatibility matrix
27
+
28
+ | Agent | Discovery surface | Expected first action | Review boundary |
29
+ |---|---|---|---|
30
+ | Codex | `.codex/skills/motionloom.md`, `.agents/skills/motionloom/SKILL.md` | Run discovery check, load root Skill and Agent Card | No commit/push/PR without explicit user confirmation |
31
+ | Claude Code | `.claude/skills/motionloom.md`, `.agents/skills/motionloom/SKILL.md` | Run discovery check, load root Skill and Agent Card | Same review-first gate |
32
+ | Cursor | `.agents/skills/motionloom/SKILL.md`, `AGENTS.md` | Load canonical Skill through repository rules | Same review-first gate |
33
+ | OpenCode | `.agents/skills/motionloom/SKILL.md`, `AGENTS.md` | Load canonical Skill and run discovery check | Same review-first gate |
34
+
35
+ Support here means that the repository exposes a deterministic discovery contract. It does not claim that every Agent version automatically loads every convention. The Agent must report when a surface is unavailable or when it cannot open the internal Dev Lab.
36
+
37
+ ## Required first-run sequence
38
+
39
+ Run `motionloom discovery check --root <checkout> --json`, inspect `source`, then run project analysis with `motionloom analyze <project> --init-memory`. Load the project context and durable Project Memory before planning. After rendering, prepare a task-bound browser candidate and suggest or trigger the internal Dev Lab. Capture user feedback separately from runtime evidence. A valid signature, quality gate or screenshot is not a user approval.
40
+
41
+ ## Portability policy
42
+
43
+ The npm entrypoint is the public cross-platform surface. Ubuntu, macOS and Windows must use Node argument arrays, Python `pathlib`, UTF-8 JSON and no required Bash, POSIX `/tmp`, system `zip` or system `unzip`. Bash wrappers may remain convenience scripts for repository contributors, but the discovery and validation commands must work through Node/Python on all supported operating systems.
44
+
45
+ ## Troubleshooting
46
+
47
+ If discovery fails, do not continue as if the Skill were loaded. Inspect the JSON `errors`, verify that the checkout has not mixed files from different versions, and rerun from the intended root. If the package version and `agent-surfaces.json` disagree, use the same source checkout or reinstall the package. If a runtime dependency is missing, report it as a blocker; do not replace runtime evidence with a static placeholder.
package/docs/CHECKLIST.md CHANGED
@@ -23,9 +23,10 @@ A scene is only ready for the confirm-into-PR step when every item below passes.
23
23
 
24
24
  ## Source traceability
25
25
  - [ ] Every geometric asset references an authoritative source (`assets/library/` or the host project) — flagged if invented.
26
- - [ ] `manifest.json` records framework, source path, license note, spec hash, and completed checklist entries.
26
+ - [ ] `manifest.json` records framework, source path, license note, spec hash, visual-truth path, and completed checklist entries.
27
27
 
28
28
  ## PR readiness
29
29
  - [ ] Snapshot PNGs exist for 0/50/100%.
30
+ - [ ] `visual-truth.json` binds real baseline/candidate frames to source, manifest and available runtime/Motion IR hashes; `approval` remains `false`.
30
31
  - [ ] `motion-spec.json` is bound to the exact `project-context.json` hash (implements == planned).
31
32
  - [ ] Dev Lab URL tested on mobile viewport and desktop.
package/docs/STATUS.md ADDED
@@ -0,0 +1,33 @@
1
+ # MotionLoom Current Status
2
+
3
+ > **Authority:** This document describes the current repository contract. Historical audit snapshots and benchmark reports remain valuable evidence, but they must not be read as claims about the latest checkout.
4
+
5
+ ## Current release posture
6
+
7
+ MotionLoom's repository source and package manifest are at **2.2.0 release-candidate metadata**. The public npm registry currently serves **2.1.0**, while the latest published GitHub Release/tag remains **v2.1.0**; the 2.2.0 tag, GitHub Release and npm publication are intentionally pending explicit maintainer approval. The repository has a cross-platform CLI, durable Project Memory, Agent interoperability surfaces, artifact-first handoff, runtime evidence, Visual Truth, Remediation Learning, signed attestation and a browser-based Dev Lab review contract. The protected manual release workflow verifies package/changelog/release-note alignment before publication.
8
+
9
+ The repository is **engineering-ready for continued integration work**, not a universal production certification for every animation framework or every host project. CI status must be read from the latest GitHub Actions run, not inferred from historical audit prose.
10
+
11
+ ## Evidence levels
12
+
13
+ | Capability | Current evidence level | What is actually proven | What is not implied |
14
+ |---|---|---|---|
15
+ | Lottie JSON and SVG cutout rig | End-to-end contract evidence | Context binding, source binding, runtime snapshots, Dev Lab review, quality gate and PR preflight have deterministic fixtures | Visual quality for every brand, asset or device |
16
+ | Rive, GSAP and Framer Motion | Adapter and fixture evidence | Framework-specific runtime adapters and smoke checks can render representative scenes through browser/runtime paths | Equivalent coverage to the Lottie path across arbitrary projects |
17
+ | Project Memory | Contract and relocation evidence | Stable project identity, atomic persistence, integrity guard, freshness states and path rebinding after relocation | Automatic correctness of an Agent's inferred decision |
18
+ | Semantic intelligence | Deterministic evaluation evidence | Project graph, provenance, Motion IR, continuity, fix-plan and adversarial/deep-stress contracts; bounded analyzer reports scan budgets and truncation | Human-level design judgment, external-project product-value evidence or guaranteed first-pass acceptance |
19
+ | Dev Lab | Review infrastructure evidence | Identity-bound candidate loading, deterministic scrub/snapshot, user checklist and review export | A visual editor, automatic approval or PR authorization |
20
+
21
+ ## Normative sources
22
+
23
+ Use the following order when sources disagree:
24
+
25
+ 1. The active schemas, validators and executable tests define machine-enforced behavior.
26
+ 2. `SKILL.md`, `agent-card.json` and the current README define the Agent-facing contract.
27
+ 3. This status document defines current capability posture and evidence boundaries.
28
+ 4. Versioned release notes and focused audit reports explain a release or milestone at the time it was produced.
29
+ 5. Root-level historical audit snapshots are context only and must be labeled historical.
30
+
31
+ ## Known next work
32
+
33
+ The bounded analyzer has now been exercised against a labeled external corpus; see the [dated evidence note](audits/external-project-corpus-2026-08-13.md). The highest-value remaining evidence work is paired product evaluation across more real projects, then closing version–tag–GitHub Release–npm provenance traceability through an approved manual release. Missing external projects are reported as `insufficient_evidence`, never as a pass. None of these items should weaken the user-review gate or convert heuristic warnings into approval.