Skip to content

Cut core and CLI over to the Yieldstar runtime - #43

Closed
djgrant wants to merge 2 commits into
yieldstar-reconciliation-foundationfrom
yieldstar-node-runtime-cutover
Closed

Cut core and CLI over to the Yieldstar runtime#43
djgrant wants to merge 2 commits into
yieldstar-reconciliation-foundationfrom
yieldstar-node-runtime-cutover

Conversation

@djgrant

@djgrantdjgrant commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

Stacked on #42.

#42 adds the durable reconciler without changing the application runtime. This PR switches core and the CLI to it, then removes the old Reconciler.

What changes

  • deploy, destroy, and plan use the same SQLite workflow database.
  • A pending resource operation can sleep without keeping the CLI busy. The runtime wakes it and resumes the same execution.
  • --execution-id can resume a crashed deploy or destroy from its recorded steps.
  • Each execution ID is bound to one deployment and one workflow, so it cannot be reused for different work.
  • Existing .notation/state.json data is imported once and then renamed to .migrated.
  • maxOperationAttempts is available on deploy, plan, and destroy options.
  • The CLI reports one error from one boundary instead of calling process.exit inside each command.
  • The old reconciler, old operation modules, refresh workflow, state leases, and their tests are removed.

Provider operations still use the #44 contract: return when finished, throw ResourceNotFoundError when a read confirms absence, throw ResourceOperationPendingError when another attempt is required, and let every other error fail.

Verification

pnpm install --frozen-lockfile, pnpm build, pnpm typecheck, and pnpm test:once pass. The cutover suite contains 96 passing tests and 4 skipped tests.

Yieldstar 0.5.0 limitation

The SQLite runtime records a claimed task time in milliseconds but compares it with seconds. A task abandoned by a dead process does not become visible again at the intended time. Rerunning the same execution ID still resumes the workflow. Fixing automatic recovery requires an upstream Yieldstar release.

@djgrant
djgrantforce-pushed the yieldstar-node-runtime-cutover branch from ab49614 to 552124dCompareJuly 22, 2026 13:15
@djgrant
djgrantforce-pushed the yieldstar-reconciliation-foundation branch from 978b17d to 5b1b729CompareJuly 22, 2026 13:15
@djgrant
djgrantforce-pushed the yieldstar-node-runtime-cutover branch from 552124d to d29825aCompareJuly 22, 2026 13:22
@djgrant
djgrantforce-pushed the yieldstar-reconciliation-foundation branch from 5b1b729 to 12f4636CompareJuly 22, 2026 13:22
@djgrant
djgrantforce-pushed the yieldstar-node-runtime-cutover branch from d29825a to 03471abCompareJuly 22, 2026 13:34
@djgrant
djgrantforce-pushed the yieldstar-reconciliation-foundation branch 2 times, most recently from 6ef5cb4 to b29ee9fCompareJuly 22, 2026 13:42
@djgrant
djgrantforce-pushed the yieldstar-node-runtime-cutover branch from 03471ab to 539b8b9CompareJuly 22, 2026 13:42
@djgrant
djgrantforce-pushed the yieldstar-reconciliation-foundation branch from 12aa7a4 to 3f7198dCompareJuly 27, 2026 13:47
@djgrant
djgrantforce-pushed the yieldstar-node-runtime-cutover branch from 1249206 to fa56db1CompareJuly 27, 2026 13:52
@djgrant
djgrantforce-pushed the yieldstar-reconciliation-foundation branch from 3f7198d to 5028cd3CompareJuly 27, 2026 14:42
@djgrant
djgrantforce-pushed the yieldstar-node-runtime-cutover branch from fa56db1 to f498c75CompareJuly 27, 2026 14:47
@djgrant
djgrantforce-pushed the yieldstar-reconciliation-foundation branch from 5028cd3 to 40d140cCompareJuly 27, 2026 16:40
Run deploy, plan, and destroy through NodeDurableRuntime, unify CLI
error handling, and remove the legacy reconciler, operation workflows,
and state leasing that the old runtime required.
@djgrant

Copy link
Copy Markdown
CollaboratorAuthor

Superseded by #45, which combines this cutover with the final state of #42. This branch predated the last eleven commits on the foundation branch (the shared operations library refactor), so its reconciler internals were stale; #45 carries the cutover's core/CLI/state/docs changes merged onto the current foundation.

@djgrantdjgrant closed this Jul 28, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@djgrant