import { Effect } from "effect"
const describe = Effect.sync(() => { fired++ })
Effect.runSync (and its siblings runPromise, runPromiseExit, runFork) are the only things in Effect that actually perform work. Until then your program is a tree of intentions.
Think of runSync as the point where the description meets the real world — it walks the tree, fires each captured side effect in order, and returns the final value (or throws on failure).
Rule of thumb. Runners live at the edge of your program — usually in
main, in a handler, or in a test. The middle of the program is pure
descriptions wired together with pipe, flatMap, and gen.
Your turn: replace the /* @stub */ Effect.runSync(describeWork) /* @end */ placeholder so the runner fires the description and the counter moves from 0 to 1.