{
  "$schema": "./test-strategy-schema.json",
  "schemaVersion": "1.0.0",
  "strategy": {
    "id": "STRATEGY-SERVICE-REQUESTS",
    "version": "2.1.0",
    "title": "Fictional service-request quality strategy",
    "ownerRole": "Quality strategy owner",
    "status": "reviewed",
    "baselineDate": "2026-08-01",
    "reviewCadenceDays": 90,
    "nextReviewDate": "2026-10-30",
    "exampleFictional": true
  },
  "productContext": {
    "productClasses": ["web application", "workflow service", "provider integration"],
    "qualityPrinciples": [
      "Prioritize user, business, data, and recovery risk before test volume",
      "Use the lowest layer that answers the quality decision with useful feedback",
      "Pair automation with human exploration and accountable review",
      "Keep technical observations separate from specialist assurance, business acceptance, and release authority"
    ],
    "exclusions": [
      "Release-specific scope, schedule, gates, environments, suites, runs, defects, and production smoke",
      "Individual test-case steps, expected results, actual results, or verdicts",
      "Requirement lifecycle trace links and change-impact records",
      "Representative-user UAT criteria, acceptance decisions, or sign-off",
      "Security or accessibility certification and release authorization"
    ]
  },
  "qualityObjectives": [
    {
      "id": "OBJ-RELIABILITY",
      "qualityCharacteristic": "reliability",
      "decisionQuestion": "Can one request preserve a single durable decision through retries and partial failure?",
      "targetDirection": "Reduce duplicate, lost, and unreconciled outcomes",
      "accountableRole": "Engineering owner",
      "evidenceClass": "version-bound state and recovery observations"
    },
    {
      "id": "OBJ-SECURITY",
      "qualityCharacteristic": "security and privacy",
      "decisionQuestion": "Do actor, tenant, provider, and data boundaries fail closed under misuse and change?",
      "targetDirection": "Reduce unauthorized access and sensitive-data exposure",
      "accountableRole": "Security owner",
      "evidenceClass": "technical control observations plus separate specialist assessment"
    },
    {
      "id": "OBJ-USABILITY",
      "qualityCharacteristic": "usability and accessibility",
      "decisionQuestion": "Can intended users understand status, recover from errors, and complete the journey with supported access needs?",
      "targetDirection": "Reduce avoidable task failure and exclusion",
      "accountableRole": "Product owner",
      "evidenceClass": "behavioral observations plus separate accessibility and UAT evidence"
    },
    {
      "id": "OBJ-OPERABILITY",
      "qualityCharacteristic": "operability and performance",
      "decisionQuestion": "Can the team detect degradation, preserve service, and recover under representative load and failure?",
      "targetDirection": "Reduce undetected degradation and unrecoverable operations",
      "accountableRole": "Operations owner",
      "evidenceClass": "trend, rehearsal, load, monitoring, and recovery observations"
    }
  ],
  "risks": [
    {
      "id": "RISK-DUPLICATE",
      "title": "A retry creates two durable decisions",
      "likelihood": 3,
      "impact": 5,
      "exposure": 15,
      "trigger": "A write path, provider contract, or idempotency boundary changes",
      "mitigation": "Exercise contracts, state transitions, concurrency, retry, reconciliation, and recovery in the applicable release plan",
      "residualOwnerRole": "Service owner",
      "objectiveIds": ["OBJ-RELIABILITY", "OBJ-OPERABILITY"]
    },
    {
      "id": "RISK-AUTHORIZATION",
      "title": "An actor can observe or change another tenant's request",
      "likelihood": 2,
      "impact": 5,
      "exposure": 10,
      "trigger": "Roles, tenancy, sharing, APIs, imports, or support tooling change",
      "mitigation": "Combine boundary-focused technical coverage with threat review and qualified security verification",
      "residualOwnerRole": "Security owner",
      "objectiveIds": ["OBJ-SECURITY"]
    },
    {
      "id": "RISK-STATUS-COMPREHENSION",
      "title": "A user misreads the request state or cannot recover from an error",
      "likelihood": 4,
      "impact": 3,
      "exposure": 12,
      "trigger": "Journey, status language, validation, interaction, or support patterns change",
      "mitigation": "Use model-based functional coverage, exploratory charters, accessibility evaluation, and separate representative-user acceptance",
      "residualOwnerRole": "Product owner",
      "objectiveIds": ["OBJ-USABILITY"]
    },
    {
      "id": "RISK-DEGRADATION",
      "title": "Load or provider degradation becomes an undetected service failure",
      "likelihood": 3,
      "impact": 4,
      "exposure": 12,
      "trigger": "Traffic, provider, queue, persistence, timeout, retry, or monitoring assumptions change",
      "mitigation": "Maintain representative performance models, provider-failure simulations, observability checks, and bounded recovery rehearsals",
      "residualOwnerRole": "Operations owner",
      "objectiveIds": ["OBJ-RELIABILITY", "OBJ-OPERABILITY"]
    }
  ],
  "coverageModel": [
    {
      "id": "COVERAGE-STATE",
      "riskIds": ["RISK-DUPLICATE", "RISK-STATUS-COMPREHENSION"],
      "objectiveIds": ["OBJ-RELIABILITY", "OBJ-USABILITY"],
      "testLevel": "component, integration, and system",
      "testType": "functional and reliability",
      "techniques": ["state transition", "decision table", "boundary value", "error guessing"],
      "accountableRole": "Quality engineering owner",
      "reviewTrigger": "Workflow, validation, persistence, or retry semantics change"
    },
    {
      "id": "COVERAGE-AUTHORIZATION",
      "riskIds": ["RISK-AUTHORIZATION"],
      "objectiveIds": ["OBJ-SECURITY"],
      "testLevel": "integration and system",
      "testType": "security boundary and functional",
      "techniques": ["role and resource matrix", "negative path", "threat-informed exploration"],
      "accountableRole": "Security owner",
      "reviewTrigger": "Identity, role, tenancy, sharing, API, or support boundaries change"
    },
    {
      "id": "COVERAGE-JOURNEY",
      "riskIds": ["RISK-STATUS-COMPREHENSION"],
      "objectiveIds": ["OBJ-USABILITY"],
      "testLevel": "system and experience",
      "testType": "exploratory, usability, and accessibility",
      "techniques": ["journey model", "exploratory charter", "assistive-technology evaluation"],
      "accountableRole": "Product quality owner",
      "reviewTrigger": "Journey, language, layout, input, error, or supported technology changes"
    },
    {
      "id": "COVERAGE-PERFORMANCE",
      "riskIds": ["RISK-DEGRADATION"],
      "objectiveIds": ["OBJ-OPERABILITY"],
      "testLevel": "system and service",
      "testType": "performance and resilience",
      "techniques": [
        "representative load model",
        "stress transition",
        "failure injection",
        "trend review"
      ],
      "accountableRole": "Performance owner",
      "reviewTrigger": "Traffic, capacity, query, queue, provider, or timeout assumptions change"
    },
    {
      "id": "COVERAGE-RECOVERY",
      "riskIds": ["RISK-DUPLICATE", "RISK-DEGRADATION"],
      "objectiveIds": ["OBJ-RELIABILITY", "OBJ-OPERABILITY"],
      "testLevel": "service and operations",
      "testType": "recovery and observability",
      "techniques": [
        "fault model",
        "restore rehearsal",
        "reconciliation review",
        "monitoring scenario"
      ],
      "accountableRole": "Operations owner",
      "reviewTrigger": "Storage, backup, deployment, monitoring, alert, or recovery contracts change"
    }
  ],
  "automationPortfolio": [
    {
      "id": "AUTO-STATE-MODEL",
      "candidate": "State and retry contract checks",
      "layer": "component and integration",
      "decision": "automate",
      "rationale": "Deterministic transitions are high-risk, change frequently, and need fast diagnostic feedback",
      "ownerRole": "Quality engineering owner",
      "maintenanceTrigger": "State, validation, persistence, or idempotency contracts change"
    },
    {
      "id": "AUTO-AUTHZ-MATRIX",
      "candidate": "Role and resource boundary matrix",
      "layer": "integration and system",
      "decision": "hybrid",
      "rationale": "Stable authorization assertions benefit from automation while threat exploration needs qualified human review",
      "ownerRole": "Security owner",
      "maintenanceTrigger": "Roles, resources, tenancy, support, sharing, or API exposure changes"
    },
    {
      "id": "AUTO-JOURNEY",
      "candidate": "Critical request journey checks",
      "layer": "system",
      "decision": "hybrid",
      "rationale": "A small stable journey catches regressions, while comprehension and accessibility require human observation",
      "ownerRole": "Product quality owner",
      "maintenanceTrigger": "Journey, status language, input, error, or supported access needs change"
    },
    {
      "id": "AUTO-LOAD-MODEL",
      "candidate": "Representative load and degradation scenarios",
      "layer": "service",
      "decision": "selective",
      "rationale": "Repeatable baselines are useful, but traffic models, costs, and external-provider constraints need reviewed scheduling",
      "ownerRole": "Performance owner",
      "maintenanceTrigger": "Traffic, capacity, workload mix, provider, infrastructure, or cost assumptions change"
    }
  ],
  "environmentDataPolicy": [
    {
      "id": "ENV-LOCAL",
      "environmentClass": "local",
      "allowedDataClassifications": ["synthetic", "fabricated"],
      "productionLike": false,
      "ordinaryExecutionAllowed": true,
      "readOnly": false,
      "resetOrIsolation": "Use disposable state and versioned local fixtures",
      "ownerRole": "Engineering owner"
    },
    {
      "id": "ENV-PREVIEW",
      "environmentClass": "preview",
      "allowedDataClassifications": ["synthetic", "fabricated"],
      "productionLike": false,
      "ordinaryExecutionAllowed": true,
      "readOnly": false,
      "resetOrIsolation": "Isolate by reserved tenant and reset versioned fixtures after each bounded activity",
      "ownerRole": "Platform owner"
    },
    {
      "id": "ENV-STAGING",
      "environmentClass": "staging",
      "allowedDataClassifications": ["synthetic", "fabricated"],
      "productionLike": true,
      "ordinaryExecutionAllowed": true,
      "readOnly": false,
      "resetOrIsolation": "Use production-like configuration with sanitized synthetic data and a reviewed reset contract",
      "ownerRole": "Platform owner"
    },
    {
      "id": "ENV-PRODUCTION",
      "environmentClass": "production",
      "allowedDataClassifications": ["none"],
      "productionLike": true,
      "ordinaryExecutionAllowed": false,
      "readOnly": true,
      "resetOrIsolation": "No ordinary strategy execution or fixture writes; separately authorized read-only checks only",
      "ownerRole": "Operations owner"
    }
  ],
  "evidencePolicy": {
    "acceptedReferenceSchemes": ["https://evidence.example.test/", "./evidence/"],
    "requiredMetadata": [
      "strategy version",
      "release plan version",
      "product version",
      "environment ID",
      "captured time",
      "tool or reviewer version",
      "redaction state"
    ],
    "retentionPolicy": "Retain according to the reviewed product, incident, privacy, and legal policies; this fictional pack sets no universal duration",
    "redactionPolicy": "Remove secrets and personal data before storage, export, or review; use reserved example.test references here",
    "reviewOwnerRole": "Quality strategy owner"
  },
  "governance": {
    "reviewCadenceDays": 90,
    "changeTriggers": [
      "Material product, architecture, dependency, provider, or delivery-model change",
      "New regulated, personal, financial, safety, or high-impact data or decision",
      "Repeated escaped defect, ineffective control, monitoring gap, or recovery failure",
      "Quality objective, risk exposure, environment, traffic, supported-user, or compliance context change"
    ],
    "decisionOwners": [
      "Quality strategy owner",
      "Engineering owner",
      "Product owner",
      "Security owner",
      "Operations owner"
    ],
    "exceptions": [
      {
        "id": "EXCEPTION-LEGACY-ADAPTER",
        "scope": "Legacy adapter exploratory depth pending replacement",
        "reason": "Replacement is scheduled, but residual authorization and recovery risks remain explicitly owned",
        "ownerRole": "Engineering owner",
        "reviewBy": "2026-09-01",
        "expiresOn": "2026-10-01"
      }
    ]
  },
  "boundaries": {
    "definesReleaseTestPlan": false,
    "containsTestCasesOrExecutions": false,
    "actsAsTraceabilityMatrix": false,
    "signsOffUat": false,
    "authorizesRelease": false,
    "certifiesSecurityOrAccessibility": false
  }
}
