ingest
Resolves the video id, fetches official metadata (YouTube oEmbed; Data API adds duration whenYOUTUBE_API_KEY is set), downloads bestaudio via yt-dlp, and — when the Data API is unavailable — measures the real duration locally with ffprobe so downstream stages never see a zero-length timeline.
transcribe
Gemini 3.5 Flash returns{language, segments:[{id,startSec,endSec,text}]} from the audio inline payload.
understand
Nimi receives the typed source package and returnsSourceAnalysis. Deterministic validation checks
source identity, evidence bounds, provenance, confidence, and analysis-only authority before persisting
the complete object and canonical digest. Ryan receives that exact persisted analysis. See
Nimi for its method and agent contracts for the handoff.
strategize
Ryan turns the persisted analysis and bounded operator, performance, and eligible Memory Bank context into one four-weekContentStrategy with grounded briefs. Application code validates its evidence
lineage and authority, then persists the proposal, version, and canonical digest. See
Ryan for the strategy method.
awaiting_strategy_approval
An authenticated human decision must match the current strategy digest. One rejection with required operator feedback permits strategy version 2; a second rejection terminates the job. Temi cannot run for a missing, rejected, expired, or mismatched approval. Dashboard, chat, and allow-listed Telegram decisions use the same tenant-scoped transaction.plan
Application code persists one immutable planning snapshot containing capabilities, commitments, capacity, cadence policy, posting-window observations, assets, dependencies, and calendar projection. Temi receives its exact ID and digest alongside the unchanged approved strategy and Nimi analysis. After validating and persisting Temi’s plan, deterministic code selects one eligible item for production. Temi never mutates an external calendar. See Temi.draft
Noni receives only the selected editorial item, exact Ryan brief, and referenced Nimi evidence. Dara reviews the exact draft against immutable input. Deterministic code permits at most one issue-bound Noni revision, validates the complete trace, and prepares effect proposals from accepted content. See Noni and Dara; the full skills and tools inventory is here. Every action lands withrequiresApproval, risk level, and its own idempotency key material.
awaiting_approval
Hard gate for X publishing and paid Veo/Lyria generation. Approvals arrive through the dashboard queue, chat (“approve job <id>”), or a Telegram inline-button callback — all through the same decision engine, which records who approved what and when. Content-pack export, Gemini image generation, and local ffmpeg rendering are internal artifact actions withapprovalState: not_required; they never inherit a fictional human decision and do not publish anything.
publish
Executes policy-authorized actions in order, checking effect claims and receipts first for idempotency. Approval-required actions must carry the exact matching decision; internal artifact actions execute under their deterministic safe-action mandate:
Failures are classified: permanent errors stop the job visibly, transient errors nack for redelivery.
