/**
 * devGatedFeatures.ts — the registry of features that follow the
 * standard_development_agent_dark_feature_gate convention: config OMITS
 * `enabled`, the runtime resolves it via `resolveDevAgentGate` (live on a
 * development agent, dark on the fleet).
 *
 * WHY (DEV-AGENT-DARK-GATE-CONFORMANCE-SPEC, Slice 2): Slice 1's lint catches a
 * hand-rolled gate and a hardcoded `enabled: false` under a marker comment, but
 * it cannot prove that a feature's *actual config + construction* resolves live
 * on a dev agent. This registry drives the both-sides wiring test
 * (`tests/unit/devGatedFeatures-wiring.test.ts`): for each entry, the REAL
 * ConfigDefaults are applied and `resolveDevAgentGate(<configPath>)` must be
 * true under a dev-agent config and false under a fleet config. A feature whose
 * default hardcodes `enabled: false` (the literal #1001 mechanism — `applyDefaults`
 * would inject the `false`) fails the test. Adding a dev-gated feature here is
 * the natural checklist step; the test then guards it permanently.
 *
 * NOT every site that calls `resolveDevAgentGate` belongs here — only features
 * whose intent is "dark fleet / LIVE on dev". Deliberately EXCLUDED:
 *   - `monitoring.mcpProcessReaper` — destructive (kills processes); ships OFF +
 *     dry-run for EVERYONE incl. dev agents by design (`enabled: false` default).
 *   - `monitoring.resourceLedger` — the ledger itself defaults `enabled: true`
 *     (on for everyone); only its sampling rides the gate off the same key, so
 *     it is not cleanly a dark-on-fleet feature.
 */
/** A feature governed by the developmentAgent dark-feature gate. */
export interface DevGatedFeature {
    /** Stable identifier (matches the feature's name in code/docs). */
    name: string;
    /** Dotted path to the feature's `enabled` flag in the agent config. */
    configPath: string;
    /** One-line description of what runs live on a dev agent. */
    description: string;
    /**
     * One-line "non-destructive, safe-to-run-live-on-dev" rationale. REQUIRED on
     * every entry (DEV-AGENT-DARK-GATE-ENFORCEMENT Slice B): the human gate is the
     * real backstop — dev-gating a feature live means it runs unattended on the dev
     * agent, so each entry must carry an explicit justification a CODEOWNERS reviewer
     * can check. A destructive/cost-bearing feature does NOT belong here.
     */
    justification: string;
}
export declare const DEV_GATED_FEATURES: DevGatedFeature[];
/**
 * An `enabled: false` config default that is DELIBERATELY dark for EVERYONE (dev
 * agents included) — the opposite of a DEV_GATED_FEATURES entry. The lint
 * (scripts/lint-dev-agent-dark-gate.js, assertion C) requires every literal
 * `enabled: false` in ConfigDefaults.ts to be EITHER dev-gated (registered above,
 * with `enabled` omitted) OR classified here, so no dark default can ship by
 * accident (the cartographer hole this spec closed).
 *
 * The registry's value is diffability + a category/reason quality bar — NOT
 * prevention. It is a CODEOWNERS-reviewed path; the human gate is the real
 * backstop. The lint REJECTS an entry with an unknown category or a reason
 * shorter than 12 non-whitespace chars.
 *
 * CMT-1438 (DEV-AGENT-DARK-GATE-TEETH): the catch-all `deliberate-fleet-default`
 * category was RETIRED. Every off-even-on-dev category now names a CONCRETE reason
 * dev-live is the wrong place to run the feature — either *unsafe*
 * (`destructive` / `cost-bearing` / `action-bearing`) or *not-runnable*
 * (`optional-integration` / `structural-stub`). There is no "off by policy" home;
 * a feature that is safe AND runnable on a dev agent belongs in DEV_GATED_FEATURES.
 * Honest scope (Signal vs. Authority): the lint adjudicates category spelling +
 * reason length, never category *honesty* — the backstops against mis-parking a
 * safe feature are D4 code-grounding (build-time, per spec) and the
 * GrowthMilestoneAnalyst R6 runtime cross-check.
 */
export type DarkGateCategory = 'destructive' | 'cost-bearing' | 'action-bearing' | 'optional-integration' | 'structural-stub';
export interface DarkGateExclusion {
    /** Dotted path to the feature's `enabled` flag in the agent config. */
    configPath: string;
    /** Why it is NOT dev-gated (closed enum). */
    category: DarkGateCategory;
    /** Human-readable rationale (≥12 non-whitespace chars; the lint enforces this). */
    reason: string;
}
export declare const DARK_GATE_EXCLUSIONS: DarkGateExclusion[];
/**
 * Read a dotted path off a config object, returning the value or undefined.
 * Used by the wiring test and the spec-intent cross-check (Slice 3).
 */
export declare function getConfigByPath(config: unknown, dottedPath: string): unknown;
//# sourceMappingURL=devGatedFeatures.d.ts.map