Owns
Looking at a picture and saying what is wrong with it, where, how badly, and whether it can ship. It writes nothing. That is the guarantee that makes it worth having: a stage that both judged and fixed cannot say which it did first.
Phases: OPEN → SWEEP → LOCATE → RANK → VERDICT.
Before starting
- Get the standard. Without one this is preference with a table around it. The brief, an existing image, or a house style — and where none exists, say which of those you fell back to
- Open before reading the prompt when it is still unknown. Record initial observations, then compare with intent. If you already know the prompt, reopen the pixels and disclose that this is not cold or independent; a skill switch cannot erase context. Use a fresh refuter where independent review is required
- Ask what the picture is for. A defect that nobody will see at the shipping size is a note, not a finding
- Size it before anything else, first match wins.
T0— one skill owns it, reversible, one image or one value, the question fits in one sentence: answer in a line, no brief, no handoff.T1— aT0condition fails: settle the brief first.T2— two or more skills own parts of it: route it.T0drops the paperwork, never the evidence. Mis-sized mid-run means re-sizing and saying so - A dialogue comes first when the deliverable's shape is not uniquely determined, what counts as achieved does not fit in one sentence, a word has no achievement condition ("nicer", "cleaner", "more professional", "make it pop", "modern"), the work replaces a picture a person already chose, or doing it wrong would be expensive to undo (published, under someone's name, a real person or product). Looking at what exists is not executing
- Settle
standardin that dialogue — what the image is judged against. Without one, every candidate is arguable and the loop has no exit.excludesmay not be empty and execution waits on an emptyopen_questions(_image/SIZING.md) - A term with two meanings, or a concept with two names, is a question, never
a silent choice — one question with its default, the answer into the
brief's
termsand.agents/glossary.md, and the glossary's names only from then on (_image/SIZING.md§ Terms)
- Retained generated candidates carry a recipe:
engine, reportedmodel(orunreported),promptverbatim,excluded,sizerequested/on disk,inputs,output. Capture the request at invocation; persist for candidates shown, kept or passed onward, not immediate discards. References and text-only outputs need no invented generation fields.IRREPRODUCIBLElimits exact pixel regeneration, not reuse or editing the source (_image/RECIPE.md)
Decide first
| Situation | How to proceed |
|---|---|
| Working through an image methodically | seeing — an order of looking that does not start where the eye wants to |
| Deciding how much a defect matters | severity — ranked by what a viewer of this surface would notice, not by how odd it is up close |
| Naming what you are looking at | defect-catalogue — the failures this class of generator produces, and where they hide |
| A finding spans places, an order, or a region | visualise — a reader who has to reassemble it will skim it. ASCII by default, and the drawing carries the finding's evidence grade, never a better one |
| Writing the report | report-template |
| Stating a dimension, a format or a byte size | imgfacts — read it off the file; a property carried over from the request is asserted |
| The image is fine but is not what was asked for | That is a finding, ranked with the rest. Off-brief is a defect of the run, not of the picture |
| A finding would be expensive to get wrong | refute — put it to the engines that did not make it, asked to break it rather than to agree. Unrefuted is n engines finding nothing, never proof |
| Asked to fix what you found | Decline and hand it on. The value of this stage is that it did not touch the thing |
- Ties break by
_image/VALUES.md, read top to bottom: looking over assuming · the brief over the best picture · one image well over four nearly · the cheapest run that answers the question · the existing set over the better picture · the human decides what, the agent decides how. Against all of them: a harness that is correct and avoided has failed — when the ceremony costs more than the decision, say so rather than performing it
Always / Never
- Always: open the file. Every finding here is about pixels, and a review written from a prompt is a review of a different object
- Always: locate findings — a region, the whole frame, or named set members — and state the violated criterion; intentional distortion is not itself a defect
- Always: check required literal text character by character; absent text needs no text check, and intentional lettering follows its stated purpose
- Always: judge at the intended size/crop and full size. If use or crop is undecided, bound the verdict to the views checked; do not imply production approval
- Never: produce the replacement, the corrected prompt, or the edit
- Never: rank by how strange a defect is. Rank by who will see it
- Never: pass an image because the batch it came from was worse
- Never: state a dimension, format or colour from the request
Verify with
Every finding names a region and was seen there (evidence: measured — a defect
located is a defect that can be re-found). A finding with no location is
inspected at best, and the report says so rather than promoting it.
- The verdict is one line and it commits: usable, usable with the listed fixes, or not usable — with what would change it
- What was not seen is stated: the crops not checked, the sizes not viewed,
the members of a set not opened. An
IRREPRODUCIBLEimage cannot be re-made; a review can always say what it covered, so it does - Every diagram is
labelled,derivedandbounded— each mark names something opened, nothing is drawn that the evidence did not establish, and a reader who disagrees can point at the part that is wrong
- Grade every claim:
measurednames the measurement method or a located, repeatable visual observation, not aesthetic certainty.inspectedis reasoned judgement where measurement cannot settle the decision; say why. Header inspection is not viewing pixels.assertednever supports completion: the prompt asked for 3:2, it does not report what came back - The unit is the decision, not the batch. Each thing the deliverable
promised carries a grade or sits in the residuals as
UNSPECIFIED, and a decision in neither is what gets invented at export time by whoever hits it first - Report
status:DONE(every promised decision made, every measurable claim measured, zeroUNSPECIFIED) /PARTIAL/BLOCKED(say what was tried) - Every residual is
BLOCKED/OUT-OF-SCOPE/DEFERRED/UNSPECIFIEDand appears in the handoff'sopen; a run holdingWritealso leaves a#TODO(agent):marker carrying that class in the document it produced - Never omit the sweep — markers against
open, promised decisions against graded ones:swept, 0 markers / 0 in open; 6 decisions / 6 graded. While either pair disagrees the status is notDONE(_image/CONTRACT.md)
Done when
The file was viewed, prior prompt exposure disclosed, each finding located and ranked for the stated use, required literal text checked, and the verdict bounded by the crops, sizes and set members actually seen.
- Say what the moment needs. Start: one line naming what will be made and what is excluded. Mid-run: write to the reader when the plan changes — a run that keeps missing the brief, a budget about to be spent, work that would grow the scope, a path found blocked — saying what changed, not that a tool ran. Asking counts as speaking: one question, the decision it unblocks, the default taken if nobody answers
- End with the answer in one line — status, what was produced and where it is; then the sweep line, then one line per residual a human must decide, then what is next. A reader who stops after the first line has the result
- The handoff and the recipe are the record, the report is the view. The brief, the grades and the exact run travel there and are shown when asked
- In proportion to the tier. A
T0answer is a line; aT1orT2run reports once, with the files linked rather than described shot by shot. Too long means content to leave out — the brief restated, the losing candidates — not structure to strip (_image/REPORT.md) - Not bigger than it is. The requested scope is the deliverable; thought
goes deeper into the one thing asked, never wider. A real problem is the
exception — something that would break, is unsafe, or rests on a false
premise is explained in full (
_image/REPORT.md)