/**
 * Custom `PolicySource` extension point (M8 — see
 * `.cursor/plans/m8-design.md` § 5).
 *
 * Custom sources run in step 6 of the composition pipeline — *after*
 * placement membership, provider veto, host policy, and PNP/profile gates.
 * That ordering is deliberate: custom rules can only further *narrow*
 * the candidate set or add advisory provenance entries; they cannot
 * promote a tool that the host already removed.
 *
 * Sources MUST be pure with respect to `decide(...)`: given the same
 * `(candidates, context)` input they should produce the same
 * `(refinedCandidates, decisions)` output. Side-effects are reserved
 * for the engine's own subscription bus (`onPolicyChange`).
 */
export {};
//# sourceMappingURL=PolicySource.js.map