{
  "schema": "levchyk.project-reuse/v1",
  "capturedAt": "2026-09-07T10:27:41.834769+00:00",
  "repository": "https://github.com/PytaichukBohdan/LevchykUGS",
  "scope": "Inspected donor files pinned by commit; a porting map, not a validated executable dependency closure.",
  "donors": {
    "stableBase": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
    "musicWorktree": "46349e4292326c7076f1f90447f48aade26cb455",
    "personaWorktree": "255e2bcc40323656cd8d7e84022b51b9349eaf32"
  },
  "groups": [
    {
      "id": "studio",
      "title": "The familiar trend studio",
      "mode": "extract",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "web/trends, web/formats, web/adaptations",
      "integrationNotes": "Reuse renderWorld, buildProgramHtml and renderFactory interaction patterns; replace catalog assumptions with format \u2192 trend \u2192 adaptation data. Do not copy the 2,000-line app wholesale.",
      "files": [
        {
          "path": "hookd/studio/index.html",
          "sha256": "048ea423c2dee454f3ec7ee3c8ccef573a76272294a0ec08413ee81cf7ff1c31",
          "bytes": 3424,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/studio/index.html"
        },
        {
          "path": "hookd/studio/styles.css",
          "sha256": "9c0a6fad0eaff7730cce873ad2cba900dbf3fa687fa013c8ba4cfada247ecdd4",
          "bytes": 85399,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/studio/styles.css"
        },
        {
          "path": "hookd/studio/app.js",
          "sha256": "43456468b9997b5093f8ef4b0091cc11c19e048e1857ad2161a8d531d94e1736",
          "bytes": 195614,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/studio/app.js"
        },
        {
          "path": "hookd/studio/build_studio.py",
          "sha256": "89eaf5390d90bd1d28dd121248ca0349e362f57edf8889e542283f16163ddffe",
          "bytes": 85057,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/studio/build_studio.py"
        },
        {
          "path": "platform/app/catalog_views.py",
          "sha256": "c6a295271e7d22f136055ff4e97a21580bd7cb2e32f3bf9949a8a7d09c854b1c",
          "bytes": 21136,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/catalog_views.py"
        }
      ]
    },
    {
      "id": "formats",
      "title": "Reverse-engineered formats",
      "mode": "reference",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "formats/<id>/format.json and source evidence",
      "integrationNotes": "Use mechanisms, evidence, preserve/change decisions and source-fidelity structure. Lift named cast, product, geography, role counts and story details into per-format slots; the Target example is not a universal template.",
      "files": [
        {
          "path": "hookd/trends/09-targ-upload/reverse-sequence.json",
          "sha256": "bbedb919558297453f31bfe0c3b4984f6f89e9513ffd3fed0ca7d629635fc628",
          "bytes": 9789,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/trends/09-targ-upload/reverse-sequence.json"
        },
        {
          "path": "hookd/trends/09-targ-upload/source-fidelity.json",
          "sha256": "c3d6d5c5ed4cbc1e54c1ca1aec2ddb88292f95c2dc5b76aeedec2eb5ab896e32",
          "bytes": 5045,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/trends/09-targ-upload/source-fidelity.json"
        },
        {
          "path": "hookd/trends/09-targ-upload/entities/visual-style.md",
          "sha256": "3ea75a3539bf72bdf59622a0d68c3ab3513d3330e31917cb4822404a145764fe",
          "bytes": 6454,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/trends/09-targ-upload/entities/visual-style.md"
        },
        {
          "path": "hookd/trends/09-targ-upload/entities/song.md",
          "sha256": "013ce51c3b1ebc9eb40eda091c8074c8aec10542bac81407c1fdbd8445a0d3ca",
          "bytes": 2090,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/trends/09-targ-upload/entities/song.md"
        },
        {
          "path": "hookd/blueprints/singing-cartoon-vsl/BLUEPRINT.md",
          "sha256": "e20247636afab508f85cf3b83f36967cb6a887d0d30fe46ad5bc681f4448ae13",
          "bytes": 10426,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/blueprints/singing-cartoon-vsl/BLUEPRINT.md"
        },
        {
          "path": "hookd/blueprints/singing-cartoon-vsl/blueprint.json",
          "sha256": "e76664637a152861e7cd99563c126d2873d217ea7a04268fe75626face16d49f",
          "bytes": 6607,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/blueprints/singing-cartoon-vsl/blueprint.json"
        }
      ]
    },
    {
      "id": "music",
      "title": "Suno cover and complete-track handling",
      "mode": "extract",
      "commit": "46349e4292326c7076f1f90447f48aade26cb455",
      "target": "app/providers/suno.py and app/audio/",
      "integrationNotes": "Reuse actual upload-cover, task persistence, explicit take selection, audition and authorized edge-edit code. Keep song_contract, song_comparison and musical fingerprint dependencies together while extracting. Retain tests and adapt geo/language assumptions.",
      "files": [
        {
          "path": "hookd/gen.py",
          "sha256": "b7c806a86564060bb814dc3f1b617c4315e21a93227e6078016bf4de96acf946",
          "bytes": 68541,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/gen.py"
        },
        {
          "path": "hookd/audition_song.py",
          "sha256": "5f7df9d8073f8b868c9f21bd8ef72a5508f4536d72b80af07bbe0d8bdfb9d1c4",
          "bytes": 2720,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/audition_song.py"
        },
        {
          "path": "hookd/finish_song.py",
          "sha256": "7f688b7e72b9deba3b315d580b1d7b5c70e3ede33b3c6f4c8db04431085811aa",
          "bytes": 15023,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/finish_song.py"
        },
        {
          "path": "hookd/harness/song_contract.py",
          "sha256": "7ecde0126cd0347ca3b378231f59fac6c751fa8ed5a15805732b30a71b3a8a08",
          "bytes": 9327,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/harness/song_contract.py"
        },
        {
          "path": "hookd/harness/song_comparison.py",
          "sha256": "c7170b928c6eed6dedcba8c34c24c72f567ff586255b33b61cc5acefb48b4a6b",
          "bytes": 16922,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/harness/song_comparison.py"
        },
        {
          "path": "hookd/music_groove_contract.py",
          "sha256": "a0ee09dbcf066b3d8318c91a8e8b500e0ccc88fba9e1972a91d1b19ae70630b2",
          "bytes": 10812,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_groove_contract.py"
        },
        {
          "path": "hookd/test_gen.py",
          "sha256": "1903b22865261517164e3b735dc40b047aaf9c68d6d0316c1d6170364b819b4d",
          "bytes": 34955,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/test_gen.py"
        },
        {
          "path": "hookd/test_suno_cover.py",
          "sha256": "1e78133d560223328ab98e72b8fcfe25fa3b5d0b99073cdaeee8a81e81822bf3",
          "bytes": 17182,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/test_suno_cover.py"
        },
        {
          "path": "hookd/test_song_unwritten_edges.py",
          "sha256": "18dbea67f06a9600165265389ffbf200991468d2ec8143eec3283695f0c7b454",
          "bytes": 5093,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/test_song_unwritten_edges.py"
        },
        {
          "path": "hookd/harness/test_song_comparison.py",
          "sha256": "9631681d3338c055f01422decc0dd1bc23725b9aacfc2a3dabad9e1050e51251",
          "bytes": 8286,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/harness/test_song_comparison.py"
        }
      ]
    },
    {
      "id": "persona",
      "title": "Persona adapter, with failure history",
      "mode": "extract",
      "commit": "255e2bcc40323656cd8d7e84022b51b9349eaf32",
      "target": "app/providers/suno_persona.py",
      "integrationNotes": "Reuse the adapter and tests; it depends on gen helpers. Creation failed in the inspected experiment. Port it as an optional route, never mark its capability proven or force every film through it.",
      "files": [
        {
          "path": "hookd/suno_persona.py",
          "sha256": "053714cbba2f80bb31561bff039faddc93f01590cbbeb920cf88add3346ad4a7",
          "bytes": 4833,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/255e2bcc40323656cd8d7e84022b51b9349eaf32/hookd/suno_persona.py"
        },
        {
          "path": "hookd/test_suno_persona.py",
          "sha256": "406c3761dcc07d2dca1843db3c9063be009114ed3a772a5b39df100733baa17f",
          "bytes": 5288,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/255e2bcc40323656cd8d7e84022b51b9349eaf32/hookd/test_suno_persona.py"
        }
      ]
    },
    {
      "id": "render",
      "title": "Reference-conditioned images and motion",
      "mode": "extract",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "app/providers/visuals.py",
      "integrationNotes": "Reuse video_reference_paths, clip_input, actual negative-prompt delivery, reference hashes and paid-ledger merging. gen and harness/thumbs imports need explicit rewiring. Keep documented multimodal mode constraints and tests.",
      "files": [
        {
          "path": "hookd/render.py",
          "sha256": "3c9a38d2c955b2b1c0ee24df5bb8f202afde0e791ada3b23a5c50a9ddeae7517",
          "bytes": 40075,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/render.py"
        },
        {
          "path": "hookd/harness/thumbs.py",
          "sha256": "ee452e11a7fea11884054bf591a21302c6953fd97298b5aafe9c607698fad13f",
          "bytes": 16101,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/thumbs.py"
        },
        {
          "path": "hookd/test_render.py",
          "sha256": "f84f25adecff21f3d6e2bc997ffcfddb6dea6444316b98e018a2845effa00aac",
          "bytes": 46246,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/test_render.py"
        },
        {
          "path": "hookd/test_video_refs.py",
          "sha256": "17aec1ae65ccf08e268eeabfb0357354a3ede7641736ca794621713ea319c4f4",
          "bytes": 7506,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/test_video_refs.py"
        }
      ]
    },
    {
      "id": "audio_review",
      "title": "Working audio delivery and listening evidence",
      "mode": "extract",
      "commit": "46349e4292326c7076f1f90447f48aade26cb455",
      "target": "app/audio/identity.py and app/quality/audio.py",
      "integrationNotes": "Reuse complete PCM identity verification, listening receipt capture and independent evaluation; identity imports gen and music_dna_reel. Preserve exact media contracts. Deep groove diagnostics stay available without becoming mandatory research for every run.",
      "files": [
        {
          "path": "hookd/music_dna_audio_identity.py",
          "sha256": "5c2778acbc398920cc56413b693347b79109e1c2d0b36c301753251f4bf8f15a",
          "bytes": 4071,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_dna_audio_identity.py"
        },
        {
          "path": "hookd/music_dna_reel.py",
          "sha256": "9c556c573324bacb29def551aaeddbc053f21ab32f0ebfb61b9c32b876bb1fc9",
          "bytes": 6562,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_dna_reel.py"
        },
        {
          "path": "hookd/music_dna_research.py",
          "sha256": "3b7f44ee8d6fa4769953cfc512165ffbd35e0fb71d463cbd2fc6b51c916e9333",
          "bytes": 17987,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_dna_research.py"
        },
        {
          "path": "hookd/evaluate_music.py",
          "sha256": "df9e6a6220d1c8093ff6f90daed902b189ae955775c95a889cc463506f858d92",
          "bytes": 23820,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/evaluate_music.py"
        },
        {
          "path": "hookd/music_dna_measure.py",
          "sha256": "4368968c345bbd89df7f7c5237575de54aed8bedd79a7e735e9a9ccf9ad0100e",
          "bytes": 8126,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_dna_measure.py"
        },
        {
          "path": "hookd/music_dna_text.py",
          "sha256": "0c5f3033a4c747da8d28a8bed7ecb67c40118c86b8aec3d3c47436f6c46c971b",
          "bytes": 4261,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_dna_text.py"
        },
        {
          "path": "hookd/music_dna_groove.py",
          "sha256": "88667bcc7f15fed338c78cf422c8a41c35932703c61e50eabb656a827ec0a607",
          "bytes": 10677,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/music_dna_groove.py"
        },
        {
          "path": "hookd/test_music_dna_audio_identity.py",
          "sha256": "daf231c5c4ea8ced1e09d088e2beee8cb2e8524b55f7df4210925ba3e07e8104",
          "bytes": 5601,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/test_music_dna_audio_identity.py"
        },
        {
          "path": "hookd/test_music_dna_reel.py",
          "sha256": "4a6c5bfbac2d5543a83248830dd217a8a1f21fe14c92829de803bc2fcc1ae85f",
          "bytes": 3944,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/test_music_dna_reel.py"
        },
        {
          "path": "hookd/test_music_dna.py",
          "sha256": "64180582d924400013f11021a01b57f52b95ed92a38bb75f0cba60d4a78b2766",
          "bytes": 39005,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/test_music_dna.py"
        },
        {
          "path": "hookd/rebuilds/2026-09-07-gopure-v04/delivery-diagnosis-02/FINDINGS.md",
          "sha256": "22c0eb4a94accabbd7e386c64d8f9722b39546bf1e7c16dba886fe39757635df",
          "bytes": 1681,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/rebuilds/2026-09-07-gopure-v04/delivery-diagnosis-02/FINDINGS.md"
        },
        {
          "path": "hookd/requirements-music-dna.txt",
          "sha256": "f70d915bc165189a3ed19b02019f6487756fd307f9b7933bbfe12498f51b9b34",
          "bytes": 360,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/46349e4292326c7076f1f90447f48aade26cb455/hookd/requirements-music-dna.txt"
        }
      ]
    },
    {
      "id": "captions",
      "title": "Word-timed caption grouping",
      "mode": "copy",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "app/media/song_captions.py and tests/",
      "integrationNotes": "Small standard-library module: copy with its tests, preserve behavior, then parameterize language only where needed. Do not reimplement word fragmentation and phrase grouping.",
      "files": [
        {
          "path": "platform/app/song_captions.py",
          "sha256": "0d5de627cde141bfa6e05e630343318f04173ccd65b165b359a2f6325372f899",
          "bytes": 5635,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/song_captions.py"
        },
        {
          "path": "platform/app/test_song_captions.py",
          "sha256": "f19cbc46f646e5e126d462cabceb33277c014e152b40183b70fe21331ea366cc",
          "bytes": 5129,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/test_song_captions.py"
        }
      ]
    },
    {
      "id": "assembly",
      "title": "The working FFmpeg finishing path",
      "mode": "extract",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "app/media/assemble.py",
      "integrationNotes": "Extract Worker.assemble_video, caption_ass, ass_time, ass_text, clip_sources, lyric_pills and their required helpers/constants. Supply explicit paths, dimensions and caption font. Do not instantiate the legacy Worker in the new app or copy GoPure one-off scripts.",
      "files": [
        {
          "path": "platform/app/worker.py",
          "sha256": "4b30b5c3469bb04e9d914c1055592bc6014e870dd43c565563c72a1598395edd",
          "bytes": 95859,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/worker.py"
        },
        {
          "path": "platform/app/test_worker_steps.py",
          "sha256": "bf1f4999544907cf69ac8bc2519a56c4433ea59840983922992424d349eded02",
          "bytes": 99504,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/test_worker_steps.py"
        },
        {
          "path": "platform/scripts/assemble_variant.py",
          "sha256": "95fe45ad5650ccb4dba7bb22de23c74011c3a71a8b15d726db2b196c5e645054",
          "bytes": 4936,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/scripts/assemble_variant.py"
        },
        {
          "path": "platform/Dockerfile",
          "sha256": "babda3a5cc26594e319d0248f21bc87eb5f65650827a62978de1d78c92261d15",
          "bytes": 2213,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/Dockerfile"
        }
      ]
    },
    {
      "id": "quality",
      "title": "Problem state, facial evidence and selective repair",
      "mode": "extract",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "app/quality/visual.py and contracts/",
      "integrationNotes": "Retain exact product/cast/state bindings and actual motion evidence. review_problem depends on gen, music_dna_research and the harness contracts. Replace fixed taste thresholds with the owner's versioned fifth-rejection policy; never rewrite historical outcomes.",
      "files": [
        {
          "path": "hookd/harness/problem_passport.py",
          "sha256": "a6ac373e7760502051fb2be949f4621dc7313b0ecca90af3444555cc26a9b762",
          "bytes": 33441,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/problem_passport.py"
        },
        {
          "path": "hookd/harness/facial_performance.py",
          "sha256": "9aa976fb127fdc2b9f29839f245356a54858351a73284e546971af91dd1780ca",
          "bytes": 19376,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/facial_performance.py"
        },
        {
          "path": "hookd/review_problem.py",
          "sha256": "b74ed543763b48b7ead6fc062c9108a3c5129c4e830877c9c55ce4266b5a51a6",
          "bytes": 24584,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/review_problem.py"
        },
        {
          "path": "hookd/harness/test_problem_passport.py",
          "sha256": "243bffb7566577f29737c24a2371c5aaa149d9429859910023591b05c7d71a12",
          "bytes": 22791,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/test_problem_passport.py"
        },
        {
          "path": "hookd/harness/test_facial_performance.py",
          "sha256": "1f771e33029d61c36e86cac4000a00f8f6063c737f9cfced7c4ba6f4b9a4f879",
          "bytes": 10219,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/test_facial_performance.py"
        },
        {
          "path": "hookd/test_problem_review.py",
          "sha256": "34437e66395e1453839d27d0b56f14cbb200439bbea8e2ef7fead21d7b3158b5",
          "bytes": 14414,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/test_problem_review.py"
        }
      ]
    },
    {
      "id": "state",
      "title": "Durable jobs, asset versions and storage",
      "mode": "extract",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "app/jobs, app/storage, app/db",
      "integrationNotes": "Reuse existing Python/Postgres/R2 contracts and failure semantics. Keep ObjectStore's config/httpx dependencies. jobs and worker are coupled to the old Factory; extract leases, task reconciliation and event projection rather than importing its full workflow or adding another queue stack.",
      "files": [
        {
          "path": "platform/app/jobs.py",
          "sha256": "04bc225adb2385fd38b0b84be4869f3b8d72e7e23d803feb84f6f6295c2b4232",
          "bytes": 20655,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/jobs.py"
        },
        {
          "path": "platform/app/db.py",
          "sha256": "8bac34187bb9eda0b12d5c394a698ea875b98a3a8f7c875b8a131f421564d196",
          "bytes": 1837,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/db.py"
        },
        {
          "path": "platform/app/storage.py",
          "sha256": "d895fa0fb92d44b4826573bd49eae9e6587a222cac9e5e05f6f98a976553f02e",
          "bytes": 5750,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/storage.py"
        },
        {
          "path": "platform/app/config.py",
          "sha256": "c92a49789a935f5add25d86e0c7dba615d05213d50957eeb9a7edbb20cf9cdaf",
          "bytes": 3141,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/config.py"
        },
        {
          "path": "platform/app/workspace.py",
          "sha256": "c09c5beb7f743276d7a727c8b0a1ee0d01a61f5416ff080b2c784879458c49af",
          "bytes": 22607,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/app/workspace.py"
        },
        {
          "path": "platform/migrations/001_initial.sql",
          "sha256": "f21a5fda40988ffde6b67b9d859579afeb1bb980019c30b21440d941ec7a4e1d",
          "bytes": 5983,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/migrations/001_initial.sql"
        },
        {
          "path": "platform/migrations/003_no_automatic_retries.sql",
          "sha256": "c52a71a203e15758419b88702efaad7dd174d47562d656a5d59d3707b880f5ec",
          "bytes": 131,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/migrations/003_no_automatic_retries.sql"
        },
        {
          "path": "platform/migrations/005_job_serialisation.sql",
          "sha256": "e60986f765aa772b8683ba2d9704bf4d0187bc4a64dcf9ab831203d95613ad39",
          "bytes": 1922,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/migrations/005_job_serialisation.sql"
        },
        {
          "path": "hookd/harness/manifest.py",
          "sha256": "d52a8194f0d881ee249ee8009cbbb98047ac6475cf7f1699721a9b203f297960",
          "bytes": 33236,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/manifest.py"
        },
        {
          "path": "hookd/harness/test_state_manifest.py",
          "sha256": "e8522ccb80c2129891ae90fa5d6233ac7d63e4299526987fa5e9b035fb699da6",
          "bytes": 1531,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/harness/test_state_manifest.py"
        },
        {
          "path": "platform/requirements.txt",
          "sha256": "911e77a07c527e6f0c43a80dc32b1aaa98a6f8fe9238d02fc5357abeba6358f2",
          "bytes": 145,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/requirements.txt"
        },
        {
          "path": "platform/edge/src/index.js",
          "sha256": "a6a1f65a6b647cb4cf27c3611726c46040f5ff716737a4b609799aeb774f627d",
          "bytes": 8646,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/edge/src/index.js"
        },
        {
          "path": "platform/edge/test/edge.test.js",
          "sha256": "646a6062a6544c5a00b3ac7dffb86aef4439d57d4af9fd5c27e3e29d8be5dbf7",
          "bytes": 1536,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/edge/test/edge.test.js"
        },
        {
          "path": "platform/edge/wrangler.toml",
          "sha256": "1d4514b08571a037d8bf940f083b4b4e144e6b2a8cbe0b2592d9e60c55e045cc",
          "bytes": 338,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/edge/wrangler.toml"
        },
        {
          "path": "platform/edge/package.json",
          "sha256": "2dd9182d1ac4e4735bb663db2f07d3c04eed3e1bc43d52171b405d24653b00e5",
          "bytes": 223,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/platform/edge/package.json"
        }
      ]
    },
    {
      "id": "dna",
      "title": "Creative skills and the loved corpus",
      "mode": "copy",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "references/music_dna_raw and skills/",
      "integrationNotes": "Copy the skills and required references as a starting point, then reconcile explicit owner policy in PROJECT_START.md before running imported validators. Preserve source-specific observations; 10/10 is owner taste, not a computed metric or a universal musical preset.",
      "files": [
        {
          "path": "hookd/music-dna/corpus.json",
          "sha256": "33132fc48e8790e782b196bb1b398434a861301f4eddb8f9071a92a402e4c1b9",
          "bytes": 2441,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/music-dna/corpus.json"
        },
        {
          "path": "hookd/skills/music-creation-dna/SKILL.md",
          "sha256": "459efed6a8e8beb5fd734ddc68906e5b362718b517d72d1c1d059085c2d73572",
          "bytes": 9924,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/music-creation-dna/SKILL.md"
        },
        {
          "path": "hookd/skills/music-creation-dna/references/dna.md",
          "sha256": "2035d2a721e9e691b81dd213e2dca963995368c1627958738d34a3c0b8e07798",
          "bytes": 12854,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/music-creation-dna/references/dna.md"
        },
        {
          "path": "hookd/skills/music-creation-dna/references/evaluation.md",
          "sha256": "55ffd3ff2a404e3a2add8d6d61438b9ccb9af1b4551fe49c57cd5aa33bc74c08",
          "bytes": 17356,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/music-creation-dna/references/evaluation.md"
        },
        {
          "path": "hookd/skills/music-creation-dna/references/evidence.md",
          "sha256": "467b8325be36baf2f2deea2d79bc66b2cc4d8808f6e476dca80c60e65a96b7af",
          "bytes": 11637,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/music-creation-dna/references/evidence.md"
        },
        {
          "path": "hookd/skills/problem-state-passport/SKILL.md",
          "sha256": "0dc33f4d9f934e79b73416e0281ca53095948b082acbb7dad7f9f96dce88f2f7",
          "bytes": 4301,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/problem-state-passport/SKILL.md"
        },
        {
          "path": "hookd/skills/problem-state-passport/references/contract.md",
          "sha256": "24d1bbb2bb346a662ee97a60417f51b50eb58d1173c7a4ab94ae440d0e9bf35a",
          "bytes": 6847,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/problem-state-passport/references/contract.md"
        },
        {
          "path": "hookd/skills/facial-performance/SKILL.md",
          "sha256": "22809b41b15ee2e53ba355625ba09339b2739afb1cf605d0b6be99cf4a61d965",
          "bytes": 5342,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/facial-performance/SKILL.md"
        },
        {
          "path": "hookd/skills/facial-performance/references/evidence.md",
          "sha256": "04ee3e39e61d1bf6b8ec35f7061c1a016d9de87c0a3d6654f6bf272e74958e14",
          "bytes": 7269,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/facial-performance/references/evidence.md"
        },
        {
          "path": "hookd/skills/facial-performance/references/contract.md",
          "sha256": "918330ab94476574d4fa51fe3a03e4caf0d770fc0d4837f0421e75b3c373d6ed",
          "bytes": 7024,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/facial-performance/references/contract.md"
        },
        {
          "path": "hookd/skills/facial-performance/references/revision-loop.md",
          "sha256": "3e028c9f9761bbc4a75a7434e0cd1a85d20e845ea3c233ed8b64a83617163d03",
          "bytes": 8890,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/skills/facial-performance/references/revision-loop.md"
        },
        {
          "path": "hookd/facial-performance/reference-study.json",
          "sha256": "77c9034d9e822ba727377dd9b57ec2eb993e7ee304f8267f9681aacbb7af8fa3",
          "bytes": 4286,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/facial-performance/reference-study.json"
        }
      ]
    },
    {
      "id": "product",
      "title": "Product dossier and state-passport example",
      "mode": "reference",
      "commit": "5edbbca04c3febe3d9c68b01bc9639da10f1851b",
      "target": "products/<product>/ and passports/<cast>/",
      "integrationNotes": "Reuse the dossier structure and inspect the worked problem passport. Replace all GoPure facts, prices, geography, characters, images and endpoint when adapting a different product. Recorded seller claims are not automatically verified product evidence.",
      "files": [
        {
          "path": "hookd/products/gopure-neck-cream-ua/product.md",
          "sha256": "575dfc441ba49c5aa1fe1ea82fe3df42d196c0cf489d351b938524c91d103446",
          "bytes": 6901,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/products/gopure-neck-cream-ua/product.md"
        },
        {
          "path": "hookd/products/gopure-neck-cream-ua/research.md",
          "sha256": "9ee23925c5964cf502453859ad12cf484094bdb00add1bdeb87a2fcda2e4b6fc",
          "bytes": 45809,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/products/gopure-neck-cream-ua/research.md"
        },
        {
          "path": "hookd/products/gopure-neck-cream-ua/offer.md",
          "sha256": "271dbef0e1ca5fac1fb32ab6ebe171576757f66b4f6055b816679c14899b4afd",
          "bytes": 3579,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/products/gopure-neck-cream-ua/offer.md"
        },
        {
          "path": "hookd/trends/09-targ-upload/adaptations/gopure-neck-cream-ua/v03-znovu-bachu-sebe/problem-passport.json",
          "sha256": "7b87858a426b83f438dc1c68258af5cb2bd180a135824d750cf69bc8a603abe4",
          "bytes": 14661,
          "url": "https://github.com/PytaichukBohdan/LevchykUGS/blob/5edbbca04c3febe3d9c68b01bc9639da10f1851b/hookd/trends/09-targ-upload/adaptations/gopure-neck-cream-ua/v03-znovu-bachu-sebe/problem-passport.json"
        }
      ]
    }
  ]
}
