build: qualify and adopt the Effect-native baseline (#181)
Stack and scope
- Refs #181; specification #180; delivery map #174.
- Immediate parent: #205 (
docs/effect-native-planning-checkpoint,9e1917971f09252ef0f6629720cbbc882c6e87d9). - Next stack PR: #207, a partial #170 contract slice (not a completed backend).
- Candidate:
b52a42da2cb360c8dc676ab27db61452b30f04b9. This PR contains only the native-baseline qualification and explicitly approved dependency/API migration slice. - Draft, unmerged; awaiting external review. #181 is stack-satisfied at this reviewed/tested SHA for descendant development, not closed or merged. No other replacement gate is waived.
Changes
- Qualify Effect
4.0.0-rc.117, then adopt the five existing Effect-family pins with explicit owner authorization. Upgrade Vitest to5.0.2with separate owner approval to satisfy@effect/vitest's supported peer range. - Keep the exact compiler
7.0.2+effect-tsgo.0.36.5, TypeScript and@effect/tsgopins unchanged. - Migrate affected public dependency APIs without adding a compatibility engine. Preserve WebSocket authentication headers using the supported constructor service, verified on Node and Bun against a local server.
- Add focused exact A/E/R and runtime fixtures plus a bounded qualification manifest. Preserve rc.108 failures, native declaration limitations and all historical evidence corrections. No installed upstream package patch was needed; the TODO-marked declaration-widening helper remains qualification-fixture-only.
- Include scoped Changeset metadata. No version/release command was run.
Verification
Parent independently ran the full uncached CI check/build, tests and docs at fe595ba3e0c51f49d1e00bf496bfea7de78948b8: all exit 0. The only subsequent repository change is qualification documentation. At final head b52a42d, parent reran compiler verification, formatting, docs, whitespace, clean-tree verification, the current positive qualification and its injected-failure control:
| Check | Actual result |
|---|---|
bunx --no-install turbo run lint '//#fmt' check:types '//#check:types' build --force | Exit 0 at fe595ba |
bun run test -- --force | Exit 0 at fe595ba |
bun run build:docs -- --force | Exit 0 at both heads |
Current 181-final-evidence/run-v2.sh | Exit 0 at final head; all 26 desired gates pass, 110 controls match |
| Isolated injected desired failure | Expected exit 1; exactly one desired RED, all other controls match |
| Source, snapshot and evidence hashes | Parent independently verified, exit 0 |
Evidence root: /home/cyan/.local/state/mitome/effect-native-stack/. Final parent logs: 181-parent-validation-b52a42d/; full prior-head gates: 181-parent-validation-fe595ba/. The manifest provides exact rerun commands, source hashes and preserved failures. These retained machine-local artifacts are not claimed to be portable CI artifacts.
Independent Standards, Spec and Ponytail reviews completed; all accepted findings are resolved. Corrections include strict historical-source verification, identical-byte package-store relocation, native Effect.Success reuse and nonzero exit on any desired-gate failure. Historical weaker runners remain preserved and clearly marked, not silently repaired.
Explicit limits
- This qualifies native ownership and typing through retained application → Session/Turn evidence, not the replacement's eventual public exports.
- Linux x64 / Bun 1.4.0 and Node 26.7.0 evidence only; no Node 24 floor, native macOS/Windows/musl or eight-target release qualification.
- No real Provider service, selected production backend, SQL transaction, HTTP/TUI or machine-failure durability gate follows. The WebSocket check uses a local server and synthetic credentials.
- Current native declaration defects, upstream source-build limitations and unrelated existing peer mismatches remain documented.
- Published-head CI verify passed. Parent verified CI merge ref
b11d11d07554723187807f6b061a49963dba3209has the same tree asb52a42d; full log retained. External reviews/threads are currently empty, with a bounded watcher active. The Changesets bot confirms release metadata, not a performed release. No silence-as-approval claim, merge or release.