medre 0.1.0__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 (1132) hide show
  1. medre-0.1.0/.github/adapter-compatibility.json +59 -0
  2. medre-0.1.0/LICENSE +21 -0
  3. medre-0.1.0/MANIFEST.in +2 -0
  4. medre-0.1.0/PKG-INFO +136 -0
  5. medre-0.1.0/README.md +102 -0
  6. medre-0.1.0/docs/schemas/README.md +165 -0
  7. medre-0.1.0/docs/schemas/adapter-config.schema.json +818 -0
  8. medre-0.1.0/docs/schemas/attachment.schema.json +122 -0
  9. medre-0.1.0/docs/schemas/bridge-context.schema.json +192 -0
  10. medre-0.1.0/docs/schemas/canonical-event.schema.json +471 -0
  11. medre-0.1.0/docs/schemas/canonical-event.schema.yaml +363 -0
  12. medre-0.1.0/docs/schemas/content-access-grants.schema.sql +23 -0
  13. medre-0.1.0/docs/schemas/content-availability-decision.schema.json +90 -0
  14. medre-0.1.0/docs/schemas/content-collection-batch.schema.json +98 -0
  15. medre-0.1.0/docs/schemas/content-collection-state.schema.json +131 -0
  16. medre-0.1.0/docs/schemas/content-dependency-preview.schema.json +120 -0
  17. medre-0.1.0/docs/schemas/content-inventory.schema.json +71 -0
  18. medre-0.1.0/docs/schemas/content-retention-activation.schema.json +48 -0
  19. medre-0.1.0/docs/schemas/content-retention-epochs.schema.sql +11 -0
  20. medre-0.1.0/docs/schemas/content-retention-preview.schema.json +134 -0
  21. medre-0.1.0/docs/schemas/content-retention-status.schema.json +202 -0
  22. medre-0.1.0/docs/schemas/delivery-evidence-diagnostics.schema.sql +12 -0
  23. medre-0.1.0/docs/schemas/delivery-observation.schema.json +132 -0
  24. medre-0.1.0/docs/schemas/delivery-receipt.schema.json +212 -0
  25. medre-0.1.0/docs/schemas/delivery-result.schema.json +117 -0
  26. medre-0.1.0/docs/schemas/dev-environment.schema.json +20 -0
  27. medre-0.1.0/docs/schemas/diagnostics.schema.json +146 -0
  28. medre-0.1.0/docs/schemas/drill-step.schema.json +56 -0
  29. medre-0.1.0/docs/schemas/event-body-admission.schema.sql +9 -0
  30. medre-0.1.0/docs/schemas/event-content-collection.schema.json +63 -0
  31. medre-0.1.0/docs/schemas/event-content-release-assessment.schema.json +142 -0
  32. medre-0.1.0/docs/schemas/event-routing-facts.schema.sql +10 -0
  33. medre-0.1.0/docs/schemas/evidence-bundle.schema.json +1516 -0
  34. medre-0.1.0/docs/schemas/exact-recovery-preview.schema.json +131 -0
  35. medre-0.1.0/docs/schemas/exact-target-decision.schema.json +73 -0
  36. medre-0.1.0/docs/schemas/exact-target-preview.schema.json +126 -0
  37. medre-0.1.0/docs/schemas/examples/adapter-config-chatmail-example.json +6 -0
  38. medre-0.1.0/docs/schemas/examples/adapter-config-example.json +23 -0
  39. medre-0.1.0/docs/schemas/examples/adapter-config-lxmf-example.json +16 -0
  40. medre-0.1.0/docs/schemas/examples/adapter-config-meshcore-example.json +19 -0
  41. medre-0.1.0/docs/schemas/examples/adapter-config-meshtastic-example.json +33 -0
  42. medre-0.1.0/docs/schemas/examples/adapter-config-simplexchat-example.json +6 -0
  43. medre-0.1.0/docs/schemas/examples/adapter-config-xmpp-example.json +7 -0
  44. medre-0.1.0/docs/schemas/examples/canonical-event-example.json +71 -0
  45. medre-0.1.0/docs/schemas/examples/delivery-observation-example.json +22 -0
  46. medre-0.1.0/docs/schemas/examples/delivery-receipt-example.json +24 -0
  47. medre-0.1.0/docs/schemas/examples/delivery-result-example.json +14 -0
  48. medre-0.1.0/docs/schemas/examples/diagnostics-example.json +100 -0
  49. medre-0.1.0/docs/schemas/examples/evidence-bundle-example.json +503 -0
  50. medre-0.1.0/docs/schemas/examples/inbound-pressure-example.json +46 -0
  51. medre-0.1.0/docs/schemas/examples/readiness-report-example.json +129 -0
  52. medre-0.1.0/docs/schemas/examples/routing-config-example.json +54 -0
  53. medre-0.1.0/docs/schemas/examples/runtime-snapshot-example.json +100 -0
  54. medre-0.1.0/docs/schemas/examples/styled-text-example.json +13 -0
  55. medre-0.1.0/docs/schemas/inbound-pressure.schema.json +113 -0
  56. medre-0.1.0/docs/schemas/lifecycle-drill-report.schema.json +142 -0
  57. medre-0.1.0/docs/schemas/live-health.schema.json +109 -0
  58. medre-0.1.0/docs/schemas/native-bridge-context-expectations.schema.json +14 -0
  59. medre-0.1.0/docs/schemas/native-qualification.schema.json +85 -0
  60. medre-0.1.0/docs/schemas/operator-decision-inspection.schema.json +54 -0
  61. medre-0.1.0/docs/schemas/outbox-dispatch-snapshots.schema.sql +15 -0
  62. medre-0.1.0/docs/schemas/package-sources.schema.json +42 -0
  63. medre-0.1.0/docs/schemas/radio-attempt-inspection.schema.json +131 -0
  64. medre-0.1.0/docs/schemas/radio-attempt-metadata.schema.json +58 -0
  65. medre-0.1.0/docs/schemas/radio-attempt-progress.schema.json +89 -0
  66. medre-0.1.0/docs/schemas/radio-local-handoff.schema.json +58 -0
  67. medre-0.1.0/docs/schemas/radio-text-plan.schema.json +49 -0
  68. medre-0.1.0/docs/schemas/readiness-report.schema.json +412 -0
  69. medre-0.1.0/docs/schemas/recovery-action.schema.json +78 -0
  70. medre-0.1.0/docs/schemas/routing-config.schema.json +795 -0
  71. medre-0.1.0/docs/schemas/runtime-config.schema.json +498 -0
  72. medre-0.1.0/docs/schemas/runtime-snapshot.schema.json +69 -0
  73. medre-0.1.0/docs/schemas/sqlite-prerelease-shape.md +61 -0
  74. medre-0.1.0/docs/schemas/stopped-state-inventory.schema.json +78 -0
  75. medre-0.1.0/docs/schemas/stopped-state-snapshot.schema.json +68 -0
  76. medre-0.1.0/docs/schemas/storage-column-classification.schema.json +71 -0
  77. medre-0.1.0/docs/schemas/styled-text.schema.json +109 -0
  78. medre-0.1.0/docs/schemas/v0.1.0.freeze.json +58 -0
  79. medre-0.1.0/pyproject.toml +109 -0
  80. medre-0.1.0/setup.cfg +4 -0
  81. medre-0.1.0/setup.py +67 -0
  82. medre-0.1.0/src/medre/__init__.py +5 -0
  83. medre-0.1.0/src/medre/__main__.py +9 -0
  84. medre-0.1.0/src/medre/adapter_installation.py +78 -0
  85. medre-0.1.0/src/medre/adapter_registry.py +297 -0
  86. medre-0.1.0/src/medre/adapter_spec.py +167 -0
  87. medre-0.1.0/src/medre/adapters/__init__.py +5 -0
  88. medre-0.1.0/src/medre/adapters/_attribution_dispatch.py +73 -0
  89. medre-0.1.0/src/medre/adapters/_native_metadata.py +39 -0
  90. medre-0.1.0/src/medre/adapters/_native_metadata_dispatch.py +51 -0
  91. medre-0.1.0/src/medre/adapters/fakes/__init__.py +5 -0
  92. medre-0.1.0/src/medre/adapters/fakes/presentation.py +512 -0
  93. medre-0.1.0/src/medre/adapters/fakes/transport.py +290 -0
  94. medre-0.1.0/src/medre/adapters/metadata.py +26 -0
  95. medre-0.1.0/src/medre/cli/__init__.py +64 -0
  96. medre-0.1.0/src/medre/cli/__main__.py +5 -0
  97. medre-0.1.0/src/medre/cli/bridge_commands.py +567 -0
  98. medre-0.1.0/src/medre/cli/config_commands.py +366 -0
  99. medre-0.1.0/src/medre/cli/contrib.py +153 -0
  100. medre-0.1.0/src/medre/cli/decision_inspect.py +50 -0
  101. medre-0.1.0/src/medre/cli/dev_commands.py +86 -0
  102. medre-0.1.0/src/medre/cli/diagnostics_commands.py +320 -0
  103. medre-0.1.0/src/medre/cli/diagram_output.py +55 -0
  104. medre-0.1.0/src/medre/cli/evidence_commands.py +73 -0
  105. medre-0.1.0/src/medre/cli/exit_codes.py +19 -0
  106. medre-0.1.0/src/medre/cli/file_output.py +50 -0
  107. medre-0.1.0/src/medre/cli/help_navigation.py +108 -0
  108. medre-0.1.0/src/medre/cli/inspect_commands.py +362 -0
  109. medre-0.1.0/src/medre/cli/install_commands.py +147 -0
  110. medre-0.1.0/src/medre/cli/json.py +58 -0
  111. medre-0.1.0/src/medre/cli/main.py +1516 -0
  112. medre-0.1.0/src/medre/cli/message_preview_commands.py +65 -0
  113. medre-0.1.0/src/medre/cli/native_commands.py +360 -0
  114. medre-0.1.0/src/medre/cli/readiness_commands.py +145 -0
  115. medre-0.1.0/src/medre/cli/recover_commands.py +783 -0
  116. medre-0.1.0/src/medre/cli/replay_commands.py +381 -0
  117. medre-0.1.0/src/medre/cli/resolve_commands.py +377 -0
  118. medre-0.1.0/src/medre/cli/route_commands.py +692 -0
  119. medre-0.1.0/src/medre/cli/run_commands.py +668 -0
  120. medre-0.1.0/src/medre/cli/smoke_commands.py +248 -0
  121. medre-0.1.0/src/medre/cli/storage_commands.py +460 -0
  122. medre-0.1.0/src/medre/cli/storage_helpers.py +32 -0
  123. medre-0.1.0/src/medre/cli/trace_commands.py +227 -0
  124. medre-0.1.0/src/medre/cli/transports.py +42 -0
  125. medre-0.1.0/src/medre/config/__init__.py +14 -0
  126. medre-0.1.0/src/medre/config/_yaml.py +363 -0
  127. medre-0.1.0/src/medre/config/adapters/__init__.py +5 -0
  128. medre-0.1.0/src/medre/config/adapters/errors.py +5 -0
  129. medre-0.1.0/src/medre/config/env.py +1879 -0
  130. medre-0.1.0/src/medre/config/errors.py +46 -0
  131. medre-0.1.0/src/medre/config/identifiers.py +116 -0
  132. medre-0.1.0/src/medre/config/loader.py +1032 -0
  133. medre-0.1.0/src/medre/config/model.py +939 -0
  134. medre-0.1.0/src/medre/config/paths.py +334 -0
  135. medre-0.1.0/src/medre/config/route_expansion.py +600 -0
  136. medre-0.1.0/src/medre/config/routes.py +1774 -0
  137. medre-0.1.0/src/medre/config/sample.py +128 -0
  138. medre-0.1.0/src/medre/core/__init__.py +0 -0
  139. medre-0.1.0/src/medre/core/contracts/__init__.py +47 -0
  140. medre-0.1.0/src/medre/core/contracts/adapter.py +747 -0
  141. medre-0.1.0/src/medre/core/contracts/delivery.py +317 -0
  142. medre-0.1.0/src/medre/core/contracts/typing.py +140 -0
  143. medre-0.1.0/src/medre/core/delivery_authority.py +661 -0
  144. medre-0.1.0/src/medre/core/diagnostics/__init__.py +27 -0
  145. medre-0.1.0/src/medre/core/diagnostics/convergence/__init__.py +76 -0
  146. medre-0.1.0/src/medre/core/diagnostics/convergence/helpers.py +161 -0
  147. medre-0.1.0/src/medre/core/diagnostics/convergence/lifecycle_checks.py +532 -0
  148. medre-0.1.0/src/medre/core/diagnostics/convergence/lifecycle_convergence.py +85 -0
  149. medre-0.1.0/src/medre/core/diagnostics/convergence/lifecycle_report.py +65 -0
  150. medre-0.1.0/src/medre/core/diagnostics/convergence/orphans.py +392 -0
  151. medre-0.1.0/src/medre/core/diagnostics/convergence/recovery_convergence.py +304 -0
  152. medre-0.1.0/src/medre/core/diagnostics/convergence/summary.py +301 -0
  153. medre-0.1.0/src/medre/core/diagnostics/convergence/types.py +364 -0
  154. medre-0.1.0/src/medre/core/diagnostics/replay_metrics.py +264 -0
  155. medre-0.1.0/src/medre/core/diagnostics/snapshot.py +68 -0
  156. medre-0.1.0/src/medre/core/engine/__init__.py +22 -0
  157. medre-0.1.0/src/medre/core/engine/phases.py +42 -0
  158. medre-0.1.0/src/medre/core/engine/pipeline/__init__.py +33 -0
  159. medre-0.1.0/src/medre/core/engine/pipeline/delivery_coordinator.py +1221 -0
  160. medre-0.1.0/src/medre/core/engine/pipeline/delivery_evidence.py +89 -0
  161. medre-0.1.0/src/medre/core/engine/pipeline/delivery_feedback.py +133 -0
  162. medre-0.1.0/src/medre/core/engine/pipeline/delivery_lifecycle.py +2163 -0
  163. medre-0.1.0/src/medre/core/engine/pipeline/delivery_state.py +301 -0
  164. medre-0.1.0/src/medre/core/engine/pipeline/outbox_manager.py +646 -0
  165. medre-0.1.0/src/medre/core/engine/pipeline/radio_delivery.py +303 -0
  166. medre-0.1.0/src/medre/core/engine/pipeline/receipt_factory.py +314 -0
  167. medre-0.1.0/src/medre/core/engine/pipeline/retry_plan.py +586 -0
  168. medre-0.1.0/src/medre/core/engine/pipeline/runner.py +1674 -0
  169. medre-0.1.0/src/medre/core/engine/pipeline/target_delivery.py +1381 -0
  170. medre-0.1.0/src/medre/core/engine/replay/__init__.py +36 -0
  171. medre-0.1.0/src/medre/core/engine/replay/delivery.py +710 -0
  172. medre-0.1.0/src/medre/core/engine/replay/engine.py +355 -0
  173. medre-0.1.0/src/medre/core/engine/replay/helpers.py +91 -0
  174. medre-0.1.0/src/medre/core/engine/replay/planning.py +150 -0
  175. medre-0.1.0/src/medre/core/engine/replay/protocols.py +110 -0
  176. medre-0.1.0/src/medre/core/engine/replay/rendering.py +101 -0
  177. medre-0.1.0/src/medre/core/engine/replay/routing.py +410 -0
  178. medre-0.1.0/src/medre/core/engine/replay/selection.py +168 -0
  179. medre-0.1.0/src/medre/core/engine/replay/store.py +94 -0
  180. medre-0.1.0/src/medre/core/engine/replay/summary.py +309 -0
  181. medre-0.1.0/src/medre/core/engine/replay/types.py +374 -0
  182. medre-0.1.0/src/medre/core/events/__init__.py +110 -0
  183. medre-0.1.0/src/medre/core/events/attachments.py +450 -0
  184. medre-0.1.0/src/medre/core/events/bus.py +417 -0
  185. medre-0.1.0/src/medre/core/events/canonical.py +614 -0
  186. medre-0.1.0/src/medre/core/events/delivery.py +126 -0
  187. medre-0.1.0/src/medre/core/events/kinds.py +131 -0
  188. medre-0.1.0/src/medre/core/events/metadata.py +278 -0
  189. medre-0.1.0/src/medre/core/events/schema.py +253 -0
  190. medre-0.1.0/src/medre/core/events/text.py +236 -0
  191. medre-0.1.0/src/medre/core/evidence/__init__.py +118 -0
  192. medre-0.1.0/src/medre/core/evidence/adapter_status.py +461 -0
  193. medre-0.1.0/src/medre/core/evidence/bundle.py +233 -0
  194. medre-0.1.0/src/medre/core/evidence/capability.py +63 -0
  195. medre-0.1.0/src/medre/core/evidence/collector.py +454 -0
  196. medre-0.1.0/src/medre/core/evidence/delivery_ledger.py +500 -0
  197. medre-0.1.0/src/medre/core/evidence/failure_taxonomy.py +359 -0
  198. medre-0.1.0/src/medre/core/evidence/native_evidence.py +770 -0
  199. medre-0.1.0/src/medre/core/evidence/native_ledger_binding.py +211 -0
  200. medre-0.1.0/src/medre/core/evidence/retry_outbox.py +516 -0
  201. medre-0.1.0/src/medre/core/evidence/shutdown.py +703 -0
  202. medre-0.1.0/src/medre/core/evidence/tiers.py +152 -0
  203. medre-0.1.0/src/medre/core/identity/__init__.py +30 -0
  204. medre-0.1.0/src/medre/core/identity/actor.py +114 -0
  205. medre-0.1.0/src/medre/core/identity/resolver.py +251 -0
  206. medre-0.1.0/src/medre/core/ingress/__init__.py +51 -0
  207. medre-0.1.0/src/medre/core/ingress/content.py +195 -0
  208. medre-0.1.0/src/medre/core/ingress/types.py +122 -0
  209. medre-0.1.0/src/medre/core/ingress/worker.py +370 -0
  210. medre-0.1.0/src/medre/core/lifecycle/__init__.py +27 -0
  211. medre-0.1.0/src/medre/core/lifecycle/states.py +183 -0
  212. medre-0.1.0/src/medre/core/observability/__init__.py +71 -0
  213. medre-0.1.0/src/medre/core/observability/classification.py +160 -0
  214. medre-0.1.0/src/medre/core/observability/correlation.py +58 -0
  215. medre-0.1.0/src/medre/core/observability/exact_recovery.py +86 -0
  216. medre-0.1.0/src/medre/core/observability/exact_target.py +548 -0
  217. medre-0.1.0/src/medre/core/observability/export.py +77 -0
  218. medre-0.1.0/src/medre/core/observability/log_levels.py +18 -0
  219. medre-0.1.0/src/medre/core/observability/logging.py +475 -0
  220. medre-0.1.0/src/medre/core/observability/metrics.py +333 -0
  221. medre-0.1.0/src/medre/core/observability/recovery.py +209 -0
  222. medre-0.1.0/src/medre/core/observability/sanitization.py +234 -0
  223. medre-0.1.0/src/medre/core/planning/__init__.py +47 -0
  224. medre-0.1.0/src/medre/core/planning/capabilities.py +110 -0
  225. medre-0.1.0/src/medre/core/planning/capability_decision.py +470 -0
  226. medre-0.1.0/src/medre/core/planning/conversation_graph.py +778 -0
  227. medre-0.1.0/src/medre/core/planning/delivery_plan.py +717 -0
  228. medre-0.1.0/src/medre/core/planning/fallback_resolution.py +103 -0
  229. medre-0.1.0/src/medre/core/planning/relation_binding.py +467 -0
  230. medre-0.1.0/src/medre/core/planning/relation_enricher.py +542 -0
  231. medre-0.1.0/src/medre/core/planning/relation_resolution.py +241 -0
  232. medre-0.1.0/src/medre/core/policies/__init__.py +1 -0
  233. medre-0.1.0/src/medre/core/policies/route_policy.py +300 -0
  234. medre-0.1.0/src/medre/core/policies/startup_backlog_suppress.py +102 -0
  235. medre-0.1.0/src/medre/core/recovery/__init__.py +44 -0
  236. medre-0.1.0/src/medre/core/recovery/_helpers.py +33 -0
  237. medre-0.1.0/src/medre/core/recovery/builder.py +302 -0
  238. medre-0.1.0/src/medre/core/recovery/classification.py +252 -0
  239. medre-0.1.0/src/medre/core/recovery/models.py +233 -0
  240. medre-0.1.0/src/medre/core/recovery/radio_assessment.py +90 -0
  241. medre-0.1.0/src/medre/core/recovery/radio_observations.py +179 -0
  242. medre-0.1.0/src/medre/core/recovery/recovery_source.py +43 -0
  243. medre-0.1.0/src/medre/core/rendering/__init__.py +89 -0
  244. medre-0.1.0/src/medre/core/rendering/attribution.py +588 -0
  245. medre-0.1.0/src/medre/core/rendering/bridge_context.py +225 -0
  246. medre-0.1.0/src/medre/core/rendering/evidence.py +495 -0
  247. medre-0.1.0/src/medre/core/rendering/radio_progress.py +320 -0
  248. medre-0.1.0/src/medre/core/rendering/radio_text.py +158 -0
  249. medre-0.1.0/src/medre/core/rendering/relations.py +152 -0
  250. medre-0.1.0/src/medre/core/rendering/renderer.py +631 -0
  251. medre-0.1.0/src/medre/core/rendering/text.py +203 -0
  252. medre-0.1.0/src/medre/core/rendering/text_helpers.py +266 -0
  253. medre-0.1.0/src/medre/core/routing/__init__.py +32 -0
  254. medre-0.1.0/src/medre/core/routing/models.py +176 -0
  255. medre-0.1.0/src/medre/core/routing/router.py +299 -0
  256. medre-0.1.0/src/medre/core/routing/stats.py +187 -0
  257. medre-0.1.0/src/medre/core/storage/__init__.py +5 -0
  258. medre-0.1.0/src/medre/core/storage/backend.py +2117 -0
  259. medre-0.1.0/src/medre/core/storage/classification.py +543 -0
  260. medre-0.1.0/src/medre/core/storage/content.py +98 -0
  261. medre-0.1.0/src/medre/core/storage/content_availability.py +211 -0
  262. medre-0.1.0/src/medre/core/storage/content_ceiling.py +67 -0
  263. medre-0.1.0/src/medre/core/storage/content_retention.py +244 -0
  264. medre-0.1.0/src/medre/core/storage/dispatch_bound.py +58 -0
  265. medre-0.1.0/src/medre/core/storage/radio.py +85 -0
  266. medre-0.1.0/src/medre/core/storage/radio_handoff.py +91 -0
  267. medre-0.1.0/src/medre/core/storage/read_contracts.py +53 -0
  268. medre-0.1.0/src/medre/core/storage/sqlite/__init__.py +5 -0
  269. medre-0.1.0/src/medre/core/storage/sqlite/_attachments.py +129 -0
  270. medre-0.1.0/src/medre/core/storage/sqlite/_collection.py +274 -0
  271. medre-0.1.0/src/medre/core/storage/sqlite/_content_grants.py +932 -0
  272. medre-0.1.0/src/medre/core/storage/sqlite/_content_identity.py +208 -0
  273. medre-0.1.0/src/medre/core/storage/sqlite/_conversation.py +141 -0
  274. medre-0.1.0/src/medre/core/storage/sqlite/_count.py +511 -0
  275. medre-0.1.0/src/medre/core/storage/sqlite/_deadline_cleanup.py +358 -0
  276. medre-0.1.0/src/medre/core/storage/sqlite/_delivery_finalize.py +204 -0
  277. medre-0.1.0/src/medre/core/storage/sqlite/_event.py +195 -0
  278. medre-0.1.0/src/medre/core/storage/sqlite/_evidence_diagnostics.py +207 -0
  279. medre-0.1.0/src/medre/core/storage/sqlite/_ingress.py +639 -0
  280. medre-0.1.0/src/medre/core/storage/sqlite/_native_ref.py +156 -0
  281. medre-0.1.0/src/medre/core/storage/sqlite/_observation.py +311 -0
  282. medre-0.1.0/src/medre/core/storage/sqlite/_operator_decision.py +514 -0
  283. medre-0.1.0/src/medre/core/storage/sqlite/_outbox.py +1394 -0
  284. medre-0.1.0/src/medre/core/storage/sqlite/_prerelease_migrate.py +809 -0
  285. medre-0.1.0/src/medre/core/storage/sqlite/_pressure.py +332 -0
  286. medre-0.1.0/src/medre/core/storage/sqlite/_projections.py +125 -0
  287. medre-0.1.0/src/medre/core/storage/sqlite/_radio.py +562 -0
  288. medre-0.1.0/src/medre/core/storage/sqlite/_receipt.py +414 -0
  289. medre-0.1.0/src/medre/core/storage/sqlite/_recovery_query.py +351 -0
  290. medre-0.1.0/src/medre/core/storage/sqlite/_relation.py +127 -0
  291. medre-0.1.0/src/medre/core/storage/sqlite/_retention.py +593 -0
  292. medre-0.1.0/src/medre/core/storage/sqlite/connection.py +850 -0
  293. medre-0.1.0/src/medre/core/storage/sqlite/constants.py +15 -0
  294. medre-0.1.0/src/medre/core/storage/sqlite/ingress_sql.py +65 -0
  295. medre-0.1.0/src/medre/core/storage/sqlite/query.py +53 -0
  296. medre-0.1.0/src/medre/core/storage/sqlite/schema.py +1335 -0
  297. medre-0.1.0/src/medre/core/storage/sqlite/schema_validation.py +316 -0
  298. medre-0.1.0/src/medre/core/storage/sqlite/serde.py +319 -0
  299. medre-0.1.0/src/medre/core/storage/sqlite/statements.py +224 -0
  300. medre-0.1.0/src/medre/core/storage/sqlite/storage.py +712 -0
  301. medre-0.1.0/src/medre/core/supervision/__init__.py +50 -0
  302. medre-0.1.0/src/medre/core/supervision/accounting.py +346 -0
  303. medre-0.1.0/src/medre/core/supervision/capabilities.py +108 -0
  304. medre-0.1.0/src/medre/core/supervision/capacity.py +610 -0
  305. medre-0.1.0/src/medre/core/supervision/diagnostic_contract.py +376 -0
  306. medre-0.1.0/src/medre/core/supervision/diagnostics.py +586 -0
  307. medre-0.1.0/src/medre/core/supervision/health.py +368 -0
  308. medre-0.1.0/src/medre/core/supervision/supervision.py +333 -0
  309. medre-0.1.0/src/medre/core/supervision/typing.py +277 -0
  310. medre-0.1.0/src/medre/dev_environment.py +411 -0
  311. medre-0.1.0/src/medre/maintenance/__init__.py +1 -0
  312. medre-0.1.0/src/medre/maintenance/stopped_cli.py +173 -0
  313. medre-0.1.0/src/medre/maintenance/stopped_declare.py +811 -0
  314. medre-0.1.0/src/medre/maintenance/stopped_inventory.py +104 -0
  315. medre-0.1.0/src/medre/maintenance/stopped_snapshot.py +407 -0
  316. medre-0.1.0/src/medre/plugins/__init__.py +170 -0
  317. medre-0.1.0/src/medre/py.typed +0 -0
  318. medre-0.1.0/src/medre/runtime/__init__.py +14 -0
  319. medre-0.1.0/src/medre/runtime/adapter_preparation.py +30 -0
  320. medre-0.1.0/src/medre/runtime/app.py +3909 -0
  321. medre-0.1.0/src/medre/runtime/architecture_ast.py +503 -0
  322. medre-0.1.0/src/medre/runtime/architecture_report.py +1101 -0
  323. medre-0.1.0/src/medre/runtime/boot_summary.py +174 -0
  324. medre-0.1.0/src/medre/runtime/bridge_setup.py +270 -0
  325. medre-0.1.0/src/medre/runtime/builder.py +804 -0
  326. medre-0.1.0/src/medre/runtime/collection.py +922 -0
  327. medre-0.1.0/src/medre/runtime/drill.py +2064 -0
  328. medre-0.1.0/src/medre/runtime/errors.py +60 -0
  329. medre-0.1.0/src/medre/runtime/events.py +349 -0
  330. medre-0.1.0/src/medre/runtime/evidence/__init__.py +6 -0
  331. medre-0.1.0/src/medre/runtime/evidence/_bundle.py +253 -0
  332. medre-0.1.0/src/medre/runtime/evidence/_config_sections.py +155 -0
  333. medre-0.1.0/src/medre/runtime/evidence/_diagnostics_sections.py +365 -0
  334. medre-0.1.0/src/medre/runtime/evidence/_helpers.py +108 -0
  335. medre-0.1.0/src/medre/runtime/evidence/_recovery_sections.py +149 -0
  336. medre-0.1.0/src/medre/runtime/evidence/_storage_sections.py +812 -0
  337. medre-0.1.0/src/medre/runtime/health_reporting.py +76 -0
  338. medre-0.1.0/src/medre/runtime/message_preview.py +229 -0
  339. medre-0.1.0/src/medre/runtime/observability.py +130 -0
  340. medre-0.1.0/src/medre/runtime/readiness_report.py +647 -0
  341. medre-0.1.0/src/medre/runtime/reporting.py +248 -0
  342. medre-0.1.0/src/medre/runtime/retry.py +1807 -0
  343. medre-0.1.0/src/medre/runtime/route_diagram.py +550 -0
  344. medre-0.1.0/src/medre/runtime/route_engine.py +922 -0
  345. medre-0.1.0/src/medre/runtime/route_explain.py +161 -0
  346. medre-0.1.0/src/medre/runtime/route_plan.py +514 -0
  347. medre-0.1.0/src/medre/runtime/run_session/__init__.py +7 -0
  348. medre-0.1.0/src/medre/runtime/run_session/evidence.py +144 -0
  349. medre-0.1.0/src/medre/runtime/run_session/orchestration.py +787 -0
  350. medre-0.1.0/src/medre/runtime/run_session/report.py +175 -0
  351. medre-0.1.0/src/medre/runtime/run_session/scenario.py +282 -0
  352. medre-0.1.0/src/medre/runtime/smoke.py +663 -0
  353. medre-0.1.0/src/medre/runtime/smoke_ingress.py +126 -0
  354. medre-0.1.0/src/medre/runtime/snapshot.py +979 -0
  355. medre-0.1.0/src/medre/runtime/summaries.py +183 -0
  356. medre-0.1.0/src/medre/runtime/support_bundle.py +767 -0
  357. medre-0.1.0/src/medre/runtime/timeline.py +301 -0
  358. medre-0.1.0/src/medre/runtime/trace.py +410 -0
  359. medre-0.1.0/src/medre/runtime/typing.py +232 -0
  360. medre-0.1.0/src/medre/self_upgrade.py +267 -0
  361. medre-0.1.0/src/medre/testing/__init__.py +5 -0
  362. medre-0.1.0/src/medre/testing/fakes.py +33 -0
  363. medre-0.1.0/src/medre/testing/sdk_contract.py +79 -0
  364. medre-0.1.0/src/medre/tool_management.py +428 -0
  365. medre-0.1.0/src/medre.egg-info/PKG-INFO +136 -0
  366. medre-0.1.0/src/medre.egg-info/SOURCES.txt +1130 -0
  367. medre-0.1.0/src/medre.egg-info/dependency_links.txt +1 -0
  368. medre-0.1.0/src/medre.egg-info/entry_points.txt +2 -0
  369. medre-0.1.0/src/medre.egg-info/requires.txt +16 -0
  370. medre-0.1.0/src/medre.egg-info/top_level.txt +1 -0
  371. medre-0.1.0/tests/test_accepted_context_contract.py +437 -0
  372. medre-0.1.0/tests/test_adapter_api_version_metadata.py +35 -0
  373. medre-0.1.0/tests/test_adapter_boundary.py +1221 -0
  374. medre-0.1.0/tests/test_adapter_campaign_analysis.py +151 -0
  375. medre-0.1.0/tests/test_adapter_campaign_baseline.py +141 -0
  376. medre-0.1.0/tests/test_adapter_campaign_failures.py +25 -0
  377. medre-0.1.0/tests/test_adapter_campaign_fidelity.py +466 -0
  378. medre-0.1.0/tests/test_adapter_campaign_hardware_pause.py +98 -0
  379. medre-0.1.0/tests/test_adapter_campaign_lxmf.py +56 -0
  380. medre-0.1.0/tests/test_adapter_campaign_meshcore.py +132 -0
  381. medre-0.1.0/tests/test_adapter_campaign_plan.py +173 -0
  382. medre-0.1.0/tests/test_adapter_campaign_process.py +217 -0
  383. medre-0.1.0/tests/test_adapter_campaign_provision.py +120 -0
  384. medre-0.1.0/tests/test_adapter_campaign_readonly_evidence.py +134 -0
  385. medre-0.1.0/tests/test_adapter_campaign_recovery_evidence.py +309 -0
  386. medre-0.1.0/tests/test_adapter_campaign_tcp_gate.py +118 -0
  387. medre-0.1.0/tests/test_adapter_config_round_trip.py +202 -0
  388. medre-0.1.0/tests/test_adapter_config_union.py +146 -0
  389. medre-0.1.0/tests/test_adapter_conformance.py +634 -0
  390. medre-0.1.0/tests/test_adapter_conformance_tools.py +114 -0
  391. medre-0.1.0/tests/test_adapter_durable_admission.py +93 -0
  392. medre-0.1.0/tests/test_adapter_health.py +524 -0
  393. medre-0.1.0/tests/test_adapter_identifier_contract.py +548 -0
  394. medre-0.1.0/tests/test_adapter_installation.py +140 -0
  395. medre-0.1.0/tests/test_adapter_kind_validity.py +41 -0
  396. medre-0.1.0/tests/test_adapter_lifecycle_registry.py +662 -0
  397. medre-0.1.0/tests/test_adapter_matrix_auth_cli.py +756 -0
  398. medre-0.1.0/tests/test_adapter_parity.py +976 -0
  399. medre-0.1.0/tests/test_adapter_post_stop_ingress.py +221 -0
  400. medre-0.1.0/tests/test_adapter_registry.py +216 -0
  401. medre-0.1.0/tests/test_adapter_reporter_startup_binding.py +91 -0
  402. medre-0.1.0/tests/test_adapter_reuse_examples.py +141 -0
  403. medre-0.1.0/tests/test_adapter_reuse_imports.py +180 -0
  404. medre-0.1.0/tests/test_adapter_sdk_contract_pin_authority.py +168 -0
  405. medre-0.1.0/tests/test_adapter_shutdown_parity.py +97 -0
  406. medre-0.1.0/tests/test_adapter_source_reset.py +230 -0
  407. medre-0.1.0/tests/test_adapter_stale_guard_granularity.py +134 -0
  408. medre-0.1.0/tests/test_adapter_start_timeout_config.py +69 -0
  409. medre-0.1.0/tests/test_adapter_status_evidence.py +708 -0
  410. medre-0.1.0/tests/test_admission_routing_facts.py +758 -0
  411. medre-0.1.0/tests/test_all_adapter_campaign.py +173 -0
  412. medre-0.1.0/tests/test_app_typechecking.py +270 -0
  413. medre-0.1.0/tests/test_architecture_adapter_reuse.py +138 -0
  414. medre-0.1.0/tests/test_architecture_convergence.py +182 -0
  415. medre-0.1.0/tests/test_architecture_dependency_report.py +1288 -0
  416. medre-0.1.0/tests/test_architecture_docs_boundaries.py +113 -0
  417. medre-0.1.0/tests/test_architecture_dynamic_assembly.py +565 -0
  418. medre-0.1.0/tests/test_architecture_import_boundaries.py +118 -0
  419. medre-0.1.0/tests/test_architecture_import_io.py +433 -0
  420. medre-0.1.0/tests/test_architecture_import_side_effects.py +109 -0
  421. medre-0.1.0/tests/test_architecture_installed_adapters.py +27 -0
  422. medre-0.1.0/tests/test_architecture_lifecycle_convergence.py +341 -0
  423. medre-0.1.0/tests/test_architecture_public_api.py +520 -0
  424. medre-0.1.0/tests/test_architecture_recovery.py +164 -0
  425. medre-0.1.0/tests/test_async_cleanup.py +59 -0
  426. medre-0.1.0/tests/test_attachment_config.py +208 -0
  427. medre-0.1.0/tests/test_attachment_descriptor.py +636 -0
  428. medre-0.1.0/tests/test_attachment_schema.py +91 -0
  429. medre-0.1.0/tests/test_attachment_seam_units.py +376 -0
  430. medre-0.1.0/tests/test_attribution_dispatch_registry.py +45 -0
  431. medre-0.1.0/tests/test_bidirectional_bridge_safety.py +478 -0
  432. medre-0.1.0/tests/test_boundary_api.py +427 -0
  433. medre-0.1.0/tests/test_boundary_engine.py +266 -0
  434. medre-0.1.0/tests/test_boundary_hardening.py +1118 -0
  435. medre-0.1.0/tests/test_boundary_imports.py +272 -0
  436. medre-0.1.0/tests/test_boundary_storage.py +541 -0
  437. medre-0.1.0/tests/test_bounded_evidence_safety.py +585 -0
  438. medre-0.1.0/tests/test_bridge_context.py +417 -0
  439. medre-0.1.0/tests/test_bridge_context_transports.py +77 -0
  440. medre-0.1.0/tests/test_bridge_rendering.py +600 -0
  441. medre-0.1.0/tests/test_bridge_setup.py +265 -0
  442. medre-0.1.0/tests/test_callback_loop_robustness.py +1207 -0
  443. medre-0.1.0/tests/test_callback_provenance_mirrors.py +185 -0
  444. medre-0.1.0/tests/test_campaign_meshtastic_connections.py +99 -0
  445. medre-0.1.0/tests/test_campaign_meshtastic_peer.py +207 -0
  446. medre-0.1.0/tests/test_campaign_presentation.py +179 -0
  447. medre-0.1.0/tests/test_canonical_event_serialization.py +665 -0
  448. medre-0.1.0/tests/test_canonical_event_validation.py +781 -0
  449. medre-0.1.0/tests/test_canonical_events.py +600 -0
  450. medre-0.1.0/tests/test_capabilities.py +817 -0
  451. medre-0.1.0/tests/test_capability_audit.py +716 -0
  452. medre-0.1.0/tests/test_capability_conformance.py +313 -0
  453. medre-0.1.0/tests/test_capability_decision.py +1191 -0
  454. medre-0.1.0/tests/test_capability_decision_transport_profiles.py +324 -0
  455. medre-0.1.0/tests/test_capability_fallback_resolution.py +580 -0
  456. medre-0.1.0/tests/test_capability_field_validation.py +40 -0
  457. medre-0.1.0/tests/test_capability_pipeline_enforcement.py +1349 -0
  458. medre-0.1.0/tests/test_ci_adapter_installation.py +77 -0
  459. medre-0.1.0/tests/test_ci_adapter_matrix.py +428 -0
  460. medre-0.1.0/tests/test_ci_candidate_snapshot.py +127 -0
  461. medre-0.1.0/tests/test_ci_checkout_adapter.py +54 -0
  462. medre-0.1.0/tests/test_ci_environment.py +165 -0
  463. medre-0.1.0/tests/test_ci_quality_policy.py +29 -0
  464. medre-0.1.0/tests/test_ci_test_execution.py +250 -0
  465. medre-0.1.0/tests/test_clean_environment.py +1062 -0
  466. medre-0.1.0/tests/test_cli_adapter_dispatch.py +19 -0
  467. medre-0.1.0/tests/test_cli_bridge.py +676 -0
  468. medre-0.1.0/tests/test_cli_bridge_compatibility.py +83 -0
  469. medre-0.1.0/tests/test_cli_bridge_interaction.py +227 -0
  470. medre-0.1.0/tests/test_cli_bridge_provider_workflow.py +119 -0
  471. medre-0.1.0/tests/test_cli_command_help_hints.py +262 -0
  472. medre-0.1.0/tests/test_cli_config_and_smoke.py +1072 -0
  473. medre-0.1.0/tests/test_cli_config_commands.py +596 -0
  474. medre-0.1.0/tests/test_cli_config_selection.py +145 -0
  475. medre-0.1.0/tests/test_cli_config_workflows.py +329 -0
  476. medre-0.1.0/tests/test_cli_contrib_registry.py +216 -0
  477. medre-0.1.0/tests/test_cli_diagnostics_commands.py +504 -0
  478. medre-0.1.0/tests/test_cli_diagnostics_workflows.py +90 -0
  479. medre-0.1.0/tests/test_cli_diagram_output.py +34 -0
  480. medre-0.1.0/tests/test_cli_error_paths.py +56 -0
  481. medre-0.1.0/tests/test_cli_evidence_commands.py +889 -0
  482. medre-0.1.0/tests/test_cli_exact_target_replay_compat.py +157 -0
  483. medre-0.1.0/tests/test_cli_exact_target_surface.py +601 -0
  484. medre-0.1.0/tests/test_cli_file_output.py +147 -0
  485. medre-0.1.0/tests/test_cli_help_navigation.py +96 -0
  486. medre-0.1.0/tests/test_cli_inspect_commands.py +766 -0
  487. medre-0.1.0/tests/test_cli_inspect_flow.py +228 -0
  488. medre-0.1.0/tests/test_cli_install_metadata.py +314 -0
  489. medre-0.1.0/tests/test_cli_json_helper.py +86 -0
  490. medre-0.1.0/tests/test_cli_json_output.py +369 -0
  491. medre-0.1.0/tests/test_cli_operator_surface.py +744 -0
  492. medre-0.1.0/tests/test_cli_parser.py +79 -0
  493. medre-0.1.0/tests/test_cli_provider_isolation.py +113 -0
  494. medre-0.1.0/tests/test_cli_radio_attempt.py +99 -0
  495. medre-0.1.0/tests/test_cli_replay_flow.py +798 -0
  496. medre-0.1.0/tests/test_cli_replay_surface.py +1069 -0
  497. medre-0.1.0/tests/test_cli_replay_teardown.py +213 -0
  498. medre-0.1.0/tests/test_cli_route_commands.py +435 -0
  499. medre-0.1.0/tests/test_cli_route_diagram_usability.py +104 -0
  500. medre-0.1.0/tests/test_cli_route_workflows.py +85 -0
  501. medre-0.1.0/tests/test_cli_run_commands.py +449 -0
  502. medre-0.1.0/tests/test_cli_run_workflows.py +590 -0
  503. medre-0.1.0/tests/test_cli_scenario_crosscheck.py +618 -0
  504. medre-0.1.0/tests/test_cli_signal_shutdown.py +446 -0
  505. medre-0.1.0/tests/test_cli_smoke_mode_contract.py +108 -0
  506. medre-0.1.0/tests/test_cli_smoke_run_session.py +317 -0
  507. medre-0.1.0/tests/test_cli_storage_commands.py +790 -0
  508. medre-0.1.0/tests/test_cli_support_bundle.py +270 -0
  509. medre-0.1.0/tests/test_cli_transports.py +139 -0
  510. medre-0.1.0/tests/test_collection_candidate_paging.py +709 -0
  511. medre-0.1.0/tests/test_collection_invariants.py +226 -0
  512. medre-0.1.0/tests/test_collection_routed_cli.py +202 -0
  513. medre-0.1.0/tests/test_collection_routed_gate.py +775 -0
  514. medre-0.1.0/tests/test_command_surface_and_status_consistency.py +972 -0
  515. medre-0.1.0/tests/test_community_adapter_contract.py +186 -0
  516. medre-0.1.0/tests/test_concurrent_bridge_ingress.py +529 -0
  517. medre-0.1.0/tests/test_concurrent_ordering.py +422 -0
  518. medre-0.1.0/tests/test_config_env.py +1288 -0
  519. medre-0.1.0/tests/test_config_env_attachments.py +201 -0
  520. medre-0.1.0/tests/test_config_env_first.py +1214 -0
  521. medre-0.1.0/tests/test_config_env_registry.py +34 -0
  522. medre-0.1.0/tests/test_config_env_retry.py +146 -0
  523. medre-0.1.0/tests/test_config_env_route_origin_label.py +207 -0
  524. medre-0.1.0/tests/test_config_env_runtime.py +179 -0
  525. medre-0.1.0/tests/test_config_loader.py +1128 -0
  526. medre-0.1.0/tests/test_config_loader_registry.py +89 -0
  527. medre-0.1.0/tests/test_config_model.py +367 -0
  528. medre-0.1.0/tests/test_config_paths.py +416 -0
  529. medre-0.1.0/tests/test_config_repair.py +412 -0
  530. medre-0.1.0/tests/test_config_runtime_parity.py +518 -0
  531. medre-0.1.0/tests/test_config_yaml_discovery.py +437 -0
  532. medre-0.1.0/tests/test_config_yaml_loader.py +63 -0
  533. medre-0.1.0/tests/test_config_yaml_strict.py +572 -0
  534. medre-0.1.0/tests/test_container_runtime.py +660 -0
  535. medre-0.1.0/tests/test_content_additive_upgrade.py +302 -0
  536. medre-0.1.0/tests/test_content_availability_policy.py +369 -0
  537. medre-0.1.0/tests/test_content_collection.py +339 -0
  538. medre-0.1.0/tests/test_content_collection_cli.py +207 -0
  539. medre-0.1.0/tests/test_content_collection_projection.py +276 -0
  540. medre-0.1.0/tests/test_content_collection_runtime_wiring.py +347 -0
  541. medre-0.1.0/tests/test_content_collection_worker.py +1159 -0
  542. medre-0.1.0/tests/test_content_dependency_authority.py +593 -0
  543. medre-0.1.0/tests/test_content_dependency_preview.py +156 -0
  544. medre-0.1.0/tests/test_content_dependency_runtime.py +42 -0
  545. medre-0.1.0/tests/test_content_dispatch_authority_races.py +184 -0
  546. medre-0.1.0/tests/test_content_dispatch_fence.py +467 -0
  547. medre-0.1.0/tests/test_content_grant_errors.py +98 -0
  548. medre-0.1.0/tests/test_content_grants_storage.py +254 -0
  549. medre-0.1.0/tests/test_content_inventory.py +210 -0
  550. medre-0.1.0/tests/test_content_lifecycle_clock_policy.py +792 -0
  551. medre-0.1.0/tests/test_content_lifecycle_operators.py +312 -0
  552. medre-0.1.0/tests/test_content_lifecycle_races.py +1176 -0
  553. medre-0.1.0/tests/test_content_read_boundaries.py +336 -0
  554. medre-0.1.0/tests/test_content_read_gaps.py +134 -0
  555. medre-0.1.0/tests/test_content_read_mediation.py +150 -0
  556. medre-0.1.0/tests/test_content_release_assessment.py +297 -0
  557. medre-0.1.0/tests/test_content_retention_cli.py +577 -0
  558. medre-0.1.0/tests/test_content_retention_policy.py +958 -0
  559. medre-0.1.0/tests/test_content_schema_documents.py +65 -0
  560. medre-0.1.0/tests/test_context_map_context_labels.py +382 -0
  561. medre-0.1.0/tests/test_context_map_duplicate_context_fanin.py +348 -0
  562. medre-0.1.0/tests/test_context_map_env_override.py +124 -0
  563. medre-0.1.0/tests/test_context_map_label_direction.py +404 -0
  564. medre-0.1.0/tests/test_context_map_yaml_shapes.py +231 -0
  565. medre-0.1.0/tests/test_convergence_diagnostics.py +1087 -0
  566. medre-0.1.0/tests/test_convergence_orphan_report.py +686 -0
  567. medre-0.1.0/tests/test_conversation_graph_authority.py +621 -0
  568. medre-0.1.0/tests/test_conversation_graph_cross_transport.py +922 -0
  569. medre-0.1.0/tests/test_conversation_projection_architecture.py +120 -0
  570. medre-0.1.0/tests/test_conversation_projection_convergence.py +792 -0
  571. medre-0.1.0/tests/test_core_import_side_effects.py +27 -0
  572. medre-0.1.0/tests/test_core_independence.py +41 -0
  573. medre-0.1.0/tests/test_core_reliability_bounded_fanout.py +173 -0
  574. medre-0.1.0/tests/test_core_reliability_replay.py +509 -0
  575. medre-0.1.0/tests/test_core_sharding.py +79 -0
  576. medre-0.1.0/tests/test_cross_adapter_relation_fallback.py +754 -0
  577. medre-0.1.0/tests/test_cross_message_delivery_isolation.py +132 -0
  578. medre-0.1.0/tests/test_cross_transport_boundaries.py +1166 -0
  579. medre-0.1.0/tests/test_deadline_cleanup_fence.py +963 -0
  580. medre-0.1.0/tests/test_deadline_sweep_wiring.py +541 -0
  581. medre-0.1.0/tests/test_delivery.py +1343 -0
  582. medre-0.1.0/tests/test_delivery_attempt_provenance.py +242 -0
  583. medre-0.1.0/tests/test_delivery_authority.py +1123 -0
  584. medre-0.1.0/tests/test_delivery_coordinator_architecture.py +213 -0
  585. medre-0.1.0/tests/test_delivery_coordinator_resources.py +456 -0
  586. medre-0.1.0/tests/test_delivery_deadline_producers.py +914 -0
  587. medre-0.1.0/tests/test_delivery_evidence_diagnostics.py +745 -0
  588. medre-0.1.0/tests/test_delivery_evidence_unification.py +1430 -0
  589. medre-0.1.0/tests/test_delivery_failure_kind.py +103 -0
  590. medre-0.1.0/tests/test_delivery_logging.py +77 -0
  591. medre-0.1.0/tests/test_delivery_observation_model.py +52 -0
  592. medre-0.1.0/tests/test_delivery_observations.py +663 -0
  593. medre-0.1.0/tests/test_delivery_outcome_ledger.py +1250 -0
  594. medre-0.1.0/tests/test_delivery_outcome_sequence_authority.py +168 -0
  595. medre-0.1.0/tests/test_delivery_receipt_factory.py +421 -0
  596. medre-0.1.0/tests/test_delivery_state.py +617 -0
  597. medre-0.1.0/tests/test_delivery_state_projection.py +134 -0
  598. medre-0.1.0/tests/test_delivery_strategy_fallback_scenarios.py +926 -0
  599. medre-0.1.0/tests/test_delivery_strategy_fallback_transport.py +680 -0
  600. medre-0.1.0/tests/test_delivery_strategy_pipeline_skip.py +484 -0
  601. medre-0.1.0/tests/test_delivery_target_identity.py +198 -0
  602. medre-0.1.0/tests/test_deployment_boundaries.py +963 -0
  603. medre-0.1.0/tests/test_deployment_paths.py +682 -0
  604. medre-0.1.0/tests/test_deterministic_messaging.py +247 -0
  605. medre-0.1.0/tests/test_dev_environment.py +831 -0
  606. medre-0.1.0/tests/test_diagnostic_contract.py +1220 -0
  607. medre-0.1.0/tests/test_diagnostic_session_projection.py +105 -0
  608. medre-0.1.0/tests/test_diagnostics_realism.py +1173 -0
  609. medre-0.1.0/tests/test_direct_provider_policy_contract.py +96 -0
  610. medre-0.1.0/tests/test_dispatch_start_deadline_fence.py +913 -0
  611. medre-0.1.0/tests/test_distribution_license.py +18 -0
  612. medre-0.1.0/tests/test_docker_artifact_core.py +733 -0
  613. medre-0.1.0/tests/test_docker_artifact_honesty.py +223 -0
  614. medre-0.1.0/tests/test_docker_artifact_metadata.py +769 -0
  615. medre-0.1.0/tests/test_docker_artifact_plan.py +231 -0
  616. medre-0.1.0/tests/test_docker_campaign_lab.py +499 -0
  617. medre-0.1.0/tests/test_docs_bringup_runbook.py +399 -0
  618. medre-0.1.0/tests/test_docs_command_surface.py +217 -0
  619. medre-0.1.0/tests/test_docs_fake_smoke_consistency.py +34 -0
  620. medre-0.1.0/tests/test_docs_git_installation.py +76 -0
  621. medre-0.1.0/tests/test_docs_inspect_first.py +287 -0
  622. medre-0.1.0/tests/test_docs_lifecycle_authority.py +1164 -0
  623. medre-0.1.0/tests/test_docs_links.py +438 -0
  624. medre-0.1.0/tests/test_docs_migration_expiry_wording.py +260 -0
  625. medre-0.1.0/tests/test_docs_misc_consistency.py +484 -0
  626. medre-0.1.0/tests/test_docs_navigation_contract.py +104 -0
  627. medre-0.1.0/tests/test_docs_no_internal_planning_language.py +204 -0
  628. medre-0.1.0/tests/test_docs_pipeline_phases.py +136 -0
  629. medre-0.1.0/tests/test_docs_schema_drift.py +429 -0
  630. medre-0.1.0/tests/test_docs_schema_examples.py +1329 -0
  631. medre-0.1.0/tests/test_docs_security.py +86 -0
  632. medre-0.1.0/tests/test_docs_single_authority.py +156 -0
  633. medre-0.1.0/tests/test_docs_spec_structure.py +348 -0
  634. medre-0.1.0/tests/test_docs_status_vocabulary.py +287 -0
  635. medre-0.1.0/tests/test_docs_storage_path_workflow.py +159 -0
  636. medre-0.1.0/tests/test_drill_integrity.py +198 -0
  637. medre-0.1.0/tests/test_drill_route_target.py +120 -0
  638. medre-0.1.0/tests/test_drill_smoke.py +1358 -0
  639. medre-0.1.0/tests/test_drill_storage_errors.py +265 -0
  640. medre-0.1.0/tests/test_drill_transport_assignments.py +192 -0
  641. medre-0.1.0/tests/test_durable_fanout_recovery.py +163 -0
  642. medre-0.1.0/tests/test_durable_ingress_crash_recovery.py +160 -0
  643. medre-0.1.0/tests/test_durable_ingress_pipeline.py +415 -0
  644. medre-0.1.0/tests/test_durable_ingress_runtime.py +181 -0
  645. medre-0.1.0/tests/test_durable_ingress_storage.py +574 -0
  646. medre-0.1.0/tests/test_durable_ingress_worker.py +493 -0
  647. medre-0.1.0/tests/test_encrypted_campaign.py +367 -0
  648. medre-0.1.0/tests/test_end_to_end.py +377 -0
  649. medre-0.1.0/tests/test_env_only_delivery_evidence.py +344 -0
  650. medre-0.1.0/tests/test_env_only_deployment.py +409 -0
  651. medre-0.1.0/tests/test_env_only_evidence_cli.py +654 -0
  652. medre-0.1.0/tests/test_env_only_reliability.py +467 -0
  653. medre-0.1.0/tests/test_environment_reproducibility.py +756 -0
  654. medre-0.1.0/tests/test_event_contract_boundaries.py +39 -0
  655. medre-0.1.0/tests/test_event_handler_typing.py +50 -0
  656. medre-0.1.0/tests/test_event_timeline_replay_admission.py +96 -0
  657. medre-0.1.0/tests/test_evidence_bundle.py +891 -0
  658. medre-0.1.0/tests/test_evidence_bundle_convergence.py +703 -0
  659. medre-0.1.0/tests/test_evidence_bundle_defensive.py +420 -0
  660. medre-0.1.0/tests/test_evidence_cli.py +1367 -0
  661. medre-0.1.0/tests/test_evidence_coherence_contract.py +1028 -0
  662. medre-0.1.0/tests/test_evidence_operator_diagnostics.py +955 -0
  663. medre-0.1.0/tests/test_evidence_package_boundary.py +76 -0
  664. medre-0.1.0/tests/test_evidence_parity_audit.py +907 -0
  665. medre-0.1.0/tests/test_evidence_suppression.py +1005 -0
  666. medre-0.1.0/tests/test_evidence_target_keyed.py +1462 -0
  667. medre-0.1.0/tests/test_evidence_tier_labels.py +587 -0
  668. medre-0.1.0/tests/test_evidence_trace_agreement.py +464 -0
  669. medre-0.1.0/tests/test_exact_recovery_preview.py +355 -0
  670. medre-0.1.0/tests/test_exact_target_adversarial_qualification.py +1201 -0
  671. medre-0.1.0/tests/test_exact_target_decision_authority.py +549 -0
  672. medre-0.1.0/tests/test_exact_target_execution_selection.py +909 -0
  673. medre-0.1.0/tests/test_exact_target_preview.py +829 -0
  674. medre-0.1.0/tests/test_example_configs.py +1296 -0
  675. medre-0.1.0/tests/test_export_qualified_stack.py +168 -0
  676. medre-0.1.0/tests/test_extended_longrun_soak.py +1285 -0
  677. medre-0.1.0/tests/test_external_adapter_discovery.py +175 -0
  678. medre-0.1.0/tests/test_failure_taxonomy.py +489 -0
  679. medre-0.1.0/tests/test_fake_adapter_ingress_equivalence.py +349 -0
  680. medre-0.1.0/tests/test_fake_adapters.py +816 -0
  681. medre-0.1.0/tests/test_fake_bridge_smoke.py +1364 -0
  682. medre-0.1.0/tests/test_fake_capability_declarations.py +26 -0
  683. medre-0.1.0/tests/test_fake_fidelity_knobs.py +160 -0
  684. medre-0.1.0/tests/test_fake_meshtastic_startup_backlog.py +437 -0
  685. medre-0.1.0/tests/test_fake_runtime_smoke.py +1081 -0
  686. medre-0.1.0/tests/test_fake_runtime_soak.py +286 -0
  687. medre-0.1.0/tests/test_fake_runtime_startup_snapshot.py +311 -0
  688. medre-0.1.0/tests/test_fallback_target_selection_rules.py +342 -0
  689. medre-0.1.0/tests/test_fanout_source_exclusion.py +266 -0
  690. medre-0.1.0/tests/test_fidelity_presentation.py +140 -0
  691. medre-0.1.0/tests/test_fourway_recovery_campaign.py +161 -0
  692. medre-0.1.0/tests/test_generic_adapter_config.py +41 -0
  693. medre-0.1.0/tests/test_guided_native_and_explain.py +529 -0
  694. medre-0.1.0/tests/test_import_scanner_entrypoints.py +28 -0
  695. medre-0.1.0/tests/test_inbound_admission_gate.py +492 -0
  696. medre-0.1.0/tests/test_inbound_pressure_evidence.py +739 -0
  697. medre-0.1.0/tests/test_inbound_pressure_outage_gap.py +1099 -0
  698. medre-0.1.0/tests/test_independent_content_authority.py +251 -0
  699. medre-0.1.0/tests/test_inline_diagnostic_prerelease_upgrade.py +223 -0
  700. medre-0.1.0/tests/test_inspect_consolidation_semantics.py +1049 -0
  701. medre-0.1.0/tests/test_installed_package_proof.py +270 -0
  702. medre-0.1.0/tests/test_integration_image_alignment.py +229 -0
  703. medre-0.1.0/tests/test_lifecycle_audit_compliance.py +756 -0
  704. medre-0.1.0/tests/test_lifecycle_convergence.py +1077 -0
  705. medre-0.1.0/tests/test_lifecycle_states.py +260 -0
  706. medre-0.1.0/tests/test_live_fault_bounds.py +314 -0
  707. medre-0.1.0/tests/test_live_harness.py +555 -0
  708. medre-0.1.0/tests/test_live_health_refresh.py +954 -0
  709. medre-0.1.0/tests/test_live_matrix_meshtastic_bridge.py +360 -0
  710. medre-0.1.0/tests/test_live_matrix_radio_bridge.py +647 -0
  711. medre-0.1.0/tests/test_live_mesh_interop_bridge.py +568 -0
  712. medre-0.1.0/tests/test_live_peer_common.py +155 -0
  713. medre-0.1.0/tests/test_local_operator_resolution.py +345 -0
  714. medre-0.1.0/tests/test_logging.py +1214 -0
  715. medre-0.1.0/tests/test_logging_console.py +169 -0
  716. medre-0.1.0/tests/test_longrun_bidirectional_bridge.py +210 -0
  717. medre-0.1.0/tests/test_longrun_evidence_integrity.py +796 -0
  718. medre-0.1.0/tests/test_longrun_fanout_failure_session.py +509 -0
  719. medre-0.1.0/tests/test_longrun_soak.py +1029 -0
  720. medre-0.1.0/tests/test_longrun_stability_v3.py +1068 -0
  721. medre-0.1.0/tests/test_loop_prevention_persistence.py +500 -0
  722. medre-0.1.0/tests/test_lxmf_bridge_live.py +584 -0
  723. medre-0.1.0/tests/test_lxmf_core_replay_sender.py +107 -0
  724. medre-0.1.0/tests/test_lxmf_evidence_diagnostics.py +323 -0
  725. medre-0.1.0/tests/test_lxmf_pair_live.py +784 -0
  726. medre-0.1.0/tests/test_lxmf_pair_opt_in.py +170 -0
  727. medre-0.1.0/tests/test_lxmf_renderer.py +1126 -0
  728. medre-0.1.0/tests/test_lxmf_scenario_ownership.py +64 -0
  729. medre-0.1.0/tests/test_lxmf_sdk_parity.py +592 -0
  730. medre-0.1.0/tests/test_lxmf_transport_setup_docs.py +52 -0
  731. medre-0.1.0/tests/test_lxmf_wrapper_ingress.py +492 -0
  732. medre-0.1.0/tests/test_matrix_attachment_harness_cleanup.py +86 -0
  733. medre-0.1.0/tests/test_matrix_evidence_diagnostics.py +327 -0
  734. medre-0.1.0/tests/test_matrix_reaction_mmrelay.py +787 -0
  735. medre-0.1.0/tests/test_matrix_reaction_mmrelay_mapped.py +210 -0
  736. medre-0.1.0/tests/test_matrix_relay_attribution.py +821 -0
  737. medre-0.1.0/tests/test_matrix_renderer.py +1040 -0
  738. medre-0.1.0/tests/test_matrix_runtime_supervision.py +589 -0
  739. medre-0.1.0/tests/test_matrix_wrapper_ingress.py +338 -0
  740. medre-0.1.0/tests/test_matrix_xmpp_reference_journey.py +310 -0
  741. medre-0.1.0/tests/test_mesh_interop_pipeline.py +491 -0
  742. medre-0.1.0/tests/test_meshcore_evidence_diagnostics.py +326 -0
  743. medre-0.1.0/tests/test_meshcore_meshtastic_bridge_live.py +388 -0
  744. medre-0.1.0/tests/test_meshcore_pair_live.py +448 -0
  745. medre-0.1.0/tests/test_meshcore_renderer.py +1359 -0
  746. medre-0.1.0/tests/test_meshcore_wrapper_ingress.py +397 -0
  747. medre-0.1.0/tests/test_meshtastic_attribution_prefix.py +298 -0
  748. medre-0.1.0/tests/test_meshtastic_namespaced_metadata.py +277 -0
  749. medre-0.1.0/tests/test_meshtastic_relation_mapping.py +1167 -0
  750. medre-0.1.0/tests/test_meshtastic_relation_mapping_r2r.py +740 -0
  751. medre-0.1.0/tests/test_meshtastic_renderer_extra.py +1374 -0
  752. medre-0.1.0/tests/test_meshtastic_renderer_relations.py +1073 -0
  753. medre-0.1.0/tests/test_meshtastic_resilience_config.py +145 -0
  754. medre-0.1.0/tests/test_meshtastic_runtime_multi.py +357 -0
  755. medre-0.1.0/tests/test_meshtastic_wrapper_ingress.py +206 -0
  756. medre-0.1.0/tests/test_meshtasticd_replay_ci_contract.py +57 -0
  757. medre-0.1.0/tests/test_message_preview.py +311 -0
  758. medre-0.1.0/tests/test_message_preview_native_renderers.py +57 -0
  759. medre-0.1.0/tests/test_metrics_export.py +41 -0
  760. medre-0.1.0/tests/test_mixed_adapter_longrun_bridge.py +519 -0
  761. medre-0.1.0/tests/test_mixed_failure_under_traffic.py +510 -0
  762. medre-0.1.0/tests/test_mixed_sqlite_measurement.py +95 -0
  763. medre-0.1.0/tests/test_mixed_stopped_installation.py +230 -0
  764. medre-0.1.0/tests/test_mmrelay_isolation.py +329 -0
  765. medre-0.1.0/tests/test_mmrelay_rendering_compatibility.py +73 -0
  766. medre-0.1.0/tests/test_mmrelay_sender_name_resolution.py +118 -0
  767. medre-0.1.0/tests/test_multi_adapter_runtime.py +668 -0
  768. medre-0.1.0/tests/test_mutable_diagnostic_transitions.py +279 -0
  769. medre-0.1.0/tests/test_mutation_delivery_authority.py +473 -0
  770. medre-0.1.0/tests/test_native_adapter_campaign_live.py +40 -0
  771. medre-0.1.0/tests/test_native_destination_ownership.py +88 -0
  772. medre-0.1.0/tests/test_native_dispatch_shutdown.py +169 -0
  773. medre-0.1.0/tests/test_native_encrypted_campaign_live.py +20 -0
  774. medre-0.1.0/tests/test_native_evidence_index.py +69 -0
  775. medre-0.1.0/tests/test_native_evidence_ledger_binding.py +462 -0
  776. medre-0.1.0/tests/test_native_fidelity_campaign_live.py +43 -0
  777. medre-0.1.0/tests/test_native_metadata_dispatch.py +86 -0
  778. medre-0.1.0/tests/test_native_qualification_artifacts.py +384 -0
  779. medre-0.1.0/tests/test_native_qualification_contract.py +109 -0
  780. medre-0.1.0/tests/test_native_recovery_campaign_live.py +27 -0
  781. medre-0.1.0/tests/test_native_ref_suppression_contract.py +459 -0
  782. medre-0.1.0/tests/test_native_setup_instructions.py +412 -0
  783. medre-0.1.0/tests/test_native_setup_safety.py +175 -0
  784. medre-0.1.0/tests/test_native_snapshot_paths.py +96 -0
  785. medre-0.1.0/tests/test_observability_correlation.py +95 -0
  786. medre-0.1.0/tests/test_operational_boundaries.py +871 -0
  787. medre-0.1.0/tests/test_operator_decision_inspection.py +208 -0
  788. medre-0.1.0/tests/test_operator_failures.py +1118 -0
  789. medre-0.1.0/tests/test_operator_recovery.py +295 -0
  790. medre-0.1.0/tests/test_operator_resolution_authority.py +365 -0
  791. medre-0.1.0/tests/test_operator_support_bundle.py +1319 -0
  792. medre-0.1.0/tests/test_operator_support_bundle_redaction.py +348 -0
  793. medre-0.1.0/tests/test_optional_sdk_availability.py +77 -0
  794. medre-0.1.0/tests/test_ordinary_text_collection.py +705 -0
  795. medre-0.1.0/tests/test_origin_label_precedence.py +711 -0
  796. medre-0.1.0/tests/test_orphan_recovery_merge.py +799 -0
  797. medre-0.1.0/tests/test_outbound_native_ref.py +122 -0
  798. medre-0.1.0/tests/test_outbox_creation_read_failure.py +48 -0
  799. medre-0.1.0/tests/test_outbox_generation_allocation.py +270 -0
  800. medre-0.1.0/tests/test_outbox_initial_dispatch.py +697 -0
  801. medre-0.1.0/tests/test_outbox_poll_cost.py +156 -0
  802. medre-0.1.0/tests/test_outbox_race_model.py +259 -0
  803. medre-0.1.0/tests/test_outbox_route_decision_metadata.py +192 -0
  804. medre-0.1.0/tests/test_outbox_snapshot_owner_invariants.py +254 -0
  805. medre-0.1.0/tests/test_outbox_snapshot_reconstruction.py +597 -0
  806. medre-0.1.0/tests/test_outbox_snapshot_validation.py +153 -0
  807. medre-0.1.0/tests/test_outbox_work_snapshots.py +895 -0
  808. medre-0.1.0/tests/test_packaging_and_install_contract.py +1095 -0
  809. medre-0.1.0/tests/test_persisted_body_identity.py +257 -0
  810. medre-0.1.0/tests/test_persistence_authority_docs.py +249 -0
  811. medre-0.1.0/tests/test_persistence_authority_evidence.py +287 -0
  812. medre-0.1.0/tests/test_persistence_authority_recovery.py +259 -0
  813. medre-0.1.0/tests/test_persistence_authority_replay.py +386 -0
  814. medre-0.1.0/tests/test_persistence_authority_storage.py +583 -0
  815. medre-0.1.0/tests/test_pin_drift_workflow.py +76 -0
  816. medre-0.1.0/tests/test_pipeline_capacity.py +323 -0
  817. medre-0.1.0/tests/test_pipeline_conformance.py +663 -0
  818. medre-0.1.0/tests/test_pipeline_delivery.py +1196 -0
  819. medre-0.1.0/tests/test_pipeline_failure_taxonomy.py +1128 -0
  820. medre-0.1.0/tests/test_pipeline_fanout.py +416 -0
  821. medre-0.1.0/tests/test_pipeline_ingress_cache.py +989 -0
  822. medre-0.1.0/tests/test_pipeline_live_replay_parity.py +698 -0
  823. medre-0.1.0/tests/test_pipeline_native_ref_loop_prevention.py +1144 -0
  824. medre-0.1.0/tests/test_pipeline_native_refs.py +1401 -0
  825. medre-0.1.0/tests/test_pipeline_native_refs_enrichment.py +1418 -0
  826. medre-0.1.0/tests/test_pipeline_outbox.py +1355 -0
  827. medre-0.1.0/tests/test_pipeline_outbox_coverage.py +526 -0
  828. medre-0.1.0/tests/test_pipeline_outbox_ownership.py +990 -0
  829. medre-0.1.0/tests/test_pipeline_phases.py +373 -0
  830. medre-0.1.0/tests/test_pipeline_plan_skip.py +148 -0
  831. medre-0.1.0/tests/test_pipeline_route_policy.py +1047 -0
  832. medre-0.1.0/tests/test_pipeline_running_state.py +213 -0
  833. medre-0.1.0/tests/test_pipeline_suppression_no_send.py +769 -0
  834. medre-0.1.0/tests/test_pipeline_typechecking.py +92 -0
  835. medre-0.1.0/tests/test_plan_authority_integration.py +443 -0
  836. medre-0.1.0/tests/test_prefix_formatting_exceptions.py +141 -0
  837. medre-0.1.0/tests/test_prefix_origin_label.py +224 -0
  838. medre-0.1.0/tests/test_prefix_truncation_variables.py +91 -0
  839. medre-0.1.0/tests/test_prerelease_contract_guards.py +176 -0
  840. medre-0.1.0/tests/test_prerelease_schema_migration.py +673 -0
  841. medre-0.1.0/tests/test_prerelease_storage_reset.py +557 -0
  842. medre-0.1.0/tests/test_prerelease_strict_shape.py +207 -0
  843. medre-0.1.0/tests/test_pressure_collector_session_lifecycle.py +250 -0
  844. medre-0.1.0/tests/test_pressure_restart_soak.py +153 -0
  845. medre-0.1.0/tests/test_producer_pressure_report.py +578 -0
  846. medre-0.1.0/tests/test_programmatic_runtime_config_guards.py +74 -0
  847. medre-0.1.0/tests/test_queue_boundaries.py +805 -0
  848. medre-0.1.0/tests/test_radio_attempt_metadata.py +68 -0
  849. medre-0.1.0/tests/test_radio_continuation.py +522 -0
  850. medre-0.1.0/tests/test_radio_continuation_assessment.py +276 -0
  851. medre-0.1.0/tests/test_radio_delivery.py +535 -0
  852. medre-0.1.0/tests/test_radio_matrix_evidence.py +106 -0
  853. medre-0.1.0/tests/test_radio_matrix_opt_in.py +53 -0
  854. medre-0.1.0/tests/test_radio_message_matrix_live.py +1466 -0
  855. medre-0.1.0/tests/test_radio_packet_observations.py +281 -0
  856. medre-0.1.0/tests/test_radio_progress.py +274 -0
  857. medre-0.1.0/tests/test_radio_runtime_recovery.py +398 -0
  858. medre-0.1.0/tests/test_radio_text_plan.py +181 -0
  859. medre-0.1.0/tests/test_reaction_quote_after_completion.py +320 -0
  860. medre-0.1.0/tests/test_reaction_roundtrip.py +1051 -0
  861. medre-0.1.0/tests/test_read_contract_validation.py +62 -0
  862. medre-0.1.0/tests/test_readiness_packaging.py +159 -0
  863. medre-0.1.0/tests/test_readiness_report.py +639 -0
  864. medre-0.1.0/tests/test_readiness_report_compatibility.py +76 -0
  865. medre-0.1.0/tests/test_readiness_report_render.py +215 -0
  866. medre-0.1.0/tests/test_readiness_report_review.py +388 -0
  867. medre-0.1.0/tests/test_receipt_lineage_retry_parity.py +609 -0
  868. medre-0.1.0/tests/test_record_terminal_atomicity.py +1201 -0
  869. medre-0.1.0/tests/test_record_terminal_strict.py +706 -0
  870. medre-0.1.0/tests/test_recovery_action_guidance.py +542 -0
  871. medre-0.1.0/tests/test_recovery_convergence.py +1087 -0
  872. medre-0.1.0/tests/test_recovery_ownership.py +1046 -0
  873. medre-0.1.0/tests/test_recovery_query_contract.py +157 -0
  874. medre-0.1.0/tests/test_recovery_scan_surface.py +1066 -0
  875. medre-0.1.0/tests/test_recovery_transport_independence.py +30 -0
  876. medre-0.1.0/tests/test_relation_binding_authority.py +602 -0
  877. medre-0.1.0/tests/test_relation_enricher.py +1437 -0
  878. medre-0.1.0/tests/test_relation_enricher_no_native_identity.py +213 -0
  879. medre-0.1.0/tests/test_relation_enricher_projected_sender.py +866 -0
  880. medre-0.1.0/tests/test_relation_evidence.py +842 -0
  881. medre-0.1.0/tests/test_relation_excerpt_availability.py +45 -0
  882. medre-0.1.0/tests/test_relation_quote_text_selection.py +112 -0
  883. medre-0.1.0/tests/test_relations_degrade.py +258 -0
  884. medre-0.1.0/tests/test_relay_attribution.py +1019 -0
  885. medre-0.1.0/tests/test_release_readiness_convergence.py +292 -0
  886. medre-0.1.0/tests/test_rendering_budget_evidence.py +581 -0
  887. medre-0.1.0/tests/test_rendering_consistency.py +168 -0
  888. medre-0.1.0/tests/test_rendering_context_capture.py +139 -0
  889. medre-0.1.0/tests/test_rendering_evidence_model.py +681 -0
  890. medre-0.1.0/tests/test_rendering_fallback_recording.py +120 -0
  891. medre-0.1.0/tests/test_rendering_policy_api.py +324 -0
  892. medre-0.1.0/tests/test_rendering_relation_degradation.py +682 -0
  893. medre-0.1.0/tests/test_rendering_result_model.py +181 -0
  894. medre-0.1.0/tests/test_replay_accounting.py +278 -0
  895. medre-0.1.0/tests/test_replay_after_stop_start.py +548 -0
  896. medre-0.1.0/tests/test_replay_architecture.py +356 -0
  897. medre-0.1.0/tests/test_replay_bridge_conditions.py +363 -0
  898. medre-0.1.0/tests/test_replay_cancellation_shutdown.py +704 -0
  899. medre-0.1.0/tests/test_replay_capacity.py +177 -0
  900. medre-0.1.0/tests/test_replay_engine_count_and_state.py +258 -0
  901. medre-0.1.0/tests/test_replay_engine_diagnostics.py +231 -0
  902. medre-0.1.0/tests/test_replay_engine_modes.py +632 -0
  903. medre-0.1.0/tests/test_replay_engine_plan_filters.py +886 -0
  904. medre-0.1.0/tests/test_replay_operator_flow_output.py +720 -0
  905. medre-0.1.0/tests/test_replay_partial_failure.py +522 -0
  906. medre-0.1.0/tests/test_replay_pipeline_integration.py +582 -0
  907. medre-0.1.0/tests/test_replay_policy.py +352 -0
  908. medre-0.1.0/tests/test_replay_recover.py +1364 -0
  909. medre-0.1.0/tests/test_replay_recovery_context.py +233 -0
  910. medre-0.1.0/tests/test_replay_routing.py +663 -0
  911. medre-0.1.0/tests/test_replay_routing_controls.py +703 -0
  912. medre-0.1.0/tests/test_replay_routing_durability.py +1063 -0
  913. medre-0.1.0/tests/test_replay_routing_isolation.py +428 -0
  914. medre-0.1.0/tests/test_replay_run_idempotency.py +738 -0
  915. medre-0.1.0/tests/test_replay_summary.py +640 -0
  916. medre-0.1.0/tests/test_replay_traceability.py +143 -0
  917. medre-0.1.0/tests/test_replay_typechecking.py +402 -0
  918. medre-0.1.0/tests/test_reply_roundtrip.py +851 -0
  919. medre-0.1.0/tests/test_resource_boundaries.py +223 -0
  920. medre-0.1.0/tests/test_resource_containment.py +601 -0
  921. medre-0.1.0/tests/test_retention_clock_rollback_fence.py +144 -0
  922. medre-0.1.0/tests/test_retention_epoch_write_fence.py +145 -0
  923. medre-0.1.0/tests/test_retention_status_snapshot.py +42 -0
  924. medre-0.1.0/tests/test_retention_watermark_equivalence.py +61 -0
  925. medre-0.1.0/tests/test_retention_workload_measurement.py +175 -0
  926. medre-0.1.0/tests/test_retry_abandoned_visibility.py +299 -0
  927. medre-0.1.0/tests/test_retry_attempt_commit_races.py +496 -0
  928. medre-0.1.0/tests/test_retry_attempt_reservation.py +1496 -0
  929. medre-0.1.0/tests/test_retry_config_operator_errors.py +330 -0
  930. medre-0.1.0/tests/test_retry_default_alignment.py +92 -0
  931. medre-0.1.0/tests/test_retry_engine.py +625 -0
  932. medre-0.1.0/tests/test_retry_event_buffer_wiring.py +403 -0
  933. medre-0.1.0/tests/test_retry_lifecycle_authority_boundary.py +221 -0
  934. medre-0.1.0/tests/test_retry_lineage.py +1089 -0
  935. medre-0.1.0/tests/test_retry_outbox.py +456 -0
  936. medre-0.1.0/tests/test_retry_outbox_accountability.py +1078 -0
  937. medre-0.1.0/tests/test_retry_plan_reconstruction.py +573 -0
  938. medre-0.1.0/tests/test_retry_restart.py +835 -0
  939. medre-0.1.0/tests/test_retry_route_decision_parity.py +276 -0
  940. medre-0.1.0/tests/test_retry_runtime_integration.py +1246 -0
  941. medre-0.1.0/tests/test_retry_runtime_reconstruction.py +233 -0
  942. medre-0.1.0/tests/test_retry_shutdown.py +458 -0
  943. medre-0.1.0/tests/test_retry_superseded_transition.py +114 -0
  944. medre-0.1.0/tests/test_retry_trace_evidence.py +1068 -0
  945. medre-0.1.0/tests/test_retry_typechecking.py +184 -0
  946. medre-0.1.0/tests/test_retry_worker_outcomes.py +1441 -0
  947. medre-0.1.0/tests/test_retry_worker_stop_orphan.py +723 -0
  948. medre-0.1.0/tests/test_route_configuration_fail_closed.py +129 -0
  949. medre-0.1.0/tests/test_route_construction_parity.py +222 -0
  950. medre-0.1.0/tests/test_route_diagram.py +123 -0
  951. medre-0.1.0/tests/test_route_diagram_rendering.py +179 -0
  952. medre-0.1.0/tests/test_route_diagram_terminal.py +178 -0
  953. medre-0.1.0/tests/test_route_eligibility.py +1377 -0
  954. medre-0.1.0/tests/test_route_identifier_schema_contract.py +43 -0
  955. medre-0.1.0/tests/test_route_origin_label_context.py +239 -0
  956. medre-0.1.0/tests/test_route_plan.py +710 -0
  957. medre-0.1.0/tests/test_route_plan_no_io.py +284 -0
  958. medre-0.1.0/tests/test_route_plan_origin_labels.py +662 -0
  959. medre-0.1.0/tests/test_route_policy.py +535 -0
  960. medre-0.1.0/tests/test_route_replay_observability.py +296 -0
  961. medre-0.1.0/tests/test_route_retry_command_surface.py +671 -0
  962. medre-0.1.0/tests/test_route_retry_policy.py +748 -0
  963. medre-0.1.0/tests/test_route_runtime_boundaries.py +639 -0
  964. medre-0.1.0/tests/test_route_validation_surface.py +99 -0
  965. medre-0.1.0/tests/test_routed_dispatch_metadata_collection_boundary.py +97 -0
  966. medre-0.1.0/tests/test_routes.py +1241 -0
  967. medre-0.1.0/tests/test_routes_context_map.py +1083 -0
  968. medre-0.1.0/tests/test_routes_context_map_origin_label.py +279 -0
  969. medre-0.1.0/tests/test_routes_plan_cli.py +718 -0
  970. medre-0.1.0/tests/test_routes_strict_validation.py +294 -0
  971. medre-0.1.0/tests/test_routing.py +427 -0
  972. medre-0.1.0/tests/test_routing_contract_alignment.py +190 -0
  973. medre-0.1.0/tests/test_routing_destination_schema.py +84 -0
  974. medre-0.1.0/tests/test_run_session_callback_mode.py +265 -0
  975. medre-0.1.0/tests/test_run_session_fanout.py +104 -0
  976. medre-0.1.0/tests/test_run_session_runtime_evidence.py +199 -0
  977. medre-0.1.0/tests/test_run_session_source_selection.py +83 -0
  978. medre-0.1.0/tests/test_run_signal_wakeup_ownership.py +497 -0
  979. medre-0.1.0/tests/test_runner_capacity_release.py +110 -0
  980. medre-0.1.0/tests/test_runner_delivery_failures.py +386 -0
  981. medre-0.1.0/tests/test_runner_plan_authority.py +388 -0
  982. medre-0.1.0/tests/test_runtime_accounting.py +488 -0
  983. medre-0.1.0/tests/test_runtime_adapter_stop_supervision.py +622 -0
  984. medre-0.1.0/tests/test_runtime_boot_summary.py +185 -0
  985. medre-0.1.0/tests/test_runtime_builder.py +1059 -0
  986. medre-0.1.0/tests/test_runtime_builder_ordering.py +391 -0
  987. medre-0.1.0/tests/test_runtime_builder_paths.py +301 -0
  988. medre-0.1.0/tests/test_runtime_builder_pipeline_sender_projection.py +246 -0
  989. medre-0.1.0/tests/test_runtime_builder_registry.py +272 -0
  990. medre-0.1.0/tests/test_runtime_builder_routes.py +996 -0
  991. medre-0.1.0/tests/test_runtime_cancellation.py +1293 -0
  992. medre-0.1.0/tests/test_runtime_cancellation_evidence.py +308 -0
  993. medre-0.1.0/tests/test_runtime_concurrent_startup.py +633 -0
  994. medre-0.1.0/tests/test_runtime_config_schema.py +217 -0
  995. medre-0.1.0/tests/test_runtime_context_map_routing.py +544 -0
  996. medre-0.1.0/tests/test_runtime_deployment_boundaries.py +809 -0
  997. medre-0.1.0/tests/test_runtime_diagnostics.py +1015 -0
  998. medre-0.1.0/tests/test_runtime_durability_boundaries.py +434 -0
  999. medre-0.1.0/tests/test_runtime_event_flow.py +560 -0
  1000. medre-0.1.0/tests/test_runtime_events.py +928 -0
  1001. medre-0.1.0/tests/test_runtime_evidence_completeness.py +438 -0
  1002. medre-0.1.0/tests/test_runtime_execution_authority.py +229 -0
  1003. medre-0.1.0/tests/test_runtime_hygiene.py +1192 -0
  1004. medre-0.1.0/tests/test_runtime_limits_config_contract.py +165 -0
  1005. medre-0.1.0/tests/test_runtime_native_health.py +597 -0
  1006. medre-0.1.0/tests/test_runtime_operational_evidence_integration.py +1286 -0
  1007. medre-0.1.0/tests/test_runtime_operator_recovery_v2.py +1442 -0
  1008. medre-0.1.0/tests/test_runtime_recovery.py +1013 -0
  1009. medre-0.1.0/tests/test_runtime_routing.py +1163 -0
  1010. medre-0.1.0/tests/test_runtime_snapshot.py +1301 -0
  1011. medre-0.1.0/tests/test_runtime_snapshot_diagnostics.py +382 -0
  1012. medre-0.1.0/tests/test_runtime_snapshot_outbox.py +242 -0
  1013. medre-0.1.0/tests/test_runtime_startup_integration.py +512 -0
  1014. medre-0.1.0/tests/test_runtime_state_machine.py +70 -0
  1015. medre-0.1.0/tests/test_runtime_supervision.py +621 -0
  1016. medre-0.1.0/tests/test_runtime_typing.py +345 -0
  1017. medre-0.1.0/tests/test_runtime_typing_app.py +153 -0
  1018. medre-0.1.0/tests/test_sample_provider_contract.py +87 -0
  1019. medre-0.1.0/tests/test_sanitizer_hardening.py +434 -0
  1020. medre-0.1.0/tests/test_schema_freeze_010.py +116 -0
  1021. medre-0.1.0/tests/test_schema_identifiers.py +74 -0
  1022. medre-0.1.0/tests/test_schema_resource_discovery.py +56 -0
  1023. medre-0.1.0/tests/test_scope_boundaries.py +947 -0
  1024. medre-0.1.0/tests/test_sdk_parity_runtime_backlog.py +987 -0
  1025. medre-0.1.0/tests/test_self_message_prevention.py +472 -0
  1026. medre-0.1.0/tests/test_self_upgrade.py +345 -0
  1027. medre-0.1.0/tests/test_self_upgrade_uv.py +197 -0
  1028. medre-0.1.0/tests/test_session_diagnostics_state_hygiene.py +492 -0
  1029. medre-0.1.0/tests/test_session_receipt_polling.py +36 -0
  1030. medre-0.1.0/tests/test_shared_rendering_contract.py +279 -0
  1031. medre-0.1.0/tests/test_shutdown_admission_proofs.py +271 -0
  1032. medre-0.1.0/tests/test_shutdown_conversation_projection.py +101 -0
  1033. medre-0.1.0/tests/test_shutdown_evidence_model.py +955 -0
  1034. medre-0.1.0/tests/test_shutdown_outbox_policy.py +229 -0
  1035. medre-0.1.0/tests/test_shutdown_outbox_preservation.py +752 -0
  1036. medre-0.1.0/tests/test_shutdown_under_traffic.py +898 -0
  1037. medre-0.1.0/tests/test_simplex_campaign_peer.py +97 -0
  1038. medre-0.1.0/tests/test_smoke_cli.py +351 -0
  1039. medre-0.1.0/tests/test_smoke_commands_coverage.py +231 -0
  1040. medre-0.1.0/tests/test_smoke_lifecycle_integrity.py +124 -0
  1041. medre-0.1.0/tests/test_smoke_runtime_evidence.py +177 -0
  1042. medre-0.1.0/tests/test_smoke_source_context.py +61 -0
  1043. medre-0.1.0/tests/test_smoke_source_coverage.py +225 -0
  1044. medre-0.1.0/tests/test_smoke_transport_independence.py +78 -0
  1045. medre-0.1.0/tests/test_snapshot_schema_stability.py +1420 -0
  1046. medre-0.1.0/tests/test_snapshot_stress.py +1240 -0
  1047. medre-0.1.0/tests/test_soak.py +621 -0
  1048. medre-0.1.0/tests/test_soak_config_builder.py +300 -0
  1049. medre-0.1.0/tests/test_soak_foundations_v2.py +648 -0
  1050. medre-0.1.0/tests/test_soak_harness.py +278 -0
  1051. medre-0.1.0/tests/test_source_export_pins.py +215 -0
  1052. medre-0.1.0/tests/test_source_initialization.py +66 -0
  1053. medre-0.1.0/tests/test_sqlite_foreign_keys.py +205 -0
  1054. medre-0.1.0/tests/test_sqlite_hardening.py +520 -0
  1055. medre-0.1.0/tests/test_sqlite_ingress_connection.py +427 -0
  1056. medre-0.1.0/tests/test_sqlite_open_cancellation.py +73 -0
  1057. medre-0.1.0/tests/test_sqlite_recovery_measurement.py +58 -0
  1058. medre-0.1.0/tests/test_sqlite_resource_leak.py +344 -0
  1059. medre-0.1.0/tests/test_src_self_compat_vocabulary.py +227 -0
  1060. medre-0.1.0/tests/test_startup_backlog_suppress.py +232 -0
  1061. medre-0.1.0/tests/test_startup_build_failure_and_cleanup.py +1256 -0
  1062. medre-0.1.0/tests/test_startup_cancel_depth_accounting.py +745 -0
  1063. medre-0.1.0/tests/test_startup_cleanup_adapter_drain.py +354 -0
  1064. medre-0.1.0/tests/test_startup_cleanup_core_cancel.py +269 -0
  1065. medre-0.1.0/tests/test_startup_cleanup_stop_timeout.py +204 -0
  1066. medre-0.1.0/tests/test_startup_preparation_ownership.py +213 -0
  1067. medre-0.1.0/tests/test_startup_projection_rebuild.py +146 -0
  1068. medre-0.1.0/tests/test_startup_recovery.py +353 -0
  1069. medre-0.1.0/tests/test_startup_scope_integration.py +843 -0
  1070. medre-0.1.0/tests/test_state_transitions.py +555 -0
  1071. medre-0.1.0/tests/test_stop_cancelled_error_defer.py +287 -0
  1072. medre-0.1.0/tests/test_stop_hook_invocation.py +44 -0
  1073. medre-0.1.0/tests/test_stop_start_persistence.py +542 -0
  1074. medre-0.1.0/tests/test_stopped_capture_config.py +318 -0
  1075. medre-0.1.0/tests/test_stopped_declarations.py +629 -0
  1076. medre-0.1.0/tests/test_stopped_inventory.py +244 -0
  1077. medre-0.1.0/tests/test_stopped_plan_cli.py +511 -0
  1078. medre-0.1.0/tests/test_stopped_snapshot.py +393 -0
  1079. medre-0.1.0/tests/test_storage.py +301 -0
  1080. medre-0.1.0/tests/test_storage_classification_projections.py +41 -0
  1081. medre-0.1.0/tests/test_storage_column_classification.py +674 -0
  1082. medre-0.1.0/tests/test_storage_durability.py +737 -0
  1083. medre-0.1.0/tests/test_storage_integrity.py +897 -0
  1084. medre-0.1.0/tests/test_storage_invariants.py +521 -0
  1085. medre-0.1.0/tests/test_storage_native_refs.py +964 -0
  1086. medre-0.1.0/tests/test_storage_only_evidence.py +515 -0
  1087. medre-0.1.0/tests/test_storage_outbox_atomic_create.py +343 -0
  1088. medre-0.1.0/tests/test_storage_outbox_claim.py +456 -0
  1089. medre-0.1.0/tests/test_storage_outbox_concurrency.py +250 -0
  1090. medre-0.1.0/tests/test_storage_outbox_coverage_gaps.py +218 -0
  1091. medre-0.1.0/tests/test_storage_outbox_crud.py +345 -0
  1092. medre-0.1.0/tests/test_storage_outbox_status.py +546 -0
  1093. medre-0.1.0/tests/test_storage_path_cli.py +1006 -0
  1094. medre-0.1.0/tests/test_storage_path_validation.py +515 -0
  1095. medre-0.1.0/tests/test_storage_queued_delivery_atomicity.py +421 -0
  1096. medre-0.1.0/tests/test_storage_radio_packet_observations.py +291 -0
  1097. medre-0.1.0/tests/test_storage_radio_progress.py +534 -0
  1098. medre-0.1.0/tests/test_storage_receipt_capability_fields.py +49 -0
  1099. medre-0.1.0/tests/test_storage_receipt_delivery.py +401 -0
  1100. medre-0.1.0/tests/test_storage_receipt_validation.py +272 -0
  1101. medre-0.1.0/tests/test_storage_receipts.py +1471 -0
  1102. medre-0.1.0/tests/test_storage_reset_documentation.py +78 -0
  1103. medre-0.1.0/tests/test_storage_schema_atomic_init.py +193 -0
  1104. medre-0.1.0/tests/test_styled_text.py +363 -0
  1105. medre-0.1.0/tests/test_suite_hygiene.py +62 -0
  1106. medre-0.1.0/tests/test_supervision_boundaries.py +163 -0
  1107. medre-0.1.0/tests/test_support_bundle_no_io.py +116 -0
  1108. medre-0.1.0/tests/test_sustained_ingress_contention.py +881 -0
  1109. medre-0.1.0/tests/test_synapse_harness_hardening.py +117 -0
  1110. medre-0.1.0/tests/test_synapse_observation.py +46 -0
  1111. medre-0.1.0/tests/test_target_delivery_evidence_and_capability.py +1126 -0
  1112. medre-0.1.0/tests/test_target_delivery_failure_paths.py +873 -0
  1113. medre-0.1.0/tests/test_target_delivery_outcomes.py +527 -0
  1114. medre-0.1.0/tests/test_terminal_content_settlement.py +157 -0
  1115. medre-0.1.0/tests/test_test_suite_structure.py +713 -0
  1116. medre-0.1.0/tests/test_test_tier_contract.py +86 -0
  1117. medre-0.1.0/tests/test_text_helpers.py +426 -0
  1118. medre-0.1.0/tests/test_text_renderer_coverage.py +210 -0
  1119. medre-0.1.0/tests/test_thread_capability_decision.py +79 -0
  1120. medre-0.1.0/tests/test_timeline_consistency.py +445 -0
  1121. medre-0.1.0/tests/test_tool_management.py +479 -0
  1122. medre-0.1.0/tests/test_trace.py +1432 -0
  1123. medre-0.1.0/tests/test_trace_concise_fields.py +506 -0
  1124. medre-0.1.0/tests/test_transport_attempt_provenance.py +167 -0
  1125. medre-0.1.0/tests/test_transport_profile_capability_binding.py +266 -0
  1126. medre-0.1.0/tests/test_typing_campaign.py +111 -0
  1127. medre-0.1.0/tests/test_typing_leases.py +280 -0
  1128. medre-0.1.0/tests/test_unknown_kind_policy.py +91 -0
  1129. medre-0.1.0/tests/test_walkthrough.py +216 -0
  1130. medre-0.1.0/tests/test_walkthrough_runtime_retry_replay.py +295 -0
  1131. medre-0.1.0/tests/test_wrapper_multi_callback.py +351 -0
  1132. medre-0.1.0/tests/test_xmpp_context_observation.py +189 -0
