import type { SkillDiscoveryDiff } from "./skill-discovery-diff.js"; import type { SkillDiscoveryCiPolicyMode } from "./types/configuration.js"; export declare const SKILL_DISCOVERY_CI_POLICY_SCHEMA_VERSION: "renma.skill-discovery-ci-policy.v1"; export declare const SKILL_DISCOVERY_CI_POLICY_MATCH_IDS: { readonly ADOPTION_WEAKENED: "skill_discovery_ci.adoption_weakened"; readonly ADOPTION_INCOMPLETE: "skill_discovery_ci.adoption_incomplete"; readonly NEWLY_NOT_REACHED: "skill_discovery_ci.newly_not_reached"; readonly ROUTE_BECAME_UNUSABLE: "skill_discovery_ci.route_became_unusable"; readonly ADDED_UNUSABLE_ROUTE: "skill_discovery_ci.added_unusable_route"; }; export type SkillDiscoveryCiPolicyMatchId = (typeof SKILL_DISCOVERY_CI_POLICY_MATCH_IDS)[keyof typeof SKILL_DISCOVERY_CI_POLICY_MATCH_IDS]; export interface SkillDiscoveryCiPolicyMatch { id: SkillDiscoveryCiPolicyMatchId; summary: string; skill?: { id: string; path: string; }; route?: { sourcePath: string; normalizedTarget: string; }; fromState?: string; toState?: string; } export interface SkillDiscoveryCiPolicyConfiguration { from: SkillDiscoveryCiPolicyMode; to: SkillDiscoveryCiPolicyMode; } export interface SkillDiscoveryCiPolicyEvaluation { schemaVersion: typeof SKILL_DISCOVERY_CI_POLICY_SCHEMA_VERSION; configured: SkillDiscoveryCiPolicyConfiguration & { effective: SkillDiscoveryCiPolicyMode; }; outcome: "pass" | "warn"; matchCount: number; matches: SkillDiscoveryCiPolicyMatch[]; } /** Select the stricter archived-ref mode so a target-only change cannot bypass review. */ export declare function effectiveSkillDiscoveryCiPolicy(configured: SkillDiscoveryCiPolicyConfiguration): SkillDiscoveryCiPolicyMode; /** Evaluate the fixed warn-only review conditions over an existing Discovery diff. */ export declare function evaluateSkillDiscoveryCiPolicy(discovery: SkillDiscoveryDiff, configured: SkillDiscoveryCiPolicyConfiguration): SkillDiscoveryCiPolicyEvaluation;