|
| 1 | +# Tom: Review `crsql-mesh*` Phase-1 specs + choose the smallest safe next slice |
| 2 | + |
| 3 | +You’re the only person who can unblock Phase 2. |
| 4 | + |
| 5 | +Goal: reduce future ThingBadness by making a few crisp decisions up front (fewer packages, fewer knobs, clearer boundaries). |
| 6 | + |
| 7 | +## What to read (Phase 1 only) |
| 8 | + |
| 9 | +Start here: |
| 10 | +- [`effect-native/.specs/crsqlite-global-mesh-packages/instructions.md`](../../effect-native/.specs/crsqlite-global-mesh-packages/instructions.md) |
| 11 | + |
| 12 | +Then read these (the actual `crsql-*` set): |
| 13 | +- [`effect-native/.specs/crsql-mesh/instructions.md`](../../effect-native/.specs/crsql-mesh/instructions.md) |
| 14 | +- [`effect-native/.specs/crsql-mesh-protocol/instructions.md`](../../effect-native/.specs/crsql-mesh-protocol/instructions.md) |
| 15 | +- [`effect-native/.specs/crsql-mesh-transport/instructions.md`](../../effect-native/.specs/crsql-mesh-transport/instructions.md) |
| 16 | +- [`effect-native/.specs/crsql-mesh-runtime/instructions.md`](../../effect-native/.specs/crsql-mesh-runtime/instructions.md) |
| 17 | +- [`effect-native/.specs/crsql-mesh-integration/instructions.md`](../../effect-native/.specs/crsql-mesh-integration/instructions.md) |
| 18 | + |
| 19 | +Context proposals: |
| 20 | +- [`research/zig-cr/102-proposal-crsqlite-global-mesh.md`](../../research/zig-cr/102-proposal-crsqlite-global-mesh.md) |
| 21 | +- Upstream reference (read-only): |
| 22 | + - [`../../.refs/effect/packages/sql/`](../../.refs/effect/packages/sql/) |
| 23 | + - [`../../.refs/effect/packages/sql-sqlite-bun/`](../../.refs/effect/packages/sql-sqlite-bun/) |
| 24 | + |
| 25 | +## Decisions (please answer each checkbox) |
| 26 | + |
| 27 | +### A) Name alignment (reduces chaos) |
| 28 | +- [ ] **Package name**: pick one canonical name for the core engine: `@effect-native/crsql-mesh` vs `@effect-native/crsql-mesh-core` (some docs currently use both). |
| 29 | + |
| 30 | +### B) Smallest “first ship” package set (reduces burden) |
| 31 | +Pick the smallest set of NEW packages we implement first (no bikeshedding, just pick): |
| 32 | +- [ ] Option 1 (smallest): protocol + transport interface + core engine |
| 33 | +- [ ] Option 2 (practical web-first): Option 1 + browser runtime adapter |
| 34 | +- [ ] Option 3 (practical node-first): Option 1 + node runtime adapter |
| 35 | + |
| 36 | +### C) Runtime split decisions (reduces control-freak knobs) |
| 37 | +- [ ] Bun: separate `@effect-native/crsql-mesh-runtime-bun` package, or fold into `...-runtime-node` |
| 38 | +- [ ] Electron: separate `...-runtime-electron`, or explicitly defer |
| 39 | + |
| 40 | +### D) `@effect-native/crsql` boundary (reduces future betrayals) |
| 41 | +Where do the “db primitives” stop and “sync orchestration” start? |
| 42 | +- [ ] Confirm the split: `@effect-native/crsql` owns typed change rows + pull/apply helpers; mesh package owns version vectors + anti-entropy loop. |
| 43 | + |
| 44 | +### E) Approval gate |
| 45 | +- [ ] Approved to proceed to **Phase 2 (requirements.md)** for the chosen packages under `effect-native/.specs/AGENTS.md`. |
| 46 | + |
| 47 | +## Notes |
| 48 | + |
| 49 | +Thing-golf bias: |
| 50 | +- Prefer fewer packages first. |
| 51 | +- Prefer fewer configuration knobs. |
| 52 | +- Prefer boundaries that keep `@effect-native/crsql` useful standalone. |
| 53 | + |
| 54 | +## When you’re done |
| 55 | + |
| 56 | +- Move this file to `.wishes/done/` and add a short “Decisions” summary. |
| 57 | +- Then we’ll generate Phase 2 `requirements.md` for exactly the packages you approved. |
0 commit comments