|
1 | 1 | // SPDX-License-Identifier: PMPL-1.0-or-later |
2 | | -= chapeliser Roadmap |
| 2 | += Chapeliser Roadmap |
| 3 | +Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk> |
3 | 4 | :toc: |
4 | 5 | :icons: font |
5 | 6 |
|
6 | 7 | == Phase 0: Scaffold (COMPLETE) |
7 | | -* [x] RSR template with full CI/CD |
8 | | -* [x] CLI with subcommands |
9 | | -* [x] Manifest parser |
10 | | -* [x] Codegen stubs |
11 | | -* [x] ABI module stubs |
12 | | -* [x] README with architecture |
| 8 | +* [x] RSR template with 17 CI/CD workflows |
| 9 | +* [x] CLI with 7 subcommands (init, validate, generate, build, run, info, strategies) |
| 10 | +* [x] Manifest parser + validator (all 5 partition and 5 gather strategies) |
| 11 | +* [x] Library API for programmatic use |
| 12 | +* [x] Example manifest (panic-attacker mass-panic) |
| 13 | +* [x] README with architecture, SECURITY, CONTRIBUTING, GOVERNANCE |
13 | 14 |
|
14 | | -== Phase 1: Core Implementation |
15 | | -* [ ] Implement target-language-specific code generation |
16 | | -* [ ] Write Idris2 ABI proofs for core invariants |
17 | | -* [ ] Build Zig FFI bridge |
18 | | -* [ ] First working end-to-end example |
19 | | -* [ ] Integration tests |
| 15 | +== Phase 1: Core Implementation (COMPLETE) |
| 16 | +* [x] Chapel code generator — produces compilable .chpl with real distribution logic |
| 17 | + ** Per-item: even coforall distribution with locale range helper |
| 18 | + ** Chunk: fixed-size chunks, round-robin across locales |
| 19 | + ** Adaptive: work-stealing via Chapel DynamicIters |
| 20 | + ** Spatial: Block-distributed domain decomposition |
| 21 | + ** Keyed: route by c_key_hash, same key → same locale |
| 22 | +* [x] Five gather strategies implemented |
| 23 | + ** Merge: results already in result array, count and report |
| 24 | + ** Reduce: sequential fold on locale 0 via c_reduce |
| 25 | + ** Tree-reduce: logarithmic pairwise reduction across locales |
| 26 | + ** Stream: incremental (equivalent to merge in buffer mode) |
| 27 | + ** First: scan for c_is_match predicate, early exit |
| 28 | +* [x] Buffer-based FFI — serialised byte buffers for cross-locale safety |
| 29 | +* [x] Retry logic — per-item retry with configurable max attempts |
| 30 | +* [x] Checkpoint support — c_checkpoint_save/load with locale-tagged buffers |
| 31 | +* [x] Zig FFI bridge generator — 12 Chapel-facing exports delegating to user code |
| 32 | +* [x] C header generator — full FFI contract with documentation |
| 33 | +* [x] Build script generator — env var overrides, Chapel config passthrough |
| 34 | +* [x] Idris2 ABI proofs (Types.idr, Layout.idr, Foreign.idr) |
| 35 | + ** Partition completeness + disjointness |
| 36 | + ** Gather conservation |
| 37 | + ** Serialisation round-trip witness |
| 38 | + ** Retry isolation |
| 39 | + ** Memory layout proofs for item/result buffers |
| 40 | +* [x] Zig FFI reference implementation (echo processor, FNV-1a hash, concatenation reducer) |
| 41 | +* [x] Rust ABI types with runtime verification |
| 42 | + ** Partition, GatherResult, MemoryBudget, FfiResult |
| 43 | + ** Strategy enums with parsing |
| 44 | + ** 6 unit tests |
| 45 | +* [x] Cluster config parsing (cluster.toml → GASNET/SSH env vars) |
| 46 | +* [x] Build command: release/debug mode passthrough |
| 47 | +* [x] 15 tests passing (6 unit + 8 integration + 1 doc-test) |
20 | 48 |
|
21 | 49 | == Phase 2: Polish |
22 | | -* [ ] Error messages and diagnostics |
| 50 | +* [ ] Error messages and diagnostics (human-readable codegen errors) |
23 | 51 | * [ ] Shell completions (bash, zsh, fish) |
24 | | -* [ ] CI/CD for the generated artifacts |
25 | | -* [ ] Performance benchmarks |
26 | | -* [ ] Additional examples |
| 52 | +* [ ] `chapeliser info` — show memory budget estimate from manifest |
| 53 | +* [ ] Performance benchmarks (single-locale vs multi-locale scaling) |
| 54 | +* [ ] Additional examples (Monte Carlo, image processing, text search) |
| 55 | +* [ ] CI/CD for the generated Chapel artifacts |
27 | 56 |
|
28 | 57 | == Phase 3: Ecosystem |
29 | | -* [ ] PanLL panel integration |
30 | | -* [ ] BoJ-server cartridge |
31 | | -* [ ] VeriSimDB backing store for results |
| 58 | +* [ ] PanLL panel integration (distribution visualisation) |
| 59 | +* [ ] BoJ-server cartridge (distribute workloads via MCP) |
| 60 | +* [ ] VeriSimDB backing store for provenance-tracked results |
| 61 | +* [ ] End-to-end integration with panic-attacker mass-panic mode |
32 | 62 | * [ ] Publish to crates.io |
0 commit comments