agentevo-cloud 0.1.9__tar.gz → 0.2.8__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.
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/.gitignore +3 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/LICENSE +1 -1
- agentevo_cloud-0.2.8/PKG-INFO +165 -0
- agentevo_cloud-0.2.8/README.md +133 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/openapi/openapi.v1.json +713 -12
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/pyproject.toml +8 -3
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/analytics.py +216 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/app.py +1095 -102
- agentevo_cloud-0.2.8/src/agentevo_cloud/application_alerts.py +65 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_activation.py +326 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_admission.py +220 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_authority.py +306 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_bootstrap.py +444 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_continuity.py +461 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_epoch.py +218 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_legacy.py +121 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_mode.py +386 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_retained.py +239 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_rows.py +365 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_schema.py +418 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/audit_writer.py +182 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/backup_archive.py +396 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/backup_workflows.py +379 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/billing.py +183 -32
- agentevo_cloud-0.2.8/src/agentevo_cloud/bounded_dns.py +61 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/clerk.py +150 -17
- agentevo_cloud-0.2.8/src/agentevo_cloud/clerk_session.py +81 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/cli.py +282 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/community.py +228 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/config.py +98 -1
- agentevo_cloud-0.2.8/src/agentevo_cloud/data_exports.py +300 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/db.py +567 -87
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/demo.py +6 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/device_grants.py +146 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/devices.py +340 -16
- agentevo_cloud-0.2.8/src/agentevo_cloud/entitlement_recovery.py +1489 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/erasure_journal.py +3507 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/event_evidence.py +490 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/event_retirement.py +881 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/events.py +85 -6
- agentevo_cloud-0.2.8/src/agentevo_cloud/handoffs.py +259 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/health.py +103 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/health_receipts.py +211 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/housekeeping.py +18 -3
- agentevo_cloud-0.2.8/src/agentevo_cloud/http_deadline.py +181 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/job_authority.py +644 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/jobs.py +1261 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/live.py +34 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/managed.py +202 -2
- agentevo_cloud-0.2.8/src/agentevo_cloud/mcp.py +574 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/mcp_delivery.py +463 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/mcp_delivery_asgi.py +146 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/metering.py +11 -1
- agentevo_cloud-0.2.8/src/agentevo_cloud/migration_lifecycle.py +1172 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/observability.py +175 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/oidc.py +100 -23
- agentevo_cloud-0.2.8/src/agentevo_cloud/operator_privacy.py +470 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/privacy_boundary.py +1049 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/recall.py +177 -19
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/records.py +33 -20
- agentevo_cloud-0.2.8/src/agentevo_cloud/recovery_authority.py +49 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/relationships.py +143 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/retention.py +984 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/revoke.py +58 -8
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/screen.py +12 -3
- agentevo_cloud-0.2.8/src/agentevo_cloud/session_closure.py +564 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/sqlite_engine.py +272 -0
- agentevo_cloud-0.2.8/src/agentevo_cloud/storage_conversion.py +257 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/sync.py +69 -5
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/tenant_guard.py +575 -91
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/tenants.py +124 -24
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/tokens.py +166 -25
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/webhooks.py +130 -157
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/workers.py +307 -167
- agentevo_cloud-0.2.8/tests/mcp_delivery_fixtures.py +94 -0
- agentevo_cloud-0.2.8/tests/mcp_delivery_support.py +83 -0
- agentevo_cloud-0.2.8/tests/test_account_export.py +271 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_auth.py +35 -4
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_jobs.py +17 -3
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_objects.py +338 -1
- agentevo_cloud-0.2.8/tests/test_app_tenant_export.py +126 -0
- agentevo_cloud-0.2.8/tests/test_audit_admission_slice2.py +474 -0
- agentevo_cloud-0.2.8/tests/test_audit_bootstrap_slice1.py +941 -0
- agentevo_cloud-0.2.8/tests/test_audit_configured_commit.py +475 -0
- agentevo_cloud-0.2.8/tests/test_audit_cutover_context.py +659 -0
- agentevo_cloud-0.2.8/tests/test_audit_details.py +299 -0
- agentevo_cloud-0.2.8/tests/test_audit_epoch.py +575 -0
- agentevo_cloud-0.2.8/tests/test_audit_legacy_retained.py +752 -0
- agentevo_cloud-0.2.8/tests/test_audit_negative_mode.py +736 -0
- agentevo_cloud-0.2.8/tests/test_audit_preparation.py +389 -0
- agentevo_cloud-0.2.8/tests/test_audit_producer_d1.py +338 -0
- agentevo_cloud-0.2.8/tests/test_audit_rows.py +252 -0
- agentevo_cloud-0.2.8/tests/test_audit_schema.py +541 -0
- agentevo_cloud-0.2.8/tests/test_audit_sequence_boundary.py +85 -0
- agentevo_cloud-0.2.8/tests/test_audit_spending.py +432 -0
- agentevo_cloud-0.2.8/tests/test_audit_sql_lifecycle.py +522 -0
- agentevo_cloud-0.2.8/tests/test_audit_v18_lineage_graph.py +240 -0
- agentevo_cloud-0.2.8/tests/test_audit_v18_preparation.py +220 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_authz_b5.py +26 -7
- agentevo_cloud-0.2.8/tests/test_backup_archive.py +864 -0
- agentevo_cloud-0.2.8/tests/test_backup_script.py +799 -0
- agentevo_cloud-0.2.8/tests/test_backup_workflows.py +324 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_billing.py +111 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_clerk.py +53 -17
- agentevo_cloud-0.2.8/tests/test_clerk_online.py +220 -0
- agentevo_cloud-0.2.8/tests/test_clerk_session_transport.py +245 -0
- agentevo_cloud-0.2.8/tests/test_clerk_transactions.py +114 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_cli.py +16 -2
- agentevo_cloud-0.2.8/tests/test_community.py +379 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_compile.py +8 -3
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_console_gate.py +9 -1
- agentevo_cloud-0.2.8/tests/test_contributors.py +223 -0
- agentevo_cloud-0.2.8/tests/test_cov_app.py +311 -0
- agentevo_cloud-0.2.8/tests/test_cov_application_alerts.py +40 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_activation.py +437 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_admission.py +337 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_authority.py +148 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_bootstrap.py +309 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_continuity.py +364 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_epoch.py +118 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_legacy.py +23 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_mode.py +263 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_retained.py +207 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_rows.py +149 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_schema.py +320 -0
- agentevo_cloud-0.2.8/tests/test_cov_audit_writer.py +253 -0
- agentevo_cloud-0.2.8/tests/test_cov_backup_workflows.py +248 -0
- agentevo_cloud-0.2.8/tests/test_cov_billing.py +209 -0
- agentevo_cloud-0.2.8/tests/test_cov_clerk_session.py +75 -0
- agentevo_cloud-0.2.8/tests/test_cov_cli.py +96 -0
- agentevo_cloud-0.2.8/tests/test_cov_config.py +149 -0
- agentevo_cloud-0.2.8/tests/test_cov_data_exports.py +96 -0
- agentevo_cloud-0.2.8/tests/test_cov_db.py +410 -0
- agentevo_cloud-0.2.8/tests/test_cov_device_grants.py +408 -0
- agentevo_cloud-0.2.8/tests/test_cov_devices.py +421 -0
- agentevo_cloud-0.2.8/tests/test_cov_entitlement_recovery.py +759 -0
- agentevo_cloud-0.2.8/tests/test_cov_erasure_journal.py +2170 -0
- agentevo_cloud-0.2.8/tests/test_cov_event_evidence.py +300 -0
- agentevo_cloud-0.2.8/tests/test_cov_event_retirement.py +729 -0
- agentevo_cloud-0.2.8/tests/test_cov_events.py +234 -0
- agentevo_cloud-0.2.8/tests/test_cov_health_receipts.py +116 -0
- agentevo_cloud-0.2.8/tests/test_cov_http_deadline.py +31 -0
- agentevo_cloud-0.2.8/tests/test_cov_job_authority.py +592 -0
- agentevo_cloud-0.2.8/tests/test_cov_jobs.py +821 -0
- agentevo_cloud-0.2.8/tests/test_cov_mcp.py +114 -0
- agentevo_cloud-0.2.8/tests/test_cov_mcp_delivery.py +449 -0
- agentevo_cloud-0.2.8/tests/test_cov_mcp_delivery_asgi.py +191 -0
- agentevo_cloud-0.2.8/tests/test_cov_migration_lifecycle.py +1005 -0
- agentevo_cloud-0.2.8/tests/test_cov_observability.py +55 -0
- agentevo_cloud-0.2.8/tests/test_cov_oidc.py +164 -0
- agentevo_cloud-0.2.8/tests/test_cov_operator_privacy.py +548 -0
- agentevo_cloud-0.2.8/tests/test_cov_privacy_boundary.py +599 -0
- agentevo_cloud-0.2.8/tests/test_cov_recovery_authority.py +33 -0
- agentevo_cloud-0.2.8/tests/test_cov_retention.py +462 -0
- agentevo_cloud-0.2.8/tests/test_cov_revoke.py +248 -0
- agentevo_cloud-0.2.8/tests/test_cov_session_closure.py +417 -0
- agentevo_cloud-0.2.8/tests/test_cov_sqlite_engine.py +236 -0
- agentevo_cloud-0.2.8/tests/test_cov_storage_conversion.py +441 -0
- agentevo_cloud-0.2.8/tests/test_cov_sync.py +188 -0
- agentevo_cloud-0.2.8/tests/test_cov_tenant_guard.py +155 -0
- agentevo_cloud-0.2.8/tests/test_cov_tenants.py +64 -0
- agentevo_cloud-0.2.8/tests/test_cov_tokens.py +676 -0
- agentevo_cloud-0.2.8/tests/test_cov_webhooks.py +127 -0
- agentevo_cloud-0.2.8/tests/test_cov_workers.py +339 -0
- agentevo_cloud-0.2.8/tests/test_database_publication.py +225 -0
- agentevo_cloud-0.2.8/tests/test_deletion_backup_receipts.py +51 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_demo.py +13 -3
- agentevo_cloud-0.2.8/tests/test_deploy_build_context.py +202 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_deploy_image_lock.py +98 -14
- agentevo_cloud-0.2.8/tests/test_device_grant_lifecycle.py +102 -0
- agentevo_cloud-0.2.8/tests/test_device_grants.py +756 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_devices_ci.py +40 -0
- agentevo_cloud-0.2.8/tests/test_encrypted_backup_workflows.py +761 -0
- agentevo_cloud-0.2.8/tests/test_encrypted_service.py +193 -0
- agentevo_cloud-0.2.8/tests/test_entitlement_mixed_live.py +508 -0
- agentevo_cloud-0.2.8/tests/test_entitlement_recovery.py +1289 -0
- agentevo_cloud-0.2.8/tests/test_erasure_http.py +1700 -0
- agentevo_cloud-0.2.8/tests/test_erasure_journal.py +2662 -0
- agentevo_cloud-0.2.8/tests/test_event_evidence.py +677 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_event_loop_blocking.py +2 -2
- agentevo_cloud-0.2.8/tests/test_event_retirement.py +1790 -0
- agentevo_cloud-0.2.8/tests/test_feed.py +183 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_foundation.py +25 -63
- agentevo_cloud-0.2.8/tests/test_handoffs.py +354 -0
- agentevo_cloud-0.2.8/tests/test_health_freshness.py +441 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_housekeeping.py +2 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_idempotency_scope.py +2 -0
- agentevo_cloud-0.2.8/tests/test_identity_privacy_hops.py +614 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_isolation_matrix.py +236 -16
- agentevo_cloud-0.2.8/tests/test_job_authority_migration.py +123 -0
- agentevo_cloud-0.2.8/tests/test_job_submitter_authority.py +846 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_jobs.py +213 -24
- agentevo_cloud-0.2.8/tests/test_live.py +91 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_managed.py +46 -0
- agentevo_cloud-0.2.8/tests/test_mcp_delivery_authority.py +316 -0
- agentevo_cloud-0.2.8/tests/test_mcp_delivery_leases.py +273 -0
- agentevo_cloud-0.2.8/tests/test_mcp_server_send_boundary.py +452 -0
- agentevo_cloud-0.2.8/tests/test_mcp_sse.py +1141 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_metered_write_lock.py +5 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_metering_records.py +21 -2
- agentevo_cloud-0.2.8/tests/test_migration_atomicity.py +81 -0
- agentevo_cloud-0.2.8/tests/test_migration_lifecycle.py +712 -0
- agentevo_cloud-0.2.8/tests/test_migration_lock.py +263 -0
- agentevo_cloud-0.2.8/tests/test_migration_minimum_bootstrap.py +311 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_object_workspace_ownership.py +2 -0
- agentevo_cloud-0.2.8/tests/test_observability.py +249 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_oidc.py +29 -45
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_openapi.py +12 -0
- agentevo_cloud-0.2.8/tests/test_operator_privacy.py +634 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_perf_b6.py +1 -1
- agentevo_cloud-0.2.8/tests/test_privacy_boundary.py +547 -0
- agentevo_cloud-0.2.8/tests/test_privileged_integrity.py +253 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_promote.py +3 -0
- agentevo_cloud-0.2.8/tests/test_protected_backup_scripts.py +792 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_prune_foreign.py +64 -55
- agentevo_cloud-0.2.8/tests/test_readiness.py +182 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_recall.py +143 -2
- agentevo_cloud-0.2.8/tests/test_recovery_schema.py +237 -0
- agentevo_cloud-0.2.8/tests/test_relationship_integrity.py +239 -0
- agentevo_cloud-0.2.8/tests/test_relationship_parent_report.py +249 -0
- agentevo_cloud-0.2.8/tests/test_restore_cutover.py +261 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_restore_script.py +17 -2
- agentevo_cloud-0.2.8/tests/test_retention.py +1509 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_revoke.py +3 -0
- agentevo_cloud-0.2.8/tests/test_runbook_schema.py +119 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_screen.py +10 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_screening_events.py +5 -3
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sdist_layout.py +5 -0
- agentevo_cloud-0.2.8/tests/test_session_closure.py +918 -0
- agentevo_cloud-0.2.8/tests/test_shared_proxy_guard.py +320 -0
- agentevo_cloud-0.2.8/tests/test_snapshot_current_authority.py +263 -0
- agentevo_cloud-0.2.8/tests/test_snapshot_evidence.py +424 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sql_tenant_scoping.py +535 -16
- agentevo_cloud-0.2.8/tests/test_sqlite_engine.py +274 -0
- agentevo_cloud-0.2.8/tests/test_storage_conversion.py +543 -0
- agentevo_cloud-0.2.8/tests/test_storage_operator.py +279 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sync_mode.py +3 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_sync_push_pull.py +4 -0
- agentevo_cloud-0.2.8/tests/test_tenant_binding_contract.py +213 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_tenant_delete.py +9 -2
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_tenant_guard.py +47 -11
- agentevo_cloud-0.2.8/tests/test_tenant_guard_adversarial.py +295 -0
- agentevo_cloud-0.2.8/tests/test_token_ancestry.py +170 -0
- agentevo_cloud-0.2.8/tests/test_webhook_dns_deadline.py +197 -0
- agentevo_cloud-0.2.8/tests/test_webhook_ssrf.py +176 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_webhook_write_lock.py +19 -2
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_webhooks.py +71 -1
- agentevo_cloud-0.2.8/tests/test_worker_privacy.py +866 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_workers.py +264 -6
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_workspace_delete_jobs.py +93 -13
- agentevo_cloud-0.2.8/tests/test_workspace_export_handoffs.py +135 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_write_lock_convoy.py +2 -2
- agentevo_cloud-0.1.9/PKG-INFO +0 -52
- agentevo_cloud-0.1.9/README.md +0 -23
- agentevo_cloud-0.1.9/src/agentevo_cloud/cli.py +0 -144
- agentevo_cloud-0.1.9/src/agentevo_cloud/jobs.py +0 -608
- agentevo_cloud-0.1.9/tests/test_runbook_schema.py +0 -237
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/__init__.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/openapi.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/promote.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/py.typed +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/src/agentevo_cloud/summaries.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_acceptance_m12.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_acceptance_m8.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_analytics.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_managed.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_app_sync.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_audit_order.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_body_limit.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_caddy_edge.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_console_titles.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_containment_at_quota.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_events.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_int_bounds.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_license.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_lone_surrogates.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_maintenance.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_proxy_ip.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_reserved_key_ids.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_scope_hardening.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_smoke.py +0 -0
- {agentevo_cloud-0.1.9 → agentevo_cloud-0.2.8}/tests/test_summaries.py +0 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: agentevo-cloud
|
|
3
|
+
Version: 0.2.8
|
|
4
|
+
Summary: Agentevo SaaS (TZ-3 control plane, TZ-4 managed intelligence): auth, metering, C2 APIs, workers.
|
|
5
|
+
Project-URL: Homepage, https://agentevo.sh
|
|
6
|
+
Project-URL: Documentation, https://agentevo.sh/#setup
|
|
7
|
+
Author: Agentevo
|
|
8
|
+
License-Expression: BUSL-1.1
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Keywords: agent-memory,ai-agents,guardrails,skills
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Developers
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
19
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: >=3.10
|
|
22
|
+
Requires-Dist: agentevo-core==0.1.6
|
|
23
|
+
Requires-Dist: agentevo-local==0.1.7
|
|
24
|
+
Requires-Dist: anyio>=4
|
|
25
|
+
Requires-Dist: cryptography>=44
|
|
26
|
+
Requires-Dist: fastapi>=0.115
|
|
27
|
+
Requires-Dist: pyjwt>=2.15
|
|
28
|
+
Requires-Dist: uvicorn>=0.30
|
|
29
|
+
Provides-Extra: encrypted
|
|
30
|
+
Requires-Dist: sqlcipher3==0.6.3; extra == 'encrypted'
|
|
31
|
+
Description-Content-Type: text/markdown
|
|
32
|
+
|
|
33
|
+
# agentevo-cloud
|
|
34
|
+
|
|
35
|
+
Agentevo SaaS planes: control API (TZ-3: auth, tenants, metering, sync) and
|
|
36
|
+
managed intelligence API (TZ-4: tenant-scoped recall, async verify/compile jobs,
|
|
37
|
+
analytics), plus the `agentevo-cloud` operator CLI (`provision`, `serve`,
|
|
38
|
+
`jobs`, `webhooks`, `health`, `export`, `backup`, `privacy`).
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
python3 -m venv .venv # Python 3.10+
|
|
42
|
+
.venv/bin/pip install agentevo-cloud
|
|
43
|
+
.venv/bin/agentevo-cloud provision --tenant t-1 --name demo --user u-1 --workspace main
|
|
44
|
+
.venv/bin/agentevo-cloud serve
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
A virtualenv keeps `pip` off the system Python, which macOS Homebrew and
|
|
48
|
+
Debian/Ubuntu refuse to modify (PEP 668).
|
|
49
|
+
|
|
50
|
+
Part of [Agentevo](https://agentevo.sh).
|
|
51
|
+
|
|
52
|
+
## Encrypted runtime release
|
|
53
|
+
|
|
54
|
+
Cloud **0.2.8** is the pending source version for authenticated accepted event
|
|
55
|
+
context, reviewed legacy transitions and the existing encrypted storage,
|
|
56
|
+
provider and backup controls. Verified 0.2.7 artifacts and consumer seal remain
|
|
57
|
+
preserved; 0.2.8 is not built/sealed/cold-installed yet. A local passing test alone
|
|
58
|
+
does not establish publication, deployment or complete operating acceptance.
|
|
59
|
+
|
|
60
|
+
The optional `encrypted` extra pins `sqlcipher3==0.6.3`. For source development,
|
|
61
|
+
install it with `uv sync --frozen --package agentevo-cloud --extra encrypted`.
|
|
62
|
+
After final publication, the package selection is
|
|
63
|
+
`agentevo-cloud[encrypted]==0.2.8`; use the approved hashed, wheel-only consumer
|
|
64
|
+
lock for a hosted image. Installation alone does not activate encryption.
|
|
65
|
+
|
|
66
|
+
Select `AGENTEVO_DB_STORAGE=sqlcipher-v1`, an explicit public
|
|
67
|
+
`AGENTEVO_DB_KEY_ID` and `AGENTEVO_DB_KEY_FILE` for every API, worker and
|
|
68
|
+
operator process using the same database. The key file must contain exactly
|
|
69
|
+
32 raw bytes, be owned by that runtime user with mode 0600, and be mounted from
|
|
70
|
+
independently recoverable protected storage. No default key is supplied.
|
|
71
|
+
Missing runtime, missing/wrong keys or a plaintext database in the encrypted
|
|
72
|
+
profile are refused; the profile never falls back to plain SQLite. The default
|
|
73
|
+
`plain` profile exists for legacy compatibility and does not encrypt live rows.
|
|
74
|
+
|
|
75
|
+
Existing plaintext needs a separately verified new-file conversion; selecting
|
|
76
|
+
the profile does not convert it. Preserve older plaintext recovery points
|
|
77
|
+
under their reviewed retention policy, and keep the correct old database keys
|
|
78
|
+
and independent archive/journal authority for encrypted recovery points.
|
|
79
|
+
Native application and operator paths have local acceptance evidence. Linux
|
|
80
|
+
image execution and independent operating custody remain separate gates. The
|
|
81
|
+
source checkout contains the detailed design and conversion procedure in
|
|
82
|
+
`docs/implementation/LIVE_DATABASE_ENCRYPTION.md`; public setup is at
|
|
83
|
+
[Agentevo setup](https://agentevo.sh/#setup).
|
|
84
|
+
|
|
85
|
+
## Private recovery controls
|
|
86
|
+
|
|
87
|
+
Encrypted online snapshots support verified filesystem publication and
|
|
88
|
+
recovery into a new private database. Recovery requires independent keys, the
|
|
89
|
+
authenticated erasure journal, its independently trusted latest head and a
|
|
90
|
+
current approved retention policy. The selected `sqlcipher-v1` profile encrypts
|
|
91
|
+
live database storage; the legacy `plain` profile leaves searchable rows
|
|
92
|
+
readable in copied databases. Archive encryption does not establish live-data
|
|
93
|
+
encryption or off-host custody. Protected application backups require their own
|
|
94
|
+
archive key with different material from the online database key. Legacy gzip
|
|
95
|
+
restore refuses encrypted or privacy-protected databases; use the authenticated
|
|
96
|
+
operator recovery path with current independently retained authority instead.
|
|
97
|
+
|
|
98
|
+
Optional `AGENTEVO_ERASURE_JOURNAL` and `AGENTEVO_ERASURE_KEY_FILE` configure the
|
|
99
|
+
same authority for API, workers and operator commands. Protected databases refuse
|
|
100
|
+
missing authority. Recorded erasures, revocations, consent and retention decisions
|
|
101
|
+
are reconciled before restored data is used. Permission increases require a
|
|
102
|
+
postcommit confirmation; uncertain decisions remain unavailable until explicit
|
|
103
|
+
private operator resolution. `privacy authority-status`, `authority-resolve`,
|
|
104
|
+
`authority-reject` and `reconcile` support that procedure without journal editing.
|
|
105
|
+
|
|
106
|
+
Protected restore requires the source's protection marker and authenticated
|
|
107
|
+
applied/minimum journal heads to exist already. Historical snapshots from before
|
|
108
|
+
activation are refused; a new empty journal cannot prove earlier revocations.
|
|
109
|
+
Review a current baseline before activation and preserve independently current
|
|
110
|
+
authority. The guard cannot reconstruct unrecorded historical decisions.
|
|
111
|
+
|
|
112
|
+
`privacy retention` defaults to a read-only approved-policy preview. Apply needs
|
|
113
|
+
an explicitly activated matching policy and a fresh matching preview seal.
|
|
114
|
+
Use `agentevo-cloud backup --help` and `agentevo-cloud privacy --help` for exact
|
|
115
|
+
arguments. Keep previous artifacts, archive keys and journal verification keys
|
|
116
|
+
for every retained recovery point. Unrecorded decisions before activation need a
|
|
117
|
+
reviewed transition; real operating recovery remains a separate acceptance gate.
|
|
118
|
+
|
|
119
|
+
## Queued job authorization
|
|
120
|
+
|
|
121
|
+
Schema 29 records private accepted submitter authority for new asynchronous jobs.
|
|
122
|
+
Workers recheck credential ancestry, membership and the required workspace and
|
|
123
|
+
operation grants before claim and result application. Clerk work also checks the
|
|
124
|
+
accepted public signing key, original expiry, exact current account link and
|
|
125
|
+
fresh configured provider/session status. Provider outages defer work without
|
|
126
|
+
applying a private result; withdrawn authority cancels it. Provider reads occur
|
|
127
|
+
outside database/privacy fences. Session-event compilation needs a tenant-wide
|
|
128
|
+
grant because its input events have no workspace attribution.
|
|
129
|
+
|
|
130
|
+
Existing jobs keep an unknown submitter. Workers cancel unbound queued/running
|
|
131
|
+
work with `JOB_AUTHORITY_UNKNOWN` and clear its private parameters/results;
|
|
132
|
+
resubmit needed work through a currently authorized API. The migration never
|
|
133
|
+
infers an owner or promotes old work to operator authority. Public job responses
|
|
134
|
+
omit the private binding; account export includes sanitized attribution only.
|
|
135
|
+
These local controls do not establish real-provider or deployed acceptance.
|
|
136
|
+
|
|
137
|
+
## Accepted event evidence
|
|
138
|
+
|
|
139
|
+
Schema30 retains bounded, screened canonical source/client time/environment/
|
|
140
|
+
provenance for new event ingestion. A protected acceptance capsule binds exact
|
|
141
|
+
context and payload bytes, tenant/session/sequence/type/classification and
|
|
142
|
+
server receipt using the active independent journal verification key. Compiler
|
|
143
|
+
input and result application reverify it; the original core event hash/wire is
|
|
144
|
+
unchanged. Unconfigured context is explicit unattested evidence. Retain all
|
|
145
|
+
verification keys needed by surviving events and recovery points.
|
|
146
|
+
|
|
147
|
+
Ordinary protected upgrade with existing schema29 events refuses. It needs an
|
|
148
|
+
explicit trusted-library transition bound to an externally reviewed exact
|
|
149
|
+
missing-row baseline and current independent head; there is no automatic CLI,
|
|
150
|
+
environment or SQL approval. Historical context staysNULL and its signed marker
|
|
151
|
+
witnesses only observed absence. Restore never creates that approval and verifies
|
|
152
|
+
retained capsules before publication. Do not strip evidence or downgrade the
|
|
153
|
+
schema marker for rollback. The source checkout's
|
|
154
|
+
`docs/implementation/PRIVACY_OPERATORS.md` documents the operating gate.
|
|
155
|
+
|
|
156
|
+
Acceptance is not session closure, causal completeness, permission or event
|
|
157
|
+
retirement. Finite events/audit/billing/snapshot retention remains refused;
|
|
158
|
+
new release, real historical baseline/custody and final operating/deployed
|
|
159
|
+
acceptance remain separate gates.
|
|
160
|
+
|
|
161
|
+
## License
|
|
162
|
+
|
|
163
|
+
Business Source License 1.1 — see the `LICENSE` file shipped with this
|
|
164
|
+
package. Free for internal production use in your own infrastructure;
|
|
165
|
+
converts to Apache-2.0 on the Change Date stated in the license.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
# agentevo-cloud
|
|
2
|
+
|
|
3
|
+
Agentevo SaaS planes: control API (TZ-3: auth, tenants, metering, sync) and
|
|
4
|
+
managed intelligence API (TZ-4: tenant-scoped recall, async verify/compile jobs,
|
|
5
|
+
analytics), plus the `agentevo-cloud` operator CLI (`provision`, `serve`,
|
|
6
|
+
`jobs`, `webhooks`, `health`, `export`, `backup`, `privacy`).
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
python3 -m venv .venv # Python 3.10+
|
|
10
|
+
.venv/bin/pip install agentevo-cloud
|
|
11
|
+
.venv/bin/agentevo-cloud provision --tenant t-1 --name demo --user u-1 --workspace main
|
|
12
|
+
.venv/bin/agentevo-cloud serve
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
A virtualenv keeps `pip` off the system Python, which macOS Homebrew and
|
|
16
|
+
Debian/Ubuntu refuse to modify (PEP 668).
|
|
17
|
+
|
|
18
|
+
Part of [Agentevo](https://agentevo.sh).
|
|
19
|
+
|
|
20
|
+
## Encrypted runtime release
|
|
21
|
+
|
|
22
|
+
Cloud **0.2.8** is the pending source version for authenticated accepted event
|
|
23
|
+
context, reviewed legacy transitions and the existing encrypted storage,
|
|
24
|
+
provider and backup controls. Verified 0.2.7 artifacts and consumer seal remain
|
|
25
|
+
preserved; 0.2.8 is not built/sealed/cold-installed yet. A local passing test alone
|
|
26
|
+
does not establish publication, deployment or complete operating acceptance.
|
|
27
|
+
|
|
28
|
+
The optional `encrypted` extra pins `sqlcipher3==0.6.3`. For source development,
|
|
29
|
+
install it with `uv sync --frozen --package agentevo-cloud --extra encrypted`.
|
|
30
|
+
After final publication, the package selection is
|
|
31
|
+
`agentevo-cloud[encrypted]==0.2.8`; use the approved hashed, wheel-only consumer
|
|
32
|
+
lock for a hosted image. Installation alone does not activate encryption.
|
|
33
|
+
|
|
34
|
+
Select `AGENTEVO_DB_STORAGE=sqlcipher-v1`, an explicit public
|
|
35
|
+
`AGENTEVO_DB_KEY_ID` and `AGENTEVO_DB_KEY_FILE` for every API, worker and
|
|
36
|
+
operator process using the same database. The key file must contain exactly
|
|
37
|
+
32 raw bytes, be owned by that runtime user with mode 0600, and be mounted from
|
|
38
|
+
independently recoverable protected storage. No default key is supplied.
|
|
39
|
+
Missing runtime, missing/wrong keys or a plaintext database in the encrypted
|
|
40
|
+
profile are refused; the profile never falls back to plain SQLite. The default
|
|
41
|
+
`plain` profile exists for legacy compatibility and does not encrypt live rows.
|
|
42
|
+
|
|
43
|
+
Existing plaintext needs a separately verified new-file conversion; selecting
|
|
44
|
+
the profile does not convert it. Preserve older plaintext recovery points
|
|
45
|
+
under their reviewed retention policy, and keep the correct old database keys
|
|
46
|
+
and independent archive/journal authority for encrypted recovery points.
|
|
47
|
+
Native application and operator paths have local acceptance evidence. Linux
|
|
48
|
+
image execution and independent operating custody remain separate gates. The
|
|
49
|
+
source checkout contains the detailed design and conversion procedure in
|
|
50
|
+
`docs/implementation/LIVE_DATABASE_ENCRYPTION.md`; public setup is at
|
|
51
|
+
[Agentevo setup](https://agentevo.sh/#setup).
|
|
52
|
+
|
|
53
|
+
## Private recovery controls
|
|
54
|
+
|
|
55
|
+
Encrypted online snapshots support verified filesystem publication and
|
|
56
|
+
recovery into a new private database. Recovery requires independent keys, the
|
|
57
|
+
authenticated erasure journal, its independently trusted latest head and a
|
|
58
|
+
current approved retention policy. The selected `sqlcipher-v1` profile encrypts
|
|
59
|
+
live database storage; the legacy `plain` profile leaves searchable rows
|
|
60
|
+
readable in copied databases. Archive encryption does not establish live-data
|
|
61
|
+
encryption or off-host custody. Protected application backups require their own
|
|
62
|
+
archive key with different material from the online database key. Legacy gzip
|
|
63
|
+
restore refuses encrypted or privacy-protected databases; use the authenticated
|
|
64
|
+
operator recovery path with current independently retained authority instead.
|
|
65
|
+
|
|
66
|
+
Optional `AGENTEVO_ERASURE_JOURNAL` and `AGENTEVO_ERASURE_KEY_FILE` configure the
|
|
67
|
+
same authority for API, workers and operator commands. Protected databases refuse
|
|
68
|
+
missing authority. Recorded erasures, revocations, consent and retention decisions
|
|
69
|
+
are reconciled before restored data is used. Permission increases require a
|
|
70
|
+
postcommit confirmation; uncertain decisions remain unavailable until explicit
|
|
71
|
+
private operator resolution. `privacy authority-status`, `authority-resolve`,
|
|
72
|
+
`authority-reject` and `reconcile` support that procedure without journal editing.
|
|
73
|
+
|
|
74
|
+
Protected restore requires the source's protection marker and authenticated
|
|
75
|
+
applied/minimum journal heads to exist already. Historical snapshots from before
|
|
76
|
+
activation are refused; a new empty journal cannot prove earlier revocations.
|
|
77
|
+
Review a current baseline before activation and preserve independently current
|
|
78
|
+
authority. The guard cannot reconstruct unrecorded historical decisions.
|
|
79
|
+
|
|
80
|
+
`privacy retention` defaults to a read-only approved-policy preview. Apply needs
|
|
81
|
+
an explicitly activated matching policy and a fresh matching preview seal.
|
|
82
|
+
Use `agentevo-cloud backup --help` and `agentevo-cloud privacy --help` for exact
|
|
83
|
+
arguments. Keep previous artifacts, archive keys and journal verification keys
|
|
84
|
+
for every retained recovery point. Unrecorded decisions before activation need a
|
|
85
|
+
reviewed transition; real operating recovery remains a separate acceptance gate.
|
|
86
|
+
|
|
87
|
+
## Queued job authorization
|
|
88
|
+
|
|
89
|
+
Schema 29 records private accepted submitter authority for new asynchronous jobs.
|
|
90
|
+
Workers recheck credential ancestry, membership and the required workspace and
|
|
91
|
+
operation grants before claim and result application. Clerk work also checks the
|
|
92
|
+
accepted public signing key, original expiry, exact current account link and
|
|
93
|
+
fresh configured provider/session status. Provider outages defer work without
|
|
94
|
+
applying a private result; withdrawn authority cancels it. Provider reads occur
|
|
95
|
+
outside database/privacy fences. Session-event compilation needs a tenant-wide
|
|
96
|
+
grant because its input events have no workspace attribution.
|
|
97
|
+
|
|
98
|
+
Existing jobs keep an unknown submitter. Workers cancel unbound queued/running
|
|
99
|
+
work with `JOB_AUTHORITY_UNKNOWN` and clear its private parameters/results;
|
|
100
|
+
resubmit needed work through a currently authorized API. The migration never
|
|
101
|
+
infers an owner or promotes old work to operator authority. Public job responses
|
|
102
|
+
omit the private binding; account export includes sanitized attribution only.
|
|
103
|
+
These local controls do not establish real-provider or deployed acceptance.
|
|
104
|
+
|
|
105
|
+
## Accepted event evidence
|
|
106
|
+
|
|
107
|
+
Schema30 retains bounded, screened canonical source/client time/environment/
|
|
108
|
+
provenance for new event ingestion. A protected acceptance capsule binds exact
|
|
109
|
+
context and payload bytes, tenant/session/sequence/type/classification and
|
|
110
|
+
server receipt using the active independent journal verification key. Compiler
|
|
111
|
+
input and result application reverify it; the original core event hash/wire is
|
|
112
|
+
unchanged. Unconfigured context is explicit unattested evidence. Retain all
|
|
113
|
+
verification keys needed by surviving events and recovery points.
|
|
114
|
+
|
|
115
|
+
Ordinary protected upgrade with existing schema29 events refuses. It needs an
|
|
116
|
+
explicit trusted-library transition bound to an externally reviewed exact
|
|
117
|
+
missing-row baseline and current independent head; there is no automatic CLI,
|
|
118
|
+
environment or SQL approval. Historical context staysNULL and its signed marker
|
|
119
|
+
witnesses only observed absence. Restore never creates that approval and verifies
|
|
120
|
+
retained capsules before publication. Do not strip evidence or downgrade the
|
|
121
|
+
schema marker for rollback. The source checkout's
|
|
122
|
+
`docs/implementation/PRIVACY_OPERATORS.md` documents the operating gate.
|
|
123
|
+
|
|
124
|
+
Acceptance is not session closure, causal completeness, permission or event
|
|
125
|
+
retirement. Finite events/audit/billing/snapshot retention remains refused;
|
|
126
|
+
new release, real historical baseline/custody and final operating/deployed
|
|
127
|
+
acceptance remain separate gates.
|
|
128
|
+
|
|
129
|
+
## License
|
|
130
|
+
|
|
131
|
+
Business Source License 1.1 — see the `LICENSE` file shipped with this
|
|
132
|
+
package. Free for internal production use in your own infrastructure;
|
|
133
|
+
converts to Apache-2.0 on the Change Date stated in the license.
|