Remix notes lint: FORMAT.md needs a Captions heading
What the remix media notes verb checks: a Captions heading in FORMAT.md, media.sume.com links only, the 200,000 byte cap, and why a lint failure still saves.

The remix media notes verb never refuses a note for failing its lint. It saves the markdown as an artifact, finishes the job, and reports the problems in a lint object and as note_lint: warnings. The one check people trip over is that FORMAT.md needs a heading with the word Captions in it.
This comes from the lint function in the API contract on origin/main and the Remix media docs, read 2026-10-11. The notes verb is unbilled, so a lint warning costs nothing to fix and re-post.
The five note names
A note is a markdown text artifact bound to an understanding_id. The name must be one of five files, split by what the note describes.
- Reference notes read an existing clip:
ANALYSIS.md,TIMELINE.md,PROGRESS.md. - Project notes describe the thing you are making:
FORMAT.mdsays why the format works and which spoken words its captions attach to, andTREATMENT.mdis the target treatment. - The markdown is limited to 200,000 characters on the request and 200,000 bytes in the lint.
What the lint checks
Each check adds a short problem string. A clean note has an empty list and ok: true.
| Problem string | Triggered when | Applies to |
|---|---|---|
| empty | The markdown is blank after trimming | All notes |
| too_large | More than 200,000 UTF-8 bytes | All notes |
| foreign_link:<host> | A markdown link points anywhere except media.sume.com | All notes |
| bad_link:<url> | A markdown link cannot be parsed as a URL | All notes |
| missing_section:captions | No heading of level 1 to 3 contains caption or captions | FORMAT.md only |
| heading_time_order:<heading> | A heading like ## 12.5-10 ends at or before it starts | TIMELINE.md only |
Two quiet limits of the check
The link rule only looks at markdown link syntax, a bracketed label followed by a parenthesized https URL. A bare URL pasted into a sentence is not inspected. The docs say evidence links must be media.sume.com artifacts, so use the artifact URLs that earlier verbs returned when you want the note to pass.
The time-order rule reads a heading such as ## 4.2 - 7.8 as numbers. A timecode with a colon, like ## 0:04 - 0:07, does not parse as a number, so it is skipped rather than checked. If you want the order verified, write the heading in plain seconds.
What a failed lint looks like
The job result carries note.lint with ok: false and the list of problems, and the top-level warnings repeat each one with a note_lint: prefix, for example note_lint:missing_section:captions. The artifact, its URL and its byte count are returned either way.
That makes the lint a checklist, not a gate. Send the note, read the warnings, and post a corrected version if any appear. Add the Captions heading even when the answer is short, for example a line saying which spoken words each caption sticks to; the docs describe it as the thing FORMAT.md exists to answer.
A minimal FORMAT.md that passes
A passing project note is short. It opens with a heading that says what the format is, adds a ## Captions section naming the spoken words each caption sticks to, and uses only media.sume.com artifact links as evidence. A note with no links cannot raise a link problem, so an evidence-free draft passes the link rules by default.
Treat the lint as the floor, not the review. It cannot tell whether your captions section is true, only that it exists, so a person or an agent still has to read the note against the reference tiles.
Where this runs
The docs say Sume lists the remix media routes and tools only where SUME_COM_REMIX_MEDIA_ENABLED permits: development has it on and production is opt-in. If your environment does not list POST /v1/remix-media/notes, keep the notes in your own repository instead.
Sources
Related posts
More in Media tools
- Remix tile: 96 cells per call, and how to count yours
A remix media tile call is refused above 96 cells with remix_tile_too_many_cells. How each selector is counted, worked examples, and ways to split a request.
- Remix tile accepts a reference ingest id; other verbs do not
Use a finished reference ingest id as understanding_id for remix tile, including around without a transcript job. Boundaries and cut still need a probe.
- Which Sume media routes need a flag, and which are on prod?
Remix media, reference ingest and the trending-videos rebuild are flag-gated; video inspect, frames, trim, detach, filter and timeline are on dest and prod.
- How to assemble a long-form video with the Timeline 1.0 API
Timeline 1.0 renders one audio spine plus 1 to 200 ordered video slots into one MP4. Every URL must be Sume-hosted; the plan preflight is unbilled.
Written by Sume