editorbrain 0.29.1 → 0.31.0

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.
@@ -40,8 +40,22 @@ editorbrain search brief --file .editorbrain-local/my-video/search-brief.json --
40
40
 
41
41
  Search uses a mechanism query plus source meaning/constraints for styles, and specific event queries for details. It returns up to eight styles and six candidates per event query, with pinned source documents and retrieval ranks. These are candidates, not eight recommendations to show the user. Default `detail: "summary"` preserves fit constraints, ranks, IDs and source hashes while omitting full recipes. Read pinned documents only for the shortlisted examples. `detail: "full"` (CLI `--details`) returns full indexed payloads when needed, not additional search results; keep large responses in private local files. Check `evidenceCoverage` before assuming completeness. Embeddings may still use a provider; no source video upload or generative model analysis/review occurs in this path. Only the text needed for embeddings is sent to the embedding provider. Telemetry measures server calls, not your host agent's token consumption.
42
42
 
43
- Inspect the best few using `get_reference` / `library get`, then `view_example` for actual returned image hashes. Use `get_reference_media` for relevant motion/audio intervals. The search response supplies metadata/instructions; it does not automatically show images in the host. Keep evidence source hashes. Never fabricate media hashes, links or timestamps from a ranking.
43
+ Survey the returned styles and event candidates by the needs they cover; then inspect selected examples using `get_reference` / `library get` and `view_example` for actual returned image hashes. Use `get_reference_media` for relevant motion/audio intervals. The search response supplies metadata/instructions; it does not automatically show images in the host. Keep evidence source hashes. Never fabricate media hashes, links or timestamps from a ranking.
44
44
 
45
- Choose based on narrative function, required brand rules, available resources, readability, tone and continuity. Record what you retain, adapt and omit, with a source hash and inspected interval for each borrowed mechanism. Identify newly designed choices separately. Choose a coherent direction, not a collage of the top results; use a fixed component only if its action and composition fit. No obligation to copy a whole reference style or add animation to each beat. If there is no fit, say so and refine one mechanism query while keeping constraints; avoid endless searches or claiming the top score proves quality. Broaden beyond the subject when transferable techniques exist in other niches.
45
+ Newer services include a bounded leading rule for style coherence/adaptation and event `preserve`/`change`, alongside exclusions. `omittedFields` also names partially returned arrays: these cues are not complete recipes. For the selected direction, read its pinned analysis and inspect the relevant sequence before implementing; never treat a short description such as “light cards” as the whole style. Older services may omit positive cues entirely: follow `readSource` instead of interpreting absence as no adaptation guidance.
46
+
47
+ Before turning the shortlist into a design, use [editorial evidence](editorial-evidence.md) to record the inspected mechanism, its project beat and preference-aware adaptation. This is the primary editing library; motion examples complement the resulting direction.
48
+
49
+ Choose based on narrative function, required brand rules, available resources, readability, tone and continuity. Different beats can borrow different mechanisms from several styles while sharing one identity. Record what you retain, adapt and omit, with a source hash and inspected interval for each borrowed mechanism; identify newly designed choices separately. Use a fixed component only if its action and composition fit. No obligation to copy a whole reference style or add animation to each beat. If a consequential need remains uncovered, refine that mechanism query while keeping constraints; stop when the needed evidence is usable rather than searching indefinitely. Broaden beyond the subject when transferable techniques exist in other niches.
50
+
51
+ For example, a fast faceless tutorial may need spatial type for the hook, an image
52
+ collage to show overload, a legible real demonstration and an object-driven
53
+ transition. Use the first request's style query for the overall direction and its
54
+ two event queries for the most important distinct needs. A follow-up may cover
55
+ the remaining gap with `mode: "events"`; retain the same inspected source and
56
+ constraints. Do not invent a larger event array or treat `--details` as more
57
+ candidates. Reuse valid evidence, cache overview sheets locally and open only the
58
+ source intervals/code needed for the chosen mechanisms. A simple scoped edit may
59
+ already have enough evidence and require no extra query.
46
60
 
47
61
  If this tool is absent, report the installed version limitation, inspect sources yourself and use explicit library lookup if useful. Do not silently upload material to the older server-analysis method. A video your host cannot inspect requires accessible media tools or a disclosed limited plan, not invented observations.
@@ -6,6 +6,10 @@ command availability first; older CLI versions do not include these commands.
6
6
  Keep source footage and masters local unless the user asks to upload them.
7
7
  `storage status` / MCP `storage_status` reports actual workspace capacity and
8
8
  reservations. The current upload limit is 90 MiB **per file**, separate from quota.
9
+ Compare the actual file bytes with capacity minus used and reserved bytes before
10
+ uploading. If it does not fit, inspect eligible cleanup candidates or prepare a
11
+ smaller copy without sacrificing necessary legibility. Do not change a plan/quota
12
+ or bypass protected files. Cleanup still follows the authorization below.
9
13
 
10
14
  For review, prepare a separate small copy:
11
15
  ```sh
@@ -21,10 +25,18 @@ conversion. Never overwrite or delete the original to save space.
21
25
  When sharing is authorized, upload the inspected copy with `assets upload <file>
22
26
  --purpose preview --source-sha256 <original-hash>`. Use its **own** hash when
23
27
  registering a review/sample. Do not present preview verification as master QA.
28
+ `--source-sha256` is optional and must identify different source bytes; omit it
29
+ when uploading the already prepared file without a distinct source asset.
24
30
  New final uploads use `--purpose final`; absent purpose protects as original.
25
31
  Re-uploading identical bytes reuses the previous category; it cannot relabel a
26
32
  protected master as removable. There is no automatic server compression.
27
33
 
34
+ Prefer H.264/AAC MP4 for ordinary web/mobile review; preserve special formats only
35
+ when the deliverable needs them. After registering the sample, open its actual
36
+ project page in the correct workspace and verify visible playback and time
37
+ progression. A successful upload, loaded metadata or local decode does not prove
38
+ the hosted player works. Report devices or audio review not actually tested.
39
+
28
40
  Cleanup is optional and separate from editing. Show exact names, sizes and IDs,
29
41
  obtain explicit approval, then owners may use `storage cleanup --ids <sha>,<sha>
30
42
  --confirm` (max 20), or the web storage panel. Only unused previews/temporaries can
@@ -1,6 +1,8 @@
1
1
  # EditorBrain Studio — optional creative tools
2
2
 
3
- Load this only when creating/transcribing a resource. Check `editorbrain help` or MCP tool discovery first: earlier clients/services may not support Studio. `studio catalog` / `studio_catalog` reports availability, ownership and creative credits. These credits are separate from library searches. Do not request provider keys or activate personal integrations for built-in tools.
3
+ Load this only when creating/transcribing a resource. Check `editorbrain help` or MCP tool discovery first: earlier clients/services may not support Studio. `studio catalog` / `studio_catalog` reports availability, per-tool `tools[].canSpend` and creative credits. Scribe accepts editing access; Prism/Vox/Aura require a workspace owner (including an owner’s editor-scoped connection). Readers cannot start jobs. On older servers without per-tool permissions, use the legacy catalog `canSpend` and report authorization failures. These credits are separate from library searches. Do not request provider keys or activate personal integrations for built-in tools.
4
+
5
+ When the user explicitly requests Scribe or another tool, keep that choice. If unavailable, out of credits or unauthorized, report the specific blocker before changing methods; an existing local model is not an approved substitute. Continue independent work, but do not finalize speech cuts/captions from a fallback transcript as if the requested transcription had completed. Provider balance and EditorBrain credits are separate, and reconnecting cannot replenish either. A completed transcript still needs editorial review: preserve intended ideas and verify speech joins against the source.
4
6
 
5
7
  ## MP4 → Scribe
6
8
 
@@ -111,3 +111,27 @@ See [memory and review](memory-and-review.md) for memory schemas, version restor
111
111
  ## Optional audio production context
112
112
 
113
113
  Brand `audio.json` and project `audio.json` are selected optional sources, validated and hashed by resolve/pull, exposed as `audioProduction` in resolved/workflow context, and included in handoffs. See [audio production](audio-production.md) only when configuring voice, SFX banks/exclusions or loudness. They contain portable IDs and preferences, not provider credentials or machine-specific paths. Existing projects need no migration. Detailed provenance and QA reports stay private in `.editorbrain-local/` and are read on demand; merely creating a JSON under `videos/` does not add it to resolved context.
114
+
115
+ ## Creative decision ownership
116
+
117
+ The optional editorial profile field `creativeDirection` in brand `design.md`
118
+ is `automatic` or `guided`; `project.json.creativeDirection` overrides it for
119
+ that video. `resolve`, workflow context and `editorialSnapshot.creativeDirection`
120
+ return the effective mode and its source (`project`, `brand`, or `implicit`).
121
+ Omission preserves legacy guidance, never silently opts a brand into automatic.
122
+ The current explicit task still governs; project changes do not overwrite the
123
+ brand. Both modes inspect library evidence and adapt to the actual material.
124
+ Automatic fills unspecified aesthetics; guided starts from saved choices.
125
+ Neither overrides required tokens, media/audio restrictions, language, review
126
+ or spending. This field does not replace `freedom` (visual consistency),
127
+ `motionSelection` (motion taste), or `reviewMode` (when to ask for review).
128
+
129
+ `creativePreferencesReviewed` in the same profile records explicit category
130
+ confirmations (including deliberate delegation). The shared guide lists valid
131
+ categories. Partial onboarding intake updates accumulate them; `null` clears
132
+ them. Populated preference fields do not imply confirmation. Effective direction
133
+ includes `configuration: {status, pending}`; explicit guided brands must finish
134
+ pending categories through [onboarding](onboarding.md) before editing. Automatic
135
+ and legacy unspecified brands do not require that checklist. A project override
136
+ does not enroll or complete brand onboarding; an automatic exception skips that
137
+ checklist for the selected video without deleting the saved brand state.
@@ -17,20 +17,30 @@ Read the sibling [EditorBrain contract](../editorbrain/AGENTS.md) once in the ac
17
17
 
18
18
  Use `resolve_project` / `editorbrain resolve <id>` and `check_workflow` / `editorbrain workflow check` for current context. Reuse valid results already obtained. Read `tokens`, `tokenSources`, warnings, conditional `context.memory.confirmed`, effective `mediaPreferences` and the current member's integration checkpoint. Compare workflow `version` and `contextVersion` at existing checkpoints before proposals, paid generation and full rendering; fetch only changed relevant context. Do not add another approval cycle or reload every guide.
19
19
 
20
- Apply the implemented token precedence: skip `example` tokens; apply style tokens, then brand tokens over matching style tokens, then reasoned project overrides. Changing an effective `required` token requires an intentional, user-supported exception with `overrideRequired: true`. Adapt incompatible techniques; never silently substitute a required color/font. Read [workspace files](../editorbrain/references/workspace-files.md) when resolving conflicts or saving changes. Examples, demos and provider defaults supply no customer palette, typography or preferences. Apply confirmed memory at its stated scope; prose memory cannot bypass required tokens.
20
+ Use the resolved identity without applying a second precedence order. The shared
21
+ [decision ownership](../editorbrain/AGENTS.md#decision-ownership) governs this
22
+ specialty; [workspace files](../editorbrain/references/workspace-files.md) owns
23
+ token precedence and explicit project exceptions. Consult it for conflicts or
24
+ changes. Adapt techniques to the effective constraints. Proposed changes to the
25
+ story, identity or approved timing return to the project direction with their
26
+ reason before dependent work; examples and provider defaults cannot authorize them.
21
27
 
22
28
  Read [media preferences](../editorbrain/references/media-preferences.md) when interpreting saved choices. Honor exclusions, disabled categories and authorized exceptions; do not force disabled motion. `motionSelection` governs scene selection; `motionProduction` governs production preference, independently. A `code` preference does not authorize a paid AI fallback. Fetch only the selected recipe/version. Before generation, verify the session tool/model and existing spending authorization using [integrations](../editorbrain/references/integrations.md). Declared access or a preference is not a working connection.
23
29
 
24
30
  ## Design and execute the scene
25
31
 
26
- For a real subject or demonstration, establish the authentic media first using the host's image/video search, browser and user footage. Follow [real media and evidence](../editorbrain/references/real-media.md) when sourcing. Animate around inspected evidence; a code animation or generated likeness cannot substantiate a real person, event or product behavior. Abstract explanations and labelled illustrations can still start with authored/generated motion.
32
+ In a full-video edit, reuse the direction and inspected **edited-video references** that explain why this scene needs animation. If they are missing for a new or changed direction, follow [editorial evidence](../editorbrain/references/editorial-evidence.md) before choosing motion. Motion search supplies implementation mechanisms, not evidence that the whole edit fits. For a standalone animation, explicit template request or scoped correction, work from the relevant brief and existing evidence without imposing a new full-video search.
33
+
34
+ For a real subject or demonstration, establish authentic media from permitted sources first, using user footage and available web tools as allowed. Follow [real media and evidence](../editorbrain/references/real-media.md) when sourcing. Code-based production can composite real photos, captured interfaces and footage; it does not require drawing every element. Animate around inspected evidence; a code animation or generated likeness cannot substantiate a real person, event or product behavior. Abstract explanations and labelled illustrations can still start with authored/generated motion.
27
35
 
28
36
  Describe each meaningful shot through its intention, visible entry state, action/change, readable or perceptible hold, and exit state. Connect timing to the actual voice, action or music when used. Use the project's existing plan; keep detailed shot records local. There is no required shot count, effect, provider, pilot or sound layer.
29
37
 
30
- Design the visual action for this video's specific message before selecting a component. For authored motion, create the object relationships, staging and choreography the scene needs; changing labels and colors alone is not bespoke animation. Let composition evolve when the action needs it. A permanent title, illustration and list is an explainer layout, not the default for motion graphics.
38
+ Design the visual action for this video's specific message before selecting a component. For authored motion, create the object relationships, staging and choreography the scene needs; changing labels and colors alone is not bespoke animation. Let composition evolve when the action needs it. A permanent title, illustration and list is an explainer layout, not the default for motion graphics. For any method, [motion craft](references/motion-craft.md) gives the four-line shot intent, starting values for timing, staging, transitions, camera, type and ratios, and common failures; the request, preferences, output profile, style, approved direction, brand tokens and measured readability override its numbers.
31
39
 
32
40
  Separate resolved graphic identity from authentic material: text/graphics use brand roles; footage, skin, product colors, screenshots and logos retain their authentic identity unless the approved direction changes them. Distinguish real interface states from labelled illustrative UI. Preserve the selected style's mechanism while adapting subject, layout and timing.
33
41
 
42
+ Before authoring substantial code motion, make a bounded `motion scenes` lookup for the required action and inspect a promising mechanism, if accessible. This is source research for code production, not a competing engine or a requirement to use a template. Reuse valid research during corrections. A bad preset claim may need new copy while its visual mechanism remains useful; reject mechanisms that do not fit.
43
+
34
44
  Choose a feasible method per shot, respecting production preferences:
35
45
 
36
46
  - **Code/compositing:** read [motion with code](references/code-motion.md) for precise states, typography, diagrams, interfaces or repeatable transitions.
@@ -39,13 +49,22 @@ Choose a feasible method per shot, respecting production preferences:
39
49
  - **Generated clips:** read [generated motion](references/generated-motion.md) for material/character consistency, organic movement and continuity.
40
50
  - **Hybrid:** use both where needed; keep exact text, values, logos, interface states and continuity-critical objects under explicit control.
41
51
 
42
- Use the engine/provider's real capabilities and relevant skill. The component preparer supplies editable HTML scenes, not an encoded video or generation API. Rendering still uses the available local tools. Test difficult mechanisms when uncertainty warrants it, reusing existing approval.
52
+ For a fully animated/faceless piece with a feasible code route, a JavaScript
53
+ composition can coordinate the whole sequence on one deterministic master clock,
54
+ including photos, generated imagery, footage, masks, camera and audio cues.
55
+ Plan the changing scenes and their handoffs, not a fixed slide layout with every
56
+ element fading in. An encoder such as FFmpeg exports/mixes the result; it does not
57
+ choose its motion. Respect an explicitly chosen engine and use other tools where
58
+ they solve a real production need. Code availability alone does not establish
59
+ that this route is best for every user or that its output is good animation.
60
+
61
+ Use the engine/provider's real capabilities and relevant skill. The component preparer supplies editable HTML scenes, not an encoded video or generation API. Rendering still uses the available local tools. When the edit prioritizes elaborate motion or faithful transfer, render its most demanding short passage before extending that approach to the whole piece. Compare the actual action, staging, readable holds and transitions with the inspected reference; fix lost mechanisms before adding decoration. This internal check reuses existing approval, including direct mode, and does not require a new customer decision.
43
62
 
44
63
  ## Review and preserve
45
64
 
46
- Review important states and transition strips, then actual motion and relevant audio. Recompose and verify each requested ratio. SFX remain optional and must respect exclusions; timeline cues or meters do not prove audibility. For substantial motion/audio work use [production and review](../editorbrain/references/production-and-review.md), reusing checks already performed.
65
+ Review important states and transition strips, then actual motion and relevant audio. Recompose and verify each requested ratio. SFX remain optional and must respect exclusions; timeline cues or meters do not prove audibility. For substantial motion/audio work use [production and review](../editorbrain/references/production-and-review.md) and the review order in [motion craft](references/motion-craft.md), reusing checks already performed.
47
66
 
48
- Check whether the viewer can tell what changed and why from the animation itself. If removing the moving graphic leaves the explanation unchanged, reconsider whether the motion is only decoration. Do not treat passed font, bounds, seek or encoding checks as artistic approval.
67
+ Check whether the viewer can tell what changed and why from the animation itself. If removing the moving graphic leaves the explanation unchanged, reconsider whether the motion is only decoration. Compare the sequence with the inspected mechanisms and any applicable user-approved quality sample using [production review](../editorbrain/references/production-and-review.md). Do not treat passed font, bounds, seek or encoding checks as artistic approval.
49
68
 
50
69
  Tie findings to output hash/version and time; distinguish observed, inferred and designed decisions. Frames cannot establish motion, and silent inspection cannot establish sound quality. Report uninspected modalities explicitly. After a local correction, recheck affected events and the delivered whole.
51
70
 
@@ -5,10 +5,10 @@ Use when a scene needs a visual mechanism (an object transforms, a structure fal
5
5
  ## Retrieve only what you need
6
6
 
7
7
  1. **Search by action.** `list_authored_scenes` / `editorbrain motion scenes "depender de un solo cliente"` ranks examples by mechanism, uses across niches and presets. Describe the action and change, such as "un total que se arma por partes". A different demo niche is not a reason to discard a mechanism. Default six compact results; reuse `nextCursor` as `after` / `--after` for the same query. This is weighted lexical retrieval, not a creative recommendation or semantic video analysis.
8
- 2. **Look before reading.** For the strongest candidates (usually three, expand if unclear), request `first` and `last` in the project's ratio. MCP: `get_authored_scene_preview`, passing candidate `id` as `sceneId`, preserving `version`, and mapping the project format to `ratio` (`16:9` → `wide`, `1:1` → `square`, `9:16` → `tall`); use `kind: "first"` or `"last"`. CLI: `editorbrain motion preview <id> --scene-version 1.1.0 --ratio tall --preview-kind first`. `firstIsFrame1: false` means the image is the first informative state, not the literal first frame; inspect the returned time/frame. These images establish states, not motion, pacing or sound.
9
- 3. **Read one card and choose an adaptation.** `get_authored_scene` / `editorbrain motion scene <id> --scene-version 1.1.0` gives the universal mechanism, use/not-for, timing, limits, presets and pinned source hash. If a preset fits the topic better, inspect its keyframes with `preset: "<name>"` / `--preset <name>`. Presets support first/last only; they do not have their own video preview. Pick by the beat's action and constraints, not rank alone.
8
+ 2. **Look before reading.** For the strongest candidates (usually three, expand if unclear), request `first` and `last` in the project's ratio. MCP: `get_authored_scene_preview`, passing candidate `id` as `sceneId`, preserving `version`, and mapping the project format to `ratio` (`16:9` → `wide`, `1:1` → `square`, `9:16` → `tall`); use `kind: "first"` or `"last"`. CLI: `editorbrain motion preview <id> --scene-version <version> --ratio tall --preview-kind first`. `firstIsFrame1: false` means the image is the first informative state, not the literal first frame; inspect the returned time/frame. These images establish states, not motion, pacing or sound.
9
+ 3. **Read one card and choose an adaptation.** `get_authored_scene` / `editorbrain motion scene <id> --scene-version <version>` gives the universal mechanism, use/not-for, timing, limits, presets and pinned source hash. If a preset fits the topic better, inspect its keyframes with `preset: "<name>"` / `--preset <name>`. Presets support first/last only; they do not have their own video preview. Pick by the beat's action and constraints, not rank alone.
10
10
  4. **Validate the motion.** Watch the selected base video's preview (`kind: "video"`, the default). Compare its transformation and timing with the intended beat before committing to its code. Keyframes and the base preview do not certify the preset or a customer-brand render.
11
- 5. **Source and adaptation.** Request `get_authored_scene_source` with the exact ID, version and bundle SHA-256, or `editorbrain motion source <id> --scene-version 1.1.0 --out .editorbrain-local/new-scene.tar.gz`. Downloads require login, verify size/hash, preserve existing files and never extract or execute automatically. Start from the closest `adapt/<name>.json` overrides when present; replace demo values and bind the current project below. Edit code where the card says parameters cannot express the needed change; author a new scene when none fits.
11
+ 5. **Source and adaptation.** Request `get_authored_scene_source` with the exact ID, version and bundle SHA-256, or `editorbrain motion source <id> --scene-version <version> --out .editorbrain-local/new-scene.tar.gz`. Downloads require login, verify size/hash, preserve existing files and never extract or execute automatically. Start from the closest `adapt/<name>.json` overrides when present; replace demo values and bind the current project below. Edit code where the card says parameters cannot express the needed change; author a new scene when none fits.
12
12
 
13
13
  The base commands require CLI 0.27.0+. Ranked catalog 1.1.0 and `first|last`/`--preset` require CLI **0.28.0+**, or an MCP server advertising these fields and returning 1.1.0. Check the actual tool schema and returned version; do not send unsupported fields to older servers. CLI 0.27.x and pinned 1.0.0 still use literal search and `video|poster`; use their cards and videos instead of inventing missing keyframes. There are 45 mechanisms in 1.1.0 and 33 in 1.0.0. `motion list/get/prepare` remains a separate component catalog.
14
14
 
@@ -24,4 +24,12 @@ Material colors, heatmaps, illustrations and data series can have separate param
24
24
 
25
25
  `?demo=1` is for inspecting the original reference only. Production requires complete project binding; missing fonts/assets, invalid theme/ratio and unsupported voice/music time scaling must fail rather than silently use a personal identity. Supplied scenes are opaque, not transparent overlays. Do not reinterpret one scene's fixed item count, timing or font as a universal EditorBrain requirement.
26
26
 
27
- Check source/preview provenance and runtime diagnostics, important states and transitions, then actual motion/audio in the adapted output. Existing previews refer to original source; the guarded portable runtime is separately hashed. Technical validation does not prove creative quality or successful transfer. Both catalogs exclude all personal `human-computers` reel versions.
27
+ Check source/preview provenance and runtime diagnostics, important states and transitions, then actual motion/audio in the adapted output. Judge holds, text fit, ratio composition and opening/closing frames with this project's copy and timing using [motion craft](motion-craft.md); the demo's values do not establish them. Existing previews refer to original source; the guarded portable runtime is separately hashed. Technical validation does not prove creative quality or successful transfer. All catalogs exclude all personal `human-computers` reel versions.
28
+
29
+ A catalog lookup alone is not visual adaptation. When a selected mechanism needs code-level adaptation, inspect its pinned source and explain what it contributes to this scene (e.g. camera travel, branching or information transforming into an output). Bind the user\'s material, timing, palette and layout preference. Complexity is justified by the explanation, not by a required number of effects. Do not equate recoloring the demo with editing the user\'s video.
30
+
31
+ Catalog 1.2.0 requires CLI 0.30.0+ or an MCP server returning 1.2.0. Pass the `version` returned by each result in place of `<version>`; never upgrade a pinned result silently. There are 123 mechanisms in 1.2.0, 45 in 1.1.0 and 33 in 1.0.0. `inheritedBundleVersion` (1.0.0 or 1.1.0) identifies an unchanged archive: its internal manifest keeps that version while the retrieved card adds current discovery guidance. Verify its advertised hash and preserve its provenance.
32
+
33
+ ## Do not confuse discovery with automatic brand transfer
34
+
35
+ The catalog selects mechanisms, not a universally fitted layout. Bind contrasting foreground/background pairs (including scene-specific roles such as `onAccent`); assigning the same approved color to every role can make text unreadable. Font changes and duplicate palette entries can require source/layout changes. Keep warning checks enabled. Recompose small labels, paths and glyph spacing instead of silently changing the user's font or ignoring a rejected render. Original preview approval does not approve a different brand, preset or format.
@@ -8,7 +8,14 @@ Start from the shot's specific visual action. Consult the compact [component lib
8
8
 
9
9
  A scene needs a meaningful state change: reveal a relationship, assemble a process, isolate evidence, compare alternatives or resolve a question. Decide what the viewer should notice before selecting a transition. A moving card is useful only when its change of position, scale or emphasis communicates that intention.
10
10
 
11
- Use short text as part of the action where appropriate: a request can become a constraint, a duration can become a calendar interval, or a word can become a visible boundary. Preserve object identity and show the consequence of each action. Design anticipation, action and a perceptible hold around the beat, rather than dividing every scene into equal steps. Camera moves, masks, deformation and light/dark changes are options, not a required effects checklist.
11
+ Use short text as part of the action where appropriate: a request can become a constraint, a duration can become a calendar interval, or a word can become a visible boundary. Preserve object identity and show the consequence of each action. Design anticipation, action and a perceptible hold around the beat, rather than dividing every scene into equal steps. Camera moves, masks, deformation and light/dark changes are options, not a required effects checklist. [Motion craft](motion-craft.md) gives the shot intent, starting values and common failures.
12
+
13
+ Let media participate in the action: an image may fill the frame, become an
14
+ object inside a larger system, then reveal a detail. For example, separate
15
+ information fragments can gather into a summary that carries into the next
16
+ beat. This illustrates a mechanism, not required imagery. When two scenes share
17
+ an object, match its crop, bounds, anchor and state at the handoff; otherwise a
18
+ continuous camera move can hide an accidental jump. Inspect adjacent frames.
12
19
 
13
20
  Use a compact shot record when the existing plan lacks this detail:
14
21
 
@@ -45,10 +52,15 @@ For a new temporal implementation, sample the same important state directly and
45
52
 
46
53
  ## Review the mechanism, then the export
47
54
 
48
- Use sparse beat frames to inspect composition and dense transition strips around risky intervals to inspect state changes, occlusion, overlap, easing and object persistence. Choose times from the actual motion; a universal sampling count can miss a fast defect. Check sufficient readable hold at the intended viewing size. Automated bounds can detect some clipping; they cannot establish legibility or editorial meaning.
55
+ Use sparse beat frames to inspect composition and dense transition strips around risky intervals to inspect state changes, occlusion, overlap, easing and object persistence. Choose times from the actual motion; a universal sampling count can miss a fast defect. Check sufficient readable hold and text size at the intended viewing size; [motion craft](motion-craft.md) lists starting values and a review order. Automated bounds can detect some clipping; they cannot establish legibility or editorial meaning.
49
56
 
50
57
  Recompose each requested ratio: adjust hierarchy, line breaks, staging, asset crop and trajectory as necessary. Generate evidence from each output, since a horizontal pass does not validate a vertical crop. Watch the final export for continuity, pace and closure; listen if audio is present and the modality is available. Follow the shared [production review](../../editorbrain/references/production-and-review.md) for delivery checks.
51
58
 
59
+ Compare editorial quality there as well: successful seeks, easing functions and
60
+ font bounds do not show that the scene explains its message or meets a relevant
61
+ approved sample. Review the composite, including imagery and occlusion, not just
62
+ isolated text boxes or the source code.
63
+
52
64
  Keep localized findings concise: `output hash/version → time/interval → observed defect → evidence → correction`. A contact sheet plus transition strips and playable output can be a local review artifact; no particular HTML format or helper is required. Preserve editable sources, asset hashes, engine details and final timing locally. Recheck the modified interval and final delivery without reopening approved unrelated scenes.
53
65
 
54
66
  For frame boundaries and supplied geometry, read [targeted motion review](../../editorbrain/references/motion-review.md). It provides an optional CLI sampling plan and collision candidates; it does not replace watching motion.
@@ -47,6 +47,6 @@ The output directory must be new. Preparation validates input before writing; it
47
47
 
48
48
  Open the HTML preview. For external frame capture use `?capture=1`, wait for `window.__ready`, fail on `window.__motionError`, and call `window.renderAt(seconds)` explicitly. Query `window.getMotionDiagnostics()` for measured text overflow and readiness. Capture `#stage` only at the project's actual dimensions; encode with the available renderer. `prepare` alone does not create an MP4.
49
49
 
50
- Read title, captions and transitions at final display size. Inspect meaning, pacing and hierarchy, not only bounds. Test actual requested ratios, long text and selected brand colors. A foreground/background contrast failure requires an intentional project decision, never silent recoloring. `motion: "reduced"` uses static states/cuts. The standalone preview starts paused; a custom autoplay wrapper must honor the viewer's reduced-motion preference.
50
+ Read title, labels/details and transitions at final display size; [motion craft](motion-craft.md) gives starting values for their reading time and size. Inspect meaning, pacing and hierarchy, not only bounds. Test actual requested ratios, long text and selected brand colors. A foreground/background contrast failure requires an intentional project decision, never silent recoloring. `motion: "reduced"` uses static states/cuts. The standalone preview starts paused; a custom autoplay wrapper must honor the viewer's reduced-motion preference.
51
51
 
52
52
  Scenes are silent. Integrate approved voice, music or SFX separately on a shared timeline and review audible output. Save only the chosen component id/version, relevant bindings and continuation notes in the portable direction; keep code, embedded assets, frame strips and detailed QA local. Do not send embedded files or implementation source back through model context.
@@ -0,0 +1,79 @@
1
+ # Motion craft
2
+
3
+ Read when designing, adapting or reviewing an animated scene with any method. These starting values come from EditorBrain's own code-drawn library scenes and a few reference analyses, not yet validated on customer projects or phones; sound was checked only as data. They are judgment, not a template, effects checklist or quality score. The user's current request, effective media/audio preferences (including reduced or disabled motion and on-screen text density), the output profile, the selected style's `effects.md`, the approved direction, brand tokens and readability measured in this output override every number; a value outside a range is a reason to look, not an automatic defect.
4
+
5
+ Pixels are per 1080 px short side at 30 fps; scale with resolution and halve per-frame values at 60 fps. Drift is the scale or position change over a hold, as a percentage of the frame.
6
+
7
+ ## Intent before look
8
+
9
+ State four lines per meaningful shot before choosing a component, effect or palette:
10
+
11
+ 1. **Understand:** the sentence the viewer must get, with its real numbers.
12
+ 2. **Action:** the visible action that demonstrates it, such as an object performing the comparison.
13
+ 3. **Consequence:** what visibly changes because of it, in the same shot.
14
+ 4. **Exit:** the final state and what carries into the next shot.
15
+
16
+ They sharpen the intention and action of the motion skill's shot description (entry, hold and exit still apply) and fit the [code motion](code-motion.md) record; they are not a schema. If the viewer would understand the sentence equally without the action, reconsider whether the motion is decoration and restage.
17
+
18
+ Explanatory mechanism comes before surface treatment (palette, texture, glow); the selected style's own mechanisms still apply. For code/compositing, derive geometry, counters, labels, camera targets and cues from one data model ([code motion](code-motion.md) covers deterministic time) and recompute every figure. When a beat reads weak, change travel, scale, composition or timing before adding effects.
19
+
20
+ **Honest data.** The data must demonstrate the claim (a difference of about 10 % or more, a threshold actually crossed) or the payoff changes; keep the before state credible. Map quantity to the visible dimension (area by √value), compare on one scale, clock and cost basis, and declare exaggerated or non-linear scales on screen. Leaders end at measured endpoints, emphasis follows the message target rather than the maximum, and data-dependent wording follows the computed values.
21
+
22
+ ## Starting values
23
+
24
+ **Easing and springs.** No linear spatial motion: ease-out for entrances, in-out and arcs for travel; interpolate data values monotonically. Start springs from rest: no jump after a standstill (one fix capped that first step near 30 px) and no frame stepping several times its neighbors. A damping ratio ζ ≈ 0.8 gives about 1.5 % overshoot (convert to the engine's stiffness/damping/mass) over a 0.22–0.26 s main travel; large elements overshoot 2 % at most, and springs settle within their beat. Anticipate major moves with a 1–8 % counter-move (15–20 % for large rotations). Reveals take 0.18–0.45 s with a strong ease-out; related elements stagger 2–4 frames, secondary parts follow through 2–4 frames late, and edges on separate springs stretch and catch up. Squash only the hero, by 2 % at most. Large elements stay well under about 140 px per frame; above about 100 px per frame add directional blur (ghosts only on small objects, never over text). For exact endpoints, see [targeted motion review](../../editorbrain/references/motion-review.md).
25
+
26
+ **Staging and holds.** One primary move and focal point at a time; dim the rest 40–60 % and start the next move at 80–90 % settled. Hold 0.4–0.8 s after intermediate payoffs and 1.5–2.5 s at the end of a standalone piece or before a hard end (under 1.2 s is a warning); a shot that hands off, or an insert under continuing voice, keeps its readable hold and designs its exit. Outside planned holds, over about 1 s with no readable change and nothing else carrying the beat (narration, action) is a dead-air candidate; keep holds alive with 0.5–2 % drift, never above 3 %, unless motion is reduced or disabled. Nothing appears, disappears or swaps for one unintended frame; deliberate cuts, stepped motion and reduced-motion states are exempt. Switch layers on time, never on a spring threshold. Keep full-frame flashes to three per second or fewer, timed in seconds; a count does not certify photosensitivity safety.
27
+
28
+ **First and last frames.** Shots enter already in motion unless stillness is the design or motion is reduced. When the first frame may be seen alone (autoplay, preview, thumbnail), compose it with subject and title present. Do not reserve visible holes; bring later content in from an on-screen object or a motivated pull-back, and show an empty container only when its emptiness is the information (about 0.25–0.3 s). When a piece or beat closes, end on a designed state: scaffolding gone, deformations eased back.
29
+
30
+ **Payoff.** Design a separate end-state layout, not the first layout minus elements: the answer at least as large as the setup figure, about twice its neighbors and legible at rest without a push. During action keep the protagonist near 25 % of frame height in 16:9 and 30–40 % in narrower ratios. A measuring gesture landing on the computed value makes a strong payoff; craft must not delay or shrink the answer.
31
+
32
+ **Object-driven transitions.** Keep one protagonist and change its function: a row becomes a ticket, a total a stamp. Leave states accelerating: content out, container moves and settles, content in. Move the same object between layouts rather than fading one out and another in; replace busy crossfades and hue tweens with a wipe, mask or occluder starting at the cause. Causes precede effects: objects lead their labels, counters change when a visible carrier lands, a source shows the gap left behind, and a state a transition introduces persists until another removes it.
33
+
34
+ **Camera.** Without style direction, push in on one subject and pull back to show the system; avoid moves that only add energy. Interpolate zoom in log space. Emphasis pushes start around 1.4–4.5 % and follows around 1.3–1.75×, lower in 9:16; if cropping would force a push below about 1.15×, dim the rest or scale the focal element instead. Pans stay under about 25 px per frame with continuous velocity and finish 0.15 s before cuts. At every hold, each label and title is wholly inside the safe margin or wholly off-frame; text that must not crop lives in screen space and crosses the frame edge only while moving. Start a beat once its element is framed.
35
+
36
+ **Type as objects.** Unless the type is the action (kinetic type, beat-locked or word-synced words, line or letter mask reveals), move phrases or lines as blocks with one behavior each; text exits before its container moves and returns after it settles. Fit text at its final rendered size and font settings: shrink to the size floor (see Ratios), then two balanced lines, then a short alternate; never truncate a number. Same-role labels share the smallest fitted size, and anything placed or animated from a text block follows its measured line count. Size masks from measured ink with descender and accent room; test g, j, p, y, ¿, ¡, Á, É, Ñ and currency in the actual fonts, and never synthesize italics. Use tabular figures for changing numbers, one locale-aware formatter (no −0, singular and zero forms), no-break spaces before units, no orphaned units, and differences from the rounded values shown; rolling numbers show each value 0.25 s or more.
37
+
38
+ **Text over imagery and color.** Choose the text color among the resolved brand text roles by measured contrast with the actual backdrop; if no permitted role passes, treat it as a project decision (see [component library](component-library.md)), never silent recoloring. Over footage or busy texture, small text gets a scrim, veil or knockout band, and HUD readouts or values in flight an opaque plate; a translucent plate must not show text behind it. Key text ends at 4.5:1 or more. Temporary dims, veils and ghosts exit before the hold; one accent per meaning. Derive shadows, highlights and flashes from the palette's luminance rather than fixed values.
39
+
40
+ **Labels and drawn objects.** Place labels, stamps and resting props against everything printed (text, credit, HUD, moving props and their rest poses) at every beat and ratio. Anchor stamps to the object's drawn bounds, not a data level; no decorative impact covers primary text; leaders never cross text. Overlaps happen only in motion, for about 0.4 s or less. Name each hero object from a small grayscale still at its smallest size and ask what else it could be; give it defining cues (edge, binding, cap, sheen), one light direction and highlights that add light rather than desaturate; textures move with their object, and decorative strokes never look like data marks.
41
+
42
+ **Copy and density.** About 3–4 words per beat, a new idea every 1.5–2 s, and each text fully visible 0.6 s plus 0.25 s per word beyond three; lengthen the shot, or cut copy when timing is locked to voice, rather than compress reading. These figures apply to graphic copy, not word-synced captions, and `onScreenText` sets the density. Leave 0.35 s between text events, let the outgoing line leave before the next enters, and give the last item of each sequence 0.4 s clean before a transition covers it. Individually read events need about 0.3 s each; when faster, or beyond about eight labeled items (about 35 anonymous tokens), show two or three slowly, then an aggregate. Text below the size floor is texture and carries no message. Scroll-first formats may need the answer within 1–2 s unless the brief's hook deliberately withholds it.
43
+
44
+ **Sound-first timing.** When narration exists, lock it first (see [audio production](../../editorbrain/references/audio-production.md)) and anchor events to it; voice-synced text lands 0–5 frames after the word, never before (one measured reel). With SFX or music, derive cues from the motion's event list; for rhythmic or physical scenes without locked narration, a beat grid can lead, without every cut on a beat. Align each sample's measured peak or attack, not its file start: impacts on contact, whooshes at peak velocity, chimes and swells on the settle or resolve. Cluster trains above about 6–8 cues per second; gain follows magnitude. Respect exclusions; every SFX needs a visible cause, the scene must read muted, and aligned data still needs listening.
45
+
46
+ **Ratios.** Recompose graphic layers per ratio from one model with identical beat times instead of cropping another ratio's render; reframing footage or cropping an asset inside the layout is fine. In 9:16, transpose the main axis rather than shrink; no band over about 15–20 % of the height stays empty beyond about 1 s. Carry moves under about 40 px in secondary cues (lean, tension, counters); a protagonist leaving a system travels about a third of the frame height. No hero state is a sliver beyond about 0.5 s, text never rotates 90° to fit, key actions stay in frame, and narrow ratios get gentler camera moves. The size floor is a font size at final on-screen scale of about 20 px in 16:9 and 1:1 and 22 px in 9:16 and other portrait ratios: a floor, not a target, confirmed at delivery size. Take platform UI zones from the output profile or destination.
47
+
48
+ ## Failure modes
49
+
50
+ | Failure | Detect with |
51
+ |---|---|
52
+ | Text overflows, wraps badly or sibling sizes differ | Longest copy and maximum counts in every ratio |
53
+ | Numbers contradict each other, the copy or the claim | Recompute derived figures and differences from visible operands |
54
+ | Narrow ratios inherit the wide layout | Empty bands and margins on mid and last frames |
55
+ | Labels, stamps or props land on text | Stills at every beat and rest pose in each ratio |
56
+ | Moving values or labels cross text | Dense 10–30 fps strips over each flight |
57
+ | Camera crops text at a hold | Label boxes against the safe margin at every hold |
58
+ | Empty opening or unfinished ending | First and last frames alone at thumbnail size |
59
+ | Rushed events or one-frame pops | Shortest event interval; frame-exact grids at state changes |
60
+ | Dead air | Freeze scan, e.g. ffmpeg `freezedetect`, against planned holds |
61
+ | Under-weighted payoff or misread object | One dominant element in the last seconds; grayscale silhouette at phone size |
62
+ | Unmotivated effects | Glow, particles, blur-in or stock dashboard card without a cause |
63
+ | Sound drifting from picture | Retime one event, compare cue and event frames, listen |
64
+ | File size balloons | Size after the first render; unsettled motion tails, per-frame grain |
65
+
66
+ Those effects are fine when the style, the user or a fitting component calls for them.
67
+
68
+ ## Self-review order
69
+
70
+ 1. Four lines, recomputed numbers, density arithmetic (count × interval fits the beat).
71
+ 2. Stills at every beat and mid-transition in each ratio, narrowest first, with zoomed crops of the smallest text.
72
+ 3. For parameterized or reused scenes, stress inputs: longest copy, extreme counts, descenders and accents, each applicable brand theme.
73
+ 4. Numeric checks where claims matter: text boxes, recomputed numbers, out-of-order seeks.
74
+ 5. Dense strips around transitions; every frame for events under 0.2 s.
75
+ 6. The whole export at delivery size, first and last frames included, listening to any audio.
76
+ 7. A fresh-context second pass, or a separate reviewer, on the final export's strips (tiles of 480 px or more, times inside the duration). Edge-cropped text is blocking; fix self-noted legibility or payoff weaknesses before reporting.
77
+ 8. Fix the cause (layout rule, data, timing) behind a defect; recheck that interval, the other ratios and the delivered whole.
78
+
79
+ Record findings in the [code motion](code-motion.md) format and finish with [production and review](../../editorbrain/references/production-and-review.md). Clean engine diagnostics, where available, are necessary but not sufficient; passing checks is not artistic approval, and measured audio is not listened audio.