dreative 0.5.2 → 0.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>Dreative</title>
7
- <script type="module" crossorigin src="/assets/index-CKwmbx2j.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-BQhYTdSa.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-y0gVjC7u.css">
9
9
  </head>
10
10
  <body>
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dreative",
3
- "version": "0.5.2",
4
- "description": "Frontend design skill for coding CLIs with typed planning, specialist treatments, verification, and an optional visual editor.",
3
+ "version": "0.5.4",
4
+ "description": "Frontend design skill for coding CLIs with typed planning, specialist treatments, verification, and an optional visual editor.",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "dreative": "dist/cli/index.js"
@@ -14,9 +14,9 @@
14
14
  "build": "npm run build:server && npm run build:ui",
15
15
  "prepublishOnly": "npm run build",
16
16
  "build:server": "tsc -p tsconfig.json",
17
- "build:ui": "vite build",
18
- "test": "npm run build:server && node --test dist/shared/*.test.js dist/cli/*.test.js",
19
- "docs-check": "npm run build:server && node dist/cli/index.js docs-check",
17
+ "build:ui": "vite build",
18
+ "test": "npm run build:server && node --test dist/shared/*.test.js dist/cli/*.test.js",
19
+ "docs-check": "npm run build:server && node dist/cli/index.js docs-check",
20
20
  "dev": "concurrently \"tsx watch src/cli/index.ts --no-open\" \"vite\"",
21
21
  "start": "node dist/cli/index.js"
22
22
  },
