[{"id": 21226, "html_url": "https://gitea.hmac.kr/Kyeongmin/C.E.L_Slide_test2/issues/58#issuecomment-21226", "pull_request_url": "", "issue_url": "https://gitea.hmac.kr/Kyeongmin/C.E.L_Slide_test2/issues/58", "user": {"id": 28, "login": "Kyeongmin", "login_name": "", "source_id": 0, "full_name": "이경민", "email": "kyeongmin@noreply.localhost", "avatar_url": "https://gitea.hmac.kr/avatars/d883a35f9197b080b2a0c535c3f9357dcd5c7d40b3c42bd8f40218cb94609a8e", "html_url": "https://gitea.hmac.kr/Kyeongmin", "language": "", "is_admin": false, "last_login": "0001-01-01T00:00:00Z", "created": "2025-12-30T10:51:04+09:00", "restricted": false, "active": false, "prohibit_login": false, "location": "", "website": "", "description": "", "visibility": "public", "followers_count": 0, "following_count": 0, "starred_repos_count": 1, "username": "Kyeongmin"}, "original_author": "", "original_author_id": 0, "body": "[Claude #1] Stage 1 — Problem review for #58 [P5][DORMANT-TRIGGER-GUARD]\n\n## 1. Root cause\nClosed-but-still-binding dormant items (`documented:dormant` / `documented (deferred)` / `documented`) hold implicit trigger contracts — \"when X happens, take Y\". Three detection layers exist conceptually: (L1) human memory — fragile; (L2) periodic INTEGRATION-AUDIT — late; (L3) machine-readable registry + automated check — **absent today**. #58 builds L3.\n\nConcrete dormant population (post-#56, verified against `docs/architecture/PHASE-Z-IMPLEMENTATION-ISSUE-BACKLOG.md`):\n- L67 IMP-16 → `documented:dormant`\n- L68 IMP-17 → `documented (deferred)`\n- L69 IMP-18 → `documented`\n- L70 IMP-19 → `documented`\n- L71 IMP-20 → `documented` (followup-linked to open #55)\n\nIMP-07 (L51 `documented:no-runtime`) is **out of scope** — policy decline, reactivation = reopening separate policy issue, not a code-change trigger. Issue body confirms: \"Initial entries: #16, #17, #18, #19 + #20 followup-linked\".\n\n## 2. Scope-lock (5 implementation units, binding)\n\n| u | files (CREATE unless noted) | trigger source anchors |\n|---|---|---|\n| u1 | `docs/architecture/DORMANT-TRIGGERS.yaml` | issue body table; IMP-16-U2-WIRING-DESIGN.md L24 (#16 pattern); IMP-18-SVG-GAP-REPORT.md L32 (#18 pattern) |\n| u2 | `scripts/check_dormant_triggers.py` | issue body §P5-2 spec |\n| u3 | **EDIT** `orchestrator.py` — add `_check_dormant_triggers()` helper + new branch in `run_stage` parallel to P4a (orchestrator.py:1406–1431 = model) | issue body §P5-3 |\n| u4 | `tests/orchestrator_unit/test_dormant_triggers.py` (≥ 8 cases) | issue body §P5-4; existing test_audit_mode.py = pattern model |\n| u5 | **EDIT** `docs/architecture/PROJECT-INTENT-AND-GOVERNANCE.md` (single reference line near §8 anti-patterns row \"문서에 박힌 dormant 항목 자동 실행 안 됨\"); **CREATE** header comment in u1 yaml | issue body §P5-1 acceptance |\n\n**Initial registry entries (u1)**: 4 active dormants (#16/#17/#18/#19) + 1 followup-linked note (#20). Each entry's content_patterns/file_patterns sourced from the dormant's reference doc, NOT from this issue:\n- #16: file_patterns=`src/**/*.py`; content_patterns=`html_to_slide_mdx|edited_html_to_mdx|reverse_path|html-to-mdx` (per IMP-16-U2-WIRING-DESIGN.md L24); manual_evidence_required=false.\n- #17: manual_evidence_required=**true** (3-cond AND: User GO ∧ B4 frame_selection evidence ∧ IMP-04/05 live — gate is human, not file-detectable).\n- #18: file_patterns=`templates/phase_z2/families/*.html|templates/phase_z2/frames/*.html`; content_patterns=`