Files
hanarang-rails/qa-templates/bugfix-v1.yaml
이랑이 da85b92a6b feat(sprint-006): QA template runtime — 다랑이 체크리스트 실행
Sprint 006 전체 구현 — F3/F2 의 QA 측면 완성:

Schema:
- src/qa/schema.ts — QaTemplate, QaChecklistResult, QaArtifact Zod 스키마
- Zod + DodCheck 재사용

Templates (6종 YAML):
- qa-templates/scaffold-v1.yaml — README/LICENSE/gitignore/lockfile/strict
- qa-templates/feature-v1.yaml — tests/typecheck/no-console/no-any/tests-added
- qa-templates/bugfix-v1.yaml — regression-test/root-cause/no-scope-creep
- qa-templates/refactor-v1.yaml — tests/typecheck/no-behavior-change
- qa-templates/migration-v1.yaml — rollback/dry-run/data-loss/backup (critical)
- qa-templates/infra-v1.yaml — config-validated/secrets/rollback

Core:
- src/qa/template.ts — YAML loader, extends 체인 resolution, 프로젝트별 extras
- src/qa/verdict.ts — verdict 규칙 (critical/major → REQUEST_CHANGES,
  minor/recommendation 만 → APPROVE_WITH_NITS, 절대 REQUEST_CHANGES 안 됨)
- src/qa/runtime.ts — runQaTemplate: Contract check handlers 재사용
  manual 체크는 resolver 주입 가능 (없으면 SKIP 기본값)

CLI:
- rails qa run <type> [-s sprint-id] [-w workdir]
- rails qa show <artifact-id>
- rails qa templates  (목록)

Tests (19 신규, 101 total pass):
- computeVerdict 7가지 시나리오 (APPROVE / APPROVE_WITH_NITS / REQUEST_CHANGES / ABORT)
- minor-only 는 절대 REQUEST_CHANGES 안 된다는 rule 명시 테스트
- Template loader + listTemplates + extends merge
- runtime: file_exists pass/fail + manual resolver 주입 + artifact 저장
- scaffold-v1 실파일 로드 확인

검증: tsc --noEmit ✓ | vitest 101/101 ✓ | build ✓
       rails qa templates → 6개 전부 출력 ✓

사용자 메모리 feedback_qa_thorough.md 준수:
  - 체크 항목 수 제한 없음
  - 각 템플릿이 타입별로 세분화됨

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 15:46:58 +09:00

51 lines
1.3 KiB
YAML

template: bugfix-v1
version: v1
appliesTo: [bugfix]
requiredChecks:
- id: regression-test
description: 버그를 재현하는 테스트가 추가됨 (수정 전 fail → 수정 후 pass)
kind: manual
spec:
question: 새로 추가된 regression 테스트가 있는가?
guidance: 수정 전 커밋에서 테스트가 실패하는지 확인했는가?
blocking: true
severity: major
- id: root-cause-documented
description: root cause 기록
kind: manual
spec:
question: 스프린트 문서 또는 커밋 메시지에 root cause 가 명시되었는가?
blocking: true
severity: major
- id: no-scope-creep
description: 버그 외 리팩터/기능 추가 없음
kind: manual
spec:
question: 이번 커밋이 오직 해당 버그만 수정하는가?
guidance: 동반 리팩터/포매팅 변경은 별도 커밋으로 분리되어야 함.
blocking: true
severity: major
- id: tests-pass
description: 전체 테스트 pass
kind: command_success
spec:
command: pnpm test
timeoutMs: 120000
expectExitCode: 0
blocking: true
severity: major
- id: typecheck
description: 타입 체크 pass
kind: command_success
spec:
command: pnpm tsc --noEmit
timeoutMs: 60000
expectExitCode: 0
blocking: true
severity: major