12#if !defined(SIGNET_ENABLE_COMMERCIAL) || !SIGNET_ENABLE_COMMERCIAL
13#error "signet/ai/compliance/compliance_types.hpp requires SIGNET_ENABLE_COMMERCIAL=ON (AGPL-3.0 commercial tier). See LICENSE_COMMERCIAL."
63 int64_t
end_ns = (std::numeric_limits<int64_t>::max)();
203namespace regulatory {
211 if (lei.size() != 20)
return false;
215 if (!((c >=
'0' && c <=
'9') || (c >=
'A' && c <=
'Z')))
return false;
223 if (c >=
'A' && c <=
'Z') {
224 int val = c -
'A' + 10;
225 numeric += std::to_string(val);
233 for (
char c : numeric) {
234 remainder = (remainder * 10 + (c -
'0')) % 97;
236 return remainder == 1;
244 if (isin.size() != 12)
return false;
247 if (!(isin[0] >=
'A' && isin[0] <=
'Z'))
return false;
248 if (!(isin[1] >=
'A' && isin[1] <=
'Z'))
return false;
251 for (
size_t i = 2; i < 12; ++i) {
253 if (!((c >=
'0' && c <=
'9') || (c >=
'A' && c <=
'Z')))
return false;
260 for (
char c : isin) {
261 if (c >=
'A' && c <=
'Z') {
262 int val = c -
'A' + 10;
263 digits += std::to_string(val);
271 bool double_next =
false;
272 for (
int i =
static_cast<int>(digits.size()) - 1; i >= 0; --i) {
273 int d = digits[
static_cast<size_t>(i)] -
'0';
279 double_next = !double_next;
281 return (sum % 10) == 0;
290 if (mic.size() != 4)
return false;
292 if (!(c >=
'A' && c <=
'Z'))
return false;
359 double reference_price,
360 double order_notional,
361 double daily_notional) {
366 if (reference_price > 0.0) {
367 double deviation_pct = 100.0 *
368 std::abs(order_price - reference_price) / reference_price;
372 result.
message =
"Price deviation " + std::to_string(deviation_pct) +
382 result.
message =
"Order notional exceeds limit";
390 result.
message =
"Daily notional limit would be breached";
534 int64_t last_backup_ns,
536 int64_t elapsed_s = (
now_ns - last_backup_ns) / 1000000000LL;
856 const uint8_t* value,
size_t value_size,
857 char* out,
size_t out_size) {
864 static constexpr char hex_chars[] =
"0123456789abcdef";
869 uint8_t hash[32] = {};
870 for (
size_t i = 0; i < value_size; ++i) {
871 hash[i % 32] ^= value[i];
873 for (
size_t i = 0; i < key_size; ++i) {
874 hash[i % 32] ^= key[i];
875 hash[(i + 13) % 32] ^=
static_cast<uint8_t
>(key[i] * 7 + 3);
878 for (
int round = 0; round < 4; ++round) {
879 for (
size_t i = 0; i < 31; ++i) {
880 hash[i + 1] ^=
static_cast<uint8_t
>((hash[i] << 1) | (hash[i] >> 7));
884 size_t n = (out_size > 64) ? 64 : out_size;
885 for (
size_t i = 0; i < n; ++i) {
886 uint8_t nibble = (i % 2 == 0)
887 ? (hash[i / 2] >> 4) : (hash[i / 2] & 0x0F);
888 out[i] = hex_chars[nibble];
914 const std::vector<ColumnClassification>& classifications,
915 const std::vector<std::string>& encrypted_columns) {
918 for (
const auto& cc : classifications) {
921 for (
const auto& enc_col : encrypted_columns) {
922 if (enc_col == cc.column_name) {
983 int64_t data_created_ns,
986 int64_t retention_ns =
static_cast<int64_t
>(policy.
retention_days) * 86400LL * 1000000000LL;
987 return (
now_ns - data_created_ns) > retention_ns;
1044namespace eu_ai_act {
1245 std::vector<std::pair<int64_t, int64_t>>
gaps;
ResilienceTestResult
Resilience test result.
@ DEGRADED
System operated in degraded mode.
@ PASS
System handled the test gracefully.
@ FAIL
System failed to handle the test.
KeyState
Key lifecycle state per NIST SP 800-57.
@ DEACTIVATED
Key no longer used for new encryption; may decrypt.
@ ACTIVE
Key in active use for encryption.
@ DESTROYED
Key material securely destroyed.
@ COMPROMISED
Key suspected or confirmed compromised.
@ PRE_ACTIVATION
Key generated but not yet active.
NotificationLevel
Notification severity level.
@ WARNING
Warning — attention required.
@ ALERT
Alert — action required.
bool meets_rpo(const BackupPolicy &policy, int64_t last_backup_ns, int64_t now_ns)
Check if a backup meets its RPO requirement.
IncidentSeverity
ICT incident severity per DORA Art. 15.
@ LOW
Minor incident, no significant impact.
@ CRITICAL
Critical incident, business continuity at risk.
IncidentCategory
ICT incident category per DORA Art. 10.
@ SECURITY
Unauthorized access, data breach.
@ THIRD_PARTY
Third-party service failure.
@ DATA_INTEGRITY
Data corruption, hash chain break.
@ CRYPTOGRAPHIC
Key compromise, decryption failure.
@ OPERATIONAL
System failure, outage.
bool needs_rotation(const KeyLifecycleRecord &record, int64_t now_ns)
Check if a key needs rotation based on its crypto-period.
BackupStatus
Backup verification status.
@ VERIFIED
Backup verified via integrity check.
@ COMPLETED
Backup completed successfully.
@ PENDING
Backup not yet started.
@ IN_PROGRESS
Backup in progress.
AnomalyType
Anomaly type for ICT monitoring.
@ DATA_VOLUME_ANOMALY
Unusual data volume (too much or too little).
@ AUTH_FAILURE
Authentication/authorization failures.
@ UNUSUAL_IO
Unusual I/O patterns (read/write volume).
@ CHAIN_BREAK
Hash chain integrity violation.
@ DECRYPTION_FAILURE
Unexpected decryption errors.
@ LATENCY_SPIKE
Unusual latency increase.
ResilienceTestType
Resilience test type.
@ STRESS_TEST
Load/stress beyond normal capacity.
@ RECOVERY_TEST
Test backup recovery procedures.
@ FAULT_INJECTION
Simulate component failure.
@ TLPT
Threat-led penetration test (Art. 26).
@ SCENARIO_BASED
Predefined failure scenario.
AssetCriticality
ICT asset criticality level per DORA Art. 8(1).
@ LOW
Non-critical, no significant impact if unavailable.
@ VITAL
Vital; unavailability threatens business continuity.
@ HIGH
Critical; direct impact on core business functions.
@ MEDIUM
Moderate impact; degraded service if unavailable.
AIRiskLevel
AI system risk classification per EU AI Act Art. 6.
@ MINIMAL
Minimal risk — no obligations.
@ HIGH
High risk — full compliance required.
@ UNACCEPTABLE
Unacceptable risk — prohibited.
@ LIMITED
Limited risk — transparency obligations.
LifecycleEventType
System lifecycle event type.
bool is_drifted(const DriftMetric &m)
Check if a drift metric exceeds its threshold.
bool is_expired(const RetentionPolicy &policy, int64_t data_created_ns, int64_t now_ns)
Check if data has exceeded its retention period.
bool requires_encryption(DataClassification c)
Check if a classification level requires encryption under GDPR Art.
void pseudonymize_hmac(const uint8_t *key, size_t key_size, const uint8_t *value, size_t value_size, char *out, size_t out_size)
Pseudonymize a value using HMAC-SHA256.
bool allows_pseudonymization(DataClassification c)
Check if a classification level allows pseudonymization.
PseudonymStrategy
Pseudonymization strategy.
@ HMAC_SHA256
HMAC-SHA256 hash (deterministic, irreversible).
@ RANDOM_TOKEN
Random token (non-deterministic, requires mapping table).
DataClassification
Data classification levels for GDPR compliance.
@ PSEUDONYMIZED
Already pseudonymized (Art. 4(5)).
@ INTERNAL
Internal business data, not personal.
@ ANONYMIZED
Fully anonymized — outside GDPR scope.
@ SENSITIVE
Special category data (GDPR Art. 9): health, race, religion.
@ PUBLIC
Non-personal, no restrictions.
@ PERSONAL
Personal data (GDPR Art. 4(1)): name, email, phone.
PolicyValidationResult validate_gdpr_policy(const std::vector< ColumnClassification > &classifications, const std::vector< std::string > &encrypted_columns)
Validate that all PII-classified columns have encryption keys.
bool has_gaps(const CompletenessAttestation &att)
Check if a reporting period has gaps.
bool validate_mic(const std::string &mic)
Validate a MIC (Market Identifier Code) per ISO 10383.
bool validate_lei(const std::string &lei)
Validate an LEI (Legal Entity Identifier) per ISO 17442.
bool validate_isin(const std::string &isin)
Validate an ISIN (International Securities Identification Number) per ISO 6166.
RiskCheckResult
Pre-trade risk check result.
@ REJECT
Order rejected by risk check — must not be sent.
@ PASS
Order passes all pre-trade risk checks.
@ THROTTLE
Order rate-limited — retry after cooldown.
RiskRejectReason
Reason for a risk check rejection.
@ MAX_ORDER_SIZE
Notional value exceeds single-order limit (RTS 6 Art. 17(1)(b)).
@ MAX_DAILY_VOLUME
Cumulative daily volume exceeds limit.
@ PRICE_COLLAR
Price outside allowed deviation from reference (RTS 6 Art. 17(1)(a)).
@ CUSTOM
Custom rejection reason (see reject_message).
@ NONE
No rejection (check passed).
@ MAX_MESSAGE_RATE
Order/cancel rate exceeds messages-per-second cap.
@ INSTRUMENT_BANNED
Instrument on restricted list.
PreTradeCheckResult check_order(const PreTradeRiskLimits &limits, double order_price, double reference_price, double order_notional, double daily_notional)
Perform a pre-trade risk check on a proposed order.
TimestampGranularity
Timestamp granularity for MiFID II RTS 24 Art.2(2) compliance.
@ NANOS
9 sub-second digits (default, MiFID II HFT compliant)
@ MICROS
6 sub-second digits
@ MILLIS
3 sub-second digits
int64_t now_ns()
Return the current time as nanoseconds since the Unix epoch (UTC).
ComplianceStandard
Which regulatory standard a compliance report satisfies.
@ MIFID2_RTS24
MiFID II RTS 24 — algorithmic trading records.
@ EU_AI_ACT_ART13
EU AI Act Article 13 — transparency disclosure.
@ EU_AI_ACT_ART19
EU AI Act Article 19 — conformity assessment summary.
@ EU_AI_ACT_ART12
EU AI Act Article 12 — operational logging.
ReportFormat
Output serialization format for compliance reports.
@ JSON
Pretty-printed JSON object (default)
@ NDJSON
Newline-delimited JSON — one record per line (streaming-friendly)
@ CSV
Comma-separated values with header row.
The generated compliance report returned to the caller.
ComplianceStandard standard
Which regulation this report satisfies.
bool chain_verified
True if all log files' hash chains verified successfully.
std::string chain_id
Chain ID from the first log file processed.
std::string content
The report body — JSON object, NDJSON lines, or CSV text.
std::string period_start_iso
ISO 8601 representation of opts.start_ns.
int64_t generated_at_ns
Nanosecond timestamp at which the report was generated.
std::string report_id
Unique identifier for this report (auto-generated if not supplied).
ReportFormat format
Serialization format of content.
int64_t total_records
Number of records included in this report.
std::string generated_at_iso
UTC ISO 8601 timestamp at which the report was generated.
std::string period_end_iso
ISO 8601 representation of opts.end_ns (or "open" if unbounded).
std::vector< std::string > read_errors
H-20: Accumulated read errors from log files whose records could not be read.
bool incomplete_data
H-20: True if one or more log file batches could not be read.
Query and formatting parameters for compliance report generation.
ReportFormat format
Output serialization format.
int64_t start_ns
Inclusive start of the reporting period (nanoseconds since Unix epoch).
std::string bias_risks
Art.15: Known biases or fairness concerns.
TimestampGranularity timestamp_granularity
Timestamp sub-second granularity (MiFID II RTS 24 Art.2(2)).
int risk_level
Art.9: Risk classification level (1=minimal, 2=limited, 3=high, 4=unacceptable).
bool strict_source_reads
If true, any source-log read failure aborts report generation instead of producing an incomplete regu...
bool include_features
If true, include raw input feature vectors in the report output.
bool verify_chain
If true, verify the hash chain of each log file before generating the report and record the result in...
float low_confidence_threshold
Low-confidence threshold for EU AI Act anomaly counting.
int64_t end_ns
Inclusive end of the reporting period (nanoseconds since Unix epoch).
std::string provider_name
Art.13(3)(a): Provider name and contact information.
bool pretty_print
If true, emit human-readable indented JSON (2-space indent).
std::string known_limitations
Art.13(3)(b)(ii): Known limitations and foreseeable misuse risks.
int price_significant_digits
Significant digits for price fields (MiFID II RTS 24 Annex I Field 6).
std::string firm_id
Organisation / firm identifier for MiFID II field 1.
std::string report_id
Optional: unique identifier for this report filing.
std::string system_id
Logical identifier for the AI system being reported on.
std::string human_oversight_measures
Art.14: Human oversight measures description.
std::string instructions_for_use
Art.13(3)(b)(iv): Instructions for use / deployment guidance.
std::string intended_purpose
Art.13(3)(b)(i): Intended purpose of the AI system.
std::string provider_contact
std::string accuracy_metrics
Art.15: Accuracy metrics description (e.g. "F1=0.94 on test set v3").
Anomaly detection record.
std::string component
Affected component.
double value
Observed metric value.
std::string anomaly_id
Unique anomaly identifier.
double threshold
Expected threshold.
std::string action_taken
Response action.
int64_t detected_ns
Detection timestamp.
Backup policy configuration per DORA Art. 12.
int64_t rpo_seconds
Recovery Point Objective (max data loss: default 1h).
bool integrity_check
Verify backup integrity after creation.
int64_t rto_seconds
Recovery Time Objective (max downtime: default 4h).
bool encryption_required
Backups must be encrypted.
std::string policy_id
Unique policy identifier.
int32_t retention_days
Backup retention period.
std::string storage_location
Backup storage location.
Backup record for audit trail.
std::string policy_id
Associated policy.
int64_t completed_ns
Backup completion timestamp.
std::string checksum
SHA-256 integrity hash.
int64_t size_bytes
Backup size.
int64_t started_ns
Backup start timestamp.
std::string backup_id
Unique backup identifier.
ICT asset descriptor for DORA Art.
std::string asset_id
Unique asset identifier.
std::string asset_type
Type: "data_store", "key_store", "pipeline", etc.
std::string asset_name
Human-readable name.
std::string location
Data center / cloud region.
std::string owner
Responsible person or team.
int64_t last_assessed_ns
Last risk assessment timestamp (ns since epoch).
std::string dependencies
Comma-separated dependent asset IDs.
AssetCriticality criticality
ICT incident record for DORA Art. 19 reporting.
std::string incident_id
Unique incident identifier.
IncidentSeverity severity
bool reported_to_authority
Art. 19 authority notification.
std::string description
Incident description.
int64_t detected_ns
Detection timestamp.
std::string impact
Business impact assessment.
IncidentCategory category
std::string remediation
Remediation actions taken.
int64_t resolved_ns
Resolution timestamp (0 = ongoing).
std::string root_cause
Root cause (post-resolution).
std::string subject
Notification subject.
int64_t timestamp_ns
Notification timestamp.
std::string recipients
Comma-separated recipient list.
bool acknowledged
Whether the notification was acknowledged.
std::string message
Notification body.
std::string notification_id
Unique notification identifier.
ICT risk entry for the risk register.
std::string controls
Applied mitigating controls.
std::string owner
Risk owner.
RiskLevel inherent_risk
Risk before controls.
int64_t last_reviewed_ns
Last review timestamp.
std::string risk_id
Unique risk identifier.
std::string description
Risk description.
int64_t next_review_ns
Next scheduled review.
RiskLevel residual_risk
Risk after controls.
Key lifecycle record for rotation tracking.
std::string algorithm
Algorithm: "AES-256-GCM", "AES-256-CTR", etc.
int64_t expiry_ns
Key expiry timestamp (crypto-period end).
std::string replaced_by
Key ID of replacement (after rotation).
int64_t created_ns
Key creation timestamp.
int64_t activation_ns
Key activation timestamp.
std::string key_id
Unique key identifier.
int64_t deactivation_ns
Key deactivation timestamp.
Post-incident review report.
std::string review_id
Unique review identifier.
std::string lessons_learned
Key lessons learned.
std::string root_cause_analysis
Detailed root cause analysis.
int64_t review_date_ns
Review completion date.
std::string corrective_actions
Corrective actions planned/taken.
std::string preventive_measures
Measures to prevent recurrence.
std::string incident_id
Related incident ID.
Recovery procedure descriptor.
int64_t last_tested_ns
Last drill/test timestamp.
std::string steps
Recovery steps (human-readable).
std::string trigger_condition
Condition that triggers this procedure.
int64_t rto_seconds
Recovery Time Objective (default 4h).
std::string procedure_id
Unique procedure identifier.
std::string responsible_team
Team responsible for execution.
Resilience test record for DORA Art. 24 compliance.
std::string findings
Findings and observations.
ResilienceTestType test_type
std::string scenario
Test scenario description.
int64_t executed_ns
Test execution timestamp.
std::string recommendations
Improvement recommendations.
ResilienceTestResult result
std::string test_id
Unique test identifier.
Third-party ICT service provider risk entry.
std::string service_description
Services provided.
std::string exit_strategy
Exit/transition strategy.
RiskLevel concentration_risk
Concentration risk level.
std::string sbom_reference
CycloneDX SBOM reference (if applicable).
std::string contract_id
Contract reference.
int64_t contract_expiry_ns
Contract expiry timestamp.
std::string provider_name
Provider legal name.
bool critical_function
Supports critical or important functions.
std::string jurisdiction
Provider jurisdiction (country code).
std::string provider_id
Unique provider identifier.
AI risk assessment record per Art. 9.
std::string mitigation_measures
Measures to mitigate risks.
std::string risk_description
Description of identified risks.
std::string assessment_id
Unique assessment identifier.
std::string residual_risks
Remaining risks after mitigation.
int64_t assessed_ns
Assessment timestamp.
Population Stability Index for drift detection.
std::string feature_name
Feature being monitored.
bool drifted
Whether drift was detected.
double psi
Population Stability Index.
int64_t measured_ns
Measurement timestamp.
double drift_threshold
PSI threshold for alert.
double ks_statistic
Kolmogorov-Smirnov statistic.
System lifecycle event record per Art. 12(2).
std::string event_id
Unique event identifier.
std::string new_state
State after the event.
int64_t timestamp_ns
Event timestamp.
LifecycleEventType event_type
std::string actor
Who/what triggered the event.
std::string description
Event description.
std::string previous_state
State before the event.
Post-market monitoring data point.
std::string environment
Production/staging/etc.
std::string metric_name
Metric being monitored.
double value
Observed value.
std::string deployment_id
Deployment identifier.
int64_t timestamp_ns
Observation timestamp.
QMS check point for AI system lifecycle.
bool approved
Whether the checkpoint was approved.
std::string checkpoint_id
Unique checkpoint identifier.
std::string model_version
AI model version.
std::string change_description
What changed since last checkpoint.
std::string data_quality_report
Data quality assessment.
int64_t timestamp_ns
Checkpoint timestamp.
std::string approver
Person/system that approved.
Serious incident report per Art. 62.
std::string system_id
AI system identifier.
std::string description
Incident description.
int64_t reported_ns
When the report was filed.
std::string report_id
Unique report identifier.
int64_t occurred_ns
When the incident occurred.
std::string corrective_action
Actions taken.
bool reported_to_authority
Submitted to market surveillance.
std::string harm_caused
Harm to health, safety, or rights.
Technical documentation record per Art. 11 and Annex IV.
std::string design_specifications
Design and development methodology.
std::string risk_management_ref
Reference to risk management (Art. 9).
std::string doc_id
Document identifier.
std::string data_requirements
Data requirements and governance.
int64_t version_ns
Document version timestamp.
std::string system_description
General description of the AI system.
std::string intended_purpose
Intended purpose.
std::string validation_results
Validation and testing results.
Training data quality metrics per Art. 10.
int64_t temporal_coverage_start_ns
Earliest record timestamp.
std::string dataset_id
Training dataset identifier.
std::string preprocessing_steps
Data preprocessing description.
double completeness
Data completeness (0.0 - 1.0).
int64_t temporal_coverage_end_ns
Latest record timestamp.
std::string known_biases
Documented biases.
double class_balance
Class balance ratio (0.0 - 1.0).
int64_t total_records
Total records in dataset.
Column-level data classification descriptor.
std::string purpose
Processing purpose (Art. 5(1)(b)).
int32_t retention_days
Max retention period in days (0 = unlimited).
DataClassification classification
std::string lawful_basis
Legal basis: "consent", "contract", "legal_obligation", etc.
std::string column_name
Parquet column path.
Data Protection Impact Assessment record per GDPR Art. 35.
bool approved
Whether the DPIA was approved.
int64_t completed_ns
DPIA completion timestamp.
std::string dpo_opinion
Data Protection Officer opinion.
std::string mitigation_measures
Measures to address risks.
std::string dpia_id
Unique DPIA identifier.
std::string risks_to_rights
Risks to rights and freedoms of data subjects.
std::string necessity_assessment
Assessment of necessity and proportionality.
std::string processing_description
Systematic description of processing.
Validation result for GDPR writer policy.
std::vector< std::string > violations
Column names that violate the policy.
bool compliant
True if all PII columns are encrypted.
Record of Processing Activity per GDPR Art. 30.
std::string third_country_transfers
Transfers outside EEA.
std::string lawful_basis
Legal basis: consent, contract, etc.
std::string security_measures
Description of Art. 32 measures.
int64_t last_updated_ns
Last update timestamp.
std::string recipients
Recipients of the data.
std::string activity_id
Unique activity identifier.
std::string controller_name
Name of the data controller.
std::string data_subject_categories
Categories of data subjects.
int32_t retention_days
Retention period in days.
std::string data_categories
Categories of personal data.
std::string purpose
Purpose of the processing.
Pseudonymizer configuration.
std::string purpose
Processing purpose for audit.
PseudonymStrategy strategy
int32_t output_hex_chars
Truncate hex output to N chars (0 = full 64).
Retention policy for a dataset or column.
std::string archive_location
Archive location before purge (empty = no archive).
int32_t retention_days
Max retention period (days).
std::string legal_hold_id
If non-empty, retention is suspended (legal hold).
std::string policy_id
Unique policy identifier.
bool auto_purge
Automatically purge expired data.
DSAR query parameters for finding subject data across files.
std::string subject_id_column
Column name containing the subject identifier.
std::vector< std::string > file_paths
Parquet files to search.
int64_t to_ns
Time range end (0 = no limit).
int64_t from_ns
Time range start (0 = no limit).
std::string subject_id
Data subject identifier (entity_id, user_id, etc.).
std::string processing_purposes
Purposes for which data is processed.
int64_t records_found
Number of records found.
std::string subject_id
Data subject.
std::string data_categories
Categories of data found.
bool exported
Whether data was exported for the subject.
int64_t completed_ns
Response completion timestamp.
std::string request_id
DSAR request identifier.
Annual self-assessment record per MiFID II Art. 17(2).
std::string remediation_plan
Plan to address findings.
bool submitted_to_nca
Submitted to national competent authority.
std::string assessment_id
Unique assessment identifier.
std::string risk_controls_review
Review of risk controls effectiveness.
std::string system_resilience_review
Review of system resilience.
int32_t year
Assessment year.
std::string compliance_findings
Compliance findings.
std::string algo_trading_summary
Summary of algorithmic trading activities.
int64_t completed_ns
Assessment completion timestamp.
Completeness attestation for a reporting period.
int64_t period_end_ns
Reporting period end.
int64_t period_start_ns
Reporting period start.
bool complete
Whether the period is complete.
std::vector< std::pair< int64_t, int64_t > > gaps
Detected gaps (start_ns, end_ns).
int64_t actual_records
Actual records found.
int64_t expected_records
Expected number of records.
Order lifecycle event for tracing order chain.
std::string event_type
"ORDER_NEW", "ORDER_MODIFY", "ORDER_CANCEL", "ORDER_FILL".
std::string venue_mic
Execution venue MIC.
double quantity
Order quantity.
std::string order_id
Current order identifier.
int64_t timestamp_ns
Event timestamp.
std::string parent_order_id
Parent order ID (empty for new orders).
Report integrity binding — associates a compliance report with its tamper-evidence chain.
std::string chain_hash
SHA-256 hash of the chain entry.
int64_t chain_seq
Audit chain sequence number.
std::string report_id
Report identifier.
std::string content_hash
SHA-256 hash of the report content.
Signed report envelope for non-repudiation.
int64_t signed_ns
Signing timestamp.
std::string signature
Digital signature (hex).
std::string report_id
Report identifier.
std::string signer_key_id
Key ID used for signing.
std::string algorithm
Signature algorithm ("HMAC-SHA256", "Ed25519", etc.).
std::string content
Report content (JSON/CSV).
Source file manifest entry for audit trail.
int64_t processed_ns
When the file was processed.
int64_t file_size
File size in bytes.
int64_t records_consumed
Number of records consumed from this file.
std::string file_path
Path to the source Parquet file.
std::string file_hash
SHA-256 hash of the file.
Result of a pre-trade risk check.
std::string message
Human-readable explanation (for audit trail).
Pre-trade risk limits configuration.
double max_order_notional
Max single-order notional value (default 1B).
int64_t max_messages_per_sec
Max order/cancel messages per second.
double max_daily_notional
Max cumulative daily notional (default 10B).
double price_collar_pct
Max % deviation from reference price (both sides).