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.
Files changed (371) hide show
  1. {ciris_server-0.4.2 → ciris_server-0.4.3}/Cargo.lock +1 -1
  2. {ciris_server-0.4.2 → ciris_server-0.4.3}/Cargo.toml +1 -1
  3. {ciris_server-0.4.2 → ciris_server-0.4.3}/PKG-INFO +1 -1
  4. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/bootstrap.rs +138 -6
  5. ciris_server-0.4.3/src/auth/gate.rs +79 -0
  6. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/mod.rs +7 -0
  7. ciris_server-0.4.3/src/auth/ownership.rs +473 -0
  8. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/compose.rs +27 -19
  9. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/federation_admin.rs +19 -0
  10. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/federation_admin.rs +133 -0
  11. ciris_server-0.4.3/tests/ownership.rs +503 -0
  12. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/root_bootstrap.rs +6 -1
  13. ciris_server-0.4.2/src/auth/gate.rs +0 -47
  14. {ciris_server-0.4.2 → ciris_server-0.4.3}/.cargo/config.toml +0 -0
  15. {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/bench.yml +0 -0
  16. {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/ci.yml +0 -0
  17. {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/conformance.yml +0 -0
  18. {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/publish-pypi.yml +0 -0
  19. {ciris_server-0.4.2 → ciris_server-0.4.3}/.github/workflows/release.yml +0 -0
  20. {ciris_server-0.4.2 → ciris_server-0.4.3}/.gitignore +0 -0
  21. {ciris_server-0.4.2 → ciris_server-0.4.3}/CHANGELOG.md +0 -0
  22. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/LENS_TO_SERVER_MIGRATION.md +0 -0
  23. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/MESH_ANIMATION_BRIEF.md +0 -0
  24. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/MODERATION_CHILD_SAFETY.md +0 -0
  25. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/ONE_WHEEL_REEXPORT.md +0 -0
  26. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/PQC_AV_STREAMING_BENCH.md +0 -0
  27. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/QA_AGAINST_RUST.md +0 -0
  28. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/REGISTRY_FOLD_DERISK.md +0 -0
  29. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/SAFETY_LANDSCAPE.md +0 -0
  30. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/SERVER_1.0_PLAN.md +0 -0
  31. {ciris_server-0.4.2 → ciris_server-0.4.3}/FSD/WATCHLIST_DETECTION.md +0 -0
  32. {ciris_server-0.4.2 → ciris_server-0.4.3}/LICENSE +0 -0
  33. {ciris_server-0.4.2 → ciris_server-0.4.3}/MISSION.md +0 -0
  34. {ciris_server-0.4.2 → ciris_server-0.4.3}/README.md +0 -0
  35. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/.gitignore +0 -0
  36. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/README.md +0 -0
  37. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/build.gradle.kts +0 -0
  38. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/build.gradle.kts +0 -0
  39. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/auth/FederationSigner.kt +0 -0
  40. {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
  41. {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
  42. {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
  43. {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
  44. {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
  45. {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
  46. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/net/FabricClient.kt +0 -0
  47. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/net/FabricEndpoints.kt +0 -0
  48. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/platform/PlatformLogger.kt +0 -0
  49. {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
  50. {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
  51. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/viewmodel/ErasureViewModel.kt +0 -0
  52. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonMain/kotlin/ai/ciris/fabric/viewmodel/IdentityViewModel.kt +0 -0
  53. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/fabric-client/src/commonTest/kotlin/ai/ciris/fabric/IdentitySliceTest.kt +0 -0
  54. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradle/wrapper/gradle-wrapper.jar +0 -0
  55. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradle/wrapper/gradle-wrapper.properties +0 -0
  56. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradle.properties +0 -0
  57. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradlew +0 -0
  58. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/gradlew.bat +0 -0
  59. {ciris_server-0.4.2 → ciris_server-0.4.3}/app/settings.gradle.kts +0 -0
  60. {ciris_server-0.4.2 → ciris_server-0.4.3}/bench-site/data.json +0 -0
  61. {ciris_server-0.4.2 → ciris_server-0.4.3}/bench-site/index.html +0 -0
  62. {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/alm_chain.rs +0 -0
  63. {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/pqc_av_streaming.rs +0 -0
  64. {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/replication_ingest.rs +0 -0
  65. {ciris_server-0.4.2 → ciris_server-0.4.3}/benches/stream_fanout.rs +0 -0
  66. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.github/workflows/bench.yml +0 -0
  67. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.github/workflows/ci.yml +0 -0
  68. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.gitignore +0 -0
  69. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/.pre-commit-config.yaml +0 -0
  70. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/Cargo.toml +0 -0
  71. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/FSD/CIRIS_LENS_CORE.md +0 -0
  72. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/FSD/LENS_CORE_V0_5.md +0 -0
  73. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/FSD/OPEN_QUESTIONS.md +0 -0
  74. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/LICENSE +0 -0
  75. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/MISSION.md +0 -0
  76. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/README.md +0 -0
  77. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/benches/aggregate.rs +0 -0
  78. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/benches/canonicalize.rs +0 -0
  79. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/benches/project.rs +0 -0
  80. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/deny.toml +0 -0
  81. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/BENCHMARKS.md +0 -0
  82. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/COHABITATION.md +0 -0
  83. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/PRE_COMMIT.md +0 -0
  84. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/PUBLIC_SCHEMA_CONTRACT.md +0 -0
  85. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/PYPI_PUBLISH.md +0 -0
  86. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/RELEASE_NOTES.md +0 -0
  87. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/STANDARDS_COMPARISON.md +0 -0
  88. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/docs/THREAT_MODEL.md +0 -0
  89. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/json_path.rs +0 -0
  90. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/metadata.rs +0 -0
  91. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/extraction/mod.rs +0 -0
  92. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/distilbert_loader.rs +0 -0
  93. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/fields.rs +0 -0
  94. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/mod.rs +0 -0
  95. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/ner.rs +0 -0
  96. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/ort_loader.rs +0 -0
  97. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/proptests.rs +0 -0
  98. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/regex.rs +0 -0
  99. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/patterns_from_cirislens_core/scrubber/walker.rs +0 -0
  100. {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
  101. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/pyproject.toml +0 -0
  102. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/python/ciris_lens_core/__init__.py +0 -0
  103. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/api.rs +0 -0
  104. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/delegate.rs +0 -0
  105. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/mod.rs +0 -0
  106. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/audit/pyo3.rs +0 -0
  107. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/canonical/ceg_egress.rs +0 -0
  108. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/canonical/mod.rs +0 -0
  109. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capacity/attestation.rs +0 -0
  110. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capacity/mod.rs +0 -0
  111. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capacity/score.rs +0 -0
  112. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/batch.rs +0 -0
  113. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/client.rs +0 -0
  114. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/consent.rs +0 -0
  115. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/correlation.rs +0 -0
  116. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/event.rs +0 -0
  117. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/mod.rs +0 -0
  118. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/partial.rs +0 -0
  119. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/py_engine.rs +0 -0
  120. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/capture/seal.rs +0 -0
  121. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/cohort/declared.rs +0 -0
  122. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/cohort/mod.rs +0 -0
  123. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/cohort/resourcing.rs +0 -0
  124. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/egress.rs +0 -0
  125. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/mod.rs +0 -0
  126. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/node.rs +0 -0
  127. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/retention.rs +0 -0
  128. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/config/upstream.rs +0 -0
  129. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/axis_metrics.rs +0 -0
  130. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/coherence_ratchet.rs +0 -0
  131. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/correlated_action.rs +0 -0
  132. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/distributive_access.rs +0 -0
  133. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/manifold.rs +0 -0
  134. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/detector/mod.rs +0 -0
  135. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/extract/mod.rs +0 -0
  136. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/extract/projection.rs +0 -0
  137. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/ffi/mod.rs +0 -0
  138. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/ffi/pyo3.rs +0 -0
  139. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/lib.rs +0 -0
  140. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/observability/mod.rs +0 -0
  141. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/pipeline/lifecycle.rs +0 -0
  142. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/pipeline/mod.rs +0 -0
  143. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/retention/eviction.rs +0 -0
  144. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/retention/mod.rs +0 -0
  145. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/retention/summary.rs +0 -0
  146. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/handler.rs +0 -0
  147. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/mod.rs +0 -0
  148. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/node.rs +0 -0
  149. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/relay.rs +0 -0
  150. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/role/ret_relay.rs +0 -0
  151. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scores/aggregate.rs +0 -0
  152. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scores/mod.rs +0 -0
  153. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scores/oracle.rs +0 -0
  154. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/assembly.rs +0 -0
  155. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/axis_calibration.rs +0 -0
  156. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/calibration.rs +0 -0
  157. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/capacity.rs +0 -0
  158. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/mod.rs +0 -0
  159. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/n_eff.rs +0 -0
  160. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/scoring/result.rs +0 -0
  161. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/signing/event.rs +0 -0
  162. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/signing/mod.rs +0 -0
  163. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/wire/mod.rs +0 -0
  164. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/src/wire/signer.rs +0 -0
  165. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/parity/README.md +0 -0
  166. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/parity/canonical_fixtures.json +0 -0
  167. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/parity/generate_canonical_fixtures.py +0 -0
  168. {ciris_server-0.4.2 → ciris_server-0.4.3}/crates/ciris-lens-core/tests/sovereign_rlib.rs +0 -0
  169. {ciris_server-0.4.2 → ciris_server-0.4.3}/pyproject.toml +0 -0
  170. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/README.md +0 -0
  171. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/README.md +0 -0
  172. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/REFACTORING_SUMMARY.md +0 -0
  173. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/__init__.py +0 -0
  174. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/auth_store.py +0 -0
  175. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/client.py +0 -0
  176. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/__init__.py +0 -0
  177. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/agent_interaction.py +0 -0
  178. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/unified_telemetry_examples.py +0 -0
  179. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/examples/wa_example.py +0 -0
  180. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/exceptions.py +0 -0
  181. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/model_types.py +0 -0
  182. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/models.py +0 -0
  183. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/pagination.py +0 -0
  184. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/rate_limiter.py +0 -0
  185. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/CONFIG_CLIENT.md +0 -0
  186. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/WA_CLIENT_GUIDE.md +0 -0
  187. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/__init__.py +0 -0
  188. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/agent.py +0 -0
  189. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/audit.py +0 -0
  190. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/auth.py +0 -0
  191. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/billing.py +0 -0
  192. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/config.py +0 -0
  193. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/consent.py +0 -0
  194. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/emergency.py +0 -0
  195. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/jobs.py +0 -0
  196. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/memory.py +0 -0
  197. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/setup.py +0 -0
  198. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/system.py +0 -0
  199. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/telemetry.py +0 -0
  200. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/wa.py +0 -0
  201. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/resources/websocket.py +0 -0
  202. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/setup.py +0 -0
  203. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/telemetry_models.py +0 -0
  204. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/telemetry_responses.py +0 -0
  205. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/transport.py +0 -0
  206. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/ciris_sdk/websocket.py +0 -0
  207. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/fabric_results.json +0 -0
  208. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/BILLING_QA_README.md +0 -0
  209. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/CLAUDE.md +0 -0
  210. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/README.md +0 -0
  211. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/SDK_MODULE_INTEGRATION.md +0 -0
  212. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/__init__.py +0 -0
  213. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/__main__.py +0 -0
  214. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/config.py +0 -0
  215. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/mcp_test_server.py +0 -0
  216. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/CLAUDE.md +0 -0
  217. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/MULTI_OCCURRENCE_README.md +0 -0
  218. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/__init__.py +0 -0
  219. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/_module_metadata.py +0 -0
  220. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/accord_metrics_tests.py +0 -0
  221. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/accord_tests.py +0 -0
  222. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_autoload_tests.py +0 -0
  223. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_availability_tests.py +0 -0
  224. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_config_tests.py +0 -0
  225. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/adapter_manifest_tests.py +0 -0
  226. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/agent_mode_tests.py +0 -0
  227. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/air_tests.py +0 -0
  228. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/api_tests.py +0 -0
  229. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/base_test_module.py +0 -0
  230. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/billing_integration_tests.py +0 -0
  231. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/billing_tests.py +0 -0
  232. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/cirisnode_tests.py +0 -0
  233. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/cognitive_state_api_tests.py +0 -0
  234. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/comprehensive_api_tests.py +0 -0
  235. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/comprehensive_single_step_tests.py +0 -0
  236. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/consent_tests.py +0 -0
  237. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/context_enrichment_tests.py +0 -0
  238. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/deferral_taxonomy_tests.py +0 -0
  239. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/deferral_tests.py +0 -0
  240. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/degraded_mode_tests.py +0 -0
  241. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/desktop_viz.py +0 -0
  242. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dream_live_tests.py +0 -0
  243. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dsar_multi_source_tests.py +0 -0
  244. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dsar_tests.py +0 -0
  245. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/dsar_ticket_workflow_tests.py +0 -0
  246. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/filter_test_helper.py +0 -0
  247. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/filter_tests.py +0 -0
  248. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/handler_tests.py +0 -0
  249. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/he300_benchmark_tests.py +0 -0
  250. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/homeassistant_agentic_tests.py +0 -0
  251. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/hosted_tools_tests.py +0 -0
  252. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/identity_update_tests.py +0 -0
  253. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/l4_attestation_tests.py +0 -0
  254. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/licensed_agent_tests.py +0 -0
  255. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mcp_tests.py +0 -0
  256. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/memory_benchmark_tests.py +0 -0
  257. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/message_id_debug_test.py +0 -0
  258. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/__init__.py +0 -0
  259. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/__main__.py +0 -0
  260. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/adb_helper.py +0 -0
  261. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/device_helper.py +0 -0
  262. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/first_time_licensed_agent.py +0 -0
  263. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/__init__.py +0 -0
  264. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/build_helper.py +0 -0
  265. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/idevice_helper.py +0 -0
  266. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/ios_ui_automator.py +0 -0
  267. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/vision_helper.py +0 -0
  268. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios/xcrun_helper.py +0 -0
  269. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios_physical_test_cases.py +0 -0
  270. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ios_test_cases.py +0 -0
  271. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/portal_registration.py +0 -0
  272. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/test_cases.py +0 -0
  273. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/test_runner.py +0 -0
  274. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/ui_automator.py +0 -0
  275. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/mobile/verify_trust_tests.py +0 -0
  276. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/model_eval_tests.py +0 -0
  277. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/multi_occurrence_tests.py +0 -0
  278. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/parallel_locales_tests.py +0 -0
  279. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/partnership_tests.py +0 -0
  280. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/play_live_tests.py +0 -0
  281. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/reddit_tests.py +0 -0
  282. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/safety_battery.py +0 -0
  283. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/safety_interpret.py +0 -0
  284. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/sdk_tests.py +0 -0
  285. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/secrets_encryption_tests.py +0 -0
  286. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/setup_e2e_tests.py +0 -0
  287. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/setup_tests.py +0 -0
  288. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/simple_single_step_tests.py +0 -0
  289. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/solitude_live_tests.py +0 -0
  290. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/sql_external_data_tests.py +0 -0
  291. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/state_transition_tests.py +0 -0
  292. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/streaming_verification.py +0 -0
  293. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/system_messages_tests.py +0 -0
  294. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/utility_adapters_tests.py +0 -0
  295. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/vision_tests.py +0 -0
  296. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/wallet_tests.py +0 -0
  297. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/CLAUDE.md +0 -0
  298. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/__init__.py +0 -0
  299. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/__main__.py +0 -0
  300. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/browser_helper.py +0 -0
  301. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/desktop_app_helper.py +0 -0
  302. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/desktop_test.py +0 -0
  303. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/federation_screen_tags.py +0 -0
  304. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/federation_walk_report.py +0 -0
  305. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/federation_walk_test.py +0 -0
  306. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/licensed_agent_flow.py +0 -0
  307. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/server_manager.py +0 -0
  308. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/test_cases.py +0 -0
  309. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/test_federation_walk_unit.py +0 -0
  310. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/modules/web_ui/test_runner.py +0 -0
  311. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_api_test.py +0 -0
  312. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_073205.json +0 -0
  313. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_153259.json +0 -0
  314. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_154628.json +0 -0
  315. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_154817.json +0 -0
  316. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports/qa_report_20250825_155917.json +0 -0
  317. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports_comprehensive/qa_report_20250825_075504.json +0 -0
  318. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports_final/qa_report_20250825_092420.json +0 -0
  319. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_reports_test/qa_report_20250825_092452.json +0 -0
  320. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/README.md +0 -0
  321. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/qa_api_test.py +0 -0
  322. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/qa_v1.0_sdk_comprehensive.py +0 -0
  323. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_scripts/qa_v1.0_unhealthy_services_check.py +0 -0
  324. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_test.py +0 -0
  325. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/qa_test_sdk.py +0 -0
  326. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/requirements.txt +0 -0
  327. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/runner.py +0 -0
  328. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/scripts/__init__.py +0 -0
  329. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/scripts/he300_stream_debug.py +0 -0
  330. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/server.py +0 -0
  331. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/staged_env.py +0 -0
  332. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/status_tracker.py +0 -0
  333. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/dsar_multi_source_privacy_schema.yaml +0 -0
  334. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/qa_test.db +0 -0
  335. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/qa_test_privacy_schema.yaml +0 -0
  336. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/qa_runner/test_data/sql_config.json +0 -0
  337. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/run_fabric.py +0 -0
  338. {ciris_server-0.4.2 → ciris_server-0.4.3}/qa/seed_wa_cert.py +0 -0
  339. {ciris_server-0.4.2 → ciris_server-0.4.3}/rust-toolchain.toml +0 -0
  340. {ciris_server-0.4.2 → ciris_server-0.4.3}/scripts/bench_report.py +0 -0
  341. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/ABSORPTION.md +0 -0
  342. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/api_keys.rs +0 -0
  343. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/attestation.rs +0 -0
  344. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/consent.rs +0 -0
  345. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/device_auth.rs +0 -0
  346. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/erasure.rs +0 -0
  347. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/oauth.rs +0 -0
  348. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/roles.rs +0 -0
  349. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/self_login.rs +0 -0
  350. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/session.rs +0 -0
  351. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/store.rs +0 -0
  352. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/auth/verify.rs +0 -0
  353. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/benchmarks/mod.rs +0 -0
  354. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/benchmarks/scoreboard.rs +0 -0
  355. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/config.rs +0 -0
  356. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/federation_nodecode.rs +0 -0
  357. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/import.rs +0 -0
  358. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/lib.rs +0 -0
  359. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/main.rs +0 -0
  360. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/nodecode.rs +0 -0
  361. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/peer.rs +0 -0
  362. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/quorum.rs +0 -0
  363. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/scorer/n_eff.rs +0 -0
  364. {ciris_server-0.4.2 → ciris_server-0.4.3}/src/scorer.rs +0 -0
  365. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/alm_chain.rs +0 -0
  366. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/capacity_scorer.rs +0 -0
  367. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/chaos_mesh.rs +0 -0
  368. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/nodecode.rs +0 -0
  369. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/noise_floor.rs +0 -0
  370. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/peer_replication.rs +0 -0
  371. {ciris_server-0.4.2 → ciris_server-0.4.3}/tests/replication.rs +0 -0
@@ -994,7 +994,7 @@ dependencies = [
994
994
 
995
995
  [[package]]
996
996
  name = "ciris-server"
997
- version = "0.4.2"
997
+ version = "0.4.3"
998
998
  dependencies = [
999
999
  "anyhow",
1000
1000
  "async-trait",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "ciris-server"
3
- version = "0.4.2" # 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 on fresh boot (operator-presence gate); 0.5 = +registry (~2.9.8); 1.0 = +node (~2.9.10). Patch forward on breakage.
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.2
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
- "first-run ROOT claim: self-attested founder registered + bound as ROOT \
955
- (founder → SYSTEM_ADMIN); one-time claim PIN consumed"
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 `steward` row needs no attestation). The `scrub_*` fields are populated for
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
- identity_type: identity_type::STEWARD.into(),
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;