/**
 * StandardsRegistryParser — read the living constitution into structure.
 *
 * Parses `docs/STANDARDS-REGISTRY.md` into the set of standards articles the
 * conformance gate checks a spec against. Deterministic by design: the registry
 * has a stable, authored structure (no LLM needed to parse it).
 *
 * Because it parses an EVOLVING document, it is a state-detector per
 * `[[feedback_state_detection_robustness]]` and ships with `runRegistryCanary`
 * (asserts a sane article count + that known anchor articles parse with a
 * non-empty rule), run in tests + at load. Silent failure it guards:
 * registry-format drift → articles silently dropped → the gate checks against a
 * partial constitution and misses violations. Registered in
 * docs/specs/06-state-detector-registry.md.
 *
 * Spec: docs/specs/standards-conformance-gate.md §1.
 */
export interface StandardArticle {
    /** The standards family the article lives under (Root / Substrate / Building / Shipping / Interaction). */
    family: string;
    /** The article heading (e.g. "No Manual Work (user *or* agent)"). */
    name: string;
    /** The `**Rule.**` line — the normative statement. */
    rule: string;
    /** The `**In practice.**` line, when present. */
    inPractice: string;
    /**
     * The `**Applied through.**` line, when present — names the structural guard(s)
     * that enforce the article (a test, lint, gate marker, route, or spec). Additive
     * field (cartographer-conformance-audit spec #3); the enforcement-coverage audit
     * scans `inPractice` + `appliedThrough` for verifiable enforcement references.
     */
    appliedThrough?: string;
}
/**
 * Parse the registry markdown into standards articles. Pure function — no I/O —
 * so tests can feed fixture content and production feeds the real file.
 */
export declare function parseStandardsRegistry(markdown: string): StandardArticle[];
/** Resolve + read + parse the on-disk registry. Throws if the file is missing. */
export declare function loadStandardsRegistry(registryPath: string): StandardArticle[];
/** Minimum plausible article count — far below the real ~21, catches a parse collapse. */
export declare const MIN_EXPECTED_ARTICLES = 15;
/**
 * Anchor articles that MUST parse (with a non-empty rule) for the gate to be
 * trustworthy. Matched by case-insensitive substring on the article name so
 * minor heading edits (parentheticals, em-dashes) don't break the canary.
 */
export declare const ANCHOR_ARTICLES: readonly string[];
export interface RegistryCanaryResult {
    ok: boolean;
    articleCount: number;
    failures: string[];
}
/** Run the registry parse canary over a parsed article set. */
export declare function runRegistryCanary(articles: StandardArticle[]): RegistryCanaryResult;
//# sourceMappingURL=StandardsRegistryParser.d.ts.map