{"record":{"id":"25c548bdd74e6904","repo":"affaan-m/ECC","slug":"could-not-set-key-for-event-id","errorCode":null,"errorMessage":"could not set {key} for {event['id']}","messagePattern":"could not set (.+?) for (.+?)","errorType":"exception","errorClass":"RuntimeError","httpStatus":null,"severity":"error","filePath":"skills/taste-application/scripts/tasteforge/resolve.py","lineNumber":301,"sourceCode":"                {\n                    \"mediaPoolItem\": imported[0],\n                    \"startFrame\": 0,\n                    \"endFrame\": event[\"frames\"] - (source_end_mode == \"inclusive\"),\n                    \"mediaType\": 1,\n                    \"trackIndex\": event[\"track\"],\n                    \"recordFrame\": event[\"record_frame\"],\n                }\n            ]\n        )\n        if not items or len(items) != 1:\n            raise RuntimeError(f\"could not append {event['id']}\")\n        item = items[0]\n        for key, value in [\n            (\"Opacity\", event[\"opacity\"]),\n            (\"CompositeMode\", event[\"composite\"]),\n        ]:\n            if not item.SetProperty(key, value):\n                raise RuntimeError(f\"could not set {key} for {event['id']}\")\n        _readback(timeline, item, event)\n        appended.append((event, item))\n    receipts = []\n    for event, item in appended:\n        actual = _readback(timeline, item, event)\n        receipts.append(\n            {\n                \"id\": event[\"id\"],\n                \"asset\": event[\"asset\"],\n                \"requested\": {\n                    key: event[key]\n                    for key in (\n                        \"record_frame\",\n                        \"frames\",\n                        \"track\",\n                        \"opacity\",\n                        \"composite\",\n                    )","sourceCodeStart":283,"sourceCodeEnd":319,"githubUrl":"https://github.com/affaan-m/ECC/blob/8321021c54d670126ce3b2969d5deb880b4b0c2a/skills/taste-application/scripts/tasteforge/resolve.py#L283-L319","documentation":"After appending, apply_placements sets each item's Opacity and CompositeMode via item.SetProperty and raises this RuntimeError if SetProperty returns a falsy value (Resolve returns False when the property name or value is rejected). The message names the property key and event id. This ensures each overlay's compositing matches the plan before readback verification.","triggerScenarios":"Passing a CompositeMode value outside Resolve's accepted set (0-100 integer enum, e.g. 'overlay' string or 7 when unsupported), passing Opacity as a string or out of 0-100, or a Resolve build silently failing SetProperty on a freshly appended item.","commonSituations":"Plan JSON with composite modes copied from another tool's naming; opacity given as '50' (string) instead of 50.0; Resolve version where a composite mode enum was added/removed.","solutions":["Ensure opacity is a number in 0-100 and composite is an integer in Resolve's accepted CompositeMode range.","Test item.SetProperty('CompositeMode', v) manually in the Resolve console for your build to confirm supported values.","Upgrade/downgrade or adjust the plan to composite modes supported by the running Resolve version."],"exampleFix":"// before\nevent[\"composite\"] = \"overlay\"\n// after\nevent[\"composite\"] = 1  # Resolve CompositeMode integer","handlingStrategy":"type-guard","validationCode":"for e in plan:\n    if not isinstance(e[\"opacity\"], (int, float)) or not 0 <= e[\"opacity\"] <= 100:\n        raise ValueError(f\"bad opacity for {e['id']}\")\n    if not isinstance(e[\"composite\"], int) or not 0 <= e[\"composite\"] <= 100:\n        raise ValueError(f\"bad composite mode for {e['id']}\")","typeGuard":"def valid_properties(event):\n    return (\n        isinstance(event.get(\"opacity\"), (int, float))\n        and 0 <= event[\"opacity\"] <= 100\n        and isinstance(event.get(\"composite\"), int)\n        and 0 <= event[\"composite\"] <= 100\n    )","tryCatchPattern":"try:\n    apply_placements(tl, pool, placements, ...)\nexcept RuntimeError as e:\n    if \"could not set\" in str(e):\n        key, eid = str(e).split()[3], str(e).split()[5]\n        print(f\"property {key} rejected for {eid}; check Resolve-accepted values\")\n    else:\n        raise","preventionTips":["Store opacity as float 0-100 and CompositeMode as Resolve's integer enum only.","Probe SetProperty with a scratch timeline item once per Resolve version.","Validate plan JSON against a schema that enforces numeric property types."],"tags":["resolve","properties","composite","runtime"],"backgroundTag":"invalid-argument-value","analyzedSha":"8321021c54d670126ce3b2969d5deb880b4b0c2a","analyzedAt":"2026-09-16T10:08:13.343Z","contentChangedAt":"2026-09-16T10:08:13.343Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}