Files
rose-ash/lib/flow/scoreboard.md
giles f8722b3b08
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
flow: remote-failover — try peers in order, fall through to local + 6 tests
(remote-failover addrs fn local) tries fn on each peer in order, moves to the next
on any raised error, and runs the local node if every peer fails. Threads input,
composes in sequences.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-06 17:44:04 +00:00

2.4 KiB

flow-on-sx Scoreboard

All tests pass: 87 / 87 across 5 suites.

bash lib/flow/conformance.sh

Per-suite breakdown

Suite Passing Covers
basic 18 Phase 1: single nodes, linear sequence, data-flow threading, defflow, parallel fan/join, nested composition, publish-shaped flow
control 31 Phase 2: branch (6); error model fail/failed?/fail-reason (6); try-catch (6); retry n (6); timeout cooperative step budget (7)
suspend 17 Phase 3: suspend/resume/cancel via deterministic replay; multi-step, replay determinism, lifecycle guards, suspend-in-branch
recovery 8 Phase 3: crash recovery — store export/import, resumable scan, restart-at-every-step, replay-log survival
distributed 13 Phase 4: remote-node on mock fed-sx peers (7); remote-failover across peers + local fallback (6)

Architecture

Flow combinators are a Scheme prelude (lib/flow/spec.sx) loaded onto scheme-standard-env. A flow is a Scheme procedure input -> output. The whole flow executes inside the Scheme interpreter, so Phase 3's suspend (call/cc) will capture the flow continuation directly.

  • lib/flow/spec.sx — combinators: flow-node, flow-id, flow-const, sequence, parallel, defflow; flow-load-combinators!.
  • lib/flow/api.sxflow/start (Scheme); flow-make-env, flow-run, flow-run-in (SX helpers).
  • lib/flow/tests/basic.sx — 18 cases.
  • lib/flow/conformance.sh — loads substrate + flow layer, runs suites.

Semantics notes

  • node = 1-arg Scheme procedure; the upstream value is the argument. A node ignoring its argument is effectively a thunk.
  • sequence threads left-to-right; empty sequence = identity.
  • parallel fans the same input to every branch and joins results into a list. Evaluation is sequential for now; true concurrency arrives in Phase 3.

Phases

  • Phase 1 — Declarative DAG + sequential execution (combinators + 18 tests, flow/start)
  • Phase 2 — Control flow + error handling (branch, error model, try-catch, retry, timeout)
  • Phase 3 — Suspend/resume (suspend/resume/cancel + crash recovery via deterministic replay)
  • [~] Phase 4 — Distributed nodes via fed-sx (remote-node done; failover + handoff next)
  • Phase 3 — Suspend / resume (the showcase)
  • Phase 4 — Distributed nodes via fed-sx