{
  "assessmentId": "AVATAR-SOURCE-2026-09-07",
  "reviewDate": "2026-09-07",
  "method": "Review of a pinned source commit and historical note; arithmetic from declared model sizes; a new browser experiment executing the exact encoder/audio decoder on original test cards and synthetic tones, independently checked with FFmpeg. No model download or neural inference was run.",
  "sourceCommit": "68980d142cce421eab86cd4ef26a4475a6affd56",
  "upstreamRepository": "https://github.com/MartinDelophy/ai-video-editor",
  "modelRevision": "a201b681c8f96672b5c3f624e32d4dc932f150af",
  "modelRepository": "https://huggingface.co/haixin/timeline-studio-onnx-models/tree/a201b681c8f96672b5c3f624e32d4dc932f150af",
  "downloadEstimate": {
    "method": "Sum of configured knownArtifacts bytes, not observed network traffic or resident memory.",
    "joyvasaBytes": 412034375,
    "livePortraitPreviewBytes": 326845205,
    "previewTotalBytes": 738879580,
    "additionalQualityGeneratorBytes": 210713678,
    "bothTiersTotalBytes": 949593258,
    "excludes": [
      "ONNX Runtime JavaScript/WebAssembly",
      "Application assets",
      "Browser/GPU working memory",
      "HTTP transport overhead"
    ]
  },
  "sourceBoundaries": {
    "maximumAudioSeconds": 4,
    "maximumVideoSeconds": 4,
    "previewPixels": [
      256,
      256
    ],
    "qualityPixels": [
      512,
      512
    ],
    "defaultEncodedFps": 8,
    "defaultNeuralKeyframeTargetFps": 2,
    "playbackSampling": "Nearest neural-keyframe image reused at each encoded timestamp; no optical-flow or synthesized in-between frames.",
    "intermediateWebmAudioTrack": false,
    "frameGuards": "Finite/extreme/variance/distance checks and a retry; not identity, phoneme or lip-sync validation."
  },
  "historicalNote": {
    "reportedClipSeconds": 3.56,
    "reported512pxNeuralSecondsPerFrame": [
      25,
      60
    ],
    "scope": "Values copied from the earlier engineering note, not reproduced now. Browser version, GPU name, original voiceover, encoded clip and full timing log are not provided in that note.",
    "publication": "No audiovisual output from that historical run is republished as verified evidence."
  },
  "hypotheticalRenderBudget": {
    "method": "Maximum adaptive keyframe budget ceil(duration * 2) + 1 multiplied by historical per-frame cost; illustrative planning bound, not prediction or measurement. Excludes setup, JoyVASA, encoding and retries. Applies only to the historical 512px rate, not 256px preview.",
    "oneSecondAtMost3FramesSeconds": [
      75,
      180
    ],
    "fourSecondsAtMost9FramesSeconds": [
      225,
      540
    ]
  },
  "nextPilotPolicy": {
    "status": "Proposed; not executed",
    "input": "An authorized or owned front-facing still and a clean one-second speech excerpt, with source/provenance and hashes retained.",
    "quality": "256px preview only",
    "inputSeconds": 1,
    "targetWarmWallClockMaxSeconds": 180,
    "hardStopWallClockSeconds": 300,
    "firstNeuralFrameStopSeconds": 60,
    "repeatPolicy": "Do not promote to 512px if identity, lip closure, audio alignment or timing fails. Record one rejected result rather than looping through retries.",
    "deliverables": [
      "source portrait and voice excerpt",
      "silent intermediate WebM",
      "final timeline export with audio",
      "browser/GPU identification",
      "cold downloads and warm stage timings separated",
      "frame timestamps/retries/fallbacks",
      "human visual and listening notes"
    ]
  },
  "files": [
    {
      "file": "joyvasa-config.js",
      "bytes": 2141,
      "sha256": "db1b794dae67e48673520fdf5fb81a6a32f3ded5c502a2bfa9bcdd42ec8df4ac",
      "upstreamPath": "src/config/joyVasa.js",
      "sourceLines": null,
      "upstreamFileSha256": "db1b794dae67e48673520fdf5fb81a6a32f3ded5c502a2bfa9bcdd42ec8df4ac",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/joyVasa.js"
    },
    {
      "file": "liveportrait-config.js",
      "bytes": 4637,
      "sha256": "aca8f17b4136d00fca52b97448a3323fc811fbe262709fefb79ab6ab11fa88c4",
      "upstreamPath": "src/config/livePortrait.js",
      "sourceLines": null,
      "upstreamFileSha256": "aca8f17b4136d00fca52b97448a3323fc811fbe262709fefb79ab6ab11fa88c4",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/config/livePortrait.js"
    },
    {
      "file": "avatar-hook.js",
      "bytes": 5333,
      "sha256": "4cc64133c9a5bbd61343286c93786e7899f2e2a0a61321cf0e60cd9af58b1f3c",
      "upstreamPath": "src/hooks/useAvatarGeneration.js",
      "sourceLines": null,
      "upstreamFileSha256": "4cc64133c9a5bbd61343286c93786e7899f2e2a0a61321cf0e60cd9af58b1f3c",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/hooks/useAvatarGeneration.js"
    },
    {
      "file": "avatar-media-functions.js",
      "bytes": 4744,
      "sha256": "cc4a2f223606d981fffbbbcbbe901d932b29aede68de71bbf23475ee68326a0c",
      "upstreamPath": "src/lib/editorRuntime.js",
      "sourceLines": [
        62,
        155
      ],
      "upstreamFileSha256": "9144d7130235305ff0ce622c8891b806435c0a90855e2c00f1d5a825e1c7f9ec",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/editorRuntime.js"
    },
    {
      "file": "avatar-render-excerpts.js",
      "bytes": 9783,
      "sha256": "15bc7eafd274139b8dd9996a60baa198e7db5059f1f82acc4018b4b8f1336682",
      "upstreamPath": "src/workers/liveportrait.worker.js",
      "sourceLines": [
        273,
        473
      ],
      "upstreamFileSha256": "2f19666ae36403f5f585c5c774f957419881f61fa3670aace954e47234910b81",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/workers/liveportrait.worker.js"
    },
    {
      "file": "frame-quality.ts",
      "bytes": 3031,
      "sha256": "5139cefba9374b5dd88bf5b271d39c13b5ea9a7ac1a767baf4ee5743e331abf6",
      "upstreamPath": "src/lib/livePortraitQuality.ts",
      "sourceLines": null,
      "upstreamFileSha256": "5139cefba9374b5dd88bf5b271d39c13b5ea9a7ac1a767baf4ee5743e331abf6",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/src/lib/livePortraitQuality.ts"
    },
    {
      "file": "historical-port-record.md",
      "bytes": 2843,
      "sha256": "c8f8c11a0ae0e2117f2b520dbf0c288eac39f15d4fa0ed9263b2bbae7f49e4f9",
      "upstreamPath": "docs/liveportrait-web-port.md",
      "sourceLines": null,
      "upstreamFileSha256": "c8f8c11a0ae0e2117f2b520dbf0c288eac39f15d4fa0ed9263b2bbae7f49e4f9",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/docs/liveportrait-web-port.md"
    },
    {
      "file": "LICENSE",
      "bytes": 1070,
      "sha256": "22b4aea739e33689429ebd2f326d95d18ebe185173eb9d9c47b32614fda94963",
      "upstreamPath": "LICENSE",
      "sourceLines": null,
      "upstreamFileSha256": "22b4aea739e33689429ebd2f326d95d18ebe185173eb9d9c47b32614fda94963",
      "sourceUrl": "https://github.com/MartinDelophy/ai-video-editor/blob/68980d142cce421eab86cd4ef26a4475a6affd56/LICENSE"
    }
  ],
  "encoderExperiment": {
    "id": "AVATAR-ENCODER-2026-09-07",
    "status": "Executed and independently decoded on September 7, 2026",
    "guide": "encoder-trial/README.md",
    "result": "encoder-trial/browser-result.json",
    "verification": "encoder-trial/verification.json",
    "manifest": "encoder-trial/manifest.json",
    "output": "encoder-trial/three-cards-eight-frames.webm",
    "sourceCardSequence": "AAABBBBC",
    "encodedFrames": 8,
    "durationSeconds": 1,
    "audioTrackCount": 0,
    "neuralInference": false,
    "boundary": "This experiment verifies media selection, padding, truncation and packaging only. It does not establish generated portrait quality, phoneme alignment, final timeline audio export or neural speed.",
    "bundle": "encoder-reproduction.zip"
  }
}
