feat(docs): add a capabilities matrix page generated from runtime facts

TH
6h ago
+2873-48

Summary

Adds website/docs/docs/capabilities.md: which commands each target supports — iOS sim/physical, Android emulator/physical, Android TV/Fire OS, tvOS, Vega OS, HarmonyOS, macOS desktop/app, Linux, web, and Limrun, BrowserStack, AWS Device Farm, TestMu AI sessions. Identical targets merge into one column; each row links to the doc section that proves it.

Every cell is generated, not written: scripts/capability-matrix/ loads each platform/provider runtime against a stub host and a scripted provider wire, calls the same inspectFacts(device) the capabilities command answers from, and maps facts to commands through the registry rule (command-registry/fact-support, extracted from the capabilities inventory so both share one owner; it judges the declared uses given to it, so importing it adds no eagerly-loaded modules). Non-fact data (labels, limit notes, doc links) lives in annotations.ts keyed by command id, so removing or renaming a capability fails the gate. Host seams that decide cells fail closed: a runtime that starts reading a new seam fails the run rather than reading a fabricated answer.

Also: check:capabilities-matrix in the docs lane (regenerate-and-diff + repo-guard with negative proofs), sidebar + README links, llms.txt coverage comes from the sidebar.

Follow-ups, not blocked here:

  • <link rel="alternate" type="text/markdown"> per page would need a @callstack/rspress-preset change (.md mirrors already ship and llms.txt lists the page).
  • The release lane never rewrites the page's version/date stamp, so it silently ages; the drift mask hides that by design. A release-time generate:capabilities --write would fix it.
  • HarmonyOS facts mark perf frames/memory-snapshot available while commands.md says those report unavailable inside the run; a row note now says a Yes means the command runs, not every metric. Deciding the HarmonyOS facts themselves is separate work.

Validation

  • Head cbd21be5d4 (base ed798f9cfe): pnpm check:affected --run --head cbd21be5d4 — all runnable checks passed, exactCommit=true (receipt .tmp/validation/run-QeHekO).
  • Docs-only page; runtime device lanes are GitHub-authoritative at the PR head.
  • Guard proven to fail: flipped cell, dropped/renamed annotation command, and a synthetic split row each turn it red; the version/date mask alone stays quiet.

šŸ¤– Generated with Claude Code