import { type GovernedOperation, type OperationAutonomyDecision } from './autonomy-envelope.js'; import { type TaskContractV1 } from './task-contract.js'; export declare const PLAN_VERSION_SCHEMA_VERSION: 1; interface PlanStepV1 { readonly id: string; readonly title: string; readonly description: string; readonly operations: readonly GovernedOperation[]; readonly expectedPaths: readonly string[]; readonly requirementIds: readonly string[]; readonly acceptanceCriteriaIds: readonly string[]; readonly requiredCheckIds: readonly string[]; } interface PlanEdgeV1 { readonly fromStepId: string; readonly toStepId: string; } export interface PlanVersionV1 { readonly schemaVersion: typeof PLAN_VERSION_SCHEMA_VERSION; readonly planId: string; readonly taskId: string; readonly planVersion: number; readonly parentPlanVersion: number | null; readonly contractVersion: number; readonly createdBy: 'model' | 'human' | 'policy' | 'system'; readonly createdAt: string; readonly changeReason: string; readonly steps: readonly PlanStepV1[]; readonly edges: readonly PlanEdgeV1[]; } export declare function calculatePlanVersionFingerprint(plan: PlanVersionV1): string; interface PlanStepAutonomy { readonly stepId: string; readonly automatic: boolean; readonly decisions: readonly OperationAutonomyDecision[]; } interface PlanAutonomySummary { readonly fullyAutonomous: boolean; readonly automaticStepIds: readonly string[]; readonly humanApprovalStepIds: readonly string[]; readonly steps: readonly PlanStepAutonomy[]; } type PlanValidationIssueCode = 'contract_invalid' | 'invalid_schema_version' | 'invalid_plan_version' | 'invalid_parent_version' | 'required_value_missing' | 'duplicate_step_id' | 'duplicate_edge' | 'unknown_edge_step' | 'self_edge' | 'cycle_detected' | 'task_mismatch' | 'contract_version_mismatch' | 'operation_not_allowed' | 'expected_path_missing' | 'path_outside_scope' | 'unknown_requirement' | 'unknown_acceptance_criterion' | 'unknown_required_check' | 'requirement_unplanned' | 'required_check_unplanned'; interface PlanValidationIssue { readonly code: PlanValidationIssueCode; readonly path: string; readonly message: string; } type PlanValidationResult = { readonly valid: true; } | { readonly valid: false; readonly issues: readonly PlanValidationIssue[]; }; type PlanSupersessionIssueCode = 'plan_id_mismatch' | 'task_id_mismatch' | 'version_not_sequential' | 'parent_version_mismatch' | 'contract_version_regressed'; interface PlanSupersessionIssue { readonly code: PlanSupersessionIssueCode; readonly message: string; } type PlanSupersessionResult = { readonly valid: true; } | { readonly valid: false; readonly issues: readonly PlanSupersessionIssue[]; }; type ReplanValidationIssue = PlanValidationIssue | PlanSupersessionIssue | { readonly code: 'invalid_completed_auto_replans'; readonly message: string; }; type ReplanAuthorizationDecision = { readonly valid: true; readonly automatic: true; readonly requiresHumanApproval: false; readonly nextPlanVersion: number; } | { readonly valid: true; readonly automatic: false; readonly requiresHumanApproval: true; readonly nextPlanVersion: number; readonly reason: 'auto_authorization_disabled' | 'auto_replan_budget_exhausted'; } | { readonly valid: false; readonly issues: readonly ReplanValidationIssue[]; }; export declare function summarizePlanAutonomy(contract: TaskContractV1, plan: PlanVersionV1): PlanAutonomySummary; export declare function validatePlanVersionV1(plan: PlanVersionV1, contract: TaskContractV1): PlanValidationResult; export declare function validatePlanSupersession(previous: PlanVersionV1, next: PlanVersionV1): PlanSupersessionResult; export declare function decideReplanAuthorization(contract: TaskContractV1, previous: PlanVersionV1, next: PlanVersionV1, completedAutomaticReplans: number): ReplanAuthorizationDecision; export declare function freezePlanVersionV1(plan: PlanVersionV1): PlanVersionV1; export {}; //# sourceMappingURL=plan-version.d.ts.map