Skip to content

Commit 78fca79

Browse files
Merge commit 'e35a2708' into swap-prep
2 parents e61ca68 + e35a270 commit 78fca79

14 files changed

Lines changed: 1501 additions & 816 deletions

CLAUDE.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -275,15 +275,21 @@ external reader's orientation to the whole fork, see
275275
artifact 2 (knowledge-inventory sweep) status — all 3 MISSING
276276
constants decided, items 1–2's fix merged (PR #343) and deployed
277277
2026-07-23T01:33Z — plus the #347-amended fire sequence, now
278-
**COMPLETE end to end (2026-07-23) — gate FIRED**: Bug-B whole-DB
279-
reparse dry-run, B(i) write, B(ii)+B(iii) retraction, the Bug-A
280-
forced-escalation sample, the 4c pilot dry-run, the owner sample
281-
audit, the pilot `--write` (130,210 votes, DB-verified exact match to
282-
the dry-run's prediction), and `consensus_recompute --apply` (49,206
283-
tag transitions, printing 3→4 resolved) all DONE, and #340 root-cause
284-
footprint sizing. Bug-A's full re-scan remains deferred post-pilot as
285-
the one tracked open item. Single source of
286-
truth for this
278+
**COMPLETE end to end, gate FIRED, true completion 2026-07-24**:
279+
Bug-B whole-DB reparse dry-run, B(i) write, B(ii)+B(iii) retraction,
280+
the Bug-A forced-escalation sample, the 4c pilot dry-run, the owner
281+
sample audit, the pilot `--write` (130,210 votes, DB-verified exact
282+
match to the dry-run's prediction), `consensus_recompute --apply`
283+
(49,206 tag transitions), plus five further 2026-07-24 corrective/
284+
completion passes (lexicon-gate retraction, marker reparse,
285+
artist-credit fill, calculator re-pass, a second `consensus_recompute`
286+
closer) all DONE and #340 root-cause footprint sizing. Live
287+
resolved-printing count is **3** (a provisional 4 was corrected back
288+
by the second closer); all 218,345 cards remain
289+
`artist_vote_status=unresolved` (single-machine-vote-below-threshold
290+
finding); review queue is **134,370** cards. Bug-A's full re-scan
291+
remains deferred post-pilot as the one tracked open item. Single
292+
source of truth for this
287293
gate's status — don't restate gate status/decisions elsewhere, link
288294
here.
289295
- [`docs/documentation-process.md`](docs/documentation-process.md) — docs/

docs/MANIFEST.md

Lines changed: 41 additions & 41 deletions
Large diffs are not rendered by default.

docs/README.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,15 @@ The methodology and the systems it governs.
4343
2026-07-22, now closed history per the 2026-07-23 new-data basis
4444
ruling) and artifact 2 status (all 3 MISSING constants decided, fix
4545
for 2 merged AND deployed 2026-07-23T01:33Z), the #347-amended fire
46-
sequence — now **COMPLETE end to end, gate FIRED (2026-07-23)**: Bug-B
47-
whole-DB reparse dry-run, the pilot dry-run and `--write` (130,210
48-
votes), and `consensus_recompute --apply` all DONE (Bug-A's full
46+
sequence — now **COMPLETE end to end, gate FIRED, true completion
47+
2026-07-24**: Bug-B whole-DB reparse dry-run, the pilot dry-run and
48+
`--write` (130,210 votes), `consensus_recompute --apply`, plus five
49+
further 2026-07-24 corrective/completion passes (lexicon-gate
50+
retraction, marker reparse, artist-credit fill, calculator re-pass, a
51+
second `consensus_recompute` closer) all DONE — live resolved-printing
52+
count is **3** (corrected from a provisional 4), all 218,345 cards
53+
remain `artist_vote_status=unresolved` (single-machine-vote-below-
54+
threshold finding), review queue is **134,370** cards (Bug-A's full
4955
re-scan deferred post-pilot is the one tracked open item) — and the
5056
#340 root-cause footprint sizing. Single source of
5157
truth for this gate's status — `theory.md`, `identification-pipeline.md`,

docs/features/display-left-rail.md

Lines changed: 105 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,14 @@ doc is the single, un-fragmented home for the round shipped 2026-07-23
77
(`SPEC-display-left-rail.md`, owner-approved; built into PR #352) — see
88
[`docs/upstreaming/readiness-audit.md`](../upstreaming/readiness-audit.md)'s
99
§10 for the presentation-only upstream-divergence ledger this round seeded
10-
(not duplicated here).
10+
(not duplicated here). A corrected fidelity round (also 2026-07-23,
11+
Yori) normalized every rail block-boundary divider to `#16202b` (O1,
12+
below). A follow-up machine-diff round (same day) fixed 63 further
13+
mismatches a computed-style diff against the corrected mockup caught —
14+
mostly Bootstrap body-default font-size fall-throughs, plus (per an
15+
explicit owner ruling) the `AutofillCollapse` header hex, the Source
16+
toggle's visual shape, and the Filters toggle's `.btn-sm` sizing — see
17+
the "Machine-diff fix round" section below.
1118

1219
Companion design artifacts (spec + mockup) live at
1320
[`docs/proposals/mockups/proposal-h/display-left-rail-mockup.html`](../proposals/mockups/proposal-h/display-left-rail-mockup.html)
@@ -270,7 +277,7 @@ bulk/pin/save-defaults controls (above). The empty-state "Find this card
270277
↗" link stays a link — pure navigation out to Scryfall, the rule's own
271278
explicit exception.
272279

273-
## Density (mechanical, SPEC §2)
280+
## Density (mechanical, SPEC §D.1)
274281

275282
Rail blocks now butt against each other separated by 1px borders —
276283
vertical rhythm comes from each block's own compact padding
@@ -281,6 +288,102 @@ behavior changed — see `proposal-h-display-layout-spec.md` §4.1 for the
281288
unchanged R2 shell (Offcanvas placement per tier, 380px inline width,
282289
etc.); this round only restyles/recomposes the rail's interior.
283290

291+
## O1 — divider normalization (corrected fidelity round, 2026-07-23)
292+
293+
The rail's own block-boundary hairlines were inconsistent: `.d14` (the
294+
confidence band) already used an explicit `#16202b`, while `.rail-head`,
295+
`.artist-line`, and the Sources accordion's outer wrapper used the plain
296+
Bootstrap `.border-bottom` utility — whose active `--bs-border-color` is
297+
genuinely ambiguous in this theme's compiled CSS (both `#495057` and
298+
`#ced4da` are present), risking a pale line on the dark rail depending on
299+
cascade order. The unified Frame+Treatment filter's own border (and its
300+
internal Frame↔Treatment divider) separately hardcoded the unthemed
301+
`rgba(0,0,0,.22)`. The Select Version wrapper had no boundary divider at
302+
all.
303+
304+
**Normalized (owner-approved, corrected `SPEC-display-left-rail.md` §A/
305+
§D.1) — every one of the above now explicitly renders `#16202b`, 1px**:
306+
`.rail-head`, `.artist-line`, and `.sources` (all three now via
307+
`RailRoot`'s own styled-component rules in `DisplayPage.tsx`, replacing
308+
the Bootstrap utility classes they used to carry); the Select Version
309+
wrapper (gained a `select-version-wrapper` className plus a new
310+
`RailRoot` rule — it never had a boundary before); the unified filter
311+
`fieldset`'s own border and its internal `UnifiedFilterDivider` (both
312+
inline/styled-component literals in `SelectVersionResults.tsx`). The
313+
Sources list's own inner border was deliberately left at `rgba(0,0,0,.22)`
314+
— the spec's own binding table marks that one specifically as unchanged
315+
(`I`, not `I (border N)`), not part of O1's scope. Each source ROW's own
316+
bottom divider was ALSO meant to stay `rgba(0,0,0,.22)` per that same
317+
table, but O1's own named list (`.rail-head`/`.artist-line`/`.sources`
318+
only) missed that it was ALSO using the ambiguous Bootstrap utility and
319+
resolving to the wrong colour (`#ced4da`) — caught and fixed in the
320+
machine-diff round below, not this one.
321+
322+
## Machine-diff fix round (2026-07-23)
323+
324+
A throwaway Playwright/computed-style diff (session tmp dir, not
325+
committed) measured the corrected mockup against the O1-round build and
326+
found 63 property mismatches — mostly Bootstrap body-default (16px)
327+
font-size fall-throughs on bespoke rail classnames that had never had
328+
their own font-size rule at all (`.rail-head .slot` -> 14px, `.rail-head .name` -> 15px + `margin-top:1px`, `.artist-line` -> 13px (replacing the
329+
close-but-not-exact Bootstrap `small` utility), `.select-version-heading`
330+
-> 14px), plus the Sources filter input's font-size/padding (Bootstrap's
331+
stock `.form-control` -> the spec's `14px`/`6px 10px`, fixed as a
332+
component-scoped inline style, not a `.form-control` RailRoot selector),
333+
the source row's own border-bottom (the same ambiguous-Bootstrap-utility
334+
pattern O1 missed on this one element, now `rgba(0,0,0,.22)` explicitly),
335+
the tile corner tag (`0.5rem`/alpha `.9` -> the spec's `7px`/alpha
336+
`.92`), and the Ghost "+N" tile's padding (a real `<button>` needed an
337+
explicit `padding:0` reset against the browser's own UA-stylesheet
338+
default).
339+
340+
Three further rows the diff also flagged were held back for an explicit
341+
owner ruling rather than applied speculatively — **all three are now
342+
resolved, same day, per that ruling** (the corrected mockup is the
343+
binding reference for all three, confirmed by the owner):
344+
345+
- **`AutofillCollapse` header background hex**`#4E5D6B` is REVERTED
346+
from PR #400's own "correction" to `#4e5d6c` (`$secondary`). The owner
347+
confirmed `#4E5D6B` is deliberate, distinct from the panel/seticon
348+
token elsewhere in the rail, one hex digit apart by design. Do not
349+
"fix" this back again — `AutofillCollapse.tsx`'s own comment at this
350+
line carries the note.
351+
- **Source toggle shape** — restyled from the shared
352+
`react-bootstrap-toggle` library's stock sliding single-label switch
353+
into the corrected mockup's static two-cell segmented control (both
354+
On/Off labels always visible). The library's own DOM already renders
355+
both cells with the correct colour classes unconditionally; only its
356+
`overflow:hidden`/sliding-`.toggle-group` CSS needed overriding, scoped
357+
to a `rail-source-toggle` className `SourcesAccordion.tsx`'s Toggle
358+
passes — every other `react-bootstrap-toggle` mount sitewide (roughly
359+
ten other call sites: `FinishSettings`, `PDFGenerator`,
360+
`SearchTypeSettings`, the filter Toggles, etc) is unaffected.
361+
- **`.btn-sm` sizing** — the Filters disclosure toggle (`CompactButton`,
362+
`SelectVersionResults.tsx`) returns to the spec's real Bootstrap `sm`
363+
metrics (`14px`/`4px 8px`), superseding the earlier "the buttons are
364+
too big" shrink for that one control. `CompactButton` has exactly one
365+
call site, so this is component-scoped by construction.
366+
`CompactToggleButton` (Frame/Border segments) and `TreatmentChip`
367+
(Treatment chips) are UNCHANGED — they bind to their own distinct,
368+
still-in-force spec rows (`11px` each), never the generic `.btn-sm`
369+
row. Every OTHER `.btn-sm`-class rail control (Sources bulk/save-
370+
defaults, Slot Actions, Artist support, D14 ``) was already at
371+
`14px`/`4px 8px` via plain `<Button size="sm">` with no override at
372+
all — this ruling only ever affected the one Compact-wrapped control.
373+
374+
**Deliberately left open this round**: "Demoted body" `13px` (§D.1) — a
375+
known gap the diff's own measurement surfaced (via Slot Actions' body
376+
font-size), not fixed because the mechanical repair (an additive
377+
`bodyFontSize?: string` prop on `AutofillCollapse.tsx`, mirroring the
378+
existing `headerPadding` precedent) would touch every demoted
379+
`RailSection` — Card Details/Attributes/Printing Tags/Print Options/
380+
Report, not just Slot Actions (the only one the diff actually measured)
381+
— and the blast radius across the other four wasn't verified. See
382+
`SPEC-display-left-rail.md` §D.1's own note under the "Demoted body" row
383+
for the full reasoning.
384+
385+
`frontend/tests/DisplayLeftRailFidelity.spec.ts` asserts every fix above.
386+
284387
## File-level summary
285388

286389
| File | Change |

0 commit comments

Comments
 (0)