← Back to issue list

OverlayState.properties_of_interest() missing 'override-overlay'

View original Github issue

Metadata

Project
craft-parts
Number
#1566
Type
issue
State
open
Author
lengau
Labels
Status: Triaged Type: Bug
Created
2026-05-05 16:49:27+00:00
Updated
2026-05-05 16:50:06+00:00
Closed

Current evaluation

No evaluation has been recorded for this issue yet.

Issue body

`OverlayState.properties_of_interest()` does not include `"override-overlay"`, so `check_if_dirty()` cannot detect when the scriptlet changes between runs. The overlay step still re-runs thanks to `LayerHash.for_part()` (which does hash `override-overlay`), but the dirty reason is wrong/imprecise. This is a consistency issue — every other state class tracks its `override-*` key. ## To Reproduce 1. Create a part with `override-overlay: echo original`, run to overlay. 2. Change to `override-overlay: echo changed`. 3. Call `StateManager.check_if_dirty(part, Step.OVERLAY)` — returns `None`. ## part yaml ```yaml parts: mypart: plugin: nil override-overlay: echo original ``` ## Relevant log output ``` # OverlayState.properties_of_interest() returns: # {"overlay-script": ..., "overlay": ...} # "override-overlay" is absent from the output. # # check_if_dirty(part, Step.OVERLAY) returns None (should return dirty report) ``` ## Fix ```python # craft_parts/state_manager/overlay_state.py relevant_properties = [ "overlay-script", "overlay", "override-overlay", # <- add this *(extra_properties or []), ] ```

Evaluation history

No evaluation history available.