VIP-32: one pinned Effect version during alpha
Status: accepted by Will, 2026-10-29.
Decision
-
During alpha, VibeLang pins exactly one Effect version. The pin moves to each new Effect release (Will's 10-26 ruling).
-
The pin controls variables while in alpha. It is not the long-term plan; supported version ranges get their own VIP after alpha.
-
Migrations upgrade Effect first, on its own. The migrate flow first upgrades the target repo to VibeLang's pinned Effect, fixes what breaks, and lands that commit with green tests. Only then does it convert files to
.vibe. Each breakage then shows its real cause: the Effect upgrade or the VibeLang conversion. This was recorded under Will's standing approval of recommendations. -
Amended 2026-11-03: the pin is
effect4.1.1; the4.1minimum means the pin never moves below4.1(Will: "Effect 4.1 has been released please update accordingly and make 4.1 the earliest version we support now"). -
Any other resolved version, including
4.1.0, isEK3201; the minimum does not admit a supported version range. -
Amended 2026-10-29: repos that already use VibeLang. The published
vibelang-runtimeenforces its exact Effect pin, so the Effect upgrade lands together with the VibeLang release pinned to the new Effect, not before it (found while upgrading Smithers). Recorded under Will's standing approval of recommendations. -
Amended 2026-10-30: an off-pin Effect is a compile error. VibeLang declares
effectas an exactpeerDependency, and the compiler reads the resolvedeffect/package.json: a version other than the pin isEK3201("the resolved effect is X; VibeLang Y pins Z: upgrade both together"), in the editor and in CI. Decided by the agent on 2026-10-30 under Will's rule "when I state a principle, the agent derives the concrete rule and acts; I can override later" (decided detail 70).
Evidence
The tooling audit (2026-10-28): all four migrations broke because adopting VibeLang forced an Effect upgrade at the same moment.
Will's words
"To start we pin to a single version but we do this not because it's the long term plan but just to control variables while in alpha"