Skip to content

feat(scene): guard selected-field activation and persistence evidence - #289

Merged
hyperb1iss merged 2 commits into
mainfrom
nova/smart-home-engine-guards
Sep 13, 2026
Merged

hyperb1iss merged 2 commits into
mainfrom
nova/smart-home-engine-guards

Conversation

@hyperb1iss

Copy link
Copy Markdown
Owner

What this changes

Guarded scene activation accepts an explicit selection of context, layout, and brightness. Omitted fields and power stay unchanged. Results preserve the original persistence evidence, including a layout prewrite and its rollback when later publication rejects the request.

This layer stacks on #287 (nova/product-experience-engine).

Why

Smart-home commands need to reject stale scene context at the actual mutation boundary and report whether their own writes persisted. Layout validation now crosses the renderer publication boundary without holding a read lock across a renderer write. Brightness follows the existing transition and settings lock order.

Verification

  • Added or updated tests: six new selected-activation tests, 34 existing scene tests, and six output tests passed independently. The complete 13-file packet received independent review. Final all-target daemon Clippy, workspace checks, and selected/output spot checks passed.
  • Added or updated docs (no separate documentation change)
  • just verify passes locally (focused gates passed; full recipe pending)
  • just deny passes (not run for this layer)
  • just ui-test and just ui-build pass (no UI changes)
  • just sdk-lint, just sdk-check, and just sdk-build pass (no SDK changes)
  • just python-verify passes (no Python changes)
  • just compat-check passes (no device database changes)
  • just docs-build passes (no documentation changes)
  • cd docs && zola check passes (no documentation changes)
  • Packaging scripts were syntax-checked (no packaging changes)
  • just e2e-build passes with the normal Servo stack (combined artifact qualification pending)
  • just e2e-build-cpu passes (not run for this layer)
  • just e2e passes against the Servo stack (installed execution pending)
  • Tested on real hardware, simulator, or e2e harness (this packet has engine-level tests; vendor and installed journeys remain pending)

Notes for reviewers

A drained retry queue cannot certify the exact original write. The result retains the candidate and rollback payloads and their original outcomes. Tests cover authored edits after prewrite, restart rollback, brightness write failures, and escaped candidate writes when rollback fails.

This draft does not complete the private catalog, guarded executor, or Alexa/Google integration. The tests also leave broader queued-writer, output-transition, and superseded-write acceptance scenarios for further qualification.

@coderabbitai

coderabbitai Bot commented Sep 13, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 7c8ba6fd-eda7-4fb3-b576-237d1d59af42

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

hyperb1iss and others added 2 commits September 13, 2026 10:08
Automation can supersede a scene's context, layout, and brightness
independently. Add an explicit selected-field operation that preserves
omitted state and validates the observed scene at each owning admission
boundary without implicitly waking output.

Carry authored scene fences through renderer layout publication and
retain exact precommit and rollback payload outcomes. Brightness returns
its original settings persistence result under the shared output and
scene guards. Partial failures preserve earlier admission evidence.

Cover all field combinations, stale definitions, edits after prewrite,
rollback failure, brightness durability failures, and media admission.
Keep existing scene activation and connected-display behavior covered.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
The post-replacement directory-sync failure hook on AtomicFileWriter
only exists on unix, so the Windows nextest build of this integration
test failed to compile. Gate the test the same way the sibling
persistence tests in output_power_tests.rs and library.rs already do.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014466GJcZeEz2om6JDZ3Chm
@hyperb1iss
hyperb1iss force-pushed the nova/product-experience-engine branch from a3addfe to 1201eea Compare September 13, 2026 17:12
@hyperb1iss
hyperb1iss force-pushed the nova/smart-home-engine-guards branch from 7dbaac6 to 5377da6 Compare September 13, 2026 17:12
@hyperb1iss
hyperb1iss marked this pull request as ready for review September 13, 2026 17:19
@hyperb1iss
hyperb1iss changed the base branch from nova/product-experience-engine to main September 13, 2026 18:31
@hyperb1iss
hyperb1iss merged commit 9d09d18 into main Sep 13, 2026
38 checks passed
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