harness-boundary-checklisted
Install: claude install-skill jjackkun/claude-harness-hermes
# Harness Boundary Check
## R1: 실행 모드 격리 검사
### 금지 패턴
`once/`, `scheduled/`, `realtime/` 디렉터리는 서로 import 금지.
공통 코드는 반드시 `shared/` 에 위치해야 한다.
```python
# BAD — once 에서 scheduled import
from app.execution.scheduled.runner import run_schedule # ❌
# GOOD — shared 경유
from app.execution.shared.execution_repo import create_running # ✓
```
### 검사 방법 (AST 기반)
```bash
# Python: once → scheduled/realtime cross-import 검사
python3 - <<'PY'
import ast, sys
from pathlib import Path
modes = ["once", "scheduled", "realtime"]
violations = []
for mode in modes:
others = [m for m in modes if m != mode]
for f in Path(f"backend/app/execution/{mode}").rglob("*.py"):
tree = ast.parse(f.read_text())
for node in ast.walk(tree):
if isinstance(node, (ast.Import, ast.ImportFrom)):
src = getattr(node, "module", "") or ""
for other in others:
if f"execution.{other}" in src:
violations.append(f"{f}: imports {src}")
if violations:
print("❌ R1 위반:")
for v in violations: print(f" {v}")
sys.exit(1)
else:
print("✓ R1 경계 clean")
PY
```
```bash
# TypeScript/Svelte: 프론트엔드 경계 검사
npx eslint --rulesdir .eslint-rules src/lib/features/kanban/ 2>&1 | grep "boundary"
```
### 발견 시 행동 규칙
1. **즉시 중단** — 현재 작업을 멈춘다
2. **보고** — "R1 경계 위반 발견: [파일]:[라인]" 을 사용자에게 알린다
3. **수정 제안** — 위반 import를 `shared/` 로 이동하는 방법을 제시한다
4. **우회 금지** — `eslint-disable`, `# noqa`, `--no-verify` 로 숨기지 않는다
---