@@ -0,0 +1,59 @@
1
+ [
2
+ {
3
+ "transport": "matrix",
4
+ "repository": "jeremiah-k/medre-adapter-matrix",
5
+ "ref": "d39212bc0c3c2e021c9427bc0e958870baaa1afa",
6
+ "extras": "e2e",
7
+ "local_integration": false,
8
+ "distribution": "medre-adapter-matrix",
9
+ "python_requires": ">=3.12"
10
+ },
11
+ {
12
+ "transport": "meshtastic",
13
+ "repository": "jeremiah-k/medre-adapter-meshtastic",
14
+ "ref": "8e59552cd32bc43147d873c991ded7c5f082756f",
15
+ "extras": "",
16
+ "local_integration": false,
17
+ "distribution": "medre-adapter-meshtastic"
18
+ },
19
+ {
20
+ "transport": "meshcore",
21
+ "repository": "jeremiah-k/medre-adapter-meshcore",
22
+ "ref": "7e5d5dc2eb025072de2e5ba0c48c90d3fc773d65",
23
+ "extras": "",
24
+ "local_integration": true,
25
+ "distribution": "medre-adapter-meshcore"
26
+ },
27
+ {
28
+ "transport": "lxmf",
29
+ "repository": "jeremiah-k/medre-adapter-lxmf",
30
+ "ref": "935faefd3d67be13a6fab445846338c8fc2f150d",
31
+ "extras": "",
32
+ "local_integration": true,
33
+ "distribution": "medre-adapter-lxmf"
34
+ },
35
+ {
36
+ "transport": "xmpp",
37
+ "repository": "jeremiah-k/medre-adapter-xmpp",
38
+ "ref": "9dcd854c90a453d488d7cef28e11d4e1cd80a76a",
39
+ "extras": "",
40
+ "local_integration": false,
41
+ "distribution": "medre-adapter-xmpp"
42
+ },
43
+ {
44
+ "transport": "chatmail",
45
+ "repository": "jeremiah-k/medre-adapter-chatmail",
46
+ "ref": "93d785020626751c2eb5f090751b788b15f8a409",
47
+ "extras": "",
48
+ "local_integration": false,
49
+ "distribution": "medre-adapter-chatmail"
50
+ },
51
+ {
52
+ "transport": "simplexchat",
53
+ "repository": "jeremiah-k/medre-adapter-simplexchat",
54
+ "ref": "83ab7436a669841bff5ed199302cc259ebe1ab34",
55
+ "extras": "",
56
+ "local_integration": false,
57
+ "distribution": "medre-adapter-simplexchat"
58
+ }
59
+ ]
medre-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jeremiah K.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,2 @@
1
+ include .github/adapter-compatibility.json
2
+ recursive-include docs/schemas *
medre-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,136 @@
1
+ Metadata-Version: 2.4
2
+ Name: medre
3
+ Version: 0.1.0
4
+ Summary: Modular event communications runtime
5
+ License-Expression: MIT
6
+ Classifier: Development Status :: 3 - Alpha
7
+ Classifier: Intended Audience :: Developers
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.11
10
+ Classifier: Programming Language :: Python :: 3.12
11
+ Classifier: Programming Language :: Python :: 3.13
12
+ Classifier: Programming Language :: Python :: 3.14
13
+ Classifier: Topic :: Communications
14
+ Classifier: Typing :: Typed
15
+ Requires-Python: >=3.11
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: msgspec==0.22.0
19
+ Requires-Dist: pyyaml==6.0.3
20
+ Requires-Dist: termaid==0.12.0
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest==9.2.0; extra == "dev"
23
+ Requires-Dist: pytest-asyncio==1.5.0; extra == "dev"
24
+ Requires-Dist: pytest-timeout==2.4.0; extra == "dev"
25
+ Requires-Dist: pytest-cov==7.1.0; extra == "dev"
26
+ Requires-Dist: coverage==7.17.3; extra == "dev"
27
+ Requires-Dist: build==1.6.1; extra == "dev"
28
+ Requires-Dist: setuptools==84.2.1; extra == "dev"
29
+ Requires-Dist: jsonschema==4.26.0; extra == "dev"
30
+ Requires-Dist: packaging==26.3; extra == "dev"
31
+ Requires-Dist: mypy==2.4.1; extra == "dev"
32
+ Requires-Dist: types-PyYAML==6.0.12.20261113; extra == "dev"
33
+ Dynamic: license-file
34
+
35
+ # MEDRE
36
+
37
+ **Modular Event-driven Routing Engine** — bridge conversations across Matrix,
38
+ Meshtastic, MeshCore, LXMF, XMPP, Chatmail, and SimpleX Chat. MEDRE owns routing,
39
+ persistence, and delivery evidence; each transport is an independently installed
40
+ Python adapter. MEDRE began with mesh and LoRa bridges and supports messaging
41
+ services through the same adapter, routing, and evidence contracts.
42
+
43
+ > **Working pre-release — testers welcome; not production-ready.** Configuration,
44
+ > event, and database schemas are not frozen. Expect breaking changes, test with
45
+ > disposable state, and back up persistent state before updates. Do not delete
46
+ > an active database to work around a schema mismatch: it may contain pending
47
+ > messages and evidence.
48
+
49
+ ## Install MEDRE
50
+
51
+ Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and Git.
52
+
53
+ **1. Install the CLI and example providers.**
54
+
55
+ ```bash
56
+ uv tool install 'git+https://github.com/jeremiah-k/medre.git@main'
57
+ medre adapters install matrix meshtastic
58
+ medre adapters
59
+ ```
60
+
61
+ On Windows, follow the printed uv command after MEDRE exits: the running
62
+ executable cannot safely replace itself. For a reproducible, long-running
63
+ bridge use a [locked deployment project](docs/ops/install.md#locked-deployment)
64
+ instead of floating Git branches.
65
+
66
+ **2. Verify the pipeline before connecting anything.**
67
+
68
+ ```bash
69
+ medre config sample > sample.yaml
70
+ medre config check --config sample.yaml
71
+ medre smoke --config sample.yaml --storage-path smoke.sqlite3 --json
72
+ ```
73
+
74
+ A fake `sent` receipt proves local routing and persistence, **not** remote
75
+ delivery, RF reception, or native inbound codec decoding. The generated sample
76
+ uses a one-way diagnostic route; build your two-way route in the next step.
77
+ The same installation runs live bridges.
78
+
79
+ **3. Create your first route.**
80
+
81
+ ```bash
82
+ medre config bridge --output bridge.yaml
83
+ ```
84
+
85
+ Select two adapter instances, map their conversation addresses, and inspect
86
+ the generated route plan before saving. The builder never connects to a device
87
+ or starts a service. See **[Getting Started](docs/ops/getting-started.md)** for
88
+ the complete walkthrough and live setup.
89
+
90
+ ## Adapters
91
+
92
+ All seven adapters participate in configuration, routing, persistence, diagnostics,
93
+ and SDK-free smoke testing. Native features and delivery confirmation vary by
94
+ transport; each [transport profile](docs/spec/transport-profiles/README.md)
95
+ describes those boundaries.
96
+
97
+ | Adapter | Transport | Setup |
98
+ | ----------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------ |
99
+ | [Matrix](https://github.com/jeremiah-k/medre-adapter-matrix) | Accounts, rooms, optional E2EE | [Guide](docs/ops/transport-setup/matrix.md) |
100
+ | [Meshtastic](https://github.com/jeremiah-k/medre-adapter-meshtastic) | Radio nodes and channels | [Guide](docs/ops/transport-setup/meshtastic.md) |
101
+ | [MeshCore](https://github.com/jeremiah-k/medre-adapter-meshcore) | Companion nodes, contacts and channels | [Guide](docs/ops/transport-setup/meshcore.md) |
102
+ | [LXMF](https://github.com/jeremiah-k/medre-adapter-lxmf) | Reticulum identities and destinations | [Guide](docs/ops/transport-setup/lxmf.md) |
103
+ | [XMPP](https://github.com/jeremiah-k/medre-adapter-xmpp) | Multi-user rooms and direct conversations | [Guide](docs/ops/transport-setup/xmpp.md) |
104
+ | [Chatmail](https://github.com/jeremiah-k/medre-adapter-chatmail) | Accepted groups and direct chats through Chatmail core | [Guide](docs/ops/transport-setup/chatmail.md) |
105
+ | [SimpleX Chat](https://github.com/jeremiah-k/medre-adapter-simplexchat) | Allowlisted groups and direct conversations | [Guide](docs/ops/transport-setup/simplexchat.md) |
106
+
107
+ Install only the adapters you need, for example:
108
+
109
+ ```bash
110
+ medre adapters install xmpp chatmail simplexchat
111
+ ```
112
+
113
+ Community adapters can implement the same entry-point contracts; runtime startup
114
+ never installs Python packages. Native libraries and account/profile preparation
115
+ follow each provider's setup guide. See
116
+ [package management](docs/ops/package-management.md) for persistent CLI tools
117
+ and [adapter sources](docs/ops/adapter-installation.md) for pinned projects.
118
+
119
+ ## Documentation
120
+
121
+ | Start here | For |
122
+ | ---------------------------------------------- | ---------------------------------------------------------------- |
123
+ | [Getting Started](docs/ops/getting-started.md) | Install, smoke, guided bridge, native connections |
124
+ | [Operator guides](docs/ops/README.md) | Package management, running, evidence, recovery, troubleshooting |
125
+ | [Developer guides](docs/dev/README.md) | Contributing, testing, authoring adapters |
126
+ | [Technical specification](docs/spec/README.md) | Normative contracts and supported guarantees |
127
+
128
+ New operators can optionally use [AI-assisted setup](docs/ops/ai-assisted-setup.md).
129
+ Real-world testing and reproducible, sanitized bug reports are welcome—never
130
+ share credentials, radio keys, identity files, or unredacted databases.
131
+
132
+ ## License
133
+
134
+ MEDRE-owned core source is [MIT-licensed](LICENSE). Adapter source and its SDKs
135
+ retain their respective terms, which may include GPL and the Reticulum License.
136
+ See [dependency licensing](docs/dev/licensing.md) before redistribution.
medre-0.1.0/README.md ADDED
@@ -0,0 +1,102 @@
1
+ # MEDRE
2
+
3
+ **Modular Event-driven Routing Engine** — bridge conversations across Matrix,
4
+ Meshtastic, MeshCore, LXMF, XMPP, Chatmail, and SimpleX Chat. MEDRE owns routing,
5
+ persistence, and delivery evidence; each transport is an independently installed
6
+ Python adapter. MEDRE began with mesh and LoRa bridges and supports messaging
7
+ services through the same adapter, routing, and evidence contracts.
8
+
9
+ > **Working pre-release — testers welcome; not production-ready.** Configuration,
10
+ > event, and database schemas are not frozen. Expect breaking changes, test with
11
+ > disposable state, and back up persistent state before updates. Do not delete
12
+ > an active database to work around a schema mismatch: it may contain pending
13
+ > messages and evidence.
14
+
15
+ ## Install MEDRE
16
+
17
+ Install [uv](https://docs.astral.sh/uv/getting-started/installation/) and Git.
18
+
19
+ **1. Install the CLI and example providers.**
20
+
21
+ ```bash
22
+ uv tool install 'git+https://github.com/jeremiah-k/medre.git@main'
23
+ medre adapters install matrix meshtastic
24
+ medre adapters
25
+ ```
26
+
27
+ On Windows, follow the printed uv command after MEDRE exits: the running
28
+ executable cannot safely replace itself. For a reproducible, long-running
29
+ bridge use a [locked deployment project](docs/ops/install.md#locked-deployment)
30
+ instead of floating Git branches.
31
+
32
+ **2. Verify the pipeline before connecting anything.**
33
+
34
+ ```bash
35
+ medre config sample > sample.yaml
36
+ medre config check --config sample.yaml
37
+ medre smoke --config sample.yaml --storage-path smoke.sqlite3 --json
38
+ ```
39
+
40
+ A fake `sent` receipt proves local routing and persistence, **not** remote
41
+ delivery, RF reception, or native inbound codec decoding. The generated sample
42
+ uses a one-way diagnostic route; build your two-way route in the next step.
43
+ The same installation runs live bridges.
44
+
45
+ **3. Create your first route.**
46
+
47
+ ```bash
48
+ medre config bridge --output bridge.yaml
49
+ ```
50
+
51
+ Select two adapter instances, map their conversation addresses, and inspect
52
+ the generated route plan before saving. The builder never connects to a device
53
+ or starts a service. See **[Getting Started](docs/ops/getting-started.md)** for
54
+ the complete walkthrough and live setup.
55
+
56
+ ## Adapters
57
+
58
+ All seven adapters participate in configuration, routing, persistence, diagnostics,
59
+ and SDK-free smoke testing. Native features and delivery confirmation vary by
60
+ transport; each [transport profile](docs/spec/transport-profiles/README.md)
61
+ describes those boundaries.
62
+
63
+ | Adapter | Transport | Setup |
64
+ | ----------------------------------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------ |
65
+ | [Matrix](https://github.com/jeremiah-k/medre-adapter-matrix) | Accounts, rooms, optional E2EE | [Guide](docs/ops/transport-setup/matrix.md) |
66
+ | [Meshtastic](https://github.com/jeremiah-k/medre-adapter-meshtastic) | Radio nodes and channels | [Guide](docs/ops/transport-setup/meshtastic.md) |
67
+ | [MeshCore](https://github.com/jeremiah-k/medre-adapter-meshcore) | Companion nodes, contacts and channels | [Guide](docs/ops/transport-setup/meshcore.md) |
68
+ | [LXMF](https://github.com/jeremiah-k/medre-adapter-lxmf) | Reticulum identities and destinations | [Guide](docs/ops/transport-setup/lxmf.md) |
69
+ | [XMPP](https://github.com/jeremiah-k/medre-adapter-xmpp) | Multi-user rooms and direct conversations | [Guide](docs/ops/transport-setup/xmpp.md) |
70
+ | [Chatmail](https://github.com/jeremiah-k/medre-adapter-chatmail) | Accepted groups and direct chats through Chatmail core | [Guide](docs/ops/transport-setup/chatmail.md) |
71
+ | [SimpleX Chat](https://github.com/jeremiah-k/medre-adapter-simplexchat) | Allowlisted groups and direct conversations | [Guide](docs/ops/transport-setup/simplexchat.md) |
72
+
73
+ Install only the adapters you need, for example:
74
+
75
+ ```bash
76
+ medre adapters install xmpp chatmail simplexchat
77
+ ```
78
+
79
+ Community adapters can implement the same entry-point contracts; runtime startup
80
+ never installs Python packages. Native libraries and account/profile preparation
81
+ follow each provider's setup guide. See
82
+ [package management](docs/ops/package-management.md) for persistent CLI tools
83
+ and [adapter sources](docs/ops/adapter-installation.md) for pinned projects.
84
+
85
+ ## Documentation
86
+
87
+ | Start here | For |
88
+ | ---------------------------------------------- | ---------------------------------------------------------------- |
89
+ | [Getting Started](docs/ops/getting-started.md) | Install, smoke, guided bridge, native connections |
90
+ | [Operator guides](docs/ops/README.md) | Package management, running, evidence, recovery, troubleshooting |
91
+ | [Developer guides](docs/dev/README.md) | Contributing, testing, authoring adapters |
92
+ | [Technical specification](docs/spec/README.md) | Normative contracts and supported guarantees |
93
+
94
+ New operators can optionally use [AI-assisted setup](docs/ops/ai-assisted-setup.md).
95
+ Real-world testing and reproducible, sanitized bug reports are welcome—never
96
+ share credentials, radio keys, identity files, or unredacted databases.
97
+
98
+ ## License
99
+
100
+ MEDRE-owned core source is [MIT-licensed](LICENSE). Adapter source and its SDKs
101
+ retain their respective terms, which may include GPL and the Reticulum License.
102
+ See [dependency licensing](docs/dev/licensing.md) before redistribution.
@@ -0,0 +1,165 @@
1
+ # JSON Schemas
2
+
3
+ Machine-readable JSON Schema definitions for MEDRE data structures and stable
4
+ adapter-owned serialization contracts. Core schemas mirror source models; adapter
5
+ contract schemas mirror their projection helpers and normative specifications.
6
+
7
+ Source distributions include this directory, including test examples. Wheels
8
+ include only the manifest and frozen normative schema definitions, byte-for-byte,
9
+ under `medre/_schemas`; examples are deliberately excluded. Installed consumers
10
+ can read them with
11
+ `importlib.resources.files("medre").joinpath("_schemas")` without a Git checkout.
12
+
13
+ ## Schema Files
14
+
15
+ | Schema | Source Type | Description |
16
+ | ------------------------------------------------ | ---------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
17
+ | `readiness-report.schema.json` | `medre readiness --json` | Versioned offline provider/configuration facts and explicit absence of runtime or recipient observations |
18
+ | `canonical-event.schema.json` | `CanonicalEvent` (`src/medre/core/events/canonical.py`) | Core event record flowing through the pipeline |
19
+ | `content-inventory.schema.json` | `SQLiteStorage.inspect_content_inventory` | Read-only logical bytes and consumers without message values |
20
+ | `content-retention-preview.schema.json` | `SQLiteStorage.preview_content_retention` | Bounded aggregate preview with outcome counts and one optional (created_at, event_id) continuation; the CLI omits that cursor |
21
+ | `content-retention-status.schema.json` | `medre storage retention status` | Read-only, content-free retention policy status with heartbeat observation and preview rollup |
22
+ | `content-retention-activation.schema.json` | `medre storage retention activate` | Content-free result of opening a new operator activation epoch |
23
+ | `storage-column-classification.schema.json` | Declared registry (`src/medre/core/storage/classification.py`) | Versioned export of the column-level ownership classes over persistent storage tables and columns |
24
+ | `event-content-release-assessment.schema.json` | `SQLiteStorage.assess_event_content_release` | Metadata-only, non-authorizing per-event release assessment |
25
+ | `canonical-event.schema.yaml` | YAML mirror of `canonical-event.schema.json` | Same validation structure as canonical JSON (some explanatory descriptions differ); not an instance document |
26
+ | `styled-text.schema.json` | `StyledText` / `TextSpan` | Optional semantic presentation over canonical plain text |
27
+ | `attachment.schema.json` | `AttachmentDescriptor` | Retained/unavailable descriptors and retention-pending input |
28
+ | `delivery-receipt.schema.json` | `DeliveryReceipt` (`src/medre/core/events/canonical.py`) | Append-only delivery status record |
29
+ | `delivery-observation.schema.json` | `DeliveryObservation` (`src/medre/core/events/canonical.py`) | Append-only post-handoff transport evidence |
30
+ | `delivery-result.schema.json` | `AdapterHandoffResult` (`src/medre/core/contracts/delivery.py`) | Successful synchronous adapter hand-off fact |
31
+ | `radio-text-plan.schema.json` | `RadioTextPlan` (`src/medre/core/rendering/radio_text.py`) | Immutable multipart radio text wire plan |
32
+ | `radio-local-handoff.schema.json` | `RadioLocalHandoff` (`src/medre/core/storage/radio_handoff.py`) | Synchronous radio local handoff reference scoped to one packet |
33
+ | `radio-attempt-progress.schema.json` | `StoredRadioAttempt` (`src/medre/core/storage/radio.py`) | Attempt-bound radio handoff progress retained per outbox attempt |
34
+ | `radio-attempt-inspection.schema.json` | Dict shape (`medre.core.recovery.radio_assessment`) | Read-only exact radio attempt inspection with continuation assessment |
35
+ | `bridge-context.schema.json` | Dict shape (`medre.core.rendering.bridge_context`) | Cross-platform relay context claims retained on canonical events |
36
+ | `lifecycle-drill-report.schema.json` | Dict shape (`medre.runtime.drill.run_drill`) | Synthetic configuration/startup drill assignment and coverage evidence |
37
+ | `drill-step.schema.json` | Dict shape (`medre.runtime.drill`) | Single ordered evidence step within a lifecycle drill report |
38
+ | `runtime-snapshot.schema.json` | `RuntimeSnapshot` (`src/medre/core/supervision/diagnostics.py`) | Point-in-time runtime state snapshot |
39
+ | `diagnostics.schema.json` | Dict shape (`capture_runtime_snapshot().to_dict()`) | Diagnostics collector output |
40
+ | `evidence-bundle.schema.json` | Dict shape | `medre evidence` bundle structure |
41
+ | `native-qualification.schema.json` | Dict shape (`scripts/ci/native_qualification.py`) | Content-free, revision-bound CI proof for MeshCore and LXMF core replay; not a runtime API |
42
+ | `adapter-config.schema.json` | Per-transport configs | Adapter configuration shapes |
43
+ | `routing-config.schema.json` | `RouteConfig`, `BridgePolicy` | Route matching configuration shapes |
44
+ | `runtime-config.schema.json` | `RuntimeConfig` (`src/medre/config/model.py`) | Shared runtime configuration across runtime, logging, storage, retry, limits, adapters, and routes |
45
+ | `dev-environment.schema.json` | `DevEnvironment` (`src/medre/dev_environment.py`) | Checkout `.medre-dev.yaml` preferences for adapter selection and SDK extras |
46
+ | `package-sources.schema.json` | Deployment source catalog | Adapter distribution aliases and source overrides |
47
+ | `native-bridge-context-expectations.schema.json` | Dict shape (native campaign report) | Optional bridge-context destination expectations in native campaign reports |
48
+ | `stopped-state-inventory.schema.json` | Dict shape (`medre.maintenance.stopped_inventory`) | Operator-declared stopped installation inventory for capture/verify/restore |
49
+ | `stopped-state-snapshot.schema.json` | Dict shape (`medre.maintenance.stopped_snapshot`) | Captured stopped-state snapshot manifest checked during verify and restore |
50
+ | `operator-decision-inspection.schema.json` | `medre inspect decisions` | Versioned, read-only decision audit with unauthenticated actor provenance |
51
+ | `inbound-pressure.schema.json` | `medre inspect pressure` | Read-only pre-admission pressure aggregates over the closed six-outcome vocabulary; counters only, never payloads |
52
+ | `recovery-action.schema.json` | `RecoveryAction` (`medre.core.observability.recovery`) | Current destination ownership and read-only recovery guidance |
53
+ | `exact-target-preview.schema.json` | `ExactTargetPreview` (`medre.core.observability.exact_target`) | Typed read-only observation of one exact delivery target with a closed category vocabulary |
54
+ | `exact-target-decision.schema.json` | `ExactTargetDecision` (`medre.core.storage.sqlite._operator_decision`) | Immutable audit acknowledgement of one exact-target operator decision; never a dispatch grant |
55
+ | `live-health.schema.json` | `LiveHealthSnapshot` (`medre.core.supervision.health`) | Current manual samples and native health notifications |
56
+
57
+ Executable SQLite fragments for typed admission routing facts, frozen outbox
58
+ work ownership, and the durable content-retention activation epochs are
59
+ published as `event-routing-facts.schema.sql`,
60
+ `outbox-dispatch-snapshots.schema.sql`, and
61
+ `content-retention-epochs.schema.sql`. Their table constraints and declared
62
+ indexes are checked against the authoritative SQLite DDL.
63
+
64
+ ## Examples
65
+
66
+ The `native-qualification.schema.json` entry above describes CI test evidence,
67
+ not a runtime observation API. See
68
+ [native qualification](../dev/native-qualification.md) for its independent
69
+ source, SDK, and harness checks.
70
+
71
+ The `examples/` directory contains representative JSON payloads validated
72
+ against these schemas.
73
+
74
+ | Example | Description |
75
+ | -------------------------------------------------- | ---------------------------------- |
76
+ | `examples/matrix-native-metadata-example.json` | Matrix native metadata payload |
77
+ | `examples/meshtastic-native-metadata-example.json` | Meshtastic native metadata payload |
78
+ | `examples/meshcore-native-metadata-example.json` | MeshCore native metadata payload |
79
+ | `examples/lxmf-native-metadata-example.json` | LXMF native metadata payload |
80
+ | `examples/delivery-observation-example.json` | Post-handoff delivery observation |
81
+
82
+ ## Generation
83
+
84
+ Schemas are hand-authored to match the current source types or adapter contract.
85
+ When a source model or versioned adapter shape changes, update the corresponding
86
+ schema and run the schema validation tests:
87
+
88
+ ```bash
89
+ python -m pytest tests/test_docs_schema_examples.py tests/test_docs_schema_drift.py -q
90
+ ```
91
+
92
+ ## Drift Detection
93
+
94
+ Tests validate examples against their schemas and check that schema required
95
+ fields align with example payloads. When example payloads or schemas change,
96
+ update both in the same commit.
97
+
98
+ For stable source models (`CanonicalEvent`, `DeliveryReceipt`,
99
+ `DeliveryObservation`, `AdapterHandoffResult`), tests also compare top-level
100
+ schema properties against source dataclass fields. If a source model adds or
101
+ renames a field without updating the schema, the test fails. These
102
+ source-drift tests live in `tests/test_docs_schema_drift.py`.
103
+
104
+ For built-in transport-native metadata,
105
+ `tests/test_prerelease_contract_guards.py` compares the source schema-version
106
+ constant with the corresponding JSON Schema `const` and example payload. Each
107
+ transport therefore has one version authority across source, machine schema,
108
+ and example data.
109
+
110
+ `AdapterCapabilities` are checked separately by
111
+ `tests/test_capability_conformance.py` against
112
+ `docs/spec/transport-profiles/*-capabilities.json`.
113
+
114
+ Runtime and routing schemas describe the shared configuration structure. They
115
+ accept community transport and destination kind names. `medre config check`
116
+ validates installed-provider availability and invokes adapter-owned native
117
+ address validators. Static schema validation alone cannot verify which Python
118
+ providers are installed in an operator's environment.
119
+
120
+ Native metadata schemas and validated examples belong to their adapter repositories; see the [metadata ownership contract](../spec/metadata.md#3-adapter-owned-native-metadata).
121
+
122
+ `content-collection-state.schema.json` defines the closed aggregate worker
123
+ blocks emitted by `MedreApp.diagnostic_snapshot()` and
124
+ `medre.runtime.snapshot.build_runtime_snapshot()`. These producers differ
125
+ from `core.supervision.capture_runtime_snapshot()`, whose existing
126
+ `runtime-snapshot.schema.json` and `diagnostics.schema.json` contracts remain
127
+ separate. Unknown worker fields, content, and event identifiers are refused.
128
+
129
+ ## 0.1.0 release schema freeze
130
+
131
+ `v0.1.0.freeze.json` records the SHA-256 of every exported top-level JSON,
132
+ YAML and SQL schema artifact in this distribution at the first-release
133
+ baseline. `tests/test_schema_freeze_010.py` rejects additions, deletions and
134
+ content changes without a deliberate update. This is a release-review gate,
135
+ **not** a schema-version negotiation mechanism and not a promise to migrate
136
+ unpublished prerelease databases. The freeze covers normative schemas, not
137
+ examples or runtime data. After the first tag, changes must follow the
138
+ versioning policy (including independent adapter-native and SQLite versions),
139
+ with contract tests and a documented compatibility decision; never silently
140
+ replace a released freeze manifest.
141
+
142
+ ### Bounded source-native facts (proposed initial 0.1.0 contract)
143
+
144
+ `bridge_context.source.native_facts` is an optional **public** source-owned
145
+ projection: `{"namespace": "meshtastic", "fields": {"portnum": 1}}`.
146
+ Here *facts* means **bounded, adapter-selected assertions about its native
147
+ source**, not facts independently verified by the receiving transport. The
148
+ namespace identifies the native producer type, not an authenticated sender; structural validation does
149
+ not authenticate the claim. Treat these values as untrusted presentation hints
150
+ unless an explicit, independent authorization check permits their use.
151
+ Its namespace identifies the native producer, while the envelope remains
152
+ independent of any destination transport. At most twelve bounded scalar facts
153
+ can cross a bridge. The source must intentionally select these from its native
154
+ metadata via `public_facts`; other packet data, credentials, keys and encrypted
155
+ material are never copied automatically. An untrusted inbound projection can
156
+ inform display only; it never authorizes a relay, overrides the actual sender,
157
+ or binds a native reply/reaction. Core keeps a single version-1 context across
158
+ Matrix, LXMF, and XMPP. A context may be absent without dropping message text.
159
+
160
+ ## Git checkout line endings
161
+
162
+ A main-to-candidate Git checkout may retain unchanged CRLF files. Packaging
163
+ MUST emit the exact frozen bytes. LF reconstruction is permitted only when
164
+ its digest matches the freeze manifest; every other byte change MUST fail
165
+ the build. Fresh checkouts retain the explicit `-text` attribute policy.