feat(check-preservation): 편집이 핵심 칸에 측정 주장을 새로 더했는지 본다
check-core-support 는 근거 목록이 비었는데 측정을 주장하는 것을 본다. 근거가 차 있는 기록에 그 근거가 지지하지 않는 결론을 더하는 편집은 그 규칙 밖이다 — 출처가 있다는 것과 그 출처가 그 주장을 지지한다는 것은 다르다. 「측정 주장이 있으면 경고」로 가지 않았다. 그건 저장소의 정상 기록 다수에 걸리고, 모든 기록에 걸리는 경고는 어느 기록에 대해서도 아무 말을 하지 않는다. 편집이 핵심 칸에 측정 주장을 새로 더했는지만 본다 — 적용 범위 검출과 같은 모양이고 더해진 것을 본다. 판정은 check-core-support 의 목록을 그대로 불러 쓴다. 두 곳에 두면 갈린다. 판정하지 않는다. 근거가 이 주장을 지지하는지는 근거를 읽어야 알고, 그것은 검토의 몫이다. 채택 편집 100쌍에 한 번도 안 걸린다. 그 쌍들은 문제·결론 칸이 없는 조각이라 대상이 아니고, 회귀에 그것도 넣었다. 곁들여 check-core-support 에 --file 을 더했다. 다른 검사기들이 이미 받은 것이다. 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
ad055fb3b9
commit
87d70e7c80
@@ -114,9 +114,30 @@ def verify(project: str) -> tuple[techlog.Report, str | None]:
|
||||
def main() -> int:
|
||||
ap = argparse.ArgumentParser(description="핵심이 측정을 주장하는데 근거가 있는지 본다.")
|
||||
ap.add_argument("projects", nargs="*")
|
||||
ap.add_argument("--file", action="append", default=[],
|
||||
help="프로젝트 대신 기록 .md 를 직접 준다")
|
||||
ap.add_argument("--samples", type=int, default=3)
|
||||
args = ap.parse_args()
|
||||
|
||||
if args.file:
|
||||
rep = techlog.Report("파일")
|
||||
rep.facts["기록"] = len(args.file)
|
||||
for f in args.file:
|
||||
if not os.path.isfile(f):
|
||||
print(f"대상이 성립하지 않는다 — 그런 파일이 없다: {f}", file=sys.stderr)
|
||||
return 2
|
||||
check_record(os.path.abspath(f), rep)
|
||||
reports = [rep]
|
||||
for r in reports:
|
||||
print(f"\n[{r.project}] " + " · ".join(f"{k}={v}" for k, v in r.facts.items()))
|
||||
for rule, details in sorted(r.errors.items(), key=lambda kv: -len(kv[1])):
|
||||
print(f" ✗ error {len(details):>4} {rule}")
|
||||
for d in details[:args.samples]:
|
||||
print(f" · {d}")
|
||||
e = sum(r.error_count for r in reports)
|
||||
print(f"\nCORE SUPPORT: {'FAIL' if e else 'PASS'} — 기록 {len(args.file)} · error {e}")
|
||||
return 1 if e else 0
|
||||
|
||||
projects = args.projects or sorted(
|
||||
os.path.basename(os.path.dirname(p))
|
||||
for p in glob.glob(os.path.join(ROOT, "docs/*/tech-log-studio"))
|
||||
|
||||
Reference in New Issue
Block a user