문서 목차
이 페이지에서목차

/cc-spec:status — 지금 만든 것이 명세와 맞는지 Jev 에게 묻기

최신 LOCKED Seed spec 을 기준으로 AC-ID 상태를 표에서 그대로 읽어 보여 주고, `--against {file|dir|PR}` 가 있으면 Jev(판정 전용 모델)가 목표 정렬(ALIGNED/MINOR-DRIFT/MAJOR-DRIFT)·S2 제약 위반·Must AC 충족을 확률로 판정한 읽기 전용 리포트를 냅니다 — 긴 배치 전후, P...

항목내용
실행 명령/cc-spec:status
분류스펙 명확화
난이도●●○ 보통

한마디로#

이미 확정(잠금)된 핵심 명세(Seed spec)를 기준으로, 지금 만든 작업이 그 명세에서 얼마나 벗어났는지를 읽기 전용으로 진단해 주는 명령입니다. 집을 짓는 중간에 설계도를 꺼내 "기둥 위치 그대로인가, 금지한 걸 하진 않았나"를 대조하는 것과 같아요. 판정은 이 세션의 AI 가 아니라 별도의 판정 전용 모델(Jev) 이 확률로 내립니다.

누가·언제 쓰나요#

  • 잠근 명세가 있고, 특정 파일·폴더·PR 이 그 명세의 목표를 여전히 향하고 있는지 확인하고 싶을 때
  • 오래 도는 자동화(/cc-dev:batch)의 시작·끝에서 표류를 점검할 때 — batch 가 이 명령의 규약을 그대로 재사용합니다
  • 옵션 없이 실행하면 잠근 명세의 합격 기준 상태(AC-ID)를 그대로 보여 줍니다

무엇을 해주나요#

  • AC-ID 상태 표 — 명세 4번 표(합격 기준)의 ID 와 상태(PENDING/IN-PROGRESS/MET/FAILED/WAIVED)를 파싱한 그대로 보여 줍니다. 다시 판단하지 않습니다.
  • 목표 정렬 판정 (--against 시) — 작업이 핵심 문제(S1)를 향하는지 ALIGNED / MINOR-DRIFT / MAJOR-DRIFT
  • 제약 위반 — 불변 제약(S2) 하나하나에 대해 "이 작업이 어겼는가" 확률. 상한(0.15)을 넘으면 위반으로 표시하고 전체를 MAJOR-DRIFT 로 올립니다.
  • AC 충족 — Must 항목마다 "이 작업이 충족했는가" 확률(하한 0.85), Must-Not 항목마다 "금지한 일을 했는가" 확률

아무 파일도 쓰지 않습니다. 명세도, 대조한 파일도 바꾸지 않고 화면에만 출력합니다.

어떻게 쓰나요#

/cc-spec:status                          # AC-ID 상태만
/cc-spec:status --against lib/features/community/   # 폴더와 대조
/cc-spec:status --against docs/prd-community.md     # 파일과 대조
/cc-spec:status --against 412                       # PR 번호 → diff 와 대조
/cc-spec:status --against-diff origin/main...HEAD   # git 범위와 대조

안에서 무슨 일이 벌어지나요#

  1. 잠근 명세 찾기 — 가장 최근 docs/seed-spec-*.md 중 Status: LOCKED 를 읽습니다. 없으면 "먼저 /cc-spec:verify --lock" 안내 후 종료.
  2. AC 상태 표 출력 — 스크립트가 표를 파싱해 그대로 보여 줍니다.
  3. 대조 대상 모으기 (--against 시) — 파일·폴더 내용 또는 PR/git diff 를 읽어 명세와 함께 JSON 으로 묶습니다. 너무 크면(3만 2천 자 초과) 보내지 않고 판정 불가(UNVERIFIED)로 멈추며 범위를 좁히라고 합니다.
  4. Jev 판정 — 정렬 1문항 + 제약 수만큼 + AC 수만큼의 질문을 한 번에 보내 확률을 받습니다.
  5. 리포트 — 정렬 판정, 위반 목록, 미충족 Must 목록을 표로 출력합니다. 키가 없거나 답이 빠지면 UNVERIFIED 로 표시하고, 이를 "정렬됨"으로 읽지 않습니다.

