chore(rebar): Pier_T_rebar 작업 폴더 초기 구성 및 외부 의존 파일 통합

- Code\rebar_pipeline, review_pipeline, pier-program을 정션에서 실제 폴더로 전환
- Code\rhino_mcp 및 CLAUDE_rhino배경.md 추가, .mcp.json은 PYTHONPATH로 새 위치 사용
- pier-program 내부 .git 제거(이력은 backup\pier-program_20261028.bundle에 보관)
- worktree 가이드 반영(CLAUDE.local.md, HANDOFF.md)
- D:\Rhino-MCP 경로 참조를 새 위치로 치환

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ahnyongjooandClaude Sonnet 5.5 committed 2026-10-28 11:20:18 +09:00
commit 964a841de1
3978 files changed
+58013356

No files matched your search

@@ -0,0 +1,31 @@
"""CLI: write the review report draft (.md + .pdf + report_check.json) for a pier run folder.
usage: python make_report.py <pier data dir> [<run dir>] [--author 이름]
run dir defaults to <pier data dir>/runs/current. Gates whose recorded inputs hash differs from the current
params/expected are reported as void (same rule as the web app).
"""
import argparse
import sys
from pathlib import Path
APP = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(APP))
sys.path.insert(0, str(APP / "web"))
from engine import report_files # noqa: E402
from engine.pipeline import gate_ids # noqa: E402
import store # noqa: E402
if __name__ == "__main__":
ap = argparse.ArgumentParser()
ap.add_argument("pier")
ap.add_argument("run", nargs="?")
ap.add_argument("--author", default="")
a = ap.parse_args()
pier = Path(a.pier).resolve()
run = Path(a.run).resolve() if a.run else pier / "runs" / "current"
cur = store.sha([store.rjson(pier / "params.json"), store.rjson(pier / "expected.json")])
stale = {g for g in gate_ids()
if (rep := store.rjson(run / f"{g}_gate.json")) and rep.get("inputs_sha") not in (None, cur)}
out = report_files.write(pier, run, a.author, stale)
print(out["md"], "\n", out["pdf"], "\n", out["check"])
sys.exit(0 if out["check"]["ok"] else 1)