hypermind 0.21.0__tar.gz → 0.22.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.
- {hypermind-0.21.0 → hypermind-0.22.0}/PKG-INFO +1 -1
- {hypermind-0.21.0 → hypermind-0.22.0}/pyproject.toml +1 -1
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/__init__.py +1 -1
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/agent.py +14 -2
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/metrics.py +71 -38
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/sim.py +119 -3
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/storage/relata.py +30 -9
- hypermind-0.22.0/tests/orgs/test_lightweight.py +196 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/storage/test_relata_backend.py +66 -1
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_pq_default.py +13 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.editorconfig +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.gitattributes +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/FUNDING.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/renovate.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/check-license.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/quality.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/release.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/security.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows/stale.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/release.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.gitignore +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.pre-commit-config.yaml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/.tool-versions +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/CHANGELOG.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/CHARTER.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/CODEOWNERS +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/CONTRIBUTING.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/GOVERNANCE.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/LICENSE +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/MAINTAINERS.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/Makefile +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/RELATA_COMPATIBILITY.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/RELATA_INTEGRATION_PLAN.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/RELATA_STORAGE.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/ROADMAP.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/SECURITY.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/baselines/v0.6.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/bench_consult.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/bench_dispute.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/bench_publish.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/coordination/run_all.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/bench/run_bench.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p3_key_rotation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p7_clock_skew.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/chaos/run_chaos.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/Dockerfile +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/docker-compose.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/grafana/dashboards/hypermind.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/prometheus/prometheus.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/deploy/systemd/hypermind.service +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/SIMLAB.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/SIMLAB_AUDIT_PLAN.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/_meta/glossary.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/_meta/provenance.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/_meta/public-surface.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/_meta/standards-map.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/agent.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/agent_card.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/capability.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/crypto.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/dispute.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/knowledge.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/observability.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/sync.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/tasks.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/transport.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/api/wire.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/architecture-v0.6.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/audit/findings.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/audit/scope.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/concepts.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/conformance/authority.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/conformance/mark-policy.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/decide/02-alternatives.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/decide/04-use-cases.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/design/01-architecture.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/design/02-traces.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/design/03-failure-modes.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/feature-matrix.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/getting-started.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/governance/cna.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/hypermind-protocol-spec.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/index.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/legal/export-classification.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/lts.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/migration/v0.7.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/after.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/glossary.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/01-deployment.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/02-runbook.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/backup-restore.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/data-residency.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/key-rotation.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/operate/slo.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/paper/00-patent.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/release-notes/v1.0-checklist.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/security/threat-model.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/simlab/modes.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/simulations.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/00-overview.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/01-transport.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/02-cryptography.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/03-messages.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/05-routing.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/06-conformance.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/10-disputes.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/12-governance.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/13-observability.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/14-threat-model.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/18-revocation.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/20-swarm-intelligence.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/21-belief-state.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/26-workflow.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/27-contract-net.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/_meta/gaps-closed.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/appendix-z.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/errata.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/index.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/invariants.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/spec/normative-trace.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/supply-chain/sbom.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/supply-chain/slsa.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/docs/sustainability.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/01_hello_world.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/03_consult_panel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/04_oracle_resolve.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/06_hybrid_pq.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/07_frost_threshold.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/09_audit_export_chain.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/10_autonomous_agent.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/13_role_specialisation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/14_active_learning_loop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/16_wire_message.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/17_tool_delegation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/18_custom_responder.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/19_governance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/20_conformance_check.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/21_revocation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/22_agent_card.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/23_task_delegation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/25_swarm_trace.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/e2e_many_agents.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/full_e2e_demo.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/lifecycle.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/org_university.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_aar.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_backtest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_conformance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_evaluation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_governance_committee.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_learning_loop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_persona_panel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_private_namespace.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_red_team.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_threat_intel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/serve_api.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/examples/two_node_tcp.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/hax-rust/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/hax-rust/scope.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/fuzz_capability.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/fuzz_wire.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/fuzz/seed_corpus.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/__main__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/assertions.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/fixtures.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/report.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/roles.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/runner.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/scenario.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/scenarios/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/mkdocs.yml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/reference_verifier/verifier.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/review/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/review/__main__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/review/agents.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/review/models.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/review/runner.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hmctl/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hmctl/cli.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/_deprecations.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/agent_card.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/api/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/api/app.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/capability.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/consult.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/consult_bias.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/contract_net.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/kms_backends/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/kms_backends/aws.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/kms_backends/azure.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/kms_backends/gcp.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/kms_backends/vault.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/deliberation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/did_web.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/dispute.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/errors.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/eval/replay.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/reputation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/client.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/server.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/active.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/belief.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/deliberator.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/federation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/goals.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/integration.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/policy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/records.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/roles.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/sybil_guard.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/namespace.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/observability/cost.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/context.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/deliberate.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/experiment.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/groundtruth.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/interaction.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/intervention.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/model.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/quality.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/query.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/receipt.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/report.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/retrieval.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/stream.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/templates/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/think.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/orgs/tools.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/pin_policy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/py.typed +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/base.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/openai.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/router.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/structured.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/responders/tools.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/revocation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/rule_ids.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/app.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/config.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/storage/backend.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/storage/sqlite.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/sync.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/tal.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/tasks.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/testing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/tools/registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/bus.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/placement.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/tcp.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/types.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/uncertainty.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/wire.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/storage-backend-requirements.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/api/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/api/test_events_stream.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/api/test_management_app.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/chaos/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/conftest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/fake_kms.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/harness/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/harness/conftest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/integration/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/integration/test_kms_aws.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/integration/test_kms_azure.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/integration/test_kms_gcp.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/integration/test_kms_vault.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/integration/test_relata_server.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/_fakes.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_adversarial.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_concurrency.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_context.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_convergence.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_deliberator.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_embeddings.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_experiment.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_graph_retrieval.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_groundtruth.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_hybrid_retriever.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_interaction.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_intervention.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_metrics.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_model.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_ner.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_quality.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_query.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_rag.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_receipt.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_report.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_scale.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_sim.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_stream.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_templates.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_think.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_tool_traces.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/orgs/test_tools.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/responders/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/responders/test_responders.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/responders/test_router.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/responders/test_structured_response.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/responders/test_tools.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/review/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/review/test_agents_parser.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/review/test_models.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/review/test_runner.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/conftest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_personas.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_runner.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/simlab/test_swarms.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/storage/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_active_multi_step.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_agent_card.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_agent_e2e.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_agent_edge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_anti_entropy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_backpressure.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_belief_revision.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_bias_detector.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_block_reason.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_calibration.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability_canonical.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability_chain.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability_edge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability_enforcement.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_capability_revocation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_citation_graph.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_cli.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_cli_interop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_consult.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_consult_stream.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_contract_net_happy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_correlated_agreement.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_cost_tracker.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_crypto.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_deliberation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_deliberator_cap.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_deliberator_observe.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_deprecation_registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_determinism_corpus.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_dispute.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_dispute_mediate.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_dispute_quorum.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_dissent.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_diversity_quorum.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_dkg.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_embedding_registry.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_eval_comparison.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_examples_runnable.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_final_coverage.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_frost.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_frost_edge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_frost_persistence.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_hpke_vectors.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_info_gain_routing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_kernel_store.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_kms_backends.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_kms_fake.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_knows_delta.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_last_lines.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_libp2p_stub.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mcp_bridge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mcp_provenance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mcp_transport.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_merkle_transparency.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_active.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_deliberator.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_evolve.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_records.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_roles.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mind_world_model.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_misc_edge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_mtls_profile.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_namespace_policy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_observability_asgi.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_observability_otel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_open_factory.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_oracle_backprop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_otel_export.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_pin_policy.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_placement_hint.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_plan_dag.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_plan_repair.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_pq_signing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_property_based.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_protocol_version.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_public_surface_v05.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_pursue_workflow.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_rate_caveat.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_recorder_bounded.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_recorder_tail.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_rekor_client.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_relata_memory_store.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_relata_tools.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_remaining_gaps.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_replay.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_reputation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_reputation_memory.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_reputation_staleness.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_review_fixes.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_revocation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_room_epoch.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_secret_redaction.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_signer_protocol.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_iq.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_memory.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_trace.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_sync_agent.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_tal.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_task_handle.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_task_handle_network.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_tcp_edge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_tcp_final.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_tcp_transport.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_theory_of_mind.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_transport.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_two_impl_interop.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_uncertainty.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_wire.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_wire_p3.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_wire_v2.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_wire_version.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_workflow_compensation.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_workflow_engine.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/test_workflow_replay.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/__init__.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/conftest.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/transport-rust/Cargo.toml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/transport-rust/README.md +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/transport-rust/pyproject.toml +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/transport-rust/src/lib.rs +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/index.html +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/package-lock.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/package.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/App.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/api/client.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/DissentList.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/Logo.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/Term.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/docs/index.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/docs/render.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/main.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/router.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/stores/sims.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/styles.css +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/types/trace.ts +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Agents.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Docs.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Evidence.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Home.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Report.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Security.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/SimList.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/SimLive.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/SimNew.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/Tools.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/src/views/UseCases.vue +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/tsconfig.json +0 -0
- {hypermind-0.21.0 → hypermind-0.22.0}/webui/vite.config.ts +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: hypermind
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.22.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.
|
|
7
|
+
version = "0.22.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.
|
|
76
|
+
__version__ = "0.22.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
|
|
@@ -18,9 +18,11 @@ from __future__ import annotations
|
|
|
18
18
|
import asyncio
|
|
19
19
|
import hashlib
|
|
20
20
|
import json
|
|
21
|
+
import os
|
|
21
22
|
import secrets
|
|
22
23
|
import time
|
|
23
24
|
from collections.abc import AsyncIterator, Awaitable, Callable, Sequence
|
|
25
|
+
from concurrent.futures import ThreadPoolExecutor
|
|
24
26
|
from dataclasses import dataclass, field
|
|
25
27
|
from datetime import timedelta
|
|
26
28
|
from typing import Any, Literal
|
|
@@ -853,9 +855,19 @@ class HyperMindAgent:
|
|
|
853
855
|
world.ts.witness_keypairs = [Keypair.generate(alg=kp_alg) for _ in range(3)]
|
|
854
856
|
world.ts.min_witness_quorum = 1 # sandbox quorum
|
|
855
857
|
|
|
858
|
+
# #177 (spin-up ceiling): keygen is CPU-bound but the crypto releases
|
|
859
|
+
# the GIL, so generating N keypairs in a thread pool cuts spin-up of
|
|
860
|
+
# large swarms (measured ~3× Ed25519, ~1.5× ML-DSA). World mutations
|
|
861
|
+
# below stay single-threaded; ex.map preserves order so the roster is
|
|
862
|
+
# unchanged. Small swarms skip the pool (thread setup isn't worth it).
|
|
863
|
+
if agents >= 8:
|
|
864
|
+
with ThreadPoolExecutor(max_workers=min(32, (os.cpu_count() or 4))) as ex:
|
|
865
|
+
keypairs = list(ex.map(lambda _: Keypair.generate(alg=kp_alg), range(agents)))
|
|
866
|
+
else:
|
|
867
|
+
keypairs = [Keypair.generate(alg=kp_alg) for _ in range(agents)]
|
|
868
|
+
|
|
856
869
|
agents_list: list[HyperMindAgent] = []
|
|
857
|
-
for
|
|
858
|
-
kp = Keypair.generate(alg=kp_alg)
|
|
870
|
+
for kp in keypairs:
|
|
859
871
|
agent = HyperMindAgent(
|
|
860
872
|
keypair=kp,
|
|
861
873
|
namespace=namespace,
|
|
@@ -66,25 +66,27 @@ def _brier(confidence: float, outcome: bool) -> float:
|
|
|
66
66
|
return (float(confidence) - (1.0 if outcome else 0.0)) ** 2
|
|
67
67
|
|
|
68
68
|
|
|
69
|
-
def
|
|
69
|
+
def scorecard_from_aggregates(
|
|
70
70
|
*,
|
|
71
71
|
per_round_posteriors: list[dict[str, float]],
|
|
72
72
|
member_units: dict[str, str],
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
73
|
+
brier_sums: dict[str, tuple[float, int]],
|
|
74
|
+
influence: dict[str, float],
|
|
75
|
+
publishers: set[str],
|
|
76
|
+
claims_count: int,
|
|
77
|
+
citations_count: int,
|
|
76
78
|
disputes_count: int,
|
|
77
79
|
convergence_threshold: float = 0.02,
|
|
78
80
|
) -> ScoreCard:
|
|
79
|
-
"""
|
|
81
|
+
"""Build a ScoreCard from **streaming aggregates** (bounded by member count,
|
|
82
|
+
not record count). Lets ``OrgSim(lightweight=True)`` produce the same
|
|
83
|
+
scorecard without holding every claim/citation in RAM (#176).
|
|
80
84
|
|
|
81
|
-
``
|
|
82
|
-
``
|
|
83
|
-
``
|
|
84
|
-
``citations`` — ``(citer_label, target_kid_hex)`` pairs.
|
|
85
|
-
``reputations`` — final ``{member_label: score}``.
|
|
85
|
+
``brier_sums`` — per member ``{label: (sum_of_brier, n_resolved)}``.
|
|
86
|
+
``influence`` — per member the reputation-weighted citation in-degree.
|
|
87
|
+
``publishers`` — labels that published at least one claim.
|
|
86
88
|
"""
|
|
87
|
-
# --- consensus / convergence ---
|
|
89
|
+
# --- consensus / convergence (per-round, already bounded) ---
|
|
88
90
|
var_by_round = [
|
|
89
91
|
pvariance(list(p.values())) if len(p) > 1 else 0.0 for p in per_round_posteriors
|
|
90
92
|
]
|
|
@@ -102,31 +104,15 @@ def compute_scorecard(
|
|
|
102
104
|
unit_means = [mean(v) for v in unit_vals.values()]
|
|
103
105
|
unit_polarization = (max(unit_means) - min(unit_means)) if len(unit_means) > 1 else 0.0
|
|
104
106
|
|
|
105
|
-
# --- calibration (Brier)
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
by_member: dict[str, list[float]] = defaultdict(list)
|
|
114
|
-
for label, conf, out in resolved:
|
|
115
|
-
by_member[label].append(_brier(conf, out))
|
|
116
|
-
brier_by_member = {k: mean(v) for k, v in by_member.items()}
|
|
117
|
-
|
|
118
|
-
# --- influence: reputation-weighted citation in-degree ---
|
|
119
|
-
kid2label = {c["kid_hex"]: c["label"] for c in claims if "kid_hex" in c}
|
|
120
|
-
influence: dict[str, float] = defaultdict(float)
|
|
121
|
-
for citer, target_hex in citations:
|
|
122
|
-
tgt = kid2label.get(target_hex)
|
|
123
|
-
if tgt is not None:
|
|
124
|
-
influence[tgt] += reputations.get(citer, 0.5)
|
|
125
|
-
influence = dict(influence)
|
|
126
|
-
top_influencer = max(influence, key=lambda k: influence[k]) if influence else None
|
|
107
|
+
# --- calibration (Brier) from per-member sums ---
|
|
108
|
+
total_sum = sum(s for s, _n in brier_sums.values())
|
|
109
|
+
total_n = sum(n for _s, n in brier_sums.values())
|
|
110
|
+
brier_mean = (total_sum / total_n) if total_n else None
|
|
111
|
+
brier_by_member = {k: s / n for k, (s, n) in brier_sums.items() if n}
|
|
112
|
+
|
|
113
|
+
infl = dict(influence)
|
|
114
|
+
top_influencer = max(infl, key=lambda k: infl[k]) if infl else None
|
|
127
115
|
|
|
128
|
-
# --- activity ---
|
|
129
|
-
publishers = {c["label"] for c in claims}
|
|
130
116
|
total_members = len(member_units)
|
|
131
117
|
participation = len(publishers) / total_members if total_members else 0.0
|
|
132
118
|
|
|
@@ -139,10 +125,57 @@ def compute_scorecard(
|
|
|
139
125
|
unit_polarization=unit_polarization,
|
|
140
126
|
brier_mean=brier_mean,
|
|
141
127
|
brier_by_member=brier_by_member,
|
|
142
|
-
influence=
|
|
128
|
+
influence=infl,
|
|
143
129
|
top_influencer=top_influencer,
|
|
144
|
-
claims=
|
|
130
|
+
claims=claims_count,
|
|
145
131
|
disputes=disputes_count,
|
|
146
|
-
citations=
|
|
132
|
+
citations=citations_count,
|
|
147
133
|
participation_rate=participation,
|
|
148
134
|
)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def compute_scorecard(
|
|
138
|
+
*,
|
|
139
|
+
per_round_posteriors: list[dict[str, float]],
|
|
140
|
+
member_units: dict[str, str],
|
|
141
|
+
claims: list[dict[str, Any]],
|
|
142
|
+
citations: list[tuple[str, str]],
|
|
143
|
+
reputations: dict[str, float],
|
|
144
|
+
disputes_count: int,
|
|
145
|
+
convergence_threshold: float = 0.02,
|
|
146
|
+
) -> ScoreCard:
|
|
147
|
+
"""Compute the scorecard from a run's fully-retained data (default mode).
|
|
148
|
+
|
|
149
|
+
``per_round_posteriors`` — one ``{member_label: posterior_mean}`` dict per round.
|
|
150
|
+
``member_units`` — every member's unit (denominator for participation).
|
|
151
|
+
``claims`` — dicts with keys ``kid_hex, label, unit, confidence, outcome``.
|
|
152
|
+
``citations`` — ``(citer_label, target_kid_hex)`` pairs.
|
|
153
|
+
``reputations`` — final ``{member_label: score}``.
|
|
154
|
+
"""
|
|
155
|
+
# Aggregate the full lists, then delegate to the streaming builder so both
|
|
156
|
+
# paths share one scorecard definition.
|
|
157
|
+
brier_sums: dict[str, tuple[float, int]] = {}
|
|
158
|
+
for c in claims:
|
|
159
|
+
if c.get("outcome") is None:
|
|
160
|
+
continue
|
|
161
|
+
s, n = brier_sums.get(c["label"], (0.0, 0))
|
|
162
|
+
brier_sums[c["label"]] = (s + _brier(float(c.get("confidence", 0.0)), c["outcome"]), n + 1)
|
|
163
|
+
|
|
164
|
+
kid2label = {c["kid_hex"]: c["label"] for c in claims if "kid_hex" in c}
|
|
165
|
+
influence: dict[str, float] = defaultdict(float)
|
|
166
|
+
for citer, target_hex in citations:
|
|
167
|
+
tgt = kid2label.get(target_hex)
|
|
168
|
+
if tgt is not None:
|
|
169
|
+
influence[tgt] += reputations.get(citer, 0.5)
|
|
170
|
+
|
|
171
|
+
return scorecard_from_aggregates(
|
|
172
|
+
per_round_posteriors=per_round_posteriors,
|
|
173
|
+
member_units=member_units,
|
|
174
|
+
brier_sums=brier_sums,
|
|
175
|
+
influence=dict(influence),
|
|
176
|
+
publishers={c["label"] for c in claims},
|
|
177
|
+
claims_count=len(claims),
|
|
178
|
+
citations_count=len(citations),
|
|
179
|
+
disputes_count=disputes_count,
|
|
180
|
+
convergence_threshold=convergence_threshold,
|
|
181
|
+
)
|
|
@@ -36,7 +36,7 @@ from hypermind.mind.memory_store import RelataMemoryStore
|
|
|
36
36
|
from hypermind.orgs.context import default_context_builder
|
|
37
37
|
from hypermind.orgs.groundtruth import GroundTruth, as_ground_truth
|
|
38
38
|
from hypermind.orgs.interaction import ClaimRec, Interaction, get_interaction
|
|
39
|
-
from hypermind.orgs.metrics import compute_scorecard
|
|
39
|
+
from hypermind.orgs.metrics import compute_scorecard, scorecard_from_aggregates
|
|
40
40
|
from hypermind.orgs.model import OrgModel, Slot
|
|
41
41
|
from hypermind.orgs.report import MemberStanding, OrgReport
|
|
42
42
|
from hypermind.orgs.tools import (
|
|
@@ -118,6 +118,9 @@ class OrgSim:
|
|
|
118
118
|
context_builder: Any = None,
|
|
119
119
|
on_event: Callable[[dict[str, Any]], Any] | None = None,
|
|
120
120
|
max_concurrency: int = 16,
|
|
121
|
+
write_batch_size: int = 64,
|
|
122
|
+
lightweight: bool = False,
|
|
123
|
+
claims_window: int = 4096,
|
|
121
124
|
retrieval_k: int = 5,
|
|
122
125
|
retriever: Callable[[str, int], list[tuple[str, str]]] | None = None,
|
|
123
126
|
use_graph_retrieval: bool = False,
|
|
@@ -150,9 +153,24 @@ class OrgSim:
|
|
|
150
153
|
|
|
151
154
|
self._members: list[Member] = []
|
|
152
155
|
self._backend: RelataBackend | None = None
|
|
156
|
+
# #176: in lightweight mode, don't retain every record in RAM. Keep a
|
|
157
|
+
# rolling window of recent claims (bounded, covers the cite/dispute/
|
|
158
|
+
# resolve horizon + RAG) and per-member running aggregates (bounded by
|
|
159
|
+
# member count, not record count). The full mode keeps everything.
|
|
160
|
+
self._lightweight = bool(lightweight)
|
|
161
|
+
# Never evict below one round's worth of claims — cite/dispute/resolve
|
|
162
|
+
# target the current round, and eviction drops oldest-first, so a cap
|
|
163
|
+
# ≥ 2× the roster keeps the active horizon intact for any swarm size.
|
|
164
|
+
self._claims_cap = max(claims_window, 2 * len(self.model.roster()))
|
|
153
165
|
self._claims: dict[str, _ClaimInfo] = {}
|
|
154
|
-
self.
|
|
155
|
-
self.
|
|
166
|
+
_hist = 512 if self._lightweight else None
|
|
167
|
+
self._citations: deque[tuple[str, str]] = deque(maxlen=_hist)
|
|
168
|
+
self._disputes: deque[dict[str, Any]] = deque(maxlen=_hist)
|
|
169
|
+
# Streaming aggregates for the scorecard (only populated when lightweight).
|
|
170
|
+
self._agg: dict[str, dict[str, Any]] = {}
|
|
171
|
+
self._n_claims = 0
|
|
172
|
+
self._n_citations = 0
|
|
173
|
+
self._n_disputes = 0
|
|
156
174
|
self._grants: dict[str, frozenset[str]] = {}
|
|
157
175
|
self._round_posteriors: list[dict[str, float]] = [] # per-round {label: mean}
|
|
158
176
|
self._stop_reason: str = "fixed"
|
|
@@ -164,6 +182,10 @@ class OrgSim:
|
|
|
164
182
|
self._studied: bool = False
|
|
165
183
|
self._study_topic: str | None = None
|
|
166
184
|
self._max_concurrency = max(1, max_concurrency)
|
|
185
|
+
# #175: mirror claims to Relata in bulk (one /ingest per batch, not per
|
|
186
|
+
# claim). Safe because the sim keeps its working set in memory and only
|
|
187
|
+
# reads the ledger back on restart-replay, after teardown has flushed.
|
|
188
|
+
self._write_batch_size = max(1, write_batch_size)
|
|
167
189
|
# Scale: a bounded window of recent findings (label, unit, conf, text)
|
|
168
190
|
# so peer-grounding is O(window), never a full scan of all claims.
|
|
169
191
|
self._recent_findings: deque[tuple[str, str, float, str]] = deque(maxlen=256)
|
|
@@ -358,6 +380,7 @@ class OrgSim:
|
|
|
358
380
|
namespace_id=self.model.namespace,
|
|
359
381
|
bearer_token=self.relata_token,
|
|
360
382
|
client_factory=self._relata_client_factory,
|
|
383
|
+
write_batch_size=self._write_batch_size,
|
|
361
384
|
)
|
|
362
385
|
backend.open()
|
|
363
386
|
agents[0].attach_storage(backend)
|
|
@@ -770,6 +793,14 @@ class OrgSim:
|
|
|
770
793
|
finding=reasoning,
|
|
771
794
|
tool_calls=tool_calls,
|
|
772
795
|
)
|
|
796
|
+
self._n_claims += 1
|
|
797
|
+
if self._lightweight:
|
|
798
|
+
a = self._agg_for(m.label)
|
|
799
|
+
a["claims"] += 1
|
|
800
|
+
a["publisher"] = True
|
|
801
|
+
# Evict oldest claims beyond the window (dicts keep insertion order).
|
|
802
|
+
while len(self._claims) > self._claims_cap:
|
|
803
|
+
self._claims.pop(next(iter(self._claims)))
|
|
773
804
|
if reasoning:
|
|
774
805
|
self._recent_findings.append((m.label, m.unit, post.mean(), reasoning))
|
|
775
806
|
self._mentions.add(kid.hex(), reasoning) # grow the entity graph
|
|
@@ -790,9 +821,16 @@ class OrgSim:
|
|
|
790
821
|
)
|
|
791
822
|
for t in targets:
|
|
792
823
|
self._citations.append((m.label, t.hex()))
|
|
824
|
+
self._n_citations += 1
|
|
793
825
|
info = self._claims.get(t.hex())
|
|
794
826
|
if info is not None:
|
|
795
827
|
info.citations_received += 1
|
|
828
|
+
if self._lightweight:
|
|
829
|
+
a = self._agg_for(info.label)
|
|
830
|
+
a["citations_received"] += 1
|
|
831
|
+
# Streaming influence: weight by the citer's reputation now
|
|
832
|
+
# (full mode uses final reputation; this is the bounded proxy).
|
|
833
|
+
a["influence"] += self._member_reputation(m)
|
|
796
834
|
|
|
797
835
|
async def _dispute(self, m: Member, rec: ClaimRec, r: int) -> None:
|
|
798
836
|
await m.agent.dispute(
|
|
@@ -809,9 +847,12 @@ class OrgSim:
|
|
|
809
847
|
"round": r,
|
|
810
848
|
}
|
|
811
849
|
)
|
|
850
|
+
self._n_disputes += 1
|
|
812
851
|
info = self._claims.get(rec.kid.hex())
|
|
813
852
|
if info is not None:
|
|
814
853
|
info.disputes_received += 1
|
|
854
|
+
if self._lightweight:
|
|
855
|
+
self._agg_for(rec.member_label)["disputes_received"] += 1
|
|
815
856
|
|
|
816
857
|
async def _resolve(
|
|
817
858
|
self,
|
|
@@ -852,6 +893,10 @@ class OrgSim:
|
|
|
852
893
|
info = self._claims.get(rec.kid.hex())
|
|
853
894
|
if info is not None:
|
|
854
895
|
info.outcome = outcome
|
|
896
|
+
if self._lightweight:
|
|
897
|
+
a = self._agg_for(rec.member_label)
|
|
898
|
+
a["brier_sum"] += (rec.confidence - (1.0 if outcome else 0.0)) ** 2
|
|
899
|
+
a["brier_n"] += 1
|
|
855
900
|
await self._emit("resolve", by=rec.member_label, unit=unit, outcome=outcome)
|
|
856
901
|
# Evolve signal: publisher earns/loses floor headroom (O(1) lookup).
|
|
857
902
|
pub = self._member_by_kid.get(rec.member_kid)
|
|
@@ -882,7 +927,24 @@ class OrgSim:
|
|
|
882
927
|
|
|
883
928
|
# ---- report --------------------------------------------------------
|
|
884
929
|
|
|
930
|
+
def _agg_for(self, label: str) -> dict[str, Any]:
|
|
931
|
+
a = self._agg.get(label)
|
|
932
|
+
if a is None:
|
|
933
|
+
a = {
|
|
934
|
+
"claims": 0,
|
|
935
|
+
"citations_received": 0,
|
|
936
|
+
"disputes_received": 0,
|
|
937
|
+
"influence": 0.0,
|
|
938
|
+
"brier_sum": 0.0,
|
|
939
|
+
"brier_n": 0,
|
|
940
|
+
"publisher": False,
|
|
941
|
+
}
|
|
942
|
+
self._agg[label] = a
|
|
943
|
+
return a
|
|
944
|
+
|
|
885
945
|
def _build_report(self, topic: str, rounds: int) -> OrgReport:
|
|
946
|
+
if self._lightweight:
|
|
947
|
+
return self._build_report_light(topic, rounds)
|
|
886
948
|
world = self._members[0].agent._world if self._members else None
|
|
887
949
|
# Index claims by author once (O(claims)) instead of scanning per member.
|
|
888
950
|
by_label: dict[str, list[_ClaimInfo]] = {}
|
|
@@ -929,3 +991,57 @@ class OrgSim:
|
|
|
929
991
|
interaction_state=self.interaction.state(),
|
|
930
992
|
decisions=list(self._decisions),
|
|
931
993
|
)
|
|
994
|
+
|
|
995
|
+
def _build_report_light(self, topic: str, rounds: int) -> OrgReport:
|
|
996
|
+
"""Assemble the report from streaming aggregates (#176).
|
|
997
|
+
|
|
998
|
+
Memory here is O(members + windows), not O(records): standings and the
|
|
999
|
+
scorecard come from ``self._agg`` + running counts; the claim/citation/
|
|
1000
|
+
dispute payloads are the bounded recent windows (a sample, not the full
|
|
1001
|
+
history — the accurate totals live in the scorecard)."""
|
|
1002
|
+
world = self._members[0].agent._world if self._members else None
|
|
1003
|
+
standings: list[MemberStanding] = []
|
|
1004
|
+
for m in self._members:
|
|
1005
|
+
a = self._agg.get(m.label, {})
|
|
1006
|
+
score = world.reputation.snapshot(m.kid, m.unit).score if world else 0.0
|
|
1007
|
+
standings.append(
|
|
1008
|
+
MemberStanding(
|
|
1009
|
+
label=m.label,
|
|
1010
|
+
unit=m.unit,
|
|
1011
|
+
role=m.role,
|
|
1012
|
+
reputation=score,
|
|
1013
|
+
claims=a.get("claims", 0),
|
|
1014
|
+
citations_received=a.get("citations_received", 0),
|
|
1015
|
+
disputes_received=a.get("disputes_received", 0),
|
|
1016
|
+
tools=sorted(m.tools),
|
|
1017
|
+
)
|
|
1018
|
+
)
|
|
1019
|
+
standings.sort(key=lambda s: s.reputation, reverse=True)
|
|
1020
|
+
scorecard = scorecard_from_aggregates(
|
|
1021
|
+
per_round_posteriors=self._round_posteriors,
|
|
1022
|
+
member_units={m.label: m.unit for m in self._members},
|
|
1023
|
+
brier_sums={
|
|
1024
|
+
lbl: (a["brier_sum"], a["brier_n"]) for lbl, a in self._agg.items() if a["brier_n"]
|
|
1025
|
+
},
|
|
1026
|
+
influence={lbl: a["influence"] for lbl, a in self._agg.items() if a["influence"]},
|
|
1027
|
+
publishers={lbl for lbl, a in self._agg.items() if a["publisher"]},
|
|
1028
|
+
claims_count=self._n_claims,
|
|
1029
|
+
citations_count=self._n_citations,
|
|
1030
|
+
disputes_count=self._n_disputes,
|
|
1031
|
+
)
|
|
1032
|
+
return OrgReport(
|
|
1033
|
+
org=self.model.name,
|
|
1034
|
+
topic=topic,
|
|
1035
|
+
rounds=rounds,
|
|
1036
|
+
interaction=self.interaction.name,
|
|
1037
|
+
standings=standings,
|
|
1038
|
+
claims=[c.__dict__ for c in self._claims.values()], # bounded window sample
|
|
1039
|
+
citations=list(self._citations),
|
|
1040
|
+
disputes=list(self._disputes),
|
|
1041
|
+
tool_grants={label: sorted(t) for label, t in self._grants.items()},
|
|
1042
|
+
scorecard=scorecard.to_dict(),
|
|
1043
|
+
stop_reason=self._stop_reason,
|
|
1044
|
+
events=list(self._events),
|
|
1045
|
+
interaction_state=self.interaction.state(),
|
|
1046
|
+
decisions=list(self._decisions),
|
|
1047
|
+
)
|
|
@@ -59,6 +59,7 @@ class RelataBackend:
|
|
|
59
59
|
bearer_token: str | None = None,
|
|
60
60
|
purpose: str = _PURPOSE,
|
|
61
61
|
client_factory: ClientFactory | None = None,
|
|
62
|
+
write_batch_size: int = 1,
|
|
62
63
|
) -> None:
|
|
63
64
|
self._url = base_url
|
|
64
65
|
self._ns = namespace_id
|
|
@@ -69,6 +70,12 @@ class RelataBackend:
|
|
|
69
70
|
self._log: Any = None
|
|
70
71
|
self._obj: Any = None
|
|
71
72
|
self._seq = 1
|
|
73
|
+
# #175: buffer claim rows and flush via one bulk /ingest instead of a
|
|
74
|
+
# per-claim HTTP round-trip. Default 1 = unchanged (immediate durability);
|
|
75
|
+
# >1 trades a small durability lag for ~batch× fewer round-trips at scale.
|
|
76
|
+
# Buffered claims are flushed on close() and before any claim read.
|
|
77
|
+
self._batch = max(1, write_batch_size)
|
|
78
|
+
self._claim_buf: list[dict[str, Any]] = []
|
|
72
79
|
# ponytail: in-memory set gives read-your-writes consistency for the test-and-set;
|
|
73
80
|
# the durable upsert covers the restart-replay defence.
|
|
74
81
|
self._seen_transcripts: set[str] = set()
|
|
@@ -103,6 +110,8 @@ class RelataBackend:
|
|
|
103
110
|
self._seq = (int(rows[0]["seq"]) + 1) if rows else 1
|
|
104
111
|
|
|
105
112
|
def close(self) -> None:
|
|
113
|
+
if self._obj is not None:
|
|
114
|
+
self.flush_claims() # never drop buffered claims on shutdown
|
|
106
115
|
for client in (self._log, self._obj, self._c):
|
|
107
116
|
if client is not None:
|
|
108
117
|
client.close()
|
|
@@ -119,20 +128,30 @@ class RelataBackend:
|
|
|
119
128
|
# ---- Claims (immutable, append-ordered) -----------------------------
|
|
120
129
|
|
|
121
130
|
def append_claim(self, stmt: SignedStatement) -> None:
|
|
122
|
-
|
|
123
|
-
"
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
"wire_b64": base64.b64encode(stmt.to_bytes()).decode("ascii"),
|
|
128
|
-
"created_ms": int(time.time() * 1000),
|
|
129
|
-
},
|
|
130
|
-
)
|
|
131
|
+
fields = {
|
|
132
|
+
"seq": self._seq,
|
|
133
|
+
"wire_b64": base64.b64encode(stmt.to_bytes()).decode("ascii"),
|
|
134
|
+
"created_ms": int(time.time() * 1000),
|
|
135
|
+
}
|
|
131
136
|
self._seq += 1
|
|
137
|
+
if self._batch == 1:
|
|
138
|
+
self._obj.upsert("HmClaim", bytes(stmt.kid).hex(), fields)
|
|
139
|
+
return
|
|
140
|
+
# Buffer + bulk-flush (#175). batch_upsert requires an `id` per row.
|
|
141
|
+
self._claim_buf.append({"id": bytes(stmt.kid).hex(), **fields})
|
|
142
|
+
if len(self._claim_buf) >= self._batch:
|
|
143
|
+
self.flush_claims()
|
|
144
|
+
|
|
145
|
+
def flush_claims(self) -> None:
|
|
146
|
+
"""Bulk-write any buffered claims. Idempotent; call before claim reads."""
|
|
147
|
+
if self._claim_buf:
|
|
148
|
+
self._obj.batch_upsert("HmClaim", self._claim_buf)
|
|
149
|
+
self._claim_buf = []
|
|
132
150
|
|
|
133
151
|
def load_claims(self) -> list[SignedStatement]:
|
|
134
152
|
from hypermind.wire import SignedStatement
|
|
135
153
|
|
|
154
|
+
self.flush_claims()
|
|
136
155
|
rows = self._rows("SELECT wire_b64, seq FROM HmClaim ORDER BY seq ASC")
|
|
137
156
|
return [SignedStatement.from_bytes(base64.b64decode(r["wire_b64"])) for r in rows]
|
|
138
157
|
|
|
@@ -233,6 +252,8 @@ class RelataBackend:
|
|
|
233
252
|
# ---- Health ---------------------------------------------------------
|
|
234
253
|
|
|
235
254
|
def stats(self) -> dict[str, int]:
|
|
255
|
+
self.flush_claims()
|
|
256
|
+
|
|
236
257
|
def count(table: str) -> int:
|
|
237
258
|
return int(self._rows(f"SELECT COUNT(*) AS n FROM {table}")[0]["n"])
|
|
238
259
|
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"""#176 — bounded/streaming report: OrgSim(lightweight=True) caps RAM to
|
|
2
|
+
O(members + windows), not O(records), while the scorecard totals stay exact.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from __future__ import annotations
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
from _fakes import FakeMemory, FakeStore, client_factory
|
|
9
|
+
|
|
10
|
+
from hypermind.orgs import (
|
|
11
|
+
DynamicsConfig,
|
|
12
|
+
OrgModel,
|
|
13
|
+
OrgSim,
|
|
14
|
+
Seat,
|
|
15
|
+
StaticGroundTruth,
|
|
16
|
+
Unit,
|
|
17
|
+
)
|
|
18
|
+
from hypermind.orgs.metrics import compute_scorecard, scorecard_from_aggregates
|
|
19
|
+
from hypermind.responders.base import confidence_to_uncertainty
|
|
20
|
+
from hypermind.responders.structured import StructuredResponse
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def _model() -> OrgModel:
|
|
24
|
+
return OrgModel(
|
|
25
|
+
name="lw",
|
|
26
|
+
namespace="lw",
|
|
27
|
+
units=(
|
|
28
|
+
Unit(
|
|
29
|
+
"a",
|
|
30
|
+
seats=(
|
|
31
|
+
Seat("O", role="oracle", authority=0.9),
|
|
32
|
+
Seat("S", role="scout", authority=0.5, headcount=3),
|
|
33
|
+
),
|
|
34
|
+
),
|
|
35
|
+
),
|
|
36
|
+
# publish everything, resolve everything → claims + Brier both exercised.
|
|
37
|
+
dynamics=DynamicsConfig(rounds=2, publish_floor=0.0, oracle_resolve_frac=1.0),
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _factory():
|
|
42
|
+
def factory(slot, tools):
|
|
43
|
+
async def _resp(kid, query):
|
|
44
|
+
return (
|
|
45
|
+
confidence_to_uncertainty(0.8, effective_n=10.0),
|
|
46
|
+
StructuredResponse(confidence=0.8, reasoning="a finding about frost"),
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
return _resp
|
|
50
|
+
|
|
51
|
+
return factory
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _sim(**kw) -> OrgSim:
|
|
55
|
+
return OrgSim(
|
|
56
|
+
_model(),
|
|
57
|
+
relata_url="http://fake",
|
|
58
|
+
responder_factory=_factory(),
|
|
59
|
+
relata_client_factory=client_factory(FakeStore()),
|
|
60
|
+
relata_memory_factory=FakeMemory,
|
|
61
|
+
ground_truth=StaticGroundTruth(
|
|
62
|
+
{"a/O#1": True, "a/S#1": True, "a/S#2": False, "a/S#3": True}
|
|
63
|
+
),
|
|
64
|
+
**kw,
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@pytest.mark.asyncio
|
|
69
|
+
async def test_lightweight_bounds_claims_but_counts_all():
|
|
70
|
+
# 4 members → cap = max(window, 2*4) = 8. 3 rounds → 12 claims published, so
|
|
71
|
+
# the window must evict while the scorecard still counts all 12.
|
|
72
|
+
sim = _sim(lightweight=True, claims_window=1)
|
|
73
|
+
assert sim._claims_cap == 8
|
|
74
|
+
report = await sim.simulate("frost", rounds=3)
|
|
75
|
+
assert len(sim._claims) <= 8 # window bounded (12 published, ≤8 retained)
|
|
76
|
+
assert report.scorecard["claims"] == 12 # every publish counted
|
|
77
|
+
assert report.scorecard["claims"] == sim._n_claims
|
|
78
|
+
assert len(report.standings) == 4
|
|
79
|
+
assert sum(s.claims for s in report.standings) == 12
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@pytest.mark.asyncio
|
|
83
|
+
async def test_lightweight_scorecard_has_brier_from_stream():
|
|
84
|
+
sim = _sim(lightweight=True)
|
|
85
|
+
report = await sim.simulate("frost", rounds=2)
|
|
86
|
+
# Oracle resolved claims → Brier accumulated online (not from a claims list).
|
|
87
|
+
assert report.scorecard["brier_mean"] is not None
|
|
88
|
+
assert report.scorecard["brier_by_member"] # per-member sums populated
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
@pytest.mark.asyncio
|
|
92
|
+
async def test_lightweight_aggregates_bounded_by_members_not_records():
|
|
93
|
+
sim = _sim(lightweight=True, claims_window=2)
|
|
94
|
+
await sim.simulate("frost", rounds=2)
|
|
95
|
+
# _agg is keyed by member label → at most #members entries, regardless of
|
|
96
|
+
# how many claims were published.
|
|
97
|
+
assert len(sim._agg) <= 4
|
|
98
|
+
assert sim._n_claims == 8
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
@pytest.mark.asyncio
|
|
102
|
+
async def test_full_mode_unchanged_retains_everything():
|
|
103
|
+
sim = _sim(lightweight=False)
|
|
104
|
+
report = await sim.simulate("frost", rounds=2)
|
|
105
|
+
# Full mode keeps every claim; report claims list == total.
|
|
106
|
+
assert len(sim._claims) == 8
|
|
107
|
+
assert report.scorecard["claims"] == 8
|
|
108
|
+
assert len(report.claims) == 8
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
@pytest.mark.asyncio
|
|
112
|
+
async def test_lightweight_streams_dispute_aggregates():
|
|
113
|
+
# A sceptic that reasons far from its peers triggers disputes; lightweight
|
|
114
|
+
# mode must accumulate disputes_received per author online.
|
|
115
|
+
model = OrgModel(
|
|
116
|
+
name="lw2",
|
|
117
|
+
namespace="lw2",
|
|
118
|
+
units=(
|
|
119
|
+
Unit(
|
|
120
|
+
"a",
|
|
121
|
+
seats=(
|
|
122
|
+
Seat("O", role="oracle", authority=0.9),
|
|
123
|
+
Seat("P", role="scout", authority=0.6),
|
|
124
|
+
Seat("K", role="sceptic", authority=0.6),
|
|
125
|
+
),
|
|
126
|
+
),
|
|
127
|
+
),
|
|
128
|
+
dynamics=DynamicsConfig(
|
|
129
|
+
rounds=2, publish_floor=0.0, oracle_resolve_frac=1.0, dispute_gap=0.3
|
|
130
|
+
),
|
|
131
|
+
)
|
|
132
|
+
|
|
133
|
+
def factory(slot, tools):
|
|
134
|
+
conf = 0.15 if slot.seat.role == "sceptic" else 0.9
|
|
135
|
+
|
|
136
|
+
async def _resp(kid, query):
|
|
137
|
+
return (
|
|
138
|
+
confidence_to_uncertainty(conf, effective_n=10.0),
|
|
139
|
+
StructuredResponse(confidence=conf, reasoning="a finding"),
|
|
140
|
+
)
|
|
141
|
+
|
|
142
|
+
return _resp
|
|
143
|
+
|
|
144
|
+
sim = OrgSim(
|
|
145
|
+
model,
|
|
146
|
+
relata_url="http://fake",
|
|
147
|
+
responder_factory=factory,
|
|
148
|
+
relata_client_factory=client_factory(FakeStore()),
|
|
149
|
+
relata_memory_factory=FakeMemory,
|
|
150
|
+
ground_truth=StaticGroundTruth({"a/O#1": True}),
|
|
151
|
+
lightweight=True,
|
|
152
|
+
)
|
|
153
|
+
report = await sim.simulate("frost", rounds=2)
|
|
154
|
+
assert sim._n_disputes >= 1
|
|
155
|
+
assert report.scorecard["disputes"] == sim._n_disputes
|
|
156
|
+
# A disputed author accrued disputes_received in the streaming aggregate.
|
|
157
|
+
assert any(a["disputes_received"] >= 1 for a in sim._agg.values())
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def test_scorecard_from_aggregates_matches_compute_scorecard():
|
|
161
|
+
# Same underlying data via both entry points → identical scorecard (except
|
|
162
|
+
# influence, which the full path weights by citer reputation).
|
|
163
|
+
per_round = [{"a": 0.8, "b": 0.6}, {"a": 0.82, "b": 0.62}]
|
|
164
|
+
units = {"a": "u", "b": "u"}
|
|
165
|
+
claims = [
|
|
166
|
+
{"kid_hex": "k1", "label": "a", "unit": "u", "confidence": 0.8, "outcome": True},
|
|
167
|
+
{"kid_hex": "k2", "label": "b", "unit": "u", "confidence": 0.6, "outcome": False},
|
|
168
|
+
{"kid_hex": "k3", "label": "a", "unit": "u", "confidence": 0.9, "outcome": None},
|
|
169
|
+
]
|
|
170
|
+
citations = [("b", "k1")]
|
|
171
|
+
full = compute_scorecard(
|
|
172
|
+
per_round_posteriors=per_round,
|
|
173
|
+
member_units=units,
|
|
174
|
+
claims=claims,
|
|
175
|
+
citations=citations,
|
|
176
|
+
reputations={"a": 1.0, "b": 1.0},
|
|
177
|
+
disputes_count=1,
|
|
178
|
+
)
|
|
179
|
+
light = scorecard_from_aggregates(
|
|
180
|
+
per_round_posteriors=per_round,
|
|
181
|
+
member_units=units,
|
|
182
|
+
brier_sums={"a": ((0.8 - 1.0) ** 2, 1), "b": ((0.6 - 0.0) ** 2, 1)},
|
|
183
|
+
influence={"a": 1.0}, # b cited a's k1 with rep 1.0
|
|
184
|
+
publishers={"a", "b"},
|
|
185
|
+
claims_count=3,
|
|
186
|
+
citations_count=1,
|
|
187
|
+
disputes_count=1,
|
|
188
|
+
)
|
|
189
|
+
assert light.brier_mean == full.brier_mean
|
|
190
|
+
assert light.brier_by_member == full.brier_by_member
|
|
191
|
+
assert light.claims == full.claims == 3
|
|
192
|
+
assert light.citations == full.citations == 1
|
|
193
|
+
assert light.disputes == full.disputes == 1
|
|
194
|
+
assert light.participation_rate == full.participation_rate
|
|
195
|
+
assert light.influence == full.influence
|
|
196
|
+
assert light.top_influencer == full.top_influencer == "a"
|