# V2 Closed Caption Authoring Tool

This runbook covers `TODOS.phase-72.72.13.1.9`: the V2UI closed caption
authoring tool for tagging non-verbal sounds in audio assets, including
`[door creaks]`, `[thunder]`, and `[enemy grunts]`.

## Runtime Surface

The closed caption authoring profile lives in V2UI:

- C++ header: `V2/ue/Source/V2UI/Public/V2ClosedCaptionAuthoringTool.h`
- C++ source: `V2/ue/Source/V2UI/Private/V2ClosedCaptionAuthoringTool.cpp`
- automation spec:
  `V2/ue/Source/V2Tests/Private/UI/ClosedCaptionAuthoringTool.spec.cpp`
- contract:
  `V2/ue/Content/V2/UI/Accessibility/ClosedCaptionAuthoringTool_V2_Contract.json`
- focused checker: `V2/ue/Tools/check-v2-closed-caption-authoring-tool.py`

`FV2ClosedCaptionAuthoringTool::BuildDefaultProfile` returns
`Accessibility.ClosedCaptionAuthoring.V2` for the
`Tools.Accessibility.ClosedCaptionAuthoring` tool surface.

## Authoring Rules

Each `FV2ClosedCaptionAuthoringTag` links a non-verbal caption to an audio
asset, source path, localization key, and timing range. The required default
examples cover:

- `DoorCreak`: `[door creaks]`
- `Thunder`: `[thunder]`
- `EnemyGrunt`: `[enemy grunts]`

`FV2ClosedCaptionAuthoringTool::BuildPreview` creates a validation preview that
can be exported to the subtitle rendering system after the tag passes bracketed
caption, audio-asset, timing, localization, and non-verbal metadata checks.

## Release Policy

The authoring profile is valid only when it:

- tags non-verbal sounds in audio assets;
- covers door creaks, thunder, and enemy grunts;
- requires bracketed caption text;
- requires timing ranges and localization keys;
- supports batch validation;
- exports to `SubtitleRenderingSystem`;
- rejects untagged audio assets.

## Verification

Run these checks after changing closed caption authoring:

```bash
python3 V2/ue/Tools/check-v2-closed-caption-authoring-tool.py
python3 V2/ue/Tools/check-v2-ui-module.py
python3 V2/ue/Tools/check-v2-ci-workflow.py
python3 V2/tools/validate-v2-docs.py
python3 -m py_compile V2/ue/Tools/check-v2-closed-caption-authoring-tool.py V2/ue/Tools/check-v2-ci-workflow.py
python3 -m json.tool V2/ue/Content/V2/UI/Accessibility/ClosedCaptionAuthoringTool_V2_Contract.json
```

Automation test name:
`V2.UI.Accessibility.ClosedCaptionAuthoringTool.AssetContract`.

## Horde Gates

- `closed-caption-authoring-source`
- `closed-caption-authoring-required-sounds`
- `closed-caption-authoring-bracketed-captions`
- `closed-caption-authoring-audio-asset-tags`
- `closed-caption-authoring-validation`
- `closed-caption-authoring-automation`
- `closed-caption-authoring-ci-wired`
