Skip to content

Commit 924e9c6

Browse files
++
1 parent 59d1a64 commit 924e9c6

7 files changed

+537
-71
lines changed

.tasks/backlog/TASK-047-phase1-react-native-runtime-specs.md

Lines changed: 0 additions & 46 deletions
This file was deleted.

.tasks/backlog/TASK-033-mobile-static-embedding-guide.md renamed to .tasks/done/TASK-033-mobile-static-embedding-guide.md

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
## Status
44
- [x] Planned
5-
- [ ] Assigned
6-
- [ ] In Progress
5+
- [x] Assigned
6+
- [x] In Progress
77
- [ ] Blocked (reason: ...)
8-
- [ ] Complete
8+
- [x] Complete
99

1010
## Priority
1111
low
@@ -32,13 +32,26 @@ Important: this is a guide + validation harness, not a full RN integration.
3232
- `research/zig-cr/92-gap-backlog.md` (status notes)
3333

3434
## Acceptance Criteria
35-
- [ ] Clear steps for building a static archive for target platforms.
36-
- [ ] Explicit note about why dynamic extension loading often fails on mobile.
37-
- [ ] A minimal "hello" validation strategy described (even if not runnable in CI).
35+
- [x] Clear steps for building a static archive for target platforms.
36+
- [x] Explicit note about why dynamic extension loading often fails on mobile.
37+
- [x] A minimal "hello" validation strategy described (even if not runnable in CI).
3838

3939
## Progress Log
4040
### 2025-12-14
4141
- Task created during gap review; not yet started
42+
- Task completed: created comprehensive mobile static embedding guide
4243

4344
## Completion Notes
44-
[fill in when done]
45+
**Completed: 2025-12-14**
46+
47+
Created `research/zig-cr/104-mobile-static-embedding-guide.md` covering:
48+
- Why static embedding is required (dynamic loading blocked on iOS, limited on Android)
49+
- Zig build commands for all iOS and Android targets
50+
- iOS integration: XCFramework creation, Swift/ObjC init code examples
51+
- Android integration: CMake setup, JNI wrapper, Kotlin examples
52+
- Validation strategy: symbol checks, minimal "hello" test apps, integration checklist
53+
- Common issues and troubleshooting
54+
55+
Also updated:
56+
- `zig/README.md`: added link to guide, removed "packaging guides" from limitations
57+
- `research/zig-cr/92-gap-backlog.md`: marked mobile embedding docs as done

.tasks/backlog/TASK-046-phase2-requirements-crsql-mesh.md renamed to .tasks/done/TASK-046-phase2-requirements-crsql-mesh.md

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
## Status
44
- [x] Planned
5-
- [ ] Assigned
6-
- [ ] In Progress
5+
- [x] Assigned
6+
- [x] In Progress
77
- [ ] Blocked (reason: ...)
8-
- [ ] Complete
8+
- [x] Complete
99

1010
## Priority
1111
high
@@ -41,15 +41,33 @@ STOP after Phase 2 docs (do not design or implement).
4141
- `effect-native/.specs/crsql-mesh-runtime/requirements.md`
4242

4343
## Acceptance Criteria
44-
- [ ] All requirements use EARS notation.
45-
- [ ] Requirements reference reuse of `@effect-native/crsql` schemas (no duplicate serialization types).
46-
- [ ] `unhex()` requirement is explicit and includes fail-fast behavior (`UnhexUnavailable`).
47-
- [ ] Node runtime requirements explicitly depend on `@effect/platform` capabilities.
48-
- [ ] Each requirements.md has a short Out of Scope section aligned with Phase 1.
44+
- [x] All requirements use EARS notation.
45+
- [x] Requirements reference reuse of `@effect-native/crsql` schemas (no duplicate serialization types).
46+
- [x] `unhex()` requirement is explicit and includes fail-fast behavior (`UnhexUnavailable`).
47+
- [x] Node runtime requirements explicitly depend on `@effect/platform` capabilities.
48+
- [x] Each requirements.md has a short "Out of Scope" section aligned with Phase 1.
4949

5050
## Progress Log
5151
### 2025-12-15
5252
- Task created from Tom-approved Phase 2 gate
5353

54+
### 2025-12-14
55+
- Completed Phase 2 requirements for all four packages
56+
5457
## Completion Notes
55-
[fill in when done]
58+
**Date:** 2025-12-14
59+
60+
**Summary:** Created Phase 2 `requirements.md` files for the node-first crsql-mesh slice using EARS notation.
61+
62+
**Files Created:**
63+
1. `effect-native/.specs/crsql-mesh-protocol/requirements.md` - 7 FRs covering schema reuse, unhex() check, message types
64+
2. `effect-native/.specs/crsql-mesh-transport/requirements.md` - 7 FRs covering interface, in-memory transport, lifecycle
65+
3. `effect-native/.specs/crsql-mesh/requirements.md` - 12 FRs covering anti-entropy loop, version vectors, change pull/apply
66+
4. `effect-native/.specs/crsql-mesh-runtime/requirements.md` - 9 FRs covering Node runtime with @effect/platform
67+
68+
**Key Decisions Encoded:**
69+
- Schema reuse from `@effect-native/crsql/CrSqlSchema` (no duplicate types)
70+
- `unhex()` fail-fast with `UnhexUnavailable` (FR-PROTO-002)
71+
- Node runtime depends on `@effect/platform` (FR-NODE-001)
72+
- InMemoryTransport for testing two-peer sync (FR-TRANS-002)
73+
- Bun support folded into Node runtime (FR-NODE-009)
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# TASK-047: Phase 1 instructions — React Native runtime packages
2+
3+
## Status
4+
- [x] Planned
5+
- [x] Assigned
6+
- [x] In Progress
7+
- [ ] Blocked (reason: ...)
8+
- [x] Complete
9+
10+
## Priority
11+
medium
12+
13+
## Assigned To
14+
subagent (general)
15+
16+
## Parent Docs / Cross-links
17+
- Tom notes: `.wishes/done/tom-review-crsql-mesh-instructions.md`
18+
- Package map: `effect-native/.specs/crsqlite-global-mesh-packages/instructions.md` (RN package names)
19+
- Spec-first rules: `effect-native/.specs/AGENTS.md`
20+
21+
## Description
22+
Create Phase 1 `instructions.md` for React Native runtime packages:
23+
24+
- `@effect-native/crsql-mesh-runtime-react-native-op-sqlite`
25+
- `@effect-native/crsql-mesh-runtime-react-native-expo-sqlite`
26+
27+
Keep it thing-golf small: intent + out-of-scope only.
28+
No requirements/design/implementation.
29+
30+
STOP after Phase 1 docs.
31+
32+
## Files to Create
33+
- `effect-native/.specs/crsql-mesh-runtime-react-native-op-sqlite/instructions.md`
34+
- `effect-native/.specs/crsql-mesh-runtime-react-native-expo-sqlite/instructions.md`
35+
36+
## Acceptance Criteria
37+
- [x] Each instructions.md follows Phase 1 rules.
38+
- [x] Each doc explicitly states extension-loading assumptions (native vs wasm).
39+
- [x] Each doc explicitly excludes Electron.
40+
41+
## Progress Log
42+
### 2025-12-15
43+
- Task created from Tom request
44+
45+
### 2025-12-14
46+
- Created `effect-native/.specs/crsql-mesh-runtime-react-native-op-sqlite/instructions.md`
47+
- Created `effect-native/.specs/crsql-mesh-runtime-react-native-expo-sqlite/instructions.md`
48+
49+
## Completion Notes
50+
**Date:** 2025-12-14
51+
52+
**Summary:** Created Phase 1 `instructions.md` files for both React Native runtime packages.
53+
54+
**Files created:**
55+
- `effect-native/.specs/crsql-mesh-runtime-react-native-op-sqlite/instructions.md`
56+
- `effect-native/.specs/crsql-mesh-runtime-react-native-expo-sqlite/instructions.md`
57+
58+
**Key decisions documented:**
59+
- Both packages use **native extension loading** (not WASM) — `.dylib` on iOS, `.so` on Android
60+
- Both packages explicitly exclude Electron
61+
- op-sqlite package targets general React Native apps
62+
- expo-sqlite package requires Expo SDK 54+ for `loadExtensionAsync()` support
63+
- Cross-app sync, background scheduling, and battery-aware sync are deferred to future work

0 commit comments

Comments
 (0)