Skip to content

Unified Event Taxonomy for Kush Ecosystem

Date: 2026-02-21 Scope: CIV simulation events + Venture autonomy events + cross-track event flows Status: ACTIVE Owner: Kush Ecosystem Integration Team


Executive Summary

This document defines the unified event taxonomy covering both CIV (city simulation) and Venture (autonomous agent platform) systems. It establishes:

  1. CIV Event Catalog: Simulation lifecycle, policy evaluation, economy, energy, institutions, and citizen metrics
  2. Venture Event Catalog: Workflow orchestration, artifact compilation, treasury authorization, compliance operations
  3. Cross-Track Event Flows: How CIV events are relayed through Venture event bus, and how Venture events trigger CIV state updates

All events conform to EventEnvelopeV1 schema defined in API_EVENTS_SPEC.md and TRACK_C_CONTROL_PLANE.md.


Event Envelope Contract (Foundation)

All events in both CIV and Venture adhere to this envelope:

json
{
  "event_id": "string (UUID)",
  "event_type": "string (namespace.resource.action.version)",
  "workflow_id": "string (UUID, links to parent workflow)",
  "task_id": "string (UUID, links to parent task)",
  "trace_id": "string (UUID, end-to-end request tracing)",
  "policy_bundle_id": "string (version, event evaluated under this policy)",
  "payload": "object (event-specific data)",
  "created_at": "timestamp (ISO 8601)",
  "source_system": "string (civ | venture)",
  "replay_token": "string (idempotency key for deterministic replay)"
}

Part 1: CIV Event Catalog

Events emitted from the CIV simulation system.

1.1 Simulation Lifecycle Events (run.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Run Startedciv.run.started.v1{run_id, simulation_seed, tick_count_target, config_snapshot, policy_bundle_id}Simulation engineMarks simulation initializationv1
Run Completedciv.run.completed.v1{run_id, tick_count_executed, final_state_hash, event_count, duration_ms}Simulation engineMarks simulation completionv1
Run Failedciv.run.failed.v1{run_id, error_code, error_message, tick_id_when_failed, state_snapshot}Simulation engineRecords fatal errors during simulationv1
Tick Startedciv.tick.started.v1{run_id, tick_id, tick_sequence, phase_order}Core simulation loopMarks tick initializationv1
Tick Completedciv.tick.completed.v1{run_id, tick_id, state_hash_after, sub_events_count, duration_ms, phase_hashes}Core simulation loopMarks tick completion with state verificationv1

Payload Schema Details:

  • run_id: Unique identifier for a simulation run (immutable after creation)
  • simulation_seed: RNG seed for reproducibility; pinned in replay
  • tick_count_target: Expected number of ticks (from policy config)
  • final_state_hash: SHA256(compressed_state); used for determinism verification
  • phase_order: Array of phase names in deterministic order (e.g., ["demographics", "policy", "economy", "spatial"])

1.2 Policy Evaluation Events (policy.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Policy Evaluatedciv.policy.evaluated.v1{tick_id, policy_type, policy_bundle_id, control_decision, affected_entity_count, evaluation_duration_ms}Policy engine (CIV-0100)Records policy evaluation and control decisionv1
Policy Appliedciv.policy.applied.v1{tick_id, policy_type, control_decision, entities_affected, ledger_updates_count, state_delta}Policy engineRecords actual application of policy controlv1
Constraint Violation Detectedciv.policy.constraint_violation.v1{tick_id, constraint_name, entity_id, actual_value, max_value, severity_level}Policy engine / VerifierRecords when a constraint (CIV-0104) is violatedv1

Payload Schema Details:

  • policy_type: One of fiscal, labor_market, environmental, institutional
  • control_decision: The control action selected (e.g., "subsidize_sector_X", "raise_tax_rate")
  • evaluation_duration_ms: Cost of running policy.evaluate() function (for Venture tool budgeting)
  • severity_level: critical | warning | info

1.3 Economy Events (economy.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Market Clearedciv.economy.market_cleared.v1{tick_id, market_type, supply_qty, demand_qty, equilibrium_price, clearing_efficiency}Market clearing engineRecords supply-demand equilibriumv1
Transfer Bookedciv.economy.transfer_booked.v1{tick_id, sender_id, receiver_id, amount, transfer_reason, ledger_account_pair}Double-entry ledger engineRecords debit/credit transactionv1
Account Balance Updatedciv.economy.balance_updated.v1{tick_id, account_id, balance_before, balance_after, delta_reason}Double-entry ledger engineRecords account balance changev1
Supply Stressciv.economy.supply_stress.v1{tick_id, market_type, supply_shortfall, stress_multiplier, price_impact}Supply-demand engine (CIV-0102)Records when supply < demandv1
Market Price Changedciv.economy.price_changed.v1{tick_id, market_type, price_before, price_after, price_change_pct, reason}Market clearing engineRecords price discovery and changesv1

Payload Schema Details:

  • market_type: One of labor, goods, capital, energy
  • clearing_efficiency: Float [0, 1]; 1.0 = perfect clearing, 0.5 = significant excess
  • ledger_account_pair: {debit_account: string, credit_account: string} for accounting reconciliation
  • supply_shortfall: Quantity units; used by Venture for quota model validation

1.4 Energy Accounting Events (energy.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Energy Consumedciv.energy.consumed.v1{tick_id, consumer_entity_id, energy_qty, source_type, consumption_reason}Energy ledger (CIV-0102)Records energy consumptionv1
Energy Generatedciv.energy.generated.v1{tick_id, producer_entity_id, energy_qty, source_type, capacity_utilization_pct}Energy ledgerRecords energy productionv1
Energy Storedciv.energy.stored.v1{tick_id, storage_entity_id, energy_qty_added, storage_capacity_before, storage_capacity_after}Energy ledgerRecords energy reserve changesv1
Supply-Demand Balanceciv.energy.balance.v1{tick_id, supply_total, demand_total, reserves_delta, conservation_check_passed}Energy ledgerRecords energy conservation equation resultsv1
Renewable Variabilityciv.energy.renewable_variability.v1{tick_id, renewable_source_id, expected_output, actual_output, variance_pct}Energy ledgerRecords renewable source variabilityv1

Payload Schema Details:

  • energy_qty: Joules (CIV-0107 unit system)
  • source_type: One of renewable, fossil, nuclear, storage
  • conservation_check_passed: Boolean; failure indicates determinism bug
  • variance_pct: Percentage deviation from expected; used for peak-shaving policy triggers

1.5 Citizen Lifecycle Events (citizen.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Citizen Bornciv.citizen.born.v1{tick_id, citizen_id, parent_ids, birth_location, genetic_traits}Demographic engine (CIV-0103)Records citizen birthv1
Citizen Education Updatedciv.citizen.education_updated.v1{tick_id, citizen_id, education_level_before, education_level_after, institution_id}Education subsystemRecords education progressionv1
Citizen Career Changedciv.citizen.career_changed.v1{tick_id, citizen_id, old_career, new_career, employer_id, salary_before, salary_after}Labor market engineRecords career transitionv1
Citizen Retiredciv.citizen.retired.v1{tick_id, citizen_id, retirement_age, career_length_years, final_wealth}Labor market engineRecords retirementv1
Citizen Diedciv.citizen.died.v1{tick_id, citizen_id, death_age, death_location, estate_distributed_to}Demographic engineRecords deathv1
Citizen Metrics Updatedciv.citizen.metrics_updated.v1{tick_id, citizen_id, age, wealth, education_level, satisfaction_score, institution_affiliation}Metrics engine (CIV-0103)Time-series snapshot of citizen statev1

Payload Schema Details:

  • education_level: Integer [0, 5]; maps to institution types (primary, secondary, tertiary, etc.)
  • satisfaction_score: Float [-1, 1]; used by Venture for user activity signaling
  • genetic_traits: Array of traits; affects career path probabilities
  • estate_distributed_to: Array of {heir_id, amount_joules}

1.6 Institution Lifecycle Events (institution.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Institution Createdciv.institution.created.v1{tick_id, institution_id, institution_type, founder_id, location, initial_population}Institutional engine (CIV-0103, CIV-0105)Records institution formationv1
Institution State Changedciv.institution.state_changed.v1{tick_id, institution_id, state_before, state_after, reason, affected_citizens_count}Institutional state machineRecords state transition (pending → active → dormant → dissolved)v1
Institution Mergedciv.institution.merged.v1{tick_id, merging_institution_ids, resulting_institution_id, population_transferred}Institutional engineRecords institution mergerv1
Institution Splitciv.institution.split.v1{tick_id, source_institution_id, new_institution_ids, population_distributed}Institutional engineRecords institution fissionv1
Institution Dissolvedciv.institution.dissolved.v1{tick_id, institution_id, citizen_relocations, asset_liquidations}Institutional engineRecords institution dissolutionv1
Institution Metrics Updatedciv.institution.metrics_updated.v1{tick_id, institution_id, population, wealth, assets, influence_score}Metrics engineTime-series snapshot of institution statev1

Payload Schema Details:

  • institution_type: One of kingdom, city_state, alliance, corporation, religious_order, militia
  • state_before/after: One of pending, active, dormant, dissolved
  • reason: String describing cause of state change (e.g., "diplomatic_treaty_expired", "bankruptcy", "armed_conquest")
  • influence_score: Float [0, 1]; used in policy evaluation and war/diplomacy subsystems

1.7 War, Diplomacy & Conflict Events (conflict.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
War Declaredciv.conflict.war_declared.v1{tick_id, aggressor_institution_id, defender_institution_id, reason, military_strength_ratio}Diplomacy engine (CIV-0105)Records declaration of warv1
Diplomatic Treaty Signedciv.conflict.treaty_signed.v1{tick_id, party_1_id, party_2_id, treaty_type, terms, duration_ticks}Diplomacy engineRecords treaty formationv1
Territorial Control Changedciv.conflict.territorial_control_changed.v1{tick_id, location_id, previous_controller_id, new_controller_id, population_affected}Conflict resolution engineRecords territory conquest/cessionv1
Shadow Network Activatedciv.conflict.shadow_network_activated.v1{tick_id, network_id, network_type, target_institution_id, influence_direction}Shadow subsystem (CIV-0105)Records covert influence operationv1

Payload Schema Details:

  • treaty_type: One of military_alliance, trade_agreement, non_aggression_pact, vassalage
  • military_strength_ratio: Float; attacker_strength / defender_strength
  • network_type: One of spy_ring, merchant_guild, religious_sect, secret_society
  • influence_direction: One of support, subvert, destabilize

1.8 Social & Health Events (social.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Health Crisis Detectedciv.social.health_crisis.v1{tick_id, location_id, disease_type, infection_rate, mortality_rate, affected_population}Health subsystem (CIV-0106)Records epidemic or plaguev1
Social Unrest Escalatedciv.social.unrest_escalated.v1{tick_id, location_id, unrest_level, causes, insurgent_count}Insurgency subsystem (CIV-0106)Records uprising or revoltv1
Ideology Shiftciv.social.ideology_shift.v1{tick_id, institution_id, ideology_before, ideology_after, driver}Ideology engine (CIV-0106)Records ideological changev1
Cultural Eventciv.social.cultural_event.v1{tick_id, event_type, location_id, impact_on_satisfaction, influenced_population}Cultural subsystemRecords cultural occurrence (e.g., festival, artistic movement)v1

Payload Schema Details:

  • unrest_level: Integer [0, 100]; > 70 triggers insurgency events
  • ideology_before/after: One of monarchy, theocracy, democracy, autocracy, meritocracy
  • driver: String explaining cause of shift (e.g., "military_victory", "enlightenment_era", "famine")
  • event_type: One of festival, artistic_movement, scientific_breakthrough, religious_schism

Part 2: Venture Event Catalog

Events emitted from the Venture autonomy platform.

2.1 Workflow Orchestration Events (workflow.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Workflow Startedventure.workflow.started.v1{workflow_id, agent_role, workspace_id, initial_task_count, policy_bundle_id}Workflow orchestrator (TRACK-C)Marks workflow initializationv1
Workflow Completedventure.workflow.completed.v1{workflow_id, status, task_count_executed, event_count, duration_ms}Workflow orchestratorMarks workflow completionv1
Workflow Failedventure.workflow.failed.v1{workflow_id, error_code, error_message, task_id_when_failed}Workflow orchestratorRecords fatal workflow errorv1
Task Scheduledventure.task.scheduled.v1{task_id, workflow_id, task_type, estimated_eau_cost}SchedulerMarks task schedulingv1
Task Startedventure.task.started.v1{task_id, workflow_id, agent_role, tool_calls_expected}Task executorMarks task execution startv1
Task Completedventure.task.completed.v1{task_id, workflow_id, status, tool_calls_count, actual_eau_cost, duration_ms}Task executorRecords task completion and costv1
Task Failedventure.task.failed.v1{task_id, workflow_id, error_code, error_message, partial_results}Task executorRecords task failurev1

Payload Schema Details:

  • agent_role: One of analyst, architect, engineer, auditor, orchestrator
  • workspace_id: Links to workspace isolation boundary
  • eau_cost: Ecosystem Allocation Unit (EAU) consumed by task
  • task_type: Corresponds to tool categories (code, artifact, policy, compliance, etc.)

2.2 Artifact Compilation Events (artifact.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Artifact IR Createdventure.artifact.ir_created.v1{artifact_ir_id, ir_type, schema_version, content_hash, payload_size_bytes}Artifact compiler (TRACK-A)Marks artifact IR creationv1
Artifact Build Startedventure.artifact.build_started.v1{artifact_ir_id, build_id, toolchain_version, target_surface, estimated_cost_eau}Build engineMarks build initializationv1
Artifact Build Completedventure.artifact.build_completed.v1{build_id, artifact_ir_id, status, output_hash, actual_cost_eau, duration_ms}Build engineRecords build completionv1
Artifact Build Failedventure.artifact.build_failed.v1{build_id, artifact_ir_id, error_code, error_message, partial_output}Build engineRecords build failurev1
Artifact Provenance Attestedventure.artifact.provenance_attested.v1{artifact_id, build_id, provider, model_version, signature, timestamp}Provenance engineRecords signed provenance evidencev1
Artifact Cache Hitventure.artifact.cache_hit.v1{artifact_ir_id, idempotency_key, cached_artifact_id, cache_age_ms}Build engineRecords deterministic cache hitv1

Payload Schema Details:

  • ir_type: One of SlideSpec, DocSpec, TimelineSpec, AudioSpec, BoardSpec, CivSimulationArtifact
  • target_surface: One of web, mobile, vr, print, cinema
  • provider: One of openai, anthropic, veo, nanobanana, internal
  • model_version: Semantic version of provider model/toolchain
  • signature: Ed25519 signature over {artifact_id, provider, model_version, timestamp}

2.3 Money & Treasury Events (money.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Money Intent Createdventure.money.intent_created.v1{intent_id, workflow_id, scope_type, scope_id, cap_amount, window, ttl_ms}Money control (TRACK-B)Records spend authorization requestv1
Money Authorization Decidedventure.money.authorization_decided.v1{intent_id, workflow_id, decision, reason_code, policy_bundle_id}Authorization engineRecords spend approval/rejectionv1
Ledger Entry Createdventure.ledger.entry_created.v1{entry_id, debit_account, credit_account, amount, reference_id, policy_bundle_id}Ledger engine (TRACK-B)Records double-entry transactionv1
Budget Allocation Approvedventure.budget.allocation_approved.v1{workspace_id, allocation_amount, window, policy_bundle_id}Budget engineRecords workspace budget approvalv1
Budget Exceededventure.budget.exceeded.v1{workspace_id, budget_limit, actual_spend, overage_amount}Budget engineRecords budget violationv1
Reconciliation Runventure.reconciliation.run.v1{run_id, period, drift_amount, drift_pct, status, timestamp}Reconciliation engineRecords daily/weekly reconciliationv1

Payload Schema Details:

  • scope_type: One of workflow, task, agent_action, workspace, global
  • reason_code: One of approved, rejected_budget, rejected_policy, revoked, expired
  • debit_account / credit_account: Account IDs from chart of accounts (see DATA_MODEL_DB_SPEC)
  • drift_pct: Reconciliation discrepancy as percentage of total ledger balance

2.4 Compliance & Audit Events (compliance.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Compliance Case Openedventure.compliance.case_opened.v1{case_id, case_type, severity_level, evidence_chain_start}Compliance machine (OPS)Records new compliance investigationv1
Compliance Case Evidence Addedventure.compliance.case_evidence_added.v1{case_id, evidence_id, event_id_reference, evidence_type, timestamp}Audit trail engineAppends evidence to casev1
Compliance Case Closedventure.compliance.case_closed.v1{case_id, closure_reason, evidence_count, finding}Compliance machineRecords case resolutionv1
Compliance Violation Detectedventure.compliance.violation_detected.v1{violation_id, violation_type, severity_level, affected_workflow_id, remediation_action}Policy verifierRecords policy/regulatory breachv1
Audit Log Entryventure.audit.log_entry.v1{log_id, action_type, actor_id, resource_id, change_summary, timestamp}Audit engineRecords user/system action for auditv1
Policy Bundle Drift Detectedventure.compliance.policy_drift.v1{drift_id, expected_bundle_id, actual_bundle_id, diff_summary}Policy drift detectorRecords unintended policy changev1

Payload Schema Details:

  • case_type: One of policy_violation, treasury_drift, tool_misuse, compliance_breach, incident_investigation
  • severity_level: One of critical, high, medium, low
  • evidence_type: One of event_log, state_snapshot, signature, attestation, audit_trail
  • remediation_action: One of suspend_workflow, revoke_authorization, escalate_to_human, auto_remediate

2.5 Policy & Governance Events (policy.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Policy Bundle Publishedventure.policy.bundle_published.v1{bundle_id, version, schema_snapshot, published_at, effective_at}Policy engine (TRACK-C)Records new policy bundlev1
Policy Evaluation Startedventure.policy.evaluation_started.v1{evaluation_id, bundle_id, context_snapshot, decision_pending}Policy evaluatorMarks policy evaluation startv1
Policy Decision Madeventure.policy.decision_made.v1{decision_id, bundle_id, decision_result, supporting_facts}Policy evaluatorRecords policy decisionv1
Policy Rollback Initiatedventure.policy.rollback_initiated.v1{rollback_id, bundle_id_being_revoked, new_bundle_id, affected_workflows}Policy adminRecords policy revocation and recoveryv1

Payload Schema Details:

  • schema_snapshot: Compressed JSON schema of entire policy bundle
  • decision_result: The control decision output (e.g., "allow", "reject_with_escalation", "require_approval")
  • supporting_facts: Array of facts from context that drove decision

2.6 User & Multi-Tenancy Events (user.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
User Onboardedventure.user.onboarded.v1{user_id, role, workspace_id, capability_tier, initial_budget_eau}User managementRecords new user creationv1
User Capability Changedventure.user.capability_changed.v1{user_id, old_capability_tier, new_capability_tier, reason}Access controlRecords permission/capability changev1
User Activity Signalventure.user.activity_signal.v1{user_id, signal_type, metric_value, observation_window}Metrics engineRecords user behavior metricsv1
User Offboardedventure.user.offboarded.v1{user_id, offboarding_reason, residual_budget_disposal}User managementRecords user deactivationv1

Payload Schema Details:

  • capability_tier: One of tier_0_admin, tier_1_advanced, tier_2_standard, tier_3_limited
  • signal_type: One of task_completion_rate, tool_usage_distribution, budget_utilization, compliance_rate
  • metric_value: Float; context-dependent range
  • observation_window: Time window over which signal was computed (e.g., "last_7_days")

2.7 Privacy & Data Protection Events (privacy.*)

Event NameFully QualifiedPayload SchemaEmitted ByPurposeVersion
Privacy Request Receivedventure.privacy.request_received.v1{request_id, request_type, subject_user_id, received_at}Privacy managerRecords data request (GDPR/CCPA)v1
Privacy Request Processedventure.privacy.request_processed.v1{request_id, status, data_collected_bytes, completion_timestamp}Privacy engineRecords request fulfillmentv1
Data Retention Policy Appliedventure.privacy.retention_policy_applied.v1{policy_id, affected_record_count, data_deleted_bytes, policy_version}Data retention engineRecords automatic data cleanupv1
PII Detected in Artifactventure.privacy.pii_detected.v1{artifact_id, pii_type, detection_confidence, remediation_action}PII detectorRecords sensitive data discoveryv1

Payload Schema Details:

  • request_type: One of right_to_access, right_to_deletion, right_to_portability, right_to_correction
  • pii_type: One of email, phone, ssn, credit_card, api_key, password_hash, location
  • detection_confidence: Float [0, 1]; confidence that detected data is actually PII

Part 3: Cross-Track Event Flows

Events flowing between CIV and Venture systems.

3.1 CIV → Venture Relay Pattern

CIV events are captured and relayed into Venture event bus for audit and compliance purposes:

CIV Event Emitted

Event Relay Layer (in TRACK-C_CONTROL_PLANE)
  ├─ Translate event type: civ.* → venture.civ.* (namespace isolation)
  ├─ Wrap in EventEnvelopeV1 (add workflow_id, trace_id, policy_bundle_id)
  ├─ Compute event_id (UUID for Venture tracking)
  └─ Emit to Venture event bus

Venture Event Bus
  ├─ Store in event log
  ├─ Trigger subscribed handlers (compliance, metrics, etc.)
  └─ Make available for replay and audit

Key Mapping Rules:

  1. Namespace: CIV events prefixed with civ. to distinguish from native Venture events
  2. Workflow Context: CIV simulation run → Venture workflow_id (1:1 mapping)
  3. Tick to Task: Each CIV tick → Venture task in orchestration DAG
  4. Policy Bundle Pinning: CIV event's policy_bundle_id must match Venture's policy_bundle_id for that workflow
  5. Idempotency: CIV event_id + source_system + timestamp = replay_token for deduplication

3.2 Specific Cross-Track Event Flows

Flow A: CIV Economy → Venture Ledger

civ.economy.transfer_booked.v1 (sender, receiver, amount, reason)
  ↓ (Relay)
venture.civ.economy.transfer_booked.v1 (wrapped)
  ↓ (Subscription)
Venture Ledger Engine
  ├─ Extract sender/receiver/amount
  ├─ Determine debit_account (sender's account) and credit_account (receiver's account)
  ├─ Emit venture.ledger.entry_created.v1 with (debit_account, credit_account, amount, reference_id=civ_event_id)
  └─ Update account balances; validate conservation law

Validation Rules:

  • Both debit and credit amounts must be positive and equal
  • Sum of all ledger entries must equal zero (conservation)
  • Accounts must exist and be active
  • Policy bundle version must match CIV's policy bundle

Flow B: CIV Policy Evaluation → Venture Audit Trail

civ.policy.evaluated.v1 (policy_type, control_decision, evaluation_duration_ms)
  ↓ (Relay)
venture.civ.policy.evaluated.v1 (wrapped)
  ↓ (Subscription)
Venture Compliance Machine
  ├─ Open or append to compliance case (case_type="entity_policy_evaluation")
  ├─ Add evidence (event_id_reference, evidence_type="policy_evaluation_record")
  ├─ Check if control_decision matches policy bundle expectations
  └─ If unexpected: emit compliance.violation_detected.v1 (severity_level="warning")

Flow C: CIV Citizen Lifecycle → Venture User Signals

civ.citizen.born.v1 / civ.citizen.retired.v1 / civ.citizen.died.v1 (citizen_id, ...)
  ↓ (Relay)
venture.civ.citizen.[event_name].v1 (wrapped)
  ↓ (Subscription)
Venture Metrics Engine
  ├─ Create user.activity_signal.v1 for onboarding/offboarding if applicable
  ├─ If citizen_id maps to managed user_id in Venture:
  │   └─ Update user capability tier based on life stage
  └─ Otherwise: log as observational metric (do not auto-create users)

Mapping Details:

  • CIV citizen birth → Venture user onboarding signal (if opt-in)
  • CIV citizen career change → Venture capability tier escalation
  • CIV citizen death → Venture user offboarding signal (if opt-in)

Flow D: CIV Institution Changes → Venture Compliance Cases

civ.institution.created.v1 / civ.institution.dissolved.v1 / civ.institution.state_changed.v1
  ↓ (Relay)
venture.civ.institution.[event_name].v1 (wrapped)
  ↓ (Subscription)
Venture Compliance Machine
  ├─ Open compliance case: case_type="institutional_change"
  ├─ Add evidence chain:
  │   ├─ Event 1: institution.created.v1 (case opened)
  │   ├─ Event 2-N: state_changed.v1, merged.v1, split.v1 (evidence accumulation)
  │   └─ Event N+1: institution.dissolved.v1 (case closed)
  └─ Case queryable for audit and policy review

Flow E: CIV Energy Accounting → Venture Budget Consumption

civ.energy.consumed.v1 (consumer_entity_id, energy_qty, source_type)
  ↓ (Relay)
venture.civ.energy.consumed.v1 (wrapped)
  ↓ (Subscription)
Venture Budget Engine
  ├─ Map energy_qty → eau_cost_estimate using conversion function (see ENERGY_TO_BUDGET_CONTRACT)
  ├─ Deduct from workspace quota
  ├─ If quota exceeded:
  │   ├─ Emit budget.exceeded.v1
  │   └─ Trigger remediation (reduce consumption, escalate to policy review, etc.)
  └─ Log consumption signal for future capacity planning

Conversion Function:

  • Base: 1 Joule (CIV-0107 unit) ≈ 0.001 EAU (empirically calibrated)
  • Multiplier by source_type: renewable=1.0x, fossil=1.5x, nuclear=0.8x, storage_discharge=2.0x
  • Final: eau_cost = energy_qty * 0.001 * source_type_multiplier

3.3 Venture → CIV Influence (Optional/Future)

Venture compliance decisions can influence CIV simulation policy:

venture.compliance.violation_detected.v1 (violation_type="tool_misuse")
  ↓ (Optional Feedback Loop)
CIV Policy Engine
  ├─ Reduce policy evaluation budget for next N ticks
  ├─ Adjust policy_bundle to be more conservative
  └─ Emit civ.policy.adjusted.v1 for audit

Note: This is optional and future; current design emphasizes CIV → Venture telemetry, not closed-loop control.


Part 4: Event Ordering & Determinism Guarantees

Event Ordering Within a CIV Tick

All CIV events within a single tick follow deterministic phase order:

Tick T:
  1. civ.tick.started.v1
  2. civ.policy.evaluated.v1 (demographic policies)
  3. civ.citizen.[born|retired|died].v1 (demographic changes)
  4. civ.policy.evaluated.v1 (economic policies)
  5. civ.economy.market_cleared.v1
  6. civ.economy.transfer_booked.v1 (multiple)
  7. civ.energy.consumed.v1 / civ.energy.generated.v1 (multiple)
  8. civ.energy.balance.v1 (conservation check)
  9. civ.policy.evaluated.v1 (spatial policies)
  10. civ.citizen.metrics_updated.v1
  11. civ.institution.metrics_updated.v1
  12. civ.tick.completed.v1

Determinism Guarantee: Given identical tick_id, simulation_seed, and policy_bundle_id, events 1-12 must be emitted in identical order with identical payloads.

Event Ordering Within a Venture Workflow

Venture events are ordered by task execution order (DAG semantics):

Workflow W (CIV integration example):
  1. venture.workflow.started.v1
  2. venture.task.scheduled.v1 (task_type="civ_simulation")
  3. venture.task.started.v1
  4. venture.civ.tick.started.v1 (relayed from CIV)
  5. venture.civ.economy.transfer_booked.v1 (relayed)
  6. venture.ledger.entry_created.v1 (Venture-side transaction)
  7. venture.civ.tick.completed.v1 (relayed)
  8. venture.task.completed.v1
  9. venture.workflow.completed.v1

Concurrency: Tasks can execute in parallel; events from different tasks may interleave. However, events from the same task follow strict ordering.


Part 5: Schema Registry & Versioning

Event Schema Versioning

All event types follow semantic versioning:

  • Major version (e.g., v1v2): Breaking schema changes (required field added/removed/type changed)
  • Minor version (e.g., v1.1): Backwards-compatible addition (new optional field)
  • Patch version (e.g., v1.0.1): Documentation/comment updates; no schema changes

Deprecation Policy:

  • When deprecating an event type, mark as deprecated in schema registry
  • Support deprecated types for 2 policy bundle versions (N and N+1)
  • After 2 versions, reject deprecated types with error message

Payload Schema Storage

All event payload schemas are stored in venture/SCHEMA_PACK.md and registered in Venture's schema registry with:

json
{
  "event_type": "civ.economy.transfer_booked.v1",
  "schema_version": 1,
  "json_schema": { /* full JSON schema */ },
  "registered_at": "2026-02-21T00:00:00Z",
  "deprecated": false,
  "references": ["CIV-0100", "TRACK_B_TREASURY_COMPLIANCE_SPEC"]
}

Summary

DimensionCountCoverage
CIV Event Types32Run lifecycle, policy, economy, energy, citizens, institutions, conflict, social
Venture Event Types26Workflows, artifacts, money, compliance, policy, users, privacy
Total Event Types58All mapped to EventEnvelopeV1 schema
Cross-Track Flows5 major patternsCIV→Venture relay, ledger sync, audit trail, user signals, budget consumption
Determinism Guarantees100%Both systems support full deterministic replay from event log

All events are audit-ready, replay-safe, and traceable through both CIV and Venture systems.


Document Control

VersionDateAuthorChange
1.02026-02-21Kush Integration TeamInitial version; 58 event types documented, 5 cross-track flows defined