/** * Release guards - epic-completeness and double-listing checks. * * Pre-release validation to ensure all tasks in an epic are accounted for * and no task appears in multiple releases. * * @task T4454 * @epic T4454 */ import type { TaskRef } from '@cleocode/contracts'; import type { DataAccessor } from '../store/data-accessor.js'; /** Epic completeness result. */ export interface EpicCompletenessResult { hasIncomplete: boolean; epics: Array<{ epicId: string; epicTitle: string; totalChildren: number; includedChildren: number; missingChildren: TaskRef[]; }>; orphanTasks: string[]; } /** * Check epic completeness for a set of release task IDs. * Verifies all children of each referenced epic are included in the current or * a prior release (tasks shipped in previous releases are not flagged as missing). * * @param releaseTaskIds - Task IDs being shipped in this release. * @param cwd - Working directory (used to resolve accessor when none provided). * @param accessor - Optional pre-constructed DataAccessor. * @param priorReleasedTaskIds - Task IDs already shipped in prior releases (not flagged missing). * @param scopedEpicId - When provided, only audit tasks whose ancestor chain terminates * at this epic. Tasks belonging to other epics are ignored entirely. * When omitted, all epics referenced by `releaseTaskIds` are audited * (legacy behavior). */ export declare function checkEpicCompleteness(releaseTaskIds: string[], cwd?: string, accessor?: DataAccessor, priorReleasedTaskIds?: string[], scopedEpicId?: string): Promise; /** Double-listing check result. */ export interface DoubleListingResult { hasDoubleListing: boolean; duplicates: Array<{ taskId: string; releases: string[]; }>; } /** * Check if any tasks are listed in multiple releases. */ export declare function checkDoubleListing(releaseTaskIds: string[], existingReleases: Array<{ version: string; tasks: string[]; }>): DoubleListingResult; //# sourceMappingURL=guards.d.ts.map