Skip to content

Commit 0c79588

Browse files
committed
docs: platform support tiers -- bench-proven, CI-proven, community-verified
Brad's direction 2026-08-31: no Mac on the bench and none coming; ship everything CI can prove for macOS and invite the community to verify the hardware-adjacent rest. Same posture for SBCs, where desktop Linux already covers most of the surface and the machine layer is the one named gap. Community-verified is defined as an invitation with a floor: it requires the CI-proven tier beneath it, so it can never relabel a silent gap. Linked from design-principles so the completeness lens inspects platform claims against their stated tier.
1 parent 3e8ec37 commit 0c79588

2 files changed

Lines changed: 68 additions & 1 deletion

File tree

docs/design-principles.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,9 @@ Surfaces are as portable as the platforms allow, and honest about where
4444
they can't be: complete on the primary target, present everywhere it
4545
makes sense, and translated — not duplicated — where a sibling ecosystem
4646
already has its own excellent idioms. Exceptions are recorded in the
47-
design document, not assumed.
47+
design document, not assumed. Every platform claim carries its proof
48+
tier — bench-proven, CI-proven, or community-verified — as defined in
49+
[`platform-support-tiers.md`](platform-support-tiers.md).
4850

4951
---
5052

docs/platform-support-tiers.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Platform Support Tiers
2+
3+
How PyDevices states what a platform claim is worth. Companion to
4+
[`design-principles.md`](design-principles.md): the completeness standard
5+
demands that every claim be proven or recorded with its honest cause —
6+
these tiers are the vocabulary for doing that consistently, org-wide.
7+
8+
Every platform claim in a PyDevices README, vision, or roadmap carries
9+
one of three labels:
10+
11+
## Bench-proven
12+
13+
We demonstrated it ourselves on real hardware — the demo a stranger
14+
could watch exists and has run. This is the default tier for the
15+
platforms on our bench: the MCU fleet (ESP32 family, RP2), Windows, and
16+
desktop Linux.
17+
18+
## CI-proven
19+
20+
Continuous integration builds it, imports it, and runs its unit and
21+
contract tests — but no one here has exercised it against real hardware
22+
or OS services beyond what a runner provides. CI-proven is a real,
23+
honest tier, not a lesser apology: structural correctness is proven,
24+
hardware behavior is not yet, and the claim says so.
25+
26+
## Community-verified
27+
28+
The surface ships, clearly labeled as awaiting verification from
29+
someone with the hardware. This tier is an invitation, not a gap: the
30+
work is done to the CI-proven line, the seams are designed and
31+
documented, and a report from the field — "works here," with platform
32+
details — promotes the claim. Verification reports are welcome as
33+
issues on the relevant repo or in
34+
[Discussions](https://github.com/PyDevices/pydevices/discussions).
35+
36+
A claim may only sit in this tier if the two below it are actually met:
37+
shipping untestable code and calling it community-verified is the
38+
silent gap the completeness standard condemns, with a friendlier label.
39+
40+
---
41+
42+
## Current postures
43+
44+
**macOS.** PyDevices ships everything for macOS that CI can prove —
45+
wheels, imports, unit and contract tests on macOS runners — and claims
46+
nothing hardware-adjacent (USB enumeration, Bluetooth radios, audio
47+
devices) beyond that. Those surfaces ship at the community-verified
48+
tier: the code paths exist where the underlying libraries support them,
49+
and reports from Mac users promote them. No PyDevices claim assumes a
50+
Mac on our bench, because there isn't one.
51+
52+
**Single-board computers (Raspberry Pi and kin).** An SBC running
53+
CPython on Linux inherits most of the desktop tier as-is: Bluetooth
54+
via BlueZ, USB host enumeration, kmsdrm display output, standard
55+
wheels. Those claims are the desktop Linux claims, at desktop Linux's
56+
tier. The named gap is the machine layer — GPIO/SPI/I2C access that
57+
would let MCU-style device drivers run on an SBC's pins. That seam is
58+
identified and undelivered; it ships no claim today, and if it becomes
59+
a project it starts at CI-proven with community verification invited
60+
on the breadth of boards no bench could hold.
61+
62+
---
63+
64+
*Postures are updated here when a tier changes — a promotion needs its
65+
verification report or bench demo; a demotion needs its honest cause.*

0 commit comments

Comments
 (0)