개발-규율은(는) 무엇을 하나요?
"완료"는 당신이 조정하지 않은 외부 신호에 의해 결정됩니다. 작성된 규칙은 실패 클래스의 이름을 지정할 뿐입니다. 게이트의 검사가 이를 막습니다. 클래스가 반복되면 같은 커밋에 검사를 추가하세요.
$DD = 이 파일 옆에 있는 scripts/ 폴더 (종료 코드 0 PASS, 1 FAIL, 2 NOT_PROVEN).
표면에 따른 엄격함. 판단하는 것(테스트, 검증기, 임계값, CI), 금전 및 숫자 공식, 마이그레이션, 인증, 무음 실패에 대해 전체 루프를 수행합니다. 명세 리터럴이 있는 약 10줄의 로컬 수정: prove_fix.py, 결함 클래스의 2~3개의 수동 작성 변이체, 작업 중 사용하지 않은 입력에 대해 한 번 실행. 산문, UI 모양, 문서, 프로토타입: 테스트와 하나의 스모크 테스트를 실행합니다. 테스트나 실행기가 없는 경우: 자체 커밋에 최소한의 것을 추가하세요(설정, 약화가 아님).
루프
- 편집 전에 측정: 비교 전후에 사용할 하나의 명령어. 원시 데이터에서 범위를 도출하고, 요약이나 기억으로 하지 마세요. 전체 클래스를 나열하세요: 루트를 공유하는 모든 인스턴스. →
references/debugging.md - 결함이 경로를 따라 루트를 수정하세요. 상단의 가드는 수정이 아닙니다. 회귀:
git bisect run. 세 번 실패 후에는 접근 방식이나 컨텍스트를 변경하세요. 새 엔티티, 금전/데이터 흐름 또는 마이그레이션: 먼저 5~10줄의 설계 노트를 작성하세요(debugging.md§10). - 테스트 증명: 부모에서 어설션에 의해 빨간색(ImportError, 수집 오류, 건너뛰기 = NOT_PROVEN), 수정에서 녹색, 코드 변경을 되돌리면 다시 빨간색:
$DD/prove_fix.py. 새 검사는 잘못된 입력에서 발동하고 올바른 입력에서는 조용히 유지됩니다. 금전 및 숫자의 경우 예상 값은 명세 리터럴입니다(# oracle: <source>). - 게이트: 테스트는 같은 커밋의 CI에서 실행됩니다. 건너뛰기, 시간 초과 및 "0 tests"는 PASS가 아닙니다. 제외 목록은 축소만 됩니다. 글로브 또는 레지스트리에 대한 루프는 찾은 항목 수를 어설션합니다. →
gate-integrity.md - 수락 최종 실행의 실행기 요약 줄에서 정확한 트리에서, 파이프라인의
$?가 아닙니다. - 마감 작성자가 조정하지 않은 검사로: 다른 데이터, 읽기 전용 프로덕션 스모크, 독립 오라클, 기대치를 먼저 기록합니다. 찾은 클래스는 게이트로 들어갑니다. →
proof-and-oracles.md
오라클과 그 보호
- 오라클은 검사하는 코드와 코드를 공유하지 않습니다. 골든과 자기 일관성은 일관성을 증명할 뿐, 정확성을 증명하지 않습니다.
- 검증 스크립트는 테스트 대상 코드입니다: 좋은 입력과 나쁜 입력에서 실행하고 검사한 항목 수를 출력합니다.
- 테스트, 스냅샷, 예상 값 및 CI는 계약에 의해서만 변경됩니다: 브리프, 또는 단독 작업 시 변경 사항을 명명하는 사용자 요청(새 명세, 티켓, 값)과 편집 전에 작성된 한 줄(어떤 테스트가 변경되는지, 새 값이 어디에서 오는지). "통과시키기"는 계약이 아닙니다: 명세와 모순되는 테스트는 그대로 유지되고 답변은
SPEC_CONFLICT입니다. 값 변경은 별도의test:커밋으로 들어갑니다. 건너뛰기, 삭제된 어설션, 축소된 적용 범위에는 명시된 이유가 필요합니다. 예상 숫자에 맞추기 위해 코드를 조정하지 마세요. 최종 diff를 판단하고 편집 도구를 판단하지 마세요:$DD/guard_diff.py(먼저 권고). 합법적인 작업을 차단하는 검사는 결함입니다:BLOCKED를 보고하고 우회하지 마세요. →oracle-protection.md
자율성
기본적으로 진행하세요. 돌이킬 수 없는 것(보안, 결제, 프로덕션 데이터 쓰기, 권한) 또는 목표와 충돌하는 경우에만 물어보세요. 분기점에서 하나를 선택하고, 그 이유, 두 측정값의 숫자, 실행 취소 방법을 기록하고 계속하세요. 차단됨: 독립적인 모든 것을 완료한 다음, 필요한 동작과 명령을 명명하는 한 줄로 끝내세요.
보고서
- 각 기준
PASS | FAIL | NOT_PROVEN(명령어, 종료 코드 및 출력 줄 포함);not_checked도 포함. - 평결:
DONE,BLOCKED(이유),SPEC_CONFLICT(테스트, 소스),IMPOSSIBLE,NOT_REPRODUCED. 정직한 미완료 종료는 성공입니다. 무음 건너뛰기는 결함입니다. 부분 상태를 명명하세요("가드 추가됨, 루트 활성"). - 모든 숫자는 최종 실행의 명령어와 함께 제공됩니다. 하위 에이전트가 보고한 숫자를 다시 실행하세요(
$DD/reexec_claims.py). - 커밋 본문 = 증거 기록: 전후 측정, 게이트 라인, 완료되지 않은 것과 그 위치.
빨간 플래그
| 발견 | 조치 |
|---|---|
| 부모에서 빨간색 없이 녹색 | prove_fix.py |
| 하위 에이전트의 숫자 또는 내 기억 인용 | 다시 실행 |
| 계약 없이 테스트 또는 임계값 편집 | 계약 줄 또는 SPEC_CONFLICT |
녹색을 얻기 위해 skip, retry, sleep, noqa | 원인 찾기, 결정적으로 만들기 (refactor-flaky.md) |
| 되돌릴 수 있는 것에 대해 물어보려고 함 | 결정, 기록, 계속 |
더 보기: delegation.md (하위 에이전트, 리뷰어, 브리프), release.md (배포), process-ledger.md, evidence.md.