import { Effect } from "effect"
// ┌─── Effect<void, never, never>
const describe = Effect.sync(() => { fired++ })
// fired is still 0 — `describe` is a value, not an execution.
Effect.sync does not call its function. It captures it inside a value.
The captured side effect runs only when something hands describe to a runner.
Why this matters. Every retry, every concurrent fork, every test
double works because the description is just a value. Functions can’t be
retried or forked the same way — they’ve already happened.
Rule of thumb. Reading const x = Effect.sync(...) should feel
like reading const recipe = ... — paper, not cooking. The smell of
the bug we’ll meet two beats down is treating the recipe like a meal.
Your turn: assert fired === 0 even though describe was constructed. The point of the assertion is to be surprised by it — the JavaScript line looks like work, but it isn’t.