build: qualify and adopt the Effect-native baseline (#181)

Draft
CH
1mo ago
+879-110

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 to 5.0.2 with 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/tsgo pins 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:

CheckActual result
bunx --no-install turbo run lint '//#fmt' check:types '//#check:types' build --forceExit 0 at fe595ba
bun run test -- --forceExit 0 at fe595ba
bun run build:docs -- --forceExit 0 at both heads
Current 181-final-evidence/run-v2.shExit 0 at final head; all 26 desired gates pass, 110 controls match
Isolated injected desired failureExpected exit 1; exactly one desired RED, all other controls match
Source, snapshot and evidence hashesParent 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 b11d11d07554723187807f6b061a49963dba3209 has the same tree as b52a42d; 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.