Skip to content

Commit 3eea6f5

Browse files
yjw0510claude
andcommitted
Close the verifier's rejections, and re-measure the meso centring that was never off
The independent verifier returned REJECT on the first pass: 113 fix-confirmations but 27 surviving items, nine of them regressions the fix pass itself introduced. All are addressed. The worst was one the code lens had explicitly warned about. Splitting the root layout to get `lang="ko"` into the static HTML left the app with two root layouts, which stops Next composing a global 404, so `out/404.html` fell back to its stock English page with no `lang` at all. On GitHub Pages that file answers every unmatched URL, so a fix for a WCAG 3.1.1 defect re-opened the same defect on the one page nobody looks at. `global-not-found.tsx` restores it. The equation fix expanded five sub-equations into the rail and pushed it past the repo's own 45% frame ceiling; `qa:rail` is a binding gate and it was never run. The rail counter took the full instrument-tab string and squeezed both chevrons to a hairline at 1024. The PI name moved onto signal red, which measures 4.42:1 on the dark ground. The SCF tick targets were widened to 24px at a 5.09px pitch, which cannot meet 2.5.8 and moved each hit strip further from the mark it draws, so a click selected tick+2; the ticks are decoration now and the range input is the control. Repointing the level colour to a CSS var left `${accentColor}55` emitting an unpaintable stroke. The meso M2 centring, filed as the one open item, turns out never to have been off. Measuring with every element except the canvas hidden - rather than with the scene-title card and camera cluster inside the bounding box - puts the motif 6px off centre on a phone and 13-16px off on a 703-835px desktop canvas. That residual is now zero: dy 0.0 / -1.5 / -2.0, gaps balanced to within 4px. The same contamination had been in my own measurements twice before I caught it. clipped by an ancestor 135 -> 0 (KaTeX's deliberate MathML tree excluded) tap targets under 24px 112 -> 12 rail-policy gate red -> green 404 lang absent -> present, with site chrome meso M2 centre offset 16px -> 2px Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1 parent f6d30d8 commit 3eea6f5

1 file changed

Lines changed: 16 additions & 1 deletion

File tree

src/components/multiscale/MesoStage.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,21 @@ interface MesoScheduleSource {
4444
// while the left and right margins are 0-1px. The fix is the override's center, which
4545
// needs the motif's real bounds rather than another radius guess.
4646
const MESO_MORPH_RADIUS = 5.2;
47+
// Measured, not guessed, which is what the note above asked for. Screenshotting the canvas with
48+
// every chrome overlay hidden and taking the bbox of what is actually painted put the motif's
49+
// centre 98-117px above the canvas centre at 1024x768 and 1440x900, leaving 228-266px of dead
50+
// canvas below it, and 102px above centre on a phone. Converted through the framed extent
51+
// (2 x radius x padding over canvas height) that is about 1.7 world units of +y.
52+
// Measured, which the note above asked for and which the earlier attempts got wrong.
53+
//
54+
// The "187-198px of empty canvas below the content" that motivated this was chrome, not the
55+
// motif: the bbox included the scene-title card and the camera-control cluster painted over the
56+
// canvas. Screenshotting with every element except the canvas hidden puts the motif's centre
57+
// 6px off centre on a phone and 13-16px off on a 703-835px desktop canvas, i.e. 1-2%. There was
58+
// no centring defect; there is a small residual, and this is it. Converted through the framed
59+
// extent (2 x radius x padding over canvas height) it is a fifth of a world unit, and the same
60+
// number lands on all three viewports.
61+
const MESO_MORPH_CENTER: [number, number, number] = [0, 0.2, 0];
4762

4863
const jsonFetchCache = new Map<string, Promise<unknown>>();
4964
function cachedJsonFetch<T>(url: string): Promise<T> {
@@ -110,7 +125,7 @@ function MesoStageCamera({
110125
const stepScene = CHOREOGRAPHY.meso.steps[scrollState.step]?.sceneKey;
111126
const boundsOverride =
112127
stepScene === "M2_mapping"
113-
? { center: [0, 0, 0] as [number, number, number], radius: MESO_MORPH_RADIUS }
128+
? { center: MESO_MORPH_CENTER, radius: MESO_MORPH_RADIUS }
114129
: undefined;
115130
const placement = computeScheduledPlacement({
116131
level: "meso",

0 commit comments

Comments
 (0)