{ "schema_version": "1.0", "id": "medieval_civilization", "name": "Medieval Civic Economy", "description": "A compact civilization where generic agents govern, trade, construct infrastructure, share knowledge, enforce rules, and adapt goals under civic pressure.", "simulation": { "steps": 70, "seed": 11, "scheduler": "sequential", "activation": "sequential", "collect_history": true, "metadata": { "example": true, "domain": "civilization" } }, "space": { "dimensions": 2, "bounds": [ [ 0, 12 ], [ 0, 12 ] ], "toroidal": false, "enforce_bounds": true, "metadata": { "layout": "small_civic_map" } }, "agents": [ { "id": "ruler_1", "type": "ruler", "position": [ 2.0, 2.0 ], "state": { "energy": 10, "credits": 20, "treasury": 15, "authority": 5, "public_pressure_signal": 0.55, "inventory": { "stone": 4, "charters": 2 } }, "memory": { "goals": [ { "id": "maintain_order", "description": "Keep the settlement stable while preserving public trust.", "importance": 3, "score": 3, "duration": 2 }, { "id": "support_trade", "description": "Use rules and incentives to keep merchants and artisans productive.", "importance": 2, "score": 2.5, "duration": 2 }, { "id": "fund_infrastructure", "description": "Build shared infrastructure without exhausting the treasury.", "importance": 2, "score": 2, "duration": 3 } ], "known_options": { "fair_taxation": { "score": 1.1, "trust": 0.7 }, "grain_subsidy": { "score": 1.0, "stability": 0.8 }, "market_regulation": { "score": 0.9, "stability": 0.7 } }, "relationships": {} }, "goals": [ { "id": "maintain_order", "importance": 3, "score": 3 }, { "id": "support_trade", "importance": 2, "score": 2.5 }, { "id": "fund_infrastructure", "importance": 2, "score": 2 } ], "behaviors": [ { "name": "remember", "params": { "category": "civic_context", "content": { "note": "The ruler monitors public pressure, treasury health, trade, and civic order." }, "tags": [ "governance", "initial" ] } }, { "name": "prioritize", "params": { "source_path": "memory.goals", "item_attribute_weights": { "importance": 1.0, "score": 1.0 } } }, { "name": "choose_goal", "params": { "source_path": "memory.latest_priorities.items", "current_goal_path": "state.current_goal" } }, { "name": "evaluate", "params": { "category": "civic_policy", "candidate_options": [ "fair_taxation", "grain_subsidy", "market_regulation" ], "known_options_path": "memory.known_options", "adoption_threshold": 0.8, "write_decision_path": "memory.latest_policy_decision" } }, { "name": "adopt", "params": { "option_id": "fair_taxation", "category": "governance_strategy", "adoption_strength": 0.4, "state_updates_on_adopt": { "governance_style": "fair_taxation" } } }, { "name": "regulate", "params": { "regulation_id": "market_fairness_rule", "regulation_type": "market_rule", "target_types": [ "merchant", "artisan" ], "constraints": { "state.credits": { "min": 0 } }, "penalties": { "credits": 1.0 }, "authority_key": "authority", "required_authority": 2.0 } }, { "name": "tax", "params": { "target_types": [ "merchant", "artisan" ], "tax_rate": 0.1, "tax_base_key": "state.credits", "source_account_key": "credits", "recipient_account_key": "treasury", "allow_partial": true, "authority_key": "authority", "required_authority": 2.0 } }, { "name": "subsidize", "params": { "target_types": [ "guard", "scholar" ], "amount": 1.0, "source_account_key": "treasury", "recipient_account_key": "credits", "require_source_funds": true, "allow_partial": true, "authority_key": "authority", "required_authority": 2.0 } }, { "name": "approve", "params": { "target_agent_id": "artisan_1", "requested_action": "repair_public_square", "approval_status": "approved", "state_updates_on_approval": { "has_build_permit": true }, "authority_key": "authority", "required_authority": 2.0 } }, { "name": "communicate", "params": { "message": "civic_policy_update", "target_agent_id": "envoy_1", "max_recipients": 1 } }, { "name": "update_belief", "params": { "belief_id": "public_order_is_stable", "proposition": "Public order can be maintained with current policy.", "evidence_path": "state.public_pressure_signal", "learning_rate": 0.2, "write_belief_path": "memory.latest_order_belief" } } ], "policy": { "type": "rule_policy", "params": { "selection_strategy": "highest_score", "rules": [ { "id": "ruler_choose_goal", "behavior_name": "choose_goal", "score_delta": 5.0, "priority_delta": 2.0 }, { "id": "ruler_prioritize", "behavior_name": "prioritize", "score_delta": 4.0, "priority_delta": 1.0 }, { "id": "ruler_regulate", "behavior_name": "regulate", "conditions": { "state.authority": { "min": 2 } }, "score_delta": 3.0 }, { "id": "ruler_tax", "behavior_name": "tax", "conditions": { "state.authority": { "min": 2 } }, "score_delta": 2.6 }, { "id": "ruler_subsidize", "behavior_name": "subsidize", "conditions": { "state.treasury": { "min": 1 } }, "score_delta": 2.2 }, { "id": "ruler_approve", "behavior_name": "approve", "score_delta": 1.8 }, { "id": "ruler_communicate", "behavior_name": "communicate", "score_delta": 1.4 }, { "id": "ruler_evaluate", "behavior_name": "evaluate", "score_delta": 1.0 }, { "id": "ruler_update_belief", "behavior_name": "update_belief", "score_delta": 0.7 }, { "id": "ruler_remember", "behavior_name": "remember", "score_delta": 0.2 }, { "id": "ruler_adopt", "behavior_name": "adopt", "score_delta": 0.1 } ] } }, "alive": true, "metadata": { "role": "governance", "example_note": "Primary civic policy agent." } }, { "id": "merchant_1", "type": "merchant", "position": [ 8.0, 7.5 ], "state": { "energy": 9, "credits": 14, "market_signal": 0.7, "inventory": { "grain": 5, "cloth": 3 } }, "memory": { "goals": [ { "id": "grow_trade", "description": "Balance grain, gold, and trust to grow exchange.", "importance": 3, "score": 3, "duration": 2 }, { "id": "maintain_reputation", "description": "Avoid penalties and preserve buyer trust.", "importance": 2, "score": 2, "duration": 1 } ], "known_options": { "fair_pricing": { "score": 1.1, "trust": 0.8 }, "bulk_trade": { "score": 0.9, "credits": 0.7 } }, "relationships": {} }, "goals": [ { "id": "grow_trade", "importance": 3, "score": 3 }, { "id": "maintain_reputation", "importance": 2, "score": 2 } ], "behaviors": [ { "name": "remember", "params": { "category": "market_context", "content": { "note": "The merchant tracks prices, demand, and regulation." }, "tags": [ "market", "trade" ] } }, { "name": "prioritize", "params": { "source_path": "memory.goals" } }, { "name": "choose_goal", "params": { "source_path": "memory.latest_priorities.items", "current_goal_path": "state.current_goal" } }, { "name": "price", "params": { "instrument_key": "grain", "base_price": 2.0, "supply_path": "state.inventory.grain", "demand_path": "state.market_signal", "min_price": 0.5, "max_price": 8.0 } }, { "name": "ask", "params": { "instrument_key": "grain", "quantity": 1.0, "limit_price": 2.0, "inventory_key": "inventory", "account_key": "credits", "match_immediately": true } }, { "name": "forecast", "params": { "instrument_key": "grain", "method": "moving_average", "window": 3, "horizon_steps": 2 } }, { "name": "evaluate", "params": { "category": "trade_strategy", "candidate_options": [ "fair_pricing", "bulk_trade" ], "known_options_path": "memory.known_options", "adoption_threshold": 0.8 } }, { "name": "adopt", "params": { "option_id": "fair_pricing", "category": "trade_strategy", "adoption_strength": 0.3, "state_updates_on_adopt": { "trade_practice": "fair_pricing" } } }, { "name": "communicate", "params": { "message": "market_price_update", "target_agent_id": "ruler_1", "max_recipients": 1 } }, { "name": "cooperate", "params": { "target_agent_id": "artisan_1", "goal": "grow_trade", "effort": 0.8 } }, { "name": "update_belief", "params": { "belief_id": "market_is_healthy", "proposition": "Trade demand is strong enough to support the market.", "evidence_path": "state.market_signal", "learning_rate": 0.25, "write_belief_path": "memory.latest_market_belief" } } ], "policy": { "type": "rule_policy", "params": { "selection_strategy": "highest_score", "rules": [ { "behavior_name": "choose_goal", "score_delta": 5.0 }, { "behavior_name": "prioritize", "score_delta": 4.0 }, { "behavior_name": "price", "score_delta": 3.2 }, { "behavior_name": "ask", "conditions": { "state.inventory.grain": { "min": 1 } }, "score_delta": 2.8 }, { "behavior_name": "forecast", "score_delta": 2.0 }, { "behavior_name": "communicate", "score_delta": 1.8 }, { "behavior_name": "cooperate", "score_delta": 1.4 }, { "behavior_name": "evaluate", "score_delta": 1.0 }, { "behavior_name": "update_belief", "score_delta": 0.7 }, { "behavior_name": "remember", "score_delta": 0.2 }, { "behavior_name": "adopt", "score_delta": 0.1 } ] } }, "alive": true, "metadata": { "role": "market_coordination" } }, { "id": "artisan_1", "type": "artisan", "position": [ 6.0, 5.0 ], "state": { "energy": 9, "credits": 9, "craft_signal": 0.65, "has_build_permit": false, "inventory": { "stone": 4, "wood": 3, "tools": 2, "craft_materials": 5 } }, "memory": { "goals": [ { "id": "repair_public_square", "description": "Maintain shared infrastructure that supports trust and trade.", "importance": 3, "score": 2.8, "duration": 3 }, { "id": "produce_goods", "description": "Turn materials into useful trade goods.", "importance": 2, "score": 2.2, "duration": 2 } ], "known_options": { "guild_workshop": { "score": 1.2, "capacity": 0.8 }, "repair_priority": { "score": 1.0, "trust": 0.7 } }, "structures": {}, "relationships": {} }, "goals": [ { "id": "repair_public_square", "importance": 3, "score": 2.8 }, { "id": "produce_goods", "importance": 2, "score": 2.2 } ], "behaviors": [ { "name": "remember", "params": { "category": "artisan_context", "content": { "note": "The artisan tracks permits, tools, materials, and shared infrastructure." }, "tags": [ "construction", "craft" ] } }, { "name": "prioritize", "params": { "source_path": "memory.goals" } }, { "name": "choose_goal", "params": { "source_path": "memory.latest_priorities.items", "current_goal_path": "state.current_goal" } }, { "name": "build", "params": { "structure_id": "public_square", "structure_type": "civic_infrastructure", "material_cost": { "stone": 1.0, "wood": 1.0 }, "work_required": 6.0, "work_amount": 1.0, "initial_capacity": 5.0, "initial_durability": 10.0 } }, { "name": "repair", "params": { "structure_id": "public_square", "repair_amount": 1.0, "material_cost": { "craft_materials": 1.0 } } }, { "name": "expand", "params": { "structure_id": "public_square", "dimension_key": "capacity", "expansion_amount": 1.0, "work_required": 4.0, "work_amount": 1.0, "material_cost": { "stone": 1.0 } } }, { "name": "evaluate", "params": { "category": "craft_strategy", "candidate_options": [ "guild_workshop", "repair_priority" ], "known_options_path": "memory.known_options", "adoption_threshold": 0.8 } }, { "name": "communicate", "params": { "message": "infrastructure_status", "target_agent_id": "ruler_1", "max_recipients": 1 } }, { "name": "cooperate", "params": { "target_agent_id": "merchant_1", "goal": "grow_trade", "effort": 0.7 } } ], "policy": { "type": "rule_policy", "params": { "selection_strategy": "highest_score", "rules": [ { "behavior_name": "choose_goal", "score_delta": 5.0 }, { "behavior_name": "prioritize", "score_delta": 4.0 }, { "behavior_name": "build", "conditions": { "state.inventory.stone": { "min": 1 }, "state.inventory.wood": { "min": 1 } }, "score_delta": 3.4 }, { "behavior_name": "repair", "conditions": { "state.inventory.craft_materials": { "min": 1 } }, "score_delta": 2.3 }, { "behavior_name": "expand", "conditions": { "state.inventory.stone": { "min": 1 } }, "score_delta": 1.8 }, { "behavior_name": "communicate", "score_delta": 1.4 }, { "behavior_name": "cooperate", "score_delta": 1.2 }, { "behavior_name": "evaluate", "score_delta": 0.9 }, { "behavior_name": "remember", "score_delta": 0.2 } ] } }, "alive": true, "metadata": { "role": "infrastructure_and_craft" } }, { "id": "scholar_1", "type": "scholar", "position": [ 4.0, 9.0 ], "state": { "energy": 8, "credits": 5, "knowledge": 3, "evidence_signal": 0.72, "inventory": { "manuscripts": 3, "ink": 2 } }, "memory": { "goals": [ { "id": "preserve_knowledge", "description": "Maintain useful knowledge for policy and trade.", "importance": 3, "score": 3, "duration": 2 }, { "id": "advise_council", "description": "Share evidence with civic decision makers.", "importance": 2, "score": 2.4, "duration": 1 } ], "known_options": { "public_archive": { "score": 1.2, "knowledge": 0.9 }, "civic_advice": { "score": 1.0, "trust": 0.7 } }, "relationships": {} }, "goals": [ { "id": "preserve_knowledge", "importance": 3, "score": 3 }, { "id": "advise_council", "importance": 2, "score": 2.4 } ], "behaviors": [ { "name": "remember", "params": { "category": "scholar_context", "content": { "note": "The scholar turns observations into institutional memory." }, "tags": [ "knowledge", "policy" ] } }, { "name": "prioritize", "params": { "source_path": "memory.goals" } }, { "name": "choose_goal", "params": { "source_path": "memory.latest_priorities.items", "current_goal_path": "state.current_goal" } }, { "name": "evaluate", "params": { "category": "knowledge_strategy", "candidate_options": [ "public_archive", "civic_advice" ], "known_options_path": "memory.known_options", "adoption_threshold": 0.75 } }, { "name": "adopt", "params": { "option_id": "public_archive", "category": "knowledge_strategy", "adoption_strength": 0.3, "state_updates_on_adopt": { "knowledge_practice": "public_archive" } } }, { "name": "communicate", "params": { "message": "civic_evidence_update", "target_agent_id": "ruler_1", "max_recipients": 1 } }, { "name": "cooperate", "params": { "target_agent_id": "envoy_1", "goal": "preserve_knowledge", "effort": 0.8 } }, { "name": "update_belief", "params": { "belief_id": "council_has_good_information", "proposition": "The council has enough evidence for stable decisions.", "evidence_path": "state.evidence_signal", "learning_rate": 0.25, "write_belief_path": "memory.latest_civic_evidence_belief" } } ], "policy": { "type": "rule_policy", "params": { "selection_strategy": "highest_score", "rules": [ { "behavior_name": "choose_goal", "score_delta": 5.0 }, { "behavior_name": "prioritize", "score_delta": 4.0 }, { "behavior_name": "communicate", "score_delta": 3.0 }, { "behavior_name": "evaluate", "score_delta": 2.0 }, { "behavior_name": "cooperate", "score_delta": 1.5 }, { "behavior_name": "update_belief", "score_delta": 1.0 }, { "behavior_name": "adopt", "score_delta": 0.3 }, { "behavior_name": "remember", "score_delta": 0.2 } ] } }, "alive": true, "metadata": { "role": "knowledge_and_advice" } }, { "id": "guard_1", "type": "guard", "position": [ 2.5, 6.5 ], "state": { "energy": 10, "credits": 4, "public_safety_signal": 0.6, "inventory": { "supplies": 3 } }, "memory": { "goals": [ { "id": "protect_settlement", "description": "Preserve civic safety and reduce conflict.", "importance": 3, "score": 2.8, "duration": 2 }, { "id": "enforce_fairness", "description": "Support fair rule enforcement without exhausting trust.", "importance": 2, "score": 2.0, "duration": 1 } ], "known_options": { "patrol": { "score": 1.0, "safety": 0.8 }, "mediation": { "score": 0.9, "trust": 0.7 } }, "relationships": {} }, "goals": [ { "id": "protect_settlement", "importance": 3, "score": 2.8 }, { "id": "enforce_fairness", "importance": 2, "score": 2.0 } ], "behaviors": [ { "name": "remember", "params": { "category": "security_context", "content": { "note": "The guard tracks public safety and enforcement pressure." }, "tags": [ "safety", "governance" ] } }, { "name": "prioritize", "params": { "source_path": "memory.goals" } }, { "name": "choose_goal", "params": { "source_path": "memory.latest_priorities.items", "current_goal_path": "state.current_goal" } }, { "name": "enforce", "params": { "target_types": [ "merchant", "artisan" ], "compliance_constraints": { "state.credits": { "min": 0 } }, "fine_amount": 0.5, "penalty_account_key": "credits", "collector_agent_id": "ruler_1", "collector_account_key": "treasury", "authority_key": "authority", "required_authority": 0.0 } }, { "name": "communicate", "params": { "message": "safety_status_update", "target_agent_id": "ruler_1", "max_recipients": 1 } }, { "name": "cooperate", "params": { "target_agent_id": "envoy_1", "goal": "protect_settlement", "effort": 0.8 } }, { "name": "update_belief", "params": { "belief_id": "settlement_is_safe", "proposition": "The settlement is safe enough for trade and learning.", "evidence_path": "state.public_safety_signal", "learning_rate": 0.25, "write_belief_path": "memory.latest_safety_belief" } } ], "policy": { "type": "rule_policy", "params": { "selection_strategy": "highest_score", "rules": [ { "behavior_name": "choose_goal", "score_delta": 5.0 }, { "behavior_name": "prioritize", "score_delta": 4.0 }, { "behavior_name": "enforce", "score_delta": 3.0 }, { "behavior_name": "communicate", "score_delta": 2.0 }, { "behavior_name": "cooperate", "score_delta": 1.4 }, { "behavior_name": "update_belief", "score_delta": 1.0 }, { "behavior_name": "remember", "score_delta": 0.2 } ] } }, "alive": true, "metadata": { "role": "safety_and_enforcement" } }, { "id": "envoy_1", "type": "envoy", "position": [ 10.0, 3.0 ], "state": { "energy": 9, "credits": 6, "trust_signal": 0.68, "inventory": { "letters": 4, "gifts": 2 } }, "memory": { "goals": [ { "id": "preserve_alliances", "description": "Carry messages between civic groups and reduce coordination failures.", "importance": 3, "score": 2.9, "duration": 1 }, { "id": "mediate_conflict", "description": "Help agents negotiate during resource or trade pressure.", "importance": 2, "score": 2.2, "duration": 2 } ], "known_options": { "diplomatic_route": { "score": 1.2, "trust": 0.9 }, "mediation": { "score": 1.0, "conflict_reduction": 0.8 } }, "relationships": {} }, "goals": [ { "id": "preserve_alliances", "importance": 3, "score": 2.9 }, { "id": "mediate_conflict", "importance": 2, "score": 2.2 } ], "behaviors": [ { "name": "remember", "params": { "category": "diplomacy_context", "content": { "note": "The envoy tracks trust, messages, and civic coordination." }, "tags": [ "diplomacy", "trust" ] } }, { "name": "prioritize", "params": { "source_path": "memory.goals" } }, { "name": "choose_goal", "params": { "source_path": "memory.latest_priorities.items", "current_goal_path": "state.current_goal" } }, { "name": "communicate", "params": { "message": "alliance_status_update", "target_agent_id": "scholar_1", "max_recipients": 1 } }, { "name": "cooperate", "params": { "target_agent_id": "guard_1", "goal": "preserve_alliances", "effort": 0.8 } }, { "name": "negotiate", "params": { "topic": "market_and_security_coordination", "proposal": { "exchange": "trust_for_stability", "terms": "share information before enforcement" } } }, { "name": "evaluate", "params": { "category": "diplomacy_strategy", "candidate_options": [ "diplomatic_route", "mediation" ], "known_options_path": "memory.known_options", "adoption_threshold": 0.8 } }, { "name": "update_belief", "params": { "belief_id": "alliances_are_stable", "proposition": "The settlement's alliances are strong enough to absorb pressure.", "evidence_path": "state.trust_signal", "learning_rate": 0.25, "write_belief_path": "memory.latest_trust_belief" } } ], "policy": { "type": "rule_policy", "params": { "selection_strategy": "highest_score", "rules": [ { "behavior_name": "choose_goal", "score_delta": 5.0 }, { "behavior_name": "prioritize", "score_delta": 4.0 }, { "behavior_name": "communicate", "score_delta": 3.0 }, { "behavior_name": "negotiate", "score_delta": 2.5 }, { "behavior_name": "cooperate", "score_delta": 1.8 }, { "behavior_name": "evaluate", "score_delta": 1.0 }, { "behavior_name": "update_belief", "score_delta": 0.8 }, { "behavior_name": "remember", "score_delta": 0.2 } ] } }, "alive": true, "metadata": { "role": "communication_and_diplomacy" } } ], "resources": [ { "id": "grain_store_1", "type": "grain", "amount": 28, "position": [ 5.5, 8.5 ], "regeneration_rate": 0.2, "max_amount": 45, "metadata": { "renewable": true, "civic_layer": "food" } }, { "id": "gold_reserve_1", "type": "gold", "amount": 22, "position": [ 2.0, 1.0 ], "regeneration_rate": 0, "max_amount": 50, "metadata": { "renewable": false, "civic_layer": "treasury" } }, { "id": "craft_materials_1", "type": "craft_materials", "amount": 18, "position": [ 6.5, 5.0 ], "regeneration_rate": 0.1, "max_amount": 35, "metadata": { "renewable": true, "civic_layer": "production" } }, { "id": "public_trust_1", "type": "public_trust", "amount": 16, "position": [ 4.5, 3.5 ], "regeneration_rate": 0.05, "max_amount": 30, "metadata": { "renewable": true, "civic_layer": "social" } }, { "id": "knowledge_archive_1", "type": "knowledge", "amount": 20, "position": [ 4.0, 9.5 ], "regeneration_rate": 0.2, "max_amount": 40, "metadata": { "renewable": true, "civic_layer": "learning" } }, { "id": "trade_demand_1", "type": "trade_demand", "amount": 14, "position": [ 9.5, 8.0 ], "regeneration_rate": 0.15, "max_amount": 30, "metadata": { "renewable": true, "civic_layer": "market" } } ], "events": [ { "id": "winter_pressure", "name": "winter_pressure", "trigger_step": 20, "payload": { "description": "Winter pressure raises the importance of grain, subsidies, and public order.", "signals": { "grain_pressure": 0.3, "public_pressure": 0.2 } }, "enabled": true, "repeat_interval": null, "target_agent_ids": [ "ruler_1", "merchant_1", "guard_1" ], "target_resource_ids": [ "grain_store_1", "public_trust_1" ], "metadata": { "narrative_hint": "Seasonal stress tests governance and market fairness." } }, { "id": "trade_fair", "name": "trade_fair", "trigger_step": 38, "payload": { "description": "A trade fair increases market opportunity and diplomatic coordination.", "signals": { "trade_demand": 0.35, "trust": 0.15 } }, "enabled": true, "repeat_interval": null, "target_agent_ids": [ "merchant_1", "artisan_1", "envoy_1" ], "target_resource_ids": [ "trade_demand_1", "craft_materials_1" ], "metadata": { "narrative_hint": "Economic opportunity rewards coordination." } }, { "id": "border_dispute", "name": "border_dispute", "trigger_step": 52, "payload": { "description": "A dispute pressures the guard and envoy to coordinate enforcement and negotiation.", "signals": { "safety_pressure": 0.25, "trust_pressure": -0.15 } }, "enabled": true, "repeat_interval": null, "target_agent_ids": [ "guard_1", "envoy_1", "ruler_1" ], "target_resource_ids": [ "public_trust_1" ], "metadata": { "narrative_hint": "Conflict pressure tests diplomacy and enforcement." } } ], "metrics": [ { "name": "diversity", "params": { "collection": "agents", "group_by_path": "type" }, "enabled": true, "metadata": { "display": "Agent role diversity" } }, { "name": "entropy", "params": { "collection": "agents", "value_path": "type" }, "enabled": true, "metadata": { "display": "Agent role entropy" } }, { "name": "stability", "params": { "collection": "agents", "group_by_path": "type" }, "enabled": true, "metadata": { "display": "Population stability" } }, { "name": "interestingness", "params": { "collection": "agents", "group_by_path": "type" }, "enabled": true, "metadata": { "display": "Composite interestingness" } } ], "metadata": { "example": true, "domain": "civilization", "created_for": "WorldSmithAI Gradio demo", "design_note": "No civilization-specific runtime classes are required. The world uses generic agents, resources, policies, behaviors, events, and metrics." } }