diff --git a/docs/can-i-use.md b/docs/can-i-use.md
new file mode 100644
index 0000000000000000000000000000000000000000..283199f130cd65f26c4d3a91762017a0f65f69d6
--- /dev/null
+++ b/docs/can-i-use.md
@@ -0,0 +1,167 @@
+# Can I use?
+
+<!-- This file:
+Copyright 2025 Collabora Ltd.
+SPDX-License-Identifier: MIT
+-->
+
+A cheat-sheet for nice things that we can or cannot have in various
+branches of the Steam Runtime.
+
+## apt and dpkg features
+
+We have:
+
+* scout: dpkg 1.17.5 (backport), apt 1.0.9.8.6 (backport)
+* soldier: dpkg 1.19.8, apt 1.8.2.3 (from Debian 10)
+* sniper/steamrt3c: dpkg 1.20.13, apt 2.2.4 (from Debian 11)
+* medic: dpkg 1.21.22, apt 2.6.1 (from Debian 12)
+* steamrt5: dpkg 1.22.x, apt 2.9.x (from Debian 13)
+
+therefore we can use:
+
+* Versioned `Provides` (dpkg ≥ 1.17.11)
+    * NO: scout
+    * YES: Debian 10 and up, therefore soldier and up
+
+* `sources.list.d/*.list` one-line format
+    * YES: all branches
+
+* `sources.list.d/*.list` `Signed-By` filename (apt ≥ 1.1)
+    * NO: scout
+    * YES: soldier and up
+
+* `sources.list.d/*.sources` deb822 format (apt ≥ 1.1)
+    * NO: scout
+    * YES: soldier and up
+
+* `sources.list.d/*.sources` embeds ASCII-armored PGP keys (apt ≥ 2.3.10)
+    * NO: scout
+    * NO: soldier
+    * NO: sniper/steamrt3c
+    * YES: medic and up
+
+## debhelper features
+
+We have:
+
+* scout: debhelper 9.20131227 (backport)
+* soldier: debhelper 12.1.1 (from Debian 10)
+* sniper/steamrt3c: debhelper 13.3.4 (from Debian 11)
+* medic: debhelper 13.11.4 (from Debian 12)
+* steamrt5: debhelper 13.24.1 (from Debian 13)
+
+therefore we can use:
+
+* compat level 10 or older:
+    * YES: all branches
+
+* compat levels 11, 12:
+    * NO: scout
+    * YES: soldier and up
+
+* compat level 13:
+    * `${variable}` expansion in `d/*.install`, etc.
+    * NO: scout
+    * NO: soldier
+    * YES: sniper and up
+
+* `dh-sequence-*` (≥ 12.5 for full functionality):
+    * NO: scout
+    * NO: soldier
+    * YES: sniper and up
+
+* `execute_{before,after}_*` hooks (≥ 12.8):
+    * NO: scout
+    * NO: soldier
+    * YES: sniper and up
+
+* `dh-sequence-single-binary` (≥ 13.5):
+    * NO: scout
+    * NO: soldier
+    * NO: sniper/steamrt3c
+    * YES: medic and up
+
+## glibc
+
+We have:
+
+* scout: eglibc 2.15 (from Ubuntu 12.04) in the SDK, 2.31 in SLR 1.0,
+  OS's version in legacy runtime
+* soldier: 2.28 (from Debian 10) in the SDK, 2.31 (from Debian 11) at runtime
+* sniper/steamrt3c: 2.31 (from Debian 11)
+* medic: 2.36 (from Debian 12)
+* steamrt5: 2.41 (from Debian 13)
+
+## GLib
+
+We have:
+
+* scout: 2.58.3 (backport from Debian 10)
+* soldier: 2.58.3 (from Debian 10)
+* sniper/steamrt3c: 2.66.8 (from Debian 11)
+* medic: 2.74.6 (from Debian 12)
+* steamrt5: 2.84.x (from Debian 13)
+
+plus backports via `libglnx` in selected projects.
+
+## CMake
+
+We have:
+
+* scout: 3.18.4 (backport from Debian 11)
+* soldier: 3.18.4 (backport from Debian 11)
+* sniper/steamrt3c: 3.25.1 (backport from Debian 12)
+* medic: 3.25.1 (from Debian 12)
+* steamrt5: 3.31.x (from Debian 13)
+
+## Meson
+
+We have:
+
+* scout: 0.56.2 (backport from Debian 11)
+* soldier: 1.0.1 (backport from Debian 12)
+* sniper/steamrt3c: 1.0.1 (backport from Debian 12)
+* medic: 1.0.1 (from Debian 12)
+* steamrt5: 1.7.x (from Debian 13)
+
+## Python
+
+We have:
+
+* scout: 2.7, 3.2 (default), 3.5 (backport)
+* soldier: 2.7, 3.7 (from Debian 10)
+* sniper/steamrt3c: 3.9 (from Debian 11)
+* medic: 3.11 (from Debian 12)
+* steamrt5: 3.13 (from Debian 13)
+
+therefore we can use:
+
+* f-strings:
+    * NO: scout
+    * YES: soldier and up
+
+* `pathlib`:
+    * NO: scout `#!/usr/bin/python3`
+    * YES: scout if you explicitly use `python3.5`
+    * YES: soldier and up, but be careful with newer features
+
+* `subprocess.run`:
+    * NO: scout `#!/usr/bin/python3`
+    * YES: scout if you explicitly use `python3.5`,
+      but no `encoding=`, `errors=`, `text=`
+    * YES: soldier and up
+
+* `typing`:
+    * NO: scout `#!/usr/bin/python3`
+    * YES: scout if you explicitly use `python3.5`
+    * YES: soldier and up
+
+* `var: type = value` (PEP 526):
+    * NO: scout
+    * YES: soldier and up
+
+* `list[str]`, etc. (PEP 585):
+    * NO: scout
+    * NO: soldier
+    * YES: sniper and up