ciris-server 0.4.2__tar.gz → 0.4.3__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.
- {ciris_server-0.4.2 → ciris_server-0.4.3}/Cargo.lock +1 -1
- {ciris_server-0.4.2 → ciris_server-0.4.3}/Cargo.toml +1 -1
- {ciris_server-0.4.2 → ciris_server-0.4.3}/PKG-INFO +1 -1
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/bootstrap.rs +138 -6
- ciris_server-0.4.3/src/auth/gate.rs +79 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/mod.rs +7 -0
- ciris_server-0.4.3/src/auth/ownership.rs +473 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/compose.rs +27 -19
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/federation_admin.rs +19 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/federation_admin.rs +133 -0
- ciris_server-0.4.3/tests/ownership.rs +503 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/root_bootstrap.rs +6 -1
- ciris_server-0.4.2/src/auth/gate.rs +0 -47
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.cargo/config.toml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/bench.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/ci.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/conformance.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/publish-pypi.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/release.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/.gitignore +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/CHANGELOG.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/LENS_TO_SERVER_MIGRATION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/MESH_ANIMATION_BRIEF.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/MODERATION_CHILD_SAFETY.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/ONE_WHEEL_REEXPORT.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/PQC_AV_STREAMING_BENCH.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/QA_AGAINST_RUST.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/REGISTRY_FOLD_DERISK.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/SAFETY_LANDSCAPE.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/SERVER_1.0_PLAN.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/WATCHLIST_DETECTION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/LICENSE +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/MISSION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/.gitignore +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/build.gradle.kts +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/build.gradle.kts +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/auth/FederationSigner.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/model/federation/Erasure.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/model/federation/FederationContent.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/model/federation/FederationMetrics.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/model/federation/FederationPeer.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/model/federation/NodeCode.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/model/identity/LocalIdentityAggregate.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/net/FabricClient.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/net/FabricEndpoints.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/platform/PlatformLogger.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/ui/screens/ErasureScreen.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/ui/screens/IdentityScreen.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/viewmodel/ErasureViewModel.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/viewmodel/IdentityViewModel.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonTest/kotlin/ai/ciris/fabric/IdentitySliceTest.kt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradle/wrapper/gradle-wrapper.jar +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradle/wrapper/gradle-wrapper.properties +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradle.properties +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradlew +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradlew.bat +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/app/settings.gradle.kts +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/bench-site/data.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/bench-site/index.html +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/alm_chain.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/pqc_av_streaming.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/replication_ingest.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/stream_fanout.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.github/workflows/bench.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.github/workflows/ci.yml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.gitignore +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.pre-commit-config.yaml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/Cargo.toml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/FSD/CIRIS_LENS_CORE.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/FSD/LENS_CORE_V0_5.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/FSD/OPEN_QUESTIONS.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/LICENSE +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/MISSION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/benches/aggregate.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/benches/canonicalize.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/benches/project.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/deny.toml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/BENCHMARKS.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/COHABITATION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/PRE_COMMIT.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/PUBLIC_SCHEMA_CONTRACT.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/PYPI_PUBLISH.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/RELEASE_NOTES.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/STANDARDS_COMPARISON.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/THREAT_MODEL.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/json_path.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/metadata.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/distilbert_loader.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/fields.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/ner.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/ort_loader.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/proptests.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/regex.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/walker.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/xlm_r_loader.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/pyproject.toml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/python/ciris_lens_core/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/api.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/delegate.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/pyo3.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/canonical/ceg_egress.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/canonical/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capacity/attestation.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capacity/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capacity/score.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/batch.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/client.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/consent.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/correlation.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/event.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/partial.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/py_engine.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/seal.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/cohort/declared.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/cohort/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/cohort/resourcing.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/egress.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/node.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/retention.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/upstream.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/axis_metrics.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/coherence_ratchet.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/correlated_action.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/distributive_access.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/manifold.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/extract/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/extract/projection.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/ffi/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/ffi/pyo3.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/lib.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/observability/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/pipeline/lifecycle.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/pipeline/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/retention/eviction.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/retention/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/retention/summary.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/handler.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/node.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/relay.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/ret_relay.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scores/aggregate.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scores/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scores/oracle.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/assembly.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/axis_calibration.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/calibration.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/capacity.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/n_eff.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/result.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/signing/event.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/signing/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/wire/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/wire/signer.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/parity/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/parity/canonical_fixtures.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/parity/generate_canonical_fixtures.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/sovereign_rlib.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/pyproject.toml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/REFACTORING_SUMMARY.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/auth_store.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/client.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/agent_interaction.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/unified_telemetry_examples.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/wa_example.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/exceptions.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/model_types.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/models.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/pagination.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/rate_limiter.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/CONFIG_CLIENT.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/WA_CLIENT_GUIDE.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/agent.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/audit.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/auth.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/billing.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/config.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/consent.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/emergency.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/jobs.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/memory.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/setup.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/system.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/telemetry.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/wa.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/websocket.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/setup.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/telemetry_models.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/telemetry_responses.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/transport.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/websocket.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/fabric_results.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/BILLING_QA_README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/CLAUDE.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/SDK_MODULE_INTEGRATION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/__main__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/config.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/mcp_test_server.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/CLAUDE.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/MULTI_OCCURRENCE_README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/_module_metadata.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/accord_metrics_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/accord_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_autoload_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_availability_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_config_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_manifest_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/agent_mode_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/air_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/api_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/base_test_module.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/billing_integration_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/billing_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/cirisnode_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/cognitive_state_api_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/comprehensive_api_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/comprehensive_single_step_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/consent_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/context_enrichment_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/deferral_taxonomy_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/deferral_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/degraded_mode_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/desktop_viz.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dream_live_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dsar_multi_source_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dsar_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dsar_ticket_workflow_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/filter_test_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/filter_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/handler_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/he300_benchmark_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/homeassistant_agentic_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/hosted_tools_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/identity_update_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/l4_attestation_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/licensed_agent_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mcp_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/memory_benchmark_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/message_id_debug_test.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/__main__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/adb_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/device_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/first_time_licensed_agent.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/build_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/idevice_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/ios_ui_automator.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/vision_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/xcrun_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios_physical_test_cases.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios_test_cases.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/portal_registration.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/test_cases.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/test_runner.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ui_automator.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/verify_trust_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/model_eval_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/multi_occurrence_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/parallel_locales_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/partnership_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/play_live_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/reddit_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/safety_battery.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/safety_interpret.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/sdk_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/secrets_encryption_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/setup_e2e_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/setup_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/simple_single_step_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/solitude_live_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/sql_external_data_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/state_transition_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/streaming_verification.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/system_messages_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/utility_adapters_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/vision_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/wallet_tests.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/CLAUDE.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/__main__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/browser_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/desktop_app_helper.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/desktop_test.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/federation_screen_tags.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/federation_walk_report.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/federation_walk_test.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/licensed_agent_flow.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/server_manager.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/test_cases.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/test_federation_walk_unit.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/test_runner.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_api_test.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_073205.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_153259.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_154628.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_154817.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_155917.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports_comprehensive/qa_report_20250825_075504.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports_final/qa_report_20250825_092420.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports_test/qa_report_20250825_092452.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/README.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/qa_api_test.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/qa_v1.0_sdk_comprehensive.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/qa_v1.0_unhealthy_services_check.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_test.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_test_sdk.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/requirements.txt +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/runner.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/scripts/__init__.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/scripts/he300_stream_debug.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/server.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/staged_env.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/status_tracker.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/dsar_multi_source_privacy_schema.yaml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/qa_test.db +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/qa_test_privacy_schema.yaml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/sql_config.json +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/run_fabric.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/seed_wa_cert.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/rust-toolchain.toml +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/scripts/bench_report.py +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/ABSORPTION.md +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/api_keys.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/attestation.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/consent.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/device_auth.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/erasure.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/oauth.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/roles.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/self_login.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/session.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/store.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/verify.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/benchmarks/mod.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/benchmarks/scoreboard.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/config.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/federation_nodecode.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/import.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/lib.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/main.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/nodecode.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/peer.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/quorum.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/scorer/n_eff.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/src/scorer.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/alm_chain.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/capacity_scorer.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/chaos_mesh.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/nodecode.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/noise_floor.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/peer_replication.rs +0 -0
- {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/replication.rs +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[package]
|
|
2
2
|
name = "ciris-server"
|
|
3
|
-
version = "0.4.
|
|
3
|
+
version = "0.4.3" # 0.1 = lens-only (agent ~2.9.7); 0.3 = +auth subsystem / one-wheel; 0.4 = +federation peering/identity (capacity scoring, consent:replication, register_federation_key gate, root-bootstrap, NodeCode); 0.4.1 = self-attested first-run root claim (fresh-founder hybrid PoP, #887); 0.4.2 = one-time claim PIN; 0.4.3 = CC-compliant ownership: infra:* responsible-party owner-binding (node-role, agency-forbidden), serve-only-until-owned; 0.5 = +registry (~2.9.8); 1.0 = +node (~2.9.10). Patch forward on breakage.
|
|
4
4
|
edition = "2021"
|
|
5
5
|
# MSRV floor is set by the substrate: ciris-verify v5.2.0 requires 1.86
|
|
6
6
|
# (persist v6.0.1 is 1.83). Build with the higher of the two.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ciris-server
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
4
4
|
License-File: LICENSE
|
|
5
5
|
Summary: The fabric node — the federation's headless cohabitation runtime (registry + lens [+ node] over one shared substrate), as the abi3 wheel CIRISAgent consumes. agent = fabric node + brain.
|
|
6
6
|
Author-email: Eric Moore <eric@ciris.ai>
|
|
@@ -592,6 +592,20 @@ struct SetupRootRequest {
|
|
|
592
592
|
/// NOT the federation directory.
|
|
593
593
|
#[serde(default)]
|
|
594
594
|
founder: Option<Founder>,
|
|
595
|
+
/// The cohort scope the responsible party claims this node under — one of
|
|
596
|
+
/// `self` / `family` / `community` (CC 4.4.3.4.1 cohort scopes). REQUIRED:
|
|
597
|
+
/// it records the membership-standing tier the owner-binding covers. Rides
|
|
598
|
+
/// inside the signed body, so it is signature-bound. Validated against the
|
|
599
|
+
/// closed set; anything else → `400`.
|
|
600
|
+
#[serde(default)]
|
|
601
|
+
cohort_scope: Option<String>,
|
|
602
|
+
/// OPTIONAL explicit infra scope set for the owner-binding (CC 4.4.3.5 —
|
|
603
|
+
/// `infra:*` ONLY). When absent the canonical
|
|
604
|
+
/// [`ownership::OWNER_BINDING_INFRA_SCOPES`] set is used. Any `agency:*` (or
|
|
605
|
+
/// legacy agency) scope here is REJECTED (CC 1.13.5): a node delegation
|
|
606
|
+
/// literally cannot carry agency.
|
|
607
|
+
#[serde(default)]
|
|
608
|
+
infra_scopes: Option<Vec<String>>,
|
|
595
609
|
/// The one-time CLAIM PIN printed to THIS node's console/log on a fresh boot —
|
|
596
610
|
/// the operator-presence secret (CONSOLE-ONLY; never served over HTTP). It is
|
|
597
611
|
/// verified (constant-time) against the boot PIN before ROOT is bound, and
|
|
@@ -606,10 +620,42 @@ struct SetupRootRequest {
|
|
|
606
620
|
struct SetupRootResponse {
|
|
607
621
|
/// The ROOT `wa_id` that was claimed.
|
|
608
622
|
wa_id: String,
|
|
609
|
-
/// The claiming federation identity (`key_id`)
|
|
623
|
+
/// The claiming federation identity (`key_id`) — the RESPONSIBLE PARTY (a
|
|
624
|
+
/// `user`-role identity), NOT a bare node.
|
|
610
625
|
identity_key_id: String,
|
|
611
|
-
/// The bridged API role (`SYSTEM_ADMIN`).
|
|
626
|
+
/// The bridged API role (`SYSTEM_ADMIN`), derived from the owner-binding.
|
|
612
627
|
role: String,
|
|
628
|
+
/// The cohort scope the node was claimed under (`self` / `family` /
|
|
629
|
+
/// `community`).
|
|
630
|
+
cohort_scope: String,
|
|
631
|
+
/// The owner-binding `delegates_to(user → node, infra:*)` attestation id (the
|
|
632
|
+
/// CC 3.2 responsible-party binding that was emitted).
|
|
633
|
+
owner_binding_attestation_id: String,
|
|
634
|
+
}
|
|
635
|
+
|
|
636
|
+
/// The closed set of cohort scopes a node may be claimed under (CC 4.4.3.4.1).
|
|
637
|
+
const COHORT_SCOPES: &[&str] = &["self", "family", "community"];
|
|
638
|
+
|
|
639
|
+
/// Validate the claimed cohort scope against [`COHORT_SCOPES`]. Returns the
|
|
640
|
+
/// normalized (trimmed) value, or `Err(response)` (a `400`) when absent/invalid.
|
|
641
|
+
/// The error is boxed (`result_large_err`) — an axum `Response` is large and
|
|
642
|
+
/// this is the cold/reject path.
|
|
643
|
+
fn validate_cohort_scope(req: &SetupRootRequest) -> Result<String, Box<Response>> {
|
|
644
|
+
let Some(raw) = req.cohort_scope.as_deref() else {
|
|
645
|
+
return Err(Box::new(err(
|
|
646
|
+
StatusCode::BAD_REQUEST,
|
|
647
|
+
"first-run ROOT claim must carry `cohort_scope` (one of self|family|community)",
|
|
648
|
+
)));
|
|
649
|
+
};
|
|
650
|
+
let v = raw.trim();
|
|
651
|
+
if COHORT_SCOPES.contains(&v) {
|
|
652
|
+
Ok(v.to_string())
|
|
653
|
+
} else {
|
|
654
|
+
Err(Box::new(err(
|
|
655
|
+
StatusCode::BAD_REQUEST,
|
|
656
|
+
format!("invalid cohort_scope {v:?} — must be one of self|family|community"),
|
|
657
|
+
)))
|
|
658
|
+
}
|
|
613
659
|
}
|
|
614
660
|
|
|
615
661
|
fn err(code: StatusCode, msg: impl Into<String>) -> Response {
|
|
@@ -707,6 +753,26 @@ fn verify_claim_pin(st: &SetupState, req: &SetupRootRequest) -> Option<Response>
|
|
|
707
753
|
/// `POST /v1/setup/root` — first-time-setup ROOT claim for a FRESH node with no
|
|
708
754
|
/// baked seed.
|
|
709
755
|
///
|
|
756
|
+
/// # The responsible-party model (CC 4.4.3.5 + CC 3.2 + CC 1.13.5)
|
|
757
|
+
///
|
|
758
|
+
/// A fabric node is `node`-role and MUST NOT have agency ("infrastructure must
|
|
759
|
+
/// not have agency", CC 1.13.5). This claim therefore establishes a RESPONSIBLE
|
|
760
|
+
/// PARTY, not an agency partnership:
|
|
761
|
+
///
|
|
762
|
+
/// - the claimant is the **responsible user** — registered as `identity_type
|
|
763
|
+
/// "user"` (CC 3.2: ownership roots in an accountable human);
|
|
764
|
+
/// - on success the handler emits the structural owner-binding
|
|
765
|
+
/// `delegates_to(user → THIS node, infra:*)`
|
|
766
|
+
/// ([`ownership::emit_owner_binding`]) — `infra:*` scopes ONLY;
|
|
767
|
+
/// - it records the chosen `cohort_scope` (self|family|community); and
|
|
768
|
+
/// - the ROOT WaCert / `SYSTEM_ADMIN` is the *derived* API-role view of that
|
|
769
|
+
/// same responsible party.
|
|
770
|
+
///
|
|
771
|
+
/// Any `agency:*` (or legacy agency) scope in the claim is REJECTED (`400`) — a
|
|
772
|
+
/// node delegation literally cannot carry agency (the CC 1.13.5 wire-checkable
|
|
773
|
+
/// invariant). The AGENT's joint-agency partnership (`agency:*` +
|
|
774
|
+
/// `consent:partnership_grant/accept`) stays in the agent, NOT here.
|
|
775
|
+
///
|
|
710
776
|
/// # Security model — four independent gates
|
|
711
777
|
///
|
|
712
778
|
/// 0. **One-time CLAIM PIN (operator-presence)** — the claim MUST carry the
|
|
@@ -835,6 +901,32 @@ async fn setup_root(
|
|
|
835
901
|
);
|
|
836
902
|
};
|
|
837
903
|
|
|
904
|
+
// (responsible-party model — CC 4.4.3.5 + CC 3.2 + CC 1.13.5)
|
|
905
|
+
// The claimant is the RESPONSIBLE PARTY, not an agency partner. Two
|
|
906
|
+
// body-level gates before we spend a signature verify:
|
|
907
|
+
// (b) the cohort scope (self|family|community) the node is claimed under, and
|
|
908
|
+
// (CC 1.13.5) REFUSE any agency:* (or legacy agency) scope in the claim — a
|
|
909
|
+
// node delegation literally cannot carry agency. The owner-binding is
|
|
910
|
+
// infra:* ONLY.
|
|
911
|
+
let cohort_scope = match validate_cohort_scope(&req) {
|
|
912
|
+
Ok(v) => v,
|
|
913
|
+
Err(resp) => return *resp,
|
|
914
|
+
};
|
|
915
|
+
let infra_scopes: Vec<String> = match req.infra_scopes.clone() {
|
|
916
|
+
Some(s) => s,
|
|
917
|
+
None => super::ownership::OWNER_BINDING_INFRA_SCOPES
|
|
918
|
+
.iter()
|
|
919
|
+
.map(|s| s.to_string())
|
|
920
|
+
.collect(),
|
|
921
|
+
};
|
|
922
|
+
if !super::ownership::scopes_are_infra_only(&infra_scopes) {
|
|
923
|
+
return err(
|
|
924
|
+
StatusCode::BAD_REQUEST,
|
|
925
|
+
"first-run ROOT claim carries a non-infra (agency:* or legacy-agency) scope — \
|
|
926
|
+
a node delegation MUST be infra:* ONLY (CC 1.13.5); agency stays in the agent",
|
|
927
|
+
);
|
|
928
|
+
}
|
|
929
|
+
|
|
838
930
|
let signing_key_id = match header_str(&headers, verify::HEADER_KEY_ID) {
|
|
839
931
|
Some(v) => v,
|
|
840
932
|
None => {
|
|
@@ -942,6 +1034,32 @@ async fn setup_root(
|
|
|
942
1034
|
};
|
|
943
1035
|
match store::upsert(&st.engine, cert).await {
|
|
944
1036
|
Ok(()) => {
|
|
1037
|
+
// (responsible-party model, CC 3.2) Emit the owner-binding
|
|
1038
|
+
// delegates_to(responsible_user → THIS node, infra:*). This is the
|
|
1039
|
+
// STRUCTURAL artifact that binds the node UNDER the user's authority
|
|
1040
|
+
// with NO agency (CC 1.13.5); the ROOT WaCert / SystemAdmin above is
|
|
1041
|
+
// the derived API-role view of the SAME responsible party. The scope
|
|
1042
|
+
// set was already proven infra-only (the agency reject gate ran on the
|
|
1043
|
+
// body). A failure here is fatal to the claim's CC-meaning, so surface
|
|
1044
|
+
// it (the ROOT cert exists but is owner-unbound — we report 500 so the
|
|
1045
|
+
// operator re-drives rather than silently leaving a half-bound node).
|
|
1046
|
+
let owner_binding_attestation_id = match super::ownership::emit_owner_binding(
|
|
1047
|
+
&st.engine,
|
|
1048
|
+
&founder.key_id,
|
|
1049
|
+
&st.node_key_id,
|
|
1050
|
+
&infra_scopes,
|
|
1051
|
+
)
|
|
1052
|
+
.await
|
|
1053
|
+
{
|
|
1054
|
+
Ok(id) => id,
|
|
1055
|
+
Err(e) => {
|
|
1056
|
+
return err(
|
|
1057
|
+
StatusCode::INTERNAL_SERVER_ERROR,
|
|
1058
|
+
format!("ROOT bound but owner-binding emit failed: {e}"),
|
|
1059
|
+
)
|
|
1060
|
+
}
|
|
1061
|
+
};
|
|
1062
|
+
|
|
945
1063
|
// Consume the one-time PIN: clear it so it can never be replayed. (The
|
|
946
1064
|
// route is also 409-closed now that a ROOT exists — this is defence in
|
|
947
1065
|
// depth + makes the consumed-once invariant directly assertable.)
|
|
@@ -951,8 +1069,11 @@ async fn setup_root(
|
|
|
951
1069
|
tracing::info!(
|
|
952
1070
|
identity = %founder.key_id,
|
|
953
1071
|
wa_id = %wa_id,
|
|
954
|
-
|
|
955
|
-
|
|
1072
|
+
cohort_scope = %cohort_scope,
|
|
1073
|
+
owner_binding = %owner_binding_attestation_id,
|
|
1074
|
+
"first-run ROOT claim: responsible user registered + owner-binding \
|
|
1075
|
+
delegates_to(user → node, infra:*) emitted; ROOT/SYSTEM_ADMIN derived; \
|
|
1076
|
+
one-time claim PIN consumed (CC 3.2 / CC 1.13.5)"
|
|
956
1077
|
);
|
|
957
1078
|
(
|
|
958
1079
|
StatusCode::CREATED,
|
|
@@ -960,6 +1081,8 @@ async fn setup_root(
|
|
|
960
1081
|
wa_id,
|
|
961
1082
|
identity_key_id: founder.key_id,
|
|
962
1083
|
role: super::roles::UserRole::SystemAdmin.as_str().to_string(),
|
|
1084
|
+
cohort_scope,
|
|
1085
|
+
owner_binding_attestation_id,
|
|
963
1086
|
}),
|
|
964
1087
|
)
|
|
965
1088
|
.into_response()
|
|
@@ -994,9 +1117,15 @@ fn header_str(headers: &HeaderMap, name: &str) -> Option<String> {
|
|
|
994
1117
|
/// just over the body. So we record the proven identity directly via
|
|
995
1118
|
/// [`put_public_key`](ciris_persist::federation::FederationDirectory::put_public_key),
|
|
996
1119
|
/// which keeps its own `algorithm == hybrid` + `accord_holder` attestation gates
|
|
997
|
-
/// (a `
|
|
1120
|
+
/// (a `user` row needs no attestation). The `scrub_*` fields are populated for
|
|
998
1121
|
/// row-shape completeness (a self-attested envelope + the body signatures); they
|
|
999
1122
|
/// are NOT re-verified by `put_public_key`.
|
|
1123
|
+
///
|
|
1124
|
+
/// **The claimant is the RESPONSIBLE PARTY (CC 3.2): a `user`-role identity, NOT
|
|
1125
|
+
/// a steward.** Ownership roots in an accountable human; the node binds UNDER the
|
|
1126
|
+
/// user's authority via a later `delegates_to(user → node, infra:*)`. We register
|
|
1127
|
+
/// the founder's key as `identity_type "user"` (corrected from the prior
|
|
1128
|
+
/// "steward") so [`ownership::is_owner_bound`]'s granter-is-user check resolves.
|
|
1000
1129
|
async fn register_founder_key(
|
|
1001
1130
|
engine: &Engine,
|
|
1002
1131
|
founder: &Founder,
|
|
@@ -1011,7 +1140,10 @@ async fn register_founder_key(
|
|
|
1011
1140
|
pubkey_ed25519_base64: founder.ed25519_pubkey_b64.clone(),
|
|
1012
1141
|
pubkey_ml_dsa_65_base64: Some(founder.ml_dsa_65_pubkey_b64.clone()),
|
|
1013
1142
|
algorithm: algorithm::HYBRID.into(),
|
|
1014
|
-
|
|
1143
|
+
// CC 3.2: the responsible party is a `user`-role identity (free-form
|
|
1144
|
+
// TEXT per CC 3.4.7.1). The substrate ships an `identity_type::USER`
|
|
1145
|
+
// constant; we use it (not STEWARD).
|
|
1146
|
+
identity_type: identity_type::USER.into(),
|
|
1015
1147
|
identity_ref: founder.key_id.clone(),
|
|
1016
1148
|
valid_from: now,
|
|
1017
1149
|
valid_until: None,
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
//! The owner-binding gate (CIRISServer#9) — the CIRISServer authz floor.
|
|
2
|
+
//! CEG has the primitives but does not mandate it (filed as the optional
|
|
3
|
+
//! normative rule in CIRISRegistry#83).
|
|
4
|
+
//!
|
|
5
|
+
//! **TRUST ≠ JOIN. SERVE ≠ OWN.** A node may *trust + serve* an infrastructure
|
|
6
|
+
//! community (relay/store/transport/serve reads — e.g. the shipped
|
|
7
|
+
//! ciris-canonical pin) with **no owner**. It may *join* (become a member: share
|
|
8
|
+
//! the DEK, count in consensus) a **non-infrastructure** community, and may
|
|
9
|
+
//! perform owner-only operations (e.g. federation peering), only after a
|
|
10
|
+
//! **RESPONSIBLE PARTY is bound** to it — a `user`-role identity holding a live
|
|
11
|
+
//! `delegates_to(user → node, infra:*)` owner-binding (CC 3.2 / CC 4.4.3.5).
|
|
12
|
+
//! Non-infra membership + cross-node data flow are authority acts, which §1.5 /
|
|
13
|
+
//! §7.0.1 require to root in an accountable human — never a bare node.
|
|
14
|
+
//!
|
|
15
|
+
//! **The serve-only floor (the principle this gate enforces).** An UNOWNED node
|
|
16
|
+
//! refuses every owner-op and serves cleartext federation data from the
|
|
17
|
+
//! **canonical root ONLY** — it relays/serves but does not author cross-node
|
|
18
|
+
//! consent, join non-infra groups, or otherwise act with the standing of an
|
|
19
|
+
//! owned member. [`is_owner_bound`] is the producer of the `owner_bound` bit;
|
|
20
|
+
//! [`require_owner_bound`] is the operational gate.
|
|
21
|
+
|
|
22
|
+
use ciris_persist::prelude::Engine;
|
|
23
|
+
|
|
24
|
+
pub use crate::auth::ownership::is_owner_bound;
|
|
25
|
+
|
|
26
|
+
/// The community class for the gate.
|
|
27
|
+
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
|
28
|
+
pub enum CommunityKind {
|
|
29
|
+
/// `cohort_subkind: infrastructure` — trust roots (ciris-canonical /
|
|
30
|
+
/// governance). Joinable with no owner; the trust root is maximally
|
|
31
|
+
/// inspectable.
|
|
32
|
+
Infrastructure,
|
|
33
|
+
/// Any other community (family / community / affiliations).
|
|
34
|
+
Other,
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/// May this node be **admitted as a member** of a community of `kind`, given
|
|
38
|
+
/// whether an accountable owner (responsible party) is bound to it? (Trust +
|
|
39
|
+
/// serve is always allowed and is NOT gated here — this governs *membership*
|
|
40
|
+
/// only.)
|
|
41
|
+
pub fn may_join(kind: CommunityKind, owner_bound: bool) -> bool {
|
|
42
|
+
match kind {
|
|
43
|
+
CommunityKind::Infrastructure => true,
|
|
44
|
+
CommunityKind::Other => owner_bound,
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/// Resolve whether `node_key_id` has a responsible party bound (the producer of
|
|
49
|
+
/// the `owner_bound` bit), then apply [`may_join`]. A node with no live
|
|
50
|
+
/// `delegates_to(user → node, infra:*)` owner-binding may join only
|
|
51
|
+
/// infrastructure communities.
|
|
52
|
+
pub async fn may_join_resolved(engine: &Engine, node_key_id: &str, kind: CommunityKind) -> bool {
|
|
53
|
+
let owner_bound = is_owner_bound(engine, node_key_id).await.is_some();
|
|
54
|
+
may_join(kind, owner_bound)
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/// **The serve-only-floor gate.** `Ok(responsible_user_key_id)` iff a live
|
|
58
|
+
/// owner-binding exists; `Err(())` for an UNOWNED node (it must refuse the
|
|
59
|
+
/// owner-op and fall back to serving cleartext from the canonical root only).
|
|
60
|
+
///
|
|
61
|
+
/// This is the operational producer of `owner_bound` for owner-requiring
|
|
62
|
+
/// routes (e.g. `POST /v1/federation/peering`): an unowned node refuses
|
|
63
|
+
/// owner-ops, period — independent of any session/role the caller presents.
|
|
64
|
+
pub async fn require_owner_bound(engine: &Engine, node_key_id: &str) -> Result<String, ()> {
|
|
65
|
+
is_owner_bound(engine, node_key_id).await.ok_or(())
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
#[cfg(test)]
|
|
69
|
+
mod tests {
|
|
70
|
+
use super::*;
|
|
71
|
+
|
|
72
|
+
#[test]
|
|
73
|
+
fn infra_joinable_without_owner_other_is_not() {
|
|
74
|
+
assert!(may_join(CommunityKind::Infrastructure, false));
|
|
75
|
+
assert!(may_join(CommunityKind::Infrastructure, true));
|
|
76
|
+
assert!(!may_join(CommunityKind::Other, false));
|
|
77
|
+
assert!(may_join(CommunityKind::Other, true));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -39,6 +39,13 @@ pub mod device_auth;
|
|
|
39
39
|
pub mod erasure;
|
|
40
40
|
pub mod gate;
|
|
41
41
|
pub mod oauth;
|
|
42
|
+
/// Node ownership = the **responsible-party** model (CC 4.4.3.5 + CC 3.2 +
|
|
43
|
+
/// CC 1.13.5): a fabric node has NO agency, so ownership is a `user`-role
|
|
44
|
+
/// responsible party bound by an `infra:*`-only `delegates_to` — NOT the
|
|
45
|
+
/// agent's joint-agency partnership. Carries the infra/agency scope-split
|
|
46
|
+
/// verifier ([`ownership::scopes_are_infra_only`]), the owner-binding emitter,
|
|
47
|
+
/// and the [`ownership::is_owner_bound`] reader.
|
|
48
|
+
pub mod ownership;
|
|
42
49
|
pub mod roles;
|
|
43
50
|
pub mod self_login;
|
|
44
51
|
pub mod session;
|