/** * Shared Stop hook default trigger regexes. * * R6-F2 (2026-04-22): stop-guard 와 enforce-classifier 에 리터럴 중복되던 정규식을 * 단일 소스로 통합. 한쪽만 고치면 다른 쪽이 drift 하는 sibling-bug 패턴 차단. * * 설계 결정: * - DEFAULT trigger 는 명시적 완료 선언 동사/어미만 — "완료" 단독 매칭 금지 (retraction 오매칭 방지). * - exclude 는 retraction/negation/meta 언급 광범위 차단. * - A1 spike 결과로 검증됨 (10/10 scenarios pass, FP 0%). * * 2026-07-22 (강제층 실측 갭 — critic-review 룰 한정 수정, 리뷰 SEV-2 반영): * 완료 키워드 없이 "리뷰 생략하고 다음으로 넘어감" 하는 응답이 완료-키워드 트리거를 * 우회해 critic-룰(청크마다 리뷰) 강제가 새던 갭. 이를 닫되: * - skip-signal 은 DEFAULT 에 섞지 않고 **critic-review 룰 전용** CRITIC_STOP_TRIGGER 로 분리 * (e2e·mock-as-proof 등 다른 완료룰 오염 방지, 리뷰 SEV-2 #3). * - "리뷰 생략" AND "다음으로 넘어감" **결합(conjunction)** 으로만 발화 → 경고/질문/신중 * 응답 FP 제거 (리뷰 SEV-2 #1). * - exclude 에 부정/금지/질문형(말고·안 했·should not·될까요…) 보강 (리뷰 SEV-2 #2). * - 기존 baked 룰(b0aabac3)은 `forgen rule migrate-triggers` 로 재-bake 해야 적용 (리뷰 SEV-2 #4). */ /** Stop hook 기본 완료 선언 매칭 (완료 동사/어미만 — skip-signal 미포함). */ export declare const DEFAULT_STOP_TRIGGER_RE = "(\uC644\uB8CC\uD588|\uC644\uC131\uB410|\uC644\uC131\uB418|\uC644\uC131\uD588|done\\.|ready\\.|shipped\\.|LGTM|finished\\.)"; /** Stop hook 기본 exclude — retraction/negation/meta 맥락 제외. */ export declare const DEFAULT_STOP_EXCLUDE_RE = "(\uCDE8\uC18C|\uCCA0\uD68C|\uC5C6\uC74C|\uC5C6\uC2B5\uB2C8\uB2E4|\uC54A\uC558|\uD558\uC9C0\\s*\uC54A|\uC544\uB2D9\uB2C8\uB2E4|not\\s*yet|no\\s*longer|retract|withdraw|\uC544\uC9C1\\s*(\uC548|\uC544))"; /** mock/stub/fake 감지 — R-B2 전용 pattern (자가검증 주장 차단). */ export declare const MOCK_TRIGGER_RE = "(mock|stub|fake)"; /** mock trigger 의 exclude — 테스트 맥락은 정상. */ export declare const MOCK_EXCLUDE_RE = "(\uD14C\uC2A4\uD2B8|test|vi\\.mock|jest\\.mock|spec\\.)"; /** * "리뷰 생략" AND "다음으로 넘어감" 이 함께 있을 때만 발화하는 결합 트리거. * 두 lookahead 로 conjunction — 한쪽만 있는 경고/질문/신중 응답은 미발화(FP 0). */ export declare const SKIP_REVIEW_TRIGGER_RE = "(?=[\\s\\S]*?(?:(\uB9AC\uBDF0|\uAC80\uD1A0)[^.!?\\n]{0,8}(\uC0DD\uB7B5|\uAC74\uB108\uB6F0|\uC5C6\uC774|\uC2A4\uD0B5|\uD328\uC2A4|\uC548\\s*\uD558\uACE0)|skip(?:ping|s)?\\s+(?:the\\s+)?review))(?=[\\s\\S]*?(?:\uB118\uC5B4\uAC00|\uB118\uC5B4\uAC11|\uB118\uC5B4\uAC14|\uB118\uC5B4\uAC10|\uB118\uC5B4\uAC08|\uB2E4\uC74C\\s*(\uC791\uC5C5|\uAE30\uB2A5|\uB2E8\uACC4|\uC2A4\uD15D|\uAC83|\uC774\uD130\uB808\uC774\uC158)|move\\s+on|next\\s+(step|task|feature)|proceed))"; /** * critic-review 룰 트리거 = 완료 선언 OR 리뷰생략-넘어감. * (완료 시점 + skip 시점 양쪽에서 critic 강제. e2e/mock 룰엔 부여 안 함 — DEFAULT 만 사용.) */ export declare const CRITIC_STOP_TRIGGER_RE = "((\uC644\uB8CC\uD588|\uC644\uC131\uB410|\uC644\uC131\uB418|\uC644\uC131\uD588|done\\.|ready\\.|shipped\\.|LGTM|finished\\.)|(?=[\\s\\S]*?(?:(\uB9AC\uBDF0|\uAC80\uD1A0)[^.!?\\n]{0,8}(\uC0DD\uB7B5|\uAC74\uB108\uB6F0|\uC5C6\uC774|\uC2A4\uD0B5|\uD328\uC2A4|\uC548\\s*\uD558\uACE0)|skip(?:ping|s)?\\s+(?:the\\s+)?review))(?=[\\s\\S]*?(?:\uB118\uC5B4\uAC00|\uB118\uC5B4\uAC11|\uB118\uC5B4\uAC14|\uB118\uC5B4\uAC10|\uB118\uC5B4\uAC08|\uB2E4\uC74C\\s*(\uC791\uC5C5|\uAE30\uB2A5|\uB2E8\uACC4|\uC2A4\uD15D|\uAC83|\uC774\uD130\uB808\uC774\uC158)|move\\s+on|next\\s+(step|task|feature)|proceed)))"; /** * critic 트리거 exclude — 기본 retraction + 부정/금지/질문형 + 숙고형 보강. * 주의: bare `안\s*하` 는 넣지 않는다 — "리뷰 안 하고 넘어감"(실제 skip TP)을 죽이므로. * retraction 은 과거형 `안\s*했`(안 했다)만 배제. 숙고형(할지|여부|고민…)은 skip 단언이 * 아니라 결정 전 단계라 배제 (리뷰 SEV-3 (a)). */ export declare const CRITIC_STOP_EXCLUDE_RE: string;