skcomms 0.2.4__tar.gz → 0.2.5__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. {skcomms-0.2.4 → skcomms-0.2.5}/.github/workflows/publish.yml +19 -0
  2. {skcomms-0.2.4/src/skcomms.egg-info → skcomms-0.2.5}/PKG-INFO +1 -1
  3. {skcomms-0.2.4 → skcomms-0.2.5/src/skcomms.egg-info}/PKG-INFO +1 -1
  4. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms.egg-info/SOURCES.txt +0 -2
  5. skcomms-0.2.4/src/skcomms.egg-info/scm_file_list.json +0 -407
  6. skcomms-0.2.4/src/skcomms.egg-info/scm_version.json +0 -8
  7. {skcomms-0.2.4 → skcomms-0.2.5}/.github/workflows/ci.yml +0 -0
  8. {skcomms-0.2.4 → skcomms-0.2.5}/.github/workflows/pytest.yml +0 -0
  9. {skcomms-0.2.4 → skcomms-0.2.5}/.github/workflows/qa.yml +0 -0
  10. {skcomms-0.2.4 → skcomms-0.2.5}/.github/workflows/secret-scan.yml +0 -0
  11. {skcomms-0.2.4 → skcomms-0.2.5}/.gitignore +0 -0
  12. {skcomms-0.2.4 → skcomms-0.2.5}/.gitleaks.toml +0 -0
  13. {skcomms-0.2.4 → skcomms-0.2.5}/CHANGELOG.md +0 -0
  14. {skcomms-0.2.4 → skcomms-0.2.5}/CODE_OF_CONDUCT.md +0 -0
  15. {skcomms-0.2.4 → skcomms-0.2.5}/CONTRIBUTING.md +0 -0
  16. {skcomms-0.2.4 → skcomms-0.2.5}/DEPLOY-NOTES.md +0 -0
  17. {skcomms-0.2.4 → skcomms-0.2.5}/Dockerfile +0 -0
  18. {skcomms-0.2.4 → skcomms-0.2.5}/LICENSE +0 -0
  19. {skcomms-0.2.4 → skcomms-0.2.5}/MISSION.md +0 -0
  20. {skcomms-0.2.4 → skcomms-0.2.5}/README.md +0 -0
  21. {skcomms-0.2.4 → skcomms-0.2.5}/SECURITY.md +0 -0
  22. {skcomms-0.2.4 → skcomms-0.2.5}/SOP.md +0 -0
  23. {skcomms-0.2.4 → skcomms-0.2.5}/constraints.txt +0 -0
  24. {skcomms-0.2.4 → skcomms-0.2.5}/contrib/systemd/skcomms-api.service +0 -0
  25. {skcomms-0.2.4 → skcomms-0.2.5}/contrib/systemd/skcomms-housekeep.service +0 -0
  26. {skcomms-0.2.4 → skcomms-0.2.5}/contrib/systemd/skcomms-housekeep.timer +0 -0
  27. {skcomms-0.2.4 → skcomms-0.2.5}/docs/ARCHITECTURE.md +0 -0
  28. {skcomms-0.2.4 → skcomms-0.2.5}/docs/DISCORD_SETUP.md +0 -0
  29. {skcomms-0.2.4 → skcomms-0.2.5}/docs/HANDOFF-skfed-s2s-opus-delivery.md +0 -0
  30. {skcomms-0.2.4 → skcomms-0.2.5}/docs/PAIRING.md +0 -0
  31. {skcomms-0.2.4 → skcomms-0.2.5}/docs/REVOCATION_LATENCY.md +0 -0
  32. {skcomms-0.2.4 → skcomms-0.2.5}/docs/SYNCTHING_TOPOLOGY.md +0 -0
  33. {skcomms-0.2.4 → skcomms-0.2.5}/docs/access-plane-p7.md +0 -0
  34. {skcomms-0.2.4 → skcomms-0.2.5}/docs/access-plane-p8.md +0 -0
  35. {skcomms-0.2.4 → skcomms-0.2.5}/docs/cot-bridge.md +0 -0
  36. {skcomms-0.2.4 → skcomms-0.2.5}/docs/crypto-architecture.md +0 -0
  37. {skcomms-0.2.4 → skcomms-0.2.5}/docs/deploy-plan/skcomms-bulletproof-deploy.md +0 -0
  38. {skcomms-0.2.4 → skcomms-0.2.5}/docs/federation-data-comms-architecture.md +0 -0
  39. {skcomms-0.2.4 → skcomms-0.2.5}/docs/funnel-privacy.md +0 -0
  40. {skcomms-0.2.4 → skcomms-0.2.5}/docs/mode-b-tailnet-deploy.md +0 -0
  41. {skcomms-0.2.4 → skcomms-0.2.5}/docs/node_registry.example.yml +0 -0
  42. {skcomms-0.2.4 → skcomms-0.2.5}/docs/rfcs/RFC-0001-pq-ratchet-metadata-dual-identity.md +0 -0
  43. {skcomms-0.2.4 → skcomms-0.2.5}/docs/skfed-consent-design.md +0 -0
  44. {skcomms-0.2.4 → skcomms-0.2.5}/docs/skfed-federation-guide.md +0 -0
  45. {skcomms-0.2.4 → skcomms-0.2.5}/docs/state-sync-rearch-plan.md +0 -0
  46. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-10-qr-pairing.md +0 -0
  47. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-13-ble-mesh-p1-core.md +0 -0
  48. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-13-lora-l1-core.md +0 -0
  49. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-13-skglossa-g1-core.md +0 -0
  50. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-13-skglossa-g2-macro-lexicon.md +0 -0
  51. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-13-skglossa-g4-emergent.md +0 -0
  52. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/plans/2026-06-13-tier3-adapter-runtime.md +0 -0
  53. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/specs/2026-06-13-ble-mesh-proximity-transport-design.md +0 -0
  54. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/specs/2026-06-13-lora-meshtastic-transport-design.md +0 -0
  55. {skcomms-0.2.4 → skcomms-0.2.5}/docs/superpowers/specs/2026-06-13-skglossa-design.md +0 -0
  56. {skcomms-0.2.4 → skcomms-0.2.5}/docs/tak-vs-skfed-analysis.md +0 -0
  57. {skcomms-0.2.4 → skcomms-0.2.5}/pyproject.toml +0 -0
  58. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/backfill_file_locations.py +0 -0
  59. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/bootstrap.sh +0 -0
  60. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/discord_smoke.py +0 -0
  61. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/drain_orphan_outbox.py +0 -0
  62. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/mode-b-setup.sh +0 -0
  63. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/refresh-constraints.sh +0 -0
  64. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/skfed-dns.sh +0 -0
  65. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/skfed-neutral-addresses.sh +0 -0
  66. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/skfed-sync-rearch.sh +0 -0
  67. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/telegram_smoke.py +0 -0
  68. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/templates/consent-mode.conf.tmpl +0 -0
  69. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/templates/realms.yml.tmpl +0 -0
  70. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/templates/tailscale-serve.sh.tmpl +0 -0
  71. {skcomms-0.2.4 → skcomms-0.2.5}/scripts/test_skfed_sync_rearch.sh +0 -0
  72. {skcomms-0.2.4 → skcomms-0.2.5}/setup.cfg +0 -0
  73. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/__init__.py +0 -0
  74. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/__init__.py +0 -0
  75. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/audit.py +0 -0
  76. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/config.py +0 -0
  77. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/exec.py +0 -0
  78. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/files.py +0 -0
  79. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/grants.py +0 -0
  80. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/knowledge.py +0 -0
  81. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/registry.py +0 -0
  82. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/routing.py +0 -0
  83. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/server.py +0 -0
  84. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/access/wiring.py +0 -0
  85. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/ack.py +0 -0
  86. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/__init__.py +0 -0
  87. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/base.py +0 -0
  88. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/discord.py +0 -0
  89. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/factory.py +0 -0
  90. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/fake.py +0 -0
  91. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/matrix.py +0 -0
  92. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/models.py +0 -0
  93. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/registry.py +0 -0
  94. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/slack.py +0 -0
  95. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/adapters/telegram.py +0 -0
  96. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/anon_queue.py +0 -0
  97. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/anon_transport.py +0 -0
  98. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/api.py +0 -0
  99. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/capabilities.py +0 -0
  100. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/capauth_validator.py +0 -0
  101. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/cli.py +0 -0
  102. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/cluster.py +0 -0
  103. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/compression.py +0 -0
  104. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/config.py +0 -0
  105. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent.py +0 -0
  106. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_banfeeds.py +0 -0
  107. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_captcha.py +0 -0
  108. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_greylist.py +0 -0
  109. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_group_gate.py +0 -0
  110. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_groups.py +0 -0
  111. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_moderation.py +0 -0
  112. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_pipeline.py +0 -0
  113. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_policy.py +0 -0
  114. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_requests.py +0 -0
  115. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_runtime.py +0 -0
  116. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_tiering.py +0 -0
  117. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/consent_tokens.py +0 -0
  118. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/core.py +0 -0
  119. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/crypto.py +0 -0
  120. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/crypto_suites.py +0 -0
  121. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/did_router.py +0 -0
  122. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/discovery.py +0 -0
  123. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/envelope.py +0 -0
  124. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/federation.py +0 -0
  125. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/geo_seed.py +0 -0
  126. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/geo_store.py +0 -0
  127. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/__init__.py +0 -0
  128. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/codebook.py +0 -0
  129. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/codec.py +0 -0
  130. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/emergent.py +0 -0
  131. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/gloss.py +0 -0
  132. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/handshake.py +0 -0
  133. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/macros.py +0 -0
  134. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/message.py +0 -0
  135. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/glossa/session.py +0 -0
  136. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/grants.py +0 -0
  137. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/heartbeat.py +0 -0
  138. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/home.py +0 -0
  139. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/household_router.py +0 -0
  140. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/housekeeping.py +0 -0
  141. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/identity.py +0 -0
  142. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/integration.py +0 -0
  143. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/key_exchange.py +0 -0
  144. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/mailbox.py +0 -0
  145. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/marketplace.py +0 -0
  146. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/mcp_server.py +0 -0
  147. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/metrics.py +0 -0
  148. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/models.py +0 -0
  149. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/node_registry.py +0 -0
  150. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/nostr_discovery.py +0 -0
  151. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/observability.py +0 -0
  152. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/operator_probe.py +0 -0
  153. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/outbox.py +0 -0
  154. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/outbox_migrate.py +0 -0
  155. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/padding.py +0 -0
  156. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pairing.py +0 -0
  157. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pairing_mirror.py +0 -0
  158. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/paths.py +0 -0
  159. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/peers.py +0 -0
  160. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pq_provider.py +0 -0
  161. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pqdm.py +0 -0
  162. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pqkem.py +0 -0
  163. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pqkem_backend.py +0 -0
  164. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pqroute.py +0 -0
  165. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pqroute_transport.py +0 -0
  166. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pqsig.py +0 -0
  167. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/profile_router.py +0 -0
  168. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/public_pairing.py +0 -0
  169. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pubsub.py +0 -0
  170. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/pubsub_transport.py +0 -0
  171. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/queue.py +0 -0
  172. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/ratelimit.py +0 -0
  173. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/realm.py +0 -0
  174. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/registry.py +0 -0
  175. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/router.py +0 -0
  176. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/signaling.py +0 -0
  177. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/signing.py +0 -0
  178. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/skfed_announce.py +0 -0
  179. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/skfed_directory.py +0 -0
  180. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/skfed_readdr.py +0 -0
  181. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/skfed_resolve.py +0 -0
  182. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/skworld_manifest.py +0 -0
  183. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/souls_router.py +0 -0
  184. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/ssrf.py +0 -0
  185. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/store_forward.py +0 -0
  186. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/syncthing_rail.py +0 -0
  187. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/tofu.py +0 -0
  188. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transport.py +0 -0
  189. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/__init__.py +0 -0
  190. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/audio_track.py +0 -0
  191. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/__init__.py +0 -0
  192. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/gatt.py +0 -0
  193. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/identity.py +0 -0
  194. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/node.py +0 -0
  195. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/noise.py +0 -0
  196. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/protocol.py +0 -0
  197. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/radio.py +0 -0
  198. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/ble/relay.py +0 -0
  199. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/broker_server.py +0 -0
  200. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/file.py +0 -0
  201. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/http_s2s.py +0 -0
  202. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/__init__.py +0 -0
  203. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/addressing.py +0 -0
  204. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/framing.py +0 -0
  205. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/interface.py +0 -0
  206. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/meshtastic_iface.py +0 -0
  207. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/store.py +0 -0
  208. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/lora/transport.py +0 -0
  209. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/nostr.py +0 -0
  210. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/p2p_connector.py +0 -0
  211. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/p2p_manager.py +0 -0
  212. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/p2p_session.py +0 -0
  213. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/signaling_base.py +0 -0
  214. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/signaling_broker.py +0 -0
  215. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/signaling_mailbox.py +0 -0
  216. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/syncthing.py +0 -0
  217. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/tailscale.py +0 -0
  218. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/video_track.py +0 -0
  219. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/webrtc.py +0 -0
  220. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/webrtc_media.py +0 -0
  221. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/transports/websocket.py +0 -0
  222. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms/trustbackup.py +0 -0
  223. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms.egg-info/dependency_links.txt +0 -0
  224. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms.egg-info/entry_points.txt +0 -0
  225. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms.egg-info/requires.txt +0 -0
  226. {skcomms-0.2.4 → skcomms-0.2.5}/src/skcomms.egg-info/top_level.txt +0 -0
  227. {skcomms-0.2.4 → skcomms-0.2.5}/tests/__init__.py +0 -0
  228. {skcomms-0.2.4 → skcomms-0.2.5}/tests/conftest.py +0 -0
  229. {skcomms-0.2.4 → skcomms-0.2.5}/tests/fixtures/pqdm2_from_dart.json +0 -0
  230. {skcomms-0.2.4 → skcomms-0.2.5}/tests/gen_pqdm2_fixture.py +0 -0
  231. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_exec.py +0 -0
  232. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_files.py +0 -0
  233. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_nonce_durable.py +0 -0
  234. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_rbac.py +0 -0
  235. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_routing.py +0 -0
  236. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_server.py +0 -0
  237. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_access_wiring.py +0 -0
  238. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ack_bind.py +0 -0
  239. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_adapter_factory.py +0 -0
  240. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_adapter_fake.py +0 -0
  241. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_anon_queue.py +0 -0
  242. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_anon_transport.py +0 -0
  243. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_access_token.py +0 -0
  244. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_consent.py +0 -0
  245. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_consent_token_gate.py +0 -0
  246. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_cors.py +0 -0
  247. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_federation_inbox.py +0 -0
  248. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_geo_seed.py +0 -0
  249. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_geo_skcot_bridge.py +0 -0
  250. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_geo_units.py +0 -0
  251. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_health.py +0 -0
  252. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_send_signed_wire.py +0 -0
  253. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_api_skfed_directory.py +0 -0
  254. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_backfill_file_locations.py +0 -0
  255. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_fragment.py +0 -0
  256. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_gatt.py +0 -0
  257. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_identity.py +0 -0
  258. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_mesh.py +0 -0
  259. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_noise.py +0 -0
  260. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_pairing_bundle.py +0 -0
  261. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_protocol.py +0 -0
  262. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_radio.py +0 -0
  263. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ble_relay.py +0 -0
  264. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_broker_server.py +0 -0
  265. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_capabilities.py +0 -0
  266. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_capauth_failclosed.py +0 -0
  267. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_capauth_key_reconcile.py +0 -0
  268. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_capauth_resolution.py +0 -0
  269. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_capauth_revoked_expired.py +0 -0
  270. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_channel_adapter.py +0 -0
  271. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_cluster_schema.py +0 -0
  272. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_config.py +0 -0
  273. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent.py +0 -0
  274. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_ban_gate_fail_closed.py +0 -0
  275. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_banfeeds.py +0 -0
  276. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_captcha.py +0 -0
  277. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_cli.py +0 -0
  278. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_cli_mgmt.py +0 -0
  279. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_greylist.py +0 -0
  280. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_group_gate.py +0 -0
  281. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_groups.py +0 -0
  282. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_moderation.py +0 -0
  283. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_pipeline.py +0 -0
  284. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_policy.py +0 -0
  285. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_requests.py +0 -0
  286. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_runtime.py +0 -0
  287. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_tiering.py +0 -0
  288. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_consent_tokens.py +0 -0
  289. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_core_inbound_beacon_skip.py +0 -0
  290. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_core_send_federated.py +0 -0
  291. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_core_send_signed.py +0 -0
  292. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_core_stop.py +0 -0
  293. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_crypto_failclosed.py +0 -0
  294. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_crypto_suites_q0.py +0 -0
  295. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_daemon_adapter_lifecycle.py +0 -0
  296. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_deadletter_ops.py +0 -0
  297. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_delivery_semantics.py +0 -0
  298. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_discord_adapter.py +0 -0
  299. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_encrypt_fail_closed.py +0 -0
  300. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_envelope_consent_token.py +0 -0
  301. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_envelope_v1.py +0 -0
  302. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_federation.py +0 -0
  303. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_federation_integration.py +0 -0
  304. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_geo_roundtrip_skcot.py +0 -0
  305. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_codebook.py +0 -0
  306. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_codec_l0.py +0 -0
  307. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_codec_l1.py +0 -0
  308. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_codec_l2.py +0 -0
  309. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_emergent.py +0 -0
  310. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_emergent_negotiator.py +0 -0
  311. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_emergent_protocol.py +0 -0
  312. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_gloss.py +0 -0
  313. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_handshake.py +0 -0
  314. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_handshake_lexicon.py +0 -0
  315. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_macros.py +0 -0
  316. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_macros_render.py +0 -0
  317. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_message.py +0 -0
  318. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_session.py +0 -0
  319. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_session_macros.py +0 -0
  320. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_glossa_to_human.py +0 -0
  321. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_grants.py +0 -0
  322. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_home_scaffold.py +0 -0
  323. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_housekeeping.py +0 -0
  324. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_http_s2s_star_recipient.py +0 -0
  325. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_http_s2s_transport.py +0 -0
  326. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_hybrid_envelope_sig.py +0 -0
  327. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_identity_env_override.py +0 -0
  328. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_identity_key_binding.py +0 -0
  329. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_identity_realm.py +0 -0
  330. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_identity_trust_backup.py +0 -0
  331. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_integration.py +0 -0
  332. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_key_exchange_transport_scoping.py +0 -0
  333. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_knowledge.py +0 -0
  334. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_lora_addressing.py +0 -0
  335. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_lora_framing.py +0 -0
  336. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_lora_interface.py +0 -0
  337. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_lora_meshtastic_iface.py +0 -0
  338. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_lora_store.py +0 -0
  339. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_lora_transport.py +0 -0
  340. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_mailbox.py +0 -0
  341. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_mailbox_encrypt_at_rest.py +0 -0
  342. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_mailbox_recipient_key.py +0 -0
  343. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_matrix_adapter.py +0 -0
  344. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_mode_b_setup.sh +0 -0
  345. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_no_subapp_dependency.py +0 -0
  346. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_node_registry.py +0 -0
  347. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_nonce_durable.py +0 -0
  348. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_nostr_discovery.py +0 -0
  349. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_observability.py +0 -0
  350. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_operator_cli.py +0 -0
  351. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_outbox_home_alignment.py +0 -0
  352. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_outbox_migrate.py +0 -0
  353. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_p2p_connector.py +0 -0
  354. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_p2p_manager.py +0 -0
  355. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_p2p_media.py +0 -0
  356. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_p2p_session.py +0 -0
  357. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_padding.py +0 -0
  358. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pairing.py +0 -0
  359. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pairing_cli.py +0 -0
  360. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pairing_mirror.py +0 -0
  361. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_paths_scoping.py +0 -0
  362. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_peer_inbox_traversal.py +0 -0
  363. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_peers.py +0 -0
  364. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqc_cutover.py +0 -0
  365. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqc_shim.py +0 -0
  366. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqdm.py +0 -0
  367. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqdm2.py +0 -0
  368. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqdm2_interop.py +0 -0
  369. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqkem.py +0 -0
  370. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqroute.py +0 -0
  371. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqroute_padding.py +0 -0
  372. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqroute_transport.py +0 -0
  373. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_pqsig.py +0 -0
  374. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_prune_inbox.py +0 -0
  375. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_public_pairing.py +0 -0
  376. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_queue_bounds.py +0 -0
  377. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_receiver_wire_ttl_expiry.py +0 -0
  378. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_registry.py +0 -0
  379. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_registry_cli.py +0 -0
  380. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_failure_log_dedup.py +0 -0
  381. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_perm_backoff.py +0 -0
  382. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_perm_backoff_fixes.py +0 -0
  383. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_quarantine.py +0 -0
  384. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_rail_ordering.py +0 -0
  385. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_route_anon.py +0 -0
  386. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_route_signed.py +0 -0
  387. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_star_broadcast_routing.py +0 -0
  388. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_router_unsigned_excludes_https_s2s.py +0 -0
  389. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_sign_fail_closed.py +0 -0
  390. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_signaling_broker.py +0 -0
  391. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_signaling_mailbox.py +0 -0
  392. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_signaling_select.py +0 -0
  393. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_announce.py +0 -0
  394. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_cli.py +0 -0
  395. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_directory.py +0 -0
  396. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_dns.sh +0 -0
  397. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_operator_pin.py +0 -0
  398. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_readdr.py +0 -0
  399. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_resolve.py +0 -0
  400. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skfed_ssrf.py +0 -0
  401. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_skworld_manifest.py +0 -0
  402. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_slack_adapter.py +0 -0
  403. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_smoke.py +0 -0
  404. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_ssrf_guard.py +0 -0
  405. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_store_forward.py +0 -0
  406. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_syncthing_rail.py +0 -0
  407. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_syncthing_recipient_guard.py +0 -0
  408. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_telegram_adapter.py +0 -0
  409. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_tofu.py +0 -0
  410. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_typed_message_content.py +0 -0
  411. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_webrtc_bridge_lifecycle.py +0 -0
  412. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_webrtc_ice_logging.py +0 -0
  413. {skcomms-0.2.4 → skcomms-0.2.5}/tests/test_webrtc_signaling_log_dedup.py +0 -0
