hypermind 0.23.0__tar.gz → 0.24.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 (925) hide show
  1. {hypermind-0.23.0 → hypermind-0.24.0}/CHANGELOG.md +38 -1
  2. {hypermind-0.23.0 → hypermind-0.24.0}/PKG-INFO +7 -3
  3. {hypermind-0.23.0 → hypermind-0.24.0}/README.md +6 -2
  4. {hypermind-0.23.0 → hypermind-0.24.0}/examples/README.md +1 -0
  5. hypermind-0.24.0/examples/org_distributed.py +74 -0
  6. {hypermind-0.23.0 → hypermind-0.24.0}/pyproject.toml +1 -1
  7. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/__init__.py +1 -1
  8. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/distributed/__init__.py +33 -1
  9. hypermind-0.24.0/src/hypermind/orgs/distributed/coordinator.py +251 -0
  10. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/distributed/planning.py +31 -0
  11. hypermind-0.24.0/src/hypermind/orgs/distributed/provision.py +57 -0
  12. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_distributed.py +151 -8
  13. hypermind-0.23.0/src/hypermind/orgs/distributed/coordinator.py +0 -175
  14. {hypermind-0.23.0 → hypermind-0.24.0}/.editorconfig +0 -0
  15. {hypermind-0.23.0 → hypermind-0.24.0}/.gitattributes +0 -0
  16. {hypermind-0.23.0 → hypermind-0.24.0}/.github/FUNDING.yml +0 -0
  17. {hypermind-0.23.0 → hypermind-0.24.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  18. {hypermind-0.23.0 → hypermind-0.24.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  19. {hypermind-0.23.0 → hypermind-0.24.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  20. {hypermind-0.23.0 → hypermind-0.24.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  21. {hypermind-0.23.0 → hypermind-0.24.0}/.github/renovate.json +0 -0
  22. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/check-license.yml +0 -0
  23. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/code-review-pr.yml +0 -0
  24. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/hotfix-security.yml +0 -0
  25. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/issue-auto-fix.yml +0 -0
  26. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/issue-triage.yml +0 -0
  27. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/pr-standards.yml +0 -0
  28. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/quality.yml +0 -0
  29. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/release.yml +0 -0
  30. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/security.yml +0 -0
  31. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows/stale.yml +0 -0
  32. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/branch-flow-check.yml +0 -0
  33. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/chaos.yml +0 -0
  34. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/check-license.yml +0 -0
  35. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/ci.yml +0 -0
  36. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/code-freeze.yml +0 -0
  37. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/code-review-pr.yml +0 -0
  38. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/code-review.yml +0 -0
  39. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/codeql.yml +0 -0
  40. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/dco.yml +0 -0
  41. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
  42. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/docs.yml +0 -0
  43. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/formal.yml +0 -0
  44. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/fuzz.yml +0 -0
  45. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/hotfix-security.yml +0 -0
  46. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
  47. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/issue-triage.yml +0 -0
  48. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/merge-comment.yml +0 -0
  49. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/pip-audit.yml +0 -0
  50. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/pr-standards.yml +0 -0
  51. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/quality.yml +0 -0
  52. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/release.yml +0 -0
  53. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/sbom.yml +0 -0
  54. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/scorecard.yml +0 -0
  55. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/security.yml +0 -0
  56. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/sprint-retro.yml +0 -0
  57. {hypermind-0.23.0 → hypermind-0.24.0}/.github/workflows-disabled/stale.yml +0 -0
  58. {hypermind-0.23.0 → hypermind-0.24.0}/.gitignore +0 -0
  59. {hypermind-0.23.0 → hypermind-0.24.0}/.pre-commit-config.yaml +0 -0
  60. {hypermind-0.23.0 → hypermind-0.24.0}/.tool-versions +0 -0
  61. {hypermind-0.23.0 → hypermind-0.24.0}/CHARTER.md +0 -0
  62. {hypermind-0.23.0 → hypermind-0.24.0}/CODEOWNERS +0 -0
  63. {hypermind-0.23.0 → hypermind-0.24.0}/CODE_OF_CONDUCT.md +0 -0
  64. {hypermind-0.23.0 → hypermind-0.24.0}/CONTRIBUTING.md +0 -0
  65. {hypermind-0.23.0 → hypermind-0.24.0}/GOVERNANCE.md +0 -0
  66. {hypermind-0.23.0 → hypermind-0.24.0}/LICENSE +0 -0
  67. {hypermind-0.23.0 → hypermind-0.24.0}/MAINTAINERS.md +0 -0
  68. {hypermind-0.23.0 → hypermind-0.24.0}/Makefile +0 -0
  69. {hypermind-0.23.0 → hypermind-0.24.0}/RELATA_COMPATIBILITY.md +0 -0
  70. {hypermind-0.23.0 → hypermind-0.24.0}/RELATA_INTEGRATION_PLAN.md +0 -0
  71. {hypermind-0.23.0 → hypermind-0.24.0}/RELATA_STORAGE.md +0 -0
  72. {hypermind-0.23.0 → hypermind-0.24.0}/ROADMAP.md +0 -0
  73. {hypermind-0.23.0 → hypermind-0.24.0}/SECURITY.md +0 -0
  74. {hypermind-0.23.0 → hypermind-0.24.0}/bench/README.md +0 -0
  75. {hypermind-0.23.0 → hypermind-0.24.0}/bench/__init__.py +0 -0
  76. {hypermind-0.23.0 → hypermind-0.24.0}/bench/baselines/v0.6.json +0 -0
  77. {hypermind-0.23.0 → hypermind-0.24.0}/bench/bench_consult.py +0 -0
  78. {hypermind-0.23.0 → hypermind-0.24.0}/bench/bench_dispute.py +0 -0
  79. {hypermind-0.23.0 → hypermind-0.24.0}/bench/bench_publish.py +0 -0
  80. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/README.md +0 -0
  81. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/__init__.py +0 -0
  82. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/baselines/v0.10.json +0 -0
  83. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/bench_rfp_latency.py +0 -0
  84. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/bench_task_throughput.py +0 -0
  85. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/bench_workflow_replay.py +0 -0
  86. {hypermind-0.23.0 → hypermind-0.24.0}/bench/coordination/run_all.py +0 -0
  87. {hypermind-0.23.0 → hypermind-0.24.0}/bench/question_sets/geopolitics_q20.json +0 -0
  88. {hypermind-0.23.0 → hypermind-0.24.0}/bench/question_sets/msft_outlook_q10.json +0 -0
  89. {hypermind-0.23.0 → hypermind-0.24.0}/bench/run_bench.py +0 -0
  90. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/README.md +0 -0
  91. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/__init__.py +0 -0
  92. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p1_partition_recovery.py +0 -0
  93. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p2_witness_compromise.py +0 -0
  94. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p3_key_rotation.py +0 -0
  95. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p4_dispute_backlog.py +0 -0
  96. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p5_wire_cutover.py +0 -0
  97. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p6_quorum_loss.py +0 -0
  98. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p7_clock_skew.py +0 -0
  99. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/p8_recorder_outage.py +0 -0
  100. {hypermind-0.23.0 → hypermind-0.24.0}/chaos/run_chaos.py +0 -0
  101. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/Dockerfile +0 -0
  102. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/README.md +0 -0
  103. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/docker-compose.yml +0 -0
  104. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
  105. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
  106. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/grafana/dashboards/hypermind.json +0 -0
  107. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
  108. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
  109. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/k8s/hypermind-deployment.yaml +0 -0
  110. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/prometheus/prometheus.yml +0 -0
  111. {hypermind-0.23.0 → hypermind-0.24.0}/deploy/systemd/hypermind.service +0 -0
  112. {hypermind-0.23.0 → hypermind-0.24.0}/docs/README.md +0 -0
  113. {hypermind-0.23.0 → hypermind-0.24.0}/docs/SIMLAB.md +0 -0
  114. {hypermind-0.23.0 → hypermind-0.24.0}/docs/SIMLAB_AUDIT_PLAN.md +0 -0
  115. {hypermind-0.23.0 → hypermind-0.24.0}/docs/_meta/glossary.md +0 -0
  116. {hypermind-0.23.0 → hypermind-0.24.0}/docs/_meta/provenance.md +0 -0
  117. {hypermind-0.23.0 → hypermind-0.24.0}/docs/_meta/public-surface.md +0 -0
  118. {hypermind-0.23.0 → hypermind-0.24.0}/docs/_meta/standards-map.md +0 -0
  119. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/agent.md +0 -0
  120. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/agent_card.md +0 -0
  121. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/capability.md +0 -0
  122. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/crypto.md +0 -0
  123. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/dispute.md +0 -0
  124. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/knowledge.md +0 -0
  125. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/observability.md +0 -0
  126. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/simlab-openapi.yaml +0 -0
  127. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/sync.md +0 -0
  128. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/tasks.md +0 -0
  129. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/transport.md +0 -0
  130. {hypermind-0.23.0 → hypermind-0.24.0}/docs/api/wire.md +0 -0
  131. {hypermind-0.23.0 → hypermind-0.24.0}/docs/architecture-v0.6.md +0 -0
  132. {hypermind-0.23.0 → hypermind-0.24.0}/docs/assets/hero-swarm.svg +0 -0
  133. {hypermind-0.23.0 → hypermind-0.24.0}/docs/audit/findings.md +0 -0
  134. {hypermind-0.23.0 → hypermind-0.24.0}/docs/audit/scope.md +0 -0
  135. {hypermind-0.23.0 → hypermind-0.24.0}/docs/concepts.md +0 -0
  136. {hypermind-0.23.0 → hypermind-0.24.0}/docs/conformance/authority.md +0 -0
  137. {hypermind-0.23.0 → hypermind-0.24.0}/docs/conformance/bake-off-report.md +0 -0
  138. {hypermind-0.23.0 → hypermind-0.24.0}/docs/conformance/mark-policy.md +0 -0
  139. {hypermind-0.23.0 → hypermind-0.24.0}/docs/decide/01-disqualifiers.md +0 -0
  140. {hypermind-0.23.0 → hypermind-0.24.0}/docs/decide/02-alternatives.md +0 -0
  141. {hypermind-0.23.0 → hypermind-0.24.0}/docs/decide/03-incentive-aligned-cases.md +0 -0
  142. {hypermind-0.23.0 → hypermind-0.24.0}/docs/decide/04-use-cases.md +0 -0
  143. {hypermind-0.23.0 → hypermind-0.24.0}/docs/design/01-architecture.md +0 -0
  144. {hypermind-0.23.0 → hypermind-0.24.0}/docs/design/02-traces.md +0 -0
  145. {hypermind-0.23.0 → hypermind-0.24.0}/docs/design/03-failure-modes.md +0 -0
  146. {hypermind-0.23.0 → hypermind-0.24.0}/docs/design/04-poisoning-defenses.md +0 -0
  147. {hypermind-0.23.0 → hypermind-0.24.0}/docs/design/05-deployment-topology.md +0 -0
  148. {hypermind-0.23.0 → hypermind-0.24.0}/docs/feature-matrix.md +0 -0
  149. {hypermind-0.23.0 → hypermind-0.24.0}/docs/getting-started.md +0 -0
  150. {hypermind-0.23.0 → hypermind-0.24.0}/docs/governance/cna.md +0 -0
  151. {hypermind-0.23.0 → hypermind-0.24.0}/docs/governance/foundation-evaluation.md +0 -0
  152. {hypermind-0.23.0 → hypermind-0.24.0}/docs/hypermind-protocol-spec.md +0 -0
  153. {hypermind-0.23.0 → hypermind-0.24.0}/docs/index.md +0 -0
  154. {hypermind-0.23.0 → hypermind-0.24.0}/docs/legal/export-classification.md +0 -0
  155. {hypermind-0.23.0 → hypermind-0.24.0}/docs/lts.md +0 -0
  156. {hypermind-0.23.0 → hypermind-0.24.0}/docs/migrate/v0.x-to-v1.0.md +0 -0
  157. {hypermind-0.23.0 → hypermind-0.24.0}/docs/migration/v0.7.md +0 -0
  158. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/00-prerequisites.md +0 -0
  159. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/README.md +0 -0
  160. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/after.md +0 -0
  161. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
  162. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
  163. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
  164. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
  165. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e05-break-it.md +0 -0
  166. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
  167. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/exercises/e07-first-pr.md +0 -0
  168. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/glossary.md +0 -0
  169. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
  170. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
  171. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/02-architecture-tour.md +0 -0
  172. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/03-spec-literacy.md +0 -0
  173. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/04-cryptography.md +0 -0
  174. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/05-cbor-cose.md +0 -0
  175. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/06-transparency-logs.md +0 -0
  176. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/07-distributed-systems.md +0 -0
  177. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/08-async-python.md +0 -0
  178. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/topics/09-security-mindset.md +0 -0
  179. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/week-1-foundations.md +0 -0
  180. {hypermind-0.23.0 → hypermind-0.24.0}/docs/onboarding/week-2-deep-dive.md +0 -0
  181. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/01-deployment.md +0 -0
  182. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/02-runbook.md +0 -0
  183. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/03-resource-budget.md +0 -0
  184. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/backup-restore.md +0 -0
  185. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/data-residency.md +0 -0
  186. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/key-rotation.md +0 -0
  187. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
  188. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/key-rotation.md +0 -0
  189. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/kms-rotation.md +0 -0
  190. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/multi-host-deploy.md +0 -0
  191. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/partition-heal.md +0 -0
  192. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/quorum-loss.md +0 -0
  193. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
  194. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/wire-cutover.md +0 -0
  195. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/witness-compromise.md +0 -0
  196. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/runbooks/workflow-replay.md +0 -0
  197. {hypermind-0.23.0 → hypermind-0.24.0}/docs/operate/slo.md +0 -0
  198. {hypermind-0.23.0 → hypermind-0.24.0}/docs/paper/00-patent.md +0 -0
  199. {hypermind-0.23.0 → hypermind-0.24.0}/docs/paper/hypermind-paper-draft.md +0 -0
  200. {hypermind-0.23.0 → hypermind-0.24.0}/docs/paper/hypermind-paper.docx +0 -0
  201. {hypermind-0.23.0 → hypermind-0.24.0}/docs/paper/hypermind-paper.tex +0 -0
  202. {hypermind-0.23.0 → hypermind-0.24.0}/docs/release-notes/v1.0-checklist.md +0 -0
  203. {hypermind-0.23.0 → hypermind-0.24.0}/docs/release-notes/v1.0.0.md +0 -0
  204. {hypermind-0.23.0 → hypermind-0.24.0}/docs/security/threat-model.md +0 -0
  205. {hypermind-0.23.0 → hypermind-0.24.0}/docs/simlab/modes.md +0 -0
  206. {hypermind-0.23.0 → hypermind-0.24.0}/docs/simulations.md +0 -0
  207. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/00-overview.md +0 -0
  208. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/01-transport.md +0 -0
  209. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/02-cryptography.md +0 -0
  210. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/03-messages.md +0 -0
  211. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/04-knowledge-model.md +0 -0
  212. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/05-routing.md +0 -0
  213. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/06-conformance.md +0 -0
  214. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/07-trust-access-layer.md +0 -0
  215. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/08-onboarding-contract.md +0 -0
  216. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/09-agent-sdk.md +0 -0
  217. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/10-disputes.md +0 -0
  218. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/11-witness-transparency.md +0 -0
  219. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/12-governance.md +0 -0
  220. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/13-observability.md +0 -0
  221. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/14-threat-model.md +0 -0
  222. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/15-living-transmission.md +0 -0
  223. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/16-reference-comparisons.md +0 -0
  224. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/17-upgrade-v1.md +0 -0
  225. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/18-revocation.md +0 -0
  226. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/19-autonomy-contract.md +0 -0
  227. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/20-swarm-intelligence.md +0 -0
  228. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/21-belief-state.md +0 -0
  229. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/21-private-namespaces.md +0 -0
  230. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/22-transport-mtls.md +0 -0
  231. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/23-envelope-encryption.md +0 -0
  232. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/24-namespace-identity.md +0 -0
  233. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/25-capability-extensions.md +0 -0
  234. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/26-workflow.md +0 -0
  235. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/27-contract-net.md +0 -0
  236. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/28-distributed-trace.md +0 -0
  237. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/_meta/gaps-closed.md +0 -0
  238. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/appendix-N-calibration.md +0 -0
  239. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/appendix-TLA.md +0 -0
  240. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/appendix-z.md +0 -0
  241. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/errata.md +0 -0
  242. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/index.md +0 -0
  243. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/invariants.md +0 -0
  244. {hypermind-0.23.0 → hypermind-0.24.0}/docs/spec/normative-trace.md +0 -0
  245. {hypermind-0.23.0 → hypermind-0.24.0}/docs/supply-chain/sbom.md +0 -0
  246. {hypermind-0.23.0 → hypermind-0.24.0}/docs/supply-chain/slsa.md +0 -0
  247. {hypermind-0.23.0 → hypermind-0.24.0}/docs/supply-chain/verify-self.md +0 -0
  248. {hypermind-0.23.0 → hypermind-0.24.0}/docs/sustainability.md +0 -0
  249. {hypermind-0.23.0 → hypermind-0.24.0}/examples/01_hello_world.py +0 -0
  250. {hypermind-0.23.0 → hypermind-0.24.0}/examples/02_two_agents_dispute.py +0 -0
  251. {hypermind-0.23.0 → hypermind-0.24.0}/examples/03_consult_panel.py +0 -0
  252. {hypermind-0.23.0 → hypermind-0.24.0}/examples/04_oracle_resolve.py +0 -0
  253. {hypermind-0.23.0 → hypermind-0.24.0}/examples/05_consult_to_synthesis.py +0 -0
  254. {hypermind-0.23.0 → hypermind-0.24.0}/examples/06_hybrid_pq.py +0 -0
  255. {hypermind-0.23.0 → hypermind-0.24.0}/examples/07_frost_threshold.py +0 -0
  256. {hypermind-0.23.0 → hypermind-0.24.0}/examples/08_ramp_and_diagnostics.py +0 -0
  257. {hypermind-0.23.0 → hypermind-0.24.0}/examples/09_audit_export_chain.py +0 -0
  258. {hypermind-0.23.0 → hypermind-0.24.0}/examples/10_autonomous_agent.py +0 -0
  259. {hypermind-0.23.0 → hypermind-0.24.0}/examples/11_swarm_deliberation.py +0 -0
  260. {hypermind-0.23.0 → hypermind-0.24.0}/examples/12_swarm_iq_scorecard.py +0 -0
  261. {hypermind-0.23.0 → hypermind-0.24.0}/examples/13_role_specialisation.py +0 -0
  262. {hypermind-0.23.0 → hypermind-0.24.0}/examples/14_active_learning_loop.py +0 -0
  263. {hypermind-0.23.0 → hypermind-0.24.0}/examples/16_wire_message.py +0 -0
  264. {hypermind-0.23.0 → hypermind-0.24.0}/examples/17_tool_delegation.py +0 -0
  265. {hypermind-0.23.0 → hypermind-0.24.0}/examples/18_custom_responder.py +0 -0
  266. {hypermind-0.23.0 → hypermind-0.24.0}/examples/19_governance.py +0 -0
  267. {hypermind-0.23.0 → hypermind-0.24.0}/examples/20_conformance_check.py +0 -0
  268. {hypermind-0.23.0 → hypermind-0.24.0}/examples/21_revocation.py +0 -0
  269. {hypermind-0.23.0 → hypermind-0.24.0}/examples/22_agent_card.py +0 -0
  270. {hypermind-0.23.0 → hypermind-0.24.0}/examples/23_task_delegation.py +0 -0
  271. {hypermind-0.23.0 → hypermind-0.24.0}/examples/24_mcp_tool_call.py +0 -0
  272. {hypermind-0.23.0 → hypermind-0.24.0}/examples/25_swarm_trace.py +0 -0
  273. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/01_durable_workflow.py +0 -0
  274. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/02_contract_net.py +0 -0
  275. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/03_belief_and_plan.py +0 -0
  276. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/__init__.py +0 -0
  277. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/__init__.py +0 -0
  278. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
  279. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
  280. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
  281. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
  282. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/ed_credentials.py +0 -0
  283. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
  284. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
  285. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
  286. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
  287. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/gv_21_red_team.py +0 -0
  288. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
  289. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
  290. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/lg_ediscovery.py +0 -0
  291. {hypermind-0.23.0 → hypermind-0.24.0}/examples/coordination/usecases/mf_supply_chain.py +0 -0
  292. {hypermind-0.23.0 → hypermind-0.24.0}/examples/e2e_many_agents.py +0 -0
  293. {hypermind-0.23.0 → hypermind-0.24.0}/examples/full_e2e_demo.py +0 -0
  294. {hypermind-0.23.0 → hypermind-0.24.0}/examples/lifecycle.py +0 -0
  295. {hypermind-0.23.0 → hypermind-0.24.0}/examples/org_university.py +0 -0
  296. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_aar.py +0 -0
  297. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_backtest.py +0 -0
  298. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_capability_attenuation.py +0 -0
  299. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_conformance.py +0 -0
  300. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_crisis_tabletop.py +0 -0
  301. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_cross_namespace_federation.py +0 -0
  302. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_decision_tournament.py +0 -0
  303. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_dispute_lifecycle_async.py +0 -0
  304. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_evaluation.py +0 -0
  305. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_geopolitical_crisis.py +0 -0
  306. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_geopolitical_traced.py +0 -0
  307. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_governance_committee.py +0 -0
  308. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_information_pipeline.py +0 -0
  309. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_learning_loop.py +0 -0
  310. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_namespace_trust.py +0 -0
  311. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_persona_panel.py +0 -0
  312. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_private_namespace.py +0 -0
  313. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_red_team.py +0 -0
  314. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_regulated_consortium.py +0 -0
  315. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_threat_intel.py +0 -0
  316. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_vouch_chain.py +0 -0
  317. {hypermind-0.23.0 → hypermind-0.24.0}/examples/scenario_what_if_tree.py +0 -0
  318. {hypermind-0.23.0 → hypermind-0.24.0}/examples/serve_api.py +0 -0
  319. {hypermind-0.23.0 → hypermind-0.24.0}/examples/two_node_tcp.py +0 -0
  320. {hypermind-0.23.0 → hypermind-0.24.0}/formal/README.md +0 -0
  321. {hypermind-0.23.0 → hypermind-0.24.0}/formal/hax-rust/README.md +0 -0
  322. {hypermind-0.23.0 → hypermind-0.24.0}/formal/hax-rust/scope.md +0 -0
  323. {hypermind-0.23.0 → hypermind-0.24.0}/formal/proverif/dispute_fsm.pv +0 -0
  324. {hypermind-0.23.0 → hypermind-0.24.0}/formal/proverif/dispute_liveness.pv +0 -0
  325. {hypermind-0.23.0 → hypermind-0.24.0}/formal/tamarin/capability_chain.spthy +0 -0
  326. {hypermind-0.23.0 → hypermind-0.24.0}/formal/tamarin/dispute_fsm.spthy +0 -0
  327. {hypermind-0.23.0 → hypermind-0.24.0}/formal/tamarin/signed_statement.spthy +0 -0
  328. {hypermind-0.23.0 → hypermind-0.24.0}/formal/tamarin/wire_security.spthy +0 -0
  329. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/README.md +0 -0
  330. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/__init__.py +0 -0
  331. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/fuzz_agent_card.py +0 -0
  332. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/fuzz_anti_entropy.py +0 -0
  333. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/fuzz_capability.py +0 -0
  334. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/fuzz_dispute.py +0 -0
  335. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/fuzz_inclusion_proof.py +0 -0
  336. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/fuzz_wire.py +0 -0
  337. {hypermind-0.23.0 → hypermind-0.24.0}/fuzz/seed_corpus.py +0 -0
  338. {hypermind-0.23.0 → hypermind-0.24.0}/harness/__init__.py +0 -0
  339. {hypermind-0.23.0 → hypermind-0.24.0}/harness/__main__.py +0 -0
  340. {hypermind-0.23.0 → hypermind-0.24.0}/harness/assertions.py +0 -0
  341. {hypermind-0.23.0 → hypermind-0.24.0}/harness/fixtures.py +0 -0
  342. {hypermind-0.23.0 → hypermind-0.24.0}/harness/report.py +0 -0
  343. {hypermind-0.23.0 → hypermind-0.24.0}/harness/roles.py +0 -0
  344. {hypermind-0.23.0 → hypermind-0.24.0}/harness/runner.py +0 -0
  345. {hypermind-0.23.0 → hypermind-0.24.0}/harness/scenario.py +0 -0
  346. {hypermind-0.23.0 → hypermind-0.24.0}/harness/scenarios/__init__.py +0 -0
  347. {hypermind-0.23.0 → hypermind-0.24.0}/harness/scenarios/autonomous_evolution.py +0 -0
  348. {hypermind-0.23.0 → hypermind-0.24.0}/harness/scenarios/swarm_iq_benchmark.py +0 -0
  349. {hypermind-0.23.0 → hypermind-0.24.0}/harness/scenarios/threat_intel.py +0 -0
  350. {hypermind-0.23.0 → hypermind-0.24.0}/mkdocs.yml +0 -0
  351. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/__init__.py +0 -0
  352. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
  353. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/schemas/namespace_accept.cddl +0 -0
  354. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/schemas/namespace_create.cddl +0 -0
  355. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
  356. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/schemas/namespace_invite.cddl +0 -0
  357. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
  358. {hypermind-0.23.0 → hypermind-0.24.0}/reference_verifier/verifier.py +0 -0
  359. {hypermind-0.23.0 → hypermind-0.24.0}/review/__init__.py +0 -0
  360. {hypermind-0.23.0 → hypermind-0.24.0}/review/__main__.py +0 -0
  361. {hypermind-0.23.0 → hypermind-0.24.0}/review/agents.py +0 -0
  362. {hypermind-0.23.0 → hypermind-0.24.0}/review/models.py +0 -0
  363. {hypermind-0.23.0 → hypermind-0.24.0}/review/runner.py +0 -0
  364. {hypermind-0.23.0 → hypermind-0.24.0}/src/hmctl/__init__.py +0 -0
  365. {hypermind-0.23.0 → hypermind-0.24.0}/src/hmctl/cli.py +0 -0
  366. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/_deprecations.py +0 -0
  367. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/agent.py +0 -0
  368. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/agent_card.py +0 -0
  369. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/api/__init__.py +0 -0
  370. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/api/app.py +0 -0
  371. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/capability.py +0 -0
  372. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/consult.py +0 -0
  373. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/consult_bias.py +0 -0
  374. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/contract_net.py +0 -0
  375. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/__init__.py +0 -0
  376. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/cose_encrypt.py +0 -0
  377. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/dkg.py +0 -0
  378. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/domain.py +0 -0
  379. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/frost.py +0 -0
  380. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/hashing.py +0 -0
  381. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/hlc.py +0 -0
  382. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/hpke.py +0 -0
  383. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/kms.py +0 -0
  384. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/kms_backends/__init__.py +0 -0
  385. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/kms_backends/aws.py +0 -0
  386. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/kms_backends/azure.py +0 -0
  387. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/kms_backends/gcp.py +0 -0
  388. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/kms_backends/vault.py +0 -0
  389. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/namespace_root.py +0 -0
  390. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/pq.py +0 -0
  391. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/room_epoch.py +0 -0
  392. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/crypto/signing.py +0 -0
  393. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/deliberation.py +0 -0
  394. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/did_web.py +0 -0
  395. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/dispute.py +0 -0
  396. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/errors.py +0 -0
  397. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/eval/__init__.py +0 -0
  398. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/eval/calibration.py +0 -0
  399. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/eval/comparison.py +0 -0
  400. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/eval/replay.py +0 -0
  401. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/eval/swarm_iq.py +0 -0
  402. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/__init__.py +0 -0
  403. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/citation_graph.py +0 -0
  404. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/correlated_agreement.py +0 -0
  405. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/embedding_registry.py +0 -0
  406. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/kernel_store.py +0 -0
  407. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/rekor.py +0 -0
  408. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/reputation.py +0 -0
  409. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/swarm_memory.py +0 -0
  410. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/knowledge/transparency.py +0 -0
  411. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/__init__.py +0 -0
  412. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/bridge.py +0 -0
  413. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/client.py +0 -0
  414. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/provenance.py +0 -0
  415. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/relata_tools.py +0 -0
  416. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/server.py +0 -0
  417. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mcp/transport.py +0 -0
  418. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/__init__.py +0 -0
  419. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/active.py +0 -0
  420. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/belief.py +0 -0
  421. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/deliberator.py +0 -0
  422. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/diversity.py +0 -0
  423. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/evolve.py +0 -0
  424. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/federation.py +0 -0
  425. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/goals.py +0 -0
  426. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/integration.py +0 -0
  427. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/mediator.py +0 -0
  428. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/memory_store.py +0 -0
  429. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/policy.py +0 -0
  430. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/records.py +0 -0
  431. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/roles.py +0 -0
  432. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/sybil_guard.py +0 -0
  433. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/mind/world_model.py +0 -0
  434. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/namespace.py +0 -0
  435. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/namespace_policy.py +0 -0
  436. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/observability/__init__.py +0 -0
  437. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/observability/asgi.py +0 -0
  438. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/observability/cost.py +0 -0
  439. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/observability/otel_export.py +0 -0
  440. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/observability/recorder.py +0 -0
  441. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/observability/swarm_trace.py +0 -0
  442. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/__init__.py +0 -0
  443. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/context.py +0 -0
  444. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/deliberate.py +0 -0
  445. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/distributed/__main__.py +0 -0
  446. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/distributed/protocol.py +0 -0
  447. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/distributed/serde.py +0 -0
  448. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/distributed/worker.py +0 -0
  449. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/experiment.py +0 -0
  450. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/groundtruth.py +0 -0
  451. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/interaction.py +0 -0
  452. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/intervention.py +0 -0
  453. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/metrics.py +0 -0
  454. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/model.py +0 -0
  455. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/quality.py +0 -0
  456. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/query.py +0 -0
  457. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/receipt.py +0 -0
  458. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/report.py +0 -0
  459. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/retrieval.py +0 -0
  460. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/sim.py +0 -0
  461. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/stream.py +0 -0
  462. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/templates/__init__.py +0 -0
  463. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/think.py +0 -0
  464. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/orgs/tools.py +0 -0
  465. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/pin_policy.py +0 -0
  466. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/py.typed +0 -0
  467. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/__init__.py +0 -0
  468. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/anthropic.py +0 -0
  469. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/base.py +0 -0
  470. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/openai.py +0 -0
  471. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/router.py +0 -0
  472. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/structured.py +0 -0
  473. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/responders/tools.py +0 -0
  474. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/revocation.py +0 -0
  475. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/rule_ids.py +0 -0
  476. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
  477. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/schemas/namespace_accept.cddl +0 -0
  478. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/schemas/namespace_create.cddl +0 -0
  479. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
  480. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/schemas/namespace_invite.cddl +0 -0
  481. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
  482. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/__init__.py +0 -0
  483. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/_persona_registry.py +0 -0
  484. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/_scenario_impl.py +0 -0
  485. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/app.py +0 -0
  486. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/backends/__init__.py +0 -0
  487. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/backends/anchor.py +0 -0
  488. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/backends/local.py +0 -0
  489. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/backends/server.py +0 -0
  490. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/cli_command.py +0 -0
  491. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/config.py +0 -0
  492. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/deployment.py +0 -0
  493. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/knowledge.py +0 -0
  494. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/learning.py +0 -0
  495. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/__init__.py +0 -0
  496. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
  497. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/aar.py +0 -0
  498. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/backtest.py +0 -0
  499. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
  500. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/conformance.py +0 -0
  501. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/evaluation.py +0 -0
  502. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/governance.py +0 -0
  503. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/redteam.py +0 -0
  504. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/tabletop.py +0 -0
  505. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/tournament.py +0 -0
  506. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/modes/whatif.py +0 -0
  507. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/namespace.py +0 -0
  508. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/personas.py +0 -0
  509. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/prompt_generator.py +0 -0
  510. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
  511. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
  512. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
  513. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
  514. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/registry.py +0 -0
  515. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/runner.py +0 -0
  516. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/scenario.py +0 -0
  517. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/swarms.py +0 -0
  518. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
  519. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
  520. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
  521. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
  522. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
  523. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
  524. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
  525. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
  526. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
  527. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
  528. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
  529. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
  530. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
  531. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
  532. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
  533. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
  534. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/tool_registry.py +0 -0
  535. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/topic_adapter.py +0 -0
  536. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/simlab/topic_questions.py +0 -0
  537. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/storage/__init__.py +0 -0
  538. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/storage/backend.py +0 -0
  539. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/storage/relata.py +0 -0
  540. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/storage/sqlite.py +0 -0
  541. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/sync.py +0 -0
  542. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/tal.py +0 -0
  543. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/tasks.py +0 -0
  544. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/testing.py +0 -0
  545. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/tools/__init__.py +0 -0
  546. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/tools/registry.py +0 -0
  547. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/__init__.py +0 -0
  548. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/anti_entropy.py +0 -0
  549. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/bus.py +0 -0
  550. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/knows_delta.py +0 -0
  551. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/libp2p.py +0 -0
  552. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/placement.py +0 -0
  553. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/tcp.py +0 -0
  554. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/transport/tls_profile.py +0 -0
  555. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/types.py +0 -0
  556. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/uncertainty.py +0 -0
  557. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/wire.py +0 -0
  558. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/workflow/__init__.py +0 -0
  559. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/workflow/engine.py +0 -0
  560. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/workflow/plan.py +0 -0
  561. {hypermind-0.23.0 → hypermind-0.24.0}/src/hypermind/workflow/repair.py +0 -0
  562. {hypermind-0.23.0 → hypermind-0.24.0}/storage-backend-requirements.md +0 -0
  563. {hypermind-0.23.0 → hypermind-0.24.0}/tests/__init__.py +0 -0
  564. {hypermind-0.23.0 → hypermind-0.24.0}/tests/api/__init__.py +0 -0
  565. {hypermind-0.23.0 → hypermind-0.24.0}/tests/api/test_eval_endpoints.py +0 -0
  566. {hypermind-0.23.0 → hypermind-0.24.0}/tests/api/test_events_stream.py +0 -0
  567. {hypermind-0.23.0 → hypermind-0.24.0}/tests/api/test_management_app.py +0 -0
  568. {hypermind-0.23.0 → hypermind-0.24.0}/tests/chaos/__init__.py +0 -0
  569. {hypermind-0.23.0 → hypermind-0.24.0}/tests/chaos/test_gossip_amplification.py +0 -0
  570. {hypermind-0.23.0 → hypermind-0.24.0}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
  571. {hypermind-0.23.0 → hypermind-0.24.0}/tests/chaos/test_partition_during_workflow.py +0 -0
  572. {hypermind-0.23.0 → hypermind-0.24.0}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
  573. {hypermind-0.23.0 → hypermind-0.24.0}/tests/chaos/test_slow_peer.py +0 -0
  574. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/__init__.py +0 -0
  575. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/generate_vectors.py +0 -0
  576. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/SIGNING.md +0 -0
  577. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/agent-card-01.json +0 -0
  578. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/agent-card-02.json +0 -0
  579. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/capability-01.json +0 -0
  580. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/capability-02.json +0 -0
  581. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/capability-03.json +0 -0
  582. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/dispute-01.json +0 -0
  583. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/dispute-02.json +0 -0
  584. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/dispute-03.json +0 -0
  585. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/dispute-04.json +0 -0
  586. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/dispute-05.json +0 -0
  587. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/frost-01.json +0 -0
  588. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/frost-02.json +0 -0
  589. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/frost-03.json +0 -0
  590. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/knows-delta-01.json +0 -0
  591. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/knows-delta-02.json +0 -0
  592. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/mcp-prov-01.json +0 -0
  593. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/mcp-prov-02.json +0 -0
  594. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/merkle-01.json +0 -0
  595. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/merkle-02.json +0 -0
  596. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/merkle-03.json +0 -0
  597. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/merkle-04.json +0 -0
  598. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/rep-decay-01.json +0 -0
  599. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/task-01.json +0 -0
  600. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/task-02.json +0 -0
  601. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/trace-01.json +0 -0
  602. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/trace-02.json +0 -0
  603. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/wire-envelope-01.json +0 -0
  604. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/wire-envelope-02.json +0 -0
  605. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/wire-envelope-03.json +0 -0
  606. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/wire-envelope-04.json +0 -0
  607. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conformance/vectors/wire-envelope-05.json +0 -0
  608. {hypermind-0.23.0 → hypermind-0.24.0}/tests/conftest.py +0 -0
  609. {hypermind-0.23.0 → hypermind-0.24.0}/tests/fake_kms.py +0 -0
  610. {hypermind-0.23.0 → hypermind-0.24.0}/tests/harness/__init__.py +0 -0
  611. {hypermind-0.23.0 → hypermind-0.24.0}/tests/harness/conftest.py +0 -0
  612. {hypermind-0.23.0 → hypermind-0.24.0}/tests/harness/test_assertion_library.py +0 -0
  613. {hypermind-0.23.0 → hypermind-0.24.0}/tests/harness/test_runner_lifecycle.py +0 -0
  614. {hypermind-0.23.0 → hypermind-0.24.0}/tests/harness/test_threat_intel_harness.py +0 -0
  615. {hypermind-0.23.0 → hypermind-0.24.0}/tests/integration/__init__.py +0 -0
  616. {hypermind-0.23.0 → hypermind-0.24.0}/tests/integration/test_kms_aws.py +0 -0
  617. {hypermind-0.23.0 → hypermind-0.24.0}/tests/integration/test_kms_azure.py +0 -0
  618. {hypermind-0.23.0 → hypermind-0.24.0}/tests/integration/test_kms_gcp.py +0 -0
  619. {hypermind-0.23.0 → hypermind-0.24.0}/tests/integration/test_kms_vault.py +0 -0
  620. {hypermind-0.23.0 → hypermind-0.24.0}/tests/integration/test_relata_server.py +0 -0
  621. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/_fakes.py +0 -0
  622. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_adversarial.py +0 -0
  623. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_concurrency.py +0 -0
  624. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_context.py +0 -0
  625. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_convergence.py +0 -0
  626. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_deliberator.py +0 -0
  627. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_embeddings.py +0 -0
  628. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_experiment.py +0 -0
  629. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_graph_retrieval.py +0 -0
  630. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_groundtruth.py +0 -0
  631. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_hybrid_retriever.py +0 -0
  632. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_interaction.py +0 -0
  633. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_intervention.py +0 -0
  634. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_lightweight.py +0 -0
  635. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_metrics.py +0 -0
  636. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_model.py +0 -0
  637. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_ner.py +0 -0
  638. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_quality.py +0 -0
  639. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_query.py +0 -0
  640. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_rag.py +0 -0
  641. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_receipt.py +0 -0
  642. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_report.py +0 -0
  643. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_scale.py +0 -0
  644. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_sim.py +0 -0
  645. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_stream.py +0 -0
  646. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_templates.py +0 -0
  647. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_think.py +0 -0
  648. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_tool_traces.py +0 -0
  649. {hypermind-0.23.0 → hypermind-0.24.0}/tests/orgs/test_tools.py +0 -0
  650. {hypermind-0.23.0 → hypermind-0.24.0}/tests/responders/__init__.py +0 -0
  651. {hypermind-0.23.0 → hypermind-0.24.0}/tests/responders/test_responders.py +0 -0
  652. {hypermind-0.23.0 → hypermind-0.24.0}/tests/responders/test_router.py +0 -0
  653. {hypermind-0.23.0 → hypermind-0.24.0}/tests/responders/test_structured_response.py +0 -0
  654. {hypermind-0.23.0 → hypermind-0.24.0}/tests/responders/test_tools.py +0 -0
  655. {hypermind-0.23.0 → hypermind-0.24.0}/tests/review/__init__.py +0 -0
  656. {hypermind-0.23.0 → hypermind-0.24.0}/tests/review/test_agents_parser.py +0 -0
  657. {hypermind-0.23.0 → hypermind-0.24.0}/tests/review/test_models.py +0 -0
  658. {hypermind-0.23.0 → hypermind-0.24.0}/tests/review/test_runner.py +0 -0
  659. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/__init__.py +0 -0
  660. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/conftest.py +0 -0
  661. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_app_endpoints.py +0 -0
  662. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_knowledge.py +0 -0
  663. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_knowledge_reuse.py +0 -0
  664. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_aar.py +0 -0
  665. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_backtest.py +0 -0
  666. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_conformance.py +0 -0
  667. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_evaluation.py +0 -0
  668. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_governance.py +0 -0
  669. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_redteam.py +0 -0
  670. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_tabletop.py +0 -0
  671. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_tournament.py +0 -0
  672. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_modes_whatif.py +0 -0
  673. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_personas.py +0 -0
  674. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_personas_endpoints.py +0 -0
  675. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_recorder_scoping.py +0 -0
  676. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_registry.py +0 -0
  677. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_resolve_outcomes.py +0 -0
  678. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_responder_timeout.py +0 -0
  679. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_runner.py +0 -0
  680. {hypermind-0.23.0 → hypermind-0.24.0}/tests/simlab/test_swarms.py +0 -0
  681. {hypermind-0.23.0 → hypermind-0.24.0}/tests/storage/__init__.py +0 -0
  682. {hypermind-0.23.0 → hypermind-0.24.0}/tests/storage/test_relata_backend.py +0 -0
  683. {hypermind-0.23.0 → hypermind-0.24.0}/tests/storage/test_sqlite_backend.py +0 -0
  684. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_active_multi_step.py +0 -0
  685. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_agent_card.py +0 -0
  686. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_agent_e2e.py +0 -0
  687. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_agent_edge.py +0 -0
  688. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_anti_entropy.py +0 -0
  689. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_anti_entropy_multiround.py +0 -0
  690. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_anti_entropy_selfheal.py +0 -0
  691. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_appendix_z_conformance.py +0 -0
  692. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_appendix_z_vectors.py +0 -0
  693. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_arg_dag_edge_types.py +0 -0
  694. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_backpressure.py +0 -0
  695. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_belief_revision.py +0 -0
  696. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_bias_detector.py +0 -0
  697. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_block_reason.py +0 -0
  698. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_calibration.py +0 -0
  699. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability.py +0 -0
  700. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability_canonical.py +0 -0
  701. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability_chain.py +0 -0
  702. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability_edge.py +0 -0
  703. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability_enforcement.py +0 -0
  704. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability_namespace_caveat.py +0 -0
  705. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_capability_revocation.py +0 -0
  706. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_citation_graph.py +0 -0
  707. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_cli.py +0 -0
  708. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_cli_interop.py +0 -0
  709. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_composite_lamps_prefix.py +0 -0
  710. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_consult.py +0 -0
  711. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_consult_stream.py +0 -0
  712. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_consult_stream_t4.py +0 -0
  713. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_contract_net_disputed_award.py +0 -0
  714. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_contract_net_frost_award.py +0 -0
  715. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_contract_net_happy.py +0 -0
  716. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_contract_net_reputation_scoring.py +0 -0
  717. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_contract_net_sybil_filter.py +0 -0
  718. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_correlated_agreement.py +0 -0
  719. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_cose_encrypt_roundtrip.py +0 -0
  720. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_cost_tracker.py +0 -0
  721. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_cross_namespace_consult.py +0 -0
  722. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_crypto.py +0 -0
  723. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_deliberation.py +0 -0
  724. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_deliberator_cap.py +0 -0
  725. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_deliberator_observe.py +0 -0
  726. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_deprecation_registry.py +0 -0
  727. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_determinism_corpus.py +0 -0
  728. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_dispute.py +0 -0
  729. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_dispute_fsm_full.py +0 -0
  730. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_dispute_mediate.py +0 -0
  731. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_dispute_quorum.py +0 -0
  732. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_dissent.py +0 -0
  733. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_diversity_quorum.py +0 -0
  734. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_dkg.py +0 -0
  735. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_embedding_registry.py +0 -0
  736. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_eval_comparison.py +0 -0
  737. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_examples_runnable.py +0 -0
  738. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_final_coverage.py +0 -0
  739. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_frost.py +0 -0
  740. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_frost_edge.py +0 -0
  741. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_frost_hedged_nonces.py +0 -0
  742. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_frost_persistence.py +0 -0
  743. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_frost_transcript_store_swap.py +0 -0
  744. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_hlc_clock_source.py +0 -0
  745. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_hpke_vectors.py +0 -0
  746. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_info_gain_routing.py +0 -0
  747. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_kernel_store.py +0 -0
  748. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_kms_backends.py +0 -0
  749. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_kms_fake.py +0 -0
  750. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_knows_delta.py +0 -0
  751. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_lamps_oid_canonical.py +0 -0
  752. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_last_lines.py +0 -0
  753. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_libp2p_peer_id.py +0 -0
  754. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_libp2p_scaffold.py +0 -0
  755. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_libp2p_stub.py +0 -0
  756. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mcp_bridge.py +0 -0
  757. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mcp_provenance.py +0 -0
  758. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mcp_tools_list.py +0 -0
  759. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mcp_transport.py +0 -0
  760. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_merkle_transparency.py +0 -0
  761. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_active.py +0 -0
  762. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_deliberator.py +0 -0
  763. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_diversity_sybil_mediator.py +0 -0
  764. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_evolve.py +0 -0
  765. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_goals_policy.py +0 -0
  766. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_records.py +0 -0
  767. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_roles.py +0 -0
  768. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mind_world_model.py +0 -0
  769. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_misc_edge.py +0 -0
  770. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_mtls_profile.py +0 -0
  771. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_namespace_lifecycle.py +0 -0
  772. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_namespace_policy.py +0 -0
  773. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_namespace_policy_acl.py +0 -0
  774. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_observability_asgi.py +0 -0
  775. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_observability_otel.py +0 -0
  776. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_open_factory.py +0 -0
  777. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_oracle_backprop.py +0 -0
  778. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_otel_export.py +0 -0
  779. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_pin_policy.py +0 -0
  780. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_placement_consistent_hash.py +0 -0
  781. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_placement_hint.py +0 -0
  782. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_plan_dag.py +0 -0
  783. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_plan_repair.py +0 -0
  784. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_portable_inclusion_proof.py +0 -0
  785. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_pq_default.py +0 -0
  786. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_pq_dual_vendor.py +0 -0
  787. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_pq_signing.py +0 -0
  788. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_priv_ns_conformance_coverage.py +0 -0
  789. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_property_based.py +0 -0
  790. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_protocol_version.py +0 -0
  791. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_public_surface_v05.py +0 -0
  792. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_pursue_workflow.py +0 -0
  793. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_rate_caveat.py +0 -0
  794. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_recorder_bounded.py +0 -0
  795. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_recorder_tail.py +0 -0
  796. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_reference_verifier_v2.py +0 -0
  797. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_rekor_client.py +0 -0
  798. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_rekor_downgrade.py +0 -0
  799. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_relata_memory_store.py +0 -0
  800. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_relata_tools.py +0 -0
  801. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_remaining_gaps.py +0 -0
  802. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_replay.py +0 -0
  803. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_reputation.py +0 -0
  804. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_reputation_memory.py +0 -0
  805. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_reputation_staleness.py +0 -0
  806. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_review_fixes.py +0 -0
  807. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_revocation.py +0 -0
  808. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_revocation_lifecycle.py +0 -0
  809. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_room_epoch.py +0 -0
  810. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_schema_hash_pinned.py +0 -0
  811. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_secret_redaction.py +0 -0
  812. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle1.py +0 -0
  813. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle2.py +0 -0
  814. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle3.py +0 -0
  815. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
  816. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle3_governance.py +0 -0
  817. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle4.py +0 -0
  818. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
  819. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_self_heal_cycle5.py +0 -0
  820. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_signer_protocol.py +0 -0
  821. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_sth_cross_gossip.py +0 -0
  822. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_iq.py +0 -0
  823. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_iq_at_scale.py +0 -0
  824. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_iq_recommend.py +0 -0
  825. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_memory.py +0 -0
  826. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_memory_federation.py +0 -0
  827. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_trace.py +0 -0
  828. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_swarm_vector_overflow.py +0 -0
  829. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_sync_agent.py +0 -0
  830. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_tal.py +0 -0
  831. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_task_handle.py +0 -0
  832. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_task_handle_network.py +0 -0
  833. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_tcp_duplicate_kid_attack.py +0 -0
  834. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_tcp_edge.py +0 -0
  835. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_tcp_final.py +0 -0
  836. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_tcp_read_loop_cleanup.py +0 -0
  837. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_tcp_transport.py +0 -0
  838. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_theory_of_mind.py +0 -0
  839. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_transport.py +0 -0
  840. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_two_impl_interop.py +0 -0
  841. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_uncertainty.py +0 -0
  842. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_uncertainty_edge.py +0 -0
  843. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_wire.py +0 -0
  844. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_wire_edge_cases.py +0 -0
  845. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_wire_kid_stability.py +0 -0
  846. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_wire_p3.py +0 -0
  847. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_wire_v2.py +0 -0
  848. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_wire_version.py +0 -0
  849. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_witness_preimage_length_prefix.py +0 -0
  850. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_workflow_compensation.py +0 -0
  851. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_workflow_engine.py +0 -0
  852. {hypermind-0.23.0 → hypermind-0.24.0}/tests/test_workflow_replay.py +0 -0
  853. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/__init__.py +0 -0
  854. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/conftest.py +0 -0
  855. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
  856. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_ai_alignment_redteam.py +0 -0
  857. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
  858. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
  859. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_ed_credentials.py +0 -0
  860. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_en_grid_coordinate.py +0 -0
  861. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
  862. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
  863. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
  864. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_gv_21_red_team.py +0 -0
  865. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_hc_06_rare_disease.py +0 -0
  866. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_hc_21_fed_learning.py +0 -0
  867. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_lg_ediscovery.py +0 -0
  868. {hypermind-0.23.0 → hypermind-0.24.0}/tests/usecases/test_mf_supply_chain.py +0 -0
  869. {hypermind-0.23.0 → hypermind-0.24.0}/transport-rust/Cargo.toml +0 -0
  870. {hypermind-0.23.0 → hypermind-0.24.0}/transport-rust/README.md +0 -0
  871. {hypermind-0.23.0 → hypermind-0.24.0}/transport-rust/pyproject.toml +0 -0
  872. {hypermind-0.23.0 → hypermind-0.24.0}/transport-rust/src/lib.rs +0 -0
  873. {hypermind-0.23.0 → hypermind-0.24.0}/webui/index.html +0 -0
  874. {hypermind-0.23.0 → hypermind-0.24.0}/webui/package-lock.json +0 -0
  875. {hypermind-0.23.0 → hypermind-0.24.0}/webui/package.json +0 -0
  876. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/App.vue +0 -0
  877. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/api/client.ts +0 -0
  878. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/ActivityCanvas.vue +0 -0
  879. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/AgentContribution.vue +0 -0
  880. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/BrierHeatmap.vue +0 -0
  881. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/CIQTrajectory.vue +0 -0
  882. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/CitationGraph.vue +0 -0
  883. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/DisputeTimeline.vue +0 -0
  884. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/DissentList.vue +0 -0
  885. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/Logo.vue +0 -0
  886. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/NowAsking.vue +0 -0
  887. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/PersonaRadar.vue +0 -0
  888. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/PopulationGenerator.vue +0 -0
  889. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/Term.vue +0 -0
  890. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/forms/SchemaForm.vue +0 -0
  891. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/AARTimeline.vue +0 -0
  892. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/BacktestScorecard.vue +0 -0
  893. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/ConformanceReport.vue +0 -0
  894. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/CrisisTabletop.vue +0 -0
  895. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/DecisionBracket.vue +0 -0
  896. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/EvaluationReport.vue +0 -0
  897. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/GovernanceReceipt.vue +0 -0
  898. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/MethodNote.vue +0 -0
  899. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/RedTeamReport.vue +0 -0
  900. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/components/result/ScenarioTree.vue +0 -0
  901. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/docs/index.ts +0 -0
  902. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/docs/render.ts +0 -0
  903. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/main.ts +0 -0
  904. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/router.ts +0 -0
  905. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/stores/sims.ts +0 -0
  906. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/styles.css +0 -0
  907. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/types/trace.ts +0 -0
  908. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Agents.vue +0 -0
  909. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Docs.vue +0 -0
  910. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Evidence.vue +0 -0
  911. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Home.vue +0 -0
  912. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/HowItWorks.vue +0 -0
  913. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Knowledge.vue +0 -0
  914. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Namespaces.vue +0 -0
  915. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Report.vue +0 -0
  916. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Security.vue +0 -0
  917. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/SimCompare.vue +0 -0
  918. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/SimDetail.vue +0 -0
  919. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/SimList.vue +0 -0
  920. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/SimLive.vue +0 -0
  921. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/SimNew.vue +0 -0
  922. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/Tools.vue +0 -0
  923. {hypermind-0.23.0 → hypermind-0.24.0}/webui/src/views/UseCases.vue +0 -0
  924. {hypermind-0.23.0 → hypermind-0.24.0}/webui/tsconfig.json +0 -0
  925. {hypermind-0.23.0 → hypermind-0.24.0}/webui/vite.config.ts +0 -0
@@ -14,7 +14,44 @@ changes only on major-version bumps.
14
14
 
15
15
  ## [Unreleased]
16
16
 
17
- _Current trunk; new work after v0.11.0._
17
+ _Current trunk._
18
+
19
+ ## [0.23.0] — 2026-07-08
20
+
21
+ ### Added
22
+ - **Distributed, Locust-style execution** — `hypermind.orgs.distributed`. A master coordinator shards a swarm across workers (other machines or local processes) over a TCP control plane (length-prefixed CBOR frames); each worker runs its shard as `OrgSim(lightweight=True)` against the **shared Relata namespace** and returns bounded aggregates, merged into one `OrgReport` (#177).
23
+ - `Coordinator` / `Worker`, `run_distributed(...)` (single-host convenience), and a `master` / `worker` CLI (`python -m hypermind.orgs.distributed`).
24
+ - Capacity-weighted shard planning; a worker that drops before returning is recorded as a failed shard — the run completes and notes it, never hangs.
25
+ - `OrgSim.export_aggregates()` for the merge; `OrgModel` wire (de)serialisation.
26
+
27
+ ## [0.22.0] — 2026-07-08
28
+
29
+ ### Added
30
+ - **Batched Relata writes** — `RelataBackend(write_batch_size=N)` buffers claim rows and flushes via one bulk `batch_upsert` instead of a per-claim round-trip; `OrgSim` defaults to 64. ~batch× fewer round-trips at scale (#175).
31
+ - **Bounded / streaming report** — `OrgSim(lightweight=True)` caps memory to O(members + windows), not O(records): per-member streaming aggregates + a rolling claim window, exact scorecard totals. `metrics.scorecard_from_aggregates(...)` (#176).
32
+ - Parallel keypair generation at `testbed()` spin-up (thread pool; the crypto releases the GIL) — part of #177.
33
+
34
+ ## [0.21.0] — 2026-07-08
35
+
36
+ ### Added
37
+ - **Native response-quality rubrics** — `hypermind.orgs.quality`: `sim.assess(question)` → `QualityReport`. Four rubric groups, all on by default, switchable via `disable`: native/deterministic (provenance coverage, dispute exposure, reputation support, consensus, abstention — verifiable from the signed ledger), judge-based faithfulness (grounding, hallucination rate, answer relevance, context precision), calibration (Brier, self-consistency), and context recall. Missing deps degrade to informational notes. `llm_judge(...)` factory.
38
+
39
+ ## [0.20.0] — 2026-07-08
40
+
41
+ ### Added
42
+ - **Hybrid retrieval** — `reciprocal_rank_fusion(...)` and `hybrid_retriever(*retrievers, reranker=None)` fuse dense + entity-graph + lexical signals (RRF) with an optional cross-encoder rerank, over our own Relata data. Plugs into the existing `OrgSim(retriever=...)` seam.
43
+
44
+ ## [0.12.0] – [0.19.0] — 2026-06 … 2026-07
45
+
46
+ ### Added
47
+ - **`hypermind.orgs` — the living-simulation engine.** Turn a declarative `OrgModel` / `Unit` / `Seat` into a running multi-agent simulation (research → publish → cite → dispute → resolve → learn → evolve) persisted to Relata, driven by pluggable `Interaction` strategies (`cooperative` / `adversarial` / `crowd`).
48
+ - **Template library**: `university`, `hospital`, `city_at_war`, `foreign_policy_cabinet`, `un_security_council`, `internet_crowd`, `research_lab`, … via `list_templates()` / `get_template()` — the core never imports them.
49
+ - **Per-agent models** (per-seat provider/model or a router) and **group-scoped native tools** (declarative or random grants; ungranted tools are absent, not refused).
50
+ - **Study → ask**: `sim.study(topic)` then `sim.ask(question)` — a transparent, queryable swarm that answers from what it learned, weighted by earned standing.
51
+ - **Proper RAG** for `ask`: lexical → semantic embeddings (`embedder=`, `openai_embedder`) → claim↔entity graph (`use_graph_retrieval`, `MentionGraph`) → real NER hooks (`llm_ner_extractor`, `chat_ner_extractor`, `pioneer_ner_extractor`) → Relata-backed retrieval (`relata_retriever`).
52
+ - **Scorecard & analysis**: reputation ranking, citation DAG, dispute ledger, Brier calibration (#151), convergence metrics (#152), memory-RAG (#153), deliberator mode (#154), tool-trace capture (#155), adversarial dynamics (#156), pluggable ground truth (#157), experiment/variant harness (#158), interventions (#159), visualization snapshots (#160), verifiable receipts (#161).
53
+ - **Scalability hardening** across the engine: bounded peer window, O(1) member indices, top-k cross-pollination, concurrent think phase (`asyncio.gather` + semaphore) and concurrent blocking I/O (`asyncio.to_thread`).
54
+ - `examples/org_university.py` and an expanded examples index.
18
55
 
19
56
  ## [0.11.0] — 2026-05-10
20
57
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hypermind
3
- Version: 0.23.0
3
+ Version: 0.24.0
4
4
  Summary: Federated agent intelligence — reference SDK for the HyperMind SCITT contested-claims profile
5
5
  Project-URL: Homepage, https://github.com/ZySec-AI/hypermind
6
6
  Project-URL: Documentation, https://github.com/ZySec-AI/hypermind/tree/main/docs
@@ -102,7 +102,7 @@ Agents share what they learn. Dispute what they doubt. Build trust over time.
102
102
  [![PyPI](https://img.shields.io/pypi/v/hypermind?color=4c8cff&label=pip%20install%20hypermind)](https://pypi.org/project/hypermind/)
103
103
  [![Python](https://img.shields.io/pypi/pyversions/hypermind?color=4c8cff)](https://pypi.org/project/hypermind/)
104
104
  [![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)
105
- [![Tests](https://img.shields.io/badge/tests-1753%20passing-brightgreen)](#testing--quality)
105
+ [![Tests](https://img.shields.io/badge/tests-2133%20passing-brightgreen)](#testing--quality)
106
106
  [![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen)](#testing--quality)
107
107
  [![Status](https://img.shields.io/badge/status-v0.10-blue)](#project-status)
108
108
 
@@ -147,7 +147,7 @@ Open **http://127.0.0.1:8765** and you'll see:
147
147
  ```bash
148
148
  make run-fast # skip the webui rebuild (when JS hasn't changed)
149
149
  make webui-dev # Vite dev server with hot-reload on :5173
150
- make test # 1753 tests pass, ~80s
150
+ make test # 2133 tests pass, ~80s
151
151
  make demo # examples/01_hello_world from the CLI
152
152
  make demos # all numbered tutorials + scenarios sequentially
153
153
  make help # show all targets
@@ -232,6 +232,10 @@ report.print() # reputation ranking · citation graph · dispute ledger
232
232
  - **Per-agent models.** Any seat can pin its own provider/model (`Seat("Professor", llm="anthropic", model="claude-opus-4-8")`), or hand `OrgSim` a router for random / cost-aware assignment.
233
233
  - **Native tools, group-scoped.** Tools (web search, retrieval, KB query, Relata research) are granted per unit/seat and enforced — an ungranted tool is *absent* from that agent's toolset. Grants can be declarative or randomised; register your own with `hypermind.orgs.register_tool(...)`.
234
234
  - **Relata end-to-end.** Organisation → tenant; member → private memory session (agent kid); claims / disputes / reputation → tenant-scoped ledger rows; chain of custody → the Merkle log. Restart replays the whole org.
235
+ - **Study → ask (a queryable swarm).** Let the swarm learn a topic, then question it: `await sim.study(topic)` then `await sim.ask("...")` — every member recalls what it learned, reasons, and the answers are aggregated weighted by earned standing. `sim.ask` studies first automatically if you skip the explicit step.
236
+ - **Proper RAG.** Retrieval for `ask` is pluggable: lexical (default), semantic embeddings (`embedder=`), the claim↔entity graph (`use_graph_retrieval=True`), or `hybrid_retriever(...)` which fuses dense + graph + lexical via Reciprocal Rank Fusion with an optional cross-encoder rerank. Relata *is* the vector store + graph (`relata_retriever(..., "search_knowledge" / "find_connections")`).
237
+ - **Answer quality, natively.** `await sim.assess(question)` returns a `QualityReport` scoring grounding, hallucination rate, calibration (Brier), self-consistency, and hm-native rubrics that are *verifiable from the signed ledger* — provenance coverage, dispute exposure, reputation-weighted support. All rubrics on by default; missing deps (judge / ground-truth) degrade to informational notes.
238
+ - **Scales like Locust.** `OrgSim(lightweight=True)` caps RAM to O(members), not O(records); Relata writes are batched. For horizontal scale, `hypermind.orgs.distributed` runs a **master/worker** control plane — shard a swarm across processes or machines against the shared Relata namespace, merged into one report (`python -m hypermind.orgs.distributed master/worker`, or `run_distributed(...)`).
235
239
 
236
240
  Worked example: [`examples/org_university.py`](examples/org_university.py). Discover all presets via `hypermind.orgs.templates.list_templates()`.
237
241
 
@@ -14,7 +14,7 @@ Agents share what they learn. Dispute what they doubt. Build trust over time.
14
14
  [![PyPI](https://img.shields.io/pypi/v/hypermind?color=4c8cff&label=pip%20install%20hypermind)](https://pypi.org/project/hypermind/)
15
15
  [![Python](https://img.shields.io/pypi/pyversions/hypermind?color=4c8cff)](https://pypi.org/project/hypermind/)
16
16
  [![License](https://img.shields.io/badge/license-Apache--2.0-green.svg)](LICENSE)
17
- [![Tests](https://img.shields.io/badge/tests-1753%20passing-brightgreen)](#testing--quality)
17
+ [![Tests](https://img.shields.io/badge/tests-2133%20passing-brightgreen)](#testing--quality)
18
18
  [![Coverage](https://img.shields.io/badge/coverage-95%25-brightgreen)](#testing--quality)
19
19
  [![Status](https://img.shields.io/badge/status-v0.10-blue)](#project-status)
20
20
 
@@ -59,7 +59,7 @@ Open **http://127.0.0.1:8765** and you'll see:
59
59
  ```bash
60
60
  make run-fast # skip the webui rebuild (when JS hasn't changed)
61
61
  make webui-dev # Vite dev server with hot-reload on :5173
62
- make test # 1753 tests pass, ~80s
62
+ make test # 2133 tests pass, ~80s
63
63
  make demo # examples/01_hello_world from the CLI
64
64
  make demos # all numbered tutorials + scenarios sequentially
65
65
  make help # show all targets
@@ -144,6 +144,10 @@ report.print() # reputation ranking · citation graph · dispute ledger
144
144
  - **Per-agent models.** Any seat can pin its own provider/model (`Seat("Professor", llm="anthropic", model="claude-opus-4-8")`), or hand `OrgSim` a router for random / cost-aware assignment.
145
145
  - **Native tools, group-scoped.** Tools (web search, retrieval, KB query, Relata research) are granted per unit/seat and enforced — an ungranted tool is *absent* from that agent's toolset. Grants can be declarative or randomised; register your own with `hypermind.orgs.register_tool(...)`.
146
146
  - **Relata end-to-end.** Organisation → tenant; member → private memory session (agent kid); claims / disputes / reputation → tenant-scoped ledger rows; chain of custody → the Merkle log. Restart replays the whole org.
147
+ - **Study → ask (a queryable swarm).** Let the swarm learn a topic, then question it: `await sim.study(topic)` then `await sim.ask("...")` — every member recalls what it learned, reasons, and the answers are aggregated weighted by earned standing. `sim.ask` studies first automatically if you skip the explicit step.
148
+ - **Proper RAG.** Retrieval for `ask` is pluggable: lexical (default), semantic embeddings (`embedder=`), the claim↔entity graph (`use_graph_retrieval=True`), or `hybrid_retriever(...)` which fuses dense + graph + lexical via Reciprocal Rank Fusion with an optional cross-encoder rerank. Relata *is* the vector store + graph (`relata_retriever(..., "search_knowledge" / "find_connections")`).
149
+ - **Answer quality, natively.** `await sim.assess(question)` returns a `QualityReport` scoring grounding, hallucination rate, calibration (Brier), self-consistency, and hm-native rubrics that are *verifiable from the signed ledger* — provenance coverage, dispute exposure, reputation-weighted support. All rubrics on by default; missing deps (judge / ground-truth) degrade to informational notes.
150
+ - **Scales like Locust.** `OrgSim(lightweight=True)` caps RAM to O(members), not O(records); Relata writes are batched. For horizontal scale, `hypermind.orgs.distributed` runs a **master/worker** control plane — shard a swarm across processes or machines against the shared Relata namespace, merged into one report (`python -m hypermind.orgs.distributed master/worker`, or `run_distributed(...)`).
147
151
 
148
152
  Worked example: [`examples/org_university.py`](examples/org_university.py). Discover all presets via `hypermind.orgs.templates.list_templates()`.
149
153
 
@@ -87,6 +87,7 @@ Pick one that matches your domain.
87
87
  | File | Domain | What it shows |
88
88
  |---|---|---|
89
89
  | [`org_university.py`](org_university.py) | Any network | Spin up a templated org (university / city / UNO / crowd), run research → cite → dispute → resolve → evolve, print a reputation + citation report. Per-agent models + group-scoped tools, persisted to Relata. |
90
+ | [`org_distributed.py`](org_distributed.py) | Scale-out | Locust-style distributed run: a master coordinator shards the swarm across workers (processes or machines) against the shared Relata namespace, merged into one report (`hypermind.orgs.distributed`). Single-host convenience + multi-machine CLI. |
90
91
 
91
92
  ### Pilot-shaped demonstrations
92
93
 
@@ -0,0 +1,74 @@
1
+ """THE STORY — one swarm, many workers: scale a simulation like Locust.
2
+
3
+ The single-process engine (``examples/org_university.py``) is great to ~1000s of
4
+ agents. Beyond that you scale *out*: ``hypermind.orgs.distributed`` runs a
5
+ **master coordinator** that shards the swarm across **workers** — processes on
6
+ this box or on other machines — each running its slice as
7
+ ``OrgSim(lightweight=True)`` against the **shared Relata namespace** (the source
8
+ of truth). The coordinator merges every worker's bounded aggregates into one
9
+ ``OrgReport``.
10
+
11
+ This script shows the single-host convenience path (``run_distributed`` starts a
12
+ coordinator plus in-process workers over loopback) — the *same* code path as
13
+ multi-machine. For true multi-machine, use the CLI instead::
14
+
15
+ # on the master host
16
+ python -m hypermind.orgs.distributed master --template university \
17
+ --topic "..." --members 10000 --rounds 8 --expected-workers 4 \
18
+ --host 0.0.0.0 --port 8765 --llm openai --llm-model openai/gpt-4o-mini
19
+
20
+ # on each worker host
21
+ python -m hypermind.orgs.distributed worker \
22
+ --master-host <master-ip> --port 8765 --capacity 2500
23
+
24
+ PREREQUISITES
25
+ * A running Relata instance: docker compose -f deploy/docker-compose.yml up -d relata
26
+ * export RELATA_URL=http://localhost:9090 RELATA_TOKEN=...
27
+ * export OPENAI_API_KEY=... (workers build their own client from env)
28
+
29
+ Run with: python -m examples.org_distributed
30
+ """
31
+
32
+ from __future__ import annotations
33
+
34
+ import asyncio
35
+ import os
36
+
37
+
38
+ async def main() -> None:
39
+ from hypermind.orgs.distributed import run_distributed
40
+ from hypermind.orgs.templates import university
41
+
42
+ relata_url = os.environ.get("RELATA_URL")
43
+ if not relata_url:
44
+ raise SystemExit(
45
+ "Set RELATA_URL (and RELATA_TOKEN) to a running Relata instance. "
46
+ "See deploy/docker-compose.yml."
47
+ )
48
+
49
+ model = university() # the shape; run_distributed scales it across workers
50
+ report = await run_distributed(
51
+ model,
52
+ topic="What limits the accuracy of ab-initio protein folding?",
53
+ members=48, # sharded across the workers below
54
+ rounds=4,
55
+ workers=4, # 4 in-process workers over loopback (each ~12 members)
56
+ config={
57
+ "llm": "openai",
58
+ "llm_model": "openai/gpt-4o-mini",
59
+ "base_url": os.environ.get("OPENAI_BASE_URL"), # e.g. OpenRouter
60
+ "relata_url": relata_url,
61
+ "relata_token": os.environ.get("RELATA_TOKEN"),
62
+ },
63
+ )
64
+
65
+ report.print()
66
+ sc = report.scorecard
67
+ print(
68
+ f"\nmerged across workers → {sc['claims']} claims · {sc['citations']} citations · "
69
+ f"{len(report.standings)} members"
70
+ )
71
+
72
+
73
+ if __name__ == "__main__":
74
+ asyncio.run(main())
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypermind"
7
- version = "0.23.0"
7
+ version = "0.24.0"
8
8
  description = "Federated agent intelligence — reference SDK for the HyperMind SCITT contested-claims profile"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.14"
@@ -73,7 +73,7 @@ open = HyperMindAgent.open
73
73
  #: is held until the §External & human gates clear (IETF I-D, IANA,
74
74
  #: third-party audit, OpenSSF acceptance, ≥3 pilots) — at that point we
75
75
  #: cut ``1.0.0`` GA. See ROADMAP.md §Status snapshot.
76
- __version__ = "0.23.0"
76
+ __version__ = "0.24.0"
77
77
 
78
78
  #: SLSA build-provenance level committed for every release artefact.
79
79
  #: Cosign keyless signing + slsa-github-generator + PEP 740 attestations
@@ -29,24 +29,41 @@ Single host (convenience — coordinator + in-process workers over loopback)::
29
29
  from __future__ import annotations
30
30
 
31
31
  import asyncio
32
+ import logging
32
33
  from typing import Any
33
34
 
34
35
  from hypermind.orgs.distributed.coordinator import Coordinator
35
- from hypermind.orgs.distributed.planning import merge_results, plan_shards
36
+ from hypermind.orgs.distributed.planning import (
37
+ merge_results,
38
+ plan_shards,
39
+ seat_count,
40
+ validate_shardable,
41
+ )
42
+ from hypermind.orgs.distributed.provision import provision_hm_types
36
43
  from hypermind.orgs.distributed.worker import Worker, default_shard_runner
37
44
  from hypermind.orgs.model import OrgModel
38
45
  from hypermind.orgs.report import OrgReport
39
46
 
47
+ logger = logging.getLogger("hypermind.orgs.distributed")
48
+
40
49
  __all__ = [
41
50
  "Coordinator",
51
+ "DistributedError",
42
52
  "Worker",
43
53
  "default_shard_runner",
44
54
  "merge_results",
45
55
  "plan_shards",
56
+ "provision_hm_types",
46
57
  "run_distributed",
58
+ "seat_count",
59
+ "validate_shardable",
47
60
  ]
48
61
 
49
62
 
63
+ class DistributedError(RuntimeError):
64
+ """Raised when a distributed run cannot produce any result (all shards failed)."""
65
+
66
+
50
67
  async def run_distributed(
51
68
  model: OrgModel,
52
69
  topic: str,
@@ -66,7 +83,13 @@ async def run_distributed(
66
83
  Same code path as multi-machine — the only difference is the workers live in
67
84
  this process instead of on remote hosts. Pass ``shard_runner`` to stub the
68
85
  per-shard work (tests); omit it for the real ``OrgSim`` runner.
86
+
87
+ Raises ``ValueError`` up front if the shard plan isn't viable (#190) and
88
+ ``DistributedError`` if every shard fails (#191).
69
89
  """
90
+ # Pre-flight: fail fast with a clear message if a shard would be too small.
91
+ validate_shardable(model, members, [capacity_each] * workers)
92
+
70
93
  coord = Coordinator(
71
94
  model,
72
95
  topic,
@@ -100,4 +123,13 @@ async def run_distributed(
100
123
  ]
101
124
  report = await coord_task
102
125
  await asyncio.gather(*worker_tasks, return_exceptions=True)
126
+
127
+ # Surface shard failures loudly (#191).
128
+ failed = next((e for e in report.events if e["event"] == "shards_failed"), None)
129
+ succeeded = next((e["shards"] for e in report.events if e["event"] == "distributed"), 0)
130
+ if failed:
131
+ msg = f"{failed['count']} shard(s) failed: {failed['detail']}"
132
+ if succeeded == 0:
133
+ raise DistributedError(f"distributed run produced no results — {msg}")
134
+ logger.warning("distributed run completed with failures — %s", msg)
103
135
  return report
@@ -0,0 +1,251 @@
1
+ """The master: a resilient, Locust-style coordinator over a TCP control plane (#177).
2
+
3
+ Drives the whole run: provisions the shared Relata state (#192), gathers workers,
4
+ plans shards, and dispatches them from a **work queue**. A shard whose worker
5
+ errors or disconnects is **requeued and reassigned** to another available worker
6
+ (bounded retries, #191/resilience) — the run only fails a shard after exhausting
7
+ retries, and never hangs. Results merge into one :class:`OrgReport`.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import asyncio
13
+ import contextlib
14
+ import logging
15
+ from collections import deque
16
+ from typing import Any
17
+
18
+ from hypermind.orgs.distributed import protocol as p
19
+ from hypermind.orgs.distributed.planning import merge_results, validate_shardable
20
+ from hypermind.orgs.distributed.provision import provision_hm_types
21
+ from hypermind.orgs.distributed.serde import model_to_dict
22
+ from hypermind.orgs.model import OrgModel
23
+ from hypermind.orgs.report import OrgReport
24
+
25
+ logger = logging.getLogger("hypermind.orgs.distributed")
26
+
27
+
28
+ class Coordinator:
29
+ """Master coordinator. Provision → gather workers → dispatch (with retry) → merge."""
30
+
31
+ def __init__(
32
+ self,
33
+ model: OrgModel,
34
+ topic: str,
35
+ *,
36
+ members: int,
37
+ rounds: int,
38
+ expected_workers: int,
39
+ host: str = "127.0.0.1",
40
+ port: int = 0,
41
+ config: dict[str, Any] | None = None,
42
+ worker_timeout_s: float = 600.0,
43
+ max_retries: int = 2,
44
+ provision: bool = True,
45
+ ) -> None:
46
+ self.model = model
47
+ self.topic = topic
48
+ self.members = members
49
+ self.rounds = rounds
50
+ self.expected_workers = expected_workers
51
+ self.host = host
52
+ self.port = port
53
+ self.config = dict(config or {})
54
+ self.worker_timeout_s = worker_timeout_s
55
+ self.max_retries = max(0, max_retries)
56
+ self.provision = provision
57
+
58
+ self._writers: dict[str, asyncio.StreamWriter] = {}
59
+ self._order: list[str] = []
60
+ self._capacity: dict[str, int] = {}
61
+ self._alive: set[str] = set()
62
+ self._idle: deque[str] = deque()
63
+
64
+ self._shard_members: dict[int, int] = {} # shard_id → member count
65
+ self._pending: deque[int] = deque() # shard_ids awaiting a worker
66
+ self._inflight: dict[str, int] = {} # worker_id → shard_id
67
+ self._attempts: dict[int, int] = {}
68
+ self._results: dict[int, dict[str, Any]] = {}
69
+ self._failed: dict[int, str] = {}
70
+ self._n_shards = 0
71
+
72
+ self._enough_workers = asyncio.Event()
73
+ self._complete = asyncio.Event()
74
+ self._planned = False
75
+ self._lock = asyncio.Lock()
76
+
77
+ async def run(self) -> OrgReport:
78
+ if self.provision and self.config.get("relata_url"):
79
+ # Master drives Relata state: register the ledger types up front.
80
+ result = await asyncio.to_thread(
81
+ provision_hm_types,
82
+ self.config["relata_url"],
83
+ namespace=self.model.namespace,
84
+ token=self.config.get("relata_token"),
85
+ )
86
+ logger.info("provisioned Hm types: %s", result)
87
+
88
+ server = await asyncio.start_server(self._on_conn, self.host, self.port)
89
+ self.port = server.sockets[0].getsockname()[1]
90
+ async with server:
91
+ try:
92
+ await asyncio.wait_for(self._enough_workers.wait(), self.worker_timeout_s)
93
+ await self._plan_and_dispatch()
94
+ await asyncio.wait_for(self._complete.wait(), self.worker_timeout_s)
95
+ finally:
96
+ await self._quit_all()
97
+ return self._merge()
98
+
99
+ # ---- connection lifecycle ------------------------------------------
100
+ async def _on_conn(self, reader: asyncio.StreamReader, writer: asyncio.StreamWriter) -> None:
101
+ worker_id: str | None = None
102
+ try:
103
+ hello = await p.read_frame(reader)
104
+ if hello.get("type") != p.HELLO:
105
+ writer.close()
106
+ return
107
+ worker_id = str(hello["worker_id"])
108
+ async with self._lock:
109
+ self._writers[worker_id] = writer
110
+ self._capacity[worker_id] = max(0, int(hello.get("capacity", 1)))
111
+ self._alive.add(worker_id)
112
+ self._order.append(worker_id)
113
+ self._idle.append(worker_id)
114
+ if len(self._order) >= self.expected_workers:
115
+ self._enough_workers.set()
116
+ if self._planned:
117
+ await self._dispatch() # a late worker can pick up pending/retry work
118
+ await self._read_loop(worker_id, reader)
119
+ except (asyncio.IncompleteReadError, ConnectionError, RuntimeError):
120
+ pass
121
+ finally:
122
+ if worker_id is not None:
123
+ await self._on_worker_gone(worker_id)
124
+
125
+ async def _read_loop(self, worker_id: str, reader: asyncio.StreamReader) -> None:
126
+ while True:
127
+ msg = await p.read_frame(reader)
128
+ mtype = msg.get("type")
129
+ if mtype == p.RESULT:
130
+ await self._on_result(worker_id, int(msg["shard_id"]), msg["aggregates"])
131
+ elif mtype == p.ERROR:
132
+ await self._on_shard_error(worker_id, int(msg["shard_id"]), str(msg.get("message", "worker error")))
133
+ # HEARTBEAT / unknown: keep listening.
134
+
135
+ # ---- scheduling ----------------------------------------------------
136
+ async def _plan_and_dispatch(self) -> None:
137
+ async with self._lock:
138
+ if self._planned:
139
+ return
140
+ caps = [self._capacity[w] for w in self._order]
141
+ counts = validate_shardable(self.model, self.members, caps) # raises on bad plan (#190)
142
+ for n in counts:
143
+ if n > 0:
144
+ sid = self._n_shards
145
+ self._shard_members[sid] = n
146
+ self._pending.append(sid)
147
+ self._n_shards += 1
148
+ self._planned = True
149
+ if self._n_shards == 0:
150
+ self._complete.set()
151
+ await self._dispatch()
152
+
153
+ async def _dispatch(self) -> None:
154
+ async with self._lock:
155
+ model_d = model_to_dict(self.model)
156
+ while self._idle and self._pending:
157
+ worker_id = self._idle.popleft()
158
+ if worker_id not in self._alive:
159
+ continue
160
+ sid = self._pending.popleft()
161
+ self._inflight[worker_id] = sid
162
+ self._attempts[sid] = self._attempts.get(sid, 0) + 1
163
+ await self._send(
164
+ worker_id,
165
+ {
166
+ "type": p.ASSIGN,
167
+ "shard_id": sid,
168
+ "model": model_d,
169
+ "topic": self.topic,
170
+ "rounds": self.rounds,
171
+ "members": self._shard_members[sid],
172
+ "namespace": self.model.namespace,
173
+ "config": self.config,
174
+ },
175
+ )
176
+
177
+ async def _on_result(self, worker_id: str, sid: int, agg: dict[str, Any]) -> None:
178
+ async with self._lock:
179
+ self._results[sid] = agg
180
+ self._inflight.pop(worker_id, None)
181
+ if worker_id in self._alive:
182
+ self._idle.append(worker_id)
183
+ self._maybe_complete()
184
+ await self._dispatch()
185
+
186
+ async def _on_shard_error(self, worker_id: str, sid: int, reason: str) -> None:
187
+ async with self._lock:
188
+ self._inflight.pop(worker_id, None)
189
+ self._requeue_or_fail(sid, reason)
190
+ if worker_id in self._alive:
191
+ self._idle.append(worker_id)
192
+ self._maybe_complete()
193
+ await self._dispatch()
194
+
195
+ async def _on_worker_gone(self, worker_id: str) -> None:
196
+ async with self._lock:
197
+ self._alive.discard(worker_id)
198
+ with contextlib.suppress(ValueError):
199
+ # deque has no remove-by-value guarantee across versions; rebuild
200
+ self._idle = deque(w for w in self._idle if w != worker_id)
201
+ sid = self._inflight.pop(worker_id, None)
202
+ if sid is not None and sid not in self._results:
203
+ self._requeue_or_fail(sid, "worker disconnected before returning a result")
204
+ self._maybe_complete()
205
+ await self._dispatch()
206
+
207
+ def _requeue_or_fail(self, sid: int, reason: str) -> None:
208
+ if sid in self._results:
209
+ return
210
+ if self._attempts.get(sid, 0) <= self.max_retries:
211
+ logger.warning("shard %d failed (%s) — requeuing (attempt %d)", sid, reason, self._attempts.get(sid, 0))
212
+ self._pending.append(sid)
213
+ else:
214
+ logger.error("shard %d permanently failed after %d attempts: %s", sid, self._attempts.get(sid, 0), reason)
215
+ self._failed[sid] = reason
216
+
217
+ def _maybe_complete(self) -> None:
218
+ if not self._planned:
219
+ return
220
+ # Done when every shard is resolved (result or permanent fail) and nothing
221
+ # is left to try or in flight.
222
+ settled = len(self._results) + len(self._failed)
223
+ if settled >= self._n_shards and not self._pending and not self._inflight:
224
+ self._complete.set()
225
+
226
+ async def _send(self, worker_id: str, msg: dict[str, Any]) -> None:
227
+ writer = self._writers.get(worker_id)
228
+ if writer is not None:
229
+ with contextlib.suppress(Exception):
230
+ await p.write_frame(writer, msg)
231
+
232
+ async def _quit_all(self) -> None:
233
+ for writer in list(self._writers.values()):
234
+ with contextlib.suppress(Exception):
235
+ await p.write_frame(writer, {"type": p.QUIT})
236
+ writer.close()
237
+
238
+ def _merge(self) -> OrgReport:
239
+ results = [{"shard_id": sid, **agg} for sid, agg in sorted(self._results.items())]
240
+ report = merge_results(
241
+ org=self.model.name,
242
+ topic=self.topic,
243
+ rounds=self.rounds,
244
+ interaction=self.model.dynamics.interaction,
245
+ results=results,
246
+ )
247
+ if self._failed:
248
+ report.events.append(
249
+ {"event": "shards_failed", "count": len(self._failed), "detail": dict(self._failed)}
250
+ )
251
+ return report
@@ -12,9 +12,40 @@ from __future__ import annotations
12
12
  from typing import Any
13
13
 
14
14
  from hypermind.orgs.metrics import scorecard_from_aggregates
15
+ from hypermind.orgs.model import OrgModel
15
16
  from hypermind.orgs.report import MemberStanding, OrgReport
16
17
 
17
18
 
19
+ def seat_count(model: OrgModel) -> int:
20
+ """Distinct seats in the model — the minimum members a shard can run."""
21
+ return sum(len(u.seats) for u in model.units)
22
+
23
+
24
+ def validate_shardable(model: OrgModel, members: int, capacities: list[int]) -> list[int]:
25
+ """Plan the shards and ensure each is viable (#190).
26
+
27
+ Every worker runs the *whole* model scaled to its shard, so a shard needs at
28
+ least ``seat_count(model)`` members. Raises a clear ``ValueError`` up front
29
+ instead of letting each worker fail silently. Returns the shard plan.
30
+ """
31
+ seats = seat_count(model)
32
+ if members < seats:
33
+ raise ValueError(
34
+ f"members={members} is fewer than the model's {seats} seats — "
35
+ f"even a single shard can't be built. Use members ≥ {seats}."
36
+ )
37
+ counts = plan_shards(members, capacities)
38
+ active = sum(1 for c in counts if c > 0)
39
+ smallest = min((c for c in counts if c > 0), default=0)
40
+ if smallest and smallest < seats:
41
+ raise ValueError(
42
+ f"{members} members across {active} workers ≈ {smallest}/shard, but the model "
43
+ f"has {seats} seats; each shard needs ≥{seats} members. "
44
+ f"Use members ≥ workers×{seats} (≥{active * seats}) or fewer workers."
45
+ )
46
+ return counts
47
+
48
+
18
49
  def plan_shards(members: int, capacities: list[int]) -> list[int]:
19
50
  """Split ``members`` across workers proportional to ``capacities``.
20
51
 
@@ -0,0 +1,57 @@
1
+ """Master-driven Relata provisioning (#192).
2
+
3
+ The governed Relata write path validates object types against the ontology, so
4
+ the four HyperMind ledger types must be registered before any worker writes. The
5
+ master calls :func:`provision_hm_types` on startup ("drive the state"), so a run
6
+ against a fresh Relata just works. Registration is idempotent and persists on the
7
+ server (replayed on restart).
8
+
9
+ Note: ontology *registration* is runtime (this call). Granting the unauthenticated
10
+ ``api-user`` read+write on those types is a **boot-time** server setting in strict
11
+ deployments: ``RELATA_ACL_GRANT=HmClaim:read+write,HmDispute:read+write,``
12
+ ``HmReputation:read+write,HmTranscript:read+write`` (or ``RELATA_ORG_MODE=open``
13
+ for dev). We can't set server env from here, so we surface a clear hint if a
14
+ write is later refused.
15
+ """
16
+
17
+ from __future__ import annotations
18
+
19
+ import json
20
+ import urllib.error
21
+ import urllib.request
22
+
23
+ HM_TYPES = ("HmClaim", "HmDispute", "HmReputation", "HmTranscript")
24
+
25
+
26
+ def provision_hm_types(
27
+ relata_url: str,
28
+ *,
29
+ namespace: str,
30
+ token: str | None = None,
31
+ types: tuple[str, ...] = HM_TYPES,
32
+ timeout_s: float = 10.0,
33
+ ) -> dict[str, str]:
34
+ """Register the Hm* ledger types on the Relata server (idempotent).
35
+
36
+ Returns ``{type_name: "registered" | "exists" | "error: ..."}``. Never
37
+ raises for an already-registered type; a transport error on one type is
38
+ recorded in the result rather than aborting the others.
39
+ """
40
+ out: dict[str, str] = {}
41
+ base = relata_url.rstrip("/")
42
+ for t in types:
43
+ body = json.dumps({"name": t}).encode()
44
+ headers = {"Content-Type": "application/json", "X-Organization-Id": namespace}
45
+ if token:
46
+ headers["Authorization"] = f"Bearer {token}"
47
+ req = urllib.request.Request(f"{base}/types", data=body, headers=headers, method="POST")
48
+ try:
49
+ with urllib.request.urlopen(req, timeout=timeout_s) as resp:
50
+ out[t] = "registered" if resp.status in (200, 201) else f"http {resp.status}"
51
+ except urllib.error.HTTPError as e:
52
+ # 409/400 "already registered" is success for our purposes.
53
+ detail = e.read().decode(errors="replace")[:120]
54
+ out[t] = "exists" if ("registered" in detail or e.code in (409, 422)) else f"error: http {e.code} {detail}"
55
+ except Exception as e:
56
+ out[t] = f"error: {type(e).__name__}: {e}"
57
+ return out