Docs that contradict the code: MCP.md's adapter list, RcMap capacity eviction, `disableChecks`, an unbounded "max attempts" retry example, the `@effect/vitest` logging example, and names v4 does not have
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
- #9406 de @effect-bot — fusionado
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- react, typescript
- Área
- documentation, testing
Línea de trabajo
This is ten separate doc corrections, each naming its file and line range, so split them up and take one first: the disableChecks JSDoc in src/Schema.ts or the forkDetach JSDoc in src/Effect.ts. Check each claim against the cited code before editing, since the issue links pin 4.0.5. Done means each listed wording is corrected in its own file, and for the item 4 retry example, the attempt bound is verified under TestClock. Items 1 and 4 also touch packages/effect/MCP.md and ai-docs/src/06_schedule/10_schedules.ts.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
What is the type of issue?
Documentation is incorrect, Documentation is missing
What is the issue?
These docs in 4.0.5 disagree with the code. #9331 did not touch them, and each is unchanged on main (c9a1e72). Links are pinned to the 4.0.5 tag.
Behaviour described wrongly
-
MCP.mdlists three protocol adapters (MCP.md#L82-L83): "This release supportsMcpProtocol.v2024_11_05,McpProtocol.v2025_03_26, andMcpProtocol.v2025_06_18."McpProtocolalso exportsv2025_11_25andv2026_07_28(McpProtocol.ts#L211-L254).layerStdioandlayerHttpaccept any of the five (McpServer.ts#L1520, #L1657), andProtocolAdapters.test.tsbuildslayerHttpwith all five.layerHttpRequestScopedaccepts onlyv2026_07_28(#L1713-L1715), which the sentence leaves out.- The same paragraph (MCP.md#L88-L89) says logs go to stderr through
Logger.consolePretty({ stderr: true }). #8074 removed that option (Logger.ts#L823-L829). #8079 then moved the example toLayer.succeed(Logger.LogToStderr, true)(MCP.md#L64-L65), but left this sentence. - Fix: list all five adapters, note that
layerHttpRequestScopedaccepts onlyv2026_07_28, and nameLogger.LogToStderr.
-
RcMap's module header (RcMap.ts#L6-L8) says that when the last scope for a key closes, the resource can be "removed by capacity limits".- Capacity evicts nothing. Once the map is full,
getfor a new key fails withExceededCapacityError(#L358-L361), and idle entries count toward the limit. - Example: with
capacity: 1andidleTimeToLive: "1 hour", borrow and release"a", then get"b". Thegetfails withExceededCapacityError, and"a"is neither removed nor released. - Fix: "…released, kept alive for its idle time to live, or removed by
invalidate.capacitycaps how many keys are held, idle ones included; once it is reached,getfor a new key fails withExceededCapacityError."
- Capacity evicts nothing. Once the map is full,
-
disableChecksis described as disabling validation: "to skip validation" (Schema.ts#L126), "Whether to disable validation for the schema" (#L142), and, in theClassGotchas, "skips constructor validation" (#L16054).- It skips only checks. Types and structure are still parsed.
Schema.Int.make(1.5, { disableChecks: true })returns1.5.Schema.Int.make("a" as any, { disableChecks: true })throws "Schema validation failed".- So does a
Classconstructor given a string for aSchema.Intfield.
ParseOptionsalready states this precisely (SchemaAST.ts#L492-L493).- The first two sentences predate the rename from
disableValidationin Effect-TS/effect-smol#1842. That rename made construction parse with checks off, instead of skipping parsing. - Fix: "skips the schema's checks (filters such as
isInt); constructor defaults still apply, and input of the wrong type or shape is still rejected."
- It skips only checks. Types and structure are still parsed.
-
ai-docs
productionRetrySchedule(10_schedules.ts#L8-L18) is commented "capped exponential backoff with jitter and max attempts".loadUserWithRetryrefers to "exhausting the schedule" (#L47-L48).- Nothing bounds the attempts.
Schedule.mincontinues while either schedule does, and neitherexponentialnorspacedends, soSchedule.while(retryable)is the only stop. - Against an always-retryable
HttpErrorunderTestClock, it makes about 8,650 attempts in 24 hours and keeps going. - The file ships in the package and is linked from its
AGENTS.md. - Fix: add
Schedule.upTo({ times: 5 })afterSchedule.jittered(6 attempts, then the error), or wrap the schedule inSchedule.max([…, Schedule.recurs(5)]), as #L75-L81 does. PuttingSchedule.recurs(5)inside theminarray does not bound it.
- Nothing bounds the attempts.
-
@effect/vitest's README Logging example (README.md#L291-L297) says anit.effecttest that providesLogger.layer([Logger.consolePretty()])displays its log, and the intro (#L277) offers a custom logger for this. It does not:it.effectprovidesTestConsole(internal.ts#L59), so the line lands inTestConsole.logLines.- Fix: use
it.live, or provideEffect.provideService(Console.Console, globalThis.console).
- Fix: use
-
Effect.forkDetach(Effect.ts#L8894-L8896) says the fiber is "attached to the global scope". v4 has no global scope: a detached fiber has no parent and no scope.- Fix: "Forks the effect into a new fiber with no parent and no scope. It keeps running after the forking fiber ends, until it completes or is interrupted through its handle."
Names v4 does not have
-
Effect.forkChild(Effect.ts#L8755-L8756) suggests "higher-level methods, such asraceWith,zipPar". Neither exists in v4.- Fix: point to
Effect.race,Effect.raceFirst, orEffect.allwithconcurrency. - The
Sink.raceWithmigration note (effect__Sink.yaml#L177, rendered intov3-to-v4.md) also suggests "Effect.raceWithon the run effects". - The
Sink.raceBothnote (effect__Sink.yaml#L174) suggestsEffect.raceBoth, which v4 does not have either.Effect.raceorEffect.raceFirstfits both notes.
- Fix: point to
-
Effect.runFork's example (Effect.ts#L9054-L9060) annotatesprogramasEffect<number, never, never>and the fiber asRuntimeFiber<number, never>.programends inEffect.as("done"), so it isEffect<string, never, never>.runForkreturnsFiber<string, never>(#L9070).
Behaviour not documented
-
ManagedRuntime.makekeeps a failed layer build for its lifetime (ManagedRuntime.ts#L316-L330): every later run fails with the first build error and the layer is never rebuilt, so one transient failure on first use disables a long-lived runtime. Its docs (#L245-L246) cover only success.- Fix: say so, and point to retrying inside the layer.
-
useAtomSetanduseAtomwithmode: "promise"or"promiseExit"(Hooks.ts#L185-L194) settle with the atom's next result, not their own write's. When writes to oneAtom.fnoverlap, the first promise gets the second run's result (concurrent: true: both get the first's). Solid and Vue match.
- Fix: a Gotchas note on the setter.
Where did you find it?
JSDoc in the effect 4.0.5 sources, plus packages/effect/MCP.md, packages/vitest/README.md, ai-docs/ and migration/ (links above). Each line is the same on main at c9a1e72.
- Lenguaje dominante
- TypeScript
- Estrellas
- 16.7k
- Forks
- 808
- Merge medio
- 10 h 21 min
- PR fusionados (30 d)
- 834
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Effect-TS/effect
-
`Schedule.fixed` repeats with no delay when the clock is a tiny fraction before a boundaryPosiblemente ocupada @effect-bot la tomó hoy. Abierto
Effect-TS/effect#10250 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Cluster: A way to remove processed requests from storagePosiblemente ocupada @effect-bot la tomó hace 1 día. Abiertoenhancement
Effect-TS/effect#10239 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Cluster: an interrupted request whose handler dies stalls every other entity on the runnerPosiblemente ocupada @effect-bot la tomó hace 1 día. Abiertobug
Effect-TS/effect#10238 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Let OTLP log and trace exporters leave no timer pending while idlePosiblemente ocupada @effect-bot la tomó hace 1 día. Abierto
Effect-TS/effect#10234 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Otlp.layerFromConfig exports nothing when only OTEL_EXPORTER_OTLP_ENDPOINT is setPosiblemente ocupada @effect-bot la tomó hace 1 día. Abierto
Effect-TS/effect#10231 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de Effect-TS/effect
Issues similares
-
triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
🎙️ task - drop the raw `./node_modules/.bin/rhachet roles boot` line from bhuild's feedback templateAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
ehmpathy/rhachet-roles-bhuild#639 ·
Los mantenedores suelen responder en 1 día
-
e2e-failure ready-to-code
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
redhat-developer/rhdh-plugin-export-overlays#4650 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
Los mantenedores suelen responder en 13 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
omdsh-dev/DSH-better-sidebar#1098 ·
Los mantenedores suelen responder en 2 días