Skip to content

Commit 85f4699

Browse files
authored
(#63) Harness 운영체계 구축(M1~M4) 및 주간 Scorecard 정착
* docs(harness): 에이전트 운영체계 부트스트랩과 한국어 작성 규칙 적용 - AGENTS.md와 docs 기반 system of record 구조를 추가했습니다. - Harness 이슈/PR 템플릿 및 PR 가드레일 워크플로우를 도입했습니다. - 한국어 PR 템플릿과 커밋 템플릿(.gitmessage-ko.txt)을 설정했습니다. * docs(observability): M2-2 메트릭 카탈로그와 SLI 목표 문서화 - 코드와 대시보드 기준으로 핵심 메트릭 목록을 정리했습니다. - 가용성/오류율/지연시간/GitHub API/배치 성공률 SLI 초기 목표를 추가했습니다. - AGENTS, docs index, 관측 runbook에서 카탈로그 링크를 연결했습니다. * feat(logging): M2-3 구조화 로그 필드 계약과 영문 문서 정책 반영 - LogContext에 필수 필드(trace_id/event/log_category/phase/outcome) 자동 보장 로직을 추가했습니다. - GitHub/HTTP/Batch 핵심 로그를 계약 필드에 맞게 정렬하고 LogContext 계약 테스트를 추가했습니다. - AGENTS.md와 docs 머신 문서를 영어로 통일하는 정책 및 문서를 반영했습니다. * test(architecture): M4-2 ArchUnit 가드레일과 .gitignore 변경 반영 - ArchUnit 의존성과 아키텍처 경계 테스트를 추가했습니다. - 레이어링 문서와 M4-2 plan 문서를 업데이트했습니다. - 요청하신 .gitignore 변경을 함께 반영했습니다. * docs(scorecard): M4-3 주간 점검 템플릿과 드리프트 리뷰 루프 추가 - docs/scorecards에 주간 scorecard 가이드와 템플릿을 추가했습니다. - 주간 점검 이슈 템플릿(.github/ISSUE_TEMPLATE/weekly_scorecard.yml)을 추가했습니다. - AGENTS.md와 docs index에 scorecard 문서 링크를 연결했습니다. * docs(plan): 완료된 실행 계획을 completed로 이관 - active에 있던 완료 plan 5건을 completed 디렉터리로 이동했습니다. - ADR-0001의 related plan 경로를 completed 기준으로 수정했습니다. - completed/README에 현재 기록 목록을 추가했습니다. * docs(scorecard): 2026-W09 주간 scorecard 초안 생성 - weekly template 기반으로 2026-W09 scorecard 문서를 생성했습니다. - 이번 주 실행 결과와 다음 주 액션 아이템을 초기 값으로 정리했습니다. - scorecards README에 현재 기록 목록을 추가했습니다. * chore: 하네스 PR 가드레일과 관측성 계약 정합성 강화 - PR 본문에서 실제 plan 경로와 검증 결과를 엄격히 검사하도록 guardrail 개선 - 관측성 문서(MD058, PII 마스킹 지침)와 점수표 템플릿 정리 - LoggingFilter outcome 규칙을 4xx/5xx failure로 정렬하고 테스트 추가 - ArchUnit 의존성을 1.4.1로 상향
1 parent b36101c commit 85f4699

41 files changed

Lines changed: 1832 additions & 58 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,25 @@ body:
3838
validations:
3939
required: false
4040

41+
- type: textarea
42+
id: intent_spec
43+
attributes:
44+
label: 의도 명세 (Intent Spec)
45+
description: 버그 수정에서 반드시 보장해야 할 동작과 비목표를 작성해 주세요.
46+
placeholder: |
47+
반드시 보장할 동작:
48+
비목표:
49+
validations:
50+
required: false
51+
52+
- type: input
53+
id: related_plan
54+
attributes:
55+
label: 관련 계획 문서 경로 (선택)
56+
placeholder: "docs/plans/active/2026-02-25-bugfix-name.md"
57+
validations:
58+
required: false
59+
4160
- type: textarea
4261
id: environment
4362
attributes:
@@ -64,4 +83,4 @@ body:
6483
label: 확인 사항
6584
options:
6685
- label: 이 이슈와 동일한 기존 이슈가 있는지 검색해 보았습니다.
67-
required: false
86+
required: false

.github/ISSUE_TEMPLATE/feature_request.yml

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,27 @@ body:
2626
validations:
2727
required: true
2828

29+
- type: textarea
30+
id: intent_spec
31+
attributes:
32+
label: 의도 명세 (Intent Spec)
33+
description: 문제, 목표 동작, 비목표를 작성해 주세요.
34+
placeholder: |
35+
문제:
36+
목표 동작:
37+
비목표:
38+
validations:
39+
required: true
40+
41+
- type: input
42+
id: plan_path
43+
attributes:
44+
label: 계획 문서 경로 (선택)
45+
description: 큰 변경이면 docs/plans/active 경로를 연결해 주세요.
46+
placeholder: "docs/plans/active/2026-02-25-feature-name.md"
47+
validations:
48+
required: false
49+
2950
- type: textarea
3051
id: alternatives
3152
attributes:
@@ -40,4 +61,4 @@ body:
4061
label: 추가 정보 (Additional context)
4162
description: 스크린샷이나 참고할 만한 링크가 있다면 추가해 주세요.
4263
validations:
43-
required: false
64+
required: false
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
name: 🧭 Harness Epic
2+
description: 에이전트 운영체계(legibility, observability, system of record, feedback loop)용 상위 이슈
3+
title: "[Harness Epic]: "
4+
labels: ["harness", "epic"]
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
이 이슈는 하나의 단계(Phase)를 관리하는 상위 Epic입니다.
10+
하위 Task 이슈로 분해해서 진행해 주세요.
11+
12+
- type: input
13+
id: phase
14+
attributes:
15+
label: Phase
16+
description: 예) M1 Legibility / M2 Observability / M3 System of Record / M4 Feedback Loop
17+
placeholder: "M1 Legibility"
18+
validations:
19+
required: true
20+
21+
- type: textarea
22+
id: objective
23+
attributes:
24+
label: 목표 (Objective)
25+
description: 이번 Epic이 해결해야 하는 운영 문제를 명확히 작성하세요.
26+
placeholder: "예: 신규 기여자와 AI agent가 저장소 구조를 10분 내 이해할 수 있어야 함"
27+
validations:
28+
required: true
29+
30+
- type: textarea
31+
id: success_criteria
32+
attributes:
33+
label: 완료 기준 (Success Criteria)
34+
description: 측정 가능한 완료 기준을 작성하세요.
35+
placeholder: |
36+
- AGENTS.md 정착
37+
- docs index 구축
38+
- PR 템플릿 강제 항목 운영
39+
validations:
40+
required: true
41+
42+
- type: textarea
43+
id: planned_tasks
44+
attributes:
45+
label: 예정된 하위 Task 이슈
46+
description: 체크리스트로 분해하세요.
47+
placeholder: |
48+
- [ ] M1-1 ...
49+
- [ ] M1-2 ...
50+
validations:
51+
required: true
52+
53+
- type: textarea
54+
id: risks
55+
attributes:
56+
label: 리스크 및 대응
57+
description: 실패 가능성과 완화 전략을 작성하세요.
58+
validations:
59+
required: false
60+
61+
- type: textarea
62+
id: out_of_scope
63+
attributes:
64+
label: 범위 제외 (Out of Scope)
65+
description: 이번 Epic에서 하지 않을 항목을 명확히 작성하세요.
66+
validations:
67+
required: false
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
name: ✅ Harness Task
2+
description: Epic 하위 실행 단위 이슈 (하나의 목표, 하나의 PR)
3+
title: "[Harness Task]: "
4+
labels: ["harness", "task"]
5+
body:
6+
- type: input
7+
id: epic_link
8+
attributes:
9+
label: 상위 Epic 이슈 링크
10+
placeholder: "예: #123"
11+
validations:
12+
required: true
13+
14+
- type: input
15+
id: plan_doc
16+
attributes:
17+
label: Plan 문서 경로
18+
description: docs/plans/active/ 경로를 입력하세요.
19+
placeholder: "docs/plans/active/2026-02-25-<slug>.md"
20+
validations:
21+
required: true
22+
23+
- type: textarea
24+
id: intent
25+
attributes:
26+
label: 의도 명세 (Intent Spec)
27+
description: 문제, 목표 동작, 비목표를 작성하세요.
28+
placeholder: |
29+
문제:
30+
목표 동작:
31+
비목표:
32+
validations:
33+
required: true
34+
35+
- type: textarea
36+
id: scope
37+
attributes:
38+
label: 구현 범위
39+
description: 이번 Task에서 실제로 바꿀 파일/구성요소를 작성하세요.
40+
validations:
41+
required: true
42+
43+
- type: textarea
44+
id: validation
45+
attributes:
46+
label: 검증 방법
47+
description: 실행할 명령과 확인할 관측 포인트를 작성하세요.
48+
placeholder: |
49+
명령:
50+
- ./gradlew test --tests "..."
51+
관측:
52+
- actuator/metrics 확인
53+
- 로그 필드 확인
54+
validations:
55+
required: true
56+
57+
- type: textarea
58+
id: done
59+
attributes:
60+
label: 완료 조건
61+
description: 이 Task가 끝났다고 판단할 기준을 작성하세요.
62+
validations:
63+
required: true
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: 📊 주간 Scorecard
2+
description: 한 주간의 품질/드리프트 점검을 기록하는 이슈
3+
title: "[Weekly Scorecard]: "
4+
labels: ["harness", "scorecard"]
5+
body:
6+
- type: input
7+
id: week
8+
attributes:
9+
label: Review Week
10+
placeholder: "2026-W09"
11+
validations:
12+
required: true
13+
14+
- type: input
15+
id: owner
16+
attributes:
17+
label: Owner
18+
placeholder: "@username"
19+
validations:
20+
required: true
21+
22+
- type: input
23+
id: scorecard_doc
24+
attributes:
25+
label: Scorecard Document Path
26+
placeholder: "docs/scorecards/2026-W09-scorecard.md"
27+
validations:
28+
required: true
29+
30+
- type: textarea
31+
id: summary
32+
attributes:
33+
label: Week Summary
34+
description: 핵심 변화와 품질 상태를 3~5줄로 요약해 주세요.
35+
validations:
36+
required: true
37+
38+
- type: textarea
39+
id: risks
40+
attributes:
41+
label: Top Risks Next Week
42+
placeholder: |
43+
1) ...
44+
2) ...
45+
3) ...
46+
validations:
47+
required: true
48+
49+
- type: textarea
50+
id: action_items
51+
attributes:
52+
label: Action Items
53+
description: 다음 주 실행 항목과 담당자를 작성해 주세요.
54+
placeholder: |
55+
- [ ] #123 ... (@owner)
56+
- [ ] #124 ... (@owner)
57+
validations:
58+
required: true

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 43 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,43 @@
1-
<!-- 제목 예시: [Feat]: 관리자 페이지 구현 -->
2-
<!-- 작성하지 않은 항목은 모두 지워주세요 -->
3-
4-
## 🔎개요
5-
<!-- 구현한 기능에 대해 간단하게 설명해주세요 -->
6-
7-
8-
<br/>
9-
10-
## 📝작업 내용
11-
<!-- 구현한 기능에 대한 구체적인 내용을 작성해주세요 -->
12-
13-
14-
<br/>
15-
16-
## 👀변경 사항
17-
<!-- 컴포넌트, API, 로직 등 코드 변경으로 인해 협업 시 다른 개발자가 주의해야 할 내용이 있다면 작성해주세요 -->
18-
19-
20-
<br/>
21-
22-
## #️⃣관련 이슈
23-
<!-- 해당 PR과 관련된 이슈 번호가 있다면 "- #22" 형태로 작성해주세요 -->
1+
## 1) 요약
2+
- 무엇이 변경되었나요?
3+
- 왜 지금 필요한가요?
4+
5+
## 2) 연관 이슈
6+
- Closes #
7+
8+
## 3) 의도 명세
9+
- 문제:
10+
- 목표 동작:
11+
- 비목표:
12+
13+
## 4) System of Record 링크
14+
- Plan: `docs/plans/active/...` 또는 `docs/plans/completed/...`
15+
- ADR (필요 시): `docs/adr/...`
16+
- 관련 runbook/docs 업데이트:
17+
18+
## 5) 변경 범위
19+
- 변경된 파일/패키지:
20+
- API/스키마/동작 영향:
21+
22+
## 6) 검증 증거
23+
24+
| 유형 | 명령어 | 결과 |
25+
| --- | --- | --- |
26+
| Build | `./gradlew build -x test` | |
27+
| Unit | `./gradlew test` | |
28+
| Integration | `./gradlew integrationTest` 또는 `미실행(사유)` | |
29+
30+
## 7) 관측성 확인
31+
- 확인한 로그:
32+
- 확인한 메트릭:
33+
- 확인한 대시보드/쿼리:
34+
35+
## 8) 리스크 및 롤백
36+
- 리스크:
37+
- 롤백 계획:
38+
39+
## 9) 체크리스트
40+
- [ ] 이슈가 연결되어 있음
41+
- [ ] Plan 문서가 연결되어 있음
42+
- [ ] 검증 증거가 포함되어 있음
43+
- [ ] 문서가 업데이트되었거나 불필요 사유가 명시되어 있음

0 commit comments

Comments
 (0)