54 Clock clock = [] {
return std::chrono::steady_clock::now(); });
66 std::span<const std::uint8_t> secret,
68 std::string_view durable_principal = {},
75 std::string_view decision_id);
86 std::string_view decision_id);
115 std::string_view request_id,
116 std::string_view reason);
121 std::optional<ControlOperationReceipt>
137 std::chrono::milliseconds lifetime);
146 std::string_view artifact_id,
std::uint64_t offset,
147 std::
size_t maximum_bytes);
163 bool allow_new = true);
169 bool owns_client_peer(
const ControlClientId& client_id,
170 const VerifiedControlPeerIdentity& client_peer)
const;
171 bool owns_registration_peer(
const ControlRegistrationId& registration_id,
172 const VerifiedControlPeerIdentity& host_peer)
const;
173 void request_active_cancellation(
const ControlClientId& client_id,
174 const ControlRegistrationId& registration_id,
175 const ControlGrantId& grant_id, std::string_view reason);
177 std::shared_ptr<ControlSecurityAuditLog> audit_log_;
179 std::function<void(
const ControlClientId&,
const ControlRegistrationId&,
180 const ControlGrantId&, std::string_view)> authority_ended_;
181 mutable std::mutex coordination_mutex_;
182 ControlIdentityRegistry identities_;
183 ControlGrantStore grants_;
184 ControlAdmissionPolicy admission_policy_;
186 std::unique_ptr<ControlOperationStore> operation_store_;
187 std::unique_ptr<ControlArtifactStore> artifact_store_;
bool publish_instance(const ControlRegistrationId ®istration_id, const VerifiedControlPeerIdentity &host_peer)
std::size_t artifact_maximum_blob_bytes() const noexcept
ControlGrantResult issue_grant(const VerifiedControlPeerIdentity &client_peer, ControlGrantRequest request, ControlConsentDecision consent)
std::optional< ControlGrant > grant(const ControlGrantId &grant_id)
ControlOperationStoreResult cancel_operation(const VerifiedControlPeerIdentity &client_peer, const ControlClientId &client_id, std::string_view request_id, std::string_view reason)
bool is_granted(const ControlGrantId &grant_id, const ControlClientId &client_id, const ControlRegistrationId ®istration_id, InspectorCapability capability)
std::optional< ControlRegistration > registration(const ControlRegistrationId ®istration_id) const
ControlOperationStoreResult finish_operation(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan, ControlReceiptState terminal_state, ControlOperationResult result={})
ControlGrantStatus revoke_grant(const ControlGrantId &grant_id, std::string_view decision_id)
std::optional< ControlOperationReceipt > operation_receipt(const ControlReceiptId &receipt_id) const
ControlOperationStoreResult begin_operation(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan)
bool revalidate_operation(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan)
ControlIdentityRegistry::Clock Clock
Definition control_broker.hpp:47
ControlBrokerLifecycleResult unregister_instance(const ControlRegistrationId ®istration_id, const VerifiedControlPeerIdentity &host_peer, std::string_view decision_id)
ControlBroker(const ControlBroker &)=delete
const ControlBrokerId & broker_id() const
bool is_listening() const
Definition control_broker.hpp:60
ControlRegistrationResult register_instance(const VerifiedControlPeerIdentity &host_peer, ControlRegistrationRequest request, bool publish=true)
ControlBroker(ControlBrokerConfig config={}, std::shared_ptr< ControlSecurityAuditLog > audit_log={}, Clock clock=[] { return std::chrono::steady_clock::now();})
The steady clock has the same trusted callback contract as ControlBrokerConfig::wall_clock.
ControlBroker & operator=(const ControlBroker &)=delete
bool operation_store_ready() const
std::vector< ControlRegistration > registrations() const
ControlAdmissionResult admit_operation(const VerifiedControlPeerIdentity &client_peer, const ControlRequestEnvelope &request)
Atomically resolves every permission term from broker-owned state.
ControlBrokerLifecycleResult disconnect_client(const ControlClientId &client_id, const VerifiedControlPeerIdentity &client_peer, std::string_view decision_id)
ControlExecutionCheckpoint execution_checkpoint(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan)
bool refresh_client(const ControlClientId &client_id, const VerifiedControlPeerIdentity &client_peer)
ControlAdmissionResult replay_operation(const VerifiedControlPeerIdentity &client_peer, const ControlRequestEnvelope &request)
Reauthorizes and resolves an existing idempotent receipt without creating a fresh admission.
ControlClientResult redeem_bootstrap(std::string_view ticket_id, std::span< const std::uint8_t > secret, const VerifiedControlPeerIdentity &client_peer, std::string_view durable_principal={}, ControlDurableClientLifetime durable_lifetime=ControlDurableClientLifetime::Broker)
ControlArtifactStoreResult store_operation_artifact(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan, std::span< const std::uint8_t > bytes, std::string content_type, ControlArtifactSensitivity sensitivity, ControlArtifactRedactionState redaction_state, std::chrono::milliseconds lifetime)
Broker-timestamped publication used by trusted operation adapters.
bool artifact_store_ready() const
ControlArtifactStoreResult store_operation_artifact(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan, std::span< const std::uint8_t > bytes, ControlArtifactProperties properties)
Publishes blob and immutable lineage metadata while the producer receipt is Running.
std::optional< ControlClientIdentity > client(const ControlClientId &client_id) const
ControlBootstrapResult issue_bootstrap(const VerifiedControlPeerIdentity &client_peer)
bool heartbeat(const ControlRegistrationId ®istration_id, const VerifiedControlPeerIdentity &host_peer)
bool operation_cancellation_requested(const VerifiedControlPeerIdentity &client_peer, const ControlAdmissionPlan &plan) const
ControlArtifactReadResult read_artifact(const VerifiedControlPeerIdentity &client_peer, const ControlClientId &requesting_client_id, std::string_view artifact_id, std::uint64_t offset, std::size_t maximum_bytes)
Retrieves an artifact by opaque ID after broker-side reauthorization of its original producer grant,...
std::function< std::chrono::steady_clock::time_point()> Clock
Definition control_identity.hpp:230
std::function< std::chrono::system_clock::time_point()> WallClock
Definition control_operations.hpp:149
Copyable proof minted only by the broker's trusted OS peer verifier.
Definition control_identity.hpp:63
Definition agent_context.hpp:7
ControlArtifactRedactionState
Definition control_artifacts.hpp:48
InspectorCapability
Definition capabilities.hpp:10
ControlGrantStatus
Definition control_grants.hpp:46
ControlExecutionCheckpoint
Definition control_admission.hpp:31
ControlDurableClientLifetime
Definition control_identity.hpp:170
@ Broker
Definition control_identity.hpp:171
ControlProcessLiveness
Definition control_identity.hpp:175
@ Unknown
Definition control_identity.hpp:176
ControlReceiptState
Definition control_protocol.hpp:365
ControlArtifactSensitivity
Definition control_artifacts.hpp:36
@ action
Definition design_ir.hpp:490
Immutable authority snapshot minted by ControlBroker after all seven permission terms pass.
Definition control_admission.hpp:58
Trusted, bounded, non-blocking broker-side evaluators for the three dynamic permission terms not owne...
Definition control_admission.hpp:78
Definition control_admission.hpp:40
Definition control_admission.hpp:66
Definition control_artifacts.hpp:65
Definition control_artifacts.hpp:146
Definition control_artifacts.hpp:141
Definition control_identity.hpp:150
Definition control_broker.hpp:13
ControlOperationStore::WallClock wall_clock
Trusted wall-clock source.
Definition control_broker.hpp:22
ControlAdmissionPolicy admission
Definition control_broker.hpp:16
ControlGrantStoreConfig grants
Definition control_broker.hpp:15
std::function< ControlProcessLiveness(const ControlPeerEvidence &)> process_liveness
Broker-owned process liveness.
Definition control_broker.hpp:26
std::optional< ControlOperationStoreConfig > operation_store
Definition control_broker.hpp:17
std::optional< ControlArtifactStoreConfig > artifact_store
Definition control_broker.hpp:18
ControlIdentityRegistryConfig identities
Definition control_broker.hpp:14
std::function< void(const ControlClientId &, const ControlRegistrationId &, const ControlGrantId &, std::string_view)> authority_ended
Broker-to-carrier lifecycle projection.
Definition control_broker.hpp:31
Definition control_identity.hpp:20
Definition control_broker.hpp:34
bool identity_removed
Definition control_broker.hpp:35
std::size_t grants_revoked
Definition control_broker.hpp:36
Definition control_identity.hpp:28
Definition control_identity.hpp:155
Definition control_identity.hpp:165
Definition control_grants.hpp:34
Definition control_grants.hpp:18
Definition control_grants.hpp:63
Definition control_grants.hpp:101
Definition control_grants.hpp:118
Definition control_grants.hpp:87
Definition control_identity.hpp:217
Definition control_operations.hpp:71
Definition control_operations.hpp:114
Evidence observed by the local IPC carrier.
Definition control_identity.hpp:53
Definition control_operations.hpp:24
Definition control_identity.hpp:36
Definition control_identity.hpp:181
Definition control_identity.hpp:212
Definition control_identity.hpp:190
Definition control_protocol.hpp:84