/**
 * Diagnosis card registry — placeholder home for Phase 5 cards.
 *
 * Phase 5 cards declare:
 *
 *   export const card = {
 *     type, version, schema, generate
 *   } satisfies CardDefinition
 *
 * The compound `cardVersion` (VER-01 / D-02) is built from per-card
 * `version` by sorting `${type}@${version}` ascending and joining with
 * `,`. Phase 1 lands the empty registry; Phase 5 registers cards via
 * the composition root, not by mutating this binding.
 *
 * NOTE (Phase 5 / D-06): The runtime `CardRegistry` type used by the
 * engine lives on `services/diagnosis-runner.ts` as
 * `Readonly<Record<CardType, CardGenerator>>`. This file's `cardRegistry`
 * is an intentionally-empty Phase-1 placeholder for Phase-1 contract
 * tests. DO NOT mutate `cardRegistry` or add cards here — the composition
 * root (Plan 06) builds and passes the `CardRegistry` literal into
 * `createDiagnosisRunner(deps)`.
 *
 * @see packages/core/src/services/diagnosis-runner.ts (CardRegistry type)
 * @see docs/decisions/D0045-type-architecture-and-contract-enforcement.md
 * @see docs/decisions/D0048-engine-homes-for-cli-api-parity.md
 * @see .planning/phases/01-foundation-contracts-cross-cutting-schemas/01-CONTEXT.md (D-02, D-08)
 * @see .planning/phases/05-diagnosis-engine-cli-llm-cards/05-CONTEXT.md (D-06)
 */
/**
 * Phase 1: empty entrypoint. Phase 5 cards register here through the
 * composition root. The exported binding is a `ReadonlyMap` so
 * downstream consumers cannot mutate it (would re-introduce the vitest
 * worker-leak hazard).
 */
export const cardRegistry = new Map();
