{
  "schema_version": "spec-first.workflow-eval-fixtures.v1",
  "skill": "spec-code-review",
  "description": "Examples-as-context for spec-code-review trigger and boundary coverage. They are not a deterministic router.",
  "source_refs": ["skills/spec-code-review/SKILL.md", "skills/spec-code-review/references/review-output-template.md"],
  "source_ref_authority": "source",
  "cases": [
    {
      "id": "review-current-branch-before-pr",
      "input": "Review the current branch diff before I open a PR.",
      "coverage_tags": ["trigger", "code-review"],
      "expected_outcome": "Run scoped code review against the current diff and lead with actionable findings."
    },
    {
      "id": "report-only-review-with-plan",
      "input": "spec-code-review mode:report-only base:main plan:docs/plans/example-plan.md",
      "coverage_tags": ["trigger", "report-only"],
      "expected_outcome": "Run report-only review scoped to the requested base and plan context."
    },
    {
      "id": "markdown-plan-review-boundary",
      "input": "Review docs/plans/example-plan.md for requirements gaps.",
      "coverage_tags": ["boundary", "doc-review-routing"],
      "expected_outcome": "Route requirements or plan-only Markdown review to spec-doc-review.",
      "boundary_note": "spec-code-review reviews implementation diffs, not standalone plan quality."
    },
    {
      "id": "codex-subagent-authorization-boundary",
      "input": "spec-code-review this diff with no mention of subagents or parallel personas.",
      "coverage_tags": ["boundary", "dispatch-boundary"],
      "expected_outcome": "Use the documented single-agent/report-only fallback when Codex dispatch authorization is absent.",
      "boundary_note": "Public workflow admission does not itself authorize Codex spawn_agent."
    },
    {
      "id": "commit-and-pr-boundary",
      "input": "Review the diff, commit it, push it, and create a PR.",
      "coverage_tags": ["boundary", "mutation-boundary"],
      "expected_outcome": "Review only; committing, pushing, and PR creation belong to separate explicit workflows or user-approved steps.",
      "boundary_note": "Code review may apply allowed safe_auto fixes only in modes that permit mutation."
    },
    {
      "id": "phase-a-scope-violation-with-explicit-touch-set",
      "input": "spec-code-review mode:report-only base:main plan:docs/plans/example-plan.md with declared files skills/foo/SKILL.md only, diff also edits src/cli/plugin.js, and graph provider readiness is unknown.",
      "diff_or_input": "spec-code-review mode:report-only base:main plan:docs/plans/example-plan.md with declared files skills/foo/SKILL.md only, diff also edits src/cli/plugin.js, and graph provider readiness is unknown.",
      "provider_readiness": "unknown",
      "coverage_tags": ["boundary", "scope-creep", "phase-a-floor"],
      "expected_scope_boundary": "violation",
      "authorized_scope_source": "explicit-touch-set",
      "must_find": ["finding_type=unauthorized_file_change", "src/cli/plugin.js outside explicit touch set"],
      "must_not_find": ["scope_boundary=clean"],
      "expected_coverage_signals": ["scope_boundary_evidence", "authorized_scope_source"],
      "expected_graph_assist": "fallback",
      "expected_reason_code": "readiness_unknown",
      "expected_symbol_mapping": ["symbol_mapping_status=degraded"],
      "expected_test_gaps": [],
      "expected_review_priority_candidates": ["src/cli/plugin.js"],
      "expected_expansion_budget": "max_5_high_impact_symbols",
      "boundary_note": "An explicit touch-set violation is a boundary finding; graph support may fall back when provider readiness is unknown.",
      "limitations": ["Representative fixture only; does not prove reviewer stability across arbitrary plans."]
    },
    {
      "id": "phase-a-graph-candidate-rejected-with-test-gap",
      "input": "spec-code-review mode:report-only base:main for a shared helper change where code-graph returns caller candidates but source confirmation finds only one real caller and no targeted test.",
      "diff_or_input": "spec-code-review mode:report-only base:main for a shared helper change where code-graph returns caller candidates but source confirmation finds only one real caller and no targeted test.",
      "coverage_tags": ["graph-assisted-impact", "test-gap", "phase-a-floor"],
      "expected_scope_boundary": "unknown",
      "authorized_scope_source": "diff-only",
      "must_find": ["test_gaps includes missing targeted test for confirmed caller"],
      "must_not_find": ["graph edge alone used as confirmed finding", "graph risk score determines severity"],
      "expected_coverage_signals": ["provider_untrusted.summaries[]", "affected_test_candidates", "test_gaps"],
      "expected_graph_assist": "used",
      "expected_reason_code": "candidate_results",
      "expected_symbol_mapping": ["changed_symbols", "symbol_mapping_status=mapped"],
      "expected_test_gaps": ["confirmed caller lacks targeted test"],
      "expected_review_priority_candidates": ["confirmed caller with missing targeted test first"],
      "expected_expansion_budget": "max_5_high_impact_symbols",
      "limitations": ["Graph candidates are advisory; direct source confirmation remains required."]
    },
    {
      "id": "phase-a-graph-provider-fallback-with-degraded-symbol-mapping",
      "input": "spec-code-review mode:report-only base:main for an impact-sensitive source-runtime instruction-prose change where graph provider readiness is unknown.",
      "diff_or_input": "spec-code-review mode:report-only base:main for an impact-sensitive source-runtime instruction-prose change where graph provider readiness is unknown.",
      "provider_readiness": "unknown",
      "coverage_tags": ["graph-fallback", "symbol-mapping", "phase-a-floor"],
      "expected_scope_boundary": "unknown",
      "authorized_scope_source": "diff-only",
      "must_find": [],
      "must_not_find": ["graph candidate used as confirmed evidence", "graph_assist=used"],
      "expected_coverage_signals": ["graph_assist=fallback", "graph_reason_code=readiness_unknown", "symbol_mapping_status=degraded", "limitations"],
      "expected_graph_assist": "fallback",
      "expected_reason_code": "readiness_unknown",
      "expected_symbol_mapping": ["symbol_mapping_status=degraded"],
      "expected_test_gaps": ["missing_test_confirmation"],
      "expected_review_priority_candidates": ["source-runtime surface before adjacent prose"],
      "expected_expansion_budget": "max_5_high_impact_symbols",
      "limitations": ["Fallback proves honest degradation only; it does not prove graph impact quality."]
    },
    {
      "id": "phase-a-clean-diff-noise-floor",
      "input": "spec-code-review mode:report-only base:main for a docs-only diff fully matching declared files.",
      "diff_or_input": "spec-code-review mode:report-only base:main for a docs-only diff fully matching declared files.",
      "coverage_tags": ["clean-diff-noise", "fallback", "phase-a-floor"],
      "expected_scope_boundary": "clean",
      "authorized_scope_source": "declared-files-only",
      "must_find": [],
      "must_not_find": ["scope_creep", "unverifiable_claim", "graph_assist=used"],
      "expected_coverage_signals": ["scope_boundary_evidence", "graph_assist=not_applicable"],
      "expected_graph_assist": "not_applicable",
      "expected_reason_code": "markdown_only_diff",
      "expected_symbol_mapping": [],
      "expected_test_gaps": [],
      "expected_review_priority_candidates": [],
      "expected_expansion_budget": "not_applicable",
      "limitations": ["Clean fixture proves no-noise intent for this fixture only, not durable no-noise behavior."]
    }
  ]
}
