From 6cb77df5cd01db5b5e1fbd69fe1c42e63c2201c3 Mon Sep 17 00:00:00 2001 From: Vance Ingalls Date: Mon, 28 Sep 2026 20:41:06 -0700 Subject: [PATCH] docs(skills): hyperframes-core keeps data-hf-id and the derived-media lineage Co-Authored-By: Claude Opus 5.5 (1M context) --- skills-manifest.json | 2 +- skills/hyperframes-core/SKILL.md | 1 + skills/hyperframes-core/references/data-attributes.md | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/skills-manifest.json b/skills-manifest.json index da195b39f1..083a08df86 100644 --- a/skills-manifest.json +++ b/skills-manifest.json @@ -34,7 +34,7 @@ "files": 11 }, "hyperframes-core": { - "hash": "b632d12d11eb54e8", + "hash": "d51c4ad2843b06ac", "files": 11 }, "hyperframes-creative": { diff --git a/skills/hyperframes-core/SKILL.md b/skills/hyperframes-core/SKILL.md index 9f4ea91acf..9993146673 100644 --- a/skills/hyperframes-core/SKILL.md +++ b/skills/hyperframes-core/SKILL.md @@ -88,6 +88,7 @@ Surfaced here; full rationale in the linked reference. Do not violate: - Adding a clip: set its `data-start`/`data-duration` intentionally against the clips around it. `data-track-index` is a Studio display lane, not a timing constraint, so it does not need to be free. - A clip that ends past the root `data-duration` is cut off: extend the root `data-duration` to the clip's end in the same edit (`lint` warns `clip_ends_past_root_duration`). - `data-hidden` on any composition element hides it in BOTH preview and render, overriding its time window; it is non-destructive/reversible and toggled by Studio's timeline eye icon. +- Keep `data-hf-id` and every `data-derived-*` / `data-media-source` attribute when you edit an element: `data-hf-id` is its identity in the app, and `data-derived-src` is the picture it was made from. To put an original back, set `src` to `data-derived-src` and remove `data-derived-src`, `data-derived-edit` and `data-media-source`. - Adding a sub-composition: verify its internal `data-composition-id` before wiring the host. ## Validation diff --git a/skills/hyperframes-core/references/data-attributes.md b/skills/hyperframes-core/references/data-attributes.md index 4f410a8656..0fba6d1d1b 100644 --- a/skills/hyperframes-core/references/data-attributes.md +++ b/skills/hyperframes-core/references/data-attributes.md @@ -67,6 +67,7 @@ See `sub-compositions.md` for the full wiring pattern. - **Blast radius — it silences more than the overflow audit.** The attribute is inherited down the subtree (the perception probe walks ancestors), so it also suppresses the rendered-perception checks `text-clipping`, `content-cramped-container`, and `foreground-over-panel` for every descendant. Putting it on a persistent panel that also hosts real foreground content disables collision checks on that content for the panel's whole lifetime. Prefer the narrowest opt-out: scope it to the smallest decorative wrapper, or use per-element `data-layout-bleed="true"` for one intentional primary-text crop. The two canvas/edge checks `primary-offscreen` and `foreground-over-panel` deliberately run **even under** allow-overflow, so it cannot hide a wordmark sliced by the frame or text bleeding onto a panel edge. - `data-layout-ignore` — exclude this element from layout audits entirely. - `data-layout-allow-caption-zone` — opt out of `--caption-zone` / `caption_zone_collision` for intentional lower-third copy (applies to the element and every descendant via `closest`; does **not** suppress overflow, overlap, occlusion, or other layout audits — pair those attrs if needed). +- `data-derived-from` / `data-derived-src` / `data-derived-edit` + `data-media-source="desktop.cutout" | "desktop.inpaint"`: lineage the desktop app writes on a cutout layer or a cleaned picture. `data-derived-from` is the source element's `#id`, `data-derived-src` the original file, `data-derived-edit` what was removed, in words. Preserve them; the runtime never reads them. `data-texture=":"` on a `.cutout-texture` overlay names its texture in the app's library. ## Legacy / Removed Attributes