Skip to content

Chore: 하네스 구성요소 개명·분리 — core/tripfit 구분 (#128) - #129

Merged
chhezue merged 5 commits into
mainfrom
chore/128-harness-component-rename
Sep 5, 2026
Merged

chhezue merged 5 commits into
mainfrom
chore/128-harness-component-rename

Conversation

@chhezue

@chhezue chhezue commented Sep 5, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • 하네스 규칙 5개·스킬 4개·훅 3개·에이전트 1개를 역할이 드러나는 이름으로 변경 — core-(프로젝트 무관)/tripfit-(프로젝트 고유) 접두사로 구분
  • always-load 규칙 중 최대(195줄)였던 harness-workflow.md를 STOP 규칙(core-guardrails.md)과 진행 순서(core-workflow.md)로 분리, harness-milestone.md를 일반 원칙(core-scope.md)과 TripFit 고유 사실(tripfit-release.md)로 분리
  • 참조하던 9곳(.claude/rules/README.md, settings.json, AGENTS.md, CLAUDE.md, docs/harness-engineering.md, docs/harness/layer1~3+architecture-diagrams.md, .github/CONTRIBUTING.md, deploy/environment-reference.md, scripts/github-bootstrap.sh, docs/specs/README.md)를 새 이름으로 동기화
  • src/**/*.java 변경 없음 (이름·문서만 이동, 정책·로직 불변)

Related

Test plan

  • ./gradlew test
  • ./gradlew build (해당 없음 — 문서·설정 변경만)
  • 배포 변경 시 verify-deploy (해당 없음)

Checklist

  • 요청 범위만 수정 (drive-by 리팩터링 없음)
  • docs/product/release-milestones.md Milestone 확인 — 출시 이후, priority: could (구조정리 성격)
  • DB·인증·다파일 변경 시 스펙 반영 — 해당 없음 (문서·설정 리네이밍)
  • API 계약 변경 없음 — Breaking-Change-Reason 트레일러: N/A

Risk / Rollback

  • 코드·정책 변경 없이 파일명·경로만 이동한 리네이밍이라 되돌리기는 git revert로 충분

🤖 Generated with Claude Code

chhezue and others added 5 commits September 5, 2026 10:00
파일명만 보고 역할을 알 수 있게 이름을 바꾸고, 한 파일이 여러 관심사를
담고 있던 2곳을 쪼갰다. 이름에 core-/tripfit- 구분이 생기면서 하네스를
다른 저장소로 복제할 때 무엇을 가져갈지가 파일명으로 드러난다.

규칙 (5개 → 7개)
- harness-workflow.md(195줄) → core-guardrails.md(하지 말 것, STOP §1~§6)
  + core-workflow.md(어떤 순서로, 트랙·게이트)
- harness-milestone.md → core-scope.md(프로젝트 무관 원칙)
  + tripfit-release.md(이 저장소 고유 사실)
- harness-follow-up/workflow-tools/plain-language-reporting → core-*
- STOP 절의 내용·번호·우선순위는 변경 없음. 이동·개명만 했다

스킬·훅·에이전트
- verify→preflight, refactor-audit→safe-refactor, defer-followup→defer,
  debug-bug→debug
- 훅 접두사 규칙 도입: 차단 deny-, 경고 warn-, 자동 실행 auto-
- senior-spring-backend-reviewer → spring-reviewer

함께 고친 것
- preflight의 description이 큰따옴표로 시작해 YAML이 값을 잘라먹고 있었다.
  스킬 목록에 설명 대신 문서 제목이 노출돼, 에이전트가 이 스킬을 언제
  불러야 하는지 판단할 근거가 없는 상태였다
- 분할하며 생긴 상호참조 오류 5건 수정 (게이트 안내가 STOP 파일을 가리키는 등)
- rules/README.md에 작명 규칙 절 신설
- tripfit-release.md에서 폐지 이력 2건을 release-milestones.md로 이관
- 커밋 분할 규칙을 최대 5개·선제안으로 변경 (core-workflow.md G4)

Closes #128 의 A~F 항목

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
앞 커밋의 개명을 문서 전체에 반영했다. 기계적 치환이라 리뷰할 판단은 없다.

- harness-workflow 참조 127곳은 1:1 치환이 불가능했다. 두 파일로 갈라져
  STOP·레거시·마이그레이션 문맥이면 core-guardrails, 게이트·트랙·이슈 생성
  승인 문맥이면 core-workflow로 문맥을 보고 나눴다
- verify는 감사·스펙 문서에 Mockito verify() 호출이 다수 있고
  scripts/verify-deploy.sh도 있어, 백틱으로 감싼 형태와 경로만 바꿨다
  일반 용법("검증하다")은 건드리지 않았다
- src/**/*.java diff 0줄, 깨진 상대 링크 0건 확인

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26에 폐지한 구 도메인 축 용어가 저장소 전체에 488회 남아 있었다.
폐지 사실을 반복 설명하는 문장이 규칙·스펙·스크립트에 흩어져, 읽을 때마다
"이건 지금 쓰는 건가"를 판단해야 했다. 3건만 남기고 걷어냈다.

- github-bootstrap.sh: 구 라벨 4개·구 마일스톤 8줄 제거. GitHub에서 라벨은
  이미 삭제됐고 마일스톤은 전부 Close라 실행이 끝난 dead code였다
  (core-guardrails STOP §4). bash -n 통과
- docs/audits/doc-writing-audit.md 삭제: 감사 대상이 "잔존 488회"였고 문서
  스스로 "전부 해소됐다"고 기록한 완료된 감사다. 인바운드 참조 3곳도 정리
- release-milestones.md: §0의 긴 폐지 서사와 변경 이력 표를 "축은 3개 질문뿐"
  표로 압축하고 폐지 내역은 부록 목록으로만 남김. 26회 → 0회
- glossary.md 외 스펙 4개: 안내 문구·괄호·stale 참조 제거

남긴 3건: 개명 스펙 본문 2건(무엇을 바꿨는지 설명), 그리고 지금은 없어진
Java 주석을 인용한 감사 문장 1건(고치면 인용이 거짓이 된다).
src/**/*.java에는 원래 한 건도 없었다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
이름은 앞 커밋들에서 이미 맞춰졌고, 수치와 구조 주장이 어긋나 있어 대조해
고쳤다. 단순 갱신만으로는 "왜 이렇게 됐는지"가 남지 않아 이번에 드러난
사건 3개를 새 절로 기록했다.

수치 정정
- always-load 규칙 5개 → 7개 (README·layer1·architecture-diagrams·
  harness-engineering 4곳)
- 실측 크기 갱신: Java 규칙 3개 46KB → 45KB, rules/README.md 16KB → 18KB
- always-load 총량 "약 42KB"는 그대로 뒀다. 파일이 5개에서 7개가 됐는데도
  내용이 이동했을 뿐이라 실제로 안 변했고, 그게 아래 §4-2의 요점이다

새로 기록한 것
- layer1 §4-2: 규칙 재편의 기준과 대가. always-load 다이어트가 0.6%밖에
  줄이지 못했다(추정 5%). 토큰 절감은 규칙 파일을 쪼개는 근거가 못 된다
- layer1 §4-3: 이 레이어의 새 실패 모드 — 분할하면 포인터가 어긋난다.
  안내를 따라간 에이전트가 규칙이 없으면 스스로 판단해버리므로 오타보다
  나쁘다. L2의 doc-reviewer가 L1의 결함을 잡은 사례이기도 하다
- layer2: description 한 줄이 곧 트리거다. preflight의 YAML이 깨져 있던
  사고와, 이 실패가 에러도 로그도 없이 조용하다는 점
- layer3: 훅 작명 규칙(deny-/warn-/auto-)이 fail-closed/fail-open 비대칭을
  이름에 드러낸다

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
커밋 규칙 (사용자 결정)
- 최대 3개 → 목적·주제별 최대 5개
- 작업이 끝나면 사용자가 묻지 않아도 커밋 분할안을 먼저 제안한다
- 제안까지가 에이전트 몫이고, 실행은 승인 후에만. 절대 마음대로 커밋하지 않는다
- SSOT는 CONTRIBUTING.md 커밋 분할 절. 표에 "제안 시점" 행을 추가하고
  금지 항목 맨 앞에 "승인 없는 커밋 실행"을 올렸다

스펙
- docs/specs/cross-cutting/harness-component-rename.md 신규 (#128)
  A~E 개명·분리, F always-load 다이어트, G 폐지 축 용어 제거
- specs/README.md cross-cutting 표에 등록 (8 → 9)

AGENTS.md에는 커밋 규칙 외에 앞 커밋들의 개명 참조 갱신도 함께 들어 있다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@chhezue
chhezue merged commit f34384d into main Sep 5, 2026
4 checks passed
@chhezue
chhezue deleted the chore/128-harness-component-rename branch September 5, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Chore] 하네스 구성요소 개명·분리 — core/tripfit 구분

1 participant