spec-runner 1.0.11 → 1.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-runner",
3
- "version": "1.0.11",
3
+ "version": "1.0.12",
4
4
  "description": "フェーズ駆動で設計先行を強制。npx で .spec-runner を展開し、次のステップ .md に従って進める",
5
5
  "license": "MIT",
6
6
  "bin": {
@@ -297,6 +297,13 @@ schema_drift_check() {
297
297
 
298
298
  run_health_check() {
299
299
  local drifts=()
300
+ local current_phase=0
301
+
302
+ # フェーズに応じてチェック強度を段階適用する
303
+ if [[ -x ".spec-runner/scripts/spec-runner-core.sh" ]] && command -v jq >/dev/null 2>&1; then
304
+ current_phase="$(.spec-runner/scripts/spec-runner-core.sh --json 2>/dev/null | jq -r '.phase // 0' 2>/dev/null)"
305
+ [[ -n "$current_phase" && "$current_phase" != "null" ]] || current_phase=0
306
+ fi
300
307
 
301
308
  UC_ROOT="$(get_steps_common_doc "uc_root")"
302
309
  DOMAIN_ROOT="$(get_steps_common_doc "domain_root")"
@@ -317,16 +324,20 @@ run_health_check() {
317
324
  grep -qE '^## タスク一覧|^## タスク\\b' "$f" 2>/dev/null || drifts+=("UC ${base}: 「## タスク」または「## タスク一覧」の見出しがありません(UC 仕様書の一番下に記載すること)")
318
325
  done
319
326
 
320
- adr_count=$(find "$ARCH_ROOT/設計判断記録" -name "*.md" 2>/dev/null | wc -l)
321
- [[ "${adr_count:-0}" -lt 1 ]] && drifts+=("ADR が 1 件もありません(設計判断記録)")
322
-
323
- if [[ ! -f "$DOMAIN_ROOT/ユビキタス言語辞書.md" ]]; then
324
- drifts+=("ユビキタス言語辞書.md が存在しません")
325
- else
326
- grep -qE '禁止語|forbidden' "$DOMAIN_ROOT/ユビキタス言語辞書.md" 2>/dev/null || drifts+=("ユビキタス言語辞書に禁止語欄が定義されていません")
327
+ if [[ "$current_phase" -ge 3 ]]; then
328
+ adr_count=$(find "$ARCH_ROOT/設計判断記録" -name "*.md" 2>/dev/null | wc -l)
329
+ [[ "${adr_count:-0}" -lt 1 ]] && drifts+=("ADR が 1 件もありません(設計判断記録)")
327
330
  fi
328
- if [[ -f "$DOMAIN_ROOT/集約.md" ]]; then
329
- grep -q '対応テーブル' "$DOMAIN_ROOT/集約.md" 2>/dev/null || drifts+=("集約.md に「対応テーブル」欄がありません")
331
+
332
+ if [[ "$current_phase" -ge 2 ]]; then
333
+ if [[ ! -f "$DOMAIN_ROOT/ユビキタス言語辞書.md" ]]; then
334
+ drifts+=("ユビキタス言語辞書.md が存在しません")
335
+ else
336
+ grep -qE '禁止語|forbidden' "$DOMAIN_ROOT/ユビキタス言語辞書.md" 2>/dev/null || drifts+=("ユビキタス言語辞書に禁止語欄が定義されていません")
337
+ fi
338
+ if [[ -f "$DOMAIN_ROOT/集約.md" ]]; then
339
+ grep -q '対応テーブル' "$DOMAIN_ROOT/集約.md" 2>/dev/null || drifts+=("集約.md に「対応テーブル」欄がありません")
340
+ fi
330
341
  fi
331
342
 
332
343
  if [[ ! -f ".spec-runner/grade-history.json" ]]; then
@@ -334,13 +345,15 @@ run_health_check() {
334
345
  elif command -v jq >/dev/null 2>&1; then
335
346
  grade=$(jq -r '.current_grade' .spec-runner/grade-history.json)
336
347
  [[ -n "$grade" && "$grade" != "null" ]] || drifts+=("grade-history.json の current_grade が未設定です")
337
- if [[ "$grade" == "A" ]]; then
348
+ if [[ "$grade" == "A" && "$current_phase" -ge 4 ]]; then
338
349
  [[ ! -f "$INFRA_ROOT/schema.dbml" ]] && drifts+=("Grade A 必須: schema.dbml が存在しません")
339
350
  schema_sync_check >/dev/null 2>&1 || drifts+=("Prisma と schema.dbml のテーブルが一致していません(スキーマ同期チェック)")
340
351
  fi
341
352
  fi
342
353
 
343
- [[ ! -f "$OPENAPI_PATH" ]] && drifts+=("openapi.yaml が存在しません")
354
+ if [[ "$current_phase" -ge 3 ]]; then
355
+ [[ ! -f "$OPENAPI_PATH" ]] && drifts+=("openapi.yaml が存在しません")
356
+ fi
344
357
 
345
358
  if [[ ${#drifts[@]} -eq 0 ]]; then
346
359
  ok "健全性確認: 問題なし"