{
  "schema_version": "using-spec-first-routing-cases/v1",
  "skill": "using-spec-first",
  "cases": [
    {
      "id": "greeting-direct-answer",
      "name": "Greeting stays direct",
      "user_intent": "你好",
      "expected_outcome": "direct_answer",
      "public_workflow_required": false,
      "expected_entrypoint": null,
      "graphify_required": false,
      "artifact_expected": false,
      "boundary_note": "A greeting has no workflow leverage and must not create brainstorm, plan, work, or review artifacts.",
      "coverage_tags": ["routing", "boundary"]
    },
    {
      "id": "current-context-explanation-direct",
      "name": "Current context injection explanation stays direct",
      "user_intent": "当前上下文注入了哪些内容",
      "expected_outcome": "direct_answer",
      "public_workflow_required": false,
      "expected_entrypoint": null,
      "graphify_required": false,
      "artifact_expected": false,
      "boundary_note": "Explaining already-loaded context is a lightweight current-session answer unless it turns into source edits or audit work.",
      "coverage_tags": ["routing", "boundary"]
    },
    {
      "id": "narrow-where-used-bounded-read",
      "name": "Narrow where-used lookup uses bounded reads",
      "user_intent": "where is buildBootstrapBlock used?",
      "expected_outcome": "bounded_read",
      "public_workflow_required": false,
      "expected_entrypoint": null,
      "graphify_required": false,
      "artifact_expected": false,
      "boundary_note": "A narrow location lookup may use rg or precise source reads without entering a public workflow.",
      "coverage_tags": ["routing", "boundary"]
    },
    {
      "id": "current-document-summary-direct",
      "name": "Current supplied document summary stays direct",
      "user_intent": "总结我刚贴的这份文档",
      "expected_outcome": "direct_answer",
      "public_workflow_required": false,
      "expected_entrypoint": null,
      "graphify_required": false,
      "artifact_expected": false,
      "boundary_note": "Summarizing current user-provided material is not project-graph or workflow work by default.",
      "coverage_tags": ["routing", "boundary"]
    },
    {
      "id": "small-low-risk-edit-stays-direct",
      "name": "Small low-risk edit stays direct",
      "user_intent": "给 src/cli/helpers/format.js 里的 formatLabel 函数加两行日志，目标文件和改法都明确",
      "expected_outcome": "normal_execution",
      "public_workflow_required": false,
      "expected_entrypoint": null,
      "graphify_required": false,
      "artifact_expected": false,
      "boundary_note": "A clearly scoped single-point low-risk edit can be executed directly while still honoring changelog, narrow verification, and source/runtime boundaries.",
      "coverage_tags": ["routing", "boundary", "small-edit"]
    },
    {
      "id": "cross-file-contract-change-routes-work",
      "name": "Cross-file contract change routes to work",
      "user_intent": "调整 runtime artifact contract，并同步三个 CLI 模块和双宿主生成逻辑",
      "expected_outcome": "public_workflow",
      "public_workflow_required": true,
      "expected_entrypoint": "$spec-work",
      "graphify_required": false,
      "artifact_expected": true,
      "boundary_note": "Cross-file contract/runtime delivery changes need the public work workflow; the small-edit allowance does not apply.",
      "coverage_tags": ["routing", "trigger", "substantial-work"]
    },
    {
      "id": "explicit-spec-plan-honored",
      "name": "Explicit plan route remains honored",
      "user_intent": "$spec-plan deep docs/brainstorms/example-requirements.md",
      "expected_outcome": "public_workflow",
      "public_workflow_required": true,
      "expected_entrypoint": "$spec-plan",
      "graphify_required": false,
      "artifact_expected": true,
      "boundary_note": "Progressive disclosure must not weaken explicit public workflow invocation.",
      "coverage_tags": ["routing", "trigger"]
    },
    {
      "id": "codex-doc-review-no-subagents-fallback",
      "name": "Codex doc-review without subagents uses fallback",
      "user_intent": "$spec-doc-review docs/plans/example.md",
      "expected_outcome": "public_workflow",
      "public_workflow_required": true,
      "expected_entrypoint": "$spec-doc-review",
      "graphify_required": false,
      "artifact_expected": true,
      "dispatch_decision": "fallback",
      "fallback_reason": "dispatch_authorization_missing",
      "boundary_note": "Codex public workflow admission authorizes the document-review workflow, not host-level spawn_agent dispatch.",
      "coverage_tags": ["routing", "trigger", "dispatch-boundary"]
    },
    {
      "id": "skill-agent-asset-audit-routes-skill-audit",
      "name": "Skill and agent asset review routes to skill audit",
      "user_intent": "review skills/using-spec-first/SKILL.md and agents/spec-reviewer.agent.md for trigger precision and governance",
      "expected_outcome": "public_workflow",
      "public_workflow_required": true,
      "expected_entrypoint": "$spec-skill-audit",
      "graphify_required": false,
      "artifact_expected": true,
      "boundary_note": "Spec-first skill or agent asset governance review is a skill-audit workflow, not a generic code/doc review route.",
      "coverage_tags": ["routing", "trigger"]
    },
    {
      "id": "codex-spec-plan-explicit-research-personas-dispatch",
      "name": "Codex plan with explicit delegated personas may dispatch",
      "user_intent": "$spec-plan deep docs/brainstorms/example.md using delegated research agents and persona reviewers",
      "expected_outcome": "public_workflow",
      "public_workflow_required": true,
      "expected_entrypoint": "$spec-plan",
      "graphify_required": false,
      "artifact_expected": true,
      "dispatch_decision": "dispatch",
      "boundary_note": "Codex dispatch-bearing workflows may use bounded dispatch when the request itself explicitly asks for delegated/persona agent work.",
      "coverage_tags": ["routing", "trigger", "dispatch-boundary"]
    }
  ],
  "source_refs": ["skills/using-spec-first/SKILL.md"],
  "source_ref_authority": "source"
}
