# Controlled Pilot Production V2 for AutoShorts / TrueTraceShorts

Use this reference when moving from strategy/review packages toward the first real short. The key lesson: do not jump from a valid candidate directly into AI media generation. Separate text/reasoning, deterministic previews, styleframes, final render, and publishing.

## Resource tiers

- Tier 0 — Text / reasoning: freely allowed for thinking, research, hook variants, scripts, critique, scoring, review packages, shot plans, render manifests, Wan prompt planning, and social-copy variants.
- Tier 1 — Deterministic preview / JSON / review package: allowed after a valid candidate and review package. Includes text timelines, placeholder frames, deterministic HTML/JSON previews. No AI media calls.
- Tier 2 — AI image / styleframe: only after explicit `APPROVE_STYLEFRAME <candidate_id> <version> <script_hash>`. Keep it limited; no large styleframe batches.
- Tier 3 — Wan 2.2 final render: only after explicit `APPROVED_FOR_FINAL_RENDER <candidate_id> <version> <script_hash>`.
- Tier 4 — Publishing: disabled unless a later explicit manual-posting workflow is approved. Never auto-post in this class of work.

## Gate model to implement/check

Suggested enums/models:

- `ResourceCostTier`: `TEXT_REASONING`, `DETERMINISTIC_PREVIEW`, `AI_STYLEFRAME`, `WAN_FINAL_RENDER`, `PUBLISHING`.
- `RenderApprovalState`: `DRAFT`, `READY_FOR_REVIEW`, `APPROVED_FOR_ASSET_PLANNING`, `APPROVED_FOR_STYLEFRAME`, `APPROVED_FOR_FINAL_RENDER`, `RENDERED_FOR_REVIEW`, `APPROVED_FOR_MANUAL_POSTING`, `BLOCKED`.
- `MediaGenerationGate`: candidate/version/script hash + requested tier + approval state + allowed boolean + reason.

Rules:

- Text reasoning always allowed after identity/hash checks.
- Deterministic preview allowed from `READY_FOR_REVIEW` onward.
- AI styleframe allowed only from `APPROVED_FOR_STYLEFRAME` onward.
- Wan final render allowed only at `APPROVED_FOR_FINAL_RENDER`.
- Publishing remains blocked.
- Wrong `candidate_id`, `version`, or `script_hash` blocks.
- Unclear AI disclosure blocks.
- Invalid claim gate blocks.

## Pilot package shape

For exactly one main pilot, create a deterministic `PilotProductionPackage` with:

- Candidate ID, version, script hash, approval state.
- Final English voiceover text and German review summary.
- Hook, first frame, visible fail, anti-example/plausible nonsense, mechanism, fix, before/after, takeaway.
- Save/share/follow reasons.
- Claim gate result and AI disclosure result.
- Resource gate result.
- Platform fit for YouTube Shorts, TikTok, Instagram Reels, LinkedIn Manual.
- Social copy and hashtags per platform.
- Caption mode recommendation; default to word-by-word for precision/legibility.
- TTS plan and subtitle alignment plan.
- ShotPlan and deterministic preview/timeline.
- RenderManifest draft with `final_render_enabled=false`, `wan_calls_enabled=false`, `ai_image_generation_enabled=false` until approved.
- Wan 2.2 visual prompt plan; no generation.
- Negative prompts, asset list, and estimated render cost/time class.

## Wan 2.2 prompt planning rules

Prepare prompts only until explicit final-render approval. Wan must not generate baked-in text, logos, captions, numbers, or facts. All captions, labels, arrows, facts, and overlays are renderer-owned.

Each scene prompt should contain:

- `scene_id`
- `duration_seconds`
- `visual_goal`
- `prompt`
- `negative_prompt`
- `camera_motion`
- `required_overlay_text` — keep empty for Wan-baked text; renderer owns it.
- `renderer_owned_overlay_elements`
- `safe_zone_notes`
- `transition_to_next_scene`

Useful negative prompt base: `no readable text, no logos, no captions, no numbers, no charts with labels, no brand names, no watermark, no UI text baked into image`.

## CLI pattern

A safe pilot CLI should support:

```bash
python -m autoshorts.cli.demo_pilot_production_package_v2
python -m autoshorts.cli.demo_pilot_production_package_v2 --json
```

And must guarantee:

- exactly one main pilot and at most one backup;
- no final render;
- no Wan calls;
- no AI image generation;
- no Telegram API;
- no platform API;
- `side_effects=[]`, unless explicitly returning a JSON write plan;
- `external_calls=[]`.

## Tests to require

- Resource tier enum values exist.
- Wan final render blocks without `APPROVED_FOR_FINAL_RENDER`.
- Publishing always blocks.
- Wrong script hash blocks final render.
- AI disclosure unclear blocks final render.
- Claim gate invalid blocks final render.
- Pilot package serializes deterministically.
- Demo produces max one main pilot and one backup.
- CLI does not trigger Wan, AI image generation, Telegram, or platform calls.

## Pilot selection heuristic from session

For a first controlled TrueTraceShorts pilot, prefer a low-risk, high-clarity concept with strong mechanism and clear takeaway. In this session the priority was:

1. Main pilot: AI Output Autopsy — meeting summary misses decision target.
2. Backup: Digital Red Flags — fake invoice payment route changed.
3. Deferred: Workflow Teardown — automation fails because missing exception path.

This is not a permanent content calendar; it is a useful pattern for first-video readiness: one pilot, one backup, one deferred candidate — not a 30-day batch.