# Caption round-trip preservation: protocol v1

Recorded locally October 31, 2026, before the first conversion matrix. This is a timestamped local plan, not independent study registration. Original constructed material; no accounts, people, transcription services or platform uploads.

## Question and fixed material

When a caption file passes through these specific processing paths, which declared cue times and literal payload characters survive? Does successful command exit mean that every intended cue survived? This asks about file conversion, not display quality or LinkedIn acceptance.

Use all twenty cases in corpus.json, in their existing order. Six container cases vary line endings, BOM, separators and cue identifiers. Six payload cases cover German, emoji/combining characters, multiple lines and spaces. Six boundary cases cover markup, literal brackets, overlap, reversed times, an empty cue and a decimal-separator variation. The final two compare NFC and NFD accented text. Families and expectations are fixed before execution. Related variants are not independent random samples; no population pass rate or statistical generalization.

## Fixed paths and repeats

1. Wrapped.li's existing plain-text inspect/export function, offset zero. Preserve the exact source copy and SHA256. It deliberately excludes markup, overlapping cues and some other constructs. It is not an SRT conformance authority.
2. FFmpeg: explicitly demux as SRT and encode to SRT.
3. FFmpeg: explicitly demux as SRT, encode to WebVTT, then demux that WebVTT and encode to SRT.

Use installed FFmpeg and Node versions, recording them. No automatic repair, character-encoding override, fallback parser, retries with different settings or replacement of difficult cases. Run the complete twenty-case, three-path matrix twice in separate directories. Repeats test determinism, not additional experimental units. Publish every path, including failures, empty outputs and changed content.

## Measures

Record process/export status, diagnostics, output bytes and SHA256, independently read output cues, cue count, exact start/end millisecond equality, and literal payload equality after converting line endings to LF only. Do not trim spaces, normalize Unicode, remove styling tags or renumber expectations to make comparisons pass. Identifiers are not part of the cue semantic comparison; report byte identity separately. Parse output with a small measurement reader that accepts overlaps and does not reuse the tool's admission rules. Nonempty unmeasurable output stays unmeasurable, never becomes zero cues.

For malformed/boundary input, expectation means declared source intent, not a claim that the input conforms to a universal SRT standard. Literal markup comparison is not a visual rendering or styling comparison. A rejection can be appropriate for a declared subset, and permissive conversion is not proof of correct content.

Record the existing checker's review flags and code-point rate for the NFC/NFD pair. Do not interpret these local heuristics as human reading-speed or accessibility measurements.

Compare complete output hashes and measured results between runs. Retain mismatches and investigate before making a repeatability claim. No cherry-picked replacement trials. Save protocol/corpus/engine/runner hashes before execution; include all inputs, outputs and results in a downloadable bundle.

## Limits and practical use

This is an original local processing experiment, not a comparison of caption editors generally, a legal accessibility assessment, a real-reader task study or a test of LinkedIn's caption ingestion. No claims about people understanding captions, provider acceptance, media synchronization, styling, glyph rendering, revenue or platform reach follow from these measurements. Inspect actual final video/captions and preserve the original source before a real publication.
