Skip to content

Publish Replay generations with semantic observations - #193

Merged
snkmcb merged 1 commit into
mainfrom
codex/publish-replay-observations
Nov 10, 2026
Merged

snkmcb merged 1 commit into
mainfrom
codex/publish-replay-observations

Conversation

@snkmcb

@snkmcb snkmcb commented Nov 10, 2026

Copy link
Copy Markdown
Member

Summary

After #192, Replay refreshes pointers against the final layout after focus reveal. It still appended the layout and paint generation before preparing the semantic observation that refers to it.

Prepare the observation against that same settled layout and focus, then publish it with the new generation. Command and focus observations without a new layout continue to refer to the latest generation. Successful recordings retain the same output, diagnostics, public API, and Replay v1/v2 encoding. A semantic projection error after commit still closes the session and leaves the last fully observed generation in output().

Candidate review

Area Evidence Decision
Runtime ReplayPlayer::finish_update and observe published separate pieces of a generation. #189–#192 already consolidated rollback, view preparation, and focus reveal. Unify the output publication point in this PR. Preserve pointer refresh order, focus observations, and the session commit boundary.
Widgets #185–#188 shared Inspector text routing, numeric draft parts, keyboard/gamepad adjustments, and geometry lookup. The SplitPane and Scrollbar drag paths still differ in capture and geometry invalidation. Revisit drag sequencing when another control demonstrates a common lifecycle.
Style and Paint build_paint_list converts background, gradient fallback, and procedural fills during traversal and emits backend-independent commands. Revisit conversion when another fill needs it. Visibility, opacity, and emission order are the contracts to preserve.
Tests and CI PR #192's hosted Core contracts step took 315 s. Here replay_serialization took 33.40 s of the 33.41 s local CTest wall time and includes the production JSON value-limit check. Profile the serialization cases before proposing a test change. The hosted step includes configuration and build, while the local CTest time covers tests only.

Verification

  • Windows x64 Debug Core contracts passed 64/64, including Replay, host updates, serialization, semantics, and the offscreen runner. The reused build took 0.66 s to configure, 17.29 s to build with one worker, and 33.46 s to test with four CTest workers.
  • The window-free Hierarchy / Inspector smoke passed in 181.49 s.
  • Changed-file clang-format 23.1.1, documentation and release metadata, CI selection (28 cases), and git diff --check passed.

@snkmcb
snkmcb merged commit 96dafb4 into main Nov 10, 2026
3 checks passed
@snkmcb
snkmcb deleted the codex/publish-replay-observations branch November 10, 2026 05:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant