Skip to content

feat: 검증 절차와 안전 규칙을 GLOBAL_RULES.md에 추가 - #5

Closed
intelligent04 wants to merge 2 commits into
Sharon77770:mainfrom
intelligent04:feat/verification-and-safety-rules
Closed

feat: 검증 절차와 안전 규칙을 GLOBAL_RULES.md에 추가#5
intelligent04 wants to merge 2 commits into
Sharon77770:mainfrom
intelligent04:feat/verification-and-safety-rules

Conversation

@intelligent04

Copy link
Copy Markdown
Contributor

관련 이슈: #1 (1번 항목 중 검증 절차 부분)
선행 PR: #4 — 먼저 병합되어야 이 PR의 diff만 남습니다.

문제

생성된 규칙에 **"변경이 실제로 동작하는지 어떻게 확인하는가"**가 없습니다. AGENTS.md 관련 가이드가 공통으로 1순위 항목으로 꼽는 것이 build/test/lint 명령인데, 생성물에는 그 지시가 없어 에이전트가 코드를 고치고 검증 없이 완료를 선언하게 됩니다.

변경

GLOBAL_RULES.md에 두 섹션을 추가했습니다.

## 검증

  • 완료로 보고하기 전에 저장소에 정의된 build, test, lint를 실행한다.
  • 이 도구는 대상 저장소를 스캔하지 않으므로 구체적인 명령을 적어 넣지 않습니다. 대신 package manifest, Makefile, task runner 설정, 기여 문서, CI 워크플로에서 확인하게 하고 정의되어 있지 않은 명령을 지어내는 것을 금지합니다. 없는 명령을 규칙 파일에 박아 넣는 것이 더 위험하다고 판단했습니다.
  • 현재 환경에서 실행할 수 없는 명령을 통과했다고 가정하지 않는다.
  • 테스트를 삭제하거나 skip 처리하거나 단정을 약화시켜 통과시키지 않는다.

## 안전

  • secret, 토큰, 자격 증명, 개인정보를 코드·로그·응답·문서·커밋 메시지에 남기지 않는다.
  • .env, 자격 증명 파일, CI secret 설정은 읽거나 수정하지 않는다. 새 키가 필요하면 키 이름만 알리고 값 설정은 사람에게 맡긴다.
  • 요청에 없는 파괴적 작업 금지: 파일·디렉토리 일괄 삭제, git history 재작성, force push, branch 삭제, 데이터가 사라지는 migration.
  • 되돌릴 수 없는 작업이 필요하면 실행 전에 확인을 받는다.
  • 의존성 lock 파일은 의존성 변경이 작업 목적일 때만 수정한다.

기존에는 secret 관련 문구가 --auth yes일 때만 생성됐습니다. secret 유출은 인증 기능 유무와 무관하므로 항상 포함되도록 했습니다.

범위에서 뺀 것

이슈 #1의 4번 항목(ref_docs 우선순위)은 의도된 설계라는 답변을 받아 이 PR에서 건드리지 않았습니다. ref_docs를 읽는 순서와 우선순위는 그대로입니다.

1번 항목 중 공백 규칙 제거도 철회했습니다. 코드 예시 추가는 분량과 취향 영향이 커서 별도 논의 후 진행하겠습니다.

검증

  • pytest 50건 통과. tests/test_verification_and_safety.py 7건 추가.
  • 규칙 문서 크기: 21,772 B → 23,314 B (fastapi 기준). 항상 로드되는 문서가 커지는 변경이라, 이 정도 증가가 부담이면 --docs 수준에 따라 조건부로 넣는 방식도 가능합니다.
  • 스냅샷 diff로 두 섹션 추가 외 변화가 없음을 확인할 수 있습니다.

세 가지를 정리한다.

1. TEST_RULES.md가 생성되지 않았다.
   _render_test_rules()와 프로필별 test_rules 데이터가 이미 있었지만 render()의
   출력 목록에 연결되어 있지 않아 실제 생성물에는 테스트 규칙이 없었다.
   출력에 추가하고 AGENTS.md 라우팅 표에도 넣었다.

2. 프레임워크별 규칙이 세 문서에 그대로 중복됐다.
   동일한 문장이 GLOBAL_RULES.md, CODE_STYLE_RULES.md, SERVICE_LAYER_RULES.md에
   세 번 들어갔다. 같은 문장을 반복해도 준수율은 오르지 않고 컨텍스트 예산만 쓴다.
   GLOBAL_RULES.md를 단일 출처로 두고 나머지 두 문서에는 참조 문구를 남긴다.
   덤으로 한국어 SERVICE_LAYER_RULES.md에 영어 라벨(Service Notes)이 섞여 있던
   문제도 사라진다.

3. 호출되지 않는 렌더러 메서드 5종(208줄)을 제거했다.

결과적으로 규칙 문서가 하나 늘었는데도 총량은 줄었다.
fastapi: 8파일 21,824B -> 9파일 21,772B
fastapi,react: 8파일 24,636B -> 9파일 24,192B

- tests/test_rule_documents.py 4건 추가. 규칙 문서 간 중복 문장 0을 강제하고
  생성된 모든 규칙 문서가 AGENTS.md 라우팅 표에서 도달 가능한지 검사한다.
- 기존 테스트 중 SERVICE_LAYER_RULES.md에서 프로필명을 확인하던 단정은
  단일 출처인 GLOBAL_RULES.md를 보도록 옮겼다.
- CODE_STYLE_RULES.md의 공백 규칙은 유지보수자 의견에 따라 그대로 둔다.
생성된 규칙에 '변경이 실제로 동작하는지 어떻게 확인하는가'가 없었다.
AGENTS.md 권장 항목 1순위가 build/test/lint 명령인데 생성물에는 그 지시가 없었다.

## 검증
- 완료 보고 전에 저장소에 정의된 build, test, lint를 실행하게 한다.
- 이 도구는 대상 저장소를 스캔하지 않으므로 구체적인 명령을 적지 않는다. 대신
  manifest, Makefile, task runner 설정, 기여 문서, CI 워크플로에서 확인하게 하고
  정의되지 않은 명령을 지어내는 것을 금지한다.
- 실행 불가한 명령을 통과로 가정하지 않게 하고, 테스트를 삭제/skip/단정 약화로
  통과시키는 것을 금지한다.

## 안전
- secret, 토큰, 자격 증명, 개인정보를 코드/로그/응답/문서/커밋 메시지에 남기지 않는다.
- .env, 자격 증명 파일, CI secret 설정 접근 금지. 새 키가 필요하면 이름만 알린다.
- 요청에 없는 파괴적 작업 금지(대량 삭제, git history 재작성, force push,
  branch 삭제, 데이터 삭제 migration). 불가피하면 실행 전 확인.
- lock 파일은 의존성 작업일 때만 수정.

기존에는 secret 관련 문구가 --auth yes일 때만 생성됐다. secret 유출은 인증 기능
유무와 무관하므로 항상 포함되도록 했다.

ref_docs 우선순위는 의도된 설계라는 답변을 받아 이 PR에서 건드리지 않았다.

tests/test_verification_and_safety.py 7건 추가. 전체 50건 통과.
규칙 문서 크기: fastapi 21,772B -> 23,314B
@Sharon77770

Copy link
Copy Markdown
Owner

작업 단위의 빌드 테스트는 무의미해보입니다. agent는 기본적으로 명령조에서 요구사항에 맞는 작업을 잘 진행하는데 문서가 경어와 명령조가 섞여있습니다.

안전 관련 섹션 좋은 개선이라고 생각합니다.

작업 커밋단위가 섞여있어서 PR은 닫아두겠습니다. 감사합니다

@Sharon77770 Sharon77770 closed this Aug 5, 2026
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.

2 participants