{
  "schema_version": 1,
  "name": "Brali outcome observation policy",
  "collection_status": "instrumented",
  "description": "Ask Brali exposes explicit opt-in privacy-light retrieval feedback, the Brali Protocol Runner supports a browser path from trusted protocol start to completion and Helpful/Not helpful review, and the integration report surface can prepare a privacy-light integration event. These surfaces create local reviewable event data and transmit nothing automatically. Observed counts change only after deliberate sharing, schema/privacy review and acceptance into the public observation registry.",
  "instrumentation_scope": {
    "query_feedback": "live",
    "protocol_execution": "live",
    "integration_feedback": "live",
    "unresolved_review_queue": "live",
    "automatic_collection": false
  },
  "north_star": {
    "id": "weekly_verified_successful_executions",
    "definition": "Unique protocol runs with both a protocol_completed event and an explicit helpful_yes event in the same ISO week, using the same run_id, protocol_id, and published Brali dataset version.",
    "initial_validation_target": 25,
    "target_type": "hypothesis",
    "observed_value_must_come_from": "Reviewed, explicit opt-in observations accepted into data/outcome-observations.json. Demo events, fixtures, CI, page views, downloads, copies, repository activity and generated files never count as observed usefulness."
  },
  "automatic_collection": {
    "enabled": false,
    "network_requests_from_feedback": false,
    "cookies": false,
    "local_storage": false,
    "raw_query_storage": false,
    "user_identifier_storage": false
  },
  "opt_in_channels": [
    {
      "id": "github-issue",
      "status": "live",
      "description": "Query, Protocol Runner, and integration reporting can prepare privacy-light event data inside a GitHub issue draft. Query text is excluded from the event envelope and is off by default even when a Query draft offers a separate opt-in. The user reviews the public draft before submitting it."
    },
    {
      "id": "native-share",
      "status": "live-when-supported",
      "description": "After choosing a feedback, protocol outcome, or integration signal, the user may explicitly open the operating-system share sheet with event JSON. Brali does not choose a destination or share in the background."
    },
    {
      "id": "download",
      "status": "live",
      "description": "The user may download an event or protocol-run bundle locally after reviewing its preview. A local download is not collection and is never counted as use."
    },
    {
      "id": "manual-import",
      "status": "maintainer-only",
      "description": "A maintainer may add reviewed, consented events to the public observation registry after schema, privacy and provenance checks."
    }
  ],
  "privacy_contract": {
    "raw_query_in_event": false,
    "personal_data_in_event": false,
    "user_identifier_in_event": false,
    "prompt_text_may_be_shared_separately": "Only if a person deliberately opts in outside the event envelope after reviewing the destination. Brali does not require raw query text for outcome reporting or unresolved-review routing.",
    "minimum_context": [
      "event type",
      "event and run/query identifiers",
      "client category",
      "dataset version",
      "canonical Topic and Protocol identifiers where available",
      "trust/result state",
      "explicit feedback reason",
      "share channel and consent state"
    ]
  },
  "retention": {
    "browser": "Query feedback previews, protocol-run state, and integration event previews stay in page memory only until navigation or refresh unless the user explicitly exports or shares them.",
    "github_issue": "A deliberately submitted GitHub issue follows GitHub and repository retention controls; submission itself does not automatically create a reviewed public observation.",
    "public_observation_dataset": "Only reviewed events with explicit consent, valid provenance and no prohibited data may enter the versioned public observation registry.",
    "aggregate_report": "Aggregate reports contain counts and canonical IDs, not raw prompts or user identifiers.",
    "unresolved_review_queue": "The evaluation/editorial queue contains only accepted unresolved event categories, canonical Topic/Protocol context, dataset version, coarse client category and reviewed provenance. Raw query text and user identifiers are excluded."
  },
  "verification": {
    "accepted_observation_sources": [
      "github-issue",
      "manual-import"
    ],
    "required_for_public_observation": [
      "explicit consent",
      "valid outcome-event schema",
      "no raw query inside the event envelope",
      "no personal identifier",
      "published dataset version",
      "reviewed provenance record"
    ],
    "verified_success_rule": "Count a run only when protocol_completed and helpful_yes are both present, valid, and linked by the same run_id, protocol_id, dataset version and ISO week.",
    "unresolved_queue_rule": "Only reviewed no_trusted_answer, bad_match, and missing_knowledge events may enter the unresolved review queue. The queue must not import prompt text."
  },
  "reporting_rules": [
    "Show zero when no reviewed observations exist.",
    "Separate observed counts from hypotheses, targets, demos and fixtures.",
    "Do not infer users, completions or helpfulness from page views, downloads, generated drafts, share actions, repository activity or CI.",
    "Publish not-helpful, bad-match, no-answer and missing-knowledge outcomes when they meet the same consent, privacy and provenance boundary.",
    "Do not claim repeated use without repeated reviewed observations linked through a privacy-safe run or integration identifier.",
    "Instrumented means explicit Query feedback, Protocol Runner, integration feedback, and unresolved-review paths are live; it does not mean reviewed outcomes exist.",
    "A locally generated or exported event bundle does not affect the north-star metric until its events are deliberately shared, reviewed and accepted."
  ],
  "public_surfaces": {
    "schema": "https://brali-lifeos.github.io/contracts/outcome-event.schema.json",
    "policy": "https://brali-lifeos.github.io/life-os/datasets/outcome-policy.json",
    "observations": "https://brali-lifeos.github.io/life-os/datasets/outcome-observations.json",
    "report": "https://brali-lifeos.github.io/life-os/datasets/outcome-report.json",
    "review_queue": "https://brali-lifeos.github.io/life-os/datasets/outcome-review-queue.json",
    "human_report": "https://brali-lifeos.github.io/quality/outcomes/",
    "query_feedback": "https://brali-lifeos.github.io/for-ai/query/",
    "protocol_runner": "https://brali-lifeos.github.io/run/",
    "integration_feedback": "https://brali-lifeos.github.io/for-ai/integrations/report/"
  }
}
