Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
94 commits
Select commit Hold shift + click to select a range
c81007b
feat(stack): clean up containers left by deleted stacks (CLI-2611) (#…
7ttp Oct 6, 2026
7c0c742
test(repo): fix live e2e reboot flake and cut cancellations (#7016)
7ttp Oct 6, 2026
d803b50
chore(stack): bump realtime to v2.140.11-r0 (#7025)
supabase-cli-releaser[bot] Oct 6, 2026
96f9720
chore(stack): bump storage to v1.79.37-r0 (#7030)
supabase-cli-releaser[bot] Oct 6, 2026
6ebbac0
chore(stack): bump realtime to v2.141.0-r0 (#7031)
supabase-cli-releaser[bot] Oct 7, 2026
d3ed9c5
chore(stack): bump realtime to v2.142.0-r0 (#7032)
supabase-cli-releaser[bot] Oct 7, 2026
7e2a212
fix(stack): allow functions serve overrides after stack start (CLI-26…
7ttp Oct 7, 2026
93a17ec
chore(stack): bump storage to v1.79.38-r0 (#7033)
supabase-cli-releaser[bot] Oct 7, 2026
b700a95
fix(stack): default functions serve to stream-json for agents (CLI-26…
7ttp Oct 7, 2026
97897c5
fix(cli): create `supabase_functions` on the stack backend (CLI-2626)…
7ttp Oct 7, 2026
07a22b3
fix(stack): give native postgres the host CA bundle (CLI-2627) (#7023)
7ttp Oct 7, 2026
d369b4f
fix(ci): require write access for fast-forward approvals (#7035)
Coly010 Oct 7, 2026
c491f50
chore(stack): bump storage to v1.80.0-r0 (#7042)
supabase-cli-releaser[bot] Oct 7, 2026
2a9c058
ci(ci): post AI reviews on PRs over the GitHub diff size limit (#7040)
jgoux Oct 7, 2026
c51fc20
test(stack): fix two LogForwarder integration test races (#7034)
avallete Oct 7, 2026
64eadcd
fix(stack): run native pg_cron jobs in background workers (CLI-2617) …
7ttp Oct 7, 2026
8b70747
fix(stack): remove database helpers when their owner exits (#7014)
just-some-random-pal Oct 7, 2026
34ceffd
ci(release): add next channel, maintenance lines and guarded promotio…
Coly010 Oct 7, 2026
cc18e65
feat(stack): show gateway requests in Studio's API Gateway logs (#6942)
avallete Oct 7, 2026
0cc816f
test(repo): retry stalled live updates and name stalled analytics pol…
7ttp Oct 7, 2026
0a992e9
refactor(stack): harden the stack runtime lifecycle, ports and engine…
jgoux Oct 7, 2026
476267a
chore: sync API types from infrastructure (#7043)
supabase-cli-releaser[bot] Oct 7, 2026
518ac2d
feat(stack): allow repeatable --stack-id in stack destroy (#6964) (#7…
tirthraj01 Oct 8, 2026
2286e8c
chore(api): sync Management API OpenAPI spec (#7054)
supabase-cli-releaser[bot] Oct 8, 2026
79eaa9c
fix(config): mirror new Management API postgres settings (#7056)
avallete Oct 8, 2026
09a5b80
chore(stack): bump storage to v1.80.2-r0 (#7057)
supabase-cli-releaser[bot] Oct 8, 2026
5a0099e
refactor(cli): cover the `db` connection string parser with effect li…
7ttp Oct 8, 2026
dddc1c1
refactor(cli): cover `db` connections and dns with effect lint (CLI-2…
7ttp Oct 8, 2026
9ccf2fe
refactor(cli): cover the `db` config toml reader with effect lint (CL…
7ttp Oct 8, 2026
e568bec
refactor(cli): cover the rest of the `db` module with effect lint (CL…
7ttp Oct 8, 2026
e5f91a4
chore(stack): bump realtime to v2.143.0-r0 (#7053)
supabase-cli-releaser[bot] Oct 8, 2026
ecd1ed6
ci(release): gate hotfix pull requests into main (#7050)
kanadgupta Oct 8, 2026
a76a8c6
docs(cli): record the hotfix flow and the forward-only release policy…
kanadgupta Oct 8, 2026
08c7e7d
ci(release): announce back-merge conflicts after a hotfix (#7051)
kanadgupta Oct 8, 2026
02359bf
fix(cli): classify new local stack failures in telemetry (#7044)
avallete Oct 8, 2026
8cdb6f3
chore(stack): bump analytics to v1.53.0-r0 (#7070)
supabase-cli-releaser[bot] Oct 8, 2026
1818674
chore(stack): bump realtime to v2.143.1-r0 (#7071)
supabase-cli-releaser[bot] Oct 8, 2026
065888b
chore(stack): bump realtime to v2.143.2-r0 (#7072)
supabase-cli-releaser[bot] Oct 9, 2026
c7acaf9
chore(stack): bump realtime to v2.143.3-r0 (#7073)
supabase-cli-releaser[bot] Oct 9, 2026
41a2806
ci: lint GitHub Actions workflows with jactionlint (#7069)
kanadgupta Oct 9, 2026
fa40d4e
chore(stack): bump storage to v1.81.0-r0 (#7076)
supabase-cli-releaser[bot] Oct 9, 2026
929f361
fix(stack): create database helpers by name before attaching to them …
just-some-random-pal Oct 9, 2026
09ed2bd
fix(stack): pool gateway writes on keep-alive connections (CLI-2623) …
7ttp Oct 9, 2026
b5bba60
chore(deps): upgrade effect to 4.0.2 (#6999)
kanadgupta Oct 9, 2026
f825003
feat(stack): run OrioleDB through db.orioledb_version (#6934)
avallete Oct 9, 2026
5bde398
feat(stack): re-plan changed endpoint ports when a stopped stack star…
jgoux Oct 12, 2026
2e1f657
fix(stack): recreate containers whose published host port was taken b…
jgoux Oct 12, 2026
a8b4046
fix(cli): stop `start` failing on podman without snippets (CLI-2690) …
7ttp Oct 12, 2026
c4b866a
refactor(cli): cover the `api`, `http` and `auth` modules with effect…
7ttp Oct 12, 2026
07fc492
test(repo): harden slim probes and streamed fixtures (#7060)
7ttp Oct 12, 2026
ba988c1
chore(stack): bump studio to 2026.10.12-sha-3699278-r0 (#7090)
supabase-cli-releaser[bot] Oct 12, 2026
2b2d0bf
refactor(cli): cover `project-environment` and `local-project-context…
7ttp Oct 12, 2026
7d2d47b
refactor(cli): cover `viper-env` with effect lint (CLI-2650) (#7078)
7ttp Oct 12, 2026
707f7de
test(stack): wait on podman container removal instead of its rotating…
jgoux Oct 12, 2026
b7c8b85
chore(cli): add command permission model and completeness test (#6993)
Prashansa-K Oct 12, 2026
c6bbe32
fix(cli): name unclassified defects in the error fingerprint (#7067)
avallete Oct 12, 2026
d04a534
fix(stack): keep Auth database and stack host connections alive (#7080)
jgoux Oct 12, 2026
a1fa3b2
chore(repo): sync the effect skill with upstream (#7094)
7ttp Oct 12, 2026
d5f8460
fix(stack): restart running dependents when a prerequisite crashes (#…
jgoux Oct 12, 2026
9bfe6af
chore(deps): bump @supabase/pg-delta to 1.0.0-alpha.59 (#7099)
avallete Oct 12, 2026
415735e
chore(stack): bump storage to v1.81.1-r0 (#7102)
supabase-cli-releaser[bot] Oct 12, 2026
41ba9ec
refactor(cli): cover the `docker` module with effect lint (CLI-2652) …
7ttp Oct 13, 2026
5e0912f
refactor(cli): cover the `edge-runtime` and `storage` modules with ef…
7ttp Oct 13, 2026
d7cc4c0
chore(cli): bring commands under the effect skill (CLI-2693) (#7092)
7ttp Oct 13, 2026
5b96677
chore(stack): bump storage to v1.81.3-r0 (#7107)
supabase-cli-releaser[bot] Oct 13, 2026
4d331f1
chore(cli): use claude-haiku-5-5 for AI release notes (#7110)
avallete Oct 13, 2026
f371bc9
fix(cli): say "removed in v3" in db remote commit and inspect db depr…
Coly010 Oct 13, 2026
0f1a103
ci(release): resolve and repair develop-into-next syncs with Claude (…
avallete Oct 13, 2026
6cc6ae2
ci: centralize Claude and Codex model ids (#7111)
avallete Oct 13, 2026
a36a396
ci(release): trigger sync repair when the AI review completes (#7114)
avallete Oct 13, 2026
5f4ac9c
fix(cli): name the failing engine operation in stack telemetry (#7113)
avallete Oct 13, 2026
21396b5
chore(cli): add permission building blocks for shared API calls (#7105)
Prashansa-K Oct 13, 2026
d5ac73f
ci(release): give sync repair the failing test output, not just the l…
avallete Oct 13, 2026
c7d2ba8
ci(release): land approved sync heads even when the source moved (#7125)
avallete Oct 13, 2026
e58c283
ci(stack): run macOS native scenarios on a larger runner (#7126)
avallete Oct 13, 2026
4038b13
feat(cli): warn at runtime on deprecated db pull and domains flags (C…
Coly010 Oct 13, 2026
6baa653
chore(cli): map secrets list, snippets list and db query permissions …
Prashansa-K Oct 13, 2026
581eb8a
ci: shard integration tests and rebalance CLI e2e shards (#7127)
avallete Oct 13, 2026
3a4a7b0
refactor(cli): cover the `migration` module with effect lint (CLI-265…
7ttp Oct 13, 2026
02f0908
refactor(cli): cover the `seed` and `pgdelta` modules with effect lin…
7ttp Oct 13, 2026
f3529df
chore(stack): bump storage to v1.81.4-r0 (#7132)
supabase-cli-releaser[bot] Oct 13, 2026
95e1961
chore(stack): bump realtime to v2.143.4-r0 (#7133)
supabase-cli-releaser[bot] Oct 13, 2026
7428f5e
chore(stack): bump storage to v1.81.5-r0 (#7134)
supabase-cli-releaser[bot] Oct 14, 2026
9af6852
chore(cli): bring the remaining commands under the effect skill (CLI-…
7ttp Oct 14, 2026
c690376
chore(api): sync Management API OpenAPI spec (#7138)
supabase-cli-releaser[bot] Oct 14, 2026
87e47b5
chore(cli): map db lint, push, reset and related command permissions …
Prashansa-K Oct 14, 2026
28dad9c
chore(stack): bump storage to v1.82.0-r0 (#7140)
supabase-cli-releaser[bot] Oct 14, 2026
cb2985f
chore(cli): map db dump, pull, diff and declarative command permissio…
Prashansa-K Oct 14, 2026
45376da
fix(cli): name the failing platform operation in defect telemetry (#7…
avallete Oct 14, 2026
2930f6d
docs(cli): port pg-delta reference fixes into db diff and db pull ove…
w3b6x9 Oct 14, 2026
ddb5c6e
chore(stack): bump storage to v1.82.1-r0 (#7153)
supabase-cli-releaser[bot] Oct 14, 2026
d68f6d0
fix(cli): wait for a concurrent Docker prune in stop (#7143)
avallete Oct 14, 2026
d47510f
ci: speed up tests with sticky disks, parallel e2e and on-demand Wind…
avallete Oct 14, 2026
8a549df
fix(cli): warn that deprecated config, env vars and import maps are r…
avallete Oct 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 6 additions & 1 deletion .agents/skills/effect/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,11 @@ Use current Effect v4 APIs and the production defaults in this skill. Establishe

## Source Rule

Reviewed against Effect **4.0.0**, upstream commit
[`6389d9ac6`](https://github.com/Effect-TS/effect/tree/6389d9ac64c0f62ccc8b575fb9afc65fc104e814).
Read `references/V4_APIS.md` when upgrading from v3 or a v4 prerelease.
The installed version takes precedence: prerelease APIs and import paths can differ.

Check these before guessing:

- the nearest `AGENTS.md` and any project-local Effect practices doc
Expand Down Expand Up @@ -47,7 +52,7 @@ If a task spans several branches, read all matching files before editing.
- Use `Stream` for effectful sources that emit many values over time and need pull, backpressure, interruption, or transformation.
- Prefer Effect HTTP client modules for outgoing HTTP in Effect applications when their typed errors, layers, and client transforms are useful.
- Prefer Effect-aware tests, explicit layers, and deterministic synchronization over sleeps.
- Prefer decoders and `schema.makeEffect(...)` at untrusted boundaries; reserve throwing `schema.make(...)` for trusted construction, and never use casts to skip validation.
- Decode unknown wire input with `Schema.decodeUnknownEffect(...)`; use `schema.makeEffect(...)` for typed constructor input with validation. Reserve throwing `schema.make(...)` for trusted construction, and never use casts to skip validation.

## Quick Selection Guide

Expand Down
2 changes: 2 additions & 0 deletions .agents/skills/effect/references/CACHING.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ Prefer `effect/Cache` over a `Map` + timestamp + prune-loop cache when its keyed
- Return a zero TTL (`0` or `"0 millis"`) from `timeToLive` to avoid caching transient failures or degraded fallbacks without failing the caller. A short negative-cache TTL can be appropriate for stable failures such as not-found results.
- `Cache.invalidate(cache, key)` / `Cache.refresh(cache, key)` handle explicit staleness; `Cache.has` checks without triggering a lookup.
- Cache construction is effectful. Build the cache once in the owning layer/scope and share the handle; a cache built per call caches nothing.
- Lookup services are captured at construction by default. Use `requireServicesAt: "lookup"` only when callers should supply them on each lookup; this changes the cache's environment type.
- `timeToLive` is optional and defaults to infinity. Specify it when freshness matters; capacity alone only bounds retained entries.
- For a single value (no key), use `Effect.cached(effect)` or `Effect.cachedWithTTL(effect, ttl)` instead of a one-key Cache.
- For cached resources that need cleanup (connections, clients), use `ScopedCache`.

Expand Down
11 changes: 6 additions & 5 deletions .agents/skills/effect/references/CONFIG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ export const dataDirectoryConfig = Config.schema(AbsolutePath, "APP_DATA_DIR");
export const layerFromEnvironment = Layer.effect(
Configuration.Service,
Effect.gen(function* () {
const apiKey = yield* Config.redacted("API_KEY");
const optionalModel = yield* Config.option(Config.string("MODEL"));
const enabled = yield* Config.boolean("FEATURE_ENABLED").pipe(Config.withDefault(false));
const apiKey = yield* Config.Redacted("API_KEY");
const optionalModel = yield* Config.option(Config.String("MODEL"));
const enabled = yield* Config.Boolean("FEATURE_ENABLED").pipe(Config.withDefault(false));

return Configuration.Service.of({ apiKey, optionalModel, enabled });
}),
Expand All @@ -23,8 +23,9 @@ export const layerFromEnvironment = Layer.effect(

- `Config<T>` is yieldable and reads the current `ConfigProvider` reference.
- The default provider is `ConfigProvider.fromEnv()`.
- Use `Config.redacted(...)` for credentials.
- Use `Config.schema(...)` or `Config.mapOrFail(...)` for refined values.
- Constructors are capitalized: `Config.String`, `Config.Boolean`, `Config.Int`, `Config.Duration`, `Config.URL`, and `Config.Redacted`. Combinators such as `Config.option` and `Config.withDefault` remain lowercase.
- Use `Config.Redacted(...)` for credentials.
- Use `Config.schema(...)` for refined values, or `Config.mapEffect(...)` for a transformation returning `Effect<B, Config.ConfigError>`; `Config.mapOrFail` is not a v4 API.
- Use `Config.option(...)` for semantic absence.
- Use `Config.withDefault(...)` for missing-data defaults only; malformed values still fail.
- Use `Config.orElse(...)` only when intentionally catching any config parse failure.
Expand Down
14 changes: 9 additions & 5 deletions .agents/skills/effect/references/HTTP_CLIENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,14 @@ Use this when writing outgoing HTTP calls, Effect HttpClient adapters, status cl

Use Effect HTTP client modules for outgoing HTTP in app/provider code:

- `effect/unstable/http/HttpClient`
- `effect/unstable/http/HttpClientRequest`
- `effect/unstable/http/HttpClientResponse`
- `effect/unstable/http/HttpClientError`
- `effect/http/HttpClient`
- `effect/http/HttpClientRequest`
- `effect/http/HttpClientResponse`
- `effect/http/HttpClientError`

The grouped import is `import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http"`.
Current v4 exports no longer include the prerelease `effect/unstable/http` path.
Individual APIs may still carry an `@stability unstable` annotation; import placement is not a stability guarantee.

Prefer Effect HttpClient in Effect application and provider code when its typed errors, layers, and transforms are useful. Raw `fetch` remains reasonable for browser or edge constraints, small adapters, platform transports, and libraries that intentionally avoid unstable Effect HTTP APIs.

Expand Down Expand Up @@ -39,7 +43,7 @@ Useful APIs:
- `HttpClient.filterStatusOk` / `HttpClientResponse.filterStatusOk` before decoding when non-2xx responses are failures.
- `HttpClientResponse.schemaBodyJson(...)` for body-only decoding, `schemaJson(...)` for status/headers/body decoding, and `schemaNoBody(...)` for status/headers decoding.
- `HttpClient.retryTransient(...)` for common transient HTTP failures.
- `HttpClient.withRateLimiter(...)` for proactive pacing and learning from rate-limit headers. It requires a `RateLimiter` plus initial window, limit, and key options; it adds `RateLimiterError` to the error channel and retries `429` responses by default.
- `HttpClient.withRateLimiter(...)` for proactive pacing and learning from rate-limit headers. It requires a `RateLimiter` plus initial window, limit, and key options; it adds `RateLimiterError` to the error channel and retries `429` responses by default. Set `times` to bound those retries (`0` disables them); the default is unlimited.

## Retry And Rate Limits

Expand Down
16 changes: 15 additions & 1 deletion .agents/skills/effect/references/SCHEMA.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,26 @@ Guidance:

- Add `.annotate({ identifier: "User" })` only when tooling consumes it: HTTP API, RPC, OpenAPI/JSON Schema, docs, diagnostics, or codegen.
- Use `schema.make(...)` when construction is trusted.
- Use `schema.makeEffect(...)` when construction failure should stay in the Effect error channel.
- Use `schema.makeEffect(...)` when construction failure should stay in the Effect error channel. It validates typed constructor input and fails with `SchemaIssue.Issue`, not `Schema.SchemaError`.
- Use `schema.makeOption(...)` when constructor validation details may be discarded.
- Decode unknown input at boundaries with `Schema.decodeUnknownEffect(...)` by default.
- Use `Schema.decodeUnknownSync(...)` only in scripts, tests, or startup paths where throwing is acceptable.
- Use `Schema.decodeUnknownOption(...)` only when mismatch details are intentionally discarded.
- Use `Schema.decodeUnknownResult(...)` for pure code that wants explicit success/failure without Effect.

### Construction Versus Decoding

`make` / `makeEffect` apply constructor defaults and type-side validation. They are
not decoders for an unknown encoded representation. For example, decode a wire
timestamp through its string-to-DateTime codec rather than passing the string to
the decoded value's constructor.

- `Schema.decodeUnknownEffect(schema)(input)` fails with `Schema.SchemaError`.
- `SchemaParser.decodeUnknownEffect(schema)(input)` exposes the raw `SchemaIssue.Issue` for low-level parser composition.
- `schema.makeEffect(input)` also exposes `SchemaIssue.Issue`; wrap it explicitly with `Effect.mapError((issue) => new Schema.SchemaError(issue))` if the boundary needs `SchemaError`.
- `schema.make(input)` throws a plain `Error` with the issue in `cause` on validation failure; do not assume it throws `SchemaError`.
- `Schema.NumberFromString` coerces with `Number(s)`: empty or whitespace-only strings decode to `0` and trailing junk to `NaN`. Use `Schema.FiniteFromString` to reject non-numeric input, and add a non-blank check when empty input must fail.

## Field And Contract Reuse

Reuse fields directly when contracts are semantically related.
Expand Down
19 changes: 19 additions & 0 deletions .agents/skills/effect/references/TESTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,15 @@ Use this when writing Effect tests, tests involving time, retry, schedules, conc

## Defaults

```ts
import { expect, it } from "@effect/vitest";
import { Effect, Fiber } from "effect";
import { TestClock } from "effect/testing";
```

Use a v4-compatible `@effect/vitest` version. `TestClock` is under
`effect/testing`, not the root `effect` barrel or the old `effect/TestClock` path.

- Use `it.effect` by default.
- Use `it.live` only when real time or live runtime services are the behavior under test.
- Use test layers and `ConfigProvider` rather than global mutation.
Expand All @@ -12,6 +21,16 @@ Use this when writing Effect tests, tests involving time, retry, schedules, conc
- Avoid arbitrary `Effect.sleep(...)` in tests; it usually makes tests slow and flaky.
- Assert typed failures, rollback, interruption, finalization, retry bounds, idempotency, concurrency laws, and malformed persistence where relevant.

```ts
it.effect("advances virtual time", () =>
Effect.gen(function* () {
const fiber = yield* Effect.sleep("1 second").pipe(Effect.as("done"), Effect.forkScoped);
yield* TestClock.adjust("1 second");
expect(yield* Fiber.join(fiber)).toBe("done");
}),
);
```

```ts
it.effect("finds a user", () =>
Effect.gen(function* () {
Expand Down
61 changes: 61 additions & 0 deletions .agents/skills/effect/references/V4_APIS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Current v4 API Checkpoints

Reviewed against Effect 4.0.0 at upstream commit
[`6389d9ac6`](https://github.com/Effect-TS/effect/tree/6389d9ac64c0f62ccc8b575fb9afc65fc104e814).
Always inspect the consuming project's pinned version before applying these changes.

## Imports

Current v4 groups modules by domain without the prerelease `unstable` segment:

```ts
import { Config, Context, Effect, Layer, Schema } from "effect";
import { FetchHttpClient, HttpClient } from "effect/http";
import { HttpApi, HttpApiBuilder } from "effect/http-api";
import { SqlClient } from "effect/sql";
import { Rpc, RpcGroup } from "effect/rpc";
import { Atom } from "effect/reactivity";
import { TestClock } from "effect/testing";
```

Direct imports such as `effect/http/HttpClient` also work. Check `effect/package.json`
exports instead of mechanically moving every `@effect/*` package into `effect`:
platform adapters, framework integrations, SQL drivers, and `@effect/vitest` still
have separate packages. The root barrel does not re-export every domain module.

## Common Migration Traps

| Older API or assumption | Current v4 |
| ---------------------------------------------------- | -------------------------------------------------------------------------------------- |
| `Config.string`, `boolean`, `redacted` | `Config.String`, `Boolean`, `Redacted` |
| `Config.mapOrFail` | `Config.mapEffect`; failure must be `Config.ConfigError` |
| `effect/unstable/http` | `effect/http` |
| Root `TestClock` import | `effect/testing` |
| `Context.Tag` / `Effect.Service` service definitions | `Context.Service` plus explicit `Layer` implementations |
| `Effect.catchAll` | `Effect.catch`; prefer `catchTag` for selected tagged errors |
| `Effect.fork` / `forkDaemon` | `Effect.forkChild` / `forkDetach`; prefer `forkScoped` for layer-owned work |
| `Either` | `Result`; inspect constructors and payload fields rather than just renaming the import |
| `Schema.makeEffect` failures are `SchemaError` | Instance `schema.makeEffect` fails with `SchemaIssue.Issue` |

## Validation Boundaries

```ts
const Port = Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }));

const config = Config.schema(Port, "PORT");
const constructed = Port.makeEffect(8080); // failure: SchemaIssue.Issue
const decoded = Schema.decodeUnknownEffect(Port)(8080); // failure: Schema.SchemaError
const wrapped = constructed.pipe(Effect.mapError((issue) => new Schema.SchemaError(issue)));
```

See `SCHEMA.md` for constructor defaults, wire decoding, and error handling;
`CONFIG.md` for provider-based configuration; and `TESTING.md` for virtual time.

## Upstream Sources

- [Package exports](https://github.com/Effect-TS/effect/blob/6389d9ac64c0f62ccc8b575fb9afc65fc104e814/packages/effect/package.json)
- [Generated v3-to-v4 migration reference](https://github.com/Effect-TS/effect/blob/6389d9ac64c0f62ccc8b575fb9afc65fc104e814/migration/v3-to-v4.md)
- [Schema migration guide](https://github.com/Effect-TS/effect/blob/6389d9ac64c0f62ccc8b575fb9afc65fc104e814/migration/schema.md)

Use source signatures and type-check representative call sites when updating this
skill. A name appearing in a source comment is not evidence that it is exported.
Loading
Loading