Skip to content

feat(design): DS-H-07a probe hall gallery page - #1696

Merged
mergify[bot] merged 3 commits into
mainfrom
claude/ds-h-07a
Oct 17, 2026
Merged

mergify[bot] merged 3 commits into
mainfrom
claude/ds-h-07a

Conversation

@Cuarroc

@Cuarroc Cuarroc commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Die Design-Galerie hat jetzt eine Seite „Probe-Halle“, die die Halle mit dem Schild „Beispieldaten“ zeigt. Dort kannst du die Bewegung (Ruhig, Lebendig, Aus) und den Beispielsatz (normal, leer, ungelesen) umschalten; leer und ungelesen zeigen nur Worte und keine Arbeitsfigur. Eine Halle, die nicht auf dem Bildschirm zu sehen ist, pausiert ihre Bewegung jetzt wie bei einem versteckten Fenster.

Plan-ID: DS-H-07a

Report

Änderung

  • src/design/gallery/Gallery.tsx: Familie hall rendert die Seite „Probe-Halle“ (Nav-Eintrag heißt jetzt „Probe-Halle“ statt „Halle“). Zwei Segmented-Schalter: Bewegung (Ruhig/Lebendig/Aus) und Beispielsatz (normal = SAMPLE_HALL, leer = EMPTY_HALL, ungelesen = kein Szenenobjekt). Das Schild „Beispieldaten“ kommt aus Hall und steht in allen drei Sätzen.
  • Bewegungsschalter: eine Prop auf Hall (motion?: MotionMode), nicht der useMotion-Kontext — useMotion ist ein Store-Hook auf data-motion/localStorage, kein Provider; ein Überschreiben dort hätte die ganze App umgestellt. Das Betriebssystem gewinnt weiter (system || mode === "off" → still).
  • useHallMotion: IntersectionObserver auf die Szene; paused = hidden || offScreen, derselbe data-paused-Pfad. Ohne IntersectionObserver gilt die Szene als sichtbar.
  • src/i18n/de.ts: Wörter der Schalter. docs/PLAN.md: genau eine neue Zeile DS-H-07a.
  • Keine neue Abhängigkeit, keine Naht, kein neues Kunstwerk. fixtures.ts blieb unverändert (EMPTY_HALL gab es schon).

URL-Parameter (Hash-Routing, Zustand im Hash-Query, wird einmal beim Öffnen gelesen; Kopfkommentar in Gallery.tsx):
/#/designsystem?page=hall&motion=calm|lively|off&set=normal|empty|unread. page ist jede Galerieseite (colour, type, space, radius, glass, motion oder eine Familie); unbekannte Werte fallen auf die Vorgabe zurück.

Rot → grün (Test-First-Commit cafc761b, Fix a9831926)

  • Rot an cafc761b: 7 Tests rot (npx vitest run src/design/gallery src/design/hall/HallMotion.test.tsx, Exit 1).
  • Grün am Kopf: npx vitest run src/design/gallery src/design/hall → 59 Tests, Exit 0.
  • Neue Tests: hallPage.test.tsx (Schild, Seitenschalter lively/off, OS gewinnt, leer/ungelesen ohne Arbeitsfigur, Query öffnet Modus und Satz, unbekannter Wert) und HallMotion.test.tsx::an off-screen scene pauses the hall (IntersectionObserver-Attrappe).

