Education Video Studio
正確な教材内容を、Professional Motion Graphics水準の時間設計へ変換する。 目標は「SVGが動く教材」ではない。時間の変化そのものによって理解が生まれ、映像としても完成度が高い教育動画を作る。
不変条件:資料と教材本体を先に完成する
映像表現を高度化しても制作順は逆転させない。
source / program context -> research agenda -> sources/source register -> Research Closure -> content.md -> Content IR -> Content Freeze -> Instruction Search -> Instruction Freeze -> Realization Search -> Realization Freeze -> scope/duration -> communication design -> visual psychology design -> Art Direction / motion design -> script / timeline -> render -> visual psychology release
- 根拠資料を実取得して確認する。
sources.mdを作る。- 尺や演出で削る前に
content.mdを完成・照合する。 content.mdが完成するまで、完成版のシナリオ・Sequence・Morph・Camera・SVGを設計しない。- 制作環境のcapability checkだけは先に実施してよい。内容上の結論は作らない。
- 映像設計中に新しい事実が必要になったら
sources.md -> content.mdへ戻る。
品質目標
Hard constraints
- 事実・規範・数値を捏造しない。
- 危険な誤解や、原典と異なる指示を作らない。
- 語り・動画・PDFの意味を一致させる。
- 最終レンダーで読めない、重なる、切れる、壊れる状態を納品しない。
- 宣言した映像品質を、環境制約を理由に黙って下げない。
標準Motion Quality Profile
既定は Level 3 — Professional Motion Graphics。
詳細は references/motion-quality-rubric.md。
- Sequence全体で時間を設計する。
- Scene間に意味のあるBridgeまたは意図的なCutを持たせる。
- Camera / Morph / Mask / Layer / Typography / Easingを内容に応じて統合する。
- 複数要素は一つの動作・因果として協調してよい。
- 各時点で構図が成立する。
- ナレーションだけでなく、必要ならSE・音楽も時間設計へ参加させる。
- 動きを入れない箇所も、意図した静止として設計する。
Level 4の3D・複雑なcharacter rig・cinematic表現は必要な場合だけ狙う。
Meta-premortem
主要Creative Gateごとに references/creative-premortem.md を使う。
「最終MP4がAnimated Slides / target quality未達で拒否された」と仮定し、現在の証拠があるriskを最大3件だけ挙げる。件数埋めや抽象的な不安は禁止。前回Premortem自体の盲点も点検する。
Premortemは新しい安全規則を増やすためではなく、局所PASSが全体品質を保証していない場所を見つけるために使う。
V5 Fail-Closed Creative Production
Creative Gateは助言ではなく工程権限として扱う。references/fail-closed-production.md と harness/gate-state.mjs を使う。
- 案件ルートに
gate-manifest.jsonを置く。 - Gate PASSには、判定したinputと実物evidenceのhashを保存する。
- 上流input/evidenceが変わればそのGateと下流Gateを自動
STALEにする。 - Benchmark / renderer lock / audio readinessまでPASSしなければFull Productionをunlockしない。
- Blind Creativeが
INCOMPLETE、narrationが欠落、final Creative GateがFAILならfinalと呼ばない。 - 最終的に
release-status.json = FINALIZABLEを作れない成果物はdraftである。
node harness/gate-state.mjs gate-manifest.json init 3
node harness/gate-state.mjs gate-manifest.json status
node harness/gate-state.mjs gate-manifest.json unlock production
node harness/gate-state.mjs gate-manifest.json release
GateがFAILしたら「もう作ったから」下流修正で逃げない。指定されたArt Direction / Asset / Storyboard / Animatic等へ戻る。
Motionの4分類
本文中の動きを「意味がある/ない」の二択にしない。
- Semantic motion — 因果、順序、状態、数量、構造を直接説明する。
- Orienting motion — 視線、空間、Scene間の連続性を保つ。
- Expressive motion — リズム、質感、期待感、ブランド性を作る。内容を邪魔しない範囲で使う。
- Decorative motion — 説明・方向・表現のいずれにも寄与しない。使わない。
「意味のない動きを避ける」を「動きを最低限にする」と解釈しない。
動画とPDFの責務を分ける
同じ情報源から出すが、同じ構図から出す必要はない。
- 動画:Sequence、Shot、Camera、Morph、一時的構図、Transitionを使う。
- PDF:完成状態、Before/After、全体フロー、判断表、出典を読み返せる構図にする。
- 数値・ラベル・因果関係は同じcontent/source idから取る。
- 新規制作では
harness/motion-film-skeleton.htmlの Motion Film model を既定にする。 - 旧
deck-skeleton.html/defineDeck()は既存案件の互換モードとして残す。
詳細は references/video-handout-model.md。
V5 renderer abstraction
Do not make Chromium the single point of failure. For browser-independent 2D work, a SVG Frame backend is available, but it is not an Art Direction default. Choose it only after the Visual Concept and asset requirements are fixed.
- Define the frame as a pure
renderFrame(t) -> SVGfunction. - Rasterize the final SVG with Inkscape, Sharp, or CairoSVG; encode with FFmpeg.
- Use the same information model to render separate handout SVG pages.
- Motion Proofではcandidate renderer profileを保存し、Benchmark PASS後にfinal renderer構成をlockする。
- Keep Browser backend for UI/DOM-heavy sequences, but treat it as one adapter, not the architecture.
- Use Three.js for true depth / spatial camera / material-light interaction / 2.5D parallax when those qualities are required by Art Direction.
- Use Manim / Blender / authored alpha video for sequences that materially benefit from them.
- Use
hybrid-compose.mjswhen different layers are best produced by different backends. - A renderer change invalidates renderer-specific Visual QA. Never silently delete planned motion.
Primary browser-independent files:
harness/svg-frame.mjs— pure SVG motion primitives.harness/svg-frame-project-skeleton.mjs— project contract.harness/render-svg.mjs— SVG frame -> PNG -> MP4/PDF/QA.harness/svg-layout-audit.py— Inkscape geometry audit.harness/render-three.mjs— Three.js project -> deterministic frame sequence / alpha WebM / Motion Proof。制限環境ではembedded offline ESM + Python-Xvfb driverを自動優先する。harness/render-three-xvfb.py— headed Chromium + Xvfb。Three.js coreはdata URL ESM、project assetはroute.fulfill()で供給する。harness/materialize-three-offline-runtime.mjs— 添付GitHub source ZIP / npm tgz / package directoryをwhitelist抽出・source lock検証し、offline runtimeへ変換する。harness/build-three-offline-runtime.mjs/verify-three-offline-runtime.mjs— 承認済みThree.js source profileをversion / revision / Git blob / exact commitで検証し、単一offline runtimeを生成・検証する。harness/vendor-three-runtime.mjs— GLTFLoader等が必要な場合に、runtimeと同一source profileの公式addonだけをvendorする。harness/hybrid-compose.mjs— Three.js / SVG / authored video等のFFmpeg合成。
Single mode / Series mode
Single mode
上位の研修設計がない単発教材。対象範囲の網羅性をこの教材が持つ。
Series mode
episode-brief.md、coverage-matrix.md、program-content.md、program-manifest.json などがある場合は references/series-mode.md を先に読む。
episode contractを上位scopeとして扱い、研修全体の責任をこの動画でもう一度背負わない。
- Primary:この動画で深く理解させる。
- Prerequisite:既習として扱う。
- Callback:Primaryへ接続する最小量だけ再提示する。
- Explicit exclusions:この動画に無くて正常。
- 別unitがPrimaryの項目は欠落扱いしない。
- program-level gapは目の前の動画へ押し込まず親設計へ返す。
資料先行はSeries modeでも変えない。
制作手順
0. Capabilityを確認する
references/renderer-strategy.md に従い、Browser / SVG Frame / Three.js / FFmpeg / font / PDF / 必要なspecialized backendの可用性だけを確認する。この時点でVisualをrendererへ合わせない。Three.js候補で通常browser pathが失敗しても即Unavailableにせず、references/threejs-offline-runtime.md / references/threejs-restricted-environment.md に従いembedded runtime、Xvfb/WebGL2、project-local routeを別々に確認する。runtimeが無く、会話に公式Three.js source ZIP / npm tgz / package treeが添付・mount済みならmaterialize-three-offline-runtime.mjsで取り込む。大きなsource ZIPは丸ごと実行せずwhitelist fileだけを検証・抽出する。
完了:利用可能経路とfallbackが分かる。
1. Source -> Content Gateを通す
Single / Series scopeを確定し、references/domain.md / references/series-mode.md / references/sources.md / references/content.md に従う。
source / program context -> sources.md -> content.md
- 根拠資料を実取得する。
sources.mdで数値・規範・条件を追跡可能にし、同時にresearch-agenda.json/source-register.jsonを作る。harness/research_closure.py . skeletonで全research dimensionを列挙し、追加調査後にharness/research_closure.py . validateをPASSさせる。not_applicableは正常。Blocking gapを演出で隠さない。- 尺や演出で削る前に
content.mdを完成・照合する。 content.mdのBlockingがゼロになるまで、完成版のSequence・シナリオ・SVG・Motionへ進まない。- Series modeではepisode contractを上位scopeとし、別unitの責任を抱え込まない。
2. Content IR / Instruction Searchを完了してInstruction Freezeする
Studio単体利用でも、この前工程を省略しない。content.md から content-model.json、knowledge-structure.json、learner-scenarios.json、learning-jobs.json を作り、内容と学習責任を機械可読にする。Series modeではepisode contractの instructional_handoff をauthoritativeとし、validate_instruction_handoff.py で一致を確認する。
python3 harness/instruction_inputs.py . validate
python3 harness/validate_instruction_handoff.py .
python3 harness/instruction_inputs.py . freeze
python3 harness/enumerate_instruction_candidates.py .
# prompts/lens-instruction-applicability.md で全candidateを評価する。winnerは選ばない
python3 harness/validate_candidate_evaluations.py .
python3 harness/instruction_optimizer.py .
python3 harness/instruction_gate.py . check
python3 harness/instruction_gate.py . freeze
python3 harness/instruction_gate.py . check-freeze
node harness/gate-state.mjs gate-manifest.json stamp instruction_design PASS --inputs content.md,content-model.json,knowledge-structure.json,learner-scenarios.json,learning-jobs.json,content-freeze.json,instruction-plan.json,instruction-freeze.json --evidence instruction-freeze.json
NONE は「内容を削る」ではなく、frozen contentを忠実に届ける以外の追加教育介入を行わない選択である。心理法則・問いかけ・prediction・worked example等をStudioの思いつきで追加しない。closed laneは全列挙、LLMは全candidateの意味評価だけ、組合せ・Pareto・ablation・sensitivityはdeterministic engineが担当する。
Instruction Planの implementation_unknowns は未解決のままscriptへ流さない。references/instruction-realization.md に従い、全unknownをdeterministicに列挙し、open semantic spaceは非網羅であることを明示したbounded comparisonを行う。operatorを別手法へ差し替えず、wording / duration / visual form / example granularity等のsurface realizationだけを解く。
python3 harness/instruction_realization.py . skeleton
# instruction-realization.json の各unknownに複数のadmissible案・baseline比較・選択根拠を記録
python3 harness/instruction_realization.py . validate
python3 harness/instruction_realization.py . freeze
python3 harness/instruction_realization.py . check-freeze
node harness/gate-state.mjs gate-manifest.json stamp instruction_realization PASS --inputs instruction-plan.json,instruction-freeze.json,instruction-realization.json,instruction-realization-freeze.json --evidence instruction-realization-freeze.json
Hard Gate:instruction_design と instruction_realization がPASSするまでScope / Duration、Communication、Visual Psychology、Art Directionへ進まない。Instruction Freeze後に教育設計を変えず、Realization Freeze後にsurface choiceを無断変更しない。実現不能なら INSTRUCTION_CONSTRAINT_VIOLATION として上流へ戻す。
3. Scope / Duration / Communication Designを確定する
references/scope-duration.md、references/learning-design.md、references/communication-quality.md、references/communication-plan.md、references/title-design.md、references/audience-language.md に従う。
- ユーザー未指定の短尺を制作都合で導入しない。
- Title Promise、Primary content、Minimum Comprehension Duration、planned durationを一致させる。
- internal labelとdisplay titleを分け、display titleは不要なら
nullとする。 content.mdからcommunication-plan.jsonを作り、Function / Necessity / Channel / Rhetorical ceiling / exact termsを文章生成より先に固定する。language-map.jsonv3には、Art Directionへ影響する主要title / label / reveal / instruction等だけを登録し、source functionとaudience roleを追跡する。全ナレーションを欄埋めで登録しない。text_requirement=optional / noneを正常な完成状態として扱う。optionalをbooleanへ潰さず、文字を置かない判断を保持する。Sequenceやtitle slotの存在を文字生成の理由にしない。- 違和感を短文化・断定化・キャッチコピー化で直さない。
- 法令・規程・UI正式名称・製品名・規格名・引用原文は自然さのために改変しない。
prompts/lens-communication.mdをdesign phaseで実行し、6軸+surface naturalnessをcommunication-design-review.jsonに保存する。
node harness/json_schema_validate.mjs assets/schemas/communication-plan.schema.json communication-plan.json
node harness/json_schema_validate.mjs assets/schemas/language-map.schema.json language-map.json
python3 harness/validate_communication_bundle.py .
python3 harness/communication_gate.py . communication-design-review.json design
node harness/gate-state.mjs gate-manifest.json stamp communication_design PASS --inputs content.md,instruction-plan.json,instruction-freeze.json,instruction-realization.json,instruction-realization-freeze.json,communication-plan.json,language-map.json --evidence communication-design-review.json
Hard Gate:scope_duration と communication_design がPASSする。続けて references/design-psychology.md / design-psychology-principles.json / visual-psychology-plan.md に従って visual-psychology-plan.json を作る。viewer task → visual problem → intervention necessity → principle → observable success conditionの順で決め、法則不要なら intervention_needed=false を選ぶ。
node harness/json_schema_validate.mjs assets/schemas/visual-psychology-plan.schema.json visual-psychology-plan.json
python3 harness/validate_visual_psychology_bundle.py .
# prompts/lens-visual-psychology.md design phase
python3 harness/visual_psychology_gate.py . visual-psychology-design-review.json design
node harness/gate-state.mjs gate-manifest.json stamp visual_psychology_design PASS --inputs content.md,instruction-plan.json,instruction-freeze.json,instruction-realization.json,instruction-realization-freeze.json,communication-plan.json,language-map.json,visual-psychology-plan.json --evidence visual-psychology-design-review.json
Hard Gate:visual_psychology_design がPASSするまでArt Directionへ進まない。心理法則とCommunication Qualityが競合する場合はCommunication Qualityを優先する。Naturalnessは最後の確認であり、不要文・function shift・channel duplication・修辞膨張を視覚的強調で覆わない。
4. Art DirectionとGraphic Qualityを固定する
references/visual-concept.md、references/motion-art-direction.md、references/motion-grammar.md、references/asset-quality.md、references/style-frames.md に従う。
成果物:visual-concept.md、motion-reference.md、motion-grammar.md、asset-plan.md、style-frames/。
- 題材固有のshape / material / lighting / depth / camera / typography / sensory translationを定義する。
- rendererで作りやすいVisualを選ばない。
- generic icon品質をhero assetへ使わない。
- 静止画として弱いframeをMotionで救わない。
Hard Gate:Art Direction / Asset Quality / Static Hero FrameがPASSする。
5. Sequenceを時間として設計する
references/sequence-design.md、references/film-strip.md、references/animatic.md、references/motion-necessity.md に従う。
成果物:sequence-plan.md、transition-map.md、Storyboard / Film Strip、animatic.mp4、animatic-plan.md、motion-necessity.md。
Enter -> Establish -> Transform -> Reveal -> Hold -> Bridge -> Exitで理解の変化を設計する。- 「このSVGをどう動かすか」から始めない。
- Film Stripでcomposition / scale / density / value / motion densityの反復を止める。
- AnimaticでCamera / Hold / Fast-Slow-Hold-Burstを確認する。
- major Sequenceを公平なstatic surrogateと比較し、動画である必然性を確認する。
Hard Gate:Film Strip / Animatic / Motion NecessityがPASSする。
5. Video / PDF / Rendererを設計する
references/video-handout-model.md と references/renderer-strategy.md に従う。
- 同じcontent/source idを使うが、動画とPDFは別構図にする。
- Visual ConceptとStyle Frameを最も高品質に再現できるbackendを後から選ぶ。
- SVG Frameはbrowser-independentな選択肢であり、visual defaultではない。
- UI/DOM、authored vector、Three.js、Manim、Blender、pre-rendered assetを必要に応じて使う。
- Three.jsはtrue depth / spatial camera / material-light interaction / 2.5D parallaxが最終画へ実質的に寄与するときだけ選ぶ。制限環境では検証済みexact-source embedded ESM + Xvfb + headed Chromiumを正式経路とし、project assetだけvirtual HTTPS routingする。source id / status / exact commit / runtime hashをrenderer provenanceへ残す。
- rendererを統一するために品質を落とさず、必要ならHybrid compositionにする。
renderer-fit.mdを作り、候補backendごとに『そのbackendでなければ失われる品質』を明記する。- Motion Proofではcandidate rendererを使ってよい。Benchmark PASS後、Full Production前にfinal renderer構成をlockする。
Hard Gate:Renderer Fit lensがPASSし、renderer_fit Gateをstampする。
6. Creative Motion ProofとBenchmarkを通す
references/motion-quality-rubric.md と references/benchmark-review.md に従う。
最難関8〜15秒程度を完成品質で実装する。Motion ProofはImplementation ProofではなくCreative Proofである。
- Style Frame / Film Strip / Motion Necessity / Motion Craftを再確認する。
- 実在する高品質2D Motion referenceと同程度の表示条件で比較する。
- rendererが動く、Camera/Morph/Maskを使った、layoutが壊れない、だけではPASSしない。
Hard Gate:Benchmarkで明らかにAnimated Slides / generic infographicへ見劣りする場合、全編へ進まない。
Benchmark PASS後にfinal rendererをlockし、ナレーションを確保できる実経路を audio_readiness として確認する。gate-state.mjs ... unlock production が成功するまで全編制作へ進まない。
Before audio_readiness can PASS, approve one japanese-tts Voice Lock. Evidence must include voice-profile.lock.json; in series mode its SHA-256 must match the episode contract. Never substitute an OS voice or another TTS engine silently.
7. Script / Timeline / Full Productionを作る
references/narration.md、references/sound-design.md、references/communication-quality.md、references/audience-language.md に従う。
content.mdとSequenceからscript.mdを作る。timeline.jsonにnarration cueだけでなくHold / anticipation / Bridge / SE cueを置く。- 画面は時刻
tの純関数にする。 - narrationを主役とし、SE/musicは意味がある場合だけ使う。ナレーション付きdeliverableでは字幕や環境音を代替にしない。
- script / display title / subtitle / reveal / label / PDF見出しを別々にコピーライティングせず、既存
communication-plan.jsonのfunction / necessity / rhetorical ceilingへ従わせる。 - 新しい重要なcommunication unitが必要になったら、scriptへ直書きせず
communication-plan.json/language-map.jsonへ戻す。これによりcommunication_designと依存GateはSTALEになるため、必要な上流Gateを再取得する。 lens-languageはsurface naturalnessとして使い、意味品質はlens-communicationの6軸で扱う。- 環境制約でplanned motionだけを黙って削除しない。
script完成後、TTSより前に prompts/lens-communication.md をtext phaseで実行し、communication-text-review.json を作る。design phaseのPASSをscriptへ自動継承しない。
python3 harness/validate_communication_bundle.py .
python3 harness/communication_gate.py . communication-text-review.json text
node harness/gate-state.mjs gate-manifest.json stamp communication_text PASS --inputs content.md,instruction-plan.json,instruction-freeze.json,instruction-realization.json,instruction-realization-freeze.json,communication-plan.json,language-map.json,script.md --evidence communication-text-review.json
python3 harness/tts.py prepare script.md
Hard Gate:communication_text が現在のscript hashに対してPASSするまでTTSを開始しない。harness/tts.py 自身もこのGateを再実行し、gate-manifest.json がある場合はstate上の communication_text=PASS も要求する。
8. Final-output QAを分離して行う
references/visual-qa.md と references/review.md に従う。
Technical / Layout / Communication / Visual Psychology / Creativeを別statusとして扱う。Communicationは communication_design(Art Direction前)、communication_text(script完成後/TTS前)、communication_release(完成媒体)の三段階、Visual Psychologyは visual_psychology_design(Art Direction前)と visual_psychology_release(完成媒体)の二段階に分ける。
- 最終rendererで全主要状態とPDF pageをLayout QAする。
- Final MP4でvelocity / easing / continuity / transition / sound syncを見る。
- Final MP4からUniform Film StripとSemantic Film Stripを再生成し、Storyboard時のPASSを引き継がない。
motion-density.pyで長いlow-change区間を抽出し、declared Holdか停滞かを確認する。数値自体を品質点にはしない。- Technical PASSをCreative PASSの根拠にしない。
9. Blind Creative CertificationとFinal Gateを通す
references/creative-certification.md と references/creative-premortem.md に従う。
- 実装情報を知らないReviewerへ最終MP4だけを渡し、Level 3 outcome criteriaを判定する。
- 動画を直接見られない場合、Blind Creative statusを
INCOMPLETEとする。 - R1〜R8 regressionを再実行し、
creative_regressionGateを最終MP4で取り直す。 node harness/audio-gate.mjs <workdir>で narration -> mix -> final render のprovenanceを確認する。prompts/lens-visual-psychology.mdのrelease phaseでは、法則名や実装計画を見る前に完成MP4/PDFを直接確認し、attention hierarchy / reading flow / grouping / differentiation / visual-verbal complementarity / restraintをvisual-psychology-release-review.jsonに記録する。python3 harness/visual_psychology_gate.py . visual-psychology-release-review.json release --manifest gate-manifest.jsonを通し、node harness/gate-state.mjs gate-manifest.json stamp visual_psychology_release PASS --inputs content.md,instruction-plan.json,instruction-freeze.json,instruction-realization.json,instruction-realization-freeze.json,communication-plan.json,language-map.json,visual-psychology-plan.json,script.md,<final_mp4>,<handout_pdf> --evidence visual-psychology-release-review.jsonでstampする。- 完成MP4/PDFを実際のマルチモーダル体験として
prompts/lens-communication.mdのrelease phaseで再レビューし、communication-release-review.jsonを作る。script単体でPASSしていても、語り・画面文字・図・UI・PDFの重複や説明過多が完成物で発生していればFAILにする。 python3 harness/communication_gate.py . communication-release-review.json releaseを通し、node harness/gate-state.mjs gate-manifest.json stamp communication_release PASS --inputs content.md,instruction-plan.json,instruction-freeze.json,instruction-realization.json,instruction-realization-freeze.json,communication-plan.json,language-map.json,script.md,<final_mp4>,<handout_pdf> --evidence communication-release-review.jsonでstampする。node harness/gate-state.mjs gate-manifest.json releaseがFINALIZABLEを返すまでfinal扱いしない。- 最終MP4 / PDFそのものを再確認する。
Hard Gate:Visual Psychology release FAIL / INCOMPLETE、Blind Creative FAIL / INCOMPLETE、Audio Gate FAIL、または重大Blockingが残る場合、finalとして納品しない。
Creative premortem checkpoints
Scope、Art Direction、Style Frame / Film Strip、Animatic、Motion Proof / Benchmark、Final前で creative-premortem.md を更新する。最終MP4がtarget quality未達で拒否されたと仮定し、現在の証拠があるriskだけを最大3件記録する。Premortem自体がTechnical riskへ偏っていないか、古い懸念を惰性で繰り返していないか、新しい固定ルールで別品質を潰していないかも点検する。
環境制約への対応
連続アニメーションを実装できなくなった場合、動きだけを削除しない。
選択肢:
- 別の実装経路へ移す。
- 時系列説明をBefore/Afterや比較へ変えるなど、Visual Planを静止用に再設計する。
- 成果物仕様を変更し、品質差をユーザーへ明示する。
当初の動作前提の図を静止させただけの状態では納品しない。
Blocking
次が一つでも残る場合は納品しない。
- 文字と図形の意図しない重なり
- 判読不能な文字
- 意図しないクリッピング、safe area重大違反
- 図・語り・数値・状態の矛盾
- internal labelをそのまま表示タイトルへ出す/不要なタイトルを全Sequenceへ置く
- 画面文言やナレーションが研修見出し・広告コピー・格言の寄せ集めになる
- タイトルから説明対象を特定できない
- Primary範囲の重要な説明構造が最終レンダーで崩れている
- 動きを削除した結果、因果・順序・状態変化が理解不能
- 主要motionが不自然に途切れる
- renderer lockと最終rendererが異なるのに再QAしていない
- Motion Proof未実施
- 宣言したMotion Quality Profileを大きく下回る未承認downgrade
- 最終MP4 / PDFそのものを確認していない
- Series modeで別unitの責任を勝手に抱え込む
- Benchmark evidenceが無いのにFull Productionへ進む
- Blind Creative ReviewがINCOMPLETEのままfinal扱いする
- ナレーション必須なのに字幕・SEだけでfinal扱いする
- final成果物がGate input変更後のSTALE判定を引き継いでいる
保守性
content.md を内容source of truthとする。
visual-model / sequence-plan / timeline.json を映像dependency mapとする。
Series modeではparent content id / source id / unit idを維持する。
変更は source -> content -> sequence/page -> timeline -> render の順に追う。
参照
references/series-mode.md— シリーズ責任境界references/domain.md/sources.md— 根拠references/research-closure.md— Content前のResearch Closureと探索dimensionreferences/research-dimensions.json— 調査を早期停止しないprobe集合references/instruction-search.md— Content/Instruction Freeze、候補全列挙、Pareto・ablation・sensitivityreferences/instruction-realization.md— 未解決surface変数のbounded exploration、dominance check、Realization Freezereferences/instruction-operator-library.json/instruction-evidence-register.json— evidence-bounded operator候補と根拠境界references/content.md— 教材本体references/scope-duration.md— タイトル責任範囲とMinimum Comprehension Durationreferences/learning-design.md— 学習構造references/communication-quality.md— 6軸Communication Quality Model、review順序、修正順references/design-psychology.md/design-psychology-principles.json— viewer taskから法則選択と完成物観察までを統制する共通モデルreferences/visual-psychology-plan.md— scene plan、series contract、release review、A/B運用references/communication-plan.md— Art Direction前のFunction / Necessity / Channel契約references/title-design.md— internal label / display title / nullable titlereferences/audience-language.md— Communication Quality最後のsurface naturalnessreferences/visual-concept.md— 題材固有のVisual Language / Sensory Designreferences/asset-quality.md— Hero / evidence / explanatory asset品質references/motion-art-direction.md— Motion Art Directionreferences/motion-quality-rubric.md— 品質水準references/style-frames.md— Static Hero Frame Gatereferences/film-strip.md— Storyboard / Film Strip Gatereferences/animatic.md— 時間配分 / Camera / Hold / Rhythm Gatereferences/motion-necessity.md— 動画である必然性のA/B比較references/benchmark-review.md— 外部Professional referenceとの比較references/creative-certification.md— outcome-based Level 3 / Blind Creative Reviewreferences/creative-premortem.md— Creative Gate横断のメタ・プレモータムreferences/sequence-design.md— Sequence / Bridge / Shotreferences/video-handout-model.md— 動画/PDF分離references/renderer-strategy.md— 実装方式とfallbackreferences/threejs-backend.md— Three.js pure-time / GLTF / camera / material backendreferences/threejs-offline-runtime.md— exact-source supply-chain / Git blob + commit lock / single-file offline ESM / provenancereferences/threejs-restricted-environment.md— Xvfb / headed Chromium / project-local routingによる制限環境実走references/hybrid-rendering.md— Layer/Sequence単位のHybrid compositionreferences/visual-storytelling.md/svg-explanations.md— visual payoffと説明図references/motion.md— Motion原則references/sound-design.md— 音references/visual-qa.md— 最終レンダーQAreferences/render.md— ハーネスreferences/review.md— レビューharness/motion-film-skeleton.html— V3既定骨格harness/deck-skeleton.html— 旧互換
Deterministic Typography Toolchain
For final Japanese or complex-script text geometry, use references/typography-toolchain.md. Treat BudouX as semantic break candidate generation and HarfBuzzJS as the final shaping authority. When text geometry is critical, reuse one serialized glyph run across SVG / PDF / Three.js rather than re-measuring independently per renderer.
Deterministic vector and visual QA
For unequal-topology SVG morphs and pixel-level render regression evidence, use harness/path_morph.mjs, harness/visual_diff.mjs, and references/vector-and-visual-qa.md. Keep these technical checks separate from semantic/creative judgment.
Deterministic machine runtime
Use vendored Ajv for machine-readable contract/schema gates and SVGPathCommander for path geometry. Prefer the locked resvg runtime for final static SVG rasterization when its verified binary is provisioned; otherwise keep fallback renderer identity explicit and never silently claim resvg. See references/deterministic-runtime.md.
Voice consistency reference: references/voice-lock.md. Obtain communication_text=PASS, then use python3 harness/tts.py prepare script.md, route the job through japanese-tts, then python3 harness/tts.py import script.md and python3 harness/voice_lock_check.py . before final audio QA.