hypermind 0.15.0__tar.gz → 0.17.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 (904) hide show
  1. {hypermind-0.15.0 → hypermind-0.17.0}/PKG-INFO +1 -1
  2. {hypermind-0.15.0 → hypermind-0.17.0}/pyproject.toml +1 -1
  3. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/__init__.py +1 -1
  4. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/__init__.py +4 -0
  5. hypermind-0.17.0/src/hypermind/orgs/query.py +74 -0
  6. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/sim.py +141 -30
  7. hypermind-0.17.0/tests/orgs/test_concurrency.py +101 -0
  8. hypermind-0.17.0/tests/orgs/test_query.py +171 -0
  9. hypermind-0.17.0/tests/orgs/test_scale.py +139 -0
  10. {hypermind-0.15.0 → hypermind-0.17.0}/.editorconfig +0 -0
  11. {hypermind-0.15.0 → hypermind-0.17.0}/.gitattributes +0 -0
  12. {hypermind-0.15.0 → hypermind-0.17.0}/.github/FUNDING.yml +0 -0
  13. {hypermind-0.15.0 → hypermind-0.17.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  14. {hypermind-0.15.0 → hypermind-0.17.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  15. {hypermind-0.15.0 → hypermind-0.17.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  16. {hypermind-0.15.0 → hypermind-0.17.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  17. {hypermind-0.15.0 → hypermind-0.17.0}/.github/renovate.json +0 -0
  18. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/check-license.yml +0 -0
  19. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/code-review-pr.yml +0 -0
  20. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/hotfix-security.yml +0 -0
  21. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/issue-auto-fix.yml +0 -0
  22. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/issue-triage.yml +0 -0
  23. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/pr-standards.yml +0 -0
  24. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/quality.yml +0 -0
  25. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/release.yml +0 -0
  26. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/security.yml +0 -0
  27. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows/stale.yml +0 -0
  28. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/branch-flow-check.yml +0 -0
  29. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/chaos.yml +0 -0
  30. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/check-license.yml +0 -0
  31. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/ci.yml +0 -0
  32. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/code-freeze.yml +0 -0
  33. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/code-review-pr.yml +0 -0
  34. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/code-review.yml +0 -0
  35. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/codeql.yml +0 -0
  36. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/dco.yml +0 -0
  37. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
  38. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/docs.yml +0 -0
  39. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/formal.yml +0 -0
  40. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/fuzz.yml +0 -0
  41. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/hotfix-security.yml +0 -0
  42. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
  43. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/issue-triage.yml +0 -0
  44. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/merge-comment.yml +0 -0
  45. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/pip-audit.yml +0 -0
  46. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/pr-standards.yml +0 -0
  47. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/quality.yml +0 -0
  48. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/release.yml +0 -0
  49. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/sbom.yml +0 -0
  50. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/scorecard.yml +0 -0
  51. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/security.yml +0 -0
  52. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/sprint-retro.yml +0 -0
  53. {hypermind-0.15.0 → hypermind-0.17.0}/.github/workflows-disabled/stale.yml +0 -0
  54. {hypermind-0.15.0 → hypermind-0.17.0}/.gitignore +0 -0
  55. {hypermind-0.15.0 → hypermind-0.17.0}/.pre-commit-config.yaml +0 -0
  56. {hypermind-0.15.0 → hypermind-0.17.0}/.tool-versions +0 -0
  57. {hypermind-0.15.0 → hypermind-0.17.0}/CHANGELOG.md +0 -0
  58. {hypermind-0.15.0 → hypermind-0.17.0}/CHARTER.md +0 -0
  59. {hypermind-0.15.0 → hypermind-0.17.0}/CODEOWNERS +0 -0
  60. {hypermind-0.15.0 → hypermind-0.17.0}/CODE_OF_CONDUCT.md +0 -0
  61. {hypermind-0.15.0 → hypermind-0.17.0}/CONTRIBUTING.md +0 -0
  62. {hypermind-0.15.0 → hypermind-0.17.0}/GOVERNANCE.md +0 -0
  63. {hypermind-0.15.0 → hypermind-0.17.0}/LICENSE +0 -0
  64. {hypermind-0.15.0 → hypermind-0.17.0}/MAINTAINERS.md +0 -0
  65. {hypermind-0.15.0 → hypermind-0.17.0}/Makefile +0 -0
  66. {hypermind-0.15.0 → hypermind-0.17.0}/README.md +0 -0
  67. {hypermind-0.15.0 → hypermind-0.17.0}/RELATA_COMPATIBILITY.md +0 -0
  68. {hypermind-0.15.0 → hypermind-0.17.0}/RELATA_INTEGRATION_PLAN.md +0 -0
  69. {hypermind-0.15.0 → hypermind-0.17.0}/ROADMAP.md +0 -0
  70. {hypermind-0.15.0 → hypermind-0.17.0}/SECURITY.md +0 -0
  71. {hypermind-0.15.0 → hypermind-0.17.0}/bench/README.md +0 -0
  72. {hypermind-0.15.0 → hypermind-0.17.0}/bench/__init__.py +0 -0
  73. {hypermind-0.15.0 → hypermind-0.17.0}/bench/baselines/v0.6.json +0 -0
  74. {hypermind-0.15.0 → hypermind-0.17.0}/bench/bench_consult.py +0 -0
  75. {hypermind-0.15.0 → hypermind-0.17.0}/bench/bench_dispute.py +0 -0
  76. {hypermind-0.15.0 → hypermind-0.17.0}/bench/bench_publish.py +0 -0
  77. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/README.md +0 -0
  78. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/__init__.py +0 -0
  79. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/baselines/v0.10.json +0 -0
  80. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/bench_rfp_latency.py +0 -0
  81. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/bench_task_throughput.py +0 -0
  82. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/bench_workflow_replay.py +0 -0
  83. {hypermind-0.15.0 → hypermind-0.17.0}/bench/coordination/run_all.py +0 -0
  84. {hypermind-0.15.0 → hypermind-0.17.0}/bench/question_sets/geopolitics_q20.json +0 -0
  85. {hypermind-0.15.0 → hypermind-0.17.0}/bench/question_sets/msft_outlook_q10.json +0 -0
  86. {hypermind-0.15.0 → hypermind-0.17.0}/bench/run_bench.py +0 -0
  87. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/README.md +0 -0
  88. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/__init__.py +0 -0
  89. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p1_partition_recovery.py +0 -0
  90. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p2_witness_compromise.py +0 -0
  91. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p3_key_rotation.py +0 -0
  92. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p4_dispute_backlog.py +0 -0
  93. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p5_wire_cutover.py +0 -0
  94. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p6_quorum_loss.py +0 -0
  95. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p7_clock_skew.py +0 -0
  96. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/p8_recorder_outage.py +0 -0
  97. {hypermind-0.15.0 → hypermind-0.17.0}/chaos/run_chaos.py +0 -0
  98. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/Dockerfile +0 -0
  99. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/README.md +0 -0
  100. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/docker-compose.yml +0 -0
  101. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
  102. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
  103. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/grafana/dashboards/hypermind.json +0 -0
  104. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
  105. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
  106. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/k8s/hypermind-deployment.yaml +0 -0
  107. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/prometheus/prometheus.yml +0 -0
  108. {hypermind-0.15.0 → hypermind-0.17.0}/deploy/systemd/hypermind.service +0 -0
  109. {hypermind-0.15.0 → hypermind-0.17.0}/docs/README.md +0 -0
  110. {hypermind-0.15.0 → hypermind-0.17.0}/docs/SIMLAB.md +0 -0
  111. {hypermind-0.15.0 → hypermind-0.17.0}/docs/SIMLAB_AUDIT_PLAN.md +0 -0
  112. {hypermind-0.15.0 → hypermind-0.17.0}/docs/_meta/glossary.md +0 -0
  113. {hypermind-0.15.0 → hypermind-0.17.0}/docs/_meta/provenance.md +0 -0
  114. {hypermind-0.15.0 → hypermind-0.17.0}/docs/_meta/public-surface.md +0 -0
  115. {hypermind-0.15.0 → hypermind-0.17.0}/docs/_meta/standards-map.md +0 -0
  116. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/agent.md +0 -0
  117. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/agent_card.md +0 -0
  118. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/capability.md +0 -0
  119. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/crypto.md +0 -0
  120. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/dispute.md +0 -0
  121. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/knowledge.md +0 -0
  122. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/observability.md +0 -0
  123. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/simlab-openapi.yaml +0 -0
  124. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/sync.md +0 -0
  125. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/tasks.md +0 -0
  126. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/transport.md +0 -0
  127. {hypermind-0.15.0 → hypermind-0.17.0}/docs/api/wire.md +0 -0
  128. {hypermind-0.15.0 → hypermind-0.17.0}/docs/architecture-v0.6.md +0 -0
  129. {hypermind-0.15.0 → hypermind-0.17.0}/docs/assets/hero-swarm.svg +0 -0
  130. {hypermind-0.15.0 → hypermind-0.17.0}/docs/audit/findings.md +0 -0
  131. {hypermind-0.15.0 → hypermind-0.17.0}/docs/audit/scope.md +0 -0
  132. {hypermind-0.15.0 → hypermind-0.17.0}/docs/concepts.md +0 -0
  133. {hypermind-0.15.0 → hypermind-0.17.0}/docs/conformance/authority.md +0 -0
  134. {hypermind-0.15.0 → hypermind-0.17.0}/docs/conformance/bake-off-report.md +0 -0
  135. {hypermind-0.15.0 → hypermind-0.17.0}/docs/conformance/mark-policy.md +0 -0
  136. {hypermind-0.15.0 → hypermind-0.17.0}/docs/decide/01-disqualifiers.md +0 -0
  137. {hypermind-0.15.0 → hypermind-0.17.0}/docs/decide/02-alternatives.md +0 -0
  138. {hypermind-0.15.0 → hypermind-0.17.0}/docs/decide/03-incentive-aligned-cases.md +0 -0
  139. {hypermind-0.15.0 → hypermind-0.17.0}/docs/decide/04-use-cases.md +0 -0
  140. {hypermind-0.15.0 → hypermind-0.17.0}/docs/design/01-architecture.md +0 -0
  141. {hypermind-0.15.0 → hypermind-0.17.0}/docs/design/02-traces.md +0 -0
  142. {hypermind-0.15.0 → hypermind-0.17.0}/docs/design/03-failure-modes.md +0 -0
  143. {hypermind-0.15.0 → hypermind-0.17.0}/docs/design/04-poisoning-defenses.md +0 -0
  144. {hypermind-0.15.0 → hypermind-0.17.0}/docs/design/05-deployment-topology.md +0 -0
  145. {hypermind-0.15.0 → hypermind-0.17.0}/docs/feature-matrix.md +0 -0
  146. {hypermind-0.15.0 → hypermind-0.17.0}/docs/getting-started.md +0 -0
  147. {hypermind-0.15.0 → hypermind-0.17.0}/docs/governance/cna.md +0 -0
  148. {hypermind-0.15.0 → hypermind-0.17.0}/docs/governance/foundation-evaluation.md +0 -0
  149. {hypermind-0.15.0 → hypermind-0.17.0}/docs/hypermind-protocol-spec.md +0 -0
  150. {hypermind-0.15.0 → hypermind-0.17.0}/docs/index.md +0 -0
  151. {hypermind-0.15.0 → hypermind-0.17.0}/docs/legal/export-classification.md +0 -0
  152. {hypermind-0.15.0 → hypermind-0.17.0}/docs/lts.md +0 -0
  153. {hypermind-0.15.0 → hypermind-0.17.0}/docs/migrate/v0.x-to-v1.0.md +0 -0
  154. {hypermind-0.15.0 → hypermind-0.17.0}/docs/migration/v0.7.md +0 -0
  155. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/00-prerequisites.md +0 -0
  156. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/README.md +0 -0
  157. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/after.md +0 -0
  158. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
  159. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
  160. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
  161. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
  162. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e05-break-it.md +0 -0
  163. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
  164. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/exercises/e07-first-pr.md +0 -0
  165. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/glossary.md +0 -0
  166. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
  167. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
  168. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/02-architecture-tour.md +0 -0
  169. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/03-spec-literacy.md +0 -0
  170. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/04-cryptography.md +0 -0
  171. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/05-cbor-cose.md +0 -0
  172. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/06-transparency-logs.md +0 -0
  173. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/07-distributed-systems.md +0 -0
  174. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/08-async-python.md +0 -0
  175. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/topics/09-security-mindset.md +0 -0
  176. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/week-1-foundations.md +0 -0
  177. {hypermind-0.15.0 → hypermind-0.17.0}/docs/onboarding/week-2-deep-dive.md +0 -0
  178. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/01-deployment.md +0 -0
  179. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/02-runbook.md +0 -0
  180. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/03-resource-budget.md +0 -0
  181. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/backup-restore.md +0 -0
  182. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/data-residency.md +0 -0
  183. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/key-rotation.md +0 -0
  184. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
  185. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/key-rotation.md +0 -0
  186. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/kms-rotation.md +0 -0
  187. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/multi-host-deploy.md +0 -0
  188. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/partition-heal.md +0 -0
  189. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/quorum-loss.md +0 -0
  190. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
  191. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/wire-cutover.md +0 -0
  192. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/witness-compromise.md +0 -0
  193. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/runbooks/workflow-replay.md +0 -0
  194. {hypermind-0.15.0 → hypermind-0.17.0}/docs/operate/slo.md +0 -0
  195. {hypermind-0.15.0 → hypermind-0.17.0}/docs/paper/00-patent.md +0 -0
  196. {hypermind-0.15.0 → hypermind-0.17.0}/docs/paper/hypermind-paper-draft.md +0 -0
  197. {hypermind-0.15.0 → hypermind-0.17.0}/docs/paper/hypermind-paper.docx +0 -0
  198. {hypermind-0.15.0 → hypermind-0.17.0}/docs/paper/hypermind-paper.tex +0 -0
  199. {hypermind-0.15.0 → hypermind-0.17.0}/docs/release-notes/v1.0-checklist.md +0 -0
  200. {hypermind-0.15.0 → hypermind-0.17.0}/docs/release-notes/v1.0.0.md +0 -0
  201. {hypermind-0.15.0 → hypermind-0.17.0}/docs/security/threat-model.md +0 -0
  202. {hypermind-0.15.0 → hypermind-0.17.0}/docs/simlab/modes.md +0 -0
  203. {hypermind-0.15.0 → hypermind-0.17.0}/docs/simulations.md +0 -0
  204. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/00-overview.md +0 -0
  205. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/01-transport.md +0 -0
  206. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/02-cryptography.md +0 -0
  207. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/03-messages.md +0 -0
  208. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/04-knowledge-model.md +0 -0
  209. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/05-routing.md +0 -0
  210. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/06-conformance.md +0 -0
  211. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/07-trust-access-layer.md +0 -0
  212. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/08-onboarding-contract.md +0 -0
  213. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/09-agent-sdk.md +0 -0
  214. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/10-disputes.md +0 -0
  215. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/11-witness-transparency.md +0 -0
  216. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/12-governance.md +0 -0
  217. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/13-observability.md +0 -0
  218. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/14-threat-model.md +0 -0
  219. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/15-living-transmission.md +0 -0
  220. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/16-reference-comparisons.md +0 -0
  221. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/17-upgrade-v1.md +0 -0
  222. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/18-revocation.md +0 -0
  223. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/19-autonomy-contract.md +0 -0
  224. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/20-swarm-intelligence.md +0 -0
  225. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/21-belief-state.md +0 -0
  226. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/21-private-namespaces.md +0 -0
  227. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/22-transport-mtls.md +0 -0
  228. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/23-envelope-encryption.md +0 -0
  229. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/24-namespace-identity.md +0 -0
  230. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/25-capability-extensions.md +0 -0
  231. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/26-workflow.md +0 -0
  232. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/27-contract-net.md +0 -0
  233. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/28-distributed-trace.md +0 -0
  234. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/_meta/gaps-closed.md +0 -0
  235. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/appendix-N-calibration.md +0 -0
  236. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/appendix-TLA.md +0 -0
  237. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/appendix-z.md +0 -0
  238. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/errata.md +0 -0
  239. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/index.md +0 -0
  240. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/invariants.md +0 -0
  241. {hypermind-0.15.0 → hypermind-0.17.0}/docs/spec/normative-trace.md +0 -0
  242. {hypermind-0.15.0 → hypermind-0.17.0}/docs/supply-chain/sbom.md +0 -0
  243. {hypermind-0.15.0 → hypermind-0.17.0}/docs/supply-chain/slsa.md +0 -0
  244. {hypermind-0.15.0 → hypermind-0.17.0}/docs/supply-chain/verify-self.md +0 -0
  245. {hypermind-0.15.0 → hypermind-0.17.0}/docs/sustainability.md +0 -0
  246. {hypermind-0.15.0 → hypermind-0.17.0}/examples/01_hello_world.py +0 -0
  247. {hypermind-0.15.0 → hypermind-0.17.0}/examples/02_two_agents_dispute.py +0 -0
  248. {hypermind-0.15.0 → hypermind-0.17.0}/examples/03_consult_panel.py +0 -0
  249. {hypermind-0.15.0 → hypermind-0.17.0}/examples/04_oracle_resolve.py +0 -0
  250. {hypermind-0.15.0 → hypermind-0.17.0}/examples/05_consult_to_synthesis.py +0 -0
  251. {hypermind-0.15.0 → hypermind-0.17.0}/examples/06_hybrid_pq.py +0 -0
  252. {hypermind-0.15.0 → hypermind-0.17.0}/examples/07_frost_threshold.py +0 -0
  253. {hypermind-0.15.0 → hypermind-0.17.0}/examples/08_ramp_and_diagnostics.py +0 -0
  254. {hypermind-0.15.0 → hypermind-0.17.0}/examples/09_audit_export_chain.py +0 -0
  255. {hypermind-0.15.0 → hypermind-0.17.0}/examples/10_autonomous_agent.py +0 -0
  256. {hypermind-0.15.0 → hypermind-0.17.0}/examples/11_swarm_deliberation.py +0 -0
  257. {hypermind-0.15.0 → hypermind-0.17.0}/examples/12_swarm_iq_scorecard.py +0 -0
  258. {hypermind-0.15.0 → hypermind-0.17.0}/examples/13_role_specialisation.py +0 -0
  259. {hypermind-0.15.0 → hypermind-0.17.0}/examples/14_active_learning_loop.py +0 -0
  260. {hypermind-0.15.0 → hypermind-0.17.0}/examples/16_wire_message.py +0 -0
  261. {hypermind-0.15.0 → hypermind-0.17.0}/examples/17_tool_delegation.py +0 -0
  262. {hypermind-0.15.0 → hypermind-0.17.0}/examples/18_custom_responder.py +0 -0
  263. {hypermind-0.15.0 → hypermind-0.17.0}/examples/19_governance.py +0 -0
  264. {hypermind-0.15.0 → hypermind-0.17.0}/examples/20_conformance_check.py +0 -0
  265. {hypermind-0.15.0 → hypermind-0.17.0}/examples/21_revocation.py +0 -0
  266. {hypermind-0.15.0 → hypermind-0.17.0}/examples/22_agent_card.py +0 -0
  267. {hypermind-0.15.0 → hypermind-0.17.0}/examples/23_task_delegation.py +0 -0
  268. {hypermind-0.15.0 → hypermind-0.17.0}/examples/24_mcp_tool_call.py +0 -0
  269. {hypermind-0.15.0 → hypermind-0.17.0}/examples/25_swarm_trace.py +0 -0
  270. {hypermind-0.15.0 → hypermind-0.17.0}/examples/README.md +0 -0
  271. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/01_durable_workflow.py +0 -0
  272. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/02_contract_net.py +0 -0
  273. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/03_belief_and_plan.py +0 -0
  274. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/__init__.py +0 -0
  275. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/__init__.py +0 -0
  276. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
  277. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
  278. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
  279. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
  280. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/ed_credentials.py +0 -0
  281. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
  282. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
  283. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
  284. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
  285. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/gv_21_red_team.py +0 -0
  286. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
  287. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
  288. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/lg_ediscovery.py +0 -0
  289. {hypermind-0.15.0 → hypermind-0.17.0}/examples/coordination/usecases/mf_supply_chain.py +0 -0
  290. {hypermind-0.15.0 → hypermind-0.17.0}/examples/e2e_many_agents.py +0 -0
  291. {hypermind-0.15.0 → hypermind-0.17.0}/examples/full_e2e_demo.py +0 -0
  292. {hypermind-0.15.0 → hypermind-0.17.0}/examples/lifecycle.py +0 -0
  293. {hypermind-0.15.0 → hypermind-0.17.0}/examples/org_university.py +0 -0
  294. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_aar.py +0 -0
  295. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_backtest.py +0 -0
  296. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_capability_attenuation.py +0 -0
  297. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_conformance.py +0 -0
  298. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_crisis_tabletop.py +0 -0
  299. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_cross_namespace_federation.py +0 -0
  300. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_decision_tournament.py +0 -0
  301. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_dispute_lifecycle_async.py +0 -0
  302. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_evaluation.py +0 -0
  303. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_geopolitical_crisis.py +0 -0
  304. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_geopolitical_traced.py +0 -0
  305. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_governance_committee.py +0 -0
  306. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_information_pipeline.py +0 -0
  307. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_learning_loop.py +0 -0
  308. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_namespace_trust.py +0 -0
  309. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_persona_panel.py +0 -0
  310. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_private_namespace.py +0 -0
  311. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_red_team.py +0 -0
  312. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_regulated_consortium.py +0 -0
  313. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_threat_intel.py +0 -0
  314. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_vouch_chain.py +0 -0
  315. {hypermind-0.15.0 → hypermind-0.17.0}/examples/scenario_what_if_tree.py +0 -0
  316. {hypermind-0.15.0 → hypermind-0.17.0}/examples/serve_api.py +0 -0
  317. {hypermind-0.15.0 → hypermind-0.17.0}/examples/two_node_tcp.py +0 -0
  318. {hypermind-0.15.0 → hypermind-0.17.0}/formal/README.md +0 -0
  319. {hypermind-0.15.0 → hypermind-0.17.0}/formal/hax-rust/README.md +0 -0
  320. {hypermind-0.15.0 → hypermind-0.17.0}/formal/hax-rust/scope.md +0 -0
  321. {hypermind-0.15.0 → hypermind-0.17.0}/formal/proverif/dispute_fsm.pv +0 -0
  322. {hypermind-0.15.0 → hypermind-0.17.0}/formal/proverif/dispute_liveness.pv +0 -0
  323. {hypermind-0.15.0 → hypermind-0.17.0}/formal/tamarin/capability_chain.spthy +0 -0
  324. {hypermind-0.15.0 → hypermind-0.17.0}/formal/tamarin/dispute_fsm.spthy +0 -0
  325. {hypermind-0.15.0 → hypermind-0.17.0}/formal/tamarin/signed_statement.spthy +0 -0
  326. {hypermind-0.15.0 → hypermind-0.17.0}/formal/tamarin/wire_security.spthy +0 -0
  327. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/README.md +0 -0
  328. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/__init__.py +0 -0
  329. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/fuzz_agent_card.py +0 -0
  330. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/fuzz_anti_entropy.py +0 -0
  331. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/fuzz_capability.py +0 -0
  332. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/fuzz_dispute.py +0 -0
  333. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/fuzz_inclusion_proof.py +0 -0
  334. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/fuzz_wire.py +0 -0
  335. {hypermind-0.15.0 → hypermind-0.17.0}/fuzz/seed_corpus.py +0 -0
  336. {hypermind-0.15.0 → hypermind-0.17.0}/harness/__init__.py +0 -0
  337. {hypermind-0.15.0 → hypermind-0.17.0}/harness/__main__.py +0 -0
  338. {hypermind-0.15.0 → hypermind-0.17.0}/harness/assertions.py +0 -0
  339. {hypermind-0.15.0 → hypermind-0.17.0}/harness/fixtures.py +0 -0
  340. {hypermind-0.15.0 → hypermind-0.17.0}/harness/report.py +0 -0
  341. {hypermind-0.15.0 → hypermind-0.17.0}/harness/roles.py +0 -0
  342. {hypermind-0.15.0 → hypermind-0.17.0}/harness/runner.py +0 -0
  343. {hypermind-0.15.0 → hypermind-0.17.0}/harness/scenario.py +0 -0
  344. {hypermind-0.15.0 → hypermind-0.17.0}/harness/scenarios/__init__.py +0 -0
  345. {hypermind-0.15.0 → hypermind-0.17.0}/harness/scenarios/autonomous_evolution.py +0 -0
  346. {hypermind-0.15.0 → hypermind-0.17.0}/harness/scenarios/swarm_iq_benchmark.py +0 -0
  347. {hypermind-0.15.0 → hypermind-0.17.0}/harness/scenarios/threat_intel.py +0 -0
  348. {hypermind-0.15.0 → hypermind-0.17.0}/mkdocs.yml +0 -0
  349. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/__init__.py +0 -0
  350. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
  351. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/schemas/namespace_accept.cddl +0 -0
  352. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/schemas/namespace_create.cddl +0 -0
  353. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
  354. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/schemas/namespace_invite.cddl +0 -0
  355. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
  356. {hypermind-0.15.0 → hypermind-0.17.0}/reference_verifier/verifier.py +0 -0
  357. {hypermind-0.15.0 → hypermind-0.17.0}/review/__init__.py +0 -0
  358. {hypermind-0.15.0 → hypermind-0.17.0}/review/__main__.py +0 -0
  359. {hypermind-0.15.0 → hypermind-0.17.0}/review/agents.py +0 -0
  360. {hypermind-0.15.0 → hypermind-0.17.0}/review/models.py +0 -0
  361. {hypermind-0.15.0 → hypermind-0.17.0}/review/runner.py +0 -0
  362. {hypermind-0.15.0 → hypermind-0.17.0}/src/hmctl/__init__.py +0 -0
  363. {hypermind-0.15.0 → hypermind-0.17.0}/src/hmctl/cli.py +0 -0
  364. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/_deprecations.py +0 -0
  365. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/agent.py +0 -0
  366. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/agent_card.py +0 -0
  367. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/api/__init__.py +0 -0
  368. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/api/app.py +0 -0
  369. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/capability.py +0 -0
  370. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/consult.py +0 -0
  371. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/consult_bias.py +0 -0
  372. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/contract_net.py +0 -0
  373. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/__init__.py +0 -0
  374. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/cose_encrypt.py +0 -0
  375. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/dkg.py +0 -0
  376. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/domain.py +0 -0
  377. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/frost.py +0 -0
  378. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/hashing.py +0 -0
  379. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/hlc.py +0 -0
  380. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/hpke.py +0 -0
  381. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/kms.py +0 -0
  382. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/kms_backends/__init__.py +0 -0
  383. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/kms_backends/aws.py +0 -0
  384. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/kms_backends/azure.py +0 -0
  385. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/kms_backends/gcp.py +0 -0
  386. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/kms_backends/vault.py +0 -0
  387. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/namespace_root.py +0 -0
  388. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/pq.py +0 -0
  389. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/room_epoch.py +0 -0
  390. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/crypto/signing.py +0 -0
  391. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/deliberation.py +0 -0
  392. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/did_web.py +0 -0
  393. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/dispute.py +0 -0
  394. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/errors.py +0 -0
  395. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/eval/__init__.py +0 -0
  396. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/eval/calibration.py +0 -0
  397. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/eval/comparison.py +0 -0
  398. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/eval/replay.py +0 -0
  399. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/eval/swarm_iq.py +0 -0
  400. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/__init__.py +0 -0
  401. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/citation_graph.py +0 -0
  402. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/correlated_agreement.py +0 -0
  403. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/embedding_registry.py +0 -0
  404. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/kernel_store.py +0 -0
  405. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/rekor.py +0 -0
  406. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/reputation.py +0 -0
  407. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/swarm_memory.py +0 -0
  408. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/knowledge/transparency.py +0 -0
  409. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/__init__.py +0 -0
  410. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/bridge.py +0 -0
  411. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/client.py +0 -0
  412. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/provenance.py +0 -0
  413. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/relata_tools.py +0 -0
  414. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/server.py +0 -0
  415. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mcp/transport.py +0 -0
  416. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/__init__.py +0 -0
  417. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/active.py +0 -0
  418. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/belief.py +0 -0
  419. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/deliberator.py +0 -0
  420. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/diversity.py +0 -0
  421. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/evolve.py +0 -0
  422. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/federation.py +0 -0
  423. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/goals.py +0 -0
  424. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/integration.py +0 -0
  425. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/mediator.py +0 -0
  426. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/memory_store.py +0 -0
  427. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/policy.py +0 -0
  428. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/records.py +0 -0
  429. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/roles.py +0 -0
  430. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/sybil_guard.py +0 -0
  431. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/mind/world_model.py +0 -0
  432. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/namespace.py +0 -0
  433. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/namespace_policy.py +0 -0
  434. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/observability/__init__.py +0 -0
  435. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/observability/asgi.py +0 -0
  436. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/observability/cost.py +0 -0
  437. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/observability/otel_export.py +0 -0
  438. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/observability/recorder.py +0 -0
  439. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/observability/swarm_trace.py +0 -0
  440. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/context.py +0 -0
  441. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/deliberate.py +0 -0
  442. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/experiment.py +0 -0
  443. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/groundtruth.py +0 -0
  444. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/interaction.py +0 -0
  445. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/intervention.py +0 -0
  446. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/metrics.py +0 -0
  447. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/model.py +0 -0
  448. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/receipt.py +0 -0
  449. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/report.py +0 -0
  450. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/stream.py +0 -0
  451. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/templates/__init__.py +0 -0
  452. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/think.py +0 -0
  453. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/orgs/tools.py +0 -0
  454. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/pin_policy.py +0 -0
  455. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/py.typed +0 -0
  456. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/__init__.py +0 -0
  457. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/anthropic.py +0 -0
  458. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/base.py +0 -0
  459. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/openai.py +0 -0
  460. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/router.py +0 -0
  461. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/structured.py +0 -0
  462. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/responders/tools.py +0 -0
  463. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/revocation.py +0 -0
  464. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/rule_ids.py +0 -0
  465. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
  466. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/schemas/namespace_accept.cddl +0 -0
  467. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/schemas/namespace_create.cddl +0 -0
  468. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
  469. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/schemas/namespace_invite.cddl +0 -0
  470. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
  471. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/__init__.py +0 -0
  472. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/_persona_registry.py +0 -0
  473. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/_scenario_impl.py +0 -0
  474. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/app.py +0 -0
  475. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/backends/__init__.py +0 -0
  476. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/backends/anchor.py +0 -0
  477. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/backends/local.py +0 -0
  478. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/backends/server.py +0 -0
  479. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/cli_command.py +0 -0
  480. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/config.py +0 -0
  481. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/deployment.py +0 -0
  482. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/knowledge.py +0 -0
  483. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/learning.py +0 -0
  484. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/__init__.py +0 -0
  485. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
  486. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/aar.py +0 -0
  487. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/backtest.py +0 -0
  488. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
  489. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/conformance.py +0 -0
  490. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/evaluation.py +0 -0
  491. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/governance.py +0 -0
  492. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/redteam.py +0 -0
  493. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/tabletop.py +0 -0
  494. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/tournament.py +0 -0
  495. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/modes/whatif.py +0 -0
  496. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/namespace.py +0 -0
  497. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/personas.py +0 -0
  498. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/prompt_generator.py +0 -0
  499. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
  500. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
  501. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
  502. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
  503. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/registry.py +0 -0
  504. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/runner.py +0 -0
  505. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/scenario.py +0 -0
  506. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/swarms.py +0 -0
  507. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
  508. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
  509. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
  510. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
  511. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
  512. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
  513. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
  514. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
  515. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
  516. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
  517. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
  518. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
  519. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
  520. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
  521. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
  522. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
  523. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/tool_registry.py +0 -0
  524. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/topic_adapter.py +0 -0
  525. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/simlab/topic_questions.py +0 -0
  526. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/storage/__init__.py +0 -0
  527. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/storage/backend.py +0 -0
  528. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/storage/relata.py +0 -0
  529. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/storage/sqlite.py +0 -0
  530. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/sync.py +0 -0
  531. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/tal.py +0 -0
  532. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/tasks.py +0 -0
  533. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/testing.py +0 -0
  534. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/tools/__init__.py +0 -0
  535. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/tools/registry.py +0 -0
  536. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/__init__.py +0 -0
  537. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/anti_entropy.py +0 -0
  538. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/bus.py +0 -0
  539. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/knows_delta.py +0 -0
  540. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/libp2p.py +0 -0
  541. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/placement.py +0 -0
  542. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/tcp.py +0 -0
  543. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/transport/tls_profile.py +0 -0
  544. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/types.py +0 -0
  545. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/uncertainty.py +0 -0
  546. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/wire.py +0 -0
  547. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/workflow/__init__.py +0 -0
  548. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/workflow/engine.py +0 -0
  549. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/workflow/plan.py +0 -0
  550. {hypermind-0.15.0 → hypermind-0.17.0}/src/hypermind/workflow/repair.py +0 -0
  551. {hypermind-0.15.0 → hypermind-0.17.0}/storage-backend-requirements.md +0 -0
  552. {hypermind-0.15.0 → hypermind-0.17.0}/tests/__init__.py +0 -0
  553. {hypermind-0.15.0 → hypermind-0.17.0}/tests/api/__init__.py +0 -0
  554. {hypermind-0.15.0 → hypermind-0.17.0}/tests/api/test_eval_endpoints.py +0 -0
  555. {hypermind-0.15.0 → hypermind-0.17.0}/tests/api/test_events_stream.py +0 -0
  556. {hypermind-0.15.0 → hypermind-0.17.0}/tests/api/test_management_app.py +0 -0
  557. {hypermind-0.15.0 → hypermind-0.17.0}/tests/chaos/__init__.py +0 -0
  558. {hypermind-0.15.0 → hypermind-0.17.0}/tests/chaos/test_gossip_amplification.py +0 -0
  559. {hypermind-0.15.0 → hypermind-0.17.0}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
  560. {hypermind-0.15.0 → hypermind-0.17.0}/tests/chaos/test_partition_during_workflow.py +0 -0
  561. {hypermind-0.15.0 → hypermind-0.17.0}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
  562. {hypermind-0.15.0 → hypermind-0.17.0}/tests/chaos/test_slow_peer.py +0 -0
  563. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/__init__.py +0 -0
  564. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/generate_vectors.py +0 -0
  565. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/SIGNING.md +0 -0
  566. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/agent-card-01.json +0 -0
  567. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/agent-card-02.json +0 -0
  568. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/capability-01.json +0 -0
  569. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/capability-02.json +0 -0
  570. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/capability-03.json +0 -0
  571. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/dispute-01.json +0 -0
  572. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/dispute-02.json +0 -0
  573. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/dispute-03.json +0 -0
  574. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/dispute-04.json +0 -0
  575. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/dispute-05.json +0 -0
  576. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/frost-01.json +0 -0
  577. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/frost-02.json +0 -0
  578. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/frost-03.json +0 -0
  579. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/knows-delta-01.json +0 -0
  580. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/knows-delta-02.json +0 -0
  581. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/mcp-prov-01.json +0 -0
  582. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/mcp-prov-02.json +0 -0
  583. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/merkle-01.json +0 -0
  584. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/merkle-02.json +0 -0
  585. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/merkle-03.json +0 -0
  586. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/merkle-04.json +0 -0
  587. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/rep-decay-01.json +0 -0
  588. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/task-01.json +0 -0
  589. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/task-02.json +0 -0
  590. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/trace-01.json +0 -0
  591. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/trace-02.json +0 -0
  592. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/wire-envelope-01.json +0 -0
  593. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/wire-envelope-02.json +0 -0
  594. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/wire-envelope-03.json +0 -0
  595. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/wire-envelope-04.json +0 -0
  596. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conformance/vectors/wire-envelope-05.json +0 -0
  597. {hypermind-0.15.0 → hypermind-0.17.0}/tests/conftest.py +0 -0
  598. {hypermind-0.15.0 → hypermind-0.17.0}/tests/fake_kms.py +0 -0
  599. {hypermind-0.15.0 → hypermind-0.17.0}/tests/harness/__init__.py +0 -0
  600. {hypermind-0.15.0 → hypermind-0.17.0}/tests/harness/conftest.py +0 -0
  601. {hypermind-0.15.0 → hypermind-0.17.0}/tests/harness/test_assertion_library.py +0 -0
  602. {hypermind-0.15.0 → hypermind-0.17.0}/tests/harness/test_runner_lifecycle.py +0 -0
  603. {hypermind-0.15.0 → hypermind-0.17.0}/tests/harness/test_threat_intel_harness.py +0 -0
  604. {hypermind-0.15.0 → hypermind-0.17.0}/tests/integration/__init__.py +0 -0
  605. {hypermind-0.15.0 → hypermind-0.17.0}/tests/integration/test_kms_aws.py +0 -0
  606. {hypermind-0.15.0 → hypermind-0.17.0}/tests/integration/test_kms_azure.py +0 -0
  607. {hypermind-0.15.0 → hypermind-0.17.0}/tests/integration/test_kms_gcp.py +0 -0
  608. {hypermind-0.15.0 → hypermind-0.17.0}/tests/integration/test_kms_vault.py +0 -0
  609. {hypermind-0.15.0 → hypermind-0.17.0}/tests/integration/test_relata_server.py +0 -0
  610. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/_fakes.py +0 -0
  611. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_adversarial.py +0 -0
  612. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_context.py +0 -0
  613. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_convergence.py +0 -0
  614. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_deliberator.py +0 -0
  615. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_experiment.py +0 -0
  616. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_groundtruth.py +0 -0
  617. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_interaction.py +0 -0
  618. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_intervention.py +0 -0
  619. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_metrics.py +0 -0
  620. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_model.py +0 -0
  621. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_receipt.py +0 -0
  622. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_report.py +0 -0
  623. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_sim.py +0 -0
  624. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_stream.py +0 -0
  625. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_templates.py +0 -0
  626. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_think.py +0 -0
  627. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_tool_traces.py +0 -0
  628. {hypermind-0.15.0 → hypermind-0.17.0}/tests/orgs/test_tools.py +0 -0
  629. {hypermind-0.15.0 → hypermind-0.17.0}/tests/responders/__init__.py +0 -0
  630. {hypermind-0.15.0 → hypermind-0.17.0}/tests/responders/test_responders.py +0 -0
  631. {hypermind-0.15.0 → hypermind-0.17.0}/tests/responders/test_router.py +0 -0
  632. {hypermind-0.15.0 → hypermind-0.17.0}/tests/responders/test_structured_response.py +0 -0
  633. {hypermind-0.15.0 → hypermind-0.17.0}/tests/responders/test_tools.py +0 -0
  634. {hypermind-0.15.0 → hypermind-0.17.0}/tests/review/__init__.py +0 -0
  635. {hypermind-0.15.0 → hypermind-0.17.0}/tests/review/test_agents_parser.py +0 -0
  636. {hypermind-0.15.0 → hypermind-0.17.0}/tests/review/test_models.py +0 -0
  637. {hypermind-0.15.0 → hypermind-0.17.0}/tests/review/test_runner.py +0 -0
  638. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/__init__.py +0 -0
  639. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/conftest.py +0 -0
  640. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_app_endpoints.py +0 -0
  641. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_knowledge.py +0 -0
  642. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_knowledge_reuse.py +0 -0
  643. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_aar.py +0 -0
  644. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_backtest.py +0 -0
  645. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_conformance.py +0 -0
  646. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_evaluation.py +0 -0
  647. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_governance.py +0 -0
  648. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_redteam.py +0 -0
  649. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_tabletop.py +0 -0
  650. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_tournament.py +0 -0
  651. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_modes_whatif.py +0 -0
  652. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_personas.py +0 -0
  653. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_personas_endpoints.py +0 -0
  654. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_recorder_scoping.py +0 -0
  655. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_registry.py +0 -0
  656. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_resolve_outcomes.py +0 -0
  657. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_responder_timeout.py +0 -0
  658. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_runner.py +0 -0
  659. {hypermind-0.15.0 → hypermind-0.17.0}/tests/simlab/test_swarms.py +0 -0
  660. {hypermind-0.15.0 → hypermind-0.17.0}/tests/storage/__init__.py +0 -0
  661. {hypermind-0.15.0 → hypermind-0.17.0}/tests/storage/test_relata_backend.py +0 -0
  662. {hypermind-0.15.0 → hypermind-0.17.0}/tests/storage/test_sqlite_backend.py +0 -0
  663. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_active_multi_step.py +0 -0
  664. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_agent_card.py +0 -0
  665. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_agent_e2e.py +0 -0
  666. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_agent_edge.py +0 -0
  667. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_anti_entropy.py +0 -0
  668. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_anti_entropy_multiround.py +0 -0
  669. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_anti_entropy_selfheal.py +0 -0
  670. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_appendix_z_conformance.py +0 -0
  671. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_appendix_z_vectors.py +0 -0
  672. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_arg_dag_edge_types.py +0 -0
  673. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_backpressure.py +0 -0
  674. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_belief_revision.py +0 -0
  675. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_bias_detector.py +0 -0
  676. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_block_reason.py +0 -0
  677. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_calibration.py +0 -0
  678. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability.py +0 -0
  679. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability_canonical.py +0 -0
  680. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability_chain.py +0 -0
  681. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability_edge.py +0 -0
  682. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability_enforcement.py +0 -0
  683. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability_namespace_caveat.py +0 -0
  684. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_capability_revocation.py +0 -0
  685. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_citation_graph.py +0 -0
  686. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_cli.py +0 -0
  687. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_cli_interop.py +0 -0
  688. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_composite_lamps_prefix.py +0 -0
  689. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_consult.py +0 -0
  690. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_consult_stream.py +0 -0
  691. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_consult_stream_t4.py +0 -0
  692. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_contract_net_disputed_award.py +0 -0
  693. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_contract_net_frost_award.py +0 -0
  694. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_contract_net_happy.py +0 -0
  695. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_contract_net_reputation_scoring.py +0 -0
  696. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_contract_net_sybil_filter.py +0 -0
  697. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_correlated_agreement.py +0 -0
  698. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_cose_encrypt_roundtrip.py +0 -0
  699. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_cost_tracker.py +0 -0
  700. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_cross_namespace_consult.py +0 -0
  701. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_crypto.py +0 -0
  702. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_deliberation.py +0 -0
  703. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_deliberator_cap.py +0 -0
  704. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_deliberator_observe.py +0 -0
  705. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_deprecation_registry.py +0 -0
  706. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_determinism_corpus.py +0 -0
  707. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_dispute.py +0 -0
  708. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_dispute_fsm_full.py +0 -0
  709. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_dispute_mediate.py +0 -0
  710. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_dispute_quorum.py +0 -0
  711. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_dissent.py +0 -0
  712. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_diversity_quorum.py +0 -0
  713. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_dkg.py +0 -0
  714. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_embedding_registry.py +0 -0
  715. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_eval_comparison.py +0 -0
  716. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_examples_runnable.py +0 -0
  717. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_final_coverage.py +0 -0
  718. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_frost.py +0 -0
  719. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_frost_edge.py +0 -0
  720. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_frost_hedged_nonces.py +0 -0
  721. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_frost_persistence.py +0 -0
  722. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_frost_transcript_store_swap.py +0 -0
  723. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_hlc_clock_source.py +0 -0
  724. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_hpke_vectors.py +0 -0
  725. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_info_gain_routing.py +0 -0
  726. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_kernel_store.py +0 -0
  727. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_kms_backends.py +0 -0
  728. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_kms_fake.py +0 -0
  729. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_knows_delta.py +0 -0
  730. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_lamps_oid_canonical.py +0 -0
  731. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_last_lines.py +0 -0
  732. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_libp2p_peer_id.py +0 -0
  733. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_libp2p_scaffold.py +0 -0
  734. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_libp2p_stub.py +0 -0
  735. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mcp_bridge.py +0 -0
  736. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mcp_provenance.py +0 -0
  737. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mcp_tools_list.py +0 -0
  738. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mcp_transport.py +0 -0
  739. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_merkle_transparency.py +0 -0
  740. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_active.py +0 -0
  741. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_deliberator.py +0 -0
  742. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_diversity_sybil_mediator.py +0 -0
  743. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_evolve.py +0 -0
  744. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_goals_policy.py +0 -0
  745. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_records.py +0 -0
  746. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_roles.py +0 -0
  747. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mind_world_model.py +0 -0
  748. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_misc_edge.py +0 -0
  749. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_mtls_profile.py +0 -0
  750. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_namespace_lifecycle.py +0 -0
  751. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_namespace_policy.py +0 -0
  752. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_namespace_policy_acl.py +0 -0
  753. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_observability_asgi.py +0 -0
  754. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_observability_otel.py +0 -0
  755. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_open_factory.py +0 -0
  756. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_oracle_backprop.py +0 -0
  757. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_otel_export.py +0 -0
  758. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_pin_policy.py +0 -0
  759. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_placement_consistent_hash.py +0 -0
  760. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_placement_hint.py +0 -0
  761. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_plan_dag.py +0 -0
  762. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_plan_repair.py +0 -0
  763. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_portable_inclusion_proof.py +0 -0
  764. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_pq_default.py +0 -0
  765. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_pq_dual_vendor.py +0 -0
  766. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_pq_signing.py +0 -0
  767. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_priv_ns_conformance_coverage.py +0 -0
  768. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_property_based.py +0 -0
  769. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_protocol_version.py +0 -0
  770. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_public_surface_v05.py +0 -0
  771. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_pursue_workflow.py +0 -0
  772. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_rate_caveat.py +0 -0
  773. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_recorder_bounded.py +0 -0
  774. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_recorder_tail.py +0 -0
  775. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_reference_verifier_v2.py +0 -0
  776. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_rekor_client.py +0 -0
  777. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_rekor_downgrade.py +0 -0
  778. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_relata_memory_store.py +0 -0
  779. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_relata_tools.py +0 -0
  780. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_remaining_gaps.py +0 -0
  781. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_replay.py +0 -0
  782. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_reputation.py +0 -0
  783. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_reputation_memory.py +0 -0
  784. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_reputation_staleness.py +0 -0
  785. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_review_fixes.py +0 -0
  786. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_revocation.py +0 -0
  787. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_revocation_lifecycle.py +0 -0
  788. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_room_epoch.py +0 -0
  789. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_schema_hash_pinned.py +0 -0
  790. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_secret_redaction.py +0 -0
  791. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle1.py +0 -0
  792. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle2.py +0 -0
  793. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle3.py +0 -0
  794. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
  795. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle3_governance.py +0 -0
  796. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle4.py +0 -0
  797. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
  798. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_self_heal_cycle5.py +0 -0
  799. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_signer_protocol.py +0 -0
  800. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_sth_cross_gossip.py +0 -0
  801. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_iq.py +0 -0
  802. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_iq_at_scale.py +0 -0
  803. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_iq_recommend.py +0 -0
  804. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_memory.py +0 -0
  805. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_memory_federation.py +0 -0
  806. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_trace.py +0 -0
  807. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_swarm_vector_overflow.py +0 -0
  808. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_sync_agent.py +0 -0
  809. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_tal.py +0 -0
  810. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_task_handle.py +0 -0
  811. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_task_handle_network.py +0 -0
  812. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_tcp_duplicate_kid_attack.py +0 -0
  813. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_tcp_edge.py +0 -0
  814. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_tcp_final.py +0 -0
  815. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_tcp_read_loop_cleanup.py +0 -0
  816. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_tcp_transport.py +0 -0
  817. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_theory_of_mind.py +0 -0
  818. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_transport.py +0 -0
  819. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_two_impl_interop.py +0 -0
  820. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_uncertainty.py +0 -0
  821. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_uncertainty_edge.py +0 -0
  822. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_wire.py +0 -0
  823. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_wire_edge_cases.py +0 -0
  824. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_wire_kid_stability.py +0 -0
  825. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_wire_p3.py +0 -0
  826. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_wire_v2.py +0 -0
  827. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_wire_version.py +0 -0
  828. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_witness_preimage_length_prefix.py +0 -0
  829. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_workflow_compensation.py +0 -0
  830. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_workflow_engine.py +0 -0
  831. {hypermind-0.15.0 → hypermind-0.17.0}/tests/test_workflow_replay.py +0 -0
  832. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/__init__.py +0 -0
  833. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/conftest.py +0 -0
  834. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
  835. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_ai_alignment_redteam.py +0 -0
  836. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
  837. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
  838. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_ed_credentials.py +0 -0
  839. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_en_grid_coordinate.py +0 -0
  840. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
  841. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
  842. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
  843. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_gv_21_red_team.py +0 -0
  844. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_hc_06_rare_disease.py +0 -0
  845. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_hc_21_fed_learning.py +0 -0
  846. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_lg_ediscovery.py +0 -0
  847. {hypermind-0.15.0 → hypermind-0.17.0}/tests/usecases/test_mf_supply_chain.py +0 -0
  848. {hypermind-0.15.0 → hypermind-0.17.0}/transport-rust/Cargo.toml +0 -0
  849. {hypermind-0.15.0 → hypermind-0.17.0}/transport-rust/README.md +0 -0
  850. {hypermind-0.15.0 → hypermind-0.17.0}/transport-rust/pyproject.toml +0 -0
  851. {hypermind-0.15.0 → hypermind-0.17.0}/transport-rust/src/lib.rs +0 -0
  852. {hypermind-0.15.0 → hypermind-0.17.0}/webui/index.html +0 -0
  853. {hypermind-0.15.0 → hypermind-0.17.0}/webui/package-lock.json +0 -0
  854. {hypermind-0.15.0 → hypermind-0.17.0}/webui/package.json +0 -0
  855. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/App.vue +0 -0
  856. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/api/client.ts +0 -0
  857. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/ActivityCanvas.vue +0 -0
  858. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/AgentContribution.vue +0 -0
  859. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/BrierHeatmap.vue +0 -0
  860. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/CIQTrajectory.vue +0 -0
  861. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/CitationGraph.vue +0 -0
  862. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/DisputeTimeline.vue +0 -0
  863. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/DissentList.vue +0 -0
  864. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/Logo.vue +0 -0
  865. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/NowAsking.vue +0 -0
  866. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/PersonaRadar.vue +0 -0
  867. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/PopulationGenerator.vue +0 -0
  868. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/Term.vue +0 -0
  869. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/forms/SchemaForm.vue +0 -0
  870. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/AARTimeline.vue +0 -0
  871. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/BacktestScorecard.vue +0 -0
  872. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/ConformanceReport.vue +0 -0
  873. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/CrisisTabletop.vue +0 -0
  874. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/DecisionBracket.vue +0 -0
  875. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/EvaluationReport.vue +0 -0
  876. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/GovernanceReceipt.vue +0 -0
  877. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/MethodNote.vue +0 -0
  878. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/RedTeamReport.vue +0 -0
  879. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/components/result/ScenarioTree.vue +0 -0
  880. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/docs/index.ts +0 -0
  881. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/docs/render.ts +0 -0
  882. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/main.ts +0 -0
  883. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/router.ts +0 -0
  884. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/stores/sims.ts +0 -0
  885. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/styles.css +0 -0
  886. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/types/trace.ts +0 -0
  887. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Agents.vue +0 -0
  888. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Docs.vue +0 -0
  889. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Evidence.vue +0 -0
  890. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Home.vue +0 -0
  891. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/HowItWorks.vue +0 -0
  892. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Knowledge.vue +0 -0
  893. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Namespaces.vue +0 -0
  894. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Report.vue +0 -0
  895. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Security.vue +0 -0
  896. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/SimCompare.vue +0 -0
  897. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/SimDetail.vue +0 -0
  898. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/SimList.vue +0 -0
  899. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/SimLive.vue +0 -0
  900. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/SimNew.vue +0 -0
  901. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/Tools.vue +0 -0
  902. {hypermind-0.15.0 → hypermind-0.17.0}/webui/src/views/UseCases.vue +0 -0
  903. {hypermind-0.15.0 → hypermind-0.17.0}/webui/tsconfig.json +0 -0
  904. {hypermind-0.15.0 → hypermind-0.17.0}/webui/vite.config.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: hypermind
3
- Version: 0.15.0
3
+ Version: 0.17.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
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "hypermind"
7
- version = "0.15.0"
7
+ version = "0.17.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.15.0"
76
+ __version__ = "0.17.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
@@ -59,6 +59,7 @@ from hypermind.orgs.model import (
59
59
  Slot,
60
60
  Unit,
61
61
  )
62
+ from hypermind.orgs.query import Answer, Contributor, aggregate_answer
62
63
  from hypermind.orgs.receipt import VerifyResult, build_receipt, verify_receipt
63
64
  from hypermind.orgs.report import MemberStanding, OrgReport
64
65
  from hypermind.orgs.sim import OrgSim
@@ -74,8 +75,10 @@ from hypermind.orgs.tools import (
74
75
 
75
76
  __all__ = [
76
77
  "Adversarial",
78
+ "Answer",
77
79
  "CallableGroundTruth",
78
80
  "ContextBuilder",
81
+ "Contributor",
79
82
  "Cooperative",
80
83
  "Crowd",
81
84
  "DynamicsConfig",
@@ -100,6 +103,7 @@ __all__ = [
100
103
  "Variant",
101
104
  "VariantResult",
102
105
  "VerifyResult",
106
+ "aggregate_answer",
103
107
  "build_deliberator",
104
108
  "build_receipt",
105
109
  "build_tool",
@@ -0,0 +1,74 @@
1
+ """Study → ask: query a swarm about what it learned.
2
+
3
+ The transparent flow: give a topic and a question, the swarm **studies the
4
+ topic automatically** (the research loop — accumulating private memory, shared
5
+ claims, and reputation), then **answers the question from what it learned**,
6
+ aggregating each member's memory-grounded response weighted by the standing it
7
+ earned. The caller does not orchestrate phases — one call does it.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from dataclasses import asdict, dataclass, field
13
+ from typing import Any
14
+
15
+
16
+ @dataclass(frozen=True)
17
+ class Contributor:
18
+ label: str
19
+ role: str
20
+ reputation: float
21
+ confidence: float
22
+ reasoning: str
23
+
24
+
25
+ @dataclass(frozen=True)
26
+ class Answer:
27
+ question: str
28
+ confidence: float # reputation-weighted swarm confidence, 0..1
29
+ stance: str # "supports" | "opposes" | "uncertain"
30
+ reasoning: str # the highest-standing contributor's rationale
31
+ contributors: list[Contributor] = field(default_factory=list)
32
+
33
+ def to_dict(self) -> dict[str, Any]:
34
+ return asdict(self)
35
+
36
+ def print(self) -> None:
37
+ print(f"\nQ: {self.question}")
38
+ print(f"A: {self.stance.upper()} (confidence {self.confidence:.2f})")
39
+ if self.reasoning:
40
+ print(f" {self.reasoning}")
41
+ if self.contributors:
42
+ print(" drew on:")
43
+ for c in self.contributors[:5]:
44
+ print(f" · {c.label} (rep {c.reputation:.2f}, conf {c.confidence:.2f})")
45
+
46
+
47
+ def aggregate_answer(question: str, responses: list[dict[str, Any]]) -> Answer:
48
+ """Reputation-weighted aggregation of member responses into one answer."""
49
+ contribs = [
50
+ Contributor(
51
+ label=r["label"],
52
+ role=r.get("role", "?"),
53
+ reputation=float(r.get("reputation", 0.5)),
54
+ confidence=float(r.get("confidence", 0.5)),
55
+ reasoning=r.get("reasoning", ""),
56
+ )
57
+ for r in responses
58
+ ]
59
+ contribs.sort(key=lambda c: c.reputation, reverse=True)
60
+
61
+ total_w = sum(c.reputation for c in contribs)
62
+ if total_w > 0:
63
+ weighted = sum(c.confidence * c.reputation for c in contribs) / total_w
64
+ else:
65
+ weighted = 0.5
66
+ stance = "supports" if weighted >= 0.6 else "opposes" if weighted <= 0.4 else "uncertain"
67
+ lead = next((c.reasoning for c in contribs if c.reasoning), "")
68
+ return Answer(
69
+ question=question,
70
+ confidence=weighted,
71
+ stance=stance,
72
+ reasoning=lead,
73
+ contributors=contribs,
74
+ )
@@ -19,11 +19,16 @@ live model or server.
19
19
 
20
20
  from __future__ import annotations
21
21
 
22
+ import asyncio
22
23
  import inspect
24
+ from collections import deque
23
25
  from collections.abc import Callable
24
26
  from dataclasses import dataclass, field
25
27
  from statistics import pvariance
26
- from typing import Any
28
+ from typing import TYPE_CHECKING, Any
29
+
30
+ if TYPE_CHECKING:
31
+ from hypermind.orgs.query import Answer
27
32
 
28
33
  from hypermind.agent import HyperMindAgent
29
34
  from hypermind.mind.memory_store import RelataMemoryStore
@@ -111,6 +116,7 @@ class OrgSim:
111
116
  interventions: list[Any] | None = None,
112
117
  context_builder: Any = None,
113
118
  on_event: Callable[[dict[str, Any]], Any] | None = None,
119
+ max_concurrency: int = 16,
114
120
  members: int | None = None,
115
121
  ) -> None:
116
122
  self.model = model.scaled(members) if members is not None else model
@@ -149,6 +155,14 @@ class OrgSim:
149
155
  self._context_builder = context_builder or default_context_builder
150
156
  self._on_event = on_event
151
157
  self._decisions: list[dict[str, Any]] = [] # deliberator-mode decision trace
158
+ self._studied: bool = False
159
+ self._study_topic: str | None = None
160
+ self._max_concurrency = max(1, max_concurrency)
161
+ # Scale: a bounded window of recent findings (label, unit, conf, text)
162
+ # so peer-grounding is O(window), never a full scan of all claims.
163
+ self._recent_findings: deque[tuple[str, str, float, str]] = deque(maxlen=256)
164
+ self._member_by_kid: dict[bytes, Member] = {} # O(1) resolve lookups
165
+ self._observe_top_k = 12 # deliberator: observe only the top-k peers
152
166
 
153
167
  async def _emit(self, kind: str, **data: Any) -> None:
154
168
  """Fire a structured event to the on_event sink (async or sync)."""
@@ -172,6 +186,57 @@ class OrgSim:
172
186
  async with self:
173
187
  return await self.run(topic, rounds=rounds)
174
188
 
189
+ # ---- study → ask ---------------------------------------------------
190
+
191
+ async def study(self, topic: str, *, rounds: int | None = None) -> OrgReport:
192
+ """Run the learning loop so the swarm accumulates memory + standing on
193
+ ``topic``. Must be called inside ``async with``. Marks the swarm studied."""
194
+ report = await self.run(topic, rounds=rounds)
195
+ self._studied = True
196
+ self._study_topic = topic
197
+ return report
198
+
199
+ async def ask(
200
+ self, question: str, *, topic: str | None = None, study_rounds: int | None = None
201
+ ) -> Answer:
202
+ """Answer ``question`` from what the swarm learned.
203
+
204
+ Transparent + automatic: if the swarm hasn't studied yet it studies
205
+ first (on ``topic`` or the question itself), then every member recalls
206
+ its learned memory, reasons on the question, and the responses are
207
+ aggregated weighted by the standing each member earned.
208
+ """
209
+ from hypermind.orgs.query import aggregate_answer
210
+
211
+ if not self._studied:
212
+ await self.study(topic or question, rounds=study_rounds)
213
+
214
+ # Members answer the question concurrently (network-bound).
215
+ thoughts = await self._gather_think(self._members, question)
216
+ responses: list[dict[str, Any]] = [
217
+ {
218
+ "label": m.label,
219
+ "role": m.role,
220
+ "reputation": self._member_reputation(m),
221
+ "confidence": post.mean(),
222
+ "reasoning": reasoning,
223
+ }
224
+ for m, post, reasoning, _tools in thoughts
225
+ ]
226
+ return aggregate_answer(question, responses)
227
+
228
+ async def inquire(
229
+ self,
230
+ topic: str,
231
+ question: str,
232
+ *,
233
+ study_rounds: int | None = None,
234
+ ) -> Answer:
235
+ """One call: spin up, study ``topic``, answer ``question``, tear down."""
236
+ async with self:
237
+ await self.study(topic, rounds=study_rounds)
238
+ return await self.ask(question)
239
+
175
240
  async def _spin_up(self) -> None:
176
241
  roster = self.model.roster()
177
242
  total = len(roster)
@@ -216,20 +281,22 @@ class OrgSim:
216
281
  bearer_token=self.relata_token,
217
282
  memory_factory=self._relata_memory_factory,
218
283
  )
219
- memory.open()
220
- agent.attach_memory(memory)
284
+ agent.attach_memory(memory) # opened concurrently below
221
285
 
222
286
  allowed = self._grants.get(slot.label, frozenset())
223
287
  responder = self._build_member_responder(slot, allowed)
224
- self._members.append(
225
- Member(
226
- agent=agent,
227
- slot=slot,
228
- responder=responder,
229
- memory=memory,
230
- tools=allowed,
231
- )
288
+ member = Member(
289
+ agent=agent,
290
+ slot=slot,
291
+ responder=responder,
292
+ memory=memory,
293
+ tools=allowed,
232
294
  )
295
+ self._members.append(member)
296
+ self._member_by_kid[member.kid] = member # O(1) resolve lookups
297
+
298
+ # Open all private notebooks concurrently (network I/O), bounded.
299
+ await self._gather_io(m.memory.open for m in self._members if m.memory)
233
300
 
234
301
  def _build_member_responder(self, slot: Slot, allowed: frozenset[str]) -> Any:
235
302
  tool_objs = [build_tool(name, **self._tool_context) for name in sorted(allowed)]
@@ -249,15 +316,47 @@ class OrgSim:
249
316
  )
250
317
 
251
318
  async def _teardown(self) -> None:
319
+ # Close private notebooks concurrently (blocking I/O), agents sequentially
320
+ # (they share one in-process world; close mutates its registries).
321
+ await self._gather_io(m.memory.close for m in self._members if m.memory)
252
322
  for m in self._members:
253
- if m.memory is not None:
254
- m.memory.close()
255
323
  await m.agent.close()
256
324
  if self._backend is not None:
257
325
  self._backend.close()
258
326
 
259
327
  # ---- the loop ------------------------------------------------------
260
328
 
329
+ async def _gather_io(self, sync_calls) -> None:
330
+ """Run blocking I/O callables (Relata open/close) concurrently in a
331
+ thread pool, bounded — so spin-up/teardown of thousands of agents
332
+ doesn't serialise thousands of blocking HTTP round-trips."""
333
+ sem = asyncio.Semaphore(self._max_concurrency)
334
+
335
+ async def one(fn):
336
+ async with sem:
337
+ await asyncio.to_thread(fn)
338
+
339
+ await asyncio.gather(*(one(fn) for fn in sync_calls))
340
+
341
+ async def _gather_think(
342
+ self, members: list[Member], topic: str
343
+ ) -> list[tuple[Member, Uncertainty, str, list]]:
344
+ """Run every member's think() concurrently (bounded).
345
+
346
+ The per-member LLM calls are independent and network-bound, so this is
347
+ the big speed-up: a round's think phase costs ~max(latency) instead of
348
+ sum(latency). Results are returned in member order (gather is ordered),
349
+ so downstream publish/track logic stays deterministic.
350
+ """
351
+ sem = asyncio.Semaphore(self._max_concurrency)
352
+
353
+ async def one(m: Member) -> tuple[Member, Uncertainty, str, list]:
354
+ async with sem:
355
+ post, reasoning, tool_calls = await self._think(m, topic)
356
+ return m, post, reasoning, tool_calls
357
+
358
+ return list(await asyncio.gather(*(one(m) for m in members)))
359
+
261
360
  async def run(self, topic: str, *, rounds: int | None = None) -> OrgReport:
262
361
  """Run the loop.
263
362
 
@@ -297,21 +396,25 @@ class OrgSim:
297
396
  for r in range(rounds):
298
397
  await self._emit("round_start", round=r, members=len(self._members))
299
398
  posteriors: dict[str, float] = {}
300
- for m in self._members:
301
- post, _reasoning, _tools = await self._think(m, topic)
399
+ for m, post, _reasoning, _tools in await self._gather_think(self._members, topic):
302
400
  posteriors[m.label] = post.mean()
303
401
  m.agent.working_memory().setdefault("posteriors", {})[m.unit] = post.mean()
304
- # Cross-pollinate: each member observes its peers' posteriors.
402
+ # Cross-pollinate: each member observes the TOP-K peers by reputation,
403
+ # not every peer — O(members·k) instead of O(members²), so this
404
+ # stays tractable at thousands of agents.
405
+ k = min(len(self._members) - 1, self._observe_top_k)
406
+ ranked = sorted(self._members, key=lambda p: self._member_reputation(p), reverse=True)[
407
+ : k + 1
408
+ ]
305
409
  for m in self._members:
306
- for peer in self._members:
410
+ for peer in ranked:
307
411
  if peer.label == m.label:
308
412
  continue
309
- rep = self._member_reputation(peer)
310
413
  delibs[m.label].observe(
311
414
  {
312
415
  "topic": m.unit,
313
416
  "posterior": posteriors[peer.label],
314
- "reputation": rep,
417
+ "reputation": self._member_reputation(peer),
315
418
  "kid": peer.kid,
316
419
  }
317
420
  )
@@ -363,11 +466,12 @@ class OrgSim:
363
466
  if getattr(iv, "round", None) == r:
364
467
  await iv.apply(self)
365
468
  await self._emit("round_start", round=r, members=len(self._members))
366
- # 1+2+3: recall → think publish.
469
+ # 1+2: recall → think, run concurrently across members (network-bound).
470
+ thoughts = await self._gather_think(self._members, topic)
471
+ # 3: publish — sequential (mutates shared ledger + tracking, deterministic).
367
472
  published: list[tuple[Member, bytes, Uncertainty]] = []
368
473
  posteriors: dict[str, float] = {}
369
- for m in self._members:
370
- post, reasoning, tool_calls = await self._think(m, topic)
474
+ for m, post, reasoning, tool_calls in thoughts:
371
475
  posteriors[m.label] = post.mean()
372
476
  floor = self.interaction.publish_floor(role=m.role, base_floor=dyn.publish_floor)
373
477
  floor = min(1.0, max(0.0, floor + m.floor_adj))
@@ -449,11 +553,12 @@ class OrgSim:
449
553
  return post, reasoning, tool_calls
450
554
 
451
555
  def _recent_peer_findings(self, m: Member, *, limit: int = 3) -> list[str]:
452
- """Top peer findings on the shared ledger same unit first, by
453
- confidence so reasoning is grounded in what others have claimed."""
454
- peers = [c for c in self._claims.values() if c.label != m.label and c.finding]
455
- peers.sort(key=lambda c: (c.unit == m.unit, c.confidence), reverse=True)
456
- return [f"{c.label}: {c.finding}" for c in peers[:limit]]
556
+ """Top peer findings from a **bounded window** of recent claims same
557
+ unit first, by confidence. O(window), never a full scan of all claims,
558
+ so this stays flat as the ledger grows into the millions."""
559
+ peers = [f for f in self._recent_findings if f[0] != m.label]
560
+ peers.sort(key=lambda f: (f[1] == m.unit, f[2]), reverse=True)
561
+ return [f"{label}: {text}" for label, _unit, _conf, text in peers[:limit]]
457
562
 
458
563
  async def _publish(
459
564
  self,
@@ -488,6 +593,8 @@ class OrgSim:
488
593
  finding=reasoning,
489
594
  tool_calls=tool_calls,
490
595
  )
596
+ if reasoning:
597
+ self._recent_findings.append((m.label, m.unit, post.mean(), reasoning))
491
598
  if tool_calls:
492
599
  await self._emit(
493
600
  "tool_call",
@@ -568,8 +675,8 @@ class OrgSim:
568
675
  if info is not None:
569
676
  info.outcome = outcome
570
677
  await self._emit("resolve", by=rec.member_label, unit=unit, outcome=outcome)
571
- # Evolve signal: publisher earns/loses floor headroom.
572
- pub = next((m for m in self._members if m.kid == rec.member_kid), None)
678
+ # Evolve signal: publisher earns/loses floor headroom (O(1) lookup).
679
+ pub = self._member_by_kid.get(rec.member_kid)
573
680
  if pub is not None:
574
681
  pub.floor_adj += -0.03 if outcome else 0.05
575
682
 
@@ -599,10 +706,14 @@ class OrgSim:
599
706
 
600
707
  def _build_report(self, topic: str, rounds: int) -> OrgReport:
601
708
  world = self._members[0].agent._world if self._members else None
709
+ # Index claims by author once (O(claims)) instead of scanning per member.
710
+ by_label: dict[str, list[_ClaimInfo]] = {}
711
+ for c in self._claims.values():
712
+ by_label.setdefault(c.label, []).append(c)
602
713
  standings: list[MemberStanding] = []
603
714
  for m in self._members:
604
715
  score = world.reputation.snapshot(m.kid, m.unit).score if world else 0.0
605
- authored = [c for c in self._claims.values() if c.label == m.label]
716
+ authored = by_label.get(m.label, [])
606
717
  standings.append(
607
718
  MemberStanding(
608
719
  label=m.label,
@@ -0,0 +1,101 @@
1
+ """Concurrent think phase — parallel LLM calls, bounded, order-preserving."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import asyncio
6
+
7
+ import pytest
8
+ from _fakes import FakeMemory, FakeStore, client_factory
9
+
10
+ from hypermind.orgs import DynamicsConfig, OrgModel, OrgSim, Seat, Unit
11
+ from hypermind.responders.base import confidence_to_uncertainty
12
+
13
+
14
+ def _model(members=12) -> OrgModel:
15
+ base = OrgModel(
16
+ name="c",
17
+ namespace="c",
18
+ units=(
19
+ Unit(
20
+ "a",
21
+ seats=(
22
+ Seat("O", role="oracle", authority=0.9),
23
+ Seat("S", role="scout", authority=0.5, headcount=3),
24
+ ),
25
+ ),
26
+ ),
27
+ dynamics=DynamicsConfig(rounds=1),
28
+ )
29
+ return base.scaled(members)
30
+
31
+
32
+ def _make(responder_factory, **kw) -> OrgSim:
33
+ return OrgSim(
34
+ _model(),
35
+ relata_url="http://fake",
36
+ responder_factory=responder_factory,
37
+ relata_client_factory=client_factory(FakeStore()),
38
+ relata_memory_factory=FakeMemory,
39
+ **kw,
40
+ )
41
+
42
+
43
+ @pytest.mark.asyncio
44
+ async def test_think_phase_runs_concurrently():
45
+ # Track how many responder calls are in-flight at once.
46
+ state = {"live": 0, "peak": 0}
47
+
48
+ def factory(slot, tools):
49
+ async def _resp(kid, query):
50
+ state["live"] += 1
51
+ state["peak"] = max(state["peak"], state["live"])
52
+ await asyncio.sleep(0.02) # simulate network latency
53
+ state["live"] -= 1
54
+ return confidence_to_uncertainty(0.8, effective_n=10.0)
55
+
56
+ return _resp
57
+
58
+ await _make(factory).simulate("t", rounds=1)
59
+ # With 12 members and a sequential loop, peak would be 1. Concurrency lifts it.
60
+ assert state["peak"] > 1
61
+
62
+
63
+ @pytest.mark.asyncio
64
+ async def test_concurrency_cap_is_respected():
65
+ state = {"live": 0, "peak": 0}
66
+
67
+ def factory(slot, tools):
68
+ async def _resp(kid, query):
69
+ state["live"] += 1
70
+ state["peak"] = max(state["peak"], state["live"])
71
+ await asyncio.sleep(0.02)
72
+ state["live"] -= 1
73
+ return confidence_to_uncertainty(0.8, effective_n=10.0)
74
+
75
+ return _resp
76
+
77
+ await _make(factory, max_concurrency=3).simulate("t", rounds=1)
78
+ assert state["peak"] <= 3 # never exceeds the cap
79
+
80
+
81
+ @pytest.mark.asyncio
82
+ async def test_results_stay_deterministic_and_ordered():
83
+ # Confidence keyed by member label; concurrency must not scramble attribution.
84
+ order: list[str] = []
85
+
86
+ def factory(slot, tools):
87
+ async def _resp(kid, query):
88
+ # Finish out of submission order to stress ordering.
89
+ await asyncio.sleep(0.01 if slot.seat.role == "scout" else 0.03)
90
+ return confidence_to_uncertainty(
91
+ 0.9 if slot.seat.role == "oracle" else 0.6, effective_n=10.0
92
+ )
93
+
94
+ return _resp
95
+
96
+ report = await _make(factory).simulate("t", rounds=1)
97
+ # Oracle (0.9) outranks scouts (0.6) — attribution preserved despite races.
98
+ top = report.standings[0]
99
+ assert report.summary()["claims"] > 0
100
+ assert all(0.0 <= s.reputation <= 1.0 for s in report.standings)
101
+ assert top.reputation >= min(s.reputation for s in report.standings)
@@ -0,0 +1,171 @@
1
+ """Study → ask (#queryable-swarm): auto-study then answer from learned memory."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import pytest
6
+ from _fakes import FakeStore, client_factory
7
+
8
+ from hypermind.orgs import (
9
+ Answer,
10
+ DynamicsConfig,
11
+ OrgModel,
12
+ OrgSim,
13
+ Seat,
14
+ Unit,
15
+ aggregate_answer,
16
+ )
17
+ from hypermind.responders.base import confidence_to_uncertainty
18
+
19
+
20
+ # --- unit: aggregation ----------------------------------------------------
21
+ def test_aggregate_is_reputation_weighted():
22
+ # High-rep agent says yes (0.9), low-rep says no (0.1) → weighted toward yes.
23
+ responses = [
24
+ {
25
+ "label": "a/O#1",
26
+ "role": "oracle",
27
+ "reputation": 0.95,
28
+ "confidence": 0.9,
29
+ "reasoning": "yes because Z",
30
+ },
31
+ {
32
+ "label": "a/S#1",
33
+ "role": "scout",
34
+ "reputation": 0.2,
35
+ "confidence": 0.1,
36
+ "reasoning": "no",
37
+ },
38
+ ]
39
+ ans = aggregate_answer("Will X work?", responses)
40
+ assert ans.stance == "supports"
41
+ assert ans.confidence > 0.6
42
+ # Lead reasoning comes from the highest-standing contributor.
43
+ assert ans.reasoning == "yes because Z"
44
+ assert ans.contributors[0].label == "a/O#1"
45
+
46
+
47
+ def test_aggregate_opposes_and_uncertain_bands():
48
+ lo = aggregate_answer("q", [{"label": "x", "reputation": 1.0, "confidence": 0.1}])
49
+ assert lo.stance == "opposes"
50
+ mid = aggregate_answer("q", [{"label": "x", "reputation": 1.0, "confidence": 0.5}])
51
+ assert mid.stance == "uncertain"
52
+
53
+
54
+ def test_aggregate_zero_weight_defaults_to_uncertain():
55
+ ans = aggregate_answer("q", [{"label": "x", "reputation": 0.0, "confidence": 0.9}])
56
+ assert ans.confidence == 0.5 and ans.stance == "uncertain"
57
+
58
+
59
+ def test_answer_to_dict_and_print(capsys):
60
+ ans = aggregate_answer(
61
+ "q",
62
+ [{"label": "a", "role": "oracle", "reputation": 0.9, "confidence": 0.8, "reasoning": "R"}],
63
+ )
64
+ d = ans.to_dict()
65
+ assert d["question"] == "q" and d["contributors"][0]["label"] == "a"
66
+ ans.print()
67
+ out = capsys.readouterr().out
68
+ assert "Q: q" in out and "drew on" in out
69
+
70
+
71
+ # --- end-to-end -----------------------------------------------------------
72
+ def _model() -> OrgModel:
73
+ return OrgModel(
74
+ name="q",
75
+ namespace="q",
76
+ units=(
77
+ Unit(
78
+ "a",
79
+ seats=(
80
+ Seat("O", role="oracle", authority=0.9),
81
+ Seat("S", role="scout", authority=0.5, headcount=2),
82
+ ),
83
+ ),
84
+ ),
85
+ dynamics=DynamicsConfig(rounds=2),
86
+ )
87
+
88
+
89
+ class _RecordingMemory:
90
+ """Records remembered content and returns it on recall (learned memory)."""
91
+
92
+ def __init__(self):
93
+ self.contents: list[str] = []
94
+
95
+ def add(self, content, *, confidence=1.0, memory_class="semantic"):
96
+ self.contents.append(content)
97
+ return f"m{len(self.contents)}"
98
+
99
+ def add_batch(self, items, *, session_id=None):
100
+ return [self.add(i) for i in items]
101
+
102
+ def search(self, q, *, top_k=5, as_of=None):
103
+ return [{"content": c, "score": 1.0} for c in self.contents[-top_k:]]
104
+
105
+ def justify(self, mid):
106
+ return {"memory_id": mid}
107
+
108
+ def close(self):
109
+ pass
110
+
111
+
112
+ def _factory(slot, tools):
113
+ async def _resp(kid, query):
114
+ # Answer high; if the agent has learned notes in the prompt, even higher.
115
+ conf = 0.9 if "concluded in earlier rounds" in query else 0.8
116
+ return confidence_to_uncertainty(conf, effective_n=10.0)
117
+
118
+ return _resp
119
+
120
+
121
+ def _sim():
122
+ return OrgSim(
123
+ _model(),
124
+ relata_url="http://fake",
125
+ responder_factory=_factory,
126
+ relata_client_factory=client_factory(FakeStore()),
127
+ relata_memory_factory=_RecordingMemory,
128
+ )
129
+
130
+
131
+ @pytest.mark.asyncio
132
+ async def test_inquire_one_call_studies_then_answers():
133
+ ans = await _sim().inquire(
134
+ topic="protein folding", question="Would method X help?", study_rounds=2
135
+ )
136
+ assert isinstance(ans, Answer)
137
+ assert ans.question == "Would method X help?"
138
+ assert 0.0 <= ans.confidence <= 1.0
139
+ assert ans.contributors # every member contributed
140
+
141
+
142
+ @pytest.mark.asyncio
143
+ async def test_ask_auto_studies_on_first_call():
144
+ sim = _sim()
145
+ async with sim:
146
+ assert sim._studied is False
147
+ ans = await sim.ask("Does it hold?", topic="topic-Y", study_rounds=1)
148
+ assert sim._studied is True # studied automatically
149
+ assert isinstance(ans, Answer)
150
+
151
+
152
+ @pytest.mark.asyncio
153
+ async def test_ask_answers_from_learned_memory():
154
+ # After studying, agents recall prior notes → their answer is grounded in them.
155
+ sim = _sim()
156
+ async with sim:
157
+ await sim.study("topic-Z", rounds=2)
158
+ ans = await sim.ask("Follow-up question?")
159
+ # Learned notes were recalled (confidence lifted to the grounded branch).
160
+ assert ans.contributors
161
+ assert max(c.confidence for c in ans.contributors) >= 0.9
162
+
163
+
164
+ @pytest.mark.asyncio
165
+ async def test_second_ask_reuses_study():
166
+ sim = _sim()
167
+ async with sim:
168
+ await sim.ask("Q1", topic="t", study_rounds=1)
169
+ studied_after_q1 = sim._studied
170
+ a2 = await sim.ask("Q2") # no re-study
171
+ assert studied_after_q1 and a2.question == "Q2"