← Back to issue list

OverlayState.properties_of_interest() missing 'override-overlay'

View original Github issue

Metadata

Project
craft-parts
Number
#1566
Type
issue
State
closed
Author
lengau
Labels
Status: Triaged Type: Bug
Created
Updated
Closed

Current evaluation

Fixed by merged PR #1579 (commit 059b1c0f, 'fix(state): track override-overlay changes'), which added 'override-overlay' to OverlayState.properties_of_interest(); changelog notes 'Track override-overlay changes in part state'.

Resolution: closed resolved

Reason: Commit 059b1c0f from PR #1579 added 'override-overlay' to the relevant_properties list in craft_parts/state_manager/overlay_state.py, so check_if_dirty(part, Step.OVERLAY) now reports the scriptlet change. The entry is present in current HEAD (26f4b35e) and is listed in docs/reference/changelog.rst.

Evaluated by: mr-cal-bot

No scores available.

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

Date Model Scores Action Summary
stealth/space-bunny-alpha — closed resolved Fixed by merged PR #1579 (commit 059b1c0f, 'fix(state): track override-overlay changes'), which added 'override-overlay' to OverlayState.properties_of_interest(); changelog notes 'Track override-overlay changes in part state'.
stealth/space-bunny-alpha — closed resolved Fixed by merged PR #1579 (commit 059b1c0f), adding override-overlay to OverlayState's dirty properties so scriptlet changes are detected; closes #1566.
qwen/qwen3.6-35b-a3b — — Resolved by adding override-overlay to OverlayState.properties_of_interest(), fixing the dirty check logic that failed to detect scriptlet changes.
qwen/qwen3.6-35b-a3b — — Closed and fixed by adding the missing override-overlay property to OverlayState.properties_of_interest(), resolving the dirty check inconsistency and ensuring accurate scriptlet change detection.
qwen/qwen3.6-35b-a3b — — Fixed the bug where OverlayState.properties_of_interest() omitted override-overlay. The property was added to the relevant properties list, allowing check_if_dirty() to correctly detect scriptlet changes between runs.

Update history

No update history recorded yet.

Related work

  • Likely Fixed By: canonical/craft-parts#1579 (confidence 95%)

    Merged commit 059b1c0f 'fix(state): track override-overlay changes (#1579)' is the only change to overlay_state.py adding the missing key.

  • Related To: canonical/craft-parts#1567 (confidence 55%)

    Nearby overlay commit 73d6a988 'feat(overlay): plugins can define overlay commands (#1567)' that expanded overlay state handling around the same time.

Related issues

Issue Project State Summary Similarity
#1579 fix(state): track override-overlay changes craft-parts merged Merged in commit 059b1c0f, adding override-overlay dirty tracking and unit coverage so override scriptlet changes are detected; fixes #1566.
70%