# keycloak-session-store 7단계 하네스 재검토 - 검토일: 2026-09-20 - 대상: 61 Record / 31 TechViz SVG / 63 historical run ledger - 판정: **아직 더 봐야댐** ## 결론 대규모 문체 재작성은 필요 없다. `check_prose`와 `check_voice`는 61/61 PASS이고, Figure Text/Overlap/Provenance도 31/31 PASS다. historical run도 63/63 PASS다. 완료 차단은 다음 네 가지다. 1. command-pedagogy analyzer가 `bash label=...`, `sh label=...` fence를 읽지 못한다. 2. TechViz 31개 중 28개의 current SSOT context가 달라졌다. 3. `2026-09-17 재현 — 어디까지 밟았고 무엇이 막았나` 절이 tree에서 미처분 상태다. 4. `reference-look-at-the-lookup-key-before-moving-the-store.md`에 `이 기준이 선 근거.`라는 깨진 문장이 남아 있다. ## Command pedagogy Record 61개를 info string의 첫 토큰 기준으로 다시 세면 shell block은 992개이고 33개 Record에 분포한다. 이 가운데 plain fence는 8개, label metadata가 붙은 fence는 984개다. 즉 현재 analyzer가 놓치는 형식이 984/992 = 99.2%다. first-token 방식으로 기존 deterministic finding 로직을 적용했을 때 signal은 346개였다. minor 341, major 5이며 compressed-pipeline 129, command-substitution 122, hidden-stderr 48, execution-context-implicit 40, compound-remote-shell 5 등이었다. 이 346개를 모두 고치면 안 된다. label에 이미 `[lab host]`, `[kc-lab-1]`, `[test-server]`, `[dev]`, `[워크스테이션]`, `[탐침 파드]` 실행 위치가 있어서 analyzer의 execution-context signal 중 상당수는 false positive가 될 수 있다. 먼저 parser가 info string 첫 토큰을 language로 해석하고 label을 execution context로 읽게 고친 뒤 33개 Record/992 block을 다시 리뷰한다. D-4a의 `printf > /tmp/reload-nginx.sh` 형태는 실제 그날 친 historical command라고 문서가 밝히므로 삭제하지 않는다. 따라 하는 절차는 편집기 + 파일 listing으로 두고 historical block은 reference 성격으로 분리한다. ## SVG 31개 SVG의 구조 검사는 모두 PASS지만 현재 SSOT section snapshot과 일치하는 것은 `cpu-io-passthrough-paths`, `ghost-row-cleanup-order`, `guest-as-host-process` 3개뿐이다. 나머지 28개는 실제 `current_section`도 달라졌다. Keycloak에서 봤던 parent-heading false positive가 아니다. 기존 spec이 여전히 맞는지 현재 SSOT로 다시 확인하고, 맞으면 context/evidence/render만 갱신한다. 의미가 바뀐 그림만 spec을 수정한다. SVG는 손으로 편집하지 않는다. ## Tree / prose Tree의 `NEEDS_DECISION 2`, `NEEDS_EVIDENCE 12`는 모두 CONFIRMED 이유가 있어 문제 자체가 아니다. 문제는 범위 안의 `2026-09-17 재현 — 어디까지 밟았고 무엇이 막았나` 절이 어떤 candidate에도 연결되지 않은 것이다. KEEP_IN_SSOT / MERGE_INTO / PROMOTE 중 실제 역할에 맞는 disposition을 남긴다. 수동 S5 finding은 `이 기준이 선 근거.` 한 곳이다. 자연스럽게 `이 기준의 근거다.` 정도로 고친다. Relation 섹션의 반복 문형은 겹치는 곳만 선별 정리하고 전면 재작성하지 않는다. ## 원장 historical `run.json` 63개는 모두 당시 schema 계약 기준 PASS다. 현재 command quality lane은 더 새 계약이므로 과거 원장을 소급 수정하지 않는다. 실제 수정한 Record만 current remediation run을 만든다. 서브에이전트 사용 불가와 `/home/donghyeon/workspace/keycloak-pattern` 부재는 사용자와 합의한 환경 제약으로 완료 차단에서 제외한다. source reconciliation은 UNVERIFIABLE로 명시한다. ## 수정 순서 1. command analyzer parser + label context + regression test 2. 33개 Record / 992 shell block 재분석 3. high-confidence command finding만 수정 4. Tree 미처분 section 1개 분류 5. 깨진 문장 1곳 수정 6. TechViz 28개 current SSOT 기준 재검토 7. 실제 수정분만 remediation ledger 8. project gates 9. 전체 pipeline과 unittest를 순차 실행 > **keycloak-session-store = 아직 더 봐야댐**