--- id: INT-10 family: RT-INT level: extended profiles: [runtime] posture: normative-target added: "1.0" changed: "1.0" source: https://flowdrop.io/spec/rules/rt-int/int-10 specification: FlowDrop Workflow Specification 1.0-draft licence: CC BY 4.0 --- # INT-10 — A queued run seeded from a snapshot performs only the remaining work *RT-INT (Part II) · level: extended · profiles: runtime · added in 1.0* Handing a partially finished run to a queue must not re-fire what already ran. The seeded jobs are marked as borrowed, so nothing later mistakes them for work this run performed. ## The rule > **Normative.** This is the rule. > > 1. A queued run may be seeded from a snapshot: each snapshot node with a matching job is recorded as completed carrying the snapshot's output, marked as injected and stamped with the execution it came from and the time it was seeded, so that only genuinely remaining work is scheduled and no consumer mistakes a seeded record for work this run performed. > > 2. A snapshot node with no matching job is skipped and the discrepancy recorded in the log. > > 3. The number seeded is reported in the response results and metadata. ## What it means Deferred execution cannot replay a run's history; the only currency it understands is work still to be scheduled. Seeding it from a snapshot means writing back each already-completed node's output and marking it distinctly, so that only what genuinely remains is scheduled and nothing downstream mistakes a seeded record for work this run actually performed. The marker matters because a seeded record and a genuine one look identical except for it: the same completed status, the same output. A snapshot node with no matching job in the resumed run — the workflow changed since the snapshot was taken — is not an error here; it is simply skipped, and the discrepancy is noted rather than blocking the handover. ## Example A run got as far as two of three nodes before being handed over. The third node is left exactly as an unseeded run would leave it: no `injected` key at all. ```json title="A node the snapshot already completed" verdict="injected" {"status": "completed", "output": {"message": "two"}, "injected": true} ``` A later snapshot naming a node the workflow no longer has seeds nothing for it: ```json title="A snapshot node the workflow no longer has" verdict="skipped" {"id": "deleted_since", "output": {"message": "gone"}} ``` ## Related rules - Names: INT-6, INT-15 - Referenced by: INT-15 --- Rule identifiers are permanent and are never renumbered. This specification carries no implementation status: each implementation publishes its own standing against these rules. Licensed CC BY 4.0.