Phases 1–8 shipped (feature foundation).
This roadmap covers production-grade + signature-grade work.
Priority: Correctness → Scheduler → Granularity → Memory → DevTools → Compiler → Concurrency → Benchmarks → Spec polish.
Normative semantics: REACTIVE_SPEC.md
Track status
| # | Area | Phase 9+ focus | Status |
|---|---|---|---|
| 1 | Reactive correctness | Stale dep cleanup, deterministic order, cycle spec, nested rules | 🟡 v0.1 |
| 2 | Scheduler 2.0 | Priority, dedup, micro/macrotask queues, starvation | 🟡 v0.2 |
| 3 | Granularity | Field-level, Hanka regions, Argus paint regions | 🟡 v0.3 |
| 4 | Memory management | Auto cleanup, dead nodes, weak refs, leak detect | ✅ v0.4 |
| 5 | Error system | Isolation, async failure, boundaries, retry | ✅ v0.6 |
| 6 | DevTools | Live graph, why changed/repaint, timelines | 🟡 v0.5 started |
| 7 | Time-travel | Snapshots, replay, deterministic replay | ⬜ |
| 8 | Compiler optimization | Static graph, dead reaction elimination | ⬜ |
| 9 | Concurrency | Parallel reactions, workers, race-safe cells | ⬜ |
| 10 | Persistence | Persistent cells, cache invalidation, offline sync | 🟡 QUERY beachhead |
| 11 | Cross-runtime consistency | Native/WASM/backend/game same semantics tests | 🟡 conformance harness |
| 12 | Benchmark suite | 1K/10K/100K nodes, workloads | 🟡 1K/10K baseline |
| 13 | Reactive specification | Official semantics doc | 🟡 v0.1 |
| 14 | Signature API polish | Conversational idioms, keyword trim | ⬜ |
| 15 | Real-world stress apps | Todo, dashboard, chat, game, full-stack | 🟡 dashboard |
Milestone A — Correctness foundation
Done when:
- [x]
REACTIVE_SPEC.mdv0.1 - [x] Stale dependency cleanup (
luke_rx_clear_deps) - [x] Scheduler counters + Build introspection
- [x]
reactive_conformance_*.luke+make test-build - [ ] Nested/recursive reaction rules documented + tested
- [x] Error propagation policy (v0.6 — isolation + retry)
Milestone B — Scheduler 2.0
- [x] Priority lanes (UI effect before BACKGROUND)
- [x] Dirty dedup counter + queue size instrumentation
- [x] Deferred nested flush (one turn, multiple passes)
- [x] Scheduler timeline / step counters
- [x]
WHEN REACTIVE/WHEN BACKGROUND REACTIVEside-effect effects - [x]
BIND BACKGROUNDlow-priority binds - [ ] Starvation guard (wait_epochs boost) — runtime hook present, conformance pending
- [ ] Macrotask queue /
scheduleReactiveAPI
Milestone C — Granularity
- [x] Argus region paint (
argus_paint_one,THE REGION PAINT COUNT) - [x] Hanka partial relayout (
hanka_layout_dirty,hanka_mark_region) - [x] Component subtree invalidation on scope dispose
- [x]
reactive_conformance_subtree.luke - [ ] Field-level object tracking
- [ ] Paint/layout dirty rects (spatial index)
Milestone E — Memory management (shipped v0.4)
- [x] Dead node disposal +
THE DISPOSED COUNT - [x] Graph audit + leak edge repair (
luke_rx_audit_graph,THE LEAK EDGE COUNT) - [x] Alive/dead counters (
THE ALIVE NODE COUNT,THE DEAD NODE COUNT) - [x] Weak reads (
THE WEAK VALUE OF,THE WEAK READ COUNT) - [x]
AUDIT REACTIVEstatement - [x] Conformance:
reactive_conformance_{memory,weak}.luke - [x] Weak effect refs (
WHEN REACTIVE WEAK,luke_rx_effect_weak) - [x] Auto scope GC (
luke_rx_scope_gc,UNMOUNT COMPONENT,THE SCOPE GC COUNT) - [x] Conformance:
reactive_conformance_{scope_gc,weak_effect}.luke
Milestone F — DevTools (shipped v0.5)
- [x] Graph stats (
THE GRAPH CELL COUNT,THE GRAPH EDGE COUNT) - [x] Why-changed trace (
THE WHY ROOT OF,THE WHY DEPTH OF,TRACE WHY) - [x] Last write id + dep/sub counts per node
- [x] Timeline step export (
THE TIMELINE STEP ID AT n) - [x]
DUMP REACTIVE GRAPHlive snapshot (stderr) - [x] Conformance:
reactive_conformance_devtools.luke
Milestone G — Error system (shipped v0.6)
- [x] Effect/derived error isolation (
luke_rx_isolate_error,erroredflag) - [x] Flush continues after isolated failure (sibling effects still run)
- [x] Async failure reporting (
REPORT REACTIVE FAILURE FOR … WITH …) - [x] Retry + clear (
RETRY REACTIVE ERROR,CLEAR REACTIVE ERROR) - [x] Error boundaries (
BEGIN ERROR BOUNDARY,RESET ERROR BOUNDARY) - [x] Introspection: error/boundary counters
- [x] Conformance:
reactive_conformance_{error,boundary}.luke
- Benchmark suite vs full rerender baseline — 1K/10K shipped (
BENCHMARKS.md); 100K pressure viamake pressure - One signature reference app — dashboard (
examples/build/dashboard_*.luke) - WASM/native conformance CI matrix
- 100K node workload — green (
examples/build/reactive_pressure.luke)
Definition of done: “fundamental execution model”
Reactive is not a “feature” when all of:
- Normative spec with guarantees
- Conformance tests (native + WASM)
- Correctness + disposal + async failure suite
- Reference stress app with measurable granular updates
- Benchmark baselines published
- Signature idioms documented (“Lukelang way”)
Signature line
Lukelang understands change.
The runtime knows what depends on what — and only that work runs.