{
  "captureVersion": "private-narrated-demo-v2-openai-voice",
  "generatedBy": "npm run voice:openai -- --confirm-authorized",
  "processedBy": "npm run voice:reapply -- --from-saved-response",
  "generatedFrom": "fresh production build",
  "syntheticOnly": true,
  "liveRouteRequests": 0,
  "sourceFingerprint": {
    "algorithm": "sha256",
    "value": "720352f5e4039c821241732361df36e380f3ee4464feb7393c891a0ca902df05",
    "files": [
      ".nvmrc",
      "evals/live/fixtures/qualification-fixtures.json",
      "evals/live/fixtures/synthetic-complete-worksheet.pdf",
      "evals/live/fixtures/synthetic-conditional-incentive.jpg",
      "evals/live/fixtures/termstrail-live-hero-ad.jpg",
      "evals/live/fixtures/termstrail-live-hero.pdf",
      "evals/live/provenance/openai-voice-request-contract.json",
      "evals/live/provenance/qualification-v2-json-schema.json",
      "evals/live/provenance/qualification-v2-request-contract.json",
      "evals/live/provenance/qualification-v2-source/package.json.snapshot",
      "evals/live/provenance/qualification-v2-source/src/app/api/live-extract/route.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/domain/clarification.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/domain/evidence.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/domain/reconcile.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/live/config.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/live/model-schema.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/live/prompt.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/live/source.ts.snapshot",
      "evals/live/provenance/qualification-v2-source/src/providers/openai-provider.ts.snapshot",
      "evals/live/provenance/qualification-v3-correction-json-schema.json",
      "evals/live/provenance/qualification-v3-correction-request-contract.json",
      "evals/live/qualification-summary.json",
      "evals/live/recorded-hero-result.json",
      "evals/live/v3-correction-result.json",
      "next.config.ts",
      "package-lock.json",
      "package.json",
      "public/evaluation-results.json",
      "requirements-live-fixtures.txt",
      "scripts/capture-submission.ts",
      "scripts/generate-live-qualification-fixtures.py",
      "scripts/live-correction-check.ts",
      "scripts/live-qualification.ts",
      "scripts/materialize-live-correction.ts",
      "scripts/materialize-live-qualification.ts",
      "scripts/submission-fingerprint.ts",
      "scripts/write-v3-correction-contract.ts",
      "src/app/api/live-extract/route.test.ts",
      "src/app/api/live-extract/route.ts",
      "src/app/api/live-trail/route.test.ts",
      "src/app/api/live-trail/route.ts",
      "src/app/globals.css",
      "src/app/icon.svg",
      "src/app/layout.tsx",
      "src/app/page.tsx",
      "src/app/synthetic-lab/page.tsx",
      "src/components/synthetic-intake-lab.tsx",
      "src/components/trail-workspace.tsx",
      "src/domain/clarification.test.ts",
      "src/domain/clarification.ts",
      "src/domain/currency.test.ts",
      "src/domain/currency.ts",
      "src/domain/evidence.ts",
      "src/domain/reconcile.test.ts",
      "src/domain/reconcile.ts",
      "src/domain/revision.test.ts",
      "src/domain/revision.ts",
      "src/domain/schema.test.ts",
      "src/domain/schema.ts",
      "src/evaluation/fixtures.ts",
      "src/evaluation/live-correction-contract.ts",
      "src/evaluation/live-correction.test.ts",
      "src/evaluation/live-correction.ts",
      "src/evaluation/live-qualification.test.ts",
      "src/evaluation/live-qualification.ts",
      "src/evaluation/live-record.test.ts",
      "src/evaluation/provenance-utils.ts",
      "src/evaluation/provenance.test.ts",
      "src/evaluation/runner.test.ts",
      "src/evaluation/runner.ts",
      "src/fixtures/canonical-demo.test.ts",
      "src/fixtures/canonical-demo.ts",
      "src/fixtures/canonical-response.ts",
      "src/fixtures/canonical.ts",
      "src/lib/project-trail.test.ts",
      "src/lib/project-trail.ts",
      "src/lib/project.test.ts",
      "src/lib/project.ts",
      "src/lib/submission-fingerprint.test.ts",
      "src/live/cache.ts",
      "src/live/config.test.ts",
      "src/live/config.ts",
      "src/live/errors.ts",
      "src/live/evidence.ts",
      "src/live/model-schema.test.ts",
      "src/live/model-schema.ts",
      "src/live/multipart.test.ts",
      "src/live/multipart.ts",
      "src/live/openai-transport.ts",
      "src/live/prompt.ts",
      "src/live/provider-factory.ts",
      "src/live/run-log.ts",
      "src/live/source.test.ts",
      "src/live/source.ts",
      "src/live/types.ts",
      "src/providers/extraction-provider.ts",
      "src/providers/mock-provider.test.ts",
      "src/providers/mock-provider.ts",
      "src/providers/openai-provider.test.ts",
      "src/providers/openai-provider.ts",
      "tsconfig.json"
    ]
  },
  "captureScriptSha256": "7a21de980dfea6573259c7893e444aa9467e1fd4ca44c19004ec22958967e975",
  "voiceScriptSha256": "7c36afc4686bf543ef0d7ce4be846038d2e8c40eaae589a7c7cb93eacdeb8d78",
  "recoveryScriptSha256": "ecae4775019c425f1e2d47944ebbef1ce2d06b34eb3903b5eda5fe288791917d",
  "reapplyScriptSha256": "cc4938570ffa9138b4f5dbad6cef3805fd43ae326086f268dee95e2cb61e0a06",
  "narration": {
    "engine": "openai-speech-api",
    "model": "gpt-4o-mini-tts-2025-12-15",
    "voice": "marin",
    "aiGenerated": true,
    "disclosureRequired": true,
    "apiRequests": 1,
    "localRecoveryApiRequests": 0,
    "localRecoveryReason": "streaming-wav-size-placeholder",
    "requestContractPath": "evals/live/provenance/openai-voice-request-contract.json",
    "requestContractSha256": "f7d9e0e6fe27f5ca2fd2bd40946ebcc8fec0e4ee79ecabf154a5e8a6f75777dc",
    "requestCanonicalSha256": "1dd06cc7bb0d1ef74048c9a04d595c8d90ec5772b0971e2f3e7ef76fbdd6fd2e",
    "requestDocumentSha256": "e8605b3c6599557cf275528f03f6661d8692a8cf1bdd20d2a1dfef964bb406ad",
    "requestScriptSha256": "09aa899136ea8a07d949220b7b8361b313ebba4c291de2c3392b6fa75854c900",
    "inputCharacters": 2334,
    "rawDurationSeconds": 149.056,
    "targetDurationSeconds": 178,
    "rawResponseSha256": "df00ac3edabbd053be57df645754d9150ea37f5b6e383479d234db59e9f4559a",
    "inputSha256": "d8b9bd790fe48ef81f82a4e45f3d098ec5156472e33b5878cd78206722321bd8",
    "instructionsSha256": "0dbaccea18a025534e80341357695df1a2e9d515ac85c56ff9eda1a916d3cc11",
    "responseFormat": "wav",
    "speed": 0.9,
    "maxRetries": 0,
    "timeoutMs": 120000,
    "scriptSha256": "7bad54f9771dfd2009009ac5984af01161566b5c13112ecfacd826eab7698642",
    "billing": {
      "priceDate": "2026-07-15",
      "textInputUsdPerMillionTokens": 0.6,
      "audioOutputUsdPerMillionTokens": 12,
      "providerUsageReturned": false,
      "exactCostAvailable": false,
      "authorizationCapUsd": 0.15
    }
  },
  "encoder": "ffmpeg version 7.1-essentials_build-www.gyan.dev Copyright (c) 2000-2024 the FFmpeg developers",
  "asset": {
    "filename": "termstrail-demo-draft.mp4",
    "width": 1440,
    "height": 1000,
    "durationSeconds": 178,
    "bytes": 8572906,
    "sha256": "0e0c2734f08ee4bfabedcf4e0f106f3df4d307cbd284aace14b242f20378b252",
    "hasVideo": true,
    "hasAudio": true
  }
}
