Four gaps found shipping in Opus 4.8 eval samples during human review:
1. low-contrast (extended): the browser adapters parsed text/own-bg
colors with parseRgb only, so Chrome's oklch()-serialized computed
colors silently skipped every contrast check — a flat dark-on-dark
nav CTA (broader nav selector beating the button class) shipped at
1.5:1 undetected. checkElementColorsDOM and readOwnBackgroundColor
now fall back to parseAnyColor. Near-threshold ratios print two
decimals so a 4.497 finding no longer reads "4.5 needs 4.5".
2. NEW numbered-section-labels (slop, advisory): tiny (<=13px) styled
numeric index labels riding beside section headings, repeated across
2+ sections with distinct indices. Sibling of repeated-section-kickers
(which deliberately excludes bare numeric labels); handles both the
direct prev-sibling shape and label-before-heading-wrapper shape.
List/nav/table/card-item numbering is exempt.
3. side-tab (extended): the vertical pseudo-element stripe scan required
the stripe to touch both corners (top/bottom 0 or height 100%), so a
left accent bar inset a few px from each end evaded it; small end
insets (<=20px each) now count. Added a browser-side pseudo-element
check (getComputedStyle(el, '::before'/'::after')) since runtime-
assigned custom-property colors are invisible to the text scanner.
Selection-state exemptions stay as narrowed: only aria-selected=true /
aria-current / active-class markers exempt, plus button/link
affordances on the horizontal variant.
4. NEW repeated-container-text (quality): the same literal string (>=4
chars, contains letters) rendered 3+ times at 3+ structurally distinct
positions inside one bordered/elevated container. Parallel/templated
repetition (table cells, calendar grids, nav lists, identical sibling
rows) never counts — structural signatures, not word lists.
Verified: each rule fires on its repro sample via the file:// browser
scan; clean eval samples add no new findings (the new low-contrast hits
on other samples are genuine sub-AA oklch button pairs). Full test
suite green; browser bundle regenerated; README/homepage rule counts
bumped 49 -> 51 (docs-integrity test enforces them).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Four lines from the r10 dual consultation (codex gpt-5.6-sol + gemini
3.5-pro on the actual HTMLs) and the hero-probe micro-eval: the probe
isolated a first-viewport monoculture (same split template in every
sample, control and skill alike) and showed these lines break it while
codex's raw 15-liner alone does not. The incumbent sentence swap fixes
the r10 root cause both consultants independently identified.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Add repeated production annotation timing, real app-server cache telemetry, the context-delta decision, and correct --judge=false handling.\n\nAI-assisted: OpenAI Codex.
Keep short crash-recovery leases without allowing a healthy worker to queue its own generation twice, and surface non-monotonic benchmark journals as errors.\n\nAI-assisted: OpenAI Codex.
Replaces the a14/a15 attempts (both deleted). Diagnosis: incentive
stacking; the placeholder-completion MUST plus the image tool turned
'bolder' into full-bleed photo insertion. Scope preservation is the
missing rule, not imagery policy.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Return after a durable starting record, overlap app-server initialization with page startup, dynamically reclaim generation after worker failure, and cap hard-crash leases at 15 seconds.\n\nAI-assisted: OpenAI Codex.
x02 a14 rerun: 3/3 samples still imported photos — the unscoped MUST in
the Persuade mode block overrode the existing-worlds principle. Scoping
keeps the greenfield ablation win, frees iteration asks.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Remove stale and contradictory experiments, order the surviving decisions by impact, and replace synthetic claims with current production evidence.\n\nAI-assisted: OpenAI Codex.
Replace stale startup and synthetic claims with production browser timing, matched architecture comparisons, Accept latency, and honest run counts.\n\nAI-assisted: OpenAI Codex.
x02-tidewater-bolder eval: 3/3 skill-on samples imported photography into
a photo-free seed system (0% arena vs competitor, which amplified the
seed's own vocabulary instead). One sentence, shape-level, no examples.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Count variants only inside the active generation wrapper so deferred carbonize markers cannot create false fast-path results.\n\nAI-assisted: OpenAI Codex.
Exercise accepting the first progressive variant, immediately preparing another task, and receiving its first result through the independent Codex worker.\n\nAI-assisted: OpenAI Codex.
Let the browser E2E harness launch an independent production worker, exercise real sub-command selection, and carry realistic product/design context.\n\nAI-assisted: OpenAI Codex.
Validate and transactionally publish complete structured agent messages as soon as they arrive while retaining turn-completion serialization for subsequent phases.\n\nAI-assisted: OpenAI Codex.
Journal and stream dedicated worker phases so Live distinguishes first-variant design and validation from remaining-direction work without adding pollable events.\n\nAI-assisted: OpenAI Codex.
Compare direct Sol execution with cold and persistent app-server paths using identical full-task quality gates, lifecycle timings, and token metrics.\n\nAI-assisted: OpenAI Codex.
Update Live Lab and the Live reference with the default Sol worker, full-task quality gate, Spark control, cold readiness, and production architecture.\n\nAI-assisted: OpenAI Codex.
Tab-strip MEMBERSHIP no longer exempts chromatic top/bottom stripes —
only a real selection marker does: aria-selected="true", aria-current
(any non-false value), or an active/current/selected class hint. A
stripe repeated on every tab in the group ([role=tab], .tabs items,
aria-selected="false" tabs) is decoration and flags as side-tab; the
selected tab's own underline — including the reserved-space
transparent-border pattern — stays legal. Applied consistently across
the element border path (isTabContextElement), the pseudo-element
stripe scan, and the inset box-shadow stripe scan.
Also replaces a stray NUL byte in the marquee scanner's dedupe key
that made tools treat checks.mjs as binary.
Browser bundle regenerated.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Route the full-context benchmark through production worker inputs and preserve established shared-control visual roles during variant amplification.\n\nAI-assisted: OpenAI Codex.
Default Codex to a dedicated Sol/medium app-server worker with native skill and image inputs, inherited project context, bounded source neighborhood evidence, and progressive context refresh. Other harnesses retain the portable foreground path.\n\nAI-assisted: OpenAI Codex.
Benchmark realistic bolder and polish tasks across fast, full-model, and full-context worker profiles with deterministic and independent quality gates.\n\nAI-assisted: OpenAI Codex.