Completion Report: ANU-18 - Bento Host Save, Stable Focus, and Template Catalog
Status: Completion review passed; awaiting explicit ready-and-merge approval.
Implementation summary
ANU-18 advances the editor protocol, editor artifact, and server-safe contract
package to 1.1.0 while preserving the presentation contract, player, and
template-family object schema at 1.0.0. It adds:
- exact host-requested
manual and autosave commands routed through the same
validated save path as the editor controls;
- stable focus by surface and slide identity through the upstream Store API,
with real active-slide memory for Main, Companion, and Emphasis;
- deterministic duplicate-request rejection and structured focus/save errors;
- a validated
anuva/bento-template-catalog 1.0.0 generated from the exact
Signal/Paper runtime source; and
- a deterministic editor package whose manifest binds catalog path, format,
SHA-256, family IDs, versions, and capabilities.
The host continues to own persistence and accepted revision assignment. Bento
does not schedule autosave, interpret sceneId, compile PresentationConfig, or
own downstream CMS, Web, Python, or Unity behavior.
Acceptance evidence
| Acceptance item |
Result |
Evidence |
| TypeScript, runtime validation, and distributed JSON Schema define identical closed command shapes |
Pass |
Seven exact request variants reject unknown fields; completion review added closed response and all six event variants; the focused schema suite passes 231 checks |
| Manual and autosave preserve request ID, base revision, trigger, and full envelope on the validated save path |
Pass |
Session tests cover both triggers and complete-envelope equality; the real host/editor harness confirms correlated responses and save events |
| Validation failure and duplicate IDs are deterministic, correlated, and do not advance revision |
Pass |
Session tests preserve accepted revision on invalid content; bridge/browser coverage returns SAVE_VALIDATION_FAILED and DUPLICATE_REQUEST_ID without a successful save proposal |
| Focus works for every surface, non-first slides, cross-surface switches, and real active-slide reporting |
Pass |
Session and browser checks cover Main, Companion, and Emphasis, cross-surface restoration, and the exact activeSlides map |
| Missing/cross-surface targets are structured and repeated focus preserves all authoring state |
Pass |
SLIDE_NOT_FOUND and SLIDE_SURFACE_MISMATCH are stable; byte-equal content plus unchanged dirty, revision, undo, and redo state pass |
| Signal/Paper catalog is runtime-equal, byte-deterministic, and manifest-bound |
Pass |
Shared serializer deep-equals runtime families; two post-review rebuilds reproduce catalog SHA-256 63f487f7f65d3d62ce0b6cf395aca2b4db4daeac04a6fa6f4a14f159f56cb440 and manifest path/format/family IDs |
Editor protocol/artifact/package 1.1.0 advertise capabilities and preserve compatibility/security |
Pass |
Required capabilities are explicit; presentation/player/family schema remain 1.0.0; renderer remains 1.0.8-anuva-renderer.1; hard-offline checks, license, and notices pass |
| Real browser flow exercises save, focus, catalog, failures, and network denial |
Pass |
Host/editor harness covers manual/autosave, all surfaces and non-first slides, catalog loading, duplicate/missing/wrong-surface failures, no external requests, and empty page-owned error capture |
Verification summary
| Area |
Result |
| TypeScript and focused suites |
Passed after completion-review fix; 103 contract, 37 adapter, 231 editor/schema/catalog, and 31 session checks |
| Upstream regression |
npm run build and documented Windows single-file build passed |
| Convergence regression |
45,362 checks passed |
| Anuva graph |
npm run build:anuva passed |
| Editor artifact |
14 pre-manifest files; two post-review rebuilds produced manifest SHA-256 27db22300a9e471d24c474879ace7fbdbe1e3b6f3e7e9aad197e4e463d86088b |
| Player regression artifact |
10 files; manifest SHA-256 df806b6541cf5bffa1803917a0628d9079bef75109cac979e4275f7630c50042 |
| Contract package |
npm pack --dry-run passed with 43 files, 39.9 kB packed, shasum 2fd30ab5a50a18c44d5ad2ba46894eb62b00f715 |
| Browser/security |
Catalog, manual/autosave correlation, three-surface focus, structured failures, revision acknowledgement, no external requests, and empty page-owned error capture passed |
| Documentation |
Recursive index, strict build, fresh preview, and exact link validation are recorded in the Implementation Log |
Versions and capabilities
| Authority |
Value |
| Editor artifact and protocol |
1.1.0 |
| Contract package distribution |
1.1.0 |
| Presentation contract |
1.0.0 |
| Player protocol and artifact |
1.0.0 |
| Template-family object schema |
1.0.0 |
| Template catalog |
anuva/bento-template-catalog 1.0.0 |
| Renderer |
1.0.8-anuva-renderer.1 |
| New capabilities |
editor.host-request-save, editor.focus.stable, templates.catalog.packaged |
Delivery
Artifacts
| Artifact |
Local reference |
Identity |
| Static editor |
working/anu-18/anuva-bento-editor-1.1.0/ |
Manifest SHA-256 27db22300a9e471d24c474879ace7fbdbe1e3b6f3e7e9aad197e4e463d86088b |
| Template catalog |
template-catalog.json in the editor artifact |
SHA-256 63f487f7f65d3d62ce0b6cf395aca2b4db4daeac04a6fa6f4a14f159f56cb440; signal-family, paper-family |
| Contract package shape |
@anuva/bento-contract 1.1.0 dry-run |
43 files, 39.9 kB packed |
| Player regression |
working/anu-11/anuva-bento-player-1.0.0/ |
Manifest SHA-256 df806b6541cf5bffa1803917a0628d9079bef75109cac979e4275f7630c50042 |
These ignored local artifacts were not published, released, or deployed.
Completion review
- PR #6 is open, draft, cleanly mergeable, and has no configured status checks,
formal reviews, requested changes, or unresolved review comments.
- Review found one acceptance gap: the distributed JSON Schema covered exact
editor requests but omitted the public response and event variants required
by the approved ImplementationPlan.
- The fix adds a closed response definition, validation-issue and
operation-result definitions, and all six editor event variants, including
exact save triggers and required ready capabilities.
- The focused editor suite increased from 208 to 231 checks. The complete Anuva
suite, two deterministic editor package rebuilds, contract dry-run package
inspection, recursive docs indexes, strict MkDocs build, and fresh preview
all pass after the fix.
Limitations, handoff, and recovery
- The repository browser harness proves the Bento protocol and artifact
boundary; it is not downstream CMS, product Web, Python, or Unity acceptance.
- CMS persistence, autosave policy, scene mapping, PresentationConfig
compilation, AI orchestration, Python staging, Unity/Vuplex hosting, and
downstream ANU-14 acceptance remain with their owning repositories.
- Public package publication, GitHub release, production deployment, canonical
docs publication, PR merge, and Linear completion were not performed.
- The guarded PR workflow linked PR #6 and moved ANU-18 from In Progress to In
Review. It remains draft and unmerged pending explicit ready-and-merge
approval after this completed review.
- Product Main ANU-17/ANU-14 may consume the exact protocol, capabilities,
catalog identity, artifact manifest, and preview references above.
- Before merge, rollback is removal of the ANU-18 additions from this feature
branch; ANU-12 editor
1.0.0 remains the recovery baseline.
- The user-stopped local
Tobii Service remains stopped while the CLI-owned
MkDocs preview uses port 4005.