Skip to content

feat: Board display metadata — sidecars, schema, drift gate, six boards (M1) - #228

Merged
Yona-Appletree merged 4 commits into
mainfrom
claude/board-display-metadata-m1
Jul 31, 2026
Merged

feat: Board display metadata — sidecars, schema, drift gate, six boards (M1)#228
Yona-Appletree merged 4 commits into
mainfrom
claude/board-display-metadata-m1

Conversation

@Yona-Appletree

@Yona-Appletree Yona-Appletree commented Jul 31, 2026

Copy link
Copy Markdown
Member

Plan: lp2025/2026-07-31-1002-hardware-board-selection
Path: ~/.photomancer/planning/lp2025/2026-07-31-1002-hardware-board-selection/plan.md

M1 of the hardware/board-selection roadmap (from the approved spike, PR #222): the display/catalog metadata layer. Complete — CI green, ready for review.

  • New lp-app/lpa-boards crate owning boards/<vendor>/<product>.display.json sidecars: catalog identity (tier, price, purchase URLs, caps, blurb) + the drawing block the row-engine renderer (M2) consumes. Embedded catalog (all_boards()) so wasm consumers need no fs.
  • Runtime manifests untouched (they compile into firmware); two new datasheet-derived profiles for espressif/esp32-c6-devkitc-1 and espressif/esp32-s3-devkitc-1 under the boards/README "omit what you cannot verify" policy (USB-JTAG + BOOT pins reserved; S3 GPIO35-37 and the revision-contested RGB pin deliberately absent).
  • Display-only sidecars for espressif/esp32-devkitc-v4 and quinled/dig-uno — no classic-ESP32 HardwareTarget yet; allowlisted with reasons in the drift tests.
  • Drift gate (lpa-boards/tests/manifest_drift.rs): display↔runtime pairing both directions, board_id↔path, board_label gpio agreement (incl. calibration not-found ⇒ display gpio absent), runtime-omitted gpios must present non-claimable, runtime-reserved gpios can't display as plain io, embedded catalog == on-disk bytes.
  • Schemas: board-display.schema.json joins lp-cli schema gen; the conformance test routes sidecars to it (vacuity-guarded). Manifest store skips .display.json.
  • ADR: docs/adr/2026-07-31-board-display-metadata-split.md (+ follow-ups row: allowlist shrinks when the classic-ESP32 target lands).

Validation: just check test clean locally (197 green suites); full CI green including firmware builds. Deviations from plan: types live in lpa-boards as planned; two small necessary companions (manifest-store + conformance-test sidecar exclusions) were required by the new file suffix.

Resume notes: read plan.md + m1-display-metadata-schema.md; next: M2 (row-engine renderer).

🤖 Generated with Claude Code

Yona-Appletree and others added 4 commits July 31, 2026 12:36
New app-side lpa-boards crate owning boards/<vendor>/<product>.display.json
catalog sidecars (identity/commerce + drawing block) next to the runtime
manifests, which stay firmware-lean and untouched. Adds runtime+display
profiles for the C6/S3 DevKitC-1 (datasheet-derived, uncalibrated, USB and
strap pins reserved per policy) and display-only sidecars for DevKitC v4 +
QuinLED Dig-Uno (no classic-ESP32 target yet - allowlisted in the drift
tests). board-display.schema.json joins the generated schema set; the
manifest store now skips .display.json sidecars.

Plan: 2026-07-31-1002-hardware-board-selection (M1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
boards/README.md gains the display-sidecar section and support-tier
definitions; ADR records the runtime/display split and the drift-gate
contract; ADR index gains the display-only-allowlist follow-up row.

ADR: docs/adr/2026-07-31-board-display-metadata-split.md
Plan: 2026-07-31-1002-hardware-board-selection (M1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eir own schema

The hardware conformance walk was checking .display.json sidecars
against hardware.schema.json. Route them to board-display.schema.json
(with a vacuity guard) so both formats stay schema-gated.

Plan: 2026-07-31-1002-hardware-board-selection (M1)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@Yona-Appletree
Yona-Appletree marked this pull request as ready for review July 31, 2026 20:13
@Yona-Appletree
Yona-Appletree merged commit 3dd420a into main Jul 31, 2026
18 checks passed
Yona-Appletree added a commit that referenced this pull request Aug 1, 2026
Brings the spike branch up to date with main (225 commits) so the
frozen UX-spike artifacts under spikes/hardware-boards/ can land
beside the implementation they produced (lp-app/lpa-boards, PRs
#228/#231/#236). Clean merge: the branch adds only new files in a
directory that does not exist on main.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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