REF-003 안정도 정합성
한 항목의 안정도가 의존 대상 항목의 안정도를 초과하지 않는지를 검증합니다. stable한 항목이 experimental한 항목을 참조하는 등의 부정합을 warning 으로 보고합니다. 프로젝트 스코프 의 규칙으로, include로 읽어들인 모든 문서를 횡단하여 평가됩니다.
왜 필요한가
섹션 제목: “왜 필요한가”안정도 라벨(experimental / review / stable 등)은 문서 내 항목의 신뢰도를 나타냅니다. stable한 요구사항이 experimental한 요구사항에 의존하면, 의존 대상이 변할 때마다 stable 측도 따라가야 하므로 안정도의 의미가 형해화됩니다. 역방향의 의존(experimental → stable)은 문제 없습니다. 이 규칙은 안정도 라벨의 일관성을 기계적으로 검증합니다.
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
stabilityColumn | string | ✓ | 안정도를 저장할 컬럼명 |
stabilityOrder | string[] | ✓ | 안정도의 나열 순서(불안정 → 안정 순) |
definitions | string | ✓ | ID를 정의할 파일의 glob |
references | string[] | ✓ | ID를 참조할 파일의 glob 배열 |
idColumn | string | — | 정의 파일에서 ID가 저장된 컬럼명(기본값: ID) |
idPattern | string | — | ID로서 취급할 값의 정규표현식 |
stabilityOrder는 배열의 인덱스 순으로 「더 안정」 으로 간주됩니다. ["experimental", "review", "stable"]이라면 stable이 가장 안정입니다. 참조 측의 행에 적힌 안정도가 참조 대상 항목의 안정도보다 안정(인덱스가 큼)하면 위반이 됩니다.
위반 예시
섹션 제목: “위반 예시”docs/requirements.md:| ID | 내용 | Stability || ------ | ---------------- | ------------ || REQ-01 | 사용자 등록 | experimental |
docs/design.md:| ID | 관련 | Stability || ------ | ------- | --------- || DSN-01 | REQ-01 | stable |stabilityOrder: ["experimental", "review", "stable"]인 경우, stable한 DSN-01이 experimental한 REQ-01을 참조하고 있기 때문에 위반이 됩니다.
docs/design.md line 4 warning Item "REQ-01" has stability "experimental" in docs/requirements.md, but is referenced from a row with stability "stable" REF-003수정 후
섹션 제목: “수정 후”참조 측의 안정도를 의존 대상에 맞추거나, 의존 대상의 안정도를 올립니다.
docs/requirements.md:| ID | 내용 | Stability || ------ | ---------------- | --------- || REQ-01 | 사용자 등록 | stable |설정 예시
섹션 제목: “설정 예시”{ "rule": "ref003", "options": { "stabilityColumn": "Stability", "stabilityOrder": ["experimental", "review", "stable"], "definitions": "**/requirements.md", "references": ["**/design.md", "**/tests.md"], "idColumn": "ID", "idPattern": "^REQ-\\d+$" }}관련 규칙
섹션 제목: “관련 규칙”- REF-002 ID의 정의와 참조 — 안정도의 전제가 되는 ID의 정의 / 참조의 정합성
- TBL-003 허용 값 — 안정도 컬럼의 값이 허용 리스트에 포함되는지의 검증
- TBL-005 컬럼 간 제약 — 단일 파일 내에서의 안정도와 다른 컬럼의 정합성의 검증