@@ -32,6 +32,7 @@ jobs:
32
32
  contents: write
33
33
  outputs:
34
34
  tagged: ${{ steps.bump.outputs.tagged }}
35
+ version: ${{ steps.bump.outputs.version }}
35
36
  steps:
36
37
  - uses: actions/checkout@v4
37
38
  with:
@@ -69,6 +70,7 @@ jobs:
69
70
  git tag -a "$next" -m "release: $next from main"
70
71
  git push origin "$next"
71
72
  echo "tagged=true" >> "$GITHUB_OUTPUT"
73
+ echo "version=${next#v}" >> "$GITHUB_OUTPUT"
72
74
 
73
75
  build:
74
76
  needs: [tag]
@@ -112,8 +114,25 @@ jobs:
112
114
  - uses: actions/setup-python@v5
113
115
  with:
114
116
  python-version: "3.12"
117
+ - name: Assert the version to publish is a real release
118
+ # A dev/local version (.devN, +g<sha>, 0.0.0) is rejected by PyPI with a
119
+ # 400, and by then the tag has already been cut. Fail here instead.
120
+ env:
121
+ SETUPTOOLS_SCM_PRETEND_VERSION: ${{ needs.tag.outputs.version }}
122
+ run: |
123
+ set -euo pipefail
124
+ python -m pip install --upgrade setuptools_scm >/dev/null
125
+ v="$(python -m setuptools_scm 2>/dev/null || echo unknown)"
126
+ echo "version to publish: $v"
127
+ case "$v" in
128
+ *+*|*dev*|unknown|0.0.0*)
129
+ echo "::error::refusing to publish a non-release version: $v"
130
+ exit 1 ;;
131
+ esac
115
132
  - run: python -m pip install --upgrade build twine
