Skip to content

Commit a0455eb

Browse files
Add Tom decision checklist for crsql mesh specs
1 parent aca2fab commit a0455eb

File tree

1 file changed

+57
-0
lines changed

1 file changed

+57
-0
lines changed
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
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

Comments
 (0)