"use strict";
/**
 * Declarative scoring specification — one per dimension.
 *
 * A `DimensionScoringSpec<TInput>` is a self-contained artifact: the
 * baseline score, the list of penalty rules, and the list of cap rules
 * that enforce the dimension's Label Contract. The evaluator
 * (`evaluator.ts`) consumes a spec + input and produces a `ScoreResult`.
 *
 * Specs are values, not functions — each rule is a small object with
 * declarative predicates and reason-builders. This lets us:
 *   - register specs in a central index
 *   - generate documentation from specs (citations, penalty lists)
 *   - test new dimensions by injecting synthetic specs
 *   - keep the cross-dimension contract (return shape, rating mapping)
 *     uniform regardless of per-dimension methodology
 *
 * Per-dimension specs live in `dimensions/<name>.ts` (one file per
 * dimension, mirroring the LanguageSupport pattern in CLAUDE.md Rule 6).
 */
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=spec.js.map