Completion Report: ANU-12 - Build the Anuva Bento Editor and Template Families
Status: Completion review passed; awaiting explicit ready-and-merge approval.
Implementation summary
ANU-12 adds:
- one production editor session for three independent Main, Companion, and Emphasis surface documents;
- a versioned, exact-origin, parent-source editor-host protocol with host-authoritative persistence and accepted revisions;
- versioned Signal and Paper template families with coordinated per-surface layouts, dimensions, transparency, safe areas, theme tokens, and semantic slots;
- pure semantic planning and atomic family/layout application that preserves compatible content and explicit user extras;
- one presentation-level undo/redo history across all affected surfaces;
- a closed, validated, revision-aware, auditable AI-operation catalog with no executable or arbitrary-patch form;
- external media/chart binding operations that preserve the ANU-11 embedded-font and external-non-font policy;
- a production editor-only build and deterministic offline package; and
- normative editor-host, templates, semantics, operations, media, undo, security, and example-family documentation.
The editor sends complete validated save requests but does not persist to a CMS, mint an accepted revision, invoke an AI model, upload assets, or own downstream Web, Python, or Unity integration.
Acceptance evidence
| Linear acceptance criterion | Result | Evidence |
|---|---|---|
| One editor instance edits all three independent surfaces while preserving presentation context | Pass | Production browser smoke switched Main, Companion, and Emphasis in one Bento store; surface documents, semantic content, dimensions, safe areas, dirty state, and composite history remained independent |
| A versioned template family styles all surfaces coherently and respects dimensions, transparency, and safe areas | Pass | Signal and Paper families each provide coordinated layouts for all three surfaces; focused checks and browser smoke covered 1280x720 Main, 640x720 Companion, 1280x360 Emphasis, declared safe areas, and transparent plus opaque Emphasis examples |
| Theme/layout/family changes preserve compatible semantic content and user extras, warn on unsafe mappings, and undo atomically | Pass | Pure plan/apply checks covered preservation, mapping warnings/rejections, input non-mutation, rollback, and generated cases; browser smoke applied both families and undid/redid the complete three-surface result in one action |
| Host messages validate origin, schema, revision, and runtime compatibility | Pass | Closed runtime validators and bridge tests reject malformed, wrong-origin, wrong-source, incompatible-runtime, stale-revision, and unsolicited messages; the real host harness completed ready, diagnostics, operation, save-request, and save-accepted with host revision production-1 to production-2 |
| AI primitives are typed, validated, auditable, surface-aware, and contain no unrestricted script execution | Pass | Closed operation union, expected-revision and target checks, stable actor/audit context, deterministic batch results, atomic rollback, and explicit rejection of scripts, callbacks, arbitrary selectors, JSON Patch, property paths, unsafe HTML, secrets, and binary payloads |
| Editor production mode disables public update/collaboration behavior and uses the same renderer version as the player | Pass | Host-managed mode constructs no collaboration session, initializes no IndexedDB recovery/version history, runs no upstream update check, blocks local file-save shortcuts, and routes Ctrl+S through the host bridge; browser network audit found no public service request; editor and player manifests both declare renderer 1.0.8-anuva-renderer.1 |
Verification summary
| Area | Result |
|---|---|
| TypeScript, unit, integration, and generated cases | npm run test:anuva passed 103 contract, 37 adapter, and 162 editor checks |
| Upstream regression | npm run build and the documented Windows single-file build passed |
| Convergence regression | 45,362 checks passed |
| Anuva production graph | npm run build:anuva passed |
| Editor artifact | 13 pre-manifest files; manifest SHA-256 d6a6458bd475a0f5e90f107b030c8edd389e761ad30069566789544fafa1bba5 |
| Player regression artifact | 10 files; manifest SHA-256 df806b6541cf5bffa1803917a0628d9079bef75109cac979e4275f7630c50042 |
| Contract package inspection | npm pack --dry-run passed with 43 files, including editor schema, ESM, declarations, source maps, license, and notices |
| Browser and keyboard | Three-surface navigation, ArrowRight tab navigation, family application, preservation, composite undo/redo, host save flow, host-only Ctrl+S, and revision acknowledgement passed; page-owned error and unhandled-rejection capture remained empty |
| Network and security | Real host/editor flow made no non-host-origin request; production package rejects unresolved development flags and dynamic executable operation forms |
| Documentation | Recursive indexes, strict MkDocs build, and fresh live-preview validation passed |
The production host harness reported:
PASS - revision production-1 -> production-2; renderer
1.0.8-anuva-renderer.1; no external requests or page errors.
Completion review
PR #4 was cleanly mergeable and had no configured status checks, formal
reviews, requested changes, or unresolved review comments. The review found one
acceptance gap: visual hiding alone had left upstream IndexedDB autosave and
local Ctrl+S behavior active. The fix adds an explicit host-managed editor
mode, routes the save shortcut to the validated host bridge, and adds four
focused regression checks. All required verification passed again after the
fix.
Artifacts
| Artifact | Local reference | Identity |
|---|---|---|
| Static editor | working/anu-12/anuva-bento-editor-1.0.0/ |
Manifest SHA-256 d6a6458bd475a0f5e90f107b030c8edd389e761ad30069566789544fafa1bba5 |
| Contract package shape | @anuva/bento-contract 1.0.0 dry-run |
43 files, 37.9 kB packed |
| Static player regression | working/anu-11/anuva-bento-player-1.0.0/ |
Manifest SHA-256 df806b6541cf5bffa1803917a0628d9079bef75109cac979e4275f7630c50042 |
These are ignored local verification artifacts. They were not published and are not canonical releases.
Deferred work and residual risk
- CMS persistence, PresentationConfig compilation, AI provider/model orchestration, asset upload/storage, Python orchestration, product Web-host UX, and Unity/Vuplex integration remain outside this repository boundary.
- The repository-local host harness proves the protocol and browser boundary; it is not downstream CMS or Unity acceptance evidence.
- Public package publication, GitHub release creation, production deployment, and canonical documentation publication remain unperformed.
- ANU-12 must remain unmerged and not Done until a separate completion review and explicit ready-and-merge approval.