116
133
  - run: python -m build
134
+ env:
135
+ SETUPTOOLS_SCM_PRETEND_VERSION: ${{ needs.tag.outputs.version }}
117
136
  - run: python -m twine check dist/*
118
137
  - uses: actions/upload-artifact@v4
119
138
  with:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skcomms
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Sovereign communications for AI agents — multi-channel transport + FQID realm addressing
5
5
  Author-email: smilinTux <chefboyrdave2.1@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: skcomms
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Sovereign communications for AI agents — multi-channel transport + FQID realm addressing
5
5
  Author-email: smilinTux <chefboyrdave2.1@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -156,8 +156,6 @@ src/skcomms.egg-info/SOURCES.txt
156
156
  src/skcomms.egg-info/dependency_links.txt
157
157
  src/skcomms.egg-info/entry_points.txt
158
158
  src/skcomms.egg-info/requires.txt
159
- src/skcomms.egg-info/scm_file_list.json
160
- src/skcomms.egg-info/scm_version.json
161
159
  src/skcomms.egg-info/top_level.txt
162
160
  src/skcomms/access/__init__.py
163
161
  src/skcomms/access/audit.py
@@ -1,407 +0,0 @@
1
- {
2
- "files": [
3
- ".github/workflows/ci.yml",
4
- ".github/workflows/publish.yml",
5
- ".github/workflows/pytest.yml",
6
- ".github/workflows/qa.yml",
7
- ".github/workflows/secret-scan.yml",
8
- ".gitignore",
9
- ".gitleaks.toml",
10
- "CHANGELOG.md",
11
- "CODE_OF_CONDUCT.md",
12
- "CONTRIBUTING.md",
13
- "DEPLOY-NOTES.md",
14
- "Dockerfile",
15
- "LICENSE",
16
- "MISSION.md",
17
- "README.md",
18
- "SECURITY.md",
19
- "SOP.md",
20
- "constraints.txt",
21
- "contrib/systemd/skcomms-api.service",
22
- "contrib/systemd/skcomms-housekeep.service",
23
- "contrib/systemd/skcomms-housekeep.timer",
24
- "docs/ARCHITECTURE.md",
25
- "docs/DISCORD_SETUP.md",
26
- "docs/HANDOFF-skfed-s2s-opus-delivery.md",
27
- "docs/PAIRING.md",
28
- "docs/REVOCATION_LATENCY.md",
29
- "docs/SYNCTHING_TOPOLOGY.md",
30
- "docs/access-plane-p7.md",
31
- "docs/access-plane-p8.md",
32
- "docs/cot-bridge.md",
33
- "docs/crypto-architecture.md",
34
- "docs/deploy-plan/skcomms-bulletproof-deploy.md",
35
- "docs/federation-data-comms-architecture.md",
36
- "docs/funnel-privacy.md",
37
- "docs/mode-b-tailnet-deploy.md",
38
- "docs/node_registry.example.yml",
39
- "docs/rfcs/RFC-0001-pq-ratchet-metadata-dual-identity.md",
40
- "docs/skfed-consent-design.md",
41
- "docs/skfed-federation-guide.md",
42
- "docs/state-sync-rearch-plan.md",
43
- "docs/superpowers/plans/2026-06-10-qr-pairing.md",
44
- "docs/superpowers/plans/2026-06-13-ble-mesh-p1-core.md",
45
- "docs/superpowers/plans/2026-06-13-lora-l1-core.md",
46
- "docs/superpowers/plans/2026-06-13-skglossa-g1-core.md",
47
- "docs/superpowers/plans/2026-06-13-skglossa-g2-macro-lexicon.md",
48
- "docs/superpowers/plans/2026-06-13-skglossa-g4-emergent.md",
49
- "docs/superpowers/plans/2026-06-13-tier3-adapter-runtime.md",
50
- "docs/superpowers/specs/2026-06-13-ble-mesh-proximity-transport-design.md",
51
- "docs/superpowers/specs/2026-06-13-lora-meshtastic-transport-design.md",
52
- "docs/superpowers/specs/2026-06-13-skglossa-design.md",
53
- "docs/tak-vs-skfed-analysis.md",
54
- "pyproject.toml",
55
- "scripts/backfill_file_locations.py",
56
- "scripts/bootstrap.sh",
57
- "scripts/discord_smoke.py",
58
- "scripts/drain_orphan_outbox.py",
59
- "scripts/mode-b-setup.sh",
60
- "scripts/refresh-constraints.sh",
61
- "scripts/skfed-dns.sh",
62
- "scripts/skfed-neutral-addresses.sh",
63
- "scripts/skfed-sync-rearch.sh",
64
- "scripts/telegram_smoke.py",
65
- "scripts/templates/consent-mode.conf.tmpl",
66
- "scripts/templates/realms.yml.tmpl",
67
- "scripts/templates/tailscale-serve.sh.tmpl",
68
- "scripts/test_skfed_sync_rearch.sh",
69
- "src/skcomms/__init__.py",
70
- "src/skcomms/access/__init__.py",
71
- "src/skcomms/access/audit.py",
72
- "src/skcomms/access/config.py",
73
- "src/skcomms/access/exec.py",
74
- "src/skcomms/access/files.py",
75
- "src/skcomms/access/grants.py",
76
- "src/skcomms/access/knowledge.py",
77
- "src/skcomms/access/registry.py",
78
- "src/skcomms/access/routing.py",
79
- "src/skcomms/access/server.py",
80
- "src/skcomms/access/wiring.py",
81
- "src/skcomms/ack.py",
82
- "src/skcomms/adapters/__init__.py",
83
- "src/skcomms/adapters/base.py",
84
- "src/skcomms/adapters/discord.py",
85
- "src/skcomms/adapters/factory.py",
86
- "src/skcomms/adapters/fake.py",
87
- "src/skcomms/adapters/matrix.py",
88
- "src/skcomms/adapters/models.py",
89
- "src/skcomms/adapters/registry.py",
90
- "src/skcomms/adapters/slack.py",
91
- "src/skcomms/adapters/telegram.py",
92
- "src/skcomms/anon_queue.py",
93
- "src/skcomms/anon_transport.py",
94
- "src/skcomms/api.py",
95
- "src/skcomms/capabilities.py",
96
- "src/skcomms/capauth_validator.py",
97
- "src/skcomms/cli.py",
98
- "src/skcomms/cluster.py",
99
- "src/skcomms/compression.py",
100
- "src/skcomms/config.py",
101
- "src/skcomms/consent.py",
102
- "src/skcomms/consent_banfeeds.py",
103
- "src/skcomms/consent_captcha.py",
104
- "src/skcomms/consent_greylist.py",
105
- "src/skcomms/consent_group_gate.py",
106
- "src/skcomms/consent_groups.py",
107
- "src/skcomms/consent_moderation.py",
108
- "src/skcomms/consent_pipeline.py",
109
- "src/skcomms/consent_policy.py",
110
- "src/skcomms/consent_requests.py",
111
- "src/skcomms/consent_runtime.py",
112
- "src/skcomms/consent_tiering.py",
113
- "src/skcomms/consent_tokens.py",
114
- "src/skcomms/core.py",
115
- "src/skcomms/crypto.py",
116
- "src/skcomms/crypto_suites.py",
117
- "src/skcomms/did_router.py",
118
- "src/skcomms/discovery.py",
119
- "src/skcomms/envelope.py",
120
- "src/skcomms/federation.py",
121
- "src/skcomms/geo_seed.py",
122
- "src/skcomms/geo_store.py",
123
- "src/skcomms/glossa/__init__.py",
124
- "src/skcomms/glossa/codebook.py",
125
- "src/skcomms/glossa/codec.py",
126
- "src/skcomms/glossa/emergent.py",
127
- "src/skcomms/glossa/gloss.py",
128
- "src/skcomms/glossa/handshake.py",
129
- "src/skcomms/glossa/macros.py",
130
- "src/skcomms/glossa/message.py",
131
- "src/skcomms/glossa/session.py",
132
- "src/skcomms/grants.py",
133
- "src/skcomms/heartbeat.py",
134
- "src/skcomms/home.py",
135
- "src/skcomms/household_router.py",
136
- "src/skcomms/housekeeping.py",
137
- "src/skcomms/identity.py",
138
- "src/skcomms/integration.py",
139
- "src/skcomms/key_exchange.py",
140
- "src/skcomms/mailbox.py",
141
- "src/skcomms/marketplace.py",
142
- "src/skcomms/mcp_server.py",
143
- "src/skcomms/metrics.py",
144
- "src/skcomms/models.py",
145
- "src/skcomms/node_registry.py",
146
- "src/skcomms/nostr_discovery.py",
147
- "src/skcomms/observability.py",
148
- "src/skcomms/operator_probe.py",
149
- "src/skcomms/outbox.py",
150
- "src/skcomms/outbox_migrate.py",
151
- "src/skcomms/padding.py",
152
- "src/skcomms/pairing.py",
153
- "src/skcomms/pairing_mirror.py",
154
- "src/skcomms/paths.py",
155
- "src/skcomms/peers.py",
156
- "src/skcomms/pq_provider.py",
157
- "src/skcomms/pqdm.py",
158
- "src/skcomms/pqkem.py",
159
- "src/skcomms/pqkem_backend.py",
160
- "src/skcomms/pqroute.py",
161
- "src/skcomms/pqroute_transport.py",
162
- "src/skcomms/pqsig.py",
163
- "src/skcomms/profile_router.py",
164
- "src/skcomms/public_pairing.py",
165
- "src/skcomms/pubsub.py",
166
- "src/skcomms/pubsub_transport.py",
167
- "src/skcomms/queue.py",
168
- "src/skcomms/ratelimit.py",
169
- "src/skcomms/realm.py",
170
- "src/skcomms/registry.py",
171
- "src/skcomms/router.py",
172
- "src/skcomms/signaling.py",
173
- "src/skcomms/signing.py",
174
- "src/skcomms/skfed_announce.py",
175
- "src/skcomms/skfed_directory.py",
176
- "src/skcomms/skfed_readdr.py",
177
- "src/skcomms/skfed_resolve.py",
178
- "src/skcomms/skworld_manifest.py",
179
- "src/skcomms/souls_router.py",
180
- "src/skcomms/ssrf.py",
181
- "src/skcomms/store_forward.py",
182
- "src/skcomms/syncthing_rail.py",
183
- "src/skcomms/tofu.py",
184
- "src/skcomms/transport.py",
185
- "src/skcomms/transports/__init__.py",
186
- "src/skcomms/transports/audio_track.py",
187
- "src/skcomms/transports/ble/__init__.py",
188
- "src/skcomms/transports/ble/gatt.py",
189
- "src/skcomms/transports/ble/identity.py",
190
- "src/skcomms/transports/ble/node.py",
191
- "src/skcomms/transports/ble/noise.py",
192
- "src/skcomms/transports/ble/protocol.py",
193
- "src/skcomms/transports/ble/radio.py",
194
- "src/skcomms/transports/ble/relay.py",
195
- "src/skcomms/transports/broker_server.py",
196
- "src/skcomms/transports/file.py",
197
- "src/skcomms/transports/http_s2s.py",
198
- "src/skcomms/transports/lora/__init__.py",
199
- "src/skcomms/transports/lora/addressing.py",
200
- "src/skcomms/transports/lora/framing.py",
201
- "src/skcomms/transports/lora/interface.py",
202
- "src/skcomms/transports/lora/meshtastic_iface.py",
203
- "src/skcomms/transports/lora/store.py",
204
- "src/skcomms/transports/lora/transport.py",
205
- "src/skcomms/transports/nostr.py",
206
- "src/skcomms/transports/p2p_connector.py",
207
- "src/skcomms/transports/p2p_manager.py",
208
- "src/skcomms/transports/p2p_session.py",
209
- "src/skcomms/transports/signaling_base.py",
210
- "src/skcomms/transports/signaling_broker.py",
211
- "src/skcomms/transports/signaling_mailbox.py",
212
- "src/skcomms/transports/syncthing.py",
213
- "src/skcomms/transports/tailscale.py",
214
- "src/skcomms/transports/video_track.py",
215
- "src/skcomms/transports/webrtc.py",
216
- "src/skcomms/transports/webrtc_media.py",
217
- "src/skcomms/transports/websocket.py",
218
- "src/skcomms/trustbackup.py",
219
- "tests/__init__.py",
220
- "tests/conftest.py",
221
- "tests/fixtures/pqdm2_from_dart.json",
222
- "tests/gen_pqdm2_fixture.py",
223
- "tests/test_access_exec.py",
224
- "tests/test_access_files.py",
225
- "tests/test_access_nonce_durable.py",
226
- "tests/test_access_rbac.py",
227
- "tests/test_access_routing.py",
228
- "tests/test_access_server.py",
229
- "tests/test_access_wiring.py",
230
- "tests/test_ack_bind.py",
231
- "tests/test_adapter_factory.py",
232
- "tests/test_adapter_fake.py",
233
- "tests/test_anon_queue.py",
234
- "tests/test_anon_transport.py",
235
- "tests/test_api_access_token.py",
236
- "tests/test_api_consent.py",
237
- "tests/test_api_consent_token_gate.py",
238
- "tests/test_api_cors.py",
239
- "tests/test_api_federation_inbox.py",
240
- "tests/test_api_geo_seed.py",
241
- "tests/test_api_geo_skcot_bridge.py",
242
- "tests/test_api_geo_units.py",
243
- "tests/test_api_health.py",
244
- "tests/test_api_send_signed_wire.py",
245
- "tests/test_api_skfed_directory.py",
246
- "tests/test_backfill_file_locations.py",
247
- "tests/test_ble_fragment.py",
248
- "tests/test_ble_gatt.py",
249
- "tests/test_ble_identity.py",
250
- "tests/test_ble_mesh.py",
251
- "tests/test_ble_noise.py",
252
- "tests/test_ble_pairing_bundle.py",
253
- "tests/test_ble_protocol.py",
254
- "tests/test_ble_radio.py",
255
- "tests/test_ble_relay.py",
256
- "tests/test_broker_server.py",
257
- "tests/test_capabilities.py",
258
- "tests/test_capauth_failclosed.py",
259
- "tests/test_capauth_key_reconcile.py",
260
- "tests/test_capauth_resolution.py",
261
- "tests/test_capauth_revoked_expired.py",
262
- "tests/test_channel_adapter.py",
263
- "tests/test_cluster_schema.py",
264
- "tests/test_config.py",
265
- "tests/test_consent.py",
266
- "tests/test_consent_ban_gate_fail_closed.py",
267
- "tests/test_consent_banfeeds.py",
268
- "tests/test_consent_captcha.py",
269
- "tests/test_consent_cli.py",
270
- "tests/test_consent_cli_mgmt.py",
271
- "tests/test_consent_greylist.py",
272
- "tests/test_consent_group_gate.py",
273
- "tests/test_consent_groups.py",
274
- "tests/test_consent_moderation.py",
275
- "tests/test_consent_pipeline.py",
276
- "tests/test_consent_policy.py",
277
- "tests/test_consent_requests.py",
278
- "tests/test_consent_runtime.py",
279
- "tests/test_consent_tiering.py",
280
- "tests/test_consent_tokens.py",
281
- "tests/test_core_inbound_beacon_skip.py",
282
- "tests/test_core_send_federated.py",
283
- "tests/test_core_send_signed.py",
284
- "tests/test_core_stop.py",
285
- "tests/test_crypto_failclosed.py",
286
- "tests/test_crypto_suites_q0.py",
287
- "tests/test_daemon_adapter_lifecycle.py",
288
- "tests/test_deadletter_ops.py",
289
- "tests/test_delivery_semantics.py",
290
- "tests/test_discord_adapter.py",
291
- "tests/test_encrypt_fail_closed.py",
292
- "tests/test_envelope_consent_token.py",
293
- "tests/test_envelope_v1.py",
294
- "tests/test_federation.py",
295
- "tests/test_federation_integration.py",
296
- "tests/test_geo_roundtrip_skcot.py",
297
- "tests/test_glossa_codebook.py",
298
- "tests/test_glossa_codec_l0.py",
299
- "tests/test_glossa_codec_l1.py",
300
- "tests/test_glossa_codec_l2.py",
301
- "tests/test_glossa_emergent.py",
302
- "tests/test_glossa_emergent_negotiator.py",
303
- "tests/test_glossa_emergent_protocol.py",
304
- "tests/test_glossa_gloss.py",
305
- "tests/test_glossa_handshake.py",
306
- "tests/test_glossa_handshake_lexicon.py",
307
- "tests/test_glossa_macros.py",
308
- "tests/test_glossa_macros_render.py",
309
- "tests/test_glossa_message.py",
310
- "tests/test_glossa_session.py",
311
- "tests/test_glossa_session_macros.py",
312
- "tests/test_glossa_to_human.py",
313
- "tests/test_grants.py",
314
- "tests/test_home_scaffold.py",
315
- "tests/test_housekeeping.py",
316
- "tests/test_http_s2s_star_recipient.py",
317
- "tests/test_http_s2s_transport.py",
318
- "tests/test_hybrid_envelope_sig.py",
319
- "tests/test_identity_env_override.py",
320
- "tests/test_identity_key_binding.py",
321
- "tests/test_identity_realm.py",
322
- "tests/test_identity_trust_backup.py",
323
- "tests/test_integration.py",
324
- "tests/test_key_exchange_transport_scoping.py",
325
- "tests/test_knowledge.py",
326
- "tests/test_lora_addressing.py",
327
- "tests/test_lora_framing.py",
328
- "tests/test_lora_interface.py",
329
- "tests/test_lora_meshtastic_iface.py",
330
- "tests/test_lora_store.py",
331
- "tests/test_lora_transport.py",
332
- "tests/test_mailbox.py",
333
- "tests/test_mailbox_encrypt_at_rest.py",
334
- "tests/test_mailbox_recipient_key.py",
335
- "tests/test_matrix_adapter.py",
336
- "tests/test_mode_b_setup.sh",
337
- "tests/test_no_subapp_dependency.py",
338
- "tests/test_node_registry.py",
339
- "tests/test_nonce_durable.py",
340
- "tests/test_nostr_discovery.py",
341
- "tests/test_observability.py",
342
- "tests/test_operator_cli.py",
343
- "tests/test_outbox_home_alignment.py",
344
- "tests/test_outbox_migrate.py",
345
- "tests/test_p2p_connector.py",
346
- "tests/test_p2p_manager.py",
347
- "tests/test_p2p_media.py",
348
- "tests/test_p2p_session.py",
349
- "tests/test_padding.py",
350
- "tests/test_pairing.py",
351
- "tests/test_pairing_cli.py",
352
- "tests/test_pairing_mirror.py",
353
- "tests/test_paths_scoping.py",
354
- "tests/test_peer_inbox_traversal.py",
355
- "tests/test_peers.py",
356
- "tests/test_pqc_cutover.py",
357
- "tests/test_pqc_shim.py",
358
- "tests/test_pqdm.py",
359
- "tests/test_pqdm2.py",
360
- "tests/test_pqdm2_interop.py",
361
- "tests/test_pqkem.py",
362
- "tests/test_pqroute.py",
363
- "tests/test_pqroute_padding.py",
364
- "tests/test_pqroute_transport.py",
365
- "tests/test_pqsig.py",
366
- "tests/test_prune_inbox.py",
367
- "tests/test_public_pairing.py",
368
- "tests/test_queue_bounds.py",
369
- "tests/test_receiver_wire_ttl_expiry.py",
370
- "tests/test_registry.py",
371
- "tests/test_registry_cli.py",
372
- "tests/test_router_failure_log_dedup.py",
373
- "tests/test_router_perm_backoff.py",
374
- "tests/test_router_perm_backoff_fixes.py",
375
- "tests/test_router_quarantine.py",
376
- "tests/test_router_rail_ordering.py",
377
- "tests/test_router_route_anon.py",
378
- "tests/test_router_route_signed.py",
379
- "tests/test_router_star_broadcast_routing.py",
380
- "tests/test_router_unsigned_excludes_https_s2s.py",
381
- "tests/test_sign_fail_closed.py",
382
- "tests/test_signaling_broker.py",
383
- "tests/test_signaling_mailbox.py",
384
- "tests/test_signaling_select.py",
385
- "tests/test_skfed_announce.py",
386
- "tests/test_skfed_cli.py",
387
- "tests/test_skfed_directory.py",
388
- "tests/test_skfed_dns.sh",
389
- "tests/test_skfed_operator_pin.py",
390
- "tests/test_skfed_readdr.py",
391
- "tests/test_skfed_resolve.py",
392
- "tests/test_skfed_ssrf.py",
393
- "tests/test_skworld_manifest.py",
394
- "tests/test_slack_adapter.py",
395
- "tests/test_smoke.py",
396
- "tests/test_ssrf_guard.py",
397
- "tests/test_store_forward.py",
398
- "tests/test_syncthing_rail.py",
399
- "tests/test_syncthing_recipient_guard.py",
400
- "tests/test_telegram_adapter.py",
401
- "tests/test_tofu.py",
402
- "tests/test_typed_message_content.py",
403
- "tests/test_webrtc_bridge_lifecycle.py",
404
- "tests/test_webrtc_ice_logging.py",
405
- "tests/test_webrtc_signaling_log_dedup.py"
406
- ]
407
- }
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.2.4",
3
- "distance": 0,
4
- "node": "g0731bf8",
5
- "dirty": false,
6
- "branch": "main",
7
- "node_date": "2026-08-08"
8
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes