Skip to content

docs(references): 지식 거버넌스 흡수 — 멱등 쓰기·감사 모드·신선도 계약#430

Merged
JeremyDev87 merged 3 commits into
masterfrom
feature/knowledge-idempotency-audit
Jul 3, 2026
Merged

docs(references): 지식 거버넌스 흡수 — 멱등 쓰기·감사 모드·신선도 계약#430
JeremyDev87 merged 3 commits into
masterfrom
feature/knowledge-idempotency-audit

Conversation

@JeremyDev87

Copy link
Copy Markdown
Owner

무엇을 (What)

지식 거버넌스 reference 2종을 추가·확장합니다.

  • references/wiki-growth-triage.md (양 root must-match): Idempotent knowledge writes 절(의미 기준 동일성 판정, 재관찰은 upsert·같은 출처 no-op, 승격/폐기 이력 재적립 금지, 사후 중복은 병합으로 회복)과 Knowledge audit mode 절(9종 검사, 보고 → 승인 → 일괄 수정 2단계) 추가
  • references/knowledge-freshness-contract.md (신규, 양 root must-match): last-verified 의미론, 문서 종류별 stale 임계, 외부 증류물 upstream identity 기록, co-change 검사, 소급 적용 비범위 명시

왜 (Why)

기존 wiki-growth-triage는 "중복이면 인용하라"까지만 규정하고 이미 새어 들어간 중복의 회복 절차내용 수준 감사 절차가 없었습니다. 또한 43개 reference에 신선도 메타데이터가 전혀 없어 durable 문서가 조용히 낡는 것을 관측할 수단이 없었습니다. 사외 공개 스펙(OKF v0.1) 기반 지식 번들 워크플로우의 현장 관찰에서 검증된 패턴을 일반화해 흡수합니다.

어떻게 (How)

  • 추가 내용이 retro/setwiki 토큰 예산(headroom ~100 tokens)을 초과하여 4키를 ceiling 내에서 재조정 (claude retro 14000→14500 · setwiki 13000→13500, codex retro 12500→13500 · setwiki 13500→14000; ceiling 21000/19500/19000/20500 대비 여유 충분)
  • 신선도 계약은 required_references 배선 대신 예산 exemption(ci(gate): 토큰 예산 게이트가 conditional gate reference 미측정 — coverage 강제 및 절대 상한 [High] #283) + wiki-growth-triage 감사 pointer 경유 on-demand 로드(cap 800, 실측 591 tokens)로 설계 — 예산 재소모 없이 필요 시점에만 로드
  • parity ledger에 must-match로 등록, 커밋 2개 직렬 구성(확장 / 신설)

검증 (Validation)

  • npm run verify (verify-package) 통과 — token budget admission·doctor 게이트 포함
  • npm test smoke 70/70 통과
  • npm run verify:projections 통과 (parity ledger 56 entries)
  • npm run verify:codex-skill 통과
  • ddalggak doctor 0 findings (orphan-reference reachability 포함)
  • git diff --check clean

제외 범위 (Out of scope)

Refs #428

JeremyDev87 and others added 2 commits July 3, 2026 15:51
재관찰된 지식의 upsert 멱등성(의미 기준 동일성, 같은 출처 무변경,
승격/폐기 이력 재적립 금지, 사후 중복은 병합)과 지식 표면 전수 감사
9종 검사(보고→승인→일괄수정 2단계)를 wiki-growth-triage에 추가한다.
추가분이 retro/setwiki 예산을 초과해 4키를 ceiling 내에서 재조정한다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ultraworked-With: claude-fable-5
User-Request: PR 관찰에서 검증된 지식 거버넌스 패턴을 ddalggak에 흡수 (멱등 CRUD·감사)
durable 문서의 신선도 규칙(last-verified 의미, 종류별 stale 임계,
외부 증류물 upstream identity, co-change 검사)을 신규 reference로
추가한다. retro/setwiki 예산 재소모를 피해 required_references 배선
대신 wiki-growth-triage 감사 pointer 경유 on-demand 로드로 두고,
parity ledger(must-match)와 예산 exemption(cap 800)에 등록한다.
기존 문서 소급 stamping은 비범위 — 별도 기계적 rollout의 몫이다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ultraworked-With: claude-fable-5
User-Request: 신선도 계약은 규칙만 흡수 (소급 stamping 제외)

@JeremyDev87 JeremyDev87 left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

REVIEW_DONE PR#430 head=06c4ab05 verdict=approve blockers=0

Review scope: 6파일 (references 2종 × 2 root, core/projections.yaml, core/token-budgets.yaml) — diff footprint가 PR body 선언 범위와 일치.

Validation evidence (독립 리뷰어 재현 실행):

  • npm test 70/70 pass · npm run verify:projections pass (56 parity entries) · npm run verify:codex-skill pass · npm run verify pass · ddalggak doctor 0 findings · git diff --check clean
  • 양 root must-match 2종 byte-identical 실측 확인
  • 토큰 실측: freshness-contract 591/cap 800 (headroom 26%) · 예산 4키 실측 14106/14500 · 13105/13500 · 12924/13500 · 13715/14000 — 전부 구예산 초과였으므로 인상 필수, ceiling 이내

Findings: Medium 1건 (inline, 비차단 — 신선도 마커 표기 포맷 미정의). Critical/High 0.

비차단 메모 / 경계 4항목
  • 비차단 메모 1: core/token-budgets.yaml:20의 "#266 recalibration" 헤더 주석은 선행 예산 변경 PR들부터 누적 부정확 (repo 기존 패턴, 이 PR 고유 결함 아님). 이 PR이 신설하는 Co-change check의 적용 사례이므로 후속에서 "Baseline: #266; individual keys adjusted by later PRs within ceilings"로 완화 권장.
  • 비차단 메모 2: exemption(on-demand) 분리 설계 근거 성립 확인 — 절 삽입 시 4키 추가 +~600×4 인상이 필요했고, contract의 적용 범위가 wiki-growth-triage보다 넓음.
  • CI/check: head 06c4ab0 기준 7/7 terminal pass (Verify package Node 18/20/22/24, CodeQL, Analyze JS, Dependency Review, Budget isolation gate).
  • Formal review/branch protection: 저자 계정 세션이므로 formal APPROVE 불가 — 본 top-level comment가 verdict 정본.
  • Merge blocker: 없음 (Medium 1건은 비차단).
  • Human action: draft 해제 후 manual merge는 사람 몫. merge/auto-merge는 수행하지 않음.


## Last-verified, not created

A freshness timestamp records when the document's claims were last verified against live state, not when the text was written. Editing prose without re-verifying claims does not refresh it.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Medium] 계약이 last-verified의 의미론과 임계값은 정의하지만 표기 방법(마커 필드명·포맷·위치)과 surface가 임계값을 선언하는 메커니즘을 정의하지 않습니다. 이로 인해 wiki-growth-triage 감사 항목 7이 기계적으로 실행 불가능하고, out-of-scope로 미룬 소급 rollout도 스탬핑할 포맷이 없어 사이징이 불가합니다.

Suggested change
A freshness timestamp records when the document's claims were last verified against live state, not when the text was written. Editing prose without re-verifying claims does not refresh it.
A freshness timestamp records when the document's claims were last verified against live state, not when the text was written. Record it as a `Last-verified: YYYY-MM-DD (<evidence>)` line directly under the admission header; a surface declares thresholds or stricter overrides the same way (e.g. `Freshness-threshold: 90d`). Editing prose without re-verifying claims does not refresh it.

@JeremyDev87 JeremyDev87 marked this pull request as ready for review July 3, 2026 08:20
@JeremyDev87 JeremyDev87 self-assigned this Jul 3, 2026
리뷰 지적대로 last-verified 의미론만 있고 표기 포맷이 없어 감사
항목이 기계 실행 불가했다. admission header 직하의
`Last-verified: YYYY-MM-DD (<evidence>)` 라인과
`Freshness-threshold: <N>d` 선언 형식을 계약에 명시한다.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Ultraworked-With: claude-fable-5
User-Request: 리뷰 suggestion 적용하고 머지 진행
@JeremyDev87

Copy link
Copy Markdown
Owner Author

REVIEW_DONE PR#430 head=1575cc1 verdict=approve blockers=0

fix iter1 (medium_fixed=1) 재리뷰: delta는 knowledge-freshness-contract.md 양 root 1문단(+2/-2)뿐 — scope 확장 없음, suggestion 의도(마커 필드명·위치·임계 선언 메커니즘) 충족, 양 root byte-identical 재실측, 토큰 640/cap 800, npm run verify pass. CI 7/7 terminal pass (head 1575cc1). 사용자 명시 지시에 따라 머지를 진행합니다.

@JeremyDev87 JeremyDev87 merged commit 6929644 into master Jul 3, 2026
8 checks passed
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.

1 participant