# Mac shared timeline checkpoint

The readability predecessor accepted all 16 measured timeline fixtures in core without diagnostics, while the renderer rejected four dense floor-32 cases. `before-node20.json` and `before-node24.json` retain that mismatch. The new shared timeline planner and renderer agree on all 16 cases: twelve fit and four reject at the selected floor. Sources and their hashes are unchanged. This correction makes strict overflow and explicit pagination aware of timeline internals.

`source-graph.json` binds four product commits. Core exposes `layoutTimeline` and `ComposedItem.timelineLayout`, with source fields, exact array/object paths, line boundaries, resolved styles, parts, markers and connector positions. At most 50 candidate arrangements try alternating and vertical layouts. Names/descriptions remain attached; empty fields and atomic event order survive. Selected minima are preserved, including explicit child overrides. The bound limits candidate arrangements, not total shaping work or input size, and does not promise a globally optimal layout.

Renderer and editable PPTX consume that geometry. The editor selects and edits individual timeline fields, including empty nested labels, with exact undo/redo. PPTX tags retain only topology and line boundaries; reimport reads current native text. Controlled edits, clearing and reordered native shapes preserve semantic array/object timelines. Six damaged-group controls fall back to ordinary current text without restoring removed source words. Native formatting, positions, marker styling and font themes are not reconstructed. No native Office execution is claimed here.

Core's 500 tests and composition, nesting, pagination, data, rich-text and list suites pass on Node 20 and 24. Both renderer suites pass all 805 slides against the separately reviewed timeline baseline; both converter and editor suites pass. The focused converter matrix checks sixteen exports with exact source lines, native coordinates, run sizes, disabled auto-fitting, semantic import and the six damaged-group controls.

The source and freshly installed browser matrices each cover sixteen cases per runtime: measured/estimated, wide/portrait, array/object metadata, blank nested fields and vertical fallback. Actual pointer selection, no-op commit, edit, undo/redo and export/reimport preserve source. Four additional keyboard controls run per matrix. All browser requests are blocked and no external requests or runtime errors occur. The final geometry verifier also records every SVG line, checks selected font size and source boundaries, and uses independent browser actual glyph metrics with SVG origins/length adjustments for measured containment (0.05px serialization allowance). SVG `getBBox` line extents are recorded separately; they are not painted glyph bounds. This is not native font identity or a raster-equivalence claim. Full browser screenshots were visually inspected; very narrow cells remain heavily wrapped despite fitting.

Fresh Node 20/24 tarball consumers pass declaration/bundle/package checks and eight installed browser suites (276 assertions, eight trusted interaction scenarios). `candidate-manifest.json` hashes the unpublished archives. Per-runtime locks and browser results are retained. Package versions and release plans are unchanged; this is not registry or deployment verification.

The renderer evidence at `OpenPresentation/opf-render/docs/evidence/timeline-corpus-review` retains the independently reproduced readability predecessor, all eleven paired sheets and six full-size before/after pairs, source digest, hashes and reproduction script. All 83 changed slides were visually reviewed; 722 remain byte identical. Previously omitted timeline metadata now appears, with no new clipping observed in the reviewed views. Historical baselines remain separate. Sparse layouts, low contrast, small template text and missing asset/marker coverage remain open.

Retained intermediate failures distinguish product findings from verifier corrections: the old unmeasured timeline mismatch; the obsolete unmeasured-payload expectation; a wrong core-test working directory; tests that double-offset already absolute outlines or ignored explicit child minima; an incorrect requirement for an explicit `a:noAutofit` element (the writer correctly omits all enabled auto-fit elements); inappropriate plain-text provenance for timeline paths; generic imported graphics before complete-group consumption; an intentionally too-dense browser fixture that correctly rejects; and using SVG nominal font extents as painted ink bounds. The final positive browser control uses a shorter synthetic description, retains the rejected fixture separately and does not change authored documents or relax the overflow floor.

Native tab tolerance still fails at the previously recorded 0.02pt threshold. Native image acceptance remains blocked pending Windows Office recovery; no new COM retries were attempted. Akasia remains experimental. This checkpoint does not complete broader font/layout reliability, Auto arrange, vector PDF, sanitized SVG/full Mermaid support, releases or deployments. The overall goal remains active.

Reproduce with the product graph, locked dependencies and the coordinated build/link scripts. Run `scripts/test-timeline-acceptance.mjs`, `scripts/test-timeline-workflow.mjs`, converter `test/shared-timeline.mjs`, then pack/install the ecosystem and repeat the timeline workflow with its `installed` argument. The ordinary coordinated package and browser suites remain required. `SHA256SUMS.json` covers these portable files, excluding itself.

Review follow-up: PPTX commit `d03e2daebaf9fb6c5d01a7461da22695da2bcb9f` moves optional field-fit validation before provenance construction and any drawing/tag mutation. The current planner supplies those fits even in warned overflow; the defensive ordering is now correct at the exporter boundary. Both runtime focused matrices pass, all sixteen prior native export bytes remain identical, and two strict plus two warned overflow controls pass per runtime. The first new control accidentally requested default Aptos with a Roboto-only measured registry, so its retained failure is a fixture font-availability error. The final control explicitly requests bundled Roboto. Base source/installed evidence remains bound to its original four-product graph; coordinated CI is updated to this follow-up converter commit.
