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.

4 min readSume
All posts

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.md says why the format works and which spoken words its captions attach to, and TREATMENT.md is 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.

Lint rules from the remix media contract (read 2026-10-11)
Problem stringTriggered whenApplies to
emptyThe markdown is blank after trimmingAll notes
too_largeMore than 200,000 UTF-8 bytesAll notes
foreign_link:<host>A markdown link points anywhere except media.sume.comAll notes
bad_link:<url>A markdown link cannot be parsed as a URLAll notes
missing_section:captionsNo heading of level 1 to 3 contains caption or captionsFORMAT.md only
heading_time_order:<heading>A heading like ## 12.5-10 ends at or before it startsTIMELINE.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

All Media tools posts

Written by Sume