hypermind 0.12.0__tar.gz → 0.14.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.12.0 → hypermind-0.14.0}/PKG-INFO +1 -1
- {hypermind-0.12.0 → hypermind-0.14.0}/pyproject.toml +1 -1
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/__init__.py +1 -1
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/__init__.py +33 -0
- hypermind-0.14.0/src/hypermind/orgs/experiment.py +159 -0
- hypermind-0.14.0/src/hypermind/orgs/groundtruth.py +126 -0
- hypermind-0.14.0/src/hypermind/orgs/intervention.py +72 -0
- hypermind-0.14.0/src/hypermind/orgs/metrics.py +148 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/model.py +9 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/report.py +11 -2
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/sim.py +77 -10
- hypermind-0.14.0/tests/orgs/_fakes.py +93 -0
- hypermind-0.14.0/tests/orgs/test_convergence.py +117 -0
- hypermind-0.14.0/tests/orgs/test_experiment.py +138 -0
- hypermind-0.14.0/tests/orgs/test_groundtruth.py +149 -0
- hypermind-0.14.0/tests/orgs/test_intervention.py +126 -0
- hypermind-0.14.0/tests/orgs/test_metrics.py +171 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_report.py +10 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_sim.py +4 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.editorconfig +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.gitattributes +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/FUNDING.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/renovate.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/check-license.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/code-review-pr.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/hotfix-security.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/issue-auto-fix.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/issue-triage.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/pr-standards.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/quality.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/release.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/security.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows/stale.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/branch-flow-check.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/chaos.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/check-license.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/ci.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/code-freeze.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/code-review-pr.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/code-review.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/codeql.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/dco.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/docs-to-wiki.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/docs.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/formal.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/fuzz.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/hotfix-security.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/issue-auto-fix.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/issue-triage.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/merge-comment.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/pip-audit.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/pr-standards.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/quality.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/release.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/sbom.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/scorecard.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/security.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/sprint-retro.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.github/workflows-disabled/stale.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.gitignore +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.pre-commit-config.yaml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/.tool-versions +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/CHANGELOG.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/CHARTER.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/CODEOWNERS +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/CODE_OF_CONDUCT.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/CONTRIBUTING.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/GOVERNANCE.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/LICENSE +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/MAINTAINERS.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/Makefile +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/RELATA_COMPATIBILITY.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/RELATA_INTEGRATION_PLAN.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/ROADMAP.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/SECURITY.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/baselines/v0.6.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/bench_consult.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/bench_dispute.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/bench_publish.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/baselines/v0.10.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/bench_rfp_latency.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/bench_task_throughput.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/bench_workflow_replay.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/coordination/run_all.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/bench/run_bench.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p1_partition_recovery.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p2_witness_compromise.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p3_key_rotation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p4_dispute_backlog.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p5_wire_cutover.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p6_quorum_loss.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p7_clock_skew.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/p8_recorder_outage.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/chaos/run_chaos.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/Dockerfile +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/docker-compose.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/grafana/dashboards/hypermind-coordination.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/grafana/dashboards/hypermind-v06.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/grafana/dashboards/hypermind.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/grafana/provisioning/dashboards/hypermind.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/grafana/provisioning/datasources/prometheus.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/k8s/hypermind-deployment.yaml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/prometheus/prometheus.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/deploy/systemd/hypermind.service +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/SIMLAB.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/SIMLAB_AUDIT_PLAN.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/_meta/glossary.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/_meta/provenance.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/_meta/public-surface.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/_meta/standards-map.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/agent.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/agent_card.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/capability.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/crypto.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/dispute.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/knowledge.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/observability.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/simlab-openapi.yaml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/sync.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/tasks.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/transport.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/api/wire.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/architecture-v0.6.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/assets/hero-swarm.svg +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/audit/findings.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/audit/scope.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/concepts.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/conformance/authority.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/conformance/bake-off-report.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/conformance/mark-policy.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/decide/01-disqualifiers.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/decide/02-alternatives.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/decide/03-incentive-aligned-cases.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/decide/04-use-cases.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/design/01-architecture.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/design/02-traces.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/design/03-failure-modes.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/design/04-poisoning-defenses.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/design/05-deployment-topology.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/feature-matrix.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/getting-started.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/governance/cna.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/governance/foundation-evaluation.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/hypermind-protocol-spec.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/index.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/legal/export-classification.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/lts.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/migrate/v0.x-to-v1.0.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/migration/v0.7.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/00-prerequisites.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/after.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e01-run-the-loop.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e02-draw-the-architecture.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e03-trace-a-claim.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e04-read-a-spec-section.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e05-break-it.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e06-add-a-test.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/exercises/e07-first-pr.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/glossary.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/00-what-is-hypermind.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/01-agents-and-swarms.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/02-architecture-tour.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/03-spec-literacy.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/04-cryptography.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/05-cbor-cose.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/06-transparency-logs.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/07-distributed-systems.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/08-async-python.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/topics/09-security-mindset.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/week-1-foundations.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/onboarding/week-2-deep-dive.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/01-deployment.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/02-runbook.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/03-resource-budget.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/backup-restore.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/data-residency.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/key-rotation.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/dispute-backlog-drain.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/key-rotation.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/kms-rotation.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/multi-host-deploy.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/partition-heal.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/quorum-loss.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/rfp-dispute-triage.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/wire-cutover.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/witness-compromise.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/runbooks/workflow-replay.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/operate/slo.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/paper/00-patent.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/paper/hypermind-paper-draft.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/paper/hypermind-paper.docx +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/paper/hypermind-paper.tex +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/release-notes/v1.0-checklist.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/release-notes/v1.0.0.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/security/threat-model.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/simlab/modes.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/simulations.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/00-overview.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/01-transport.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/02-cryptography.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/03-messages.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/04-knowledge-model.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/05-routing.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/06-conformance.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/07-trust-access-layer.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/08-onboarding-contract.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/09-agent-sdk.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/10-disputes.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/11-witness-transparency.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/12-governance.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/13-observability.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/14-threat-model.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/15-living-transmission.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/16-reference-comparisons.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/17-upgrade-v1.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/18-revocation.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/19-autonomy-contract.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/20-swarm-intelligence.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/21-belief-state.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/21-private-namespaces.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/22-transport-mtls.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/23-envelope-encryption.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/24-namespace-identity.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/25-capability-extensions.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/26-workflow.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/27-contract-net.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/28-distributed-trace.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/_meta/gaps-closed.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/appendix-N-calibration.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/appendix-TLA.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/appendix-z.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/errata.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/index.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/invariants.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/spec/normative-trace.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/supply-chain/sbom.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/supply-chain/slsa.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/supply-chain/verify-self.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/docs/sustainability.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/01_hello_world.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/02_two_agents_dispute.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/03_consult_panel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/04_oracle_resolve.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/05_consult_to_synthesis.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/06_hybrid_pq.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/07_frost_threshold.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/08_ramp_and_diagnostics.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/09_audit_export_chain.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/10_autonomous_agent.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/11_swarm_deliberation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/12_swarm_iq_scorecard.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/13_role_specialisation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/14_active_learning_loop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/16_wire_message.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/17_tool_delegation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/18_custom_responder.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/19_governance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/20_conformance_check.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/21_revocation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/22_agent_card.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/23_task_delegation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/24_mcp_tool_call.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/25_swarm_trace.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/01_durable_workflow.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/02_contract_net.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/03_belief_and_plan.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/ai_01_fed_benchmark.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/ai_alignment_redteam.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/cy_05_ir_swarm.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/cy_11_ransomware_intel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/ed_credentials.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/en_grid_coordinate.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/fi_04_bsa_314b.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/fi_22_ma_dataroom.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/gv_01_intel_sharing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/gv_21_red_team.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/hc_06_rare_disease.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/hc_21_fed_learning.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/lg_ediscovery.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/coordination/usecases/mf_supply_chain.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/e2e_many_agents.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/full_e2e_demo.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/lifecycle.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/org_university.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_aar.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_backtest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_capability_attenuation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_conformance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_crisis_tabletop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_cross_namespace_federation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_decision_tournament.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_dispute_lifecycle_async.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_evaluation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_geopolitical_crisis.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_geopolitical_traced.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_governance_committee.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_information_pipeline.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_learning_loop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_namespace_trust.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_persona_panel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_private_namespace.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_red_team.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_regulated_consortium.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_threat_intel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_vouch_chain.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/scenario_what_if_tree.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/serve_api.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/examples/two_node_tcp.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/hax-rust/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/hax-rust/scope.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/proverif/dispute_fsm.pv +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/proverif/dispute_liveness.pv +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/tamarin/capability_chain.spthy +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/tamarin/dispute_fsm.spthy +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/tamarin/signed_statement.spthy +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/formal/tamarin/wire_security.spthy +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/fuzz_agent_card.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/fuzz_anti_entropy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/fuzz_capability.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/fuzz_dispute.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/fuzz_inclusion_proof.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/fuzz_wire.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/fuzz/seed_corpus.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/__main__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/assertions.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/fixtures.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/report.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/roles.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/runner.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/scenario.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/scenarios/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/scenarios/autonomous_evolution.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/scenarios/swarm_iq_benchmark.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/harness/scenarios/threat_intel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/mkdocs.yml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/schemas/namespace_create.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/reference_verifier/verifier.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/review/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/review/__main__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/review/agents.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/review/models.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/review/runner.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hmctl/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hmctl/cli.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/_deprecations.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/agent.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/agent_card.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/api/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/api/app.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/capability.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/consult.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/consult_bias.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/contract_net.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/cose_encrypt.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/dkg.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/domain.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/frost.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/hashing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/hlc.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/hpke.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/kms.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/kms_backends/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/kms_backends/aws.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/kms_backends/azure.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/kms_backends/gcp.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/kms_backends/vault.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/namespace_root.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/pq.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/room_epoch.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/crypto/signing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/deliberation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/did_web.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/dispute.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/errors.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/eval/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/eval/calibration.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/eval/comparison.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/eval/replay.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/eval/swarm_iq.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/citation_graph.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/correlated_agreement.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/embedding_registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/kernel_store.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/rekor.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/reputation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/swarm_memory.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/knowledge/transparency.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/bridge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/client.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/provenance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/relata_tools.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/server.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mcp/transport.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/active.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/belief.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/deliberator.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/diversity.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/evolve.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/federation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/goals.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/integration.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/mediator.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/memory_store.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/policy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/records.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/roles.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/sybil_guard.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/mind/world_model.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/namespace.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/namespace_policy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/observability/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/observability/asgi.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/observability/cost.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/observability/otel_export.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/observability/recorder.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/observability/swarm_trace.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/interaction.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/templates/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/think.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/orgs/tools.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/pin_policy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/py.typed +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/anthropic.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/base.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/openai.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/router.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/structured.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/responders/tools.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/revocation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/rule_ids.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/schemas/encrypted_statement.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/schemas/namespace_accept.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/schemas/namespace_create.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/schemas/namespace_founding_attest.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/schemas/namespace_invite.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/schemas/wire-v0.1.cddl +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/_persona_registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/_scenario_impl.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/app.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/backends/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/backends/anchor.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/backends/local.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/backends/server.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/cli_command.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/config.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/deployment.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/knowledge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/learning.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/_eval_real_llm.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/aar.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/backtest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/binary_forecast.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/conformance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/evaluation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/governance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/redteam.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/tabletop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/tournament.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/modes/whatif.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/namespace.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/personas.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/prompt_generator.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/question_sets/geopolitics_q20.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/question_sets/governance_q5.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/question_sets/msft_outlook_q10.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/question_sets/whatif_q3.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/runner.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/scenario.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/swarms.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/alpha_vantage.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/brave.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/newsapi.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/openweather.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/pinecone.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/qdrant.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/query_knowledge_base.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/relata_recall.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/retrieve_document.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/serper.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/tavily.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/weaviate.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/wikipedia.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/wolfram.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_handlers/yahoo_finance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/tool_registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/topic_adapter.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/simlab/topic_questions.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/storage/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/storage/backend.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/storage/relata.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/storage/sqlite.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/sync.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/tal.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/tasks.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/testing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/tools/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/tools/registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/anti_entropy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/bus.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/knows_delta.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/libp2p.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/placement.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/tcp.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/transport/tls_profile.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/types.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/uncertainty.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/wire.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/workflow/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/workflow/engine.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/workflow/plan.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/src/hypermind/workflow/repair.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/storage-backend-requirements.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/api/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/api/test_eval_endpoints.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/api/test_events_stream.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/api/test_management_app.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/chaos/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/chaos/test_gossip_amplification.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/chaos/test_kill_agent_during_rfp.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/chaos/test_partition_during_workflow.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/chaos/test_slow_consumer_backpressure.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/chaos/test_slow_peer.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/generate_vectors.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/SIGNING.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/agent-card-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/agent-card-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/capability-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/capability-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/capability-03.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/dispute-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/dispute-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/dispute-03.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/dispute-04.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/dispute-05.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/frost-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/frost-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/frost-03.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/knows-delta-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/knows-delta-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/mcp-prov-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/mcp-prov-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/merkle-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/merkle-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/merkle-03.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/merkle-04.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/rep-decay-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/task-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/task-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/trace-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/trace-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/wire-envelope-01.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/wire-envelope-02.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/wire-envelope-03.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/wire-envelope-04.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conformance/vectors/wire-envelope-05.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/conftest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/fake_kms.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/harness/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/harness/conftest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/harness/test_assertion_library.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/harness/test_runner_lifecycle.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/harness/test_threat_intel_harness.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/integration/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/integration/test_kms_aws.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/integration/test_kms_azure.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/integration/test_kms_gcp.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/integration/test_kms_vault.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/integration/test_relata_server.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_interaction.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_model.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_templates.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_think.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/orgs/test_tools.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/responders/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/responders/test_responders.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/responders/test_router.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/responders/test_structured_response.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/responders/test_tools.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/review/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/review/test_agents_parser.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/review/test_models.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/review/test_runner.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/conftest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_app_endpoints.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_knowledge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_knowledge_reuse.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_aar.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_backtest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_conformance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_evaluation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_governance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_redteam.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_tabletop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_tournament.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_modes_whatif.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_personas.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_personas_endpoints.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_recorder_scoping.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_resolve_outcomes.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_responder_timeout.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_runner.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/simlab/test_swarms.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/storage/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/storage/test_relata_backend.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/storage/test_sqlite_backend.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_active_multi_step.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_agent_card.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_agent_e2e.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_agent_edge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_anti_entropy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_anti_entropy_multiround.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_anti_entropy_selfheal.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_appendix_z_conformance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_appendix_z_vectors.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_arg_dag_edge_types.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_backpressure.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_belief_revision.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_bias_detector.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_block_reason.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_calibration.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability_canonical.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability_chain.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability_edge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability_enforcement.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability_namespace_caveat.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_capability_revocation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_citation_graph.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_cli.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_cli_interop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_composite_lamps_prefix.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_consult.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_consult_stream.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_consult_stream_t4.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_contract_net_disputed_award.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_contract_net_frost_award.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_contract_net_happy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_contract_net_reputation_scoring.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_contract_net_sybil_filter.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_correlated_agreement.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_cose_encrypt_roundtrip.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_cost_tracker.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_cross_namespace_consult.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_crypto.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_deliberation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_deliberator_cap.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_deliberator_observe.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_deprecation_registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_determinism_corpus.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_dispute.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_dispute_fsm_full.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_dispute_mediate.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_dispute_quorum.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_dissent.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_diversity_quorum.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_dkg.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_embedding_registry.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_eval_comparison.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_examples_runnable.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_final_coverage.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_frost.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_frost_edge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_frost_hedged_nonces.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_frost_persistence.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_frost_transcript_store_swap.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_hlc_clock_source.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_hpke_vectors.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_info_gain_routing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_kernel_store.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_kms_backends.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_kms_fake.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_knows_delta.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_lamps_oid_canonical.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_last_lines.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_libp2p_peer_id.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_libp2p_scaffold.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_libp2p_stub.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mcp_bridge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mcp_provenance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mcp_tools_list.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mcp_transport.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_merkle_transparency.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_active.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_deliberator.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_diversity_sybil_mediator.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_evolve.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_goals_policy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_records.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_roles.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mind_world_model.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_misc_edge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_mtls_profile.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_namespace_lifecycle.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_namespace_policy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_namespace_policy_acl.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_observability_asgi.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_observability_otel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_open_factory.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_oracle_backprop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_otel_export.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_pin_policy.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_placement_consistent_hash.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_placement_hint.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_plan_dag.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_plan_repair.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_portable_inclusion_proof.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_pq_default.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_pq_dual_vendor.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_pq_signing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_priv_ns_conformance_coverage.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_property_based.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_protocol_version.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_public_surface_v05.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_pursue_workflow.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_rate_caveat.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_recorder_bounded.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_recorder_tail.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_reference_verifier_v2.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_rekor_client.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_rekor_downgrade.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_relata_memory_store.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_relata_tools.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_remaining_gaps.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_replay.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_reputation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_reputation_memory.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_reputation_staleness.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_review_fixes.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_revocation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_revocation_lifecycle.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_room_epoch.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_schema_hash_pinned.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_secret_redaction.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle1.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle2.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle3.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle3_cascade_isolate.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle3_governance.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle4.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle4_deliberator_broadcast.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_self_heal_cycle5.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_signer_protocol.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_sth_cross_gossip.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_iq.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_iq_at_scale.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_iq_recommend.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_memory.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_memory_federation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_trace.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_swarm_vector_overflow.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_sync_agent.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_tal.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_task_handle.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_task_handle_network.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_tcp_duplicate_kid_attack.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_tcp_edge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_tcp_final.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_tcp_read_loop_cleanup.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_tcp_transport.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_theory_of_mind.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_transport.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_two_impl_interop.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_uncertainty.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_uncertainty_edge.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_wire.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_wire_edge_cases.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_wire_kid_stability.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_wire_p3.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_wire_v2.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_wire_version.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_witness_preimage_length_prefix.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_workflow_compensation.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_workflow_engine.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/test_workflow_replay.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/__init__.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/conftest.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_ai_01_fed_benchmark.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_ai_alignment_redteam.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_cy_05_ir_swarm.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_cy_11_ransomware_intel.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_ed_credentials.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_en_grid_coordinate.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_fi_04_bsa_314b.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_fi_22_ma_dataroom.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_gv_01_intel_sharing.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_gv_21_red_team.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_hc_06_rare_disease.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_hc_21_fed_learning.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_lg_ediscovery.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/tests/usecases/test_mf_supply_chain.py +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/transport-rust/Cargo.toml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/transport-rust/README.md +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/transport-rust/pyproject.toml +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/transport-rust/src/lib.rs +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/index.html +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/package-lock.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/package.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/App.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/api/client.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/ActivityCanvas.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/AgentContribution.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/BrierHeatmap.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/CIQTrajectory.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/CitationGraph.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/DisputeTimeline.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/DissentList.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/Logo.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/NowAsking.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/PersonaRadar.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/PopulationGenerator.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/Term.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/forms/SchemaForm.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/AARTimeline.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/BacktestScorecard.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/ConformanceReport.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/CrisisTabletop.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/DecisionBracket.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/EvaluationReport.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/GovernanceReceipt.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/MethodNote.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/RedTeamReport.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/components/result/ScenarioTree.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/docs/index.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/docs/render.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/main.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/router.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/stores/sims.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/styles.css +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/types/trace.ts +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Agents.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Docs.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Evidence.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Home.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/HowItWorks.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Knowledge.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Namespaces.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Report.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Security.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/SimCompare.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/SimDetail.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/SimList.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/SimLive.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/SimNew.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/Tools.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/src/views/UseCases.vue +0 -0
- {hypermind-0.12.0 → hypermind-0.14.0}/webui/tsconfig.json +0 -0
- {hypermind-0.12.0 → hypermind-0.14.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.14.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.14.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.14.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
|
|
@@ -24,6 +24,18 @@ worked examples of the mapping.
|
|
|
24
24
|
|
|
25
25
|
from __future__ import annotations
|
|
26
26
|
|
|
27
|
+
from hypermind.orgs.experiment import (
|
|
28
|
+
Experiment,
|
|
29
|
+
ExperimentResult,
|
|
30
|
+
Variant,
|
|
31
|
+
VariantResult,
|
|
32
|
+
)
|
|
33
|
+
from hypermind.orgs.groundtruth import (
|
|
34
|
+
CallableGroundTruth,
|
|
35
|
+
GroundTruth,
|
|
36
|
+
LLMJudgeGroundTruth,
|
|
37
|
+
StaticGroundTruth,
|
|
38
|
+
)
|
|
27
39
|
from hypermind.orgs.interaction import (
|
|
28
40
|
Adversarial,
|
|
29
41
|
Cooperative,
|
|
@@ -31,6 +43,13 @@ from hypermind.orgs.interaction import (
|
|
|
31
43
|
Interaction,
|
|
32
44
|
get_interaction,
|
|
33
45
|
)
|
|
46
|
+
from hypermind.orgs.intervention import (
|
|
47
|
+
FlipPersona,
|
|
48
|
+
InjectEvent,
|
|
49
|
+
Intervention,
|
|
50
|
+
RemoveMember,
|
|
51
|
+
)
|
|
52
|
+
from hypermind.orgs.metrics import ScoreCard, compute_scorecard
|
|
34
53
|
from hypermind.orgs.model import (
|
|
35
54
|
DynamicsConfig,
|
|
36
55
|
OrgModel,
|
|
@@ -51,18 +70,32 @@ from hypermind.orgs.tools import (
|
|
|
51
70
|
|
|
52
71
|
__all__ = [
|
|
53
72
|
"Adversarial",
|
|
73
|
+
"CallableGroundTruth",
|
|
54
74
|
"Cooperative",
|
|
55
75
|
"Crowd",
|
|
56
76
|
"DynamicsConfig",
|
|
77
|
+
"Experiment",
|
|
78
|
+
"ExperimentResult",
|
|
79
|
+
"FlipPersona",
|
|
80
|
+
"GroundTruth",
|
|
81
|
+
"InjectEvent",
|
|
57
82
|
"Interaction",
|
|
83
|
+
"Intervention",
|
|
84
|
+
"LLMJudgeGroundTruth",
|
|
58
85
|
"MemberStanding",
|
|
59
86
|
"OrgModel",
|
|
60
87
|
"OrgReport",
|
|
61
88
|
"OrgSim",
|
|
89
|
+
"RemoveMember",
|
|
90
|
+
"ScoreCard",
|
|
62
91
|
"Seat",
|
|
63
92
|
"Slot",
|
|
93
|
+
"StaticGroundTruth",
|
|
64
94
|
"Unit",
|
|
95
|
+
"Variant",
|
|
96
|
+
"VariantResult",
|
|
65
97
|
"build_tool",
|
|
98
|
+
"compute_scorecard",
|
|
66
99
|
"declarative_grants",
|
|
67
100
|
"get_interaction",
|
|
68
101
|
"list_tools",
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
"""Experiment harness (#158) — sweeps, replicas, A/B, run diffing.
|
|
2
|
+
|
|
3
|
+
Researchers need reproducibility and comparison, not one-shot demos. An
|
|
4
|
+
``Experiment`` runs a base :class:`OrgModel` under several named **variants**
|
|
5
|
+
(dynamics overrides, member count, structural transforms, or sim-kwarg
|
|
6
|
+
overrides), N replicas each, and aggregates the per-run scorecards into
|
|
7
|
+
mean±stdev per metric — with a ``diff`` to see what moved between variants.
|
|
8
|
+
|
|
9
|
+
Pure orchestration over ``OrgSim`` + the scorecard (#151); with a deterministic
|
|
10
|
+
(fake) responder the whole thing is unit-testable with no live LLM/Relata.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
from __future__ import annotations
|
|
14
|
+
|
|
15
|
+
import asyncio
|
|
16
|
+
from collections.abc import Callable
|
|
17
|
+
from dataclasses import dataclass, field, replace
|
|
18
|
+
from statistics import mean, pstdev
|
|
19
|
+
from typing import Any
|
|
20
|
+
|
|
21
|
+
from hypermind.orgs.model import OrgModel
|
|
22
|
+
from hypermind.orgs.sim import OrgSim
|
|
23
|
+
|
|
24
|
+
# Scalar scorecard fields we aggregate (bool coerced to 0/1; None skipped).
|
|
25
|
+
_SCALAR_METRICS = (
|
|
26
|
+
"rounds",
|
|
27
|
+
"converged",
|
|
28
|
+
"time_to_consensus",
|
|
29
|
+
"final_spread",
|
|
30
|
+
"unit_polarization",
|
|
31
|
+
"brier_mean",
|
|
32
|
+
"claims",
|
|
33
|
+
"disputes",
|
|
34
|
+
"citations",
|
|
35
|
+
"participation_rate",
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass(frozen=True)
|
|
40
|
+
class Variant:
|
|
41
|
+
"""A named experimental condition applied to the base model + sim kwargs."""
|
|
42
|
+
|
|
43
|
+
name: str
|
|
44
|
+
dynamics: dict[str, Any] | None = None # DynamicsConfig field overrides
|
|
45
|
+
members: int | None = None
|
|
46
|
+
model_transform: Callable[[OrgModel], OrgModel] | None = None
|
|
47
|
+
sim_overrides: dict[str, Any] = field(default_factory=dict)
|
|
48
|
+
|
|
49
|
+
def build_model(self, base: OrgModel) -> OrgModel:
|
|
50
|
+
model = self.model_transform(base) if self.model_transform else base
|
|
51
|
+
if self.dynamics:
|
|
52
|
+
model = replace(model, dynamics=replace(model.dynamics, **self.dynamics))
|
|
53
|
+
return model
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass(frozen=True)
|
|
57
|
+
class VariantResult:
|
|
58
|
+
name: str
|
|
59
|
+
replicas: int
|
|
60
|
+
metrics: dict[str, tuple[float, float]] # metric -> (mean, stdev)
|
|
61
|
+
raw: list[dict[str, Any]] # per-replica scorecards
|
|
62
|
+
|
|
63
|
+
def value(self, metric: str) -> float | None:
|
|
64
|
+
m = self.metrics.get(metric)
|
|
65
|
+
return m[0] if m else None
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
@dataclass(frozen=True)
|
|
69
|
+
class ExperimentResult:
|
|
70
|
+
topic: str
|
|
71
|
+
variants: dict[str, VariantResult]
|
|
72
|
+
|
|
73
|
+
def diff(self, a: str, b: str) -> dict[str, float]:
|
|
74
|
+
"""Metric deltas (variant ``b`` minus variant ``a``) for shared metrics."""
|
|
75
|
+
va, vb = self.variants[a], self.variants[b]
|
|
76
|
+
out: dict[str, float] = {}
|
|
77
|
+
for metric, (mean_b, _) in vb.metrics.items():
|
|
78
|
+
if metric in va.metrics:
|
|
79
|
+
out[metric] = mean_b - va.metrics[metric][0]
|
|
80
|
+
return out
|
|
81
|
+
|
|
82
|
+
def to_dict(self) -> dict[str, Any]:
|
|
83
|
+
return {
|
|
84
|
+
"topic": self.topic,
|
|
85
|
+
"variants": {
|
|
86
|
+
name: {"replicas": v.replicas, "metrics": v.metrics}
|
|
87
|
+
for name, v in self.variants.items()
|
|
88
|
+
},
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _aggregate(scorecards: list[dict[str, Any]]) -> dict[str, tuple[float, float]]:
|
|
93
|
+
out: dict[str, tuple[float, float]] = {}
|
|
94
|
+
for metric in _SCALAR_METRICS:
|
|
95
|
+
vals: list[float] = []
|
|
96
|
+
for sc in scorecards:
|
|
97
|
+
v = sc.get(metric)
|
|
98
|
+
if v is None:
|
|
99
|
+
continue
|
|
100
|
+
vals.append(1.0 if v is True else 0.0 if v is False else float(v))
|
|
101
|
+
if vals:
|
|
102
|
+
out[metric] = (mean(vals), pstdev(vals) if len(vals) > 1 else 0.0)
|
|
103
|
+
return out
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
class Experiment:
|
|
107
|
+
"""Run a base model under several variants and compare the scorecards."""
|
|
108
|
+
|
|
109
|
+
def __init__(
|
|
110
|
+
self,
|
|
111
|
+
base_model: OrgModel,
|
|
112
|
+
*,
|
|
113
|
+
relata_url: str,
|
|
114
|
+
max_concurrency: int = 4,
|
|
115
|
+
**sim_kwargs: Any,
|
|
116
|
+
) -> None:
|
|
117
|
+
self.base_model = base_model
|
|
118
|
+
self.relata_url = relata_url
|
|
119
|
+
self._sim_kwargs = sim_kwargs
|
|
120
|
+
self._variants: list[Variant] = []
|
|
121
|
+
self._sem = asyncio.Semaphore(max(1, max_concurrency))
|
|
122
|
+
|
|
123
|
+
def variant(self, name: str, **overrides: Any) -> Experiment:
|
|
124
|
+
"""Register a variant. ``overrides`` may include ``dynamics``,
|
|
125
|
+
``members``, ``model_transform``, ``sim_overrides``."""
|
|
126
|
+
if any(v.name == name for v in self._variants):
|
|
127
|
+
raise ValueError(f"duplicate variant name {name!r}")
|
|
128
|
+
self._variants.append(Variant(name=name, **overrides))
|
|
129
|
+
return self
|
|
130
|
+
|
|
131
|
+
async def _run_one(self, variant: Variant, topic: str, rounds: int | None) -> dict[str, Any]:
|
|
132
|
+
model = variant.build_model(self.base_model)
|
|
133
|
+
kwargs = {**self._sim_kwargs, **variant.sim_overrides}
|
|
134
|
+
if variant.members is not None:
|
|
135
|
+
kwargs["members"] = variant.members
|
|
136
|
+
async with self._sem:
|
|
137
|
+
sim = OrgSim(model, relata_url=self.relata_url, **kwargs)
|
|
138
|
+
report = await sim.simulate(topic, rounds=rounds)
|
|
139
|
+
return report.scorecard
|
|
140
|
+
|
|
141
|
+
async def run(
|
|
142
|
+
self, topic: str, *, replicas: int = 1, rounds: int | None = None
|
|
143
|
+
) -> ExperimentResult:
|
|
144
|
+
if not self._variants:
|
|
145
|
+
raise ValueError("no variants registered; call .variant(...) first")
|
|
146
|
+
if replicas < 1:
|
|
147
|
+
raise ValueError(f"replicas must be >= 1, got {replicas}")
|
|
148
|
+
results: dict[str, VariantResult] = {}
|
|
149
|
+
for variant in self._variants:
|
|
150
|
+
scorecards = await asyncio.gather(
|
|
151
|
+
*(self._run_one(variant, topic, rounds) for _ in range(replicas))
|
|
152
|
+
)
|
|
153
|
+
results[variant.name] = VariantResult(
|
|
154
|
+
name=variant.name,
|
|
155
|
+
replicas=replicas,
|
|
156
|
+
metrics=_aggregate(list(scorecards)),
|
|
157
|
+
raw=list(scorecards),
|
|
158
|
+
)
|
|
159
|
+
return ExperimentResult(topic=topic, variants=results)
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"""Pluggable ground-truth oracles (#157).
|
|
2
|
+
|
|
3
|
+
Reputation should reflect **real accuracy**, not a `confidence >= 0.5`
|
|
4
|
+
heuristic. A ``GroundTruth`` resolves a published claim to a boolean outcome
|
|
5
|
+
(or ``None`` = unknown → fall back to the interaction default). Feeding real
|
|
6
|
+
outcomes into `oracle_resolve` makes reputation and the scorecard's Brier
|
|
7
|
+
score meaningful, and enables backtesting ("did the crowd actually predict
|
|
8
|
+
right?").
|
|
9
|
+
|
|
10
|
+
Built-ins:
|
|
11
|
+
* ``StaticGroundTruth`` — known outcomes keyed by member label or topic.
|
|
12
|
+
* ``CallableGroundTruth`` — wrap any sync/async ``(topic, claim) -> bool|None``.
|
|
13
|
+
* ``LLMJudgeGroundTruth`` — an independent LLM judges each claim vs a rubric.
|
|
14
|
+
|
|
15
|
+
All are injectable; the LLM judge takes a client (fake in tests).
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
from __future__ import annotations
|
|
19
|
+
|
|
20
|
+
import inspect
|
|
21
|
+
import json
|
|
22
|
+
from collections.abc import Awaitable, Callable
|
|
23
|
+
from typing import Any, Protocol, runtime_checkable
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@runtime_checkable
|
|
27
|
+
class GroundTruth(Protocol):
|
|
28
|
+
async def resolve(self, topic: str, claim: dict[str, Any]) -> bool | None:
|
|
29
|
+
"""Return True/False for a resolved claim, or None if unknown."""
|
|
30
|
+
...
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class StaticGroundTruth:
|
|
34
|
+
"""Fixed answers keyed by member label first, then topic.
|
|
35
|
+
|
|
36
|
+
``answers`` maps a claim's ``by`` label (or the topic string) to a bool.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
def __init__(self, answers: dict[str, bool]) -> None:
|
|
40
|
+
self._answers = dict(answers)
|
|
41
|
+
|
|
42
|
+
async def resolve(self, topic: str, claim: dict[str, Any]) -> bool | None:
|
|
43
|
+
by = claim.get("by")
|
|
44
|
+
if by in self._answers:
|
|
45
|
+
return self._answers[by]
|
|
46
|
+
return self._answers.get(topic)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class CallableGroundTruth:
|
|
50
|
+
"""Wrap any ``(topic, claim) -> bool | None`` (sync or async)."""
|
|
51
|
+
|
|
52
|
+
def __init__(
|
|
53
|
+
self,
|
|
54
|
+
fn: Callable[[str, dict[str, Any]], bool | None | Awaitable[bool | None]],
|
|
55
|
+
) -> None:
|
|
56
|
+
self._fn = fn
|
|
57
|
+
|
|
58
|
+
async def resolve(self, topic: str, claim: dict[str, Any]) -> bool | None:
|
|
59
|
+
out = self._fn(topic, claim)
|
|
60
|
+
if inspect.isawaitable(out):
|
|
61
|
+
return await out
|
|
62
|
+
return out
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
_JUDGE_SYSTEM = (
|
|
66
|
+
"You are an impartial evaluator. Given a question and a claim, decide "
|
|
67
|
+
"whether the claim is correct. Respond with a JSON object "
|
|
68
|
+
'{"correct": true|false} and nothing else.'
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class LLMJudgeGroundTruth:
|
|
73
|
+
"""An independent LLM scores each claim against an optional rubric.
|
|
74
|
+
|
|
75
|
+
``client`` is an OpenAI-compatible async client; injectable so tests pass a
|
|
76
|
+
fake. Returns None on any parse/transport failure (→ interaction default).
|
|
77
|
+
"""
|
|
78
|
+
|
|
79
|
+
def __init__(
|
|
80
|
+
self,
|
|
81
|
+
*,
|
|
82
|
+
client: Any,
|
|
83
|
+
model: str = "gpt-4o-mini",
|
|
84
|
+
rubric: str = "",
|
|
85
|
+
timeout_s: float = 30.0,
|
|
86
|
+
) -> None:
|
|
87
|
+
self._client = client
|
|
88
|
+
self._model = model
|
|
89
|
+
self._rubric = rubric
|
|
90
|
+
self._timeout = timeout_s
|
|
91
|
+
|
|
92
|
+
async def resolve(self, topic: str, claim: dict[str, Any]) -> bool | None:
|
|
93
|
+
finding = claim.get("finding") or f"(confidence {claim.get('confidence')})"
|
|
94
|
+
rubric = f"\nRubric: {self._rubric}" if self._rubric else ""
|
|
95
|
+
user = (
|
|
96
|
+
f"Question: {topic}\nClaim: {finding}{rubric}\n"
|
|
97
|
+
'Is the claim correct? Reply as {"correct": true|false}.'
|
|
98
|
+
)
|
|
99
|
+
try:
|
|
100
|
+
resp = await self._client.chat.completions.create(
|
|
101
|
+
model=self._model,
|
|
102
|
+
messages=[
|
|
103
|
+
{"role": "system", "content": _JUDGE_SYSTEM},
|
|
104
|
+
{"role": "user", "content": user},
|
|
105
|
+
],
|
|
106
|
+
response_format={"type": "json_object"},
|
|
107
|
+
timeout=self._timeout,
|
|
108
|
+
)
|
|
109
|
+
content = resp.choices[0].message.content or "{}"
|
|
110
|
+
verdict = json.loads(content).get("correct")
|
|
111
|
+
return bool(verdict) if verdict is not None else None
|
|
112
|
+
except Exception:
|
|
113
|
+
return None
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def as_ground_truth(
|
|
117
|
+
obj: GroundTruth | Callable[[str, dict[str, Any]], Any] | None,
|
|
118
|
+
) -> GroundTruth | None:
|
|
119
|
+
"""Normalise a GroundTruth, a plain callable, or None into a GroundTruth."""
|
|
120
|
+
if obj is None:
|
|
121
|
+
return None
|
|
122
|
+
if isinstance(obj, GroundTruth):
|
|
123
|
+
return obj
|
|
124
|
+
if callable(obj):
|
|
125
|
+
return CallableGroundTruth(obj)
|
|
126
|
+
raise TypeError(f"ground_truth must be a GroundTruth or callable, got {type(obj).__name__}")
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""Counterfactual interventions (#159) — perturb a run mid-flight.
|
|
2
|
+
|
|
3
|
+
Controlled what-if is the point of a simulator: inject a shock, ablate an
|
|
4
|
+
agent, or flip a persona at a chosen round, then compare the perturbed run to
|
|
5
|
+
the baseline (pair two runs with the same seed via
|
|
6
|
+
:class:`~hypermind.orgs.experiment.Experiment` and read ``diff``).
|
|
7
|
+
|
|
8
|
+
An ``Intervention`` fires at the *start* of its ``round`` (before members
|
|
9
|
+
think), so its effect propagates through that round's reasoning.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from dataclasses import dataclass
|
|
15
|
+
from typing import TYPE_CHECKING, Any, Protocol, runtime_checkable
|
|
16
|
+
|
|
17
|
+
if TYPE_CHECKING:
|
|
18
|
+
from hypermind.orgs.sim import OrgSim
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@runtime_checkable
|
|
22
|
+
class Intervention(Protocol):
|
|
23
|
+
round: int
|
|
24
|
+
|
|
25
|
+
async def apply(self, sim: OrgSim) -> None: ...
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
@dataclass
|
|
29
|
+
class InjectEvent:
|
|
30
|
+
"""A shock every member observes — written to each agent's memory so it
|
|
31
|
+
surfaces in the next round's recall and colours reasoning."""
|
|
32
|
+
|
|
33
|
+
round: int
|
|
34
|
+
text: str
|
|
35
|
+
|
|
36
|
+
async def apply(self, sim: OrgSim) -> None:
|
|
37
|
+
for m in sim._members:
|
|
38
|
+
await m.agent.remember(f"[EVENT] {self.text}", confidence=1.0)
|
|
39
|
+
sim._events.append({"round": self.round, "text": self.text})
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass
|
|
43
|
+
class RemoveMember:
|
|
44
|
+
"""Ablate a member (by label) from the simulation."""
|
|
45
|
+
|
|
46
|
+
round: int
|
|
47
|
+
label: str
|
|
48
|
+
|
|
49
|
+
async def apply(self, sim: OrgSim) -> None:
|
|
50
|
+
before = len(sim._members)
|
|
51
|
+
sim._members = [m for m in sim._members if m.label != self.label]
|
|
52
|
+
if len(sim._members) != before:
|
|
53
|
+
sim._events.append({"round": self.round, "removed": self.label})
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
@dataclass
|
|
57
|
+
class FlipPersona:
|
|
58
|
+
"""Swap a member's responder mid-run (e.g. change its stance/model).
|
|
59
|
+
|
|
60
|
+
``responder`` is any ``async (agent_kid, query) -> ResponderResult`` — build
|
|
61
|
+
it with a new system prompt/model, or inject a fake in tests.
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
round: int
|
|
65
|
+
label: str
|
|
66
|
+
responder: Any
|
|
67
|
+
|
|
68
|
+
async def apply(self, sim: OrgSim) -> None:
|
|
69
|
+
for m in sim._members:
|
|
70
|
+
if m.label == self.label:
|
|
71
|
+
m.responder = self.responder
|
|
72
|
+
sim._events.append({"round": self.round, "flipped": self.label})
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"""Quantitative scorecard for a simulation run (#151).
|
|
2
|
+
|
|
3
|
+
Everything here is a pure function over data ``OrgSim`` already tracks — no LLM
|
|
4
|
+
or Relata needed — so runs become **comparable across experiments** and the
|
|
5
|
+
whole module is unit-testable with hand-built inputs.
|
|
6
|
+
|
|
7
|
+
Metrics:
|
|
8
|
+
* **calibration (Brier)** — mean and per-member, over oracle-resolved claims.
|
|
9
|
+
* **consensus / convergence** — posterior variance per round, time-to-consensus.
|
|
10
|
+
* **polarization** — final belief spread and cross-unit gap (faction disagreement).
|
|
11
|
+
* **influence** — citation in-degree weighted by the *citer's* reputation.
|
|
12
|
+
* **activity** — claims / disputes / citations and participation rate.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from collections import defaultdict
|
|
18
|
+
from dataclasses import asdict, dataclass, field
|
|
19
|
+
from statistics import mean, pvariance
|
|
20
|
+
from typing import Any
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclass(frozen=True)
|
|
24
|
+
class ScoreCard:
|
|
25
|
+
rounds: int
|
|
26
|
+
posterior_variance_by_round: list[float]
|
|
27
|
+
converged: bool
|
|
28
|
+
time_to_consensus: int | None # 0-based round index, or None
|
|
29
|
+
final_spread: float # max-min member posterior, last round
|
|
30
|
+
unit_polarization: float # max-min of per-unit mean posterior, last round
|
|
31
|
+
brier_mean: float | None
|
|
32
|
+
brier_by_member: dict[str, float]
|
|
33
|
+
influence: dict[str, float]
|
|
34
|
+
top_influencer: str | None
|
|
35
|
+
claims: int
|
|
36
|
+
disputes: int
|
|
37
|
+
citations: int
|
|
38
|
+
participation_rate: float
|
|
39
|
+
_extra: dict[str, Any] = field(default_factory=dict)
|
|
40
|
+
|
|
41
|
+
def to_dict(self) -> dict[str, Any]:
|
|
42
|
+
d = asdict(self)
|
|
43
|
+
d.pop("_extra", None)
|
|
44
|
+
return d
|
|
45
|
+
|
|
46
|
+
def summary_lines(self) -> list[str]:
|
|
47
|
+
"""Compact human-readable lines for OrgReport.print()."""
|
|
48
|
+
cal = "n/a" if self.brier_mean is None else f"{self.brier_mean:.3f}"
|
|
49
|
+
conv = (
|
|
50
|
+
f"converged@round{self.time_to_consensus}"
|
|
51
|
+
if self.converged and self.time_to_consensus is not None
|
|
52
|
+
else ("polarized" if self.unit_polarization >= 0.25 else "no consensus")
|
|
53
|
+
)
|
|
54
|
+
return [
|
|
55
|
+
f"consensus: {conv} (final spread {self.final_spread:.3f}, "
|
|
56
|
+
f"unit polarization {self.unit_polarization:.3f})",
|
|
57
|
+
f"calibration (Brier, lower=better): {cal}",
|
|
58
|
+
f"top influencer: {self.top_influencer or '—'}"
|
|
59
|
+
+ (f" ({self.influence[self.top_influencer]:.2f})" if self.top_influencer else ""),
|
|
60
|
+
f"activity: {self.claims} claims · {self.citations} citations · "
|
|
61
|
+
f"{self.disputes} disputes · participation {self.participation_rate:.0%}",
|
|
62
|
+
]
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _brier(confidence: float, outcome: bool) -> float:
|
|
66
|
+
return (float(confidence) - (1.0 if outcome else 0.0)) ** 2
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
def compute_scorecard(
|
|
70
|
+
*,
|
|
71
|
+
per_round_posteriors: list[dict[str, float]],
|
|
72
|
+
member_units: dict[str, str],
|
|
73
|
+
claims: list[dict[str, Any]],
|
|
74
|
+
citations: list[tuple[str, str]],
|
|
75
|
+
reputations: dict[str, float],
|
|
76
|
+
disputes_count: int,
|
|
77
|
+
convergence_threshold: float = 0.02,
|
|
78
|
+
) -> ScoreCard:
|
|
79
|
+
"""Compute the scorecard from a run's tracked data.
|
|
80
|
+
|
|
81
|
+
``per_round_posteriors`` — one ``{member_label: posterior_mean}`` dict per round.
|
|
82
|
+
``member_units`` — every member's unit (denominator for participation).
|
|
83
|
+
``claims`` — dicts with keys ``kid_hex, label, unit, confidence, outcome``.
|
|
84
|
+
``citations`` — ``(citer_label, target_kid_hex)`` pairs.
|
|
85
|
+
``reputations`` — final ``{member_label: score}``.
|
|
86
|
+
"""
|
|
87
|
+
# --- consensus / convergence ---
|
|
88
|
+
var_by_round = [
|
|
89
|
+
pvariance(list(p.values())) if len(p) > 1 else 0.0 for p in per_round_posteriors
|
|
90
|
+
]
|
|
91
|
+
time_to_consensus = next(
|
|
92
|
+
(i for i, v in enumerate(var_by_round) if v <= convergence_threshold), None
|
|
93
|
+
)
|
|
94
|
+
converged = bool(var_by_round) and var_by_round[-1] <= convergence_threshold
|
|
95
|
+
|
|
96
|
+
last = per_round_posteriors[-1] if per_round_posteriors else {}
|
|
97
|
+
final_spread = (max(last.values()) - min(last.values())) if len(last) > 1 else 0.0
|
|
98
|
+
|
|
99
|
+
unit_vals: dict[str, list[float]] = defaultdict(list)
|
|
100
|
+
for label, p in last.items():
|
|
101
|
+
unit_vals[member_units.get(label, "?")].append(p)
|
|
102
|
+
unit_means = [mean(v) for v in unit_vals.values()]
|
|
103
|
+
unit_polarization = (max(unit_means) - min(unit_means)) if len(unit_means) > 1 else 0.0
|
|
104
|
+
|
|
105
|
+
# --- calibration (Brier) over resolved claims ---
|
|
106
|
+
resolved = [
|
|
107
|
+
(c["label"], float(c.get("confidence", 0.0)), c["outcome"])
|
|
108
|
+
for c in claims
|
|
109
|
+
if c.get("outcome") is not None
|
|
110
|
+
]
|
|
111
|
+
brier_all = [_brier(conf, out) for _, conf, out in resolved]
|
|
112
|
+
brier_mean = mean(brier_all) if brier_all else None
|
|
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
|
|
127
|
+
|
|
128
|
+
# --- activity ---
|
|
129
|
+
publishers = {c["label"] for c in claims}
|
|
130
|
+
total_members = len(member_units)
|
|
131
|
+
participation = len(publishers) / total_members if total_members else 0.0
|
|
132
|
+
|
|
133
|
+
return ScoreCard(
|
|
134
|
+
rounds=len(per_round_posteriors),
|
|
135
|
+
posterior_variance_by_round=var_by_round,
|
|
136
|
+
converged=converged,
|
|
137
|
+
time_to_consensus=time_to_consensus,
|
|
138
|
+
final_spread=final_spread,
|
|
139
|
+
unit_polarization=unit_polarization,
|
|
140
|
+
brier_mean=brier_mean,
|
|
141
|
+
brier_by_member=brier_by_member,
|
|
142
|
+
influence=influence,
|
|
143
|
+
top_influencer=top_influencer,
|
|
144
|
+
claims=len(claims),
|
|
145
|
+
disputes=disputes_count,
|
|
146
|
+
citations=len(citations),
|
|
147
|
+
participation_rate=participation,
|
|
148
|
+
)
|
|
@@ -109,10 +109,19 @@ class DynamicsConfig:
|
|
|
109
109
|
vouch_juniors: bool = True
|
|
110
110
|
evolve: bool = True
|
|
111
111
|
interaction: str = "cooperative"
|
|
112
|
+
# Convergence-driven stopping (used when run() is called without rounds=).
|
|
113
|
+
convergence_threshold: float = 0.02 # posterior variance <= this = consensus
|
|
114
|
+
convergence_patience: int = 2 # consecutive rounds required to declare a stop
|
|
115
|
+
polarization_threshold: float = 0.06 # stable variance >= this = entrenched split
|
|
116
|
+
max_rounds: int = 12 # hard cap for convergence-driven runs
|
|
112
117
|
|
|
113
118
|
def __post_init__(self) -> None:
|
|
114
119
|
if self.rounds < 1:
|
|
115
120
|
raise ValueError(f"rounds must be >= 1, got {self.rounds}")
|
|
121
|
+
if self.max_rounds < 1:
|
|
122
|
+
raise ValueError(f"max_rounds must be >= 1, got {self.max_rounds}")
|
|
123
|
+
if self.convergence_patience < 1:
|
|
124
|
+
raise ValueError(f"convergence_patience must be >= 1, got {self.convergence_patience}")
|
|
116
125
|
for name in ("publish_floor", "dispute_gap", "oracle_resolve_frac"):
|
|
117
126
|
v = getattr(self, name)
|
|
118
127
|
if not 0.0 <= v <= 1.0:
|
|
@@ -38,6 +38,9 @@ class OrgReport:
|
|
|
38
38
|
citations: list[tuple[str, str]]
|
|
39
39
|
disputes: list[dict[str, Any]]
|
|
40
40
|
tool_grants: dict[str, list[str]]
|
|
41
|
+
scorecard: dict[str, Any] = field(default_factory=dict)
|
|
42
|
+
stop_reason: str = "fixed" # fixed | converged | polarized | max_rounds
|
|
43
|
+
events: list[dict[str, Any]] = field(default_factory=list) # applied interventions
|
|
41
44
|
|
|
42
45
|
# ---- derived views -------------------------------------------------
|
|
43
46
|
|
|
@@ -74,9 +77,15 @@ class OrgReport:
|
|
|
74
77
|
s = self.summary()
|
|
75
78
|
print(f"\n=== {self.org} — “{self.topic}” ({self.interaction}) ===")
|
|
76
79
|
print(
|
|
77
|
-
f"{self.rounds} rounds
|
|
78
|
-
f"{s['citations']} citations · {s['disputes']} disputes"
|
|
80
|
+
f"{self.rounds} rounds ({self.stop_reason}) · {s['members']} members · "
|
|
81
|
+
f"{s['claims']} claims · {s['citations']} citations · {s['disputes']} disputes"
|
|
79
82
|
)
|
|
83
|
+
if self.scorecard:
|
|
84
|
+
from hypermind.orgs.metrics import ScoreCard
|
|
85
|
+
|
|
86
|
+
print("\nScorecard:")
|
|
87
|
+
for line in ScoreCard(**self.scorecard).summary_lines():
|
|
88
|
+
print(f" {line}")
|
|
80
89
|
print("\nTop standing:")
|
|
81
90
|
for st in self.top(10):
|
|
82
91
|
tools = f" tools={st.tools}" if st.tools else ""
|