Story
As a workflow host implementor, I want one reconciliation contract for forge mutations, so Git push, pull-request creation, and issue creation do not invent separate replay policies or duplicate uncertain external effects.
Contract
An external effect derives stable identity from the WorkflowRun and expansion. It records filtered inputs, pre-state, observations, decision, and result locally, but does not claim a transaction across SQLite and the provider.
On first execution or resumption:
- observe provider state using the stable identity and effect-specific natural keys;
- adopt proven compatible completion;
- perform proven absence;
- reject conflict or permanent ambiguity; and
- let explicit middleware retry or suspend temporary unavailability.
The forge provider is contextual and provider-neutral. GitHub is the first adapter, not a type in shared component contracts.
Acceptance
Dependencies
Story
As a workflow host implementor, I want one reconciliation contract for forge mutations, so Git push, pull-request creation, and issue creation do not invent separate replay policies or duplicate uncertain external effects.
Contract
An external effect derives stable identity from the WorkflowRun and expansion. It records filtered inputs, pre-state, observations, decision, and result locally, but does not claim a transaction across SQLite and the provider.
On first execution or resumption:
The forge provider is contextual and provider-neutral. GitHub is the first adapter, not a type in shared component contracts.
Acceptance
Dependencies