diff --git a/docs/outstanding.md b/docs/outstanding.md index 465bf31..b116356 100644 --- a/docs/outstanding.md +++ b/docs/outstanding.md @@ -225,10 +225,18 @@ the host is invisible to a sandboxed process as well. The fix is an `ashpd` dire `LocalStorage::grant`, not a change to the manifest. No Flatpak has been built here — `flatpak-builder` is not installed — so the permission set is reasoned, not observed. -**NFR-COMPAT-2 — distribution channels.** Unstated, and this is the requirement that makes the -others binding: §4.8 observes that the decision to publish on Play is what turns SAF from a -preference into a constraint. Spike S11, the Play permissions dry-run that would settle it, has not -run. Related, NFR-COMPAT-1's baseline is real but scattered — API 28/36 live in the Android +**NFR-COMPAT-2 — distribution channels. Stated, which is all this requirement asks.** The paragraph +above cites [distribution.md](distribution.md) and it is the same document that answers this: §1 +names five channels and their state — Arch source package and Flatpak in tree, AppImage a v1 channel +whose recipe is not written, F-Droid a v1 channel not yet submitted, and Play explicitly **not** v1. +The requirement is to *state* the channels, and they are stated, including the deferral. + +What remains is the coupling the requirement points at rather than the statement it demands. §4.8 +observes that publishing on Play is what turns SAF from a preference into a constraint, and +distribution.md §6 argues the coupling runs the other way for this project — F-Droid asks nothing +that ARCH §6.9 does not already require. Spike S11, the Play permissions dry-run, has not run, and +until it does that argument is reasoned rather than confirmed. Two of the five channels also exist +as decisions rather than as recipes, and no Flatpak has been built here at all. Related, NFR-COMPAT-1's baseline is real but scattered — API 28/36 live in the Android Dockerfile and are checked in CI against the built ELF, which is good — while the items the requirement singles out are missing: whether `shaderFloat16` and 16-bit storage are required (the one it flags as jeopardising R1), minimum RAM, minimum desktop Mesa, and a named reference device