# Originmain — Implementation Handoff > Living document. Updated after each layer is completed or substantially advanced. > Reference: `Originmain-Implementation-Guide-v1_0.md` (v1.0, April 2026) --- ## Layer Status Summary | Layer | Name | Status | Notes | |-------|-----------------------------|--------------|------------------------------------------------------------------| | 0 | Infrastructure & DevOps | ⏳ Deferred | Skipped for now per plan | | 1 | Canvas UI Shell | ✅ Complete | ArtboardTree, CodebaseFileTree, CodeDiffPanel | | 2 | Live Rendering Engine | ✅ Revised | CLI proxy + Live SDK; see RENDERING-ARCHITECTURE.md | | 3 | Visual Editing & Diff Engine| ✅ Complete | Diff engine (49 tests), SelectionOverlay, history store | | 4 | Origin Graph & Data Store | ✅ Complete | 3 migrations, RLS, Zod types, query helpers | | 5 | Design Language Runtime | ✅ Complete | New package, JSON Schema, Zod validator, token pipeline | | 6 | AI Completion Layer | ✅ Complete | Gateway, 5 features, prompt caching, Claude Opus 4.7 | | 7 | Agent Bridge (MCP) | ✅ Complete | 5 tools, HMAC auth, rate limiter, Cursor + Claude Code adapters | | 8 | Multi-Origin Ingestion | ✅ Complete | OriginIngester interface + 4 connectors | | 9 | Multiplayer & Presence | ✅ Foundation | Room schema, adapter interface, cursor palette — no app integration yet | | 10 | Platform & Extensions | ✅ Foundation | Plugin API, enterprise types (SSO/SCIM/audit), white-label theming | --- ## Layer 1 — Canvas UI Shell ✅ **Completed:** 2026-04-25 ### What was built #### Diff Engine integration (pre-Layer 1) - **`packages/diff-engine/src/schemas.ts`** — Zod schemas for `ComponentSnapshot` and `ComponentDiff` - **`packages/diff-engine/src/engine.ts`** — Core diff computation, Myers LCS, recursive child diffing - **`packages/diff-engine/src/myers.ts`** — Myers longest-common-subsequence algorithm - **`packages/diff-engine/src/patch.ts`** — Unified patch generation - **`packages/diff-engine/src/serialize.ts`** — Snapshot serialization to text - **49 tests, ~88% coverage, all passing** #### Canvas UI Shell components (NEW — additive only) - **`packages/app/src/components/navigator/ArtboardTree.tsx`** — Fluent 2 `Tree`/`TreeItem`/`TreeItemLayout` for workspace artboard hierarchy - **`packages/app/src/components/codebase/CodebaseFileTree.tsx`** — `@pierre/trees` standalone codebase file browser (separate from ArtboardNavigator.tsx) - **`packages/app/src/components/diff/CodeDiffPanel.tsx`** — `@pierre/diffs` `PatchDiff` renderer with unified diff patch string input ### Critical invariants - `ArtboardNavigator.tsx` must **never** be reversed or have its `@pierre/trees` FileTree removed - `ArtboardTree.tsx` and `CodebaseFileTree.tsx` are **separate** components - All new components are **additive** --- ## Layer 2 — Live Rendering Engine ✅ (Revised 2026-04-29) **Original:** 2026-04-25 — postMessage protocol, fiber hook, MF config, LiveArtboard iframe **Revised:** 2026-04-29 — Replaced non-functional cross-origin injection with two working modes > See **`RENDERING-ARCHITECTURE.md`** for the full design document. ### Why the original approach was non-functional The original `LiveArtboard.tsx` tried `iframe.contentDocument.createElement('script')` to inject the fiber hook. This fails for cross-origin iframes (the browser blocks DOM access), and the READY handshake had a circular dependency. See `RENDERING-ARCHITECTURE.md` §2 for details. ### Two rendering modes (both use the same postMessage protocol) #### Mode A — CLI Proxy (`@originmain/cli`) For active local development. User runs `npx @originmain/cli dev --target http://localhost:3000` and enters the proxy URL (`http://localhost:4170`) into the artboard. The proxy: 1. Strips `X-Frame-Options` / CSP headers from responses 2. Injects the fiber hook `