{
  "schema_version": "spec-first.spec-plan-consumer-replay-cases.v1",
  "skill": "spec-plan",
  "description": "Source-only replay cases for unified Markdown/HTML plans across spec-plan, spec-work, and thin goal handoff consumers.",
  "source_refs": [
    "skills/spec-plan/SKILL.md",
    "skills/spec-plan/references/plan-sections.md",
    "skills/spec-plan/references/plan-handoff.md",
    "skills/spec-plan/references/planning-evidence-boundaries.md",
    "skills/spec-work/SKILL.md",
    "skills/spec-work/references/execution-engines.md"
  ],
  "source_ref_authority": "source",
  "fresh_source_protocol": {
    "authorization_required": true,
    "not_run_reason_code": "dispatch_authorization_missing",
    "checklist": "docs/contracts/workflows/fresh-source-eval-checklist.md",
    "source_injection": "Inject current canonical skill/reference source plus one fixture and its manifest oracle into a fresh read-only generic reviewer with minimal inherited context.",
    "mandatory_case_ids": [
      "markdown-requirements-only-spec-plan",
      "markdown-requirements-only-spec-work",
      "markdown-requirements-only-goal-handoff",
      "markdown-implementation-ready-spec-plan",
      "markdown-implementation-ready-spec-work",
      "markdown-implementation-ready-goal-handoff",
      "html-requirements-only-spec-plan",
      "html-requirements-only-spec-work",
      "html-requirements-only-goal-handoff",
      "html-implementation-ready-spec-plan",
      "html-implementation-ready-spec-work",
      "html-implementation-ready-goal-handoff"
    ],
    "oracles": [
      "artifact classification",
      "consumer route",
      "stable section selection",
      "mutation policy",
      "thin objective deletion test"
    ],
    "paired_rerun": "Repeat any disagreement once with the same source bundle and oracle; unresolved disagreement is concerns, not pass.",
    "claim_levels": [
      "mechanical source contract",
      "fresh-source semantic judgment",
      "host invocation/loader observation",
      "field outcome"
    ]
  },
  "cases": [
    {
      "id": "markdown-requirements-only-spec-plan",
      "input": "Enrich the Markdown requirements-only fixture without replacing its Product Contract.",
      "coverage_tags": ["consumer-replay", "markdown", "requirements-only", "spec-plan"],
      "expected_outcome": "Enrich the same Markdown artifact to implementation-ready while preserving Product Contract IDs and semantics.",
      "fixture": "fixtures/consumer-replay/requirements-only.md",
      "format": "markdown",
      "readiness": "requirements-only",
      "execution": "code",
      "consumer": "spec-plan",
      "expected_classification": "unified-requirements-only",
      "expected_route": "enrich-in-place",
      "required_sections": ["goal-capsule", "product-contract"],
      "forbidden_sections": ["planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "planning-owned decision absent until enrichment",
      "mutation_policy": "markdown-write",
      "handoff_eligibility": false,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "markdown-requirements-only-spec-work",
      "input": "Ask spec-work to execute the Markdown requirements-only fixture.",
      "coverage_tags": ["consumer-replay", "markdown", "requirements-only", "spec-work"],
      "expected_outcome": "Reject code execution and return the exact spec-plan enrichment route.",
      "fixture": "fixtures/consumer-replay/requirements-only.md",
      "format": "markdown",
      "readiness": "requirements-only",
      "execution": "code",
      "consumer": "spec-work",
      "expected_classification": "unified-requirements-only",
      "expected_route": "spec-plan-enrichment",
      "required_sections": ["goal-capsule", "product-contract"],
      "forbidden_sections": ["planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "no executor-owned architecture decision",
      "mutation_policy": "markdown-write",
      "handoff_eligibility": false,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "markdown-requirements-only-goal-handoff",
      "input": "Request a goal objective from the Markdown requirements-only fixture.",
      "coverage_tags": ["consumer-replay", "markdown", "requirements-only", "goal-handoff"],
      "expected_outcome": "Suppress goal creation because the artifact is not implementation-ready.",
      "fixture": "fixtures/consumer-replay/requirements-only.md",
      "format": "markdown",
      "readiness": "requirements-only",
      "execution": "code",
      "consumer": "goal-handoff",
      "expected_classification": "unified-requirements-only",
      "expected_route": "not-eligible",
      "required_sections": ["goal-capsule", "product-contract"],
      "forbidden_sections": ["planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "no posture copied into an objective",
      "mutation_policy": "markdown-write",
      "handoff_eligibility": false,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "markdown-implementation-ready-spec-plan",
      "input": "Review and hand off the Markdown implementation-ready fixture.",
      "coverage_tags": ["consumer-replay", "markdown", "implementation-ready", "spec-plan"],
      "expected_outcome": "Preserve the implementation-ready artifact, run Markdown review, and offer execution handoff only after review closure.",
      "fixture": "fixtures/consumer-replay/implementation-ready.md",
      "format": "markdown",
      "readiness": "implementation-ready",
      "execution": "code",
      "consumer": "spec-plan",
      "expected_classification": "unified-implementation-ready-code",
      "expected_route": "review-and-handoff",
      "required_sections": ["goal-capsule", "product-contract", "planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "forbidden_sections": [],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "compose existing capabilities through bounded thin glue",
      "mutation_policy": "markdown-write",
      "handoff_eligibility": true,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "markdown-implementation-ready-spec-work",
      "input": "Ask spec-work to execute the Markdown implementation-ready fixture.",
      "coverage_tags": ["consumer-replay", "markdown", "implementation-ready", "spec-work"],
      "expected_outcome": "Accept code execution and map stable sections before reading the active unit and cited Product Contract IDs.",
      "fixture": "fixtures/consumer-replay/implementation-ready.md",
      "format": "markdown",
      "readiness": "implementation-ready",
      "execution": "code",
      "consumer": "spec-work",
      "expected_classification": "unified-implementation-ready-code",
      "expected_route": "execute-section-map",
      "required_sections": ["goal-capsule", "product-contract", "planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "forbidden_sections": [],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "read the composition KTD from Planning Contract without inventing executor schema",
      "mutation_policy": "markdown-write",
      "handoff_eligibility": true,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "markdown-implementation-ready-goal-handoff",
      "input": "Generate a thin goal objective for the Markdown implementation-ready fixture.",
      "coverage_tags": ["consumer-replay", "markdown", "implementation-ready", "goal-handoff"],
      "expected_outcome": "Emit a plan-agnostic objective that references the plan path and stable sections without copying resolved decisions.",
      "fixture": "fixtures/consumer-replay/implementation-ready.md",
      "format": "markdown",
      "readiness": "implementation-ready",
      "execution": "code",
      "consumer": "goal-handoff",
      "expected_classification": "unified-implementation-ready-code",
      "expected_route": "emit-thin-objective",
      "required_sections": ["goal-capsule", "planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "forbidden_sections": [],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "do not copy compose or thin-glue details into the objective",
      "mutation_policy": "markdown-write",
      "handoff_eligibility": true,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "html-requirements-only-spec-plan",
      "input": "Enrich the HTML requirements-only fixture without changing its Product Contract.",
      "coverage_tags": ["consumer-replay", "html", "requirements-only", "spec-plan"],
      "expected_outcome": "Recompose the same exclusive HTML artifact to implementation-ready and preserve stable Product Contract IDs and semantics.",
      "fixture": "fixtures/consumer-replay/requirements-only.html",
      "format": "html",
      "readiness": "requirements-only",
      "execution": "code",
      "consumer": "spec-plan",
      "expected_classification": "unified-requirements-only",
      "expected_route": "enrich-in-place",
      "required_sections": ["goal-capsule", "product-contract"],
      "forbidden_sections": ["planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "planning-owned decision absent until enrichment",
      "mutation_policy": "report-only",
      "handoff_eligibility": false,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "html-requirements-only-spec-work",
      "input": "Ask spec-work to execute the HTML requirements-only fixture.",
      "coverage_tags": ["consumer-replay", "html", "requirements-only", "spec-work"],
      "expected_outcome": "Reject code execution and return the exact spec-plan enrichment route.",
      "fixture": "fixtures/consumer-replay/requirements-only.html",
      "format": "html",
      "readiness": "requirements-only",
      "execution": "code",
      "consumer": "spec-work",
      "expected_classification": "unified-requirements-only",
      "expected_route": "spec-plan-enrichment",
      "required_sections": ["goal-capsule", "product-contract"],
      "forbidden_sections": ["planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "no executor-owned architecture decision",
      "mutation_policy": "report-only",
      "handoff_eligibility": false,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "html-requirements-only-goal-handoff",
      "input": "Request a goal objective from the HTML requirements-only fixture.",
      "coverage_tags": ["consumer-replay", "html", "requirements-only", "goal-handoff"],
      "expected_outcome": "Suppress goal creation because the artifact is not implementation-ready.",
      "fixture": "fixtures/consumer-replay/requirements-only.html",
      "format": "html",
      "readiness": "requirements-only",
      "execution": "code",
      "consumer": "goal-handoff",
      "expected_classification": "unified-requirements-only",
      "expected_route": "not-eligible",
      "required_sections": ["goal-capsule", "product-contract"],
      "forbidden_sections": ["planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "no posture copied into an objective",
      "mutation_policy": "report-only",
      "handoff_eligibility": false,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "html-implementation-ready-spec-plan",
      "input": "Review and hand off the HTML implementation-ready fixture.",
      "coverage_tags": ["consumer-replay", "html", "implementation-ready", "spec-plan"],
      "expected_outcome": "Run report-only review, preserve the HTML bytes, and offer execution handoff only after producer-owned closure.",
      "fixture": "fixtures/consumer-replay/implementation-ready.html",
      "format": "html",
      "readiness": "implementation-ready",
      "execution": "code",
      "consumer": "spec-plan",
      "expected_classification": "unified-implementation-ready-code",
      "expected_route": "review-and-handoff",
      "required_sections": ["goal-capsule", "product-contract", "planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "forbidden_sections": [],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "compose existing capabilities through bounded thin glue",
      "mutation_policy": "report-only",
      "handoff_eligibility": true,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "html-implementation-ready-spec-work",
      "input": "Ask spec-work to execute the HTML implementation-ready fixture.",
      "coverage_tags": ["consumer-replay", "html", "implementation-ready", "spec-work"],
      "expected_outcome": "Accept code execution and map stable anchors before reading the active unit and cited Product Contract IDs.",
      "fixture": "fixtures/consumer-replay/implementation-ready.html",
      "format": "html",
      "readiness": "implementation-ready",
      "execution": "code",
      "consumer": "spec-work",
      "expected_classification": "unified-implementation-ready-code",
      "expected_route": "execute-section-map",
      "required_sections": ["goal-capsule", "product-contract", "planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "forbidden_sections": [],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "read the composition KTD from Planning Contract without inventing executor schema",
      "mutation_policy": "report-only",
      "handoff_eligibility": true,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    },
    {
      "id": "html-implementation-ready-goal-handoff",
      "input": "Generate a thin goal objective for the HTML implementation-ready fixture.",
      "coverage_tags": ["consumer-replay", "html", "implementation-ready", "goal-handoff"],
      "expected_outcome": "Emit a plan-agnostic objective that references the plan path and stable sections without copying resolved decisions.",
      "fixture": "fixtures/consumer-replay/implementation-ready.html",
      "format": "html",
      "readiness": "implementation-ready",
      "execution": "code",
      "consumer": "goal-handoff",
      "expected_classification": "unified-implementation-ready-code",
      "expected_route": "emit-thin-objective",
      "required_sections": ["goal-capsule", "planning-contract", "implementation-units", "verification-contract", "definition-of-done"],
      "forbidden_sections": [],
      "product_contract_ids": ["A1", "A2", "R1", "R2", "R3", "F1", "F2", "AE1", "AE2"],
      "architecture_posture_expectation": "do not copy compose or thin-glue details into the objective",
      "mutation_policy": "report-only",
      "handoff_eligibility": true,
      "evidence_level": "mechanical source contract",
      "missing_evidence": ["fresh-source semantic judgment", "host invocation/loader observation", "field outcome"]
    }
  ]
}
