/** * v2.15.0 follow-up — G5: QA business-perspective review state. * * Similar in shape to G1 (slice review) but lives on the QA side and * uses the 6-item business checklist from the 12 Gaps positioning * memory. Technical verification (coverage / P99 / security scan) is * AI auto-decided in `peaks-rd`'s fan-out; QA only records what the * user (business / product reviewer) sees. * * Persistence: `.peaks/_runtime//qa-business-reviews/.json`. * * 6 items: business-flow / req-coverage / boundary-cases / ui-assembly / * exception-tone / mergeable * decision: pending | accepted | rejected * threshold: avg >= 3 AND no item <= 2 (same as G1) */ export type QaReviewDecision = 'pending' | 'accepted' | 'rejected'; export interface QaReviewItem { readonly id: string; readonly question: string; readonly score: number | null; readonly note?: string; } export interface QaBusinessReview { readonly requestId: string; readonly sessionId: string; readonly createdAt: string; readonly updatedAt: string; readonly decision: QaReviewDecision; readonly items: readonly QaReviewItem[]; readonly rejectionReason?: string; } /** 6-item business checklist (12 Gaps QA perspective). */ export declare const QA_BUSINESS_ITEMS: readonly { id: string; question: string; }[]; export declare function buildEmptyQaReview(requestId: string, sessionId: string, now?: Date): QaBusinessReview; export declare function getQaReviewDir(projectRoot: string, sessionId: string): string; export declare function getQaReviewPath(projectRoot: string, sessionId: string, requestId: string): string; export declare function readQaReview(projectRoot: string, sessionId: string, requestId: string): QaBusinessReview | null; export declare function writeQaReview(projectRoot: string, review: QaBusinessReview): void; export declare function scoreQaItem(review: QaBusinessReview, itemId: string, score: number, note?: string, now?: Date): QaBusinessReview; export declare function averageQaScore(review: QaBusinessReview): number | null; export declare function deriveQaDecision(review: QaBusinessReview): QaReviewDecision; export declare function acceptQaReview(review: QaBusinessReview, now?: Date): QaBusinessReview; export declare function rejectQaReview(review: QaBusinessReview, reason: string, now?: Date): QaBusinessReview;