Skip to content

desktop-flow-lint is red on main: relocated notification bridge actions were never registered in ACTION_SOURCE_RELATIVE_PATHS #11985

Description

@aryanorastar

desktop-flow-lint fails on current main (41afef9b), which reddens desktop-core-e2e-t0 for every desktop PR that merges main.

notifications-settings.yaml: unknown bridge action 'settings_notifications_snapshot'
notifications-settings.yaml: unknown bridge action 'set_notification_settings'
desktop-flow-lint: 2 error(s)

Reproduce against a pristine checkout of main, no branch involved:

git archive origin/main | tar -x -C /tmp/mainlint
cd /tmp/mainlint && python3 desktop/macos/scripts/desktop-flow-lint.py

Cause. d5596a6 ("refactor(macos): relocate journal copy + notification bridge actions to satisfy line-count ratchet") moved settings_notifications_snapshot and set_notification_settings from DesktopAutomationBridge.swift into the new DesktopAutomationBridge+Notifications.swift, but did not add that file to ACTION_SOURCE_RELATIVE_PATHS in desktop/macos/scripts/desktop_flow_contract.py. The lint reads registered actions only from that list, so both actions became invisible while notifications-settings.yaml still references them.

Why it went unnoticed. Main's own Desktop Backend Contracts runs are sitting at action_required rather than executing, so nothing re-ran the lint after the relocation. The first signal was PRs merging main and inheriting the failure.

Fix is one line, opened as #11984.

Worth a second look beyond the one-liner: the contract file's comment says the list exists "so an added bridge action cannot skip its flow validation route", but nothing currently enforces that a file defining a bridge action appears on it. A relocation silently defeats it. A check that every file matching the action-registration shape is present in ACTION_SOURCE_RELATIVE_PATHS would make this mechanical rather than depending on the author remembering — worth considering, though I'd rather land the one-line unblock first and let a maintainer decide whether the stronger guard is wanted.

Also worth a maintainer's attention separately: action_required on main's contract runs means this lane is not actually gating main right now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions