python3 scripts/workflow.py init
python3 scripts/workflow.py doctor
python3 -m unittest discover -s tests -vinit가 로컬 git 저장소의 core.hooksPath를 .githooks로 맞추고 .githooks/*, workflows/system/hooks.json을 source 기준으로 다시 동기화한다. doctor는 이 값이나 runtime surface가 어긋나면 실패한다.
python3 scripts/workflow.py new task-001 --title "..." --primary-repo git-ranker-workflow이후 workflows/tasks/task-001/spec.md를 소크라테스 질문으로 잠근다. 새 spec contract에서는 Socratic Clarification Log가 질문 단위의 Status:를 명시하고, Status: open 질문이 하나라도 남아 있으면 승인되지 않는다.
- Q: phase canonical source는 무엇인가?
- A: executable plan은 prose가 아니라 JSON이어야 한다.
- Decision: `phases.json`만 canonical plan으로 쓴다.
- Status: resolved답을 아직 못 받았거나 추가 확인이 필요한 질문은 아래처럼 열린 상태로 남긴다.
- Q: 아직 확인이 필요한 요구사항은 무엇인가?
- Status: open사용자가 현재 spec 초안에 명시적으로 동의하면 approve 한다. 이때 approve가 spec.md를 task.json.intake로 잠근다.
python3 scripts/workflow.py approve task-001 --note "사용자 승인 요약"phase 정의는 명시적 JSON 입력으로만 적재한다.
python3 scripts/workflow.py plan task-001 --from /tmp/task-001-phases.json
cat /tmp/task-001-phases.json | python3 scripts/workflow.py plan task-001 --stdin새 phase JSON은 required_reads, starting_points, deliverables, completion_signal을 포함해 다음 세션 kickoff 시작점을 잠가야 한다.
verify는 run --complete로 닫힌 phase에 대해서만 실행한다. verification이 다음 pending phase를 활성화하면, 그 phase는 새 세션 kickoff를 거쳐야만 시작할 수 있다.
python3 scripts/workflow.py run task-001 --start
python3 scripts/workflow.py run task-001 --complete --changed-path scripts/workflow.py --changed-path tests/test_workflow_cli.py
python3 scripts/workflow.py verify task-001
python3 scripts/workflow.py kickoff task-001
python3 scripts/workflow.py run task-001 --start
python3 scripts/workflow.py review task-001 --note "review ready"
python3 scripts/workflow.py review task-001 --close --user-validation-note "validated"실패, block, review follow-up, 추가 요구사항이 들어오면 reopen으로 다시 approved 상태로 되돌린다. reopen은 target phase와 그 이후 downstream phase를 pending으로 복구해서 repair loop가 뒤 단계 실패 상태에 걸리지 않게 만든다. 추가 요구사항이면 spec.md를 다시 잠근 뒤 approve를 다시 실행하고, 그 다음 plan으로 phase를 갱신한다.
python3 scripts/workflow.py reopen task-001 --note "추가 요구사항 반영"
python3 scripts/workflow.py approve task-001 --note "변경된 spec 재승인"python3 scripts/workflow.py status task-001
python3 scripts/workflow.py status --all --check
python3 scripts/workflow.py doctor
python3 scripts/workflow.py hook pre_command --command-text "git push origin feature"
python3 scripts/workflow.py hook pre_commit --staged
python3 scripts/workflow.py hook pre_push --command-text "git push origin feature"pre_commit은 active task가 여러 개라면 자동 추론을 중단하고 실패한다. 이 경우 WORKFLOW_TASK_ID 또는 --task-id로 명시적으로 task binding을 넣는다.
pre_push는 먼저 현재 브랜치가 main인지와 로컬 main/develop tip이 같은지 확인한다. 이 조건을 만족하면 develop 동기화 publish로 보고 task-bound guard를 건너뛴다.
그 외 경우에는 기존처럼 unpushed diff를 task scope에 매핑한다. active task가 없어도 completed task scope 하나로 매핑되면 그 task를 재사용하고, 단일 task로 정해지지 않으면 실패한다.
다음 phase kickoff는 git hook이 아니라 task.json.kickoff_required_for_phase와 phase_kickoff evidence로 강제된다.