← Omkar Khadamkar
Verdict card · 2026

One vendor’s verdict, another vendor’s case

An AI agent calls it benign, with high confidence. The alert that contradicts it is already in the case — and the analyst reading both works in a different vendor’s console. This is where that verdict should live, and what it owes the console it lands in. The prototype runs on this page.

Marks counted 117Unreadable in place 51 of 72Criteria, set first 6Options scored 6, no winnerAnalyst sessions 0
In plain terms

A weather forecast tells you two things without being asked: when it was issued, and how sure it is. That is what makes one usable. You can look at a forecast from this morning and know to check again.

A company buys two security products. One of them watches its cloud and runs an AI that decides whether something is an attack. The other is the screen a human sits in front of all day, working through alerts and deciding which ones are worth waking a colleague up for.

The AI’s answer has to get from the first product to the second. It arrives with neither of the forecast’s two things. It turns up as a line of code, five clicks from anywhere a person would look, and when they find it, nothing on the screen says what the AI looked at, when it stopped looking, or why its rating disagrees with the one the screen is already showing.

The timing is the part that bites. A case keeps collecting new alerts after the AI has finished with it. So an answer that was right when it was written can be wrong by the time a human reads it — and unlike a forecast, it never says when it was written.

This case study is what I did about that. I counted what that screen actually explains and what it leaves you to guess. I wrote down what a good answer would have to do, before designing anything. Six versions were drawn against those rules and scored against them. I built the one that survives the hardest case, and you can use it further down this page. Then I wrote the part that outlasts both products: what any company’s finding owes the screen it turns up on, when that screen belongs to someone else.

WHAT I DID WHERE IT TURNED 1Counted it 117 marks counted, 72 of them not text 51 cannot be read without leaving the console 2Set the criteria Six criteria, weighted, set first Committed 90 minutes before the first option, including mine 3Six answers Five to my brief, plus mine, literal The one built from the brief came last in both passes 4Scored twice Two scorers, blind to each other No winner: both margins fell inside the gate 5Wrote the rule Eight obligations a guest owes The host shipped a new view the next day. All eight held
Five stages, and the turn in each. Every box links to the section that carries it.
Contents · 9 sections · ~14 min
  1. 01Five clicks deep, and already behind
  2. 02I counted what the console explains
  3. 03What good would have to mean
  4. 04Six answers to that brief
  5. 05Scored against the criteria, not taste
  6. 06The card, and the hardest case
  7. 07What a guest owes its host
  8. 08Ship, cut, and what is untested
  9. 09Decisions, in order
01Five clicks deep, and already behind

Wiz’s Blue Agent investigates a cloud threat and reaches a verdict. The analyst who has to act on it is in Google Security Operations — working a case assembled from alerts the agent never saw.

On one of the cases in this study the agent says Benign, with High confidence. Forty-three minutes later, still inside the same case, someone enables public access on the storage bucket using the same key. The agent never saw it, because the agent had stopped reading.

The agent is not wrong. It is just done. Everything below follows from that: a finding that was true when it was made, landing on a screen where the facts have moved on.

In the integration as published, that verdict arrives as verdict: MALICIOUS — a string inside a JSON tree, five selections into the case and four levels down. The Case Wall entry for the same action says the analysis was returned. It never says what it concluded.

On the same screen three signals disagree at once and nothing reconciles them: the host’s own priority bar is yellow, which its documentation defines as Medium; the alert is named “MEDIUM SEVERITY ALERT”; and the agent reports severity: HIGH. The analyst is left holding three ratings from two vendors and no stated rule for which one governs.

So: hard to find, and once found, impossible to date.

The agent's verdict sits five selections into the case, inside a JSON tree Five selections from an open case: the alert, its Playbooks tab, the playbook step, View result, and the Technical Details tab of the dialog that opens. Then four levels into a JSON tree to reach verdict colon MALICIOUS. FROM AN OPEN CASE TO THE VERDICT The alert Playbooks tab The step View result Technical tab data issue threatDetectionDetails aiAnalysis verdict: MALICIOUS 5 selections from the case 4 levels into the tree The Case Wall entry for the same action says the analysis was returned — never what it concluded. On the same screen three severity signals disagree, and nothing reconciles them: a yellow priority bar the docs define as Medium, an alert named “MEDIUM SEVERITY ALERT”, and the agent's own severity: HIGH.
Audit rows R34 (the JSON verdict), C4 (the Case Wall wording) and R36 / T1 (the three disagreeing severity signals). This is the problem the card exists to answer.

You can try that. The prototype in section 06 has a Before state that reproduces it exactly. Open a case and go looking.

02I counted what the console explains

Before arguing that a console is hard to read, count it. A number can be disputed; an adjective cannot.

So I wrote the counting rules first — one row per mark per place, colours that vary get their own row, near-universal conventions count as readable but are flagged — then counted every icon, badge, colour and label in one case investigation view. The count is a script, not a claim: it recomputes from the table, so anyone who disagrees with a row can change it and watch the total move.

Marks in one case view
117
45 are text
Not text
72
icons, badges, colours
Explained only in docs
28
not on screen
No stated meaning found
23
in any source read

Fifty-one of those 72 are marks an analyst cannot read without leaving the console. Of the 21 that do explain themselves, 13 do so only because they are universal — an ×, a +, a green check. Strip those and eight marks out of 72 are labelled on screen.

72 of 117 marks in one case view are not text; 23 of those have no stated meaning anywhere A stacked bar of 72 non-text marks: 13 readable only because they are universal conventions, 8 labelled on screen, 28 explained only in the documentation, and 23 with no stated meaning found in any source. 117 MARKS COUNTED IN ONE CASE INVESTIGATION VIEW 45 are text — a word says what they mean 72 are icons, badges and colours 21 explain themselves on screen 13 universal only (× + ✓) 8 labelled on screen 28 explained only in the documentation 23 no stated meaning found in any source Everything right of the 8 is a mark an analyst cannot read without leaving the console. 51 of 72. The one exception is the Security Graph, one click away, which carries its own legend in the product.
Counting rules were published before the count, so the number can be disputed. A script recomputes all six figures from the table, so a disputed row moves the total. Limit, printed rather than buried: static screenshots cannot show tooltips, so some of the 28 may speak on hover.

Two things have to be said in the same breath as that number. Static screenshots cannot show tooltips, so some of the 28 may speak on hover; the audit lists exactly which rows to check in a live tenant. And the console does one thing here that nothing else in the study does: the Security Graph, one click away, carries its own legend in the product, naming every shape and colour it draws.

What “explained only in the docs” looks like

This is the case header, as Google’s own documentation draws it. The green arrows are the documentation’s; the product has none of them.

Google's documentation image of a SecOps case header. Green arrows and labels point at a red vertical bar marked Case Priority, the case title, the case ID, a circular-arrow glyph marked Case Stage, a clock glyph marked Timestamp, an environment selector and a Manage Tags control.
Google Security Operations documentation, CC BY 4.0, unaltered.

Look at the left edge. A red bar, and the only thing in the world that tells you it means priority is a green arrow on a documentation page. The stage is a circular arrow. The time is a clock. In the product, all three are marks with no words, and this image is where the words live.

Hold on to that red bar. It comes back in section 05, when the version of the card I built myself borrowed the same device and failed a gate for it.

The Case Wall — the running record of everything that happened to a case — carries eight more, and these are Google’s images too. Not one of them carries a word.

The Case Wall’s eight marks, as the product draws them A gear glyph with the count 4. A folder glyph with the count 4. A clipboard-with-check glyph with the count 0. A speech-bubble glyph with the count 0. A lightbulb glyph with the count 0. A two-speech-bubbles glyph with the count 0. A star glyph with the count 0. A clock-and-arrow glyph for sort order.

Between them they mean: actions taken on alerts · case status changes · task details · a comment · a pinned chat · a favourite · insights · the sort order. The audit pins two of them — the gear is the actions, the folder is the status changes. Working out which of the other six is which takes a trip to one documentation page, and there is nothing on screen that would get you there.

03What good would have to mean

This is the design decision, and it happens before anything is drawn.

A design decision is about setting the criteria to evaluate which idea wins.

— the working rule for this study

First, what is actually movable

A guest cannot design what it does not control, so the constraints come before the criteria. The host documents exactly three layers, and only the third belongs to the vendor.

LayerWho controls itWhat that means here
The consoleFixedCase queue, case header, the priority bar, Escalate and Close, the tab strip, and the host’s own Alert timeline and Entities widgets. A design that needs any of this to change is answering a different question
The Overview gridThe customer’s adminThe admin decides which widgets exist, where they sit and how wide they are. A vendor cannot assume its card is installed at all, or that it sits where the vendor drew it
The widgets themselvesThe vendorHTML (display-only, as far as the docs say), Key value, Insights, Quick Actions (up to six buttons) and Pending Actions (the playbook pauses and asks). Plus a Case Wall entry and a playbook action result, which always exist

The constraint that shaped the card most: the HTML widget displays, it does not write. Anything that changes the case has to be a Quick Action button or a Pending Action choice. So “accept or override” is not a button a designer may simply draw — it is a documented action type or it does not exist. Option 0 drew it anyway, and that is one of the two gates it failed.

And because the admin owns the grid, the card cannot be the only place the verdict lives: whatever a vendor writes into the Case Wall has to carry it alone, for every tenant that never installed the widget.

Three hard gates first. An option that fails one is out, whatever else it scores.

Then six weighted criteria, each scored across five dimensions — user impact, failure severity, frequency, strategic alignment, competitive leverage — to earn its weight rather than be assigned one.

CriterionWeightBecause
Found on the view the case opens toAn unfound verdict plays no part in the decision
Confidence that changes the cardPeople over-rely on confident-looking automated advice (Parasuraman & Manzey, 2010)
Says what it saw, and whenAlerts can join the case after the analysis ran
Accept or override, consequence shown firstOne disposition can change two systems
Evidence checkable inside the caseThe conclusion is currently a truncated string
Disagreement between the two severities shownNothing on screen reconciles them today

Committed at 17 Sep, 18:17 — ninety minutes before the first option existed, including the one I built myself. A seventh criterion was cut before anything was scored, because every option satisfied it, and a criterion that separates nothing cannot judge anything. It became a briefed requirement instead, checked and reported.

04Six answers to that brief

Five were generated by an agent working from a written brief. The brief is the work; the generation is a method note.

The brief carried the criteria, the three gates, the host’s documented extension points, the synthetic case data and the six states every option had to draw — including the ones nobody enjoys drawing: analysis pending, analysis failed, and no widget installed at all. Each run got the same brief and one difference in how it was seeded. One run was given no direction beyond the rules and the data.

The sixth is Option 0: the original ask made literal — verdict, confidence, evidence, provenance, accept and override — built before the criteria were applied to anything. It is mine, and it is in the set so the criteria have something unexamined to be measured against.

R5's card at low confidence: the verdict, a limited-confidence banner naming the missing evidence line, a priority comparison block, and four actions labelled with bracketed words.
R5 · no seedGiven nothing but the rules and the data. Its action icons are bracketed words, and at low confidence it re-aims the action at the gap.94.3 · 91.4 — first in both passes
R3's escalation confirmation: key changes listed, a sync-status list, a required analyst reason, and a split of what can and cannot be undone.
R3 · claim by claimThe only option where the required reason is a mechanism, not a label — the confirm button stays disabled until it is written.89.3 · 80.0
R2's card leading with when the analysis ran and a bordered block comparing case priority with agent severity.
R2 · as of whenLeads with freshness, and writes each action’s consequence next to the action.82.9 · 82.9 — both scorers agreed exactly
R4 drawn as a paused playbook step offering three choices, each captioned 'No case changes'.
R4 · ask firstThe most literal use of the host’s extension points: a paused playbook step with three choices, nothing pre-selected.77.9 · 75.7
R1's fallback states: analysis pending, analysis failed with a retry, and the plain-text Activity entry for a tenant with no widget installed.
R1 · one line firstIts fallback states — pending, failed, and the plain-text entry for a tenant with no widget installed. Every run had to draw these.81.4 · 75.7
Option 0: a verdict card with a coloured bar down its left edge, sitting below the host's own left-edge priority bar.
Option 0 · the brief made literalMine, built before the criteria were applied. Note the coloured bar down its left edge.57.1 · 54.3 — last in both, and it fails a gate
05Scored against the criteria, not taste

Two scorers worked the same rubric independently. Neither could see the other’s notes.

They agree on first place and disagree on second. Neither margin clears the 10-point close-call rule fixed before any option existed, so no winner is declared. R5, the run given no direction at all, leads both passes; the runner-up changes identity between them.

Six design options scored against six criteria by two independent scorers A dumbbell chart. R5, the run given no direction, is first for both scorers at 94.3 and 91.4 percent. Option 0, the brief made literal, is last for both at 57.1 and 54.3 and fails two gates. The gaps to second place, 5.0 and 8.6 points, both fall inside the 10-point close-call gate, so no winner is declared. Scorer B Scorer C independent of each other, and the same kind of reader — a human pass is still missing 50% 60 70 80 90 100 R5 · no seed 94.3 · 91.4 R3 · claim by claim R2 · as of when both scorers landed on 82.9 R1 · one line first R4 · ask first Option 0 · my own build 57.1 · 54.3 — last in both, and it fails two gates The gate refused a winner, twice. First place is stable across scorers; the runner-up is not. B put R5 5.0 points clear of R3, C put it 8.6 clear of R2 — both inside the 10-point margin fixed before any option existed.
Both scorers wrote their own report, and each gate finding was adjudicated in writing. Option 0 is the version built literally from the brief, before the criteria were applied — mine. It came last in both passes and failed on an unlabelled colour bar sitting in the host's priority column: the exact class of error the audit was written to catch.

Two findings do more work than the ranking.

What the refusal forced. With no winner, the answer could not be a coronation. It is a hybrid: the parts that scored best, wherever they came from. And three things no option produced — which the criteria file had predicted, in writing, would not appear unless briefed. They were not briefed. They did not appear.

06The card, and the hardest case

One case, four moments. It runs on this page.

The agent calls CS-4133 Benign with High confidence, using data up to 13:14. At 13:57 an alert joins the case: public access enabled on the bucket, using the same key. That is 43 minutes after the data the verdict used, and 41 minutes after the analysis itself. It is in the case. It is not in the card.

LiveSynthetic console · invented data · not a Google or Wiz product

Start with Before · no card and try to find what the agent concluded: it is in Playbook results › step 3 › View raw result, which is where the audit found it. Then switch to Found. On Outdated, accept the verdict and wait twenty seconds.

MomentWhat the card does
The verdict landsNames the agent, the data it read, the time it stopped reading, and both severities with the system that issued each
A newer alert arrives“Outdated. Alert A3 arrived 13:57 UTC, 43 minutes after the data this verdict used. The agent has not seen it.” With a control that goes there
The analyst decidesEvery action carries its consequence before it is pressed. The record names what was accepted. Undo is a control, not a sentence about undo
The vendor changes its mind, six minutes laterThe change announces itself. Read it, and the card swaps in the new verdict, its new severity, its new claims and its new data cut — keeps the earlier conclusion on the record — and the outdated warning correctly clears
A confident verdict goes out of date, the analyst acts, and the vendor changes its mind Five moments: the agent stops reading at 13:14 and concludes Benign with high confidence at 13:16; an alert arrives at 13:57, forty-three minutes after the data it used; the analyst accepts Benign at 14:04; the vendor revises the verdict to Malicious at 14:10, after the decision. 13:16 Benign High confidence data to 13:14 13:57 Alert A3 arrives public access enabled 43 min after its data cut 14:04 The analyst accepts the record names what was accepted 14:10 Malicious the vendor changes its mind WHAT THE CARD DOES AT EACH MOMENT names the data cut → “Outdated. The agent has not seen it.” → keeps undo a control → the change announces itself, and the card swaps in the new verdict, its new claims and its new data cut Written into the criteria before any option existed. Briefed to nobody. Drawn by nobody. The alert arrived 43 minutes after the data the verdict used, and 41 minutes after the analysis itself. Both numbers are true, and both are printed. Building it found two defects no drawing would have: a record reading “you accepted this verdict” is silently rewritten when the verdict changes, and a staleness warning keeps accusing an analysis that has since seen the alert. Both are fixed.
Live in the pane: open CS-4133, accept the verdict, and wait twenty seconds. In the case's own clock the revision lands six minutes after the decision; in real time it arrives while you are still looking at the card, because a state that is already there when you look is not the state being designed for.
The card showing a Benign verdict with an amber band reading Outdated, naming the alert that arrived 43 minutes after the data the verdict used.
OutdatedFreshness as a stated condition, not two timestamps to compare.
The card at low confidence: no action recommended, the missing claim named, and a link to the alert that contradicts it.
Low confidenceThe recommendation is withdrawn, the missing claim is named, and the alert that contradicts it is one click away.
The card after a decision: a line reading You accepted Benign at 14:04 UTC, an Undo this button, and a note about what undo cannot take back.
DecidedThe record names what was accepted, so a later revision cannot quietly rewrite it. Undo is a button, with one line on the part that cannot be undone.
After the analyst accepted Benign, a bordered block announces that the vendor changed the verdict to Malicious.
The vendor changes its mindAfter the decision, not before it. Read the new verdict, or record that you stood by yours.
The revised card reading Malicious, with a line saying it was revised from Benign after the analyst's decision, the new conclusion, the earlier conclusion kept below it, and new claims.
The revised verdict, readNew verdict, new severity, new claims, new data cut — the earlier conclusion kept on the record, and the outdated warning correctly cleared.
The same card compressed into the host's narrow preview drawer, ending in a control that opens the case.
The preview drawerThe second width, which the host shipped on 18 September. Nothing is decided here.

What it refuses to do. No colour in the host’s priority column. No host field changes without an explicit act. One decorative mark on the whole card, and it sits after words.

Every part of the final card, with the option it came from Nine parts of the card. Six come from the scored options — R5, R2, R4, R3, Option 0. Three were decided by the author and produced by no option: low confidence withdraws the recommendation, undo is a control, and the verdict revised after the analyst acted. V1 · THE HYBRID CAME FROM Verdict and confidence, with both severities named and attributed When it was analysed, and whether anything is newer The staleness sentence, in plain words Every claim, with whether you can check it in this case Evidence links as controls, not prose The consequence written under the action, before it is pressed Low confidence withdraws the recommendation Undo is a control The verdict revised after you acted R5 · no seed R2 · as of when R4 · ask first R3 · claim by claim Option 0 · its one strength R2 · as of when Omkar Omkar Omkar The three in red were produced by no option in the set. They are the unmet-by-all list, and they are the parts of this card a machine did not propose.
Six options were machine-made and are labelled as such; the three additions are not. What the card deliberately does not carry is the colour bar in the host's priority column — the failure that put Option 0 last.

The card is then put through the study’s own gate, mechanically. Twelve checks, run by a script on both cards: 12 of 12 for this one, 5 of 12 for Option 0. A check that only ever passes proves nothing, so it runs on my failed build too, and names seven specific failures there.

node --no-warnings pane/card-audit.mjs
→ v1 12/12 · Option 0 5/12
07What a guest owes its host

The integration will change. Both vendors will change. This is what is left.

A verdict produced by one vendor is read inside another vendor’s product, by an analyst who owes their attention to the case, not to the agent. The agent is a guest. These are the obligations that come with being one, each traced to a row in the count or a criterion from section 03.

  1. Arrive where the work already is, at whatever width the host gives you.
  2. Say what you saw, and when.
  3. Declare what you could not see. A missing input is part of the finding, not a footnote.
  4. Let the host’s claim stand beside yours. Never silently overwrite. Never silently defer.
  5. Make every claim checkable in the host’s own objects.
  6. Change nothing without an explicit human act — and say what the act will do, in both systems, before it happens. Name what cannot be undone.
  7. Degrade to text. Where no widget is installed, the entry you write still carries the verdict, the confidence and the analysis time.
  8. Explain your own marks. Every icon, badge and colour on your surface carries a visible label, and you never reuse a glyph the host already uses for something else.

Then the product moved, and it was an accident

The audit was committed on 17 September at 18:13. Google’s release note for a revamped version of that view is dated 18 September. One day.

The layout dated in a day. All eight rules still applied, and two of them got sharper.

Rule 1 gained a second width — the new experience has a resizable preview drawer beside the queue, so “the view the case opens to” now means two densities. Rule 7 gained the migration case: when a tenant moves to the new experience, custom widget configuration does not carry over, and an admin has to copy it across by hand. For the length of that migration, the plain text entry is the only thing the vendor still owns.

The host shipped a new version of the view one day after the audit was committed A timeline: the audit committed 17 September at 18:13, the release note for a revamped Investigation Management experience dated 18 September. All eight contract rules held; two got sharper. 17 Sep, 18:13 audit committed · 117 marks 18 Sep release note: revamped view 1 day Eight rules in the guest's contract. Eight still applied. Two got sharper. Rule 1 gained a second width a resizable preview drawer now sits beside the queue Rule 7 gained the migration case widget configuration does not carry over; an admin copies it across by hand
Checkable: the audit's git commit against the vendor's own release note. This was an accident, and it is the strongest evidence in the study — a layout dated in a day, and the obligations did not. It is the argument for writing the contract rather than only the card.

I did not re-point the count at the new view. It publishes no screenshots, and no third-party verdict has been shown inside it, so a count there would be assertion rather than evidence. What changed is recorded instead, and the audit says at the top which experience it covers.

Eight obligations a third-party finding owes the console it lands in Eight numbered rules: arrive where the work is at whatever width you are given; say what you saw and when; declare what you could not see; let the host's claim stand beside yours; make every claim checkable in the host's own objects; change nothing without an explicit human act; degrade to text; explain your own marks. THE AGENT IS A GUEST. THESE COME WITH BEING ONE. 1Arrive where the work already is, at whatever width the host gives you. 2Say what you saw, and when. 3Declare what you could not see. 4Let the host's claim stand beside yours. 5Make every claim checkable in the host's own objects. 6Change nothing without an explicit human act — and say what the act will do first. 7Degrade to text. 8Explain your own marks. got sharper got sharper
Each rule cites the audit row it came from, the criterion it serves, and what the five design runs did with it. This is the portable part: the Wiz-inside-Google-SecOps example dates, the obligations do not. The two marked rules are the ones the host's 18 September release sharpened.
The same card at the two widths the host now gives it Two columns. In the full case view the card carries the verdict, both severities, when it was analysed, freshness, the conclusion, every claim with where it can be checked, and the actions with their consequences. In the preview drawer it carries the verdict, both severities, freshness and a claim count, and one control that opens the case. Nothing is decided at the narrow width. ONE CARD · TWO WIDTHS · RULE 1 OF THE CONTRACT Full case view Verdict · confidence Both severities, each with the system that issued it Analysed at · data cut · added to the case by Is anything newer than the data it used Conclusion Every claim, with where it can be checked Accept · override, each with its consequence and the record, with undo, once you act Preview drawer Verdict · confidence Both severities, short form Analysed at · outdated by How many claims, how many checkable here Open the case to decide nothing is decided at this width The narrow width is the host's, not the guest's: it arrived on 18 September, the day after the audit. A card that assumed one width would already be broken.
Contract rule 1 — arrive where the work already is, at whatever width the host gives you. Both widths are in the prototype above.
08Ship, cut, and what is untested

No analyst has used this. n = 0. The design rules below stand as argued, not as tested.

The protocol is written — consent, three tasks, time to first correct action, five debrief questions, a scoring sheet. The prototype scores its own sessions and exports them, and a self-serve link needs no calendar and no facilitator. That is the next thing that happens, and whatever n it reaches gets printed first, in the findings.

What would make this wrong

Written before any data, so it cannot be adjusted afterwards.

What I’d ship first

The freshness line and the claim-level checkability. Both are cheap, both work in a plain text entry as well as in a widget, and between them they carry the two failures the count actually found: a verdict you cannot date, and a claim you cannot follow.

What I’d cut

The preview-drawer density, until someone confirms a vendor widget renders in that drawer at all. The docs do not say, and I could not check without a tenant. It is drawn because rule 1 demands it, not because it is known to be buildable.

What breaks at scale

Claim-level checkability assumes the agent’s claims map onto objects the host holds. On a case with one alert that is easy. On a case with 500 detections and 5,000 events — the host’s own documented ceiling — “checkable in this case” stops being one click and starts being a search, and the card would need to say which.

09Decisions, in order

A clean narrative is not the same as a tidy process. The prose above reads forward; this is the order things actually happened in, and who decided each one.

DateDecided byDecisionWhat it changed
17 SepOmkarWrite the hypothesis before gathering the evidenceThe audit could refute it, and partly did
17 SepAI, reviewedPublish the counting rules before countingA count that can be disputed, and re-run by script
17 SepAI, reviewedCommit the criteria at 18:17, before any option existsThe claim is a timestamp, not a sentence
18 SepOmkarJudge directions to develop, not finished candidates. Scope: guest onlyFindings about the host stay findings, never proposals
18 SepOmkarSix criteria, not sevenA criterion every option satisfies cannot separate them
22 SepAI, reviewedRefuse to re-point the audit at the revamped viewNo screenshots there; a count would be assertion
23 SepAI, reviewedUphold the gate failure against Option 0 — my own buildThe version built from the original ask came last
23 SepOmkarMix the top options rather than crown oneThe answer is a hybrid, and the fitting is disclosed

Five of the six options were machine-generated, two AI scorers scored them and the numbers above are theirs. What is mine is the problem, the count, the criteria, the gates, the scope, the three additions no option produced, and every judgement about what the scores meant. The page says which is which because concealing it is the actual red flag.