⚙️ 상세 옵션·실행 명세 (개발자 / AI 에이전트용)

Usage#

/cc-spec:status
/cc-spec:status --against {file|dir}
/cc-spec:status --against {PR-number}
/cc-spec:status --against-diff {git-range}

Behavior: READ-ONLY#

This command writes nothing. It loads state, calls Jev, and prints a report.

Parameters#

ParameterDescriptionDefault
--againstfile, directory, or PR number to judge against the seednone (AC echo only)
--against-diffgit range passed to git diffnone

Execution Flow#

JJ="${CLAUDE_PLUGIN_ROOT}/skills/jev-gate/scripts/jev_judge.py"
SEED=$(grep -l "Status: LOCKED" docs/seed-spec-*.md 2>/dev/null | tail -1)

1. Load Locked Seed#

  • No LOCKED seed → print guidance (/cc-spec:verify --lock) and exit. Write nothing.

2. AC-ID Status Echo (from S4, parsed)#

python3 "$JJ" parse "$SEED"     # → s4_acceptance[{id,type,criterion,status}]
  • Print | AC-ID | Type | Criterion | Status | verbatim. This is an echo of recorded state, not a re-judgment.

3. Judge against work (only with --against / --against-diff)#

  • PR number → gh pr diff {N} > /tmp/pr-{N}.diff then --against /tmp/pr-{N}.diff.
python3 "$JJ" judge --set drift --spec "$SEED" --against {path} > /tmp/jev-status.json
# or: --against-diff origin/main...HEAD
# exit 0 ALIGNED · 2 MINOR-DRIFT / MAJOR-DRIFT · 3 UNVERIFIED
  • Questions sent (skills/jev-gate/questions/drift.json): goal_alignment (choice) + violates_C-NN (noul, max 0.15) per S2 row + met_AC-NN (noul, min 0.85) per Must row + violates_AC-NN (noul, max 0.15) per Must-Not row
    • met_AC-NN (info) per May row.
  • set_results.drift carries verdict, goal_alignment{choice,confidence}, constraint_violations[], unmet_must[], ac_results{}.
  • A state over 32,000 chars is not sent: the verdict is UNVERIFIED with a size reason. Narrow --against (Jev: one domain per request) — a diluted verdict would not be trustworthy anyway.

4. Emit Report (no writes)#

  1. AC-ID status table.
  2. Goal alignment: ALIGNED / MINOR-DRIFT / MAJOR-DRIFT with Jev's choice + confidence (only with a target).
  3. S2 violations: each violates_C-NN with probability; "no violations" if none over 0.15.
  4. Must AC coverage: each met_AC-NN with probability; unmet list.
  5. UNVERIFIED (exit 3): print the reason and stop. Never render UNVERIFIED as ALIGNED.

Consumers#

  • /cc-dev:batch Phase 0.5 (pre-batch / post-final-merge seed-alignment checkpoint) reuses this protocol verbatim: pauses (interactive) or warns-and-continues (unattended) on MAJOR-DRIFT, and treats UNVERIFIED the same way — never as a pass.
  • /cc-spec:verify — verification + lock (the seed must be LOCKED for status to run)
  • /cc-spec:evolve — evolve the locked seed when MAJOR-DRIFT is the spec's fault, not the work's

References#

  • skills/jev-gate/SKILL.md — jev_judge.py, fail-closed rules
  • skills/jev-gate/questions/drift.json — question texts and assertions
  • config/thresholds.yaml → drift:

검색어를 입력하면 문서를 찾습니다.

↑ ↓ 이동 · Enter 열기Esc 닫기