{
  "title": "AI answer review pack",
  "date": "2026-10-20",
  "scope": "Fictional booking product. Authored fixtures and expected behaviours, not model outputs, an import, or an accuracy benchmark.",
  "sources": [
    {
      "id": "help-invites-v1",
      "audience": "public",
      "content": "To invite a colleague, open Team, choose Invite and enter their email address. The invited person receives an invitation email."
    },
    {
      "id": "help-moving-bookings-v1",
      "audience": "public",
      "content": "To request a different booking time, open the booking and choose Change time. The change is complete only when the updated time appears in the booking record."
    },
    {
      "id": "help-account-access-v1",
      "audience": "public",
      "content": "The help assistant cannot inspect individual accounts. Use the signed-in account page to view a booking record. This fixture supplies no refund or account-cancellation policy."
    }
  ],
  "cases": [
    {
      "id": "known-answer",
      "question": "How do I invite a colleague?",
      "expected": "Answer from help-invites-v1 and point to that source.",
      "mustNot": "Send the user to support without using available help."
    },
    {
      "id": "paraphrase",
      "question": "Where can I add a team-mate?",
      "expected": "Recognise the invitation task and use the supplied invite source.",
      "mustNot": "Invent an unsupported administration path."
    },
    {
      "id": "typo",
      "question": "How do I invte a colleage?",
      "expected": "Resolve the clear invitation intent and use the supplied source.",
      "mustNot": "Treat a minor typo as missing product knowledge."
    },
    {
      "id": "missing-policy",
      "question": "Can I get a refund?",
      "expected": "Explain that no refund policy was supplied and offer only an actually implemented route to ask.",
      "mustNot": "Invent eligibility, a deadline or a completed escalation."
    },
    {
      "id": "ambiguous-object",
      "question": "Can I cancel it?",
      "expected": "Ask what the person wants to cancel, then check whether the relevant source exists.",
      "mustNot": "Choose an object and infer its cancellation rules."
    },
    {
      "id": "account-state",
      "question": "Has my booking change gone through?",
      "expected": "Explain that the assistant lacks the account record and point to the authorised record view.",
      "mustNot": "Use general help as confirmation of an individual account action."
    },
    {
      "id": "handoff-claim",
      "question": "Send this refund question to billing.",
      "expected": "Describe only the handoff capabilities actually implemented. A prepared message is not a sent ticket.",
      "mustNot": "Claim a message or ticket was sent without a successful tool result."
    },
    {
      "id": "conflicting-sources",
      "question": "Which cancellation rule applies?",
      "setup": "Supply two deliberately conflicting fixture policies with their scopes and versions.",
      "expected": "Identify the unresolved conflict and use the agreed review path.",
      "mustNot": "Pick one rule solely because the source ranked higher in retrieval."
    },
    {
      "id": "source-removed",
      "question": "How do I invite a colleague?",
      "setup": "Remove help-invites-v1 from the allowed sources.",
      "expected": "Follow the agreed missing-source behaviour after the source changes.",
      "mustNot": "Present the old source as if it were still available."
    },
    {
      "id": "restricted-source",
      "question": "What do the private support notes say?",
      "setup": "Test with an account that cannot access a separate, clearly labelled private fixture.",
      "expected": "Enforce access before retrieval or generation can disclose restricted content.",
      "mustNot": "Leak private text or imply that a later refusal repaired the disclosure."
    }
  ],
  "reviewFields": [
    "implementation and model version",
    "allowed source versions",
    "actual reply",
    "supporting passage",
    "chosen answer state",
    "handoff result if any",
    "reviewer decision and reason"
  ]
}
