-
Notifications
You must be signed in to change notification settings - Fork 0
Shrink the Promise run loop to a small core with four internal extension points #280
Copy link
Copy link
Closed
Labels
p1created by fabrika status bootstrap label-taxonomycreated by fabrika status bootstrap label-taxonomyready-for:agentfabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)fabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)status:triagedcreated by fabrika status bootstrap label-taxonomycreated by fabrika status bootstrap label-taxonomytype:featurefabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)fabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)
Milestone
Description
Activity
Metadata
Metadata
Assignees
Labels
p1created by fabrika status bootstrap label-taxonomycreated by fabrika status bootstrap label-taxonomyready-for:agentfabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)fabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)status:triagedcreated by fabrika status bootstrap label-taxonomycreated by fabrika status bootstrap label-taxonomytype:featurefabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)fabrika pipeline taxonomy (created by hand — status bootstrap label-taxonomy does not mint it)
Stories: 7
TDD: yes
What to build
Replace the body of the Promise engine's loop with a small core, as in spike #264. The core does serial transitions, save before effects, reconcile subs, run Cmds and dispatch outcomes, and has no special case for any built-in. Rebuild the built-ins on four internal extension points:
nullfor "no transition"): identity filter, supervision, dev checksevents,terminal/doneFix the extension order in code (the identity filter sits inside supervision). Model the
stop()drain / discard gate andctxcontributions, which #264 left out. These stay internal, not a user plugin API (#268).withTelemetrymoves here as an internal extension.Acceptance criteria
stop()still drains and discards as today (DispatchDiscardedError), and handlers composed inside other handlers still settle through the same edgepnpm typecheck && pnpm lint && pnpm testpass