feat(studio-save): 검토로 보낸다는 것은 저장이 막힌다는 뜻이어야 한다
시도 1 이 「8건이 PASS 로 나가지 않는다」를 세웠는데 코드 3건에 대해서만 성립했다. 경고는 실렸는데 그것을 읽고 막는 코드가 없었다. 검토로 라우팅한다는 것이 실제로는 경고를 붙여서 통과시키는 것이었다. 막지 않으면 라우팅이 아니라 주석이다. 경고가 있으면 항목마다 판정을 받고 전부 PASS 일 때만 저장이 나간다. 판정 파일이 없으면 거절한다 — 검토를 안 받은 것과 검토가 통과시킨 것은 같은 결과일 수 없다. 판정이 안 붙은 경고가 있어도 거절한다 — 빠뜨린 것과 통과시킨 것은 다르다. FAIL 과 UNKNOWN 은 둘 다 막되 문구가 갈린다. 근거가 모자라 판정을 못 한 것과 근거를 읽고 틀렸다고 본 것은 다음에 할 일이 다르다. 판정이 어느 경고에 붙은 것인지 정하려고 경고에 키를 붙였고, 그 키를 읽는 코드를 같은 변경에 넣었다. 내용이 바뀌면 키도 바뀌어 옛 판정이 다른 경고에 붙지 않는다. 경고가 없으면 판정 파일 없이 그대로 나간다. 정상은 이 게이트에 안 걸린다 — 채택 편집 100쌍에서 91쌍이 판정 없이 나가고 9쌍이 판정을 받아야 한다. 판정을 받아야 한다는 것은 막힌다는 뜻이 아니다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q4vKjQo9KKBBokzxqXLCfk
This commit is contained in:
co-authored by
Claude Opus 5
parent
845ee89054
commit
20c8535169
@@ -220,9 +220,20 @@ def build(project: str, record: str, figures_dir: str | None = None,
|
||||
|
||||
warnings: list[dict] = []
|
||||
preservation = _preservation(before, rec_abs) if before else {"available": False}
|
||||
|
||||
def _warn(entry: dict) -> None:
|
||||
"""경고에 안정 키를 붙여 담는다.
|
||||
|
||||
판정이 **어느 경고에 붙은 것인지** 정해져야 저장 게이트가 대조할 수 있다.
|
||||
내용이 바뀌면 키도 바뀐다 — 다른 경고에 옛 판정이 붙지 않는다.
|
||||
읽는 쪽은 `scripts/studio-save.py` 의 `_review_gate` 다.
|
||||
"""
|
||||
seed = "|".join(str(entry.get(k, "")) for k in ("id", "detail", "asset"))
|
||||
entry["key"] = hashlib.sha256(seed.encode("utf-8")).hexdigest()[:12]
|
||||
warnings.append(entry)
|
||||
if preservation.get("available"):
|
||||
for h in preservation["hedgesDropped"]:
|
||||
warnings.append({
|
||||
_warn({
|
||||
"id": "유보 감소",
|
||||
"detail": f"{h['word']} {h['before']}회 → {h['after']}회",
|
||||
"sentence": h.get("sentence", ""),
|
||||
@@ -230,7 +241,7 @@ def build(project: str, record: str, figures_dir: str | None = None,
|
||||
"덜어 낼 만했던 것인지는 근거를 읽어야 안다",
|
||||
})
|
||||
for f in preservation.get("warnings", []):
|
||||
warnings.append({
|
||||
_warn({
|
||||
"id": f"보호 구간 {f['change']}",
|
||||
"detail": f"{f['kind']} — {f['value'][:80]}",
|
||||
"sentence": f.get("sentence", ""),
|
||||
|
||||
Reference in New Issue
Block a user