# First 20 fieldnotes draft toolkit

20 recipes, 40 frozen reviewed renders, **zero completed examples**. Authorized
publication is for draft review, not fidelity acceptance, scaling or production.
No source movies, narration, research-frame archives, private reports, prior
assets, author/probe helpers or installed dependency code are in these archives.

## Download and merge

Download `toolkit-index.json`, `toolkit-index.sha256`, `extract_toolkit.py`,
`core.zip`, and the selected recipes' `assets/RECIPE_ID/index.json`
and every `assets/RECIPE_ID/assets-NNN.zip` listed in the index. Preserve those
relative paths beside `toolkit-index.json`. Download all recipes for the full
test suite. Four recipes need no asset archive; their fonts are already in core.
The per-recipe index is still required. All archive members start with `project/`.

Verify the published index checksum, then from the download directory:

```bash
sha256sum -c toolkit-index.sha256
python3 extract_toolkit.py --index toolkit-index.json --dest toolkit
cd toolkit/project
npm ci
npm run typecheck
npm test
```

Python 3.10+ is required for the extractor. Its destination must be new. It
checks archive and member hashes, rejects traversal, symlinks, special files,
duplicate/case-colliding names and file-directory collisions, then verifies all
selected native-bound files after merging. It never overwrites an existing
project. Integrity hashes detect corruption, not publisher authenticity: obtain
the index checksum from the intended publication. Each ZIP is strictly below
24 MiB and no individual file is split. Do not nest one project inside another.

To download less, add `--recipe type-dock-subtraction` (repeatable) to extraction.
The complete core remains available; unselected recipes cannot render until their
assets are supplied. To add more later, rerun extraction into another new folder
with the expanded selection, then copy only your own inputs/output files across.
The full `npm test` suite requires all recipe assets and a local Chromium.

## Runtime setup and first render

Use Node 22.18+ (the package declares this minimum), npm, FFmpeg/FFprobe on PATH,
and a supported local Chromium browser. Dependencies need network access during
`npm ci`; rendering uses local assets. The renderer does not download a browser.
If needed set `REMOTION_BROWSER_EXECUTABLE` to your own browser executable; do
not copy another machine's path. `npm test` includes real-browser adapter tests.

From `toolkit/project` use only the documented native CLI:

```bash
npm --silent run catalog -- search --family typography
npm --silent run catalog -- show type-dock-subtraction --contract
npm run render -- --recipe type-dock-subtraction --variant default --out out/dock-default.mp4
npm run verify -- out/dock-default.mp4
npm run render -- --recipe type-dock-subtraction --content examples/type-dock-subtraction/adaptation.json --out out/dock-adaptation.mp4
npm run verify -- out/dock-adaptation.mp4
```

Use a new output filename on repeats. Keep each newly generated provenance
manifest beside its video; do not publish diagnostic absolute browser paths
without a separate metadata-only privacy review. Render success is not source
fidelity. The packager's hash checks do not claim all 40 examples were rerendered.
The publication build's execution report records the actual subset checked.

## Agent editing contract

Start at `AGENT_GUIDE.md` and `.agents/skills/fieldnotes-editing/SKILL.md`.
Search a small subset and read contracts before editing. The three typed builder
contracts and guides live in `adapters/contracts/` and `docs/`. For other recipes,
copy the shipped default/adaptation Content JSON under `inputs/`. Do not modify
runtime, recipe choreography, fps, geometry or text to evade a failing contract.
`inputs/` also retains historical generated content/provenance byte-for-byte;
those historical builder hashes are not rebound to current code. Generate new
outputs with current typed adapters rather than relabeling old records.

## Public review and metadata policy

The core artifact-history catalog is deliberately an **empty draft derivative**;
recipe discovery and typed contracts still work. Its local artifact status is
`not-built`, not a false claim of missing locally verified movies. Open
`public-guide/index.html` for https://openai-film-fieldnotes-100.pages.dev/videos/editing/benchmark/library/review/ . Main may later publish a separate
artifact metadata derivative at the final base; that cannot change this ZIP's
hash or frozen runtime. Recipe source mapping is retained exactly, including
research-relative provenance strings; the renderer does not need those films.

`toolkit-manifests/RECIPE_ID.json` preserves each exact native-package bound file
record, selected render hashes and render binding values. `publication-changes.json`
records source/public hashes and exact metadata/document changes. Raw removed
private diagnostics are hashed, never repeated in the public change record.
`toolkit-source-inventory.json` lists unchanged byte copies and exclusions.
`privacy-preflight.json` beside the downloads documents the mandatory
secret-scrubber scan and verified false-positive allowlist. Hashes are retained.
The only local-path scanner exceptions are synthetic negative-test literals,
not actual machine/user locations. Binary image pixels are not semantically
privacy-certified by a text scanner; their exact original/permitted asset
bindings and provenance are retained.

## Rights

Read `ASSET_RIGHTS.md`, `licenses/README.md` and the NASA recipe ledger when used.
Shared Geist and OFL files are in core. Dependency terms are retained under
`licenses/`; npm ci retrieves pinned dependency code, subject to its own terms.
This publication does not create a new source-code license or grant rights to
source-film footage, trademarks or arbitrary third-party assets.
