[verified] Add bounded writer-family closure checklist
This commit is contained in:
@@ -109,6 +109,18 @@ reason: <bounded Korean explanation>
|
|||||||
- 실패 경로, fail-closed, no-call·no-write boundary와 credential 비노출 조건은 positive-path test만으로 충족됐다고 판정하지 않는다.
|
- 실패 경로, fail-closed, no-call·no-write boundary와 credential 비노출 조건은 positive-path test만으로 충족됐다고 판정하지 않는다.
|
||||||
- 현재 harness에 spec-review 전용 clean worktree 계약이 없으므로 구현 Issue worktree를 spec role로 재사용하거나 임시 clone·checkout을 만들지 않는다. Reviewer가 독립 실행하지 못했다는 사실은 확인 한계로 보고하고 구현자의 결함이나 자동 `indeterminate`로 전환하지 않는다. 승인 계약이 독립 실행을 명시적으로 요구하거나 위 추가 검증 조건으로 필수 인수 판단이 어려운 경우에만 해당 조건과 최소 보완 범위를 특정한다.
|
- 현재 harness에 spec-review 전용 clean worktree 계약이 없으므로 구현 Issue worktree를 spec role로 재사용하거나 임시 clone·checkout을 만들지 않는다. Reviewer가 독립 실행하지 못했다는 사실은 확인 한계로 보고하고 구현자의 결함이나 자동 `indeterminate`로 전환하지 않는다. 승인 계약이 독립 실행을 명시적으로 요구하거나 위 추가 검증 조건으로 필수 인수 판단이 어려운 경우에만 해당 조건과 최소 보완 범위를 특정한다.
|
||||||
|
|
||||||
|
### Writer-family criterion closure checklist
|
||||||
|
|
||||||
|
기존 승인 계약의 monetary/current-cache 인수 조건이 여러 writer에 적용되는 경우에만 이 reviewer checklist를 사용한다. exact reviewed head에서 실제 존재하고 해당 계약에 적용되는 create/update/import 및 관련 writer 경로를 식별하고, 없는 API나 계약 밖의 writer를 새 요구사항으로 만들지 않는다. 한 경로의 수정·정상 test만으로 family 전체 criterion을 해소하지 않는다.
|
||||||
|
|
||||||
|
각 적용 경로를 기존 criterion의 `evidence`·`reason`에 다음 근거와 대응한다. 새 schema나 별도 제품 문서는 필요하지 않다.
|
||||||
|
|
||||||
|
- 승인 계약의 exact 근거와 현재 구현 위치: 입력 정규화, unknown과 zero 구분 및 승인된 값의 해석이 해당 writer에 어떻게 적용되는지 확인한다. Blank/null/zero 등의 정책은 해당 승인 계약에서 가져오며 reviewer가 새 금액 정책을 정하지 않는다.
|
||||||
|
- mutation/no-write 경계: 승인된 정상·오류 처리의 실제 변경 위치와 부작용 경계, 관련 test의 호출·assertions 또는 검증된 실행 근거를 확인한다. 정적 확인과 실행 evidence는 기존 provenance 규칙대로 구분한다.
|
||||||
|
- Downstream 연결: 해당 writer가 만든 값이 승인 계약의 소비 경로·현재 cache에 도달하는 위치와 근거를 대응한다. 영향 없음이나 비적용은 계약·경로에 근거한 구체적인 이유로 기록하고, 확인하지 못한 경로를 비적용으로 숨기지 않는다.
|
||||||
|
|
||||||
|
Family closure는 적용 writer 모두의 기존 필수 인수 조건이 근거로 충족될 때만 선언한다. 잔여 finding에는 exact 승인 계약, 현재 source 위치와 downstream 관계, 필요한 최소 보완을 유지한다. 별도 실행 기록 부재나 checklist 표현 부재만으로 새 blocker를 만들지 않으며 기존 `satisfied|unsatisfied|indeterminate` 판정 규칙을 적용한다. 모든 입력 조합·Cartesian 검증이나 전체 suite 재실행을 요구하지 않는다. Spec reviewer의 제품 실행 금지와 기존 evidence 재사용 조건은 유지한다. 자동 runtime checker·result schema·publisher는 추가하지 않으며 별도의 legacy financial-authority 호환성 checklist까지 확장하지 않는다.
|
||||||
|
|
||||||
## Verdict 규칙
|
## Verdict 규칙
|
||||||
|
|
||||||
### `approve`
|
### `approve`
|
||||||
|
|||||||
@@ -79,6 +79,20 @@ class PriorityReviewContracts(unittest.TestCase):
|
|||||||
with self.subTest(rule=rule):
|
with self.subTest(rule=rule):
|
||||||
self.assertIn(rule, section)
|
self.assertIn(rule, section)
|
||||||
|
|
||||||
|
def test_writer_family_documentation_contract_requires_bounded_path_evidence(self):
|
||||||
|
text = IMPLEMENTATION.read_text()
|
||||||
|
heading = '### Writer-family criterion closure checklist'
|
||||||
|
self.assertIn(heading, text)
|
||||||
|
section = text.split(heading, 1)[1].split('\n## ', 1)[0]
|
||||||
|
for rule in ('기존 승인 계약', 'monetary/current-cache', 'create/update/import',
|
||||||
|
'실제 존재', '정규화', 'unknown과 zero', 'mutation/no-write',
|
||||||
|
'downstream', 'exact reviewed head', '`evidence`·`reason`',
|
||||||
|
'family 전체', '비적용', '잔여 finding', '새 금액 정책',
|
||||||
|
'모든 입력 조합', '전체 suite 재실행', '자동 runtime checker',
|
||||||
|
'제품 실행 금지', 'legacy financial-authority'):
|
||||||
|
with self.subTest(rule=rule):
|
||||||
|
self.assertIn(rule, section)
|
||||||
|
|
||||||
def test_local_links_resolve_and_procedures_reference_new_rules(self):
|
def test_local_links_resolve_and_procedures_reference_new_rules(self):
|
||||||
for path in (DISCOVERY, IMPLEMENTATION, README):
|
for path in (DISCOVERY, IMPLEMENTATION, README):
|
||||||
text = path.read_text()
|
text = path.read_text()
|
||||||
|
|||||||
Reference in New Issue
Block a user