Skip to content

Commit 1e8a360

Browse files
release blockers
1 parent 94c8b25 commit 1e8a360

10 files changed

+333
-15
lines changed

.tasks/backlog/TASK-209-release-0.16.300-preview.md

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,49 @@ The release is considered ready when:
2020

2121
## Blockers (must be cleared)
2222

23+
This list is intended to be exhaustive. Each blocker must have an owning task card.
24+
2325
### Tom sign-off (explicit gate)
2426
- [ ] **Tom release sign-off recorded**: `.wishes/blocked-on-tom/release-readiness-decision.md`
2527

26-
### Required build artifacts
27-
- [ ] **WASM build works on current Zig toolchain** (prior CI notes mention Zig 0.14 incompatibility)
28-
- Related: `.tasks/backlog/TASK-207-reenable-ci-for-release.md`
29-
- [ ] **Browser bundle uses local CR-SQLite WASM** (not CDN sql.js)
28+
### Versioning + tag semantics
29+
- [ ] **Define the canonical version string and tag shape** (`0.16.300-preview` + `v0.16.300-preview`) and ensure all release automation keys off it.
30+
- Task: `.tasks/backlog/TASK-210-release-versioning-and-tags.md`
31+
32+
### Required build artifacts (scope = Native + WASM + Browser)
33+
- [ ] **Native Zig extension release artifacts exist and are verifiable** (darwin + linux at minimum).
34+
- Task: `.tasks/backlog/TASK-211-release-native-zig-artifacts.md`
35+
- [ ] **WASM build works on current Zig toolchain and is reproducible in CI**.
36+
- Task: `.tasks/backlog/TASK-212-fix-wasm-build-for-release.md`
37+
- [ ] **Browser bundle uses local CR-SQLite WASM (not CDN sql.js)**.
3038
- Evidence of prior gap: `.tasks/done/TASK-069-wire-scratchpads.md`
39+
- Task: `.tasks/backlog/TASK-213-browser-provider-loads-crsqlite-wasm.md`
3140

3241
### CI / validation
33-
- [ ] **CI re-enabled and passing** on Linux + macOS, including WASM
42+
- [ ] **CI re-enabled and passing** on Linux + macOS, including WASM + browser tests.
3443
- Task: `.tasks/backlog/TASK-207-reenable-ci-for-release.md`
35-
- [ ] **Oracle-dependent tests have a CI strategy**
44+
- [ ] **Oracle-dependent tests have a CI strategy**.
3645
- Either provide Rust/C oracle binaries in CI OR explicitly skip oracle-dependent jobs.
3746
- Evidence of issue: `.tasks/done/TASK-206-disable-ci-temporarily.md`
47+
- Task: `.tasks/backlog/TASK-214-ci-oracle-strategy.md`
3848

39-
### Packaging / distribution wiring
40-
- [ ] **npm release path defined and implemented in `effect-native/`** (OIDC publish)
41-
- Note: TypeScript changes must be spec-gated under `effect-native/.specs/`.
42-
- [ ] **GitHub Release artifact matrix defined + produced** (at minimum darwin + linux)
43-
- [ ] **nix packaging hooks validated via tag** (flake / fetch-from-git tag flow)
49+
### Distribution wiring
50+
- [ ] **GitHub Release workflow ships Zig artifacts** (not the legacy `core/` Rust/C publish flow).
51+
- Task: `.tasks/backlog/TASK-215-github-release-zig-artifacts.md`
52+
- [ ] **nix packaging uses Zig artifacts and matches `0.16.300-preview`** (tags → nix).
53+
- Task: `.tasks/backlog/TASK-216-nix-release-uses-zig.md`
54+
- [ ] **npm publish path exists in `effect-native/`** (OIDC provenance publish).
55+
- Task: `.tasks/backlog/TASK-217-effect-native-oidc-npm-release.md`
4456

4557
### Backwards-compat surface verification
46-
- [ ] **Required upstream surface areas confirmed** for `0.16.3`-compat
47-
- This is a checklist task: enumerate what “backwards compatible” means for this release (functions, tables, wire behavior).
48-
- The goal is to avoid accidentally shipping a preview missing required pieces.
58+
- [ ] **Backwards-compat checklist for upstream `0.16.3` is explicit and checked off** (functions, tables, browser runtime expectations).
59+
- Task: `.tasks/backlog/TASK-218-compat-checklist-0.16.3.md`
4960

5061
## Files to Modify
5162
- `.tasks/backlog/TASK-209-release-0.16.300-preview.md` (this file)
5263

5364
## Acceptance Criteria
54-
1. [ ] Every blocker above has an owning `.tasks/**/TASK-*.md` card (or explicit rationale why not)
65+
1. [ ] Every blocker above has an owning `.tasks/**/TASK-*.md` card
5566
2. [ ] Each blocker has a clear verification command or observable proof
5667
3. [ ] Blockers list stays current as new gaps are discovered
5768

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# TASK-210 — Release Versioning + Tags (0.16.300-preview)
2+
3+
## Goal
4+
Make `0.16.300-preview` a first-class, consistent version across:
5+
- git tags
6+
- npm publish (effect-native OIDC)
7+
- GitHub Releases (native artifacts)
8+
- nix (tags)
9+
10+
## Status
11+
- State: backlog
12+
- Priority: HIGH
13+
- Created: 2025-12-25
14+
15+
## Required Decisions / Clarifications
16+
- Canonical git tag name: `v0.16.300-preview` (assumed)
17+
- Root repo `package.json` currently uses `0.16.3-1`; decide whether it becomes `0.16.300-preview` or remains separate from release version.
18+
19+
## Files to Modify
20+
- `package.json` (root) (version)
21+
- `flake.nix` (version strings printed + derivation version)
22+
- `scripts/sync-version.ts` (version sync semantics)
23+
- Any release scripts that assume `0.16.3`
24+
25+
## Acceptance Criteria
26+
1. [ ] A single canonical version string is defined: `0.16.300-preview`
27+
2. [ ] A single canonical git tag format is defined and used: `v0.16.300-preview`
28+
3. [ ] Root `package.json`, `flake.nix`, and any version reporters agree (or explicitly document divergence)
29+
4. [ ] `npm run sync-version` does not clobber preview versions back to `0.16.3-1`
30+
31+
## Parent Docs / Cross-links
32+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
33+
34+
## Progress Log
35+
- 2025-12-25: Created from release planning.
36+
37+
## Completion Notes
38+
(Empty until done.)
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# TASK-211 — Release Native Zig Artifacts (darwin + linux)
2+
3+
## Goal
4+
Produce and verify the native Zig loadable extension artifacts for `0.16.300-preview`.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Scope
12+
Minimum required for release:
13+
- macOS (arm64 + x86_64) `.dylib` (universal acceptable)
14+
- Linux x86_64 `.so`
15+
16+
## Files to Modify
17+
- `zig/` build outputs are generated, but the task should modify only build scripts / CI packaging:
18+
- `scripts/build-zig.sh`
19+
- `scripts/build-production.ts` (if used for bundling)
20+
- `.github/workflows/zig-tests.yaml` (if needed for artifact upload)
21+
22+
## Acceptance Criteria
23+
1. [ ] `nix run nixpkgs#zig -- build -Doptimize=ReleaseFast` succeeds
24+
2. [ ] Built artifacts exist with deterministic names under `zig/zig-out/lib/`
25+
3. [ ] Artifacts can be loaded by sqlite on their target platforms
26+
4. [ ] Artifact naming + layout matches the GitHub Release upload plan
27+
28+
## Parent Docs / Cross-links
29+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
30+
31+
## Progress Log
32+
- 2025-12-25: Created from release planning.
33+
34+
## Completion Notes
35+
(Empty until done.)
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# TASK-212 — Fix WASM Build for Release (current Zig toolchain)
2+
3+
## Goal
4+
Make the CR-SQLite WASM build reproducible and CI-friendly for `0.16.300-preview`.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Context / Evidence
12+
- CI was disabled partly because “WASM build requires Zig 0.14 compatibility”:
13+
- `.tasks/done/TASK-206-disable-ci-temporarily.md`
14+
- `.github/workflows/zig-tests.yaml`
15+
16+
## Files to Modify
17+
- `zig/wasm-build/build-sqlite-wasm.sh`
18+
- `zig/build.zig` / `zig/build.zig.zon` (if needed)
19+
- `.github/workflows/zig-tests.yaml`
20+
21+
## Acceptance Criteria
22+
1. [ ] `nix run nixpkgs#zig -- build wasm` succeeds in CI-like environment
23+
2. [ ] `make -C zig test-browser` passes using the built artifacts
24+
3. [ ] No network fetches are required at build time OR they are explicitly allowed and cached (e.g. sqlite amalgamation, sqlite-vec)
25+
26+
## Parent Docs / Cross-links
27+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
28+
29+
## Progress Log
30+
- 2025-12-25: Created from release planning.
31+
32+
## Completion Notes
33+
(Empty until done.)
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# TASK-213 — Browser Provider Loads Local CR-SQLite WASM (no CDN sql.js)
2+
3+
## Goal
4+
Ensure the browser provider uses the local bundled CR-SQLite WASM (`zig/browser-dist/sql-wasm.js` + `sql-wasm.wasm`) instead of loading `sql.js` from cdnjs.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Evidence
12+
- Current `provider.js` loads from cdnjs:
13+
- `zig/browser-dist/provider.js`
14+
- `zig/browser-test/fixtures/provider.js`
15+
- `zig/browser-test/src/provider/worker.ts`
16+
- Scratchpad note flags this as pending:
17+
- `.tasks/done/TASK-069-wire-scratchpads.md`
18+
19+
## Files to Modify
20+
- `zig/browser-test/src/provider/worker.ts`
21+
- `zig/browser-test/fixtures/provider.js` (rebuilt output)
22+
- `zig/browser-dist/provider.js` (rebuilt output)
23+
- Potentially `zig/browser-dist/README.md` (if it documents the old behavior)
24+
25+
## Acceptance Criteria
26+
1. [ ] No `https://cdnjs.cloudflare.com/ajax/libs/sql.js/...` references remain in provider artifacts
27+
2. [ ] Provider successfully initializes from `sql-wasm.js` and locates sibling `sql-wasm.wasm`
28+
3. [ ] `make -C zig test-browser` passes
29+
4. [ ] `bun --hot scratch/browser-scratchpad/src/index.ts` works with no external CDN dependency
30+
31+
## Parent Docs / Cross-links
32+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
33+
34+
## Progress Log
35+
- 2025-12-25: Created from release planning.
36+
37+
## Completion Notes
38+
(Empty until done.)
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# TASK-214 — CI Oracle Strategy (Rust/C availability)
2+
3+
## Goal
4+
Decide and implement a CI strategy for tests that currently rely on the Rust/C oracle.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Context / Evidence
12+
- CI was disabled partly due to oracle-dependent tests:
13+
- `.tasks/done/TASK-206-disable-ci-temporarily.md`
14+
- `.tasks/backlog/TASK-207-reenable-ci-for-release.md`
15+
16+
## Options
17+
- Provide oracle binaries in CI (build `core/` or download prebuilt)
18+
- Split CI: always run Zig-only tests; run oracle parity on a best-effort job
19+
- Remove oracle dependency for release gate (only for preview) and rely on Zig-only suites
20+
21+
## Files to Modify
22+
- `.github/workflows/zig-tests.yaml`
23+
- Potentially add CI scripts under `zig/harness/` for "zig-only" vs "oracle" grouping
24+
25+
## Acceptance Criteria
26+
1. [ ] CI config clearly separates oracle-dependent and zig-only test jobs
27+
2. [ ] Release gating jobs do not silently pass by skipping too much
28+
3. [ ] Document which jobs are required for `0.16.300-preview`
29+
30+
## Parent Docs / Cross-links
31+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
32+
33+
## Progress Log
34+
- 2025-12-25: Created from release planning.
35+
36+
## Completion Notes
37+
(Empty until done.)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# TASK-215 — GitHub Release Ships Zig Artifacts
2+
3+
## Goal
4+
Update GitHub release automation to ship Zig-built artifacts for `0.16.300-preview`.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Context / Evidence
12+
- Existing `.github/workflows/publish.yaml` currently builds from `core/` (Rust/C) and uses apt/rustup.
13+
14+
## Files to Modify
15+
- `.github/workflows/publish.yaml`
16+
- Potentially add Zig build + upload steps (or call existing scripts)
17+
18+
## Acceptance Criteria
19+
1. [ ] Tag push `v0.16.300-preview` produces a GitHub Release with Zig artifacts attached
20+
2. [ ] Artifacts are clearly named per platform (darwin x86_64/aarch64 or universal; linux x86_64/aarch64)
21+
3. [ ] No `core/` build is required for the Zig release pipeline (unless explicitly chosen)
22+
23+
## Parent Docs / Cross-links
24+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
25+
26+
## Progress Log
27+
- 2025-12-25: Created from release planning.
28+
29+
## Completion Notes
30+
(Empty until done.)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# TASK-216 — Nix Release Uses Zig Artifacts + Matches Preview Version
2+
3+
## Goal
4+
Ensure nix packaging for this repo produces the Zig artifacts and reports version `0.16.300-preview`.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Context / Evidence
12+
- `flake.nix` currently builds `core/` Rust/C and has `version = "0.16.3"` and `print-version` returns `0.16.3`.
13+
14+
## Files to Modify
15+
- `flake.nix`
16+
- Any nix scripts referenced by release pipeline
17+
18+
## Acceptance Criteria
19+
1. [ ] `nix build` produces Zig extension artifacts (not Rust/C)
20+
2. [ ] `nix run .#print-version` returns `0.16.300-preview`
21+
3. [ ] Tag-based fetch / nix usage works for released tag
22+
23+
## Parent Docs / Cross-links
24+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
25+
26+
## Progress Log
27+
- 2025-12-25: Created from release planning.
28+
29+
## Completion Notes
30+
(Empty until done.)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# TASK-217 — effect-native OIDC npm Release Path
2+
3+
## Goal
4+
Implement the npm publish path for `0.16.300-preview` via the `effect-native/` repo using OIDC provenance.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Constraints
12+
- All TypeScript work happens in `effect-native/`.
13+
- Spec-gated: must follow `effect-native/.specs/AGENTS.md`.
14+
15+
## Files to Modify
16+
- `effect-native/.specs/**` (as needed to pass spec gates)
17+
- `effect-native/packages-native/**` (implementation)
18+
- `effect-native/.github/workflows/**` (publish workflow, if required)
19+
20+
## Acceptance Criteria
21+
1. [ ] A publishable package (or set of packages) exists for the artifacts required by this release
22+
2. [ ] OIDC provenance publish is configured and works in CI
23+
3. [ ] Package version aligns to `0.16.300-preview` (or explicitly documents mapping)
24+
25+
## Parent Docs / Cross-links
26+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
27+
28+
## Progress Log
29+
- 2025-12-25: Created from release planning.
30+
31+
## Completion Notes
32+
(Empty until done.)
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# TASK-218 — Backwards-Compat Checklist (Upstream 0.16.3)
2+
3+
## Goal
4+
Define what “backwards compatible with upstream cr-sqlite v0.16.3” means for `0.16.300-preview`, and verify it.
5+
6+
## Status
7+
- State: backlog
8+
- Priority: HIGH
9+
- Created: 2025-12-25
10+
11+
## Checklist Areas
12+
- SQL function surface (presence + basic behavior)
13+
- Table / vtab surface (`crsql_changes`, `crsql_master`, `crsql_site_id`, `crsql_tracked_peers` semantics)
14+
- Wire format / sync invariants (cross-open, multinode, resurrection, sentinel, etc.)
15+
- Browser bundle expectations (WASM availability, multitab components present)
16+
17+
## Files to Modify
18+
- `research/zig-cr/01-extension-surface.md` (if used as the canonical surface list)
19+
- `zig/harness/test-api-surface.sh` (or add a new checklist test)
20+
- This task card
21+
22+
## Acceptance Criteria
23+
1. [ ] Compatibility checklist is explicit and reviewable
24+
2. [ ] Each checklist item has a verification command or test
25+
3. [ ] Any intentional incompatibility is documented and explicitly accepted for preview
26+
27+
## Parent Docs / Cross-links
28+
- Release tracker: `.tasks/backlog/TASK-209-release-0.16.300-preview.md`
29+
30+
## Progress Log
31+
- 2025-12-25: Created from release planning.
32+
33+
## Completion Notes
34+
(Empty until done.)

0 commit comments

Comments
 (0)