Skip to content

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

Closed

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.

Activity

  1. aryanorastar commented on Aug 21, 2026

    @aryanorastar
    CollaboratorAuthor

    Correcting this: the immediate breakage is already fixed on main, so the one-line PR (#11984) is closed as a no-op.

    4d7c209e (#11962) added the DesktopAutomationBridge+Notifications.swift entry to ACTION_SOURCE_RELATIVE_PATHS as part of otherwise-unrelated memory-TTL work. Current main (78028bf4) passes standalone:

    desktop-flow-lint OK (72 flows, 162 registered actions)
    

    The report was accurate when filed — main was 41afef9b and reproducibly failed both errors — and 4d7c209e landed 53 minutes later. My mistake was not re-checking main before opening the PR, given how fast this repo moves.

    What is still worth keeping this open for, since #11962 does not address it: the contract file's comment says the list exists "so an added bridge action cannot skip its flow validation route", but nothing enforces that. A file defining a bridge action can be added or relocated without being registered, and the only signal is a flow that references the action going red later — as happened here. A check that every file matching the action-registration shape appears in ACTION_SOURCE_RELATIVE_PATHS would make it mechanical rather than dependent on the author remembering.

    Also still open and independent of the fix: main's Desktop Backend Contracts runs were sitting at action_required rather than executing, which is why the window between the relocation and #11962 went unobserved. That is a gating gap regardless of this particular action list.

    Happy for a maintainer to close this if the residual points aren't wanted — the concrete bug is gone.

  2. aryanorastar commented on Aug 21, 2026

    @aryanorastar
    CollaboratorAuthor

    Closing — the concrete bug is fixed on main by 4d7c209e (#11962), and current main passes standalone:

    desktop-flow-lint OK (72 flows, 162 registered actions)
    

    Not worth holding an issue open for the two residual points, so recording them here instead of leaving this in the backlog:

    • Nothing enforces that a file defining a bridge action appears in ACTION_SOURCE_RELATIVE_PATHS. The list's own comment says it exists "so an added bridge action cannot skip its flow validation route", but a relocation silently defeats it — which is exactly what happened. Worth a check if this recurs.
    • Main's Desktop Backend Contracts runs were sitting at action_required rather than executing, which is why the window between the relocation and fix(memory): require adjudication before TTL expiry #11962 went unobserved.

    Happy to reopen if either bites again.

  3. moved this from Someday to In review in omi TODO / bountieson Aug 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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