feat: 가상화 문서들 추가

This commit is contained in:
DongHyeonka
2026-09-10 08:54:05 +09:00
parent e9f6a93327
commit 43e1aadef0
695 changed files with 153404 additions and 12754 deletions
+36 -1
View File
@@ -9,6 +9,13 @@ from pathlib import Path
REQUIRED_PATHS = (
# 스킬 — 분석에서 게시까지
".agents/skills/running-tech-log-pipeline/SKILL.md",
".agents/skills/running-tech-log-pipeline/references/stage-contracts.md",
".agents/skills/running-tech-log-pipeline/references/subagent-prompts.md",
".agents/skills/running-tech-log-pipeline/templates/run.json",
".agents/skills/publishing-tech-log-to-studio/SKILL.md",
".agents/skills/publishing-tech-log-to-studio/references/studio-form-map.md",
".agents/skills/publishing-tech-log-to-studio/references/playwright-recipes.md",
".agents/skills/analyzing-codebase-for-tech-log/SKILL.md",
".agents/skills/deriving-tech-log-root-tree/SKILL.md",
".agents/skills/deriving-tech-log-root-tree/references/decomposition-checklist.md",
@@ -30,6 +37,9 @@ REQUIRED_PATHS = (
".agents/skills/rewriting-technical-prose-naturally/references/research-method.md",
".agents/skills/rewriting-technical-prose-naturally/scripts/check_prose.mjs",
".agents/skills/rewriting-technical-prose-naturally/scripts/style_profile.mjs",
".agents/skills/writing-as-the-person-who-did-it/SKILL.md",
".agents/skills/writing-as-the-person-who-did-it/references/voice-moves.md",
".agents/skills/writing-as-the-person-who-did-it/scripts/check_voice.mjs",
".agents/skills/technical-visualizer/SKILL.md",
".agents/skills/refactoring-from-analysis/SKILL.md",
# 프로젝트 폴더 틀 — 끝난 프로젝트의 모양. 작업 재료는 여기 없다
@@ -52,6 +62,8 @@ REQUIRED_PATHS = (
"scripts/build-tech-log-tree.py",
"scripts/techlog.py",
"scripts/verify-tech-log-tree.py",
"scripts/verify-pipeline-run.py",
"scripts/check-figure-overlap.py",
"scripts/verify-project-layout.py",
"scripts/fold-analysis-into-final.py",
"scripts/fold-studio-contract-into-index.py",
@@ -253,6 +265,17 @@ def verify_layouts(shared_root: Path) -> list:
return [verifier.verify(name) for name in projects]
def verify_runs(shared_root: Path):
"""`runs/<프로젝트>/<runId>/run.json` 이 절차를 지켰는지 본다.
원장이 없는 것은 정상이다 — 파이프라인을 한 줄기로 돌린 적이 없다는 뜻이다.
있는데 안 지킨 것만 잡는다.
"""
module = _load(shared_root, "verify-pipeline-run.py", "verify_pipeline_run")
ledgers = sorted((shared_root / "runs").glob("*/*/run.json"))
return [module.verify(str(p)) for p in ledgers]
def main() -> int:
parser = argparse.ArgumentParser(description="Verify the Tech Log documentation pipeline workspace.")
parser.add_argument("shared_root", nargs="?", type=Path,
@@ -265,7 +288,10 @@ def main() -> int:
errors = verify_pipeline(args.shared_root)
reports = [] if args.skip_projects else verify_projects(args.shared_root)
layouts = [] if args.skip_projects else verify_layouts(args.shared_root)
project_errors = sum(r.error_count for r in reports) + sum(r.error_count for r in layouts)
runs = [] if args.skip_projects else verify_runs(args.shared_root)
project_errors = (sum(r.error_count for r in reports)
+ sum(r.error_count for r in layouts)
+ sum(r.error_count for r in runs))
if errors:
print("PIPELINE CONTRACT: FAIL")
@@ -287,6 +313,15 @@ def main() -> int:
for report in layouts:
verifier_render(report, args.samples)
if runs:
run_errors = sum(r.error_count for r in runs)
print()
print(f"PIPELINE RUNS: {'FAIL' if run_errors else 'PASS'}"
f" — 런 {len(runs)} · error {run_errors} ·"
f" warn {sum(r.warn_count for r in runs)}")
for report in runs:
verifier_render(report, args.samples)
if reports:
tree_errors = sum(r.error_count for r in reports)
print()