@@ -4,7 +4,7 @@ You MUST read this file before servicing any `propose-skeletons`, `propose-varia
4
4
  `design-page`, or `edit-element` request, and run §12 before every respond. It exists
5
5
  because LLM-designed UIs converge on one templated look. Every rule corrects a known
6
6
  model default, but its category determines how it governs. Requests may carry a `plan` (Dreative's
7
- pre-computed decision: dials, per-section layout families, budgets, lints) — execute
7
+ pre-computed constraints: dials, depth, source strategy, structural/mobile/expression contracts, budgets, and lints) — execute
8
8
  the plan, apply this doctrine to everything the plan doesn't specify. When
9
9
  `plan.skills` names specialist skills (`motion`, `3d`, `interaction`, `immersive`,
10
10
  `cinematic`, `refined`, `media`, `ux`, `mobile`), the matching
@@ -156,7 +156,7 @@ its own plan didn't describe. Hard rules for any expressive+ no-media build:
156
156
  the blueprint's layout-family words couldn't match them, the build
157
157
  restyled a card list and called it the spine — that is a depth-honesty
158
158
  failure (§11), not a detail.
159
- 2. **≥ 2 bespoke drawn/procedural artifacts.** With no photography, the page
159
+ 2. **Bespoke drawn/procedural artifacts carry the missing media role.** With no photography, the page
160
160
  earns visual richness from things MADE for it: a live canvas (meter,
161
161
  field, trace), custom SVG structure (rules, notches, connectors, dials —
162
162
  drawn, not icon-font), procedural texture/grain, a data-driven ornament.
@@ -165,16 +165,14 @@ its own plan didn't describe. Hard rules for any expressive+ no-media build:
165
165
  3. **Type does structural work.** Multi-scale composition (oversized
166
166
  numerals/designators against small mono metadata), real hierarchy per §6
167
167
  — not one font-size row layout repeated N times.
168
- 4. **Motion budget spends on the structure**, not on entrance fades: the
169
- spine's own physicality (things racked, tossed, slid, stamped) is the
170
- choreography. Motion.md's inventory applies at full dial.
171
- 5. **A live rendered layer is required at award tier.** No imagery does not
172
- mean no rendering: the page ships at least one WebGL/canvas system doing
173
- real graphic work a particle field, procedural texture/flowfield,
174
- shader-lit surface, a data-driven instrument that never stops — plus
175
- dimensional motion somewhere real (CSS 3D card physicality, depth-layered
176
- parallax, a lit WebGL surface). A no-media award page with zero rendered
177
- pixels is a text document with transitions. Vocabulary to draw from
168
+ 4. **Motion budget spends on the structure**, not on entrance fades: the
169
+ spine's own physicality (things racked, tossed, slid, stamped) is the
170
+ choreography. Motion.md's treatment and verification rules apply.
171
+ 5. **Choose a rendering layer only when it earns its cost.** No imagery can
172
+ justify Canvas/WebGL when a live procedural or data-driven surface is the
173
+ concept, but award ambition does not require one. Spatial typography,
174
+ layered DOM/SVG composition, masks, or other subject-grounded systems may be
175
+ stronger. Vocabulary to draw from when rendering is warranted
178
176
  (subject-grounded, not decorative): oscilloscope/waveform traces driven by
179
177
  real events · topographic contour lines drifting · dot-matrix/LED field
180
178
  that spells live state · plexus line-network connecting related items ·
@@ -361,10 +359,17 @@ sites win on composition, not decoration; this is where that happens.
361
359
  - Product register: responsive behavior is structural (collapse sidebar, responsive
362
360
  table), not fluid type.
363
361
 
364
- ## 6. Motion
365
-
366
- Every animation answers "what does this communicate?" — hierarchy, storytelling,
367
- feedback, or state change. "It looked cool" = delete it.
362
+ ## 6. Motion
363
+
364
+ Every animation answers "what does this communicate?" — hierarchy, storytelling,
365
+ feedback, or state change. "It looked cool" = delete it.
366
+
367
+ Motion has three roles. **Decorative motion** reveals, responds, or adds ambient
368
+ life. **Structural motion** controls hierarchy, pacing, pinning, and composition
369
+ handoffs. **Transformational motion** changes imagery/type/objects into a new
370
+ form or the next scene. Expressive/award pages evaluate key moments for the last
371
+ two roles; opacity, translate, scale, and slight parallax are not automatically
372
+ enough merely because they animate.
368
373
 
369
374
  **The 100/300/500 rule:** 100-150ms instant feedback (press, toggle) · 200-300ms
370
375
  state changes (menu, tooltip, hover) · 300-500ms layout changes (accordion, modal)
@@ -381,9 +386,12 @@ micro-interactions; the uniform fade-and-rise on every scrolled section is the
381
386
  saturated AI tell. Some brands skip entrance motion entirely — restraint as voice.
382
387
  Product = 150-250ms, state-conveying only, zero page-load choreography.
383
388
 
384
- **Mechanics:** animate transform/opacity by default; blur/backdrop-filter/clip-path/
385
- masks/shadow allowed when they materially improve the effect, bounded to small areas,
386
- verified smooth. Never casually animate width/height/top/left/margins (use FLIP or
389
+ **Mechanics:** use transform/opacity for ordinary local state when they fit, but
390
+ do not make them the unexamined expressive default. Select CSS, GSAP timelines,
391
+ ScrollTrigger, SVG, masks, `clip-path`, DOM fragments, Canvas, WebGL/shaders,
392
+ sequences, video, Lottie, or 3D by visual result, cost, responsiveness, and
393
+ available assets. Use the simplest mechanism capable of making the intended
394
+ transformation convincing. Never casually animate width/height/top/left/margins (use FLIP or
387
395
  grid-template-rows). Sibling stagger `calc(var(--i) * 50ms)` capped at ~500ms total.
388
396
  IntersectionObserver (unobserve after firing), CSS scroll-driven animations, or
389
397
  Motion/GSAP scroll tools — `window.addEventListener("scroll")` is a hard ban. Reveals
@@ -541,8 +549,11 @@ route slugs, nav labels, form field names, logo, legal copy; extract brand token
541
549
  before applying §4 (a purple brand stays purple); apply modernisation levers in
542
550
  order — typography → spacing/rhythm → color recalibration → motion layer → hero
543
551
  recomposition → full replacement only when unsalvageable. Honor existing
544
- accessibility wins and analytics hooks. Preserve prior element-level edits when
545
- `previousFile` is set.
552
+ accessibility wins and analytics hooks. `previousFile` is a composition source
553
+ only for `restyle`. For `relayout`, old code is a content/behavior inventory. For
554
+ `restructure` and `reimagine`, it is a wiring reference only: draft the new
555
+ blueprint independently, then reconcile routes, handlers, data, fields, states,
556
+ accessibility, analytics, required copy, and public APIs.
546
557
 
547
558
  ### The preservation contract (mandatory for ANY redesign of existing code)
548
559
 
@@ -637,9 +648,10 @@ coat of CSS on the old skeleton.
637
648
  **The drastic-change floor (rungs 3–4).** The chronic failure at these rungs is
638
649
  timidity: the agent rebuilds the components but reproduces the old page's shape,
639
650
  so a before/after glance reads as a re-theme. That is a failed restructure. At
640
- rung 3–4 the new page must be **unmistakably a different design at one glance**
641
- someone shown both screenshots should assume different products. Concretely,
642
- change at least TWO structural paradigms, not just their styling:
651
+ rung 3–4 the structural-delta contract must name material changes to page
652
+ architecture, component boundaries, navigation, workflow, or interaction model.
653
+ Tokens, cards, decoration, and entrance motion cannot satisfy it. Relevant
654
+ paradigms can include:
643
655
 
644
656
  - **Navigation model** — top bar → side rail / command palette / dock / sticky
645
657
  chapter nav / full-screen overlay menu.
@@ -651,12 +663,12 @@ change at least TWO structural paradigms, not just their styling:
651
663
  - **Hero concept** — a new signature idea (typographic monument, media plane,
652
664
  3D object, kinetic composition), not the old hero with new colors.
653
665
 
654
- Creativity is bounded by usability: every drastic move must still be MORE
666
+ These are diagnostic possibilities, not quotas. Creativity is bounded by usability: every drastic move must still be MORE
655
667
  user-friendly than what it replaces — clearer hierarchy, fewer steps to the key
656
668
  action, honest affordances, mobile ergonomics intact (§13, skills/ux.md). A
657
669
  restructure that confuses users is as failed as one that changed nothing. The
658
- self-critique pass at these rungs must answer: "name the two-plus structural
659
- paradigms that changed, and why each is easier to use than before." If mid-work you discover the chosen rung cannot
670
+ self-critique pass must explain why the implemented delta honestly satisfies the
671
+ chosen depth and how it improves use. If mid-work you discover the chosen rung cannot
660
672
  honestly deliver the requested outcome (the reference look demands structure the
661
673
  current markup can't express), say so and ask to move up one rung rather than
662
674
  shipping an imitation. Rungs 3–4 on an extracted app still honor §11 preservation
@@ -734,11 +746,11 @@ On touch, whatever hover revealed must be visible by default or reachable by
734
746
  tap — never lost. Custom cursors simply don't exist on touch; don't ship their
735
747
  DOM/listeners there.
736
748
 
737
- **Pinned/scrubbed sections**: pinning is fragile on mobile (URL-bar resize
749
+ **Pinned/scrubbed sections**: pinning is fragile on mobile (URL-bar resize
738
750
  fires viewport changes mid-pin; iOS momentum scroll skips scrub frames).
739
- Strategies in preference order: (1) keep the pin but shorten it (≤ 1.5
740
- viewports) and drive it with `position: sticky`, never JS pinning; (2) unpin
741
- the same content as stacked sections with simple in-view reveals;
751
+ Strategies in preference order: (1) keep the pin but shorten it and drive it
752
+ with `position: sticky` when reliable; (2) redesign the same idea as a shorter
753
+ mask, layered-parallax, or state handoff sequence rather than merely disabling it;
742
754
  (3) `ScrollTrigger.matchMedia()` / a `matchMedia` branch that swaps the whole
743
755
  choreography. Never let a desktop pin length ride on a phone.
744
756
 
@@ -765,10 +777,10 @@ clamps DOWN gracefully (hero ≥ 2rem, body stays ≥ 16px — iOS zooms inputs
765
777
  under 16px); sticky navs shrink rather than stack; test the three widths 320 /
766
778
  768 / 1280 mentally before responding.
767
779
 
768
- **Motion budget on mobile**: entrance choreography total 600ms (vs 900ms
769
- desktop), at most 1 scroll-driven sequence per page, marquees pause when
770
- off-screen. Battery is a design constraint: continuous rAF loops must idle
771
- when nothing animates.
780
+ **Motion budget on mobile**: shorten travel and timelines according to content,
781
+ viewport, and measured device cost. Preserve one defining idea when feasible;
782
+ marquees pause off-screen and continuous rAF loops idle when nothing animates.
783
+ Battery is a design constraint, not a reason to erase the concept.
772
784
 
773
785
  ## 14. Typography sourcing (escape the first reflex)
774
786
 
@@ -34,17 +34,16 @@ Enumerate what your environment can actually produce, and write the result down
34
34
  Rules:
35
35
  - Probe by LOOKING (list your tools, `which ffmpeg`, check MCP config), never by
36
36
  assuming. A capability you didn't verify doesn't exist.
37
- - If a capability is missing but the design clearly wants it (e.g. a cinematic
38
- brief with no video-gen), you MUST ask a real question with a real choice —
39
- **stating the gap and moving on is not an offer, it's a disclosure.** The
40
- bug this catches: saying "video generation isn't available, so I'll use
41
- stills" and continuing is a FAILURE even though it's honest. The fix is a
42
- question with at least two live options: "install <concrete MCP/tool name>
43
- now and use it" vs "skip it, use <the specific fallback>". Ask it in the
44
- decision phase (§3), phrased as a genuine fork, not a heads-up. Never
45
- install tools silently; never silently degrade either.
46
- - The probe result changes the blueprint: no video-gen → hero loops become
47
- generated stills + ken-burns or a shader surface; **no image-gen → media
37
+ - Missing video, 3D, or separated source layers is not automatically a blocker.
38
+ First plan the strongest honest treatment available from generated/sourced
39
+ stills, local image processing, transparent cutouts, SVG, CSS, Canvas,
40
+ generated keyframes, or existing project assets. Ask for a tool or source
41
+ asset only when the requested result cannot be approximated convincingly;
42
+ present the concrete best-effort fallback in that question. Never install a
43
+ tool silently and never leave an "advanced animation later" placeholder.
44
+ - The probe result changes the blueprint: no video-gen stills become layered
45
+ scenes, masks, related keyframes, frame sequences, tiles/fragments, Canvas
46
+ samples, or shader textures as the concept warrants; **no image-gen → media
48
47
  cells become `source-image` (DESIGN.md §7's priority: verified stock/CDN
49
48
  photography), every planned cutout prop becomes a sourced-and-matted photo
50
49
  or is cut, and any 3D of an organic real-world subject is re-planned as a
@@ -59,7 +58,7 @@ Rules:
59
58
  Draft the page as a compact table BEFORE asking anything — the decision phase
60
59
  presents choices about a concrete plan, not abstractions. Per section:
61
60
 
62
- | section | layout family | media plan | motion treatment | interaction | intensity | fallback |
61
+ | section | layout family | media + preparation | motion class/treatment | interaction | intensity | fallback |
63
62
 
64
63
  - **media plan** — one of: `generate-image` (subject + exact aspect + palette/
65
64
  light-temperature prompt notes), `generate-video` (loop subject, 5-10s,
@@ -72,8 +71,7 @@ presents choices about a concrete plan, not abstractions. Per section:
72
71
  where media itself becomes the visitor-controlled spectacle, not a specific
73
72
  catalog effect. A different solution uses a registered planning-time
74
73
  substitution with observable success criteria and evidence IDs.
75
- When the set-piece uses a depth dive (the default for image-led `award`
76
- concepts with depth-capable assets), its
74
+ When a concept-led set-piece uses a depth dive, its
77
75
  `generate-image` cell must plan a DEPTH-CAPABLE composition (a corridor,
78
76
  room, landscape, machinery receding — something a camera can enter) and
79
77
  the companion assets in the same cell: the depth map and/or the separated
@@ -102,17 +100,18 @@ presents choices about a concrete plan, not abstractions. Per section:
102
100
  Every 3D prop cell also names its BERTH (3d.md §3): which lane/stage of
103
101
  the section it occupies and what the layout does to make room — a prop
104
102
  planned "over the hero image" or with no berth is an invalid cell.
105
- At the `award` tier the outcome gate is one unmistakable dimensional or
106
- spatial signature. The proven default is a recognizable real GLB or photoreal
107
- cutout prop with a berth and asset source. A typography, photographic, data,
108
- scene-instrument, or other alternative must use `award.spatialSignature` and
109
- prove equivalent depth, recurrence, interaction, and dominance on desktop
110
- and mobile. Generic orbs/blobs/toruses remain invalid.
111
- At dial ≥ 8 the media column marks each hero/key image quiet-class or
112
- PIXEL-class. The proven default is at least half pixel-class (minimum three,
113
- set-piece included), each a different mechanism. A coherent alternative may
114
- substitute `media.award.pixelCoverage` only when it visibly develops through
115
- at least three materially different roles or states and carries runtime proof.
103
+ At the `award` tier the outcome gate is one unmistakable spatial, media,
104
+ typographic, or material signature that shapes the journey. If the concept
105
+ calls for a recognizable physical subject, use a real GLB or photoreal cutout
106
+ with a berth and source. Typography, layered photography, data, SVG/Canvas,
107
+ or a scene instrument may be the stronger direct choice; no substitution is
108
+ needed merely because 3D is absent. Generic orbs/blobs/toruses remain invalid.
109
+ At expressive/award, the media column records whether each hero/key image
110
+ stays flat or becomes motion-ready through cutouts, depth layers, masks,
111
+ fragments, maps, alternate states, a frame sequence, or a Canvas/WebGL
112
+ texture. Transform only where it strengthens the concept; a still may remain
113
+ flat as an intentional rest. The default in `media.keyAssetTreatment` is a
114
+ coherent asset-preparation decision, not a pixel-effect quota.
116
115
  - **Travel map (mandatory when any element persists across sections).** If
117
116
  the blueprint contains a fixed canvas object, a recurring signature, or any
118
117
  scroll-morphing prop that lives through more than one section, add a travel
@@ -121,35 +120,67 @@ presents choices about a concrete plan, not abstractions. Per section:
121
120
  it never sits over text or controls (DESIGN.md §15). No berth fits ⇒ the
122
121
  object is scripted HIDDEN for that section. A persistent object without a
123
122
  travel map is an unplanned collision that verify will find later — plan it
124
- now. The set-piece at dial 8 must also be pixel-transforming per
125
- media.md §3 (placement choreography like orbit/collapse doesn't qualify).
123
+ now. When the set-piece claims transformation, its pixels, layers, form, or
124
+ role must visibly change; placement choreography alone does not qualify.
126
125
  - **Diversity or development (dial ≥ 7 / expressive+).** Choose and record one
127
- path in `creativeStrategy`. Diversity uses at least four distinct mechanisms
128
- across three distinct drivers. Development uses one coherent signature
129
- mechanism that changes through at least three materially different roles or
130
- states, supported by two quieter secondary mechanisms and two drivers. The
131
- same reveal repeated with different values is neither path. This keeps the
132
- proven anti-repetition safeguard without forcing unrelated effects into a
133
- coherent concept.
134
- - **motion treatment** from motion.md/immersive.md/cinematic.md vocabulary,
135
- with the dial-appropriate ambition. **motion.md §5's verification inventory is a hard
136
- plan gate, not a target:** at `expressive`/`award` ambition the blueprint
137
- must enumerate every §9 item for its dial — which element carries it, what
138
- triggers it — or explicitly name the item as cut with a reason. A plan that
139
- neither covers nor justifies a §9 item is incomplete; rework it before
140
- presenting, don't ship the gap to the build.
126
+ path in `creativeStrategy`. Diversity uses only the mechanisms and drivers the
127
+ concept needs, tied together by a shared language. Development evolves one
128
+ coherent signature through materially different roles with quieter support.
129
+ The same reveal repeated with different values is neither path. Do not add
130
+ unrelated mechanisms to satisfy a count.
131
+ - **motion treatment** from motion.md/immersive.md/cinematic.md vocabulary,
132
+ with dial-appropriate ambition. At `expressive`/`award`, complete every
133
+ `motionTreatment` field below and name the element/driver for each planned
134
+ moment. A generic or incomplete treatment is reworked before presentation.
141
135
  - **intensity (the pacing map)** — 1–10 per section: how loud this section is
142
136
  (motion + media + visual weight combined). The page must read as a CURVE, not
143
137
  a flat line: uniform intensity fails in both directions (all loud = exhausting,
144
- all quiet = the set-piece feels bolted on). Place deliberate rests (≤ 3)
145
- immediately before and after the set-piece so it lands; the hero and the
146
- set-piece section are the peaks, nothing else matches them. A blueprint whose
138
+ all quiet = the set-piece feels bolted on). Place deliberate rests around
139
+ hero moments where the content permits so they land; supporting sections
140
+ should not compete with them. A blueprint whose
147
141
  intensity column is all the same number is incomplete — rework the pacing
148
142
  before presenting.
149
- - **fallback** — for every ambitious cell (WebGL, sim, scrubbed sequence,
150
- generated video), the concrete boring version that ships if the fancy one
151
- fails runtime verification. A plan cell without a fallback is not ambitious,
152
- it's fragile.
143
+ - **fallback** — for every ambitious cell (WebGL, sim, scrubbed sequence,
144
+ generated video), the concrete boring version that ships if the fancy one
145
+ fails runtime verification. A plan cell without a fallback is not ambitious,
146
+ it's fragile.
147
+
148
+ ### Motion treatment and complexity budget
149
+
150
+ At expressive/award, write a coherent scene sequence before implementation. For
151
+ every major section record in `motionTreatment`:
152
+
153
+ - static composition and motion class (`none`, `decorative`, `structural`, or
154
+ `transformational`);
155
+ - starting and ending visual states;
156
+ - what changes, persists, pins, enters, transforms, combines, fragments, or exits;
157
+ - the handoff into the next composition;
158
+ - narrative/emotional purpose;
159
+ - rendering mechanism;
160
+ - mobile translation and reduced-motion state.
161
+
162
+ Decorative motion introduces or responds. Structural motion controls hierarchy,
163
+ pacing, pinning, and composition. Transformational motion changes form or turns
164
+ one composition into the next. Opacity, translate, scale, and light parallax are
165
+ not sufficient evidence of structural or transformational motion.
166
+
167
+ Record `motionComplexityBudget`: normally two or three hero moments (one is valid
168
+ for a short page), calm sections around them, shared motion language, target-
169
+ device limits, and progressive enhancement. Spend complexity where the story
170
+ changes state; do not distribute medium-complexity effects evenly.
171
+
172
+ Choose the simplest mechanism capable of producing the intended transformation
173
+ convincingly. Simplicity means implementation suitability, not visual blandness.
174
+ Choose deliberately among CSS, Motion, GSAP/ScrollTrigger, SVG masks/filters,
175
+ `clip-path`, DOM fragments, Canvas 2D, WebGL/shaders, image sequences, video,
176
+ Lottie/vector animation, and 3D. Neither basic transforms nor WebGL/3D/pixels are
177
+ an unexamined default.
178
+
179
+ Before approving the plan, record `antiDefaultReview` answers: are images mostly
180
+ fading/scaling/sliding; are sections independent reveals; where is the major
181
+ composition handoff; how does motion change visual state; could this system fit
182
+ an unrelated site; what is memorable; and how does movement express the concept?
183
+ If the result is generic at expressive/award, revise the scene plan now.
153
184
 
154
185
  Plus four page-level lines: register + design read (DESIGN.md §2), signature
155
186
  element, animation stack (ONE system: GSAP+Lenis or motion/react — motion.md §2),
@@ -160,10 +191,11 @@ discovered at build time: if the signature is a visual OBJECT, it must be a
160
191
  subject a stranger names correctly (3d.md §1–2's subject test). An abstract
161
192
  crude coded organic form is a hard-gate failure. Generic spheres/orbs/rings/
162
193
  blobs/toruses with no brand-native function remain invalid signatures. The
163
- proven `award` default is a real GLB or rung-2 transparent photoreal cutout;
164
- an alternative spatial typography, layered photography, data structure, or
165
- interactive instrument uses a registered substitution and must outperform the
166
- default on depth, recurrence, input response, and visual dominance. **Coded custom 3D is
194
+ award work chooses the medium that makes the signature most legible and
195
+ concept-specific. A real GLB or rung-2 transparent photoreal cutout is preferred
196
+ when the signature is a recognizable physical subject; spatial typography,
197
+ layered photography, data structure, or an interactive instrument can be the
198
+ direct plan when the concept supports it. **Coded custom 3D is
167
199
  capability-gated at the probe (§1):** offer/plan it only when the probe
168
200
  verified an actual quality path — a real GLB in reach, image-gen for
169
201
  albedo/label textures, an HDRI/environment source. No verified texture path
@@ -231,8 +263,17 @@ hard cap 7). Structured tools always offer an "Other" free-text option, so
231
263
  every question doubles as a remarks channel — and the last question asked
232
264
  should explicitly invite extra direction.
233
265
 
234
- 1. **Depth** (redesigns of existing code only) — the §11 transformation-depth
235
- ladder: restyle / re-layout / restructure / reimagine.
266
+ 1. **Depth** (redesigns of existing code only) — the §11 transformation-depth
267
+ ladder: restyle / re-layout / restructure / reimagine.
268
+ Record it independently from ambition. For every page, write the current and
269
+ proposed models/paradigms, material changes, surviving/rebuilt boundaries,
270
+ preserved contracts, retained patterns with rationale, forbidden carryovers,
271
+ and a depth-honesty assessment. Then write the page-level mobile blueprint
272
+ (task, first viewport, exact order, thumb action, safe areas, navigation,
273
+ desktop translations, media/motion/forms, 390px and 320px compositions, and
274
+ why it is not desktop DOM stacking). Classify the page register before
275
+ composing; transactional, account, admin, and utility pages do not inherit a
276
+ marketing shell.
236
277
  2. **Treatments** (multi-select — THE canonical skill-picker list). List every
237
278
  option **individually**, never pre-bundled into a combo choice (a
238
279
  "refined+motion+interaction+ux+mobile" single option is a bug — the user
@@ -472,7 +513,8 @@ Persist the approved plan first to `.dreative/plan.json` using
472
513
  `references/ARTIFACTS.md` and `schemas/plan.schema.json`; this is the delivery
473
514
  contract consumed by `dreative audit`. Render the same decisions as a readable
474
515
  `.dreative/plan.md` for the user and session re-entry. Keep section and asset
475
- statuses synchronized in JSON as the build progresses. Set `doctrineVersion: 2`,
516
+ statuses synchronized in JSON as the build progresses. Set `version: 3` and
517
+ `doctrineVersion: 3`,
476
518
  record `implementationStartedAt` immediately before code changes, and ensure all
477
519
  rule exceptions predate it. **The first time this run writes into
478
520
  `.dreative/`, also write `.dreative/README.md`** with exactly this content
@@ -72,17 +72,30 @@ Detailed doctrine belongs in those references, not in this orchestration file.
72
72
  work, show a page × skill matrix: the user can assign treatments to specific
73
73
  pages, and approve routing for selected skills left unassigned. Every section
74
74
  names its layout family, skills, assets, interactions, mobile translation,
75
- fallback, and verification criteria.
75
+ fallback, and verification criteria. Expressive/award plans also include a
76
+ motion treatment for every major section: static composition, start/end
77
+ states, changes, pins, handoff, purpose, mechanism, mobile translation, and
78
+ reduced-motion state.
79
+ - For every existing page, record its register, source strategy, concrete
80
+ existing-versus-proposed structural delta, page-level mobile blueprint, and
81
+ typed verification criteria. `restyle` uses `patch`, `relayout` uses
82
+ `recompose`, and `restructure`/`reimagine` use `rebuild-from-contracts`.
83
+ Expressive/award pages also need a content/state-specific expression contract
84
+ or a documented intentional-calm rationale. Record project coherence without
85
+ repeating one branded shell across unlike page registers.
76
86
  - Render a concise `.dreative/plan.md` for the user and for session re-entry.
77
87
 
78
88
  The approved plan is a delivery contract. A section ends as `shipped`,
79
89
  `fallback`, or `cut` with a reason—never silently omitted.
80
90
 
81
91
  At `expressive` and `award`, choose one coherent quality path: `diversity`
82
- (several mechanisms across several drivers) or `development` (one signature
83
- mechanism evolving through at least three materially different roles, supported
84
- by two quieter mechanisms). Experimental work explores one non-obvious candidate
85
- per major section, then selects only the strongest two or three to ship.
92
+ (several concept-related mechanisms/drivers) or `development` (one signature
93
+ mechanism evolving through materially different roles with quiet support).
94
+ Allocate a contextual motion-complexity budget: concentrate effort into a small
95
+ number of hero moments, name calm sections, and run the anti-default review.
96
+ Do not satisfy ambition through mechanism quotas. Experimental work explores one
97
+ non-obvious candidate per major section, then selects only the strongest two or
98
+ three to ship.
86
99
 
87
100
  ### 3.3 Select skills
88
101
 
@@ -117,16 +130,19 @@ must appear somewhere in the overall plan, but not on every page.
117
130
 
118
131
  ### 3.4 Build
119
132
 
120
- - Prepare planned media before section implementation. Record each asset and its
121
- delivery status in the plan.
133
+ - Prepare planned media before section implementation. Treat generated stills as
134
+ raw material: decide whether each asset stays flat or needs cutouts, depth
135
+ layers, masks, fragments, variants, maps, or a frame sequence. Record the
136
+ decision, derivatives, rationale, and delivery status in the plan.
122
137
  - Follow the chosen framework adapter and the repository's established patterns.
123
138
  - Preserve the manifest unless the user explicitly approved a change; record
124
139
  approved divergence with a reason.
125
140
  - Implement blueprint sections in order. Keep the machine plan status current.
126
141
  - Do not open recipe catalogs before `conceptExploration` records three
127
142
  brand-native concepts. Record every recipe file and load time in `recipeAccess`.
128
- - A restructure or reimagine rebuilds markup/component boundaries when necessary;
129
- it is not a stylesheet-only restyle.
143
+ - A restructure or reimagine creates the new blueprint independently, uses old
144
+ code only as a behavior/wiring reference, and then reconciles preservation.
145
+ It is not a stylesheet-only restyle.
130
146
  - Every heavy effect ships with its planned reduced-motion, mobile, loading, and
131
147
  runtime fallback.
132
148
 
@@ -147,13 +163,20 @@ Verification is evidence, not prose asserting that something was checked.
147
163
 
148
164
  1. Run the repository's targeted tests, typecheck, and build.
149
165
  2. Run the page and perform the `ux` functional audit.
150
- 3. Verify desktop and approximately 390px mobile.
166
+ 3. Verify desktop (approximately 1280/1440px), 390×844 mobile, and a 320px
167
+ narrow-mobile fallback for every important page.
151
168
  4. Check the console, links, forms, keyboard path, states, reduced motion,
152
169
  responsive overflow, and pointer hit areas.
153
170
  5. For motion/WebGL/video, record runtime evidence and performance numbers.
171
+ Capture initial, early, mid-transition, final, handoff, mobile, and
172
+ reduced-motion states; add pinned midpoint/exit states when pinning exists.
154
173
  6. Reconcile every plan section and asset against what visibly shipped.
155
- 7. Write `.dreative/verify.json` and run `dreative audit`.
156
- 8. Fix every error. Warnings require either a fix or a recorded justification.
174
+ 7. At expressive/award, visually inspect the captured states, make at least one
175
+ refinement to timing, composition, readability, or continuity, and record it.
176
+ 8. Write `.dreative/verify.json` v2. Associate each row to a typed criterion,
177
+ page/section, evidence kind, viewport class, and artifact/test. Run
178
+ `dreative audit`.
179
+ 9. Fix every error. Warnings require either a fix or a recorded justification.
157
180
 
158
181
  Every evidence-backed substitution references passing evidence IDs whose proof
159
182
  meets its declared success criteria. Vague reasons such as "it did not fit",
@@ -21,6 +21,30 @@ in `recipeAccess`.
21
21
  - Sticky CSS for simple pinning; cap pin length and remove/shorten on mobile.
22
22
  - Velocity treatments use damped/clamped derivatives, never raw scroll deltas.
23
23
 
24
+ ## Optional transformation patterns
25
+
26
+ Choose only patterns that express the concept:
27
+
28
+ - **Image fragmentation:** split a source into aligned DOM/SVG/Canvas tiles or
29
+ sampled pixels; disperse, filter, and reconstruct the actual image.
30
+ - **Composition handoff:** carry an object, mask, grid, or type structure from
31
+ one section into the next instead of resetting the page.
32
+ - **Layered image dive:** separate depth planes or use a depth map and move the
33
+ camera through the composition.
34
+ - **Mask migration:** evolve one mask window across images or sections.
35
+ - **Object persistence:** keep a key subject staged while its environment,
36
+ scale, supporting content, and berth change.
37
+ - **Generated-keyframe morph:** blend related still states through masking,
38
+ displacement, or a bounded frame sequence.
39
+ - **Pixel-to-object reconstruction:** assemble sampled text/image particles into
40
+ a recognizable subject.
41
+ - **Typography-to-image:** use readable type as mask, grid, path, or fragment
42
+ source that becomes imagery.
43
+ - **Environmental system:** drive texture, light, particles, type, and objects
44
+ from the same scroll/interaction state.
45
+ - **Editorial sequence:** treat a long section as one pinned timeline with
46
+ deliberate internal states rather than independent blocks.
47
+
24
48
  ## Type
25
49
 
26
50
  - Split lines/words/characters only for selected display moments; keep accessible