# Files changed · PR \#10653 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/10653/diffs)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

[chore\(refs\): sync Effect reference to rc.112](https://git.cafe/pingdotgg/t3code/pull/10653.md)

Version: 1

Head commit: 98eb810ae28492f415c105d3786c475d22922a04

Base commit: 0e5c95adb56b79ec4343fce0772147ca59aa705a

Comparison base: 0e5c95adb56b79ec4343fce0772147ca59aa705a

Showing up to 20 entries from this revision. If the pull request changes, reopen the first page before continuing.

## \.repos/effect-smol/\.agents/AGENTS.md

Status: modified; +11; −4

``````diff
@@ -87,10 +87,10 @@
 | Tests-only changes               | `pnpm lint-fix`, targeted `pnpm test --run <test_file.ts>`, `pnpm check`           |
 | Type-level/API type changes      | Targeted `pnpm test-types <filename>`, plus `pnpm check` when source types changed |
 | JSDoc text/category/link changes | `pnpm lint`                                                                        |
-| JSDoc example changes            | `pnpm lint`; from the changed package directory, run `pnpm docgen`                 |
+| JSDoc example changes            | `pnpm lint`; root `pnpm doctest --run <files>`          |
 | Docs-only changes                | `pnpm lint-fix`; no tests required unless examples or code changed                 |
 
-Never run the whole test suite. A bare `pnpm test` runs every package in watch mode and will not
+Never run the whole test suite. A bare `pnpm test` or `pnpm doctest` runs every package in watch mode and will not
 exit; always pass `--run` and the specific test files covering your change. CI runs the full suite
 on push, so leave that to CI.
 
@@ -123,6 +123,7 @@
 - Test files are located in `packages/*/test/`.
 - Main Effect library tests are in `packages/effect/test/`.
 - Use `it.effect` for Effect-returning tests.
+- `it.effect` and `it.live` already provide and close a `Scope` for each test; do not wrap test bodies in `Effect.scoped`.
 - Use regular `it` for pure synchronous tests.
 - Do not use `Effect.runSync` in tests.
 - Do not use `expect` from Vitest; use `assert` from `@effect/vitest`.
@@ -132,8 +133,14 @@
 
 - For AI documentation, read `ai-docs/README.md` very carefully before writing examples.
 - AI documentation changes may include explanatory comments when useful.
+- For public JSDoc categories and example best practices, read `.patterns/jsdoc.md`.
+- Mark runnable TypeScript examples with `````ts import.meta.vitest``. Leave examples that register Vitest tests or suites
+  as plain `````ts`` fences because the doctest collector executes runnable snippets inside tests; invoke registration
+  APIs directly to show their intended top-level usage.
+- Prefer direct trailing value assertions such as `operation() // => Option.some(1)`. Keep bindings only for reuse or meaningful multi-step setup, separate later assertion blocks with a blank line, use dense expected arrays such as `[1, 2]`, and keep a call on one line when the complete line is at most 120 characters.
+- Assert semantic values rather than console formatting. Preserve `import.meta.vitest` on type-level examples without adding tautological runtime assertions.
+- Keep marked examples self-contained, deterministic, bounded, and free of external-service dependencies. Await asynchronous work.
-- For public JSDoc `@category` guidance, read `.patterns/jsdoc.md`.
+- Run `pnpm doctest --run <source files>` from the repository root to execute changed examples.
-- When JSDoc examples are localized to a single package, run `pnpm docgen` from that package directory instead of the repository root.
 
 ## Generated Files
 
``````

## \.repos/effect-smol/\.agents/skills/grill-me/SKILL.md

Status: deleted; +0; −43

```diff
@@ -1,43 +1,0 @@
----
-name: grill-me
-description: Interview the user about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
----
-
-Interview me about every aspect of this plan until we reach a shared understanding and a defensible design.
-
-Ask exactly one question at a time, then wait for my answer before asking the next question.
-
-Use each answer to choose the next highest-leverage unresolved question. Maintain an implicit decision tree of resolved decisions, open questions, assumptions, dependencies, risks, and rejected alternatives.
-
-For each question, include:
-
-- clear answer options when appropriate
-- your recommended answer, marked as recommended
-- a brief reason for the recommendation
-
-Use open-ended questions when fixed options would prematurely constrain the design space.
-
-Challenge vague, inconsistent, risky, or unsupported assumptions. If an answer creates a contradiction or unresolved dependency, ask a follow-up before moving on.
-
-Cover, as relevant:
-
-- goals and non-goals
-- users and stakeholders
-- constraints
-- alternatives
-- APIs and interfaces
-- data model
-- error handling
-- security
-- observability
-- testing
-- migration and rollout
-- failure modes
-- operational ownership
-- success criteria
-
-If repository facts are needed, inspect the codebase instead of asking the user. Do not ask me to provide information that can be determined locally.
-
-When an available user-input tool such as `request_user_input` fits the question, use it to ask one short question with a small set of mutually exclusive options. Otherwise, ask in plain text and present clear possible answers as a numbered list when that helps me answer quickly. Include your recommended option and mark it as recommended.
-
-Stop when the major branches of the design tree have been resolved. Then summarize the agreed design, remaining risks, assumptions, rejected alternatives, and next steps.
```

## \.repos/effect-smol/\.agents/skills/jsdocs/SKILL.md

Status: modified; +59; −2

``````diff
@@ -39,7 +39,7 @@
  *
  * Optional prose explaining the example.
  *
- * ```ts
+ * ```ts import.meta.vitest
  * const result = example()
  * ```
  *
@@ -125,7 +125,64 @@
 - Do not add unsupported constructs such as enums or empty exports in checked files.
 - For low-level public values, prefer accurate categories such as `symbols`,
   `type IDs`, or `prototypes` over compensating with verbose descriptions.
+
+## Example quality
 
+Examples are optional. They should demonstrate:
+
+- behavior or constraints that are not clear from the signature;
+- meaningful composition with other public APIs;
+- a realistic use case supported by repository tests or call sites; or
+- useful type inference, narrowing, or overload behavior.
+
+A good example:
+
+- focuses on the documented API and includes only the context needed to
+  understand it;
+- is a complete, self-contained TypeScript module without placeholders or
+  omitted setup;
+- imports public APIs rather than internal modules or unrelated test helpers;
+- uses stable, deterministic, bounded behavior and does not require network
+  access, external services, timing assumptions, randomness, or machine-specific
+  state;
+- demonstrates the meaningful result, with a concise expected-value comment
+  when useful; and
+- uses explanatory prose only when the code cannot communicate an important
+  choice or caveat on its own.
+
+### Executable examples
+
+- Mark runnable TypeScript fences with `import.meta.vitest`. Run changed examples from the repository root with `pnpm doctest --run <source files>`.
+- Write each marked example as a complete isolated module. Import public APIs, define every runtime value, await asynchronous work, and keep execution deterministic and bounded.
+- Prefer `operation() // => expected` over introducing a result binding used only by the assertion. Retain bindings for reuse, mutation, identity checks, or meaningful multi-step setup, and insert a blank line before a separate assertion block.
+- Keep direct assertions on one line up to 120 characters. Use dense expected arrays such as `[1, 2]` and semantic Effect values such as `Option.some(1)` rather than console formatting.
+- Preserve `import.meta.vitest` for type-level examples, but do not add tautological runtime assertions to them.
+- Leave examples that register Vitest tests or suites as plain `````ts`` fences because the doctest collector executes
+  runnable snippets inside tests. Call the registration API directly to show its intended top-level usage.
+- Keep documentation-only snippets as plain `````ts`` fences.
+
+When reviewing existing examples:
+
+1. Derive the example's use case and behavior from repository evidence. Inspect
+   the declaration, implementation, tests, call sites, and related APIs. Do not
+   invent a scenario merely to retain an example.
+2. Keep a correct, clear, high-value example without gratuitous rewriting.
+3. Fix or replace an example when repository evidence supports a concise,
+   valuable version.
+4. Remove an example when it is trivial, misleading, contrived, or requires more
+   scaffolding than the insight justifies. Also remove it when a good replacement
+   would require guessing at a use case.
+
+Prefer concise trailing `// =>` assertions that keep the meaningful result visible;
+public documentation should not look like a test suite. Type-level examples may demonstrate inference or assignability
+without runtime assertions. For lazy APIs such as `Effect`, execute enough of the
+program to demonstrate the behavior unless the example's value is specifically
+type-level or construction-oriented.
+
+If an example review exposes a likely implementation or type-definition bug,
+do not change runtime or API code as part of the documentation pass. Report the
+finding and do not present the suspected behavior as recommended usage.
+
 ## Tag rules
 
 When multiple tags are present, keep them in this order:
@@ -198,6 +255,6 @@
 
 Run the narrowest validation that matches the change:
 
+- For runnable JSDoc example changes, run `pnpm doctest --run <source files>` from the repository root.
-- For JSDoc or example changes in a package with generated docs, run `pnpm docgen` from that package directory.
 - Run `pnpm lint` because the linter includes the custom rule that checks public API JSDoc.
 - Do not run broad validation for prose-only skill edits.
``````

## \.repos/effect-smol/\.changeset/add-adaptive-rate-limiter-store.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add adaptive consume and feedback operations to the unstable persistent RateLimiterStore API, including in-memory and Redis-backed bounded cooldown, learning, learned pacing, and expiry behavior for 429 Retry-After feedback.
```

## \.repos/effect-smol/\.changeset/add-atom-equality.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-unstable/reactivity Atom: add `withEquality` combinator for customizing how the registry detects value changes
```

## \.repos/effect-smol/\.changeset/add-bigdecimal-sumall-multiplyall.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Added `BigDecimal.sumAll` and `BigDecimal.multiplyAll` for feature parity with `Number` and `BigInt`, closes #1880.
```

## \.repos/effect-smol/\.changeset/add-chunk-schema.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Schema: add `Chunk` schema, closes #1585.
```

## \.repos/effect-smol/\.changeset/add-command-hidden.md

Status: deleted; +0; −19

````diff
@@ -1,19 +1,0 @@
----
-"effect": patch
----
-
-Add `Command.withHidden` to hide subcommands from `--help` output, shell completions, and "did you mean?" suggestions, while keeping them fully invocable by exact name.
-
-Useful for experimental or internal subcommands that should be accepted but not advertised on the public CLI surface.
-
-```ts
-import { Command } from "effect/unstable/cli"
-
-const experimental = Command.make("experimental").pipe(
-  Command.withHidden
-)
-
-const root = Command.make("mycli").pipe(
-  Command.withSubcommands([experimental])
-)
-```
````

## \.repos/effect-smol/\.changeset/add-config-nested.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add `Config.nested` combinator to scope a config under a named prefix, closes #1437.
```

## \.repos/effect-smol/\.changeset/add-flag-hidden.md

Status: deleted; +0; −15

````diff
@@ -1,15 +1,0 @@
----
-"effect": patch
----
-
-Add `Flag.withHidden` (and `Param.withHidden`) to hide flags from `--help` output and shell completions while keeping them fully parseable on the command line.
-
-Useful for experimental, internal, or deprecated flags that should be accepted but not advertised, e.g. `--experimental-foo`, debug toggles, or escape hatches that are not yet committed to the public CLI surface.
-
-```ts
-import { Flag } from "effect/unstable/cli"
-
-const experimental = Flag.boolean("experimental-foo").pipe(
-  Flag.withHidden
-)
-```
````

## \.repos/effect-smol/\.changeset/add-from-string-schemas.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add `DateFromString`, `BigIntFromString`, `BigDecimalFromString`, `TimeZoneNamedFromString`, `TimeZoneFromString`, and `DateTimeZonedFromString` schemas, closes #1941.
```

## \.repos/effect-smol/\.changeset/add-headers-remove-many.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-unstable/http Headers: add `removeMany` combinator for removing multiple headers at once
```

## \.repos/effect-smol/\.changeset/add-http-client-request-update-headers.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-unstable/http HttpClientRequest: add `updateHeaders` and `removeHeader` combinators for transforming or removing request headers, closes #6271
```

## \.repos/effect-smol/\.changeset/add-indexeddb-kvs-layer.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"@effect/platform-browser": patch
----
-
-Adds an IndexedDB backed implementation of `KeyValueStore` as `BrowserKeyValueStore.layerIndexedDb`. This backend allows for non-blocking `KeyValueStore` operations, unlike the existing `Storage` api backed implementations.
```

## \.repos/effect-smol/\.changeset/add-make-msgpack.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add `RpcSerialization.makeMsgPack` for creating MessagePack serialization with custom msgpackr options. On Cloudflare Workers with `allow_eval_during_startup` (default for `compatibility_date >= 2025-06-01`), pass `{ useRecords: false }` to prevent msgpackr's JIT code generation via `new Function()`, which is blocked during request handling. Also fixes silent error swallowing in the `msgPack` decode path — non-incomplete errors are now rethrown instead of returning `[]`.
```

## \.repos/effect-smol/\.changeset/add-make-option.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add `SchemaParser.makeOption` and `Schema.makeOption` for constructing schema values as `Option`.
```

## \.repos/effect-smol/\.changeset/add-missing-tx-modules.md

Status: deleted; +0; −11

```diff
@@ -1,11 +1,0 @@
----
-"effect": patch
----
-
-Add transactional STM modules: TxDeferred, TxPriorityQueue, TxPubSub, TxReentrantLock, TxSubscriptionRef.
-
-Refactor transaction model: remove `Effect.atomic`/`Effect.atomicWith`. All Tx operations now return `Effect<A, E, Transaction>` requiring explicit `Effect.tx(...)` at boundaries.
-
-Expose `TxPubSub.acquireSubscriber`/`releaseSubscriber` for composable transaction boundaries. Fix `TxSubscriptionRef.changes` race condition ensuring current value is delivered first.
-
-Remove `TxRandom` module.
```

## \.repos/effect-smol/\.changeset/add-newtype-module.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add `Newtype` module.
```

## \.repos/effect-smol/\.changeset/add-otlp-manual-flush.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add manual flushing to the OTLP exporters through a shared `Flusher` service exposed by each signal layer. The signal layer output types now include `Flusher`, and `OtlpExporter.make` requires it so custom exporters register unconditionally.
```

## \.repos/effect-smol/\.changeset/add-scalar-show-operation-id.md

Status: deleted; +0; −5

```diff
@@ -1,5 +1,0 @@
----
-"effect": patch
----
-
-Add `showOperationId` to `HttpApiScalar.ScalarConfig`.
```

[Next page](https://git.cafe/pingdotgg/t3code/pull/10653/diffs?after=Ii5yZXBvcy9lZmZlY3Qtc21vbC8uY2hhbmdlc2V0L2FkZC1zY2FsYXItc2hvdy1vcGVyYXRpb24taWQubWQi&expectedVersion=1&format=markdown)