Belege (Kopf 87bea254)

  • npm run typecheck Exit 0; node scripts/contrast-check.mjs Exit 0; node scripts/plan-check.mjs --offline Exit 0; bash scripts/ci/red-first.sh --plan Exit 0.
  • bash scripts/ci/gates.sh lane prepush Exit 0 (302 s, ungefiltert).
  • Push geprüft: git ls-remote origin claude/ds-h-07a = 87bea254c69b6671a6b397d6ddf0c8d88c3e6390.
  • Bildschirmfotos (Vite + scripts/dev/shot.mjs, Route /#/designsystem?page=hall&motion=calm&set=normal|empty, alle vier angesehen): ds-h-07a-calm-{normal,empty}-{light,dark}.png im Ordner der Server-Berichte. Hinweis: shot.mjs setzt heute immer reducedMotion: reduce, daher sind die Bilder Bild 0 (Lebendig/Aus als Bild folgt mit 07b --motion).

Architecture drift: keine neuen Funde.

NICHT ABGEDECKT

  • Die #[cfg(windows)]-Tests und die Windows-Arme von clippy: Linux deckt sie nicht ab, die Windows-Bahn läuft in der Merge-Queue.
  • Echter IntersectionObserver im Browser (die Tests nutzen eine Attrappe); kein Video, keine Lebendig-/Aus-Bilder (07b), keine Skalen 125/150 % (07b).
  • Keine Gesten einmal pro Wechsel (R1690-ROOT1, wartet auf ein Wechselsignal); die App am PC wurde nicht gestartet.
  • Der Schalterzustand wird nicht zurück in die Adresse geschrieben (nur gelesen).

Review: ausstehend (Stufe B, Root beauftragt einen unabhängigen Nicht-Anthropic-Prüfer).

🤖 Generated with Claude Code on the ProjectA server worker

Root review disposition and acceptance (head 87bea25)

Tier B (gallery page + hall hook, TS only, no seam). Author family: Anthropic (Claude Sonnet server job). Independent review: Cohere north-mini-code:free via kilo, round 1 on head 87bea25, verdict "approve with conditions". Root (Anthropic) checked each finding at the head; Root's own reading is not counted as independent.

ID Source Sev Finding Disposition
R1696-F1 Cohere high `system
R1696-F2 Cohere med docstring not updated for override Rejected: useHallMotion.ts:35-38 documents override and sceneRef.
R1696-F3 Cohere med hash query parsing is brittle Rejected: the app routes by hash (#/designsystem); the format is documented in the Gallery.tsx header comment and covered by hallPage.test.tsx ("the query opens mode and set").
R1696-F4 Cohere med oneOf types may mismatch Rejected: oneOf<T> returns a member of ids or ids[0]; typecheck green in prepush.
R1696-F5 Cohere low motion prop without default Rejected: override ?? stored falls back to the stored mode (useHallMotion.ts:41).
P1–P4 Cohere smell hook reuse, state shape, doc sync, edge-case tests No action; judgement calls, outside package scope.

Screenshots inspected by Root (/home/pa/pa-orch/reports/ds-h-07a-calm-{normal,empty}-{light,dark}.png): probe hall page, "Beispieldaten" label visible, empty set shows "Die Halle ist leer: kein Werkstück da." and no working figure. Note: these are frame-0 captures (old shot.mjs always emulates reduced motion); the motion evidence run follows after DS-H-07b merges.

Decision: accept. Evidence bound to head 87bea25; prepush exit 0 per job report ds-h-07a-20261017.md. Any later push voids this acceptance.

Cuarroc and others added 3 commits October 17, 2026 06:46
The German words for the page switches land with the tests so the
tests compile; the page itself follows in the next commit.

Test-First: src/design/gallery/hallPage.test.tsx::the gallery shows the probe hall with the Beispieldaten label
Test-First: src/design/gallery/hallPage.test.tsx::the page motion switch sets the hall to lively and off
Test-First: src/design/gallery/hallPage.test.tsx::OS reduced motion still wins over the page switch
Test-First: src/design/gallery/hallPage.test.tsx::empty and unread sets show words and no working figure
Test-First: src/design/gallery/hallPage.test.tsx::the query opens mode and set
Test-First: src/design/gallery/hallPage.test.tsx::an unknown query value falls back to the defaults
Test-First: src/design/hall/HallMotion.test.tsx::an off-screen scene pauses the hall

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The gallery family "hall" renders Hall on Beispieldaten with a page
motion switch (a prop on Hall; useMotion is a store hook, not a
context), a sample-set switch (normal, leer, ungelesen) and state from
the hash query. Hall pauses when the scene is off screen, on the same
data-paused path as a hidden document.

Test-First: src/design/gallery/hallPage.test.tsx::the gallery shows the probe hall with the Beispieldaten label
Test-First: src/design/gallery/hallPage.test.tsx::the page motion switch sets the hall to lively and off
Test-First: src/design/gallery/hallPage.test.tsx::OS reduced motion still wins over the page switch
Test-First: src/design/gallery/hallPage.test.tsx::empty and unread sets show words and no working figure
Test-First: src/design/gallery/hallPage.test.tsx::the query opens mode and set
Test-First: src/design/gallery/hallPage.test.tsx::an unknown query value falls back to the defaults
Test-First: src/design/hall/HallMotion.test.tsx::an off-screen scene pauses the hall

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
No-Test: plan text only

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@Cuarroc
Cuarroc marked this pull request as ready for review October 17, 2026 05:12
@Cuarroc Cuarroc added the review-ok Pipeline: review disposition complete, no open high finding label Oct 17, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-17T05:12:03.549128Z 87bea25 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@Cuarroc

Cuarroc commented Oct 17, 2026

Copy link
Copy Markdown
Owner Author

Root auto-queue: head 87bea25 unchanged since review-ok, all checks green. @Mergifyio queue

@Cuarroc

Cuarroc commented Oct 17, 2026

Copy link
Copy Markdown
Owner Author

@Mergifyio queue

@mergify mergify Bot mentioned this pull request Oct 17, 2026
30 of 46 tasks
@mergify

mergify Bot commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

queue

☑️ This pull request is already queued

@mergify mergify Bot added the queued label Oct 17, 2026
@mergify
mergify Bot merged commit b6d648a into main Oct 17, 2026
25 checks passed
@mergify

mergify Bot commented Oct 17, 2026

Copy link
Copy Markdown
Contributor

Merge Queue Status

  • ✅ Entered queue — 2026-10-17 05:23 UTC · Rule: default · triggered by merge protections
  • ✅ Checks passed · on draft merge queue: checking #1696 on main (faa4f8a) #1698
  • ✅ Merged — 2026-10-17 05:35 UTC · at b6d648a23fd5b8f831e41ea2a5044392564ab53c · merge

This pull request spent 12 minutes 45 seconds in the queue, including 12 minutes 26 seconds running CI.

Required conditions to merge
  • check-success = gates (linux)
  • check-success = gates (windows)
  • check-success = red-first
  • github-review-approved [🛡 GitHub repository ruleset rule main-pr-required-checks]
  • label != do-not-merge
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (linux)
    • check-neutral = @github-actions/gates (linux)
    • check-skipped = @github-actions/gates (linux)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/gates (windows)
    • check-neutral = @github-actions/gates (windows)
    • check-skipped = @github-actions/gates (windows)
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-success = @github-actions/red-first
    • check-neutral = @github-actions/red-first
    • check-skipped = @github-actions/red-first
  • any of [🛡 GitHub repository ruleset rule main-pr-required-checks]:
    • check-neutral = @mergify/Mergify Merge Protections
    • check-skipped = @mergify/Mergify Merge Protections
    • check-success = @mergify/Mergify Merge Protections

@mergify
mergify Bot deleted the claude/ds-h-07a branch October 17, 2026 05:35
@mergify mergify Bot removed the queued label Oct 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-ok Pipeline: review disposition complete, no open high finding

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant