Open specification · v1.3

How to write a character so it survives the trip

Every rule below changed a measured score. Each one is stated with the failure that produced it, because a rule without its failure case is just an opinion about prompting.

Apply these by hand if you like — no tool required. The most valuable rule on this page costs nothing: an identity marker you cannot answer with yes or no is not an identity marker.

Why this is about writing, not about a file format

A JSON schema for characters is easy and almost worthless. The difficulty is not where the fields go; it is that most of what people naturally write about a character has no effect on a generative model.

"Elegant bearing", "an air of mystery", "futuristic" — these produce different images every time because they have no verifiable content. Meanwhile "a 2 cm pale scar above the outer end of the left eyebrow" survives lighting changes, scene changes and platform changes, because there is nothing to interpret.

So the specification is a set of rules about what to write. The file format is the trivial part.

Four layers

LayerHoldsFails as
Silhouette Build, age range, ethnicity, hair length and shape Gender and ethnicity drift between images
Structure Face or body geometry that never changes A similar-looking but different person
Surface Fixed garment, materials, palette The scene replaces the clothing
Markers Two to four things nobody else has Nothing to verify identity against

Silhouette is the one most often skipped and the one that causes the worst failures. In a run where it was left blank, one of five reference images came back as a different ethnicity — the model had nothing to hold on to.

Rules 1–6

Baseline

1 · Numbered checklist, not prose

Models follow enumerated constraints far more reliably than continuous description. Same content, different structure, different outcome.

  RIN, 25-year-old East Asian woman, asymmetric bob, hair #1C1A1F,
   2cm scar above outer left eyebrow, amber irises, crimson high-collar
   jacket. Keep her identity consistent with the references.

  MANDATORY IDENTITY MARKERS, all must be visible and unchanged:
   1. SCAR: a 2cm thin pale scar above the outer end of her LEFT eyebrow…
   2. EYES: amber irises (#A8763E), distinctly lighter than typical…
   3. HAIR: asymmetric bob, left side reaching the jawline…

2 · Forbid omission explicitly

Describing a feature is not the same as requiring it. The scar above disappeared entirely in a stage-lighting scene until the instruction said it must not.

1. SCAR: … This must be clearly visible in every image,
   never omitted, never covered by hair.

3 · Counter the scene overwriting the garment

The most common failure of all. Ask for "performing on stage" and the model dresses the character for a stage, discarding the garment that identifies them. A generic "don't change the clothes" does not work — the negative list has to name the substitutes it expects.

4. GARMENT: a crimson (#C8102E) jacket with a STANDING HIGH COLLAR.
   This exact garment must be worn in every scene regardless of the setting.
   Do not substitute a stage outfit, sportswear, a hoodie, or any other clothing.

4 · Scene first, character lock last

Recency weighting is real. Put the scene at the top and the identity constraints at the bottom, and close with an explicit statement of priority.

SCENE: {scene}

CHARACTER LOCK — the person in this image must be {name}, exactly as
shown in the attached reference images.
{numbered markers}
FORBIDDEN: {negative list}
The scene may change. {name} must not.

5 · Colours as hex, never as adjectives

#1C1A1F holds. "Almost black with a blue cast" resolves to pure black or to navy, differently each time.

6 · At least three markers, all answerable with yes or no

Good: a 2 cm scar above the outer left eyebrow; nine tentacles of unequal length; a brass ring at the tip of each tentacle.
Not markers: a cold demeanour; elegant posture; futuristic.

This is the single test that decides whether a specification will work. If two people could disagree about whether the image contains it, it is not a marker.

Rule 7

Describe garment structure, not garment appearance

The only rule so far that moved a score from failing to passing on its own.

Anchor versionFace score (threshold 0.363)
v1 — appearance only0.334 ✗
v2 — structure + specific negative list0.394 ✓

Only the text changed; input image, model, duration, aspect ratio, resolution and scene text were all held fixed.

The failure. v1 said "matte black high-collar technical jacket with a single asymmetric cyan seam". The model kept the colour and decoration — black, high collar, cyan seam — and lost the structure: the open-front jacket became a pullover, the zip vanished, the stiff standing collar became a soft rolled neck.

1. A matte black technical JACKET that OPENS DOWN THE FRONT with a
   full-length front zip. This is an open-front jacket,
   NEVER a pullover, NEVER a sweater, NEVER a hoodie, NEVER a turtleneck.
2. The collar is a STIFF STANDING collar that holds its shape,
   NEVER a soft rolled neck, NEVER a crew neck.

Two points. Describe how it is constructed — opens at the front, has a zip, holds its shape — rather than how it looks; models hold colour easily and structure poorly. And name the structural substitutes explicitly, because the thing to defend against is not only "replaced by the scene" but "replaced by something the same colour with a different construction".

One more line draws the boundary between what may vary and what may not:

Stage lighting may change the colour of the light, but must not change
the garment's cut, structure or fastening.

Rule 8

Constrain pose, but only the extremes

Anchor versionMeanFrames passingWorst frame
v1 baseline0.334 ✗2/80.212
v2 + garment structure0.394 ✓7/80.295
v3 + pose constraint0.424 ✓7/80.346

The worst frame rising from 0.212 to 0.346 matters more than the mean. It means the whole clip became usable, rather than a few good frames pulling an average up.

Diagnosing it correctly took two wrong guesses first. The low frames looked like decay over time, then like insufficient light. Frame-by-frame comparison killed both: brightness had no correlation with score — the worst frame was the brightest — and the garment and markers were intact in every frame. The actual cause was head pose. When the character tilted back to look at the ceiling, the score fell from 0.487 to 0.295. The reference set is all level, forward-facing; a steeply upturned face is simply far away in embedding space.

POSE — he nods and sways with the beat and may glance down at the
controller, but his head stays roughly level and mostly toward the camera.
He never tips his head far back, never looks up at the ceiling,
and his face is never turned more than 45 degrees away from the lens.

Three points. Describe the permitted movement first, then the prohibitions — a list of prohibitions alone produces a stiff performance. Use a verifiable quantity (45 degrees) rather than an adjective. And diagnose frame by frame: acting on either of the first two guesses would have cost money and fixed nothing.

Generalisation check. The same anchor was run in a scene with the opposite lighting conditions — bright daylight and hard shadows instead of a dark room with coloured sweeps. Mean 0.414 versus 0.424, worst frame 0.352 versus 0.346. A gap of 0.010: the rules are not accommodating one particular scene.

But the pose wording must be scene-independent. The first version said "may glance down at the controller", which tied it to one setting. A rule that mentions objects only present in one scene has to be rewritten for the next one, and is therefore not a rule.

Rules 9–10

Measurement discipline

9 · Evaluate rules only on independently generated images

Images generated with an earlier image as reference cannot be pooled with text-only generations when computing the consistency ceiling. The ceiling is supposed to measure how clearly the specification defines the character; once images are conditioned on each other it measures how well image-conditioning works, which is a different question. Mixed together, every rule change looks effective because the images are doing the work.

If you do chain images, use a star topology — condition everything on one chosen anchor image, never a chain, which accumulates drift.

10 · A choice between candidates is labelled data

Generating several candidates under different anchor variants and picking one produces a paired comparison under identical conditions — far stronger than assigning variants at random across separate runs. Two conditions make it valid: allocate variants evenly and then shuffle within the batch, so variant and position are not bound together; and record the position, because people prefer the first option and that bias has to be measurable rather than assumed absent.

Keep the rejected candidates. They were paid for, and negative examples are exactly what rule development lacks.

Reference set

Five views, generated from the specification

The reference set is produced from the written specification, not collected first and described afterwards. That ordering matters: a set collected first will contain a hundred incidental facts that nobody wrote down, and those are exactly the ones that drift.

Five views for a human figure — front, three-quarter, full profile, back of head, extreme close-up. For non-human subjects the axis changes to angle, structural detail, posture and lighting; the pipeline does not.

Full-body views are kept as a separate set, not mixed in. Mixing framings inflates the spread of the reference set, which raises the ceiling and makes every normalised score look better than it is.

Boundaries

What this specification does not solve

  • Framing. On reference-parameter platforms, the density of facial detail in the anchor pulls the composition toward the face. Wide shots require removing facial detail, and that costs identity — measured at 7% adherence gained against 67% identity lost.
  • Closed character systems. They lock the face. For characters whose identity lives in hair colour, a mark, or a garment palette, they add nothing; plain reference images do better.
  • Platforms without an API. No specification fixes the fact that the work has to be pasted in by hand.
  • Sample size. Every number on this page comes from small runs — enough to establish direction, not magnitude. They are published with that stated rather than rounded into confidence.