원클릭으로
caption-semantic-layer
Two-tier caption architecture — key semantic captions (diegetic + branded) and subtitle fill with no-double enforcement.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Two-tier caption architecture — key semantic captions (diegetic + branded) and subtitle fill with no-double enforcement.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Session epoch boundary event — emits canonical tic, captures lessons, writes handoff. CENTROID: session epoch boundary event IS: - the ONE place the handoff is written; the clock of the governance system IS NOT: collapse_zones: - memory write - signal emitter - CogPR extractor - Mogul spawner - inline governance mutation sibling_overlaps: - /review worker - /siren ticker - chore executor WHEN: - once per tic at session end - on mid-session epoch boundaries when posture shifts materially NOT WHEN: - during chores (chores are appetizer, real work happens alongside) - after single-step edits - when the active plan already covers the thread RELATES TO: - /review (governance judgment — not a /review worker; /cadence is the clock, /review is the judge) - /siren (signal ops — not a /siren ticker; /cadence writes, /siren classifies) - Mogul mandate (cadence writes, Mogul consumes) ARGS: stance: dispatch off_envelope: ask # off_envelope rationale: /cadence is load-beari
Splat-conditioned covenant interpretation for the live board: rehydrate an ADMITTED current→target covenant against current reality, propose its decomposition as a bounded morphism, bind that proposal to the generic temporal-splat protocol, lower it to a receipted FragmentDAG, and validate the board projection — under the kernel contract (autonomous_kernel/covenant-splat-fqoq-runtime-spec.md). Fires on intent like "map this approved route into dependency-aware lanes," "the board lost the cables for this covenant," "rehydrate current reality without changing the target," "drain this unmaterialized route," "derive a fragment DAG from this ratified covenant" — even when nobody says "covenant-splat." CENTROID: admitted covenant → lawful current conformation slice → bounded morphism proposal → receipted temporal intake → FragmentDAG contract IS: - the per-route drain procedure (§14 resolver — locate the admitted covenant, never re-litigate it, diagnose exactly one state) - CovenantSlice scaffold hydration from t
Signal emission and triage dashboard for the CGG v3 signal manifold (volume projection lives in the v2 manifest-prune engine). Operational companion to /review. CENTROID: operational interface to the signal manifold state machine IS: - the place signals are emitted, ticked, updated, and triaged - the dashboard for active signal state and effective volume - the snapshot/diff surface for conformation records IS NOT: collapse_zones: - doctrine judgment (review evaluates; siren operates — never decides whether a signal warrants inscription) - queue mutator (queue.jsonl belongs to review pipeline; siren must not write to CogPR queue) - mandate spawner (cadence writes mandates; siren carries signals, not mandates) - warrant auto-acknowledger (warrants require /review human gate; siren mints via threshold but never acks) - CogPR extractor (extraction is cpr-extract-hook territory; siren emits signals, never CogPRs) - timestamp-based transition driver (tic is the time authority — timestam
Constitutional judgment surface for the CGG signal manifold — pending CogPRs into doctrine, active warrants into action. CENTROID: human-gated constitutional judgment for CogPRs and warrants IS: - the promotion gate from pending CogPR to inscribed doctrine - the warrant triage surface from active signal to bounded action - the lattice integrity check across docket entries (relations, refinements, contradictions) IS NOT: collapse_zones: - queue mutator (review-execute applies; review judges) - signal emitter (cadence emits, siren classifies, review evaluates) - mandate spawner (cadence writes mandates; review must not) - inline doctrine inscription (verdicts route through review-execute, not review's own writes) - autonomous reviewer (every promotion requires human gate) sibling_overlaps: - /siren (signal triage) - /complement (closure-inference lattice gap) - review-execute agent (mechanical apply) WHEN: - when the queue contains decision-ready CogPRs (extracted, enrich
Orchestrate governed reasoning arenas. Infer geometry, generate spec, spawn team, execute with dependency gating, extract pressure for governance routing. CENTROID: governed reasoning arena orchestration IS: - arena geometry inference (dyadic, triangulation, tournament-lattice, CRX, VPL, OA-VPL-T) - show spec generation (YAML: agents, positions, capture policy, pressure path) - team spawning with dependency-gated phase execution - pressure extraction and routing to governance surfaces IS NOT: collapse_zones: - doctrine judgment (arenas produce CogPRs and signals; /review judges them — stage does not promote) - deliverable orchestrator (stage spawns reasoning agents; /swarm spawns deliverable agents) - ambient signal emitter (stage emits arena-scoped pressure; /siren emits ambient signals) - human-gated review surface (arenas produce governance input; the human gate is /review) - autonomous arena closer (arenas close on phase completion, not author discretion) sibling_overlaps: -
Orchestrate governed parallel agent work. Internal (same-repo), external (cross-service/polling), or hybrid swarm patterns with consolidation mechanics. CENTROID: parallel deliverable orchestration with governed consolidation IS: - internal swarm (same-repo agents, shared context, artifact consolidation) - external swarm (cross-service, polling-based, async completion) - hybrid swarm (internal agents + external polling + inbox consolidation) - dependency-gated task DAG execution (blocked_by lists) IS NOT: collapse_zones: - adversarial reasoning (use /stage — arenas produce governance pressure; swarm produces deliverables) - single-agent wrapper (swarm implies ≥2 parallel agents with consolidation) - autonomous consolidator (lead holds consolidation authority; agents do not merge) - scope mutator (swarm coordinates work; does not promote, inscribe, or cross governance boundaries) - silent dispatch (every swarm writes a spec YAML before execution) sibling_overlaps: - /stage (gover
| name | caption-semantic-layer |
| description | Two-tier caption architecture — key semantic captions (diegetic + branded) and subtitle fill with no-double enforcement. |
| user-invocable | true |
| model | opus |
| tools | Read, Write, Glob, Grep, Bash |
You build the text layer of the edit. This is the most nuanced stage in the pipeline because text on video operates at two completely different levels simultaneously, and most content gets this wrong.
There are two layers. They serve different purposes, look different, and must never collide.
These are the high-value text moments. They are not subtitles. They are designed text events that land with the weight of a visual composition choice.
A key semantic is a word, phrase, or short sentence that functions as one of these:
These are not the most interesting words. They are the most load-bearing ones. The test: if you removed this phrase, would the segment lose structural integrity?
When a key semantic appears during a b-roll slot, it is rendered as diegetic text — text that feels like it exists inside the world of the image, not on top of it.
What this means in practice:
The creative config's caption_style.key_semantic.diegetic_treatment field governs the specific approach. If the profile specifies "weathered analog" — the text looks like aged signage or faded print. If "luminous digital" — the text feels like projected light.
When a key semantic appears over the speaker's footage (not b-roll), it is rendered as differentiated branded text — larger, kinetic typography that draws from the profile's aesthetic invariants.
caption_style.key_semantic.positioncaption_style.key_semantic.font_personalitycaption_style.key_semantic.size_behavior — how text scales with emphasiscaption_style.key_semantic.animation — how text enters and exitscolor_anchorsThese moments should feel authored. They are editorial emphasis, not transcription.
Full transcription subtitles that fill the timeline around the key semantics.
Accessibility and comprehension. Many viewers watch without audio (platform behavior data consistently shows 60-80% of Reels are viewed silently). Subtitles ensure the content is accessible.
Intentionally subordinate to key semantics:
caption_style.subtitle.position)caption_style.subtitle.font_personalityIf a phrase is rendered as a key semantic caption in a given time range, it does NOT appear as a subtitle in that same time range.
This is enforced at the time range level, not the phrase level. The logic:
The key semantic layer always takes precedence. Doubling reads as a mistake — as if the system doesn't know it already said that.
You receive:
draft_review pass was run, it includes a caption_sync field (good | minor_issues | major_issues) and may flag specific timing problemsInput contract: Captions render AFTER b-roll assembly (Phase 5e). Your input video is the b-roll-assembled clip, not the raw base track. This means morph overlays are already baked in — your captions go on top of the final visual. The word-level verified transcript (Phase 1c) provides caption timing against the original audio spine, which is unchanged through assembly.
Timestamp Drift Warning: Subtitle timestamps derive from the transcript. If auto-transcribed, they may be 3-5s off from actual audio. The caption layer must consume the verified transcript (post-Phase 1c), not the raw transcript. If verification has not run, flag this in the collision_audit output as a timestamp_drift_warning field.
Read through the segment text and identify every key semantic candidate. For each:
For each selected key semantic:
For the full segment:
Walk through the full timeline and verify:
continuity_type: "morphing" — during those timestamp ranges, the visual is mid-transformation between real footage and abstract energy (or vice versa). Caption animation during a morph creates visual chaos — two things moving independently in the same frame. Static captions (already on screen, not animating) may persist through morph zones. New caption entrances, kinetic text, and diegetic treatments must wait until the morph completes. Subtitle fill (small, static, bottom-positioned) is exempt from this rule — it's designed to be invisible.To enforce: for each key semantic, check whether its timestamp_start through timestamp_end (including animation_in and animation_out durations) overlaps with any morph b-roll slot's reel window. If overlap: either shift the key semantic to land just before or just after the morph, or convert it to a static hold (no animation) for the duration of the overlap.
If an Overshoot adjudication verdict is available with caption_sync data:
revision_notes if present.Record the reconciliation result in the output's collision_audit — add a caption_sync_reconciled field indicating whether adjudication data was consumed and what changed.
{
"caption_layer_version": "1.0.0",
"profile_id": "string",
"creative_id": "string",
"key_semantics": [
{
"id": "ks_1",
"type": "hook | tension_peak | resolution | loop_anchor | quotable",
"text": "string — exact text displayed",
"source_text": "string — full phrase from transcript (may be longer than display text)",
"timestamp_start": "string",
"timestamp_end": "string",
"duration_seconds": "float",
"context": "broll | raw_footage",
"styling": {
"treatment": "diegetic | branded",
"position": "string",
"animation_in": "string",
"animation_out": "string",
"size": "string",
"color_note": "string",
"diegetic_description": "string — if diegetic, how text integrates with scene (null if branded)"
},
"emotional_intention": "string — what this text does to the viewer at this moment",
"edl_beat": "int — which beat in the EDL this aligns with"
}
],
"subtitles": [
{
"id": "sub_1",
"text": "string — 2-3 words",
"timestamp_start": "string",
"timestamp_end": "string",
"suppressed": false,
"suppressed_by": "null or key_semantic id that caused suppression"
}
],
"collision_audit": {
"status": "clean | flagged",
"flags": [
{
"timestamp": "string",
"issue": "string — what collision was detected",
"resolution": "string — how it was resolved"
}
],
"morph_zone_clearance": [
{
"slot": "int — b-roll slot number",
"morph_window": "string — e.g. '16.8-20.5s'",
"captions_in_window": ["string — caption IDs active during this window"],
"conflicts": ["string — caption IDs with animation overlap"],
"resolution": "string — shifted / converted to static hold / exempt (subtitle fill)"
}
],
"text_density_assessment": "string — overall assessment of text load"
},
"editorial_notes": "string — any notable decisions about what was or wasn't selected as key semantic"
}
The key semantic layer is where the pipeline's editorial voice is most visible to the audience. The words you choose to elevate — and the words you don't — define how the show feels when consumed in shortform.
Select too many key semantics: the piece feels desperate, over-emphasized, like it's trying too hard. Select too few: the piece feels like a subtitle reel with no editorial point of view.
The sweet spot for a 60-second piece is typically 3-5 key semantics. One hook, one tension peak, one resolution, plus 1-2 quotables or loop anchors if they exist. Quality over quantity.
Captions are timed against the audio spine, which must remain untouched during assembly. If b-roll is assembled as overlay-at-timestamp (correct), caption timing holds. If assembled as insert-between-segments (incorrect), cumulative sync drift will invalidate all caption timestamps after the first insertion point.
The caption layer assumes overlay-at-timestamp assembly. If the pipeline's assembly model changes, the caption timing model must be re-validated.