Most of what makes a run worth comparing is not its text. It is the shape of the work, the models, the tokens, and whether the result was accepted. OCP’s metadata_only profile keeps exactly that, and every document says which profile it follows.

Writing metadata_only well

  • The schema caps label fields such as these at 500 characters. Short is better: a label is for grouping and debugging, not for reading the work. Some strings have no cap, such as task.features values, setting options and ext payloads; they must hold no prompt or transcript text all the same.
  • Paths, repository names and working folders are not text, but they can be sensitive. You can write opaque ids instead.
  • If you need text, use the full profile and put it inside an ext namespace. Core fields stay labels under both profiles.

Sharing documents

A document that stays on the machine it was recorded on can keep paths and repository names. Before documents leave, reduce them further: hash repository names, and drop titles, paths, commands and commit hashes. loopmath’s share command does this, and prints exactly what would leave with --preview.

Trust

The schema checks the 500-character cap on label fields, not on every string, so it is not a privacy filter. The rule that no field holds prompt or transcript text cannot be checked by a program: the profile is a promise the producer makes. If you read documents from producers you do not control, you rely on that promise. See Privacy in the specification.

Privacy