# Three separate decisions in a portable editing workflow

Recorded September 7, 2026. This kit executes unchanged production CLI,
command-engine and render-planner bodies from Timeline Studio commit
`68980d142cce421eab86cd4ef26a4475a6affd56`. The original files and their exact
source URLs and SHA-256 hashes are in `upstream/` and `source-manifest.json`.

## Reproduce

Extract `editorial-workflows-case-kit.zip`. With Node.js, native FFmpeg and
ffprobe on PATH, run this command inside the extracted kit:

```sh
node reproduce.mjs
```

The recorded environment and FFmpeg build are in `results/report.json` and
`results/ffmpeg-version.txt`. The run makes eight actual CLI invocations and
performs eleven assertion groups. There is no account, model download,
package installation, network call or LLM call. It writes the named plans,
derived input fixtures, result projects, reports and MP4 within this kit. An
assertion failure exits unsuccessfully. The production renderer also creates
and cleans its own temporary extraction directory, as recorded in its source.

`run-command.mjs` redirects three import locations to the included modules.
It does not modify production function bodies. The bundled `fflate.mjs` is
fflate 0.8.3 with its MIT notice. Node built-ins are provided by Node itself.
The verifier first checks every pinned source hash.

## 1. A handoff after a completed write

`input.timeline` is the published six-second synthetic slate/tone fixture
from the companion source-offset experiment. The audio starts at project
2 seconds, lasts 3 seconds, retains source 1–4 seconds, and plays at 1x.

The first plan moves its start to 3.25 seconds, producing revision 1.
A fresh process reads that output and repeats the same operation ID with
the original baseRevision 0. It returns revision 1 with no newly applied
operation IDs. The parsed project state is identical to the first result.
A third fresh process uses a new operation ID against that same saved state
but still requests revision 0; it returns REVISION_CONFLICT and writes no
requested output. Operation IDs identify intentions: reusing an old ID with
changed arguments is not a supported way to express a new intention.

This is a CLI process handoff, not a test of Codex, Claude Code, Copilot or
Gemini CLI installations or a simulation of their approval systems.

## 2. A brief expressed as one linked timing edit

`creative-brief.json` records the desired change and preserved values.
The starting fixture adds a caption reading “Diagnostic tone — not speech”,
linked to the audio. It is a timing label, not a transcript.

Moving the audio one second earlier changes its project range from 2–5 to
1–4 seconds. The linked label changes from 2.25–4.5 to 1.25–3.5 seconds.
Source start 1, source duration 3, playbackRate 1 and the six-second visual
slate are unchanged. A project.diff call returns no output artifact and does
not change the input. The following project.run produces exactly the same
field-level changes as the dry run. The result is a portable project, not a
completed speech or automatic story-editing demonstration.

## 3. Archive entries and a bounded render

The archive case adds `notes/client-note.txt` to the original ZIP, then uses
project.set_ratio to change the project from 16:9 to 9:16. Every entry other
than project.json is compared byte-for-byte before and after: the 4,559-byte
PNG, 256,044-byte WAV and 70-byte note. The comparison records complete
SHA-256 values. The project metadata and outer ZIP are expected to change.

The pinned CLI then renders that uncaptioned project to a six-second
180x320 MP4 at 24 fps. Its ffprobe result records dimensions, duration and
an audio stream. The verifier additionally decodes the entire MP4 with
FFmpeg and requires exit code 0. The video contains a contained synthetic
color slate with tone audio, not recorded people or generated narration.

The captioned fixture from case 2 is submitted separately to the same
renderer. It returns UNSUPPORTED_RENDER_FEATURE and a nonzero exit status.
The result verifies one explicit rejection boundary. It does not claim all
unsupported features were individually exercised.

## Records, portability and limits

`results/commands.json` preserves each invoked command, exit code and parsed
CLI response. The only publishing normalization replaces this kit's absolute
working-directory prefix with `./` in response paths. Reproduction always
uses the real current working directory, so path normalization does not
alter execution. No response fields, timings, state changes or failures are
substituted with invented outcomes. The source archive's media bytes are
not edited by the reproduction script.

The experiments do not test browser reopening, vendor Agent integrations,
real speech, automatic editorial choices, voice synthesis, mobile interaction
or perceptual video quality. The successful native render is a concrete
capability correction for this source snapshot; it is not a claim that all
Timeline Studio features can be rendered by the command line.

## Provenance and licenses

The input slate and tones come from the original AI Creator engineering
kit at `/resources/evidence/2026-09-07/engineering/`, whose `make-media.py`
contains the procedural media recipe. No third-party photographs, footage
or recorded voices are used. The new brief, label, note, verifier, records
and explanatory material are original for these field notes.

Timeline Studio's MIT notice is included as `upstream/LICENSE`; fflate's
notice is `upstream/FFLATE-LICENSE`. The new kit code, documentation and
synthetic additions are also distributed under the included MIT terms.
