{
  "product": "Skillrove",
  "countingUnit": "eligible unique visitor sessions \u2014 draft definition",
  "cohortDefinition": "A future, agreed observation window for sessions seeing an assigned variant. No user counts or analytics were supplied for this plan.",
  "activation": "draft-only",
  "designStatus": "requires-review-before-activation",
  "assignment": {
    "unit": "eligible unique visitor sessions \u2014 draft definition",
    "method": "Choose an eligible-cohort randomization method before launch",
    "stickyRule": "Keep the assigned variant stable for the declared unit and experiment version; do not reassign on reload",
    "ratio": null
  },
  "exposure": {
    "when": "Emit only after the eligible assigned variant is actually rendered/visible; assignment alone is not exposure",
    "denominator": "Deduplicated exposed counting units, analyzed by originally assigned variant"
  },
  "attribution": {
    "join": "Link assignment, exposure and success within the same declared counting unit using the existing consented pseudonymous analytics convention",
    "sessionBoundary": "Specify session expiry and cross-session behavior before launch; do not join unrelated sessions silently",
    "identityPolicy": "No raw email, name, account credentials or URL query data; identity collection is not enabled by this tool"
  },
  "deduplication": {
    "assignment": "One assignment per experiment version and counting unit",
    "exposure": "One exposure per experiment version, variant and counting unit",
    "stages": "Count at most one qualifying success per stage and counting unit within the selected success window; retries use an idempotency key"
  },
  "successWindow": {
    "durationSeconds": null,
    "startsAt": "first qualifying exposure",
    "requiredDecision": "Select and document the window before launch; report late/missing outcomes separately"
  },
  "events": [
    {
      "name": "skillrove_experiment_assigned",
      "when": "Eligible counting unit receives a sticky randomized variant",
      "properties": {
        "experiment_id": "experiment key",
        "experiment_version": "fixed design version",
        "variant": "control or variant"
      }
    },
    {
      "name": "skillrove_experiment_exposed",
      "when": "Assigned variant is actually rendered/visible",
      "properties": {
        "experiment_id": "same experiment key",
        "experiment_version": "same fixed version",
        "variant": "assigned variant"
      }
    },
    {
      "name": "skill_detail_view",
      "when": "First qualifying detail-page view for an assigned session",
      "stageId": "entry",
      "properties": {
        "experiment_id": "an assigned experiment key or absent",
        "variant": "control or assigned variant",
        "page_path": "a public path without identity/query data"
      }
    },
    {
      "name": "skill_example_open",
      "when": "An eligible detail-view session opens the corresponding working example",
      "stageId": "preview",
      "properties": {
        "experiment_id": "an assigned experiment key or absent",
        "variant": "control or assigned variant",
        "page_path": "a public path without identity/query data"
      }
    },
    {
      "name": "skill_purchase_intent",
      "when": "A previously exposed and example-engaged session starts the selected purchase flow",
      "stageId": "intent",
      "properties": {
        "experiment_id": "an assigned experiment key or absent",
        "variant": "control or assigned variant",
        "page_path": "a public path without identity/query data"
      }
    },
    {
      "name": "skill_access_granted",
      "when": "Server-authoritative access grant for the selected skill after an actual completed purchase; success-page visits are insufficient",
      "stageId": "fulfillment",
      "properties": {
        "experiment_id": "an assigned experiment key or absent",
        "variant": "control or assigned variant",
        "page_path": "a public path without identity/query data"
      }
    }
  ],
  "acceptance": [
    "Choose assignment ratio, success window, session boundary, guardrails and stopping decision before activation",
    "Verify one eligible assignment and one actual exposure; check reloads do not reassign or double-count",
    "Join outcomes to the same exposed unit and variant; exercise duplicate/retry and late-success cases",
    "Use the actual server fulfillment event for a completed purchase/download, not a success-page visit",
    "Review consent, retention and existing analytics conventions before implementation"
  ]
}
