| name | open-design-game-ui-takeover |
| description | Take over an approved Open Design artifact (game UI, VFX, skill, RIG, enemy/boss) into Darkbone Archer without degrading the runtime. Use whenever Codex must analyze, port, integrate, or review an Open Design standalone; apply a responsive Home, Map Select, Talent, Mask, Fusion, Victory, or settlement design; port an Open Design VFX/RIG lab into Phaser; preserve existing animations omitted by a mockup; or prove current-runtime vs standalone vs integrated-runtime fidelity before merge. |
Open Design Game UI Takeover
Port only what was approved. A standalone is authoritative by component and axis, not by omission.
Craft-fidelity gate: the integrated runtime result must pass the 7-point game-feel checklist in
open-design-game-ui-concept/references/darkbone-visual-language.md at every viewport — porting an approved
gorgeous standalone into a flattened web-feel implementation (lost engraving/materials/breathing motion) is a
fidelity regression even when the layout matches; compare rendered-vs-rendered against the standalone AND
against the checklist. Fidelity scoring runs on codex exec -m gpt-5.6-sol -c model_reasoning_effort=high;
for motion-bearing components compare driven videos/keyframes, never stills alone.
Takeover standard = claude-design-standalone-takeover (owner benchmark)
For VFX / skill / RIG / enemy / boss / summon artifacts, the takeover flow IS the battle-tested
claude-design-standalone-takeover skill — follow it in full: completeness audit FIRST with
refuse-to-port on missing key contracts (palette, integration map, source entrypoints, density/fanout,
budget mapping, texture-memory ownership, behavior contract), surface classification, deep source reading
(painters/timelines/anchors/pivots/tuning — never port from screenshots), the required
takeover-analysis.md sections, the loading/bundle + localization + level-up card copy hard rules, R2
raw-source archive (the learn loop) with Phase-2 Studio onboarding and the ±5% Phaser fidelity gate before
gameplay wiring, mobile #game video verification for live content, real playtest/perf scenarios, and the
full default decision-rules table. Do not re-derive a thinner flow here.
Open Design-specific substitutions when applying that standard:
- Artifact intake: instead of a returned zip, bind the OD project's immutable revision — record
artifactBinding (projectId, revisionId, artifact SHA-256, preview-manifest SHA-256, generation-evidence
SHA-256 for gpt-5.6-sol / ultra). Copy the artifact bytes into .handoff/<ts>-<feature>/incoming/
unchanged and archive to R2 as raw/source exactly like a Claude Design return.
- Return-to-designer: a supplemental handoff becomes a side-chat fix run in the same OD project
(
od chat new --seed-from + run; see open-design-control.md) with the missing-contract list as the brief;
re-bind fresh generation evidence after every fix run.
- Fidelity/review scoring:
codex exec -m gpt-5.6-sol -c model_reasoning_effort=high; motion-bearing
comparisons use driven videos with per-candidate parity, never stills alone.
- Interactive labs expose
window.DARKBONE_VFX_LAB — drive it for beat/density/floor evidence instead of
hand-clicking preview controls.
UI surfaces keep the preservation/authority/evidence machinery below on top of that standard.
Read docs/hard-rules/ui-adaptation-upgrade-only-contract.md, the handoff's
preservation-contract.json, and authority-and-proof.md before editing
runtime source.
Workflow
-
Validate the preservation contract with open-design-game-ui-handoff.
-
Render the standalone independently. Archive the exact artifact plus its successful preview manifest. Record
artifactBinding with project, immutable revision, artifact SHA-256, preview-manifest SHA-256,
preservation-contract SHA-256, and the validated gpt-5.6-sol / ultra generation-evidence SHA-256. Reject a
filtered/mutable preview or generation evidence from another model, reasoning tier, run, revision, or artifact.
Inventory source, states, controls, motion, responsive branches, and placeholders.
If the immutable preview service later becomes unavailable or its successful full manifest did not capture
every comparison-plan Cartesian row, run capture_open_design_preview.mjs --scenario-set=contract-cartesian
with --archive-artifact and --source-preview-manifest. This creates a separately hashed archival replay
manifest from the exact artifact bytes. The capture subtracts every semantic tuple already present in the
immutable preview, keyed by (surface, locale, viewport, state), and records only missing rows. It supplements
the original revision proof; it never replaces or rewrites the original preview manifest or generation evidence.
-
Write takeover-analysis.md. For every component, copy changeScope plus the six-axis authority matrix and
identify the exact standalone implementation to port. Copy standaloneMotionPolicy,
runtimeMotionImplementation, and runtimeOwnerAnchors without drift. Treat every axis outside
changeScope as frozen.
When one approved artifact covers several surfaces but this PR stages only some of them, declare strict
takeoverScope in takeover-evidence.json. It must list the in-scope surface ids and the exact remaining
contract complement with policy frozen-runtime-no-change. The artifact, full preview manifest, generation
evidence, and complete preservation contract remain bound; scope only limits which surface matrices this
takeover is authorized to emit. Omitting takeoverScope keeps full-contract validation.
-
Classify every standalone omission as unspecified-preserve-runtime. Never infer deletion.
-
Build the runtime diff one component at a time:
- port Open Design-owned layout or visual axes;
- move runtime-owned identity, animation, interaction, copy, and data paths intact;
- retain reduced-motion branches, timers, event cleanup, state transitions, and input semantics;
Static Placeholder Rule
When Open Design shows a static character portrait, icon, level emblem, mask, talent node, Fusion result, or
Victory result where runtime already animates, treat the standalone element as a layout/material reference only.
Keep the live runtime implementation unless the authority matrix explicitly assigns motion to Open Design and
the replacement passes same-beat video comparison.
This is a scope rule, not a fidelity guess. A layout-only commission may move or resize a dynamic component, but
it cannot authorize a new painter, timeline, timing curve, lifecycle, input behavior, or reduced-motion branch.
For a layout-only Home task, preserve the animated character rig/rotation, ritual floor, floating mask sigils,
level emblem, talent emblem, character-switch entrance, and circular animated battleSigilSVG() / .sortie
deploy medallion. A rectangular standalone CTA is a placement proxy, not permission to replace that medallion.
For Talent, preserve the Wedjat eyes, colored pupils, legacy trunk, flowing links, breathing states, and
investment reveal. For Fusion and Victory, preserve or improve the complete reveal choreography, not only the
settled frame.
Blocking Conditions
- any authority cell is absent or differs from the approved preservation contract;
- takeover
changeScope differs from the approved preservation contract;
- runtime continuity proof is missing, broadens scope, or fails to retain the approved runtime owner anchors;
- runtime-owned source paths were deleted or reimplemented without necessity;
- a current animation became static, shorter in meaning, visually weaker, or absent;
- the integrated UI is better at one viewport but loses a quality dimension at another;
- current and integrated evidence is not aligned by viewport/state/beat;
- artifact, preview manifest, preservation contract,
gpt-5.6-sol / ultra generation evidence, or owner
approval is not hash/revision-bound;
- an archival replay is used without exact artifact bytes, the original successful immutable preview manifest,
or an approval receipt that binds both manifest hashes;
- the full component x viewport x locale x state matrix is incomplete, including preserved components;
- a staged takeover omits any out-of-scope contract surface, uses a policy other than
frozen-runtime-no-change, or emits authority/continuity/rendered evidence outside takeoverScope;
- current/standalone/integrated evidence reuses a path or content hash within a row or across different proof contexts;
- owner approval does not bind the validator-produced digest of the exact reviewed stills, videos, keyframes, and verdicts;
- any component on a motion-critical surface lacks current/standalone/integrated video and at least three
current/standalone/integrated keyframes;
- any dimension verdict is
regressed, any unexplained omission remains, or owner approval is missing.
The standalone is never allowed to erase quality that it did not attempt to specify.