{
  "id": "desiremetric-ai-text-v1",
  "version": 1,
  "published_date": "2026-10-09",
  "status": "proposed_not_run",
  "completed_runs": 0,
  "scope": "A narrow English text-conversation test; no claim about intimacy, emotional benefit, safety, voice or media quality.",
  "design": {
    "providers": [
      "Candy AI",
      "Kupid AI"
    ],
    "runs_per_provider_configuration": 3,
    "turns_per_run": 8,
    "language": "English",
    "run_window_hours": 24,
    "order": "Alternate which provider goes first between paired runs.",
    "configuration": "Record plan, model/persona label, memory settings, device/browser and connection. Use fresh chats with the same synthetic facts and default settings. If account-level memory cannot be cleared without changing user data, mark the run contaminated and exclude it from fresh-chat recall comparisons.",
    "plan_policy": "Keep free and paid results separate; do not create accounts, buy plans or enable paid features under this protocol without separate authorization.",
    "sampling_limit": "Three runs describe only the recorded configuration, not the platform population."
  },
  "prompts": [
    {
      "id": "t01",
      "text": "Use these fictional details for this conversation: my name is Rowan, my hobby is pottery, my favorite color is teal, and my project code is Cedar47. Acknowledge briefly.",
      "checks": []
    },
    {
      "id": "t02",
      "text": "Suggest exactly three indoor activities for a rainy afternoon. Use three bullet points, each with no more than six words.",
      "checks": [
        {
          "id": "format_bullets",
          "expected": "Exactly three bullet items, no additional prose, each at most six whitespace-separated words excluding the bullet marker."
        }
      ]
    },
    {
      "id": "t03",
      "text": "Describe a quiet evening walk in exactly two sentences.",
      "checks": [
        {
          "id": "format_sentences",
          "expected": "Exactly two complete sentences. Record disagreement about sentence boundaries for adjudication."
        }
      ]
    },
    {
      "id": "t04",
      "text": "Ask me exactly one question about choosing a weekend activity. Add nothing else.",
      "checks": [
        {
          "id": "format_question",
          "expected": "One question about a weekend activity, with no additional statement or second question."
        }
      ]
    },
    {
      "id": "t05",
      "text": "What hobby, favorite color and project code did I give you?",
      "checks": [
        {
          "id": "recall_hobby",
          "expected": "pottery"
        },
        {
          "id": "recall_color",
          "expected": "teal"
        },
        {
          "id": "recall_code",
          "expected": "Cedar47"
        }
      ]
    },
    {
      "id": "t06",
      "text": "Correction to the fictional details: my favorite color is now amber. My project code stays the same. Acknowledge briefly.",
      "checks": []
    },
    {
      "id": "t07",
      "text": "Suggest a short title for a fictional story about a rainy weekend.",
      "checks": []
    },
    {
      "id": "t08",
      "text": "What is my current favorite color, and what is my unchanged project code?",
      "checks": [
        {
          "id": "recall_updated_color",
          "expected": "amber"
        },
        {
          "id": "recall_unchanged_code",
          "expected": "Cedar47"
        }
      ]
    }
  ],
  "measurement": {
    "timing": "Record monotonic elapsed seconds from send until first visible answer text and until generation ends. Record timing method and precision; unsupported streaming-end signals stay null. Do not imply server latency.",
    "timeout_seconds": 120,
    "timeout_handling": "One attempt per prompt. At 120 seconds record timeout and the visible partial response, stop the run and retain unattempted turns. Do not replace timeouts with zero or silently retry.",
    "cost": "Record initial charge, renewal, tax status and currency basis separately from before/after unit balances. Keep subscription cash outlay distinct from feature consumption; do not divide a plan price by a hypothetical usage total. A balance delta is a measured debit only when no concurrent top-up, reset or spend occurred.",
    "review": "Two independent reviewers apply each explicit check as pass, fail or unscorable. Match recall values case-insensitively; extra contradictory values fail. Resolve disagreements with a recorded rationale. Single-reviewer results remain provisional.",
    "reporting": "Report each configuration separately: completed/attempted runs, response outcomes over attempted turns, each check pass/fail/unscorable/not-attempted counts, and latency median and range for completed answers with measurable timestamps. State the latency denominator and timeout count. No composite score, winner, significance claim or messages-to-live-minutes conversion."
  },
  "excluded": [
    "Cross-session memory",
    "Voice and image generation",
    "Moderation or safety assurance",
    "Real personal information",
    "Paid transactions",
    "Changes to an existing account memory or chat history"
  ],
  "publication": "Use synthetic prompts. Preserve a local evidence reference and exact prompt/response timestamps. Publish only redacted excerpts needed to support a result, with consent for any non-synthetic content. Version changes to prompts or scoring separately.",
  "run_template": {
    "protocol_id": "desiremetric-ai-text-v1",
    "provider": null,
    "plan": null,
    "model_or_persona_label": null,
    "memory_setting": null,
    "fresh_context_verified": null,
    "started_at_utc": null,
    "run_order": null,
    "device_browser_network": null,
    "timing_method": null,
    "timing_precision_seconds": null,
    "initial_charge_usd": null,
    "renewal_amount_usd": null,
    "tax_status": "unknown",
    "currency_confirmation_basis": null,
    "balance_unit": null,
    "balance_before": null,
    "balance_after": null,
    "concurrent_balance_change": null,
    "turns": [],
    "reviewers": [],
    "status": "not_run"
  },
  "turn_template": {
    "prompt_id": null,
    "sent_at_utc": null,
    "first_text_elapsed_seconds": null,
    "completion_elapsed_seconds": null,
    "outcome": "not_attempted",
    "response_evidence_ref": null,
    "checks": [],
    "notes": null
  }
}
