Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 45s
(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>
2.4 KiB
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.sx—flow/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