feat: Board display metadata — sidecars, schema, drift gate, six boards (M1) - #228
Merged
Merged
Conversation
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
marked this pull request as ready for review
July 31, 2026 20:13
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.
lp-app/lpa-boardscrate owningboards/<vendor>/<product>.display.jsonsidecars: 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.espressif/esp32-c6-devkitc-1andespressif/esp32-s3-devkitc-1under 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).espressif/esp32-devkitc-v4andquinled/dig-uno— no classic-ESP32HardwareTargetyet; allowlisted with reasons in the drift tests.lpa-boards/tests/manifest_drift.rs): display↔runtime pairing both directions, board_id↔path, board_label gpio agreement (incl. calibrationnot-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.board-display.schema.jsonjoinslp-cli schema gen; the conformance test routes sidecars to it (vacuity-guarded). Manifest store skips.display.json.docs/adr/2026-07-31-board-display-metadata-split.md(+ follow-ups row: allowlist shrinks when the classic-ESP32 target lands).Validation:
just check testclean locally (197 green suites); full CI green including firmware builds. Deviations from plan: types live inlpa-boardsas 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