Appendices
Appendix G. The Full Production Form Pack#
In this chapter
This appendix gives the minimum fields from opening a project to closing its accounts. Forms do not exist to add approvals. They exist to make decisions, facts, risks and handovers verifiable. A team can turn the YAML into a database, a spreadsheet or a project management system — but do not delete the semantic boundaries.
G.1 Project intake#
project_intake:
project_id:
working_title:
client_or_owner:
commercial_mode:
target_platforms: []
audience_hypothesis:
core_desire:
series_promise:
episode_count:
duration_range_s:
target_languages: []
hard_constraints: []
known_unknowns: []
rights_unknowns: []
budget_cap:
deadline:
decision_owner:
Rules for filling it in: write unknown with an owner and a date to resolve; never write adjectives like "high quality"
or "premium feel" that carry no acceptance criteria.
G.2 Research evidence#
evidence_record:
evidence_id:
research_question:
source_url_or_id:
captured_at:
source_type:
source_reliability:
page_or_timecode:
raw_observation:
interpretation:
alternative_explanation:
applicable_scope:
rights_or_privacy_note:
captured_by:
Keep observation and interpretation separate. Code carousels page by page and video second by second. Material of unknown provenance never becomes a commercial asset.
G.3 Concept card#
concept_card:
concept_id:
one_sentence:
protagonist_active_strategy:
visible_contrast:
emotional_engine:
repeatable_episode_machine:
first_episode_proof:
ten_episode_escalation:
asset_burden:
commercial_fit:
major_risks: []
falsification_test:
Compare at least three structurally different concepts. Even after scoring, a human writes down the choice and the objections to it.
G.4 Greenlight decision#
greenlight:
decision_id:
scope:
decision: approve | conditional | reject | defer
evidence_refs: []
approved_budget:
approved_calendar:
conditions: []
experiments: []
stop_conditions: []
approvers: []
expires_at:
Approve a specific batch of learning. Do not commit an entire season with one greenlight.
G.5 Minimum series bible#
series_bible:
premise:
audience_promise:
emotional_promise:
plot_promise:
relationship_promise:
visual_constitution:
protagonist:
desire:
strategy:
flaw:
secret:
moral_line:
antagonist_method:
season_end_choice:
fact_registry_ref:
debt_ledger_ref:
The bible holds authoritative facts, not every idea anyone had. Candidate material lives in a proposals area.
G.6 Episode contract#
episode_contract:
episode_id:
entering_state:
opening_question:
protagonist_goal:
opposition:
strategy_change:
episode_change:
must_payoff:
new_debt:
ending_question:
next_open_obligation:
target_duration_s:
hard_max_s:
asset_budget:
generation_risks: []
G.7 Beat sheet#
| Beat ID | Time range | Entry state | Visible action | New information | Power change | Emotional work | Exit | Compressible |
|---|---|---|---|---|---|---|---|---|
A beat is not a shot. Every beat changes at least one of state, knowledge, power or debt.
G.8 Scene card#
scene_card:
scene_id:
location_state:
story_time:
duration_budget_s:
characters: []
entering_power:
objectives: {}
strategies: {}
escalation:
physical_proof:
turn:
exiting_power:
state_out:
sound_space:
production_risk:
G.9 Facts and knowledge#
fact:
fact_id:
canonical_value:
effective_at:
evidence_assets: []
known_by: []
unknown_to: []
audience_knows_at:
may_imply_before_reveal: false
graphics_bindings: []
Project fact, character knowledge and audience knowledge are three separate timelines.
G.10 Line registry#
line:
line_id:
speaker:
text:
target:
intent:
subtext:
known_facts_used: []
before_action:
after_action:
target_duration_s:
pronunciation_refs: []
locked: false
G.11 Narration units#
narration_unit:
unit_id:
thought_job:
entry_belief:
turn:
exit_belief:
text:
breath_points: []
visual_relationship:
authority_owned_by_narration: []
voice_anchor:
target_duration_s:
G.12 Character identity card#
identity_contract:
character_id:
stable_anchors: []
silhouette:
face_proportions:
hair_default:
immutable: []
controlled_variants: {}
forbidden_drift: []
reference_assets: {}
stress_tests: []
approval:
G.13 Character state snapshot#
character_state:
character_id:
at:
wardrobe_state:
hair_state:
makeup_state:
injuries: []
wetness: {}
held_props: []
posture:
emotional_intent:
knowledge_state:
relationship_state:
visibility:
source_event:
G.14 Location contract#
location_contract:
location_id:
canonical_plan:
fixed_landmarks: {}
materials: []
entrances: []
camera_zones: {}
light_sources: []
axis_contracts: []
sound_profile:
allowed_versions: []
G.15 Prop state#
prop_state:
prop_id:
owner:
holder:
world_location:
orientation:
open_state:
contents_fact_refs: []
condition:
last_event:
next_required_state:
G.16 Shot requirement#
shot_requirement:
shot_id:
beat_id:
narrative_job:
duration_target_s:
frame:
camera_zone:
axis:
cast_layout:
state_in:
state_out:
required_visible: []
forbidden: []
dialogue_lines: []
sound_cues: []
acceptance: {}
risk_level:
fallback_route:
G.17 Action contract#
action_contract:
action_id:
actors: []
object:
start_state:
preparation_state:
contact_peak:
end_state:
screen_direction:
safe_cut_points: []
unsafe_cut_points: []
safety_note:
fallback_coverage: []
G.18 Prompt manifest#
prompt_manifest:
run_id:
task_id:
compiler_version:
template_version:
adapter_version:
source_checksums: {}
selected_references: []
excluded_context: []
assumptions: []
rendered_prompt_checksum:
capability_token:
budget_reservation:
G.19 Attempt log#
attempt:
attempt_id:
hypothesis:
changed_variable:
held_constant: []
expected_result:
provider_job:
cost:
latency:
identity_result:
state_result:
action_result:
performance_result:
technical_result:
usable_range:
conclusion:
next_action:
An attempt with no hypothesis and no single variable does not count as reusable learning.
G.20 Candidate manifest#
candidate:
candidate_id:
source_attempt:
media_uri:
checksum:
technical_metadata: {}
input_provenance: []
rights_profile:
findings: []
allowed_uses: []
forbidden_uses: []
review_status:
G.21 Voice bible#
voice_profile:
character_id:
voice_asset:
language:
register:
pace:
articulation:
breath:
sentence_end:
intensity_map: {}
emotional_limits: []
pronunciation_lexicon:
rights_profile:
G.22 Music bible and cues#
music_theme:
theme_id:
narrative_meaning:
motif:
key_family:
tempo_range:
stems: []
allowed_variants: []
prohibited: []
rights_profile:
cue:
cue_id:
theme:
trigger:
in_time:
in_bar:
stem_state_in: {}
changes: []
out_time:
out_bar:
transition:
G.23 Usable ranges#
usable_range:
take_id:
total_frames:
identity_stable:
action_valid:
lip_sync_valid:
background_valid:
handles_before:
handles_after:
recommended_use:
prohibited_use:
G.24 Timeline change list#
edit_change:
change_id:
from_version:
to_version:
reason:
clips_added: []
clips_removed: []
timing_changes: []
dialogue_changes: []
graphics_changes: []
downstream_invalidated: []
approved_by:
G.25 Subtitle and graphic acceptance#
text_qc:
asset_id:
source_fact_or_line:
locale:
exact_text:
time_range:
safe_area_pass:
max_lines_pass:
ocr_score:
device_tests: []
font_rights:
approved_by:
G.26 QC findings and issues#
finding:
finding_id:
layer:
timecode:
observation:
expected:
evidence: []
confidence:
rule_or_evaluator:
issue:
issue_id:
findings: []
severity:
root_hypothesis:
owner:
route:
fix_version:
regression_scope: []
close_evidence: []
closed_by:
G.27 Approval packet#
approval:
approval_id:
decision_type:
candidates: []
compare_against:
must_review: []
known_deviations: []
downstream_impact:
allowed_decisions: []
decider_role:
deadline:
G.28 Change request#
change_request:
request_id:
requested_change:
business_reason:
current_baseline:
affected_assets: []
affected_facts: []
cost_delta:
schedule_delta:
quality_risks: []
rights_risks: []
options: []
recommendation:
decision:
approved_by:
G.29 Rights record#
rights_record:
rights_id:
asset_or_entity:
source:
licensor:
permitted_uses: []
prohibited_uses: []
territories: []
platforms: []
languages: []
term_start:
term_end:
ai_generation_allowed:
training_allowed:
derivatives_allowed:
evidence_uri:
evidence_checksum:
revocation_process:
G.30 Release candidate manifest#
release_candidate:
rc_id:
picture_lock:
audio_mix:
subtitle_versions: []
graphic_versions: []
rights_snapshot:
qc_report:
approved_exceptions: []
technical_profile:
files: []
checksums: {}
approvers: []
rollback_to:
G.31 Release runbook#
- Confirm the release candidate is immutable, approved and complete on rights.
- Generate the target platform files from the manifest.
- Have a second person verify checksums, episode numbers, subtitles and cover art.
- Upload to a restricted audience and preserve the platform receipt.
- Play it back and check video, sound, subtitles and events.
- Watch the guardrail metrics at low volume.
- Scale up, or roll back.
- Store the remote content ID, the time and the final state.
G.32 Experiment registry#
experiment:
experiment_id:
question:
hypothesis:
unit:
population:
variants: []
held_constant: []
primary_metric:
guardrails: []
sample_rule:
stop_rule:
invalidation_conditions: []
result:
decision:
applicable_scope:
G.33 Incident report#
incident:
incident_id:
detected_at:
detected_by:
impact:
current_safe_state:
timeline: []
root_cause:
contributing_factors: []
controls_that_failed: []
recovery:
notifications: []
remediations: []
regression_tests: []
owner:
G.34 Daily report#
daily_report:
date:
batch:
approved_seconds:
approved_episodes:
work_in_progress: {}
blockers: []
decisions_waiting: []
cost_to_date:
estimate_at_completion:
capacity_bottleneck:
rights_risks: []
tomorrow_critical_path: []
handoff_note:
G.35 Season close-out#
- Archive release packages, source projects, subtitles, music stems and checksums.
- Confirm the rights snapshot, expiries and deletion obligations.
- Reclaim temporary keys and access.
- Reconcile budget, invoices, client acceptance and payment.
- Promote reusable assets, and mark the boundary around project-specific ones.
- Close quality debt, or hand it to the next season.
- Move incidents, negative learning and scope of applicability into the knowledge base.
- Sample the archive with a recovery drill to confirm it works.
G.36 Discipline in using the forms#
The forms should not all be filled in at the end of a project. Record a decision when it happens. Change facts through events. Never overwrite an approval. Do not let free text substitute for stable fields. Unknowns may exist, but they need an owner. "Done" with no evidence is not a state.
The smallest team can start with YAML, CSV and object storage. When migrating to a database at scale, preserve the IDs, versions and semantics — do not let a tooling refactor change production facts.
G.37 The traceability index#
An auditable project can be queried along at least these paths: a finished shot back to its take and prompt; a character to every state and shot; a fact to the lines, subtitles and graphics carrying it; music to its cues and platform packages; a right to every derivative; an issue to its fix and regression; an experiment to its decision; a release to its rollback.
Exercise: document one 60-second episode completely with these forms, with no back-filling on the final day. Have another
group pick five chains at random and trace them backwards, delivering traceability_audit.md.