tcmts.cli.effects

ownEffectsKey () => string
The metadata key a definition's own effects are kept under: `ownEffects`'s hash, so a change to what counts works them out again.
reached Map<string, Effect[]>
What components reach, by component hash: a hash fixes everything a component uses, so this never goes stale.
reaches (cb: CodebaseCore, hashes: Iterable<string>, src?: DefSource) => Map<string, Effect[]>
What definitions' code can reach outside the codebase (the clock, randomness, the network, files, the environment, other processes), through everything they use: by hash. What a definition could reach, not what a run of it did: a function that reads the clock somewhere counts, called or not. Each one's own effects are worked out once and kept with it, and so is what each component reaches (kept with its first member). `src` has what isn't saved yet (a scratch file's definitions and watch expressions).