Skip to content

Flows dedup: scope tentative keys per-run + settle from the run's graph snapshot #5268

Description

@graycyrus

Follow-ups from #5265 review (Codex P1 + P2), deferred to keep that PR scoped.

1. Per-run tentative scoping (Codex P1). The dedup node writes a shared dedup:<node_id>:tentative set; the DedupCommitSubscriber commits/releases the whole set for whichever run finishes. Under two overlapping runs of the SAME flow, run B's success can commit run A's tentative keys (if A failed, those items are wrongly marked seen — unsafe direction). Proper fix: scope tentative per run (dedup:<node_id>:tentative:<run_id>). Blocked on the engine: the dedup node executor (tinyflows nodes/control_flow/dedup.rs) has no stable run id in NodeContext; needs the engine to thread run identity to the node. Documented as a limitation in the node concurrency doc + host node_contracts overlay.

2. Settle from the run's graph snapshot (Codex P2). The subscriber loads the CURRENT saved flow def at finish, not the graph the run executed; a flow edited mid-run (dedup node deleted/renamed) is mis-settled. Capture the run graph at start.

Both bounded/rare. From #5265.

Activity

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

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions