Skip to content

fix: two blind re-ratings — deepmark is mixed, the gate closes, eleven rules withdrawn - #75

Merged
nikolas-sapa merged 4 commits into
mainfrom
fix/blind-rerate-corrections
Oct 14, 2026
Merged

nikolas-sapa merged 4 commits into
mainfrom
fix/blind-rerate-corrections

Conversation

@nikolas-sapa

@nikolas-sapa nikolas-sapa commented Oct 13, 2026 •

Copy link
Copy Markdown
Owner

Two independent blind raters worked the session-3 files without seeing their ratings. The outcome is a correction, a withdrawal, and a third capture failure mode.

The gate closes: deepmark is mixed, not slop

Both raters returned the same six slop signals. They split on craft — one scored 2, the other 4 — and the second was right on the call that decides it.

custom-type-pairing was rated absent and is present, measured and then verified independently before acting: Space Grotesk carries every display size (60, 42, 36, 26px) and Geist carries all body copy (14-18px) — Geist on 123 nodes, Space Grotesk on 28, nothing but Space Grotesk at or above 26px. Two faces, each with a job, assigned by role.

That puts deepmark at 6 slop / 4 craft / net +2 — identical to railway-com, the mixed anchor, and below both slop anchors (heroku-2014 +5, openhack +4). It carries the lowest slop count in the candidate pool with double the craft of either slop file.

So the slop pool returns to 2, under the gate's minimum of 3. Zero signals are rule-eligible and all eleven rules are withdrawn. The snapshot goes from 20,076 bytes with 11 rules to 161 bytes with none.

This is the outcome the gate was built for. A pipeline that only ever opens is not a gate. The cost of closing it here is eleven generated files and a snapshot rebuild, against the cost of serving design rules to agents on a verdict two careful raters could not agree on.

grep-ai was rated on 5% of its page

document.documentElement.scrollHeight on grep.ai is 900. The real content lives in div.grep-public-main at 17,890. A viewport shot, --full-page, and a window.scrollTo walker all return the same first 900px — with no error and no missing-content signature. shots/grep-ai.png is 1440x900, consistent with exactly that.

This is a third capture failure mode, distinct from the unpainted full-page render and the lazily-sized canvas, and the first where every existing instrument agrees on the wrong answer.

Re-rated exemplar to mixed from a 22-tile capture through the inner scroller. What the first 900px hides: a priced before-and-after on 100 alerts ($2.89 against $0.25, 826 tool calls against ~30), a failure-mode table with shares of incidents, and a six-vendor capability grid dated September 17 2026. Two disclosures in that material run against the page's own interest and are recorded as mechanism — the cost comparison states it used a Claude agent baseline rather than Codex, and the failure table is headed "Industry research, not Grep incident rates".

Carousels are not rows

three-card-row and testimonial-card-row corrected to absent on deepmark. The use-case row is four cards (w=525 at x=48, 605, 1162, 1718) inside a 1408px clip over a 2195px track with prev/next arrows; the testimonial track holds two with one visible. Three cards sit in frame at 1440px — the viewport shows a three-up that does not exist in the markup.

scroll-reveal-blank versus native lazy loading

Settled three ways rather than by capture diff: zero text nodes under 8% opacity at rest, after a 19-step walk, and after a matched dwell control, with visible characters identical at 8285 in all three and one transformed element page-wide. A capture diff alone reports 5.5% of pixels differing with 14 images missing — the cause is native loading="lazy" on 31 of 34 images, which survives no-JS and withholds nothing from a markup reader. The build should prefer the text-opacity census over the capture diff; now a v4 item.

Left open rather than resolved

The artifact-not-dashboard versus real-product-screenshot mutual exclusivity. Three of four pages satisfy both, and the convention giving the real screenshot priority structurally starves the signal the spec calls its strongest discriminator — a page honest enough to show its deliverable is usually also honest enough to show its UI. One rater followed the convention on one page and broke it on another, flagging the inconsistency deliberately. Already in the v4 candidates.

82 tests green, typecheck clean, 0 rules, 2 slop files.

🤖 Generated with Claude Code

A blind second rater worked the four files from session 3 without seeing
their ratings. deepmark holds as slop, so the gate stays open and the rules
keep their basis — but three of my calls were wrong and one of them was
wrong for a reason worth recording.

deepmark: three-card-row and testimonial-card-row corrected to absent.
Both are carousels, not rows. The use-case row is four cards (w=525 at
x=48, 605, 1162, 1718) inside a 1408px clip over a 2195px track with
prev/next arrows; the testimonial section holds two with one visible. Three
cards sit in frame at 1440px, which is the trap: the viewport shows a
three-up that does not exist in the markup. Net goes +5 to +4, which is
openhack's net, and the blind rater independently returned +4 at ~75%
confidence. The verdict holds on a thinner margin than it was rated.

grep-ai: rated exemplar, now mixed, and the original rating was built on 5%
of the page. document.documentElement.scrollHeight on grep.ai is 900; the
real content is in div.grep-public-main at 17890. A viewport shot,
--full-page and a window.scrollTo walker all return the same first 900px
with no error and no missing-content signature. shots/grep-ai.png is
1440x900, consistent with exactly that. This is a third capture failure
mode, distinct from the unpainted full-page and the lazily-sized canvas,
and the first one where every existing instrument agrees on the wrong
answer.

Re-rated from a 22-tile capture through the inner scroller. The page the
first 900px hides: a priced before-and-after on 100 alerts ($2.89 vs $0.25,
826 tool calls vs ~30), a failure-mode table with shares of incidents, and
a six-vendor capability grid dated September 17 2026. Two disclosures in it
run against the page's own interest and are recorded as mechanism: the cost
comparison states it used a Claude agent baseline rather than Codex, and
the failure table is headed "Industry research, not Grep incident rates".

Those corrections pushed indigo-violet-accent over the 3-observation floor,
so it earns the eleventh rule. It is the weakest on the list and says so:
it fires on a third of the slop evidence, runs at a similar rate in the
2014 control, and its "the hue, in any fill" definition has no scope rule,
which is why linear-app reads absent on a judgment the vocabulary should be
making for the rater.

Not applied, and left open rather than resolved: the blind rater scored
artifact-not-dashboard present on grep-ai and absent under railway-com's
screenshot-wins convention, flagging the inconsistency deliberately. The
two signals are not separable by rule, and the convention structurally
starves the signal the spec calls its strongest discriminator. Already in
the v4 candidates.

82 tests green, typecheck clean, 11 rules.

Signed-off-by: Nik <84yk8btb9f@privaterelay.appleid.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
ns-ui Ready Ready Preview Oct 14, 2026 2:37am UTC

…thdrawn

Two independent blind raters worked deepmark without seeing its file. Both
returned the same six slop signals. They split on craft — one scored 2, the
other 4 — and the second was right on the call that decides it.

custom-type-pairing was rated absent and is present, measured: Space
Grotesk carries every display size on the page (60, 42, 36, 26px) and Geist
carries all body copy (14-18px). Two faces, each with a job, assigned by
role. Verified independently here before acting: Geist 123 nodes, Space
Grotesk 28, with Space Grotesk on every size at or above 26px and nothing
else there.

That puts deepmark at 6 slop / 4 craft / net +2 — identical to
railway-com, the mixed anchor, and below both slop anchors (heroku-2014 +5,
openhack +4). It is also the lowest slop count in the candidate pool with
double the craft of either slop file.

So the slop pool returns to 2, under the gate's minimum of 3. Zero signals
are rule-eligible and all eleven rules are withdrawn. The snapshot goes
from 20076 bytes with 11 rules to 161 bytes with none.

This is the outcome the gate was built for. A pipeline that only ever opens
is not a gate, and the cost of closing it here is eleven generated files
and a snapshot rebuild, against the cost of serving design rules to agents
on a verdict two careful raters could not agree on.

The second rater also settled scroll-reveal-blank as absent three ways
rather than by capture diff: zero text nodes under 8% opacity at rest,
after a 19-step walk and after a matched dwell control, with visible
characters identical at 8285 in all three. A capture diff alone reports
5.5% of pixels differing with 14 images missing; the cause is native
loading="lazy" on 31 of 34 images, which survives no-JS and withholds
nothing from a markup reader. The build should prefer the text-opacity
census over the capture diff, which is now a v4 item.

Recorded but not acted on: symmetric-everything stays absent on deepmark
while the counter-case is real — wave-left.svg and wave-right.svg at the
closing CTA are a pixel-exact mirror pair (mean absolute difference 0.07
against 15.84 unmirrored) flanking a centred stack, which is heroku-2014's
mechanism exactly. It is held absent because 22 of 25 headings are
left-aligned and the hero field is not mirrored. Flipping it gives +3,
still short of the slop anchors, so it does not change the verdict.

Next session needs a genuinely slop-rated site, and the lesson from this
one is that a single rater cannot supply it.

Signed-off-by: Nik <84yk8btb9f@privaterelay.appleid.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@nikolas-sapa nikolas-sapa changed the title fix: corrections from a blind second rating, and a third capture failure mode fix: two blind re-ratings — deepmark is mixed, the gate closes, eleven rules withdrawn Oct 13, 2026
…ections

Signed-off-by: Nik <84yk8btb9f@privaterelay.appleid.com>
The previous handoff said the gate was open and ten rules were live. That
was true for about an hour. Two blind re-ratings closed the gate, withdrew
eleven rules and corrected three other files, so the handoff is rewritten
rather than patched.

Records the state that actually holds: 32 evidence files, 2 slop, zero
rules, a complete pipeline that authors nothing because nothing is
supportable.

Carries forward the three capture failure modes, all silent and all found
the hard way, including the inner-scroll-container case where every
instrument agrees on the wrong answer and a site got rated on 5% of its
page.

Names the first task precisely: find a slop-rated site and have TWO raters
agree on it. One rater cannot supply it, which is what this session proved
at the cost of eleven rules. The blind-rating protocol that worked is
written down, including that disagreement on a measurable signal gets
settled by measuring rather than by seniority.

Eight known-soft areas ranked, four of them unthresholded signals that two
careful raters would reasonably differ on.

Signed-off-by: Nik <84yk8btb9f@privaterelay.appleid.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@nikolas-sapa
nikolas-sapa merged commit 49e8182 into main Oct 14, 2026
4 checks passed
@nikolas-sapa
nikolas-sapa deleted the fix/blind-rerate-corrections branch October 14, 2026 02:39

This branch was successfully deployed

1 active deployment
Preview — 9200f4dd Deployed Oct 14, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant