Skip to content

Implementation Issues: Bento readiness gate for ANU-14

Status

The approved product plan created one repository-scoped child after the Product Main planning PR merged. ANU-18 is Done and its Bento PR is merged.

Proposed issues

Client key Linear issue Repository Priority Depends on Status / start gate
bento-editor-readiness ANU-18 anuva-bento High None Done

Issue draft

bento-editor-readiness: Add Bento host-save, stable focus, and packaged template catalog

  • Repository: anuva-bento
  • Priority: High
  • Dependencies: None inside ANU-17
  • Downstream consumer: ANU-14
  • Linear issue: ANU-18
  • Status: Done
  • Pull request: Anuva Bento #6, merged as 8dd5c4ff8a8a9760f845b2fc43c34ae6a940e07e
  • Completion report: Bento evidence

Scope

Extend the closed editor protocol, TypeScript contract, runtime validation, and JSON Schema with:

  • request-save carrying { trigger: "manual" | "autosave" }; and
  • focus carrying { surface, slideId, sceneId? }.

Route requested saves through the same validated session-save path as the editor Save control, preserving the host's request ID, current accepted base revision, trigger, and complete envelope. Track the real active slide on every surface, validate surface/slide ownership, and navigate through the supported Bento store operation without changing document or history state.

Generate the exact Signal/Paper template-family catalog from the runtime family source, package deterministic JSON, and expose its path, format version, SHA-256, and family IDs in the editor manifest. Advance the editor protocol, editor artifact, and contract package to 1.1.0; advertise explicit host-request-save, stable-focus, and packaged-catalog capabilities. Preserve the presentation contract, player protocol, renderer, template-family object version, hard-offline behavior, origin/source validation, license, and notices unless a real shape change requires a Product Main plan revision.

This issue does not implement CMS persistence, autosave policy, scene mapping, AI operations, Web preview, or any iframe workaround.

Acceptance

  • TypeScript types, runtime validation, and distributed JSON Schema define identical closed command shapes and reject malformed/unknown fields.
  • Manual and autosave requests emit the existing validated save-request path with the host request ID, accepted base revision, trigger, and full envelope.
  • Validation failure and duplicate request IDs are deterministic, correlated, and do not advance accepted revision state.
  • Focus works for Main, Companion, and Emphasis, including non-first slides and cross-surface switches.
  • The session reports and preserves the real active slide per surface.
  • Missing and cross-surface targets return stable structured errors.
  • Repeated focus is idempotent and does not change content, dirty state, revision, undo history, or redo history.
  • Signal/Paper catalog builds are byte-deterministic and exactly equal the runtime source objects.
  • The manifest exposes and verifies catalog path, format version, SHA-256, and family IDs.
  • Editor protocol, editor artifact, and contract package 1.1.0 advertise the three required capabilities and preserve renderer/player compatibility, license/notices, and hard-offline behavior.
  • A real browser host/editor flow exercises save correlation, every surface, non-first-slide focus, catalog loading, structured failures, and network denial.

Docs

Create an issue change folder with index.md, ImplementationPlan.md, ImplementationLog.md, and CompletionReport.md. Update the normative editor-host protocol, template-family/catalog, packaging/manifest, compatibility/capability, structured-error, security, and verification documentation. Maintain recursive indexes and MkDocs navigation and return exact machine-specific Bento preview URLs after every logical update.

Verification

Run:

  • npm run test:anuva
  • npm run test:editor
  • npm run build:anuva
  • npm run package:editor
  • contract build and npm pack --dry-run
  • deterministic clean catalog/artifact rebuild and SHA-256 comparison
  • focused validator, schema parity, duplicate-request, Store navigation, per-surface focus, idempotency, dirty/revision/history, and catalog equality tests
  • direct browser host/editor smoke and public-network denial
  • manifest, artifact file, version, capability, license, and notices inspection
  • repository docs index validation and strict MkDocs build

The CompletionReport must map every acceptance item to evidence and record the reviewed commit, PR, artifact paths, versions, capabilities, manifest and catalog hashes, limitations, recovery state, exact preview URLs, and Product Main/ANU-14 handoff.

Dependency and approval contract

  • Completed ANU-11 and ANU-12 artifacts are the implementation baseline.
  • The child has no unfinished prerequisite inside ANU-17.
  • ANU-14 must not begin CMS code changes until the child artifact is reviewed and its CompletionReport satisfies the gate.
  • No decision phase is required unless implementation expands the approved contract, ownership, presentation envelope, renderer/player, or CMS scope.
  • Product Main completion begins only after the Bento child is terminal with a merged PR and complete evidence.

Manifest

The executable ImplementationIssues.manifest.json was validated and dry-run during planning. After Product Main PR #17 merged, the guarded creation command created ANU-18 in Ready with the approved repository label, parent, source path, preview, scope, acceptance, docs, and verification contract.