Dashboard › opencode-lore › Fan-out regression batteries
01a0a6a9-284f-77c0-876b-47153b07a9cfEvery fan-out addition requires centralized contracts: SYNCED_TABLES in sync-registry-contract.test.ts; MIGRATIONS in migration tests plus db.test.ts asserting toBe(MIGRATIONS.length); and AGENTS in agents.test.ts, requiring name, displayName, constant-placeholder binary, and detect(). Always freeze shared memoized arrays such as syncedColumns; otherwise one caller can corrupt every later result, while freezing makes accidental mutation fail immediately in strict mode. Use these batteries rather than isolated tests because local success can hide registry omissions, mutable-cache corruption, or failures across enable, disable, push, and pull boundaries.