@agent-e/core 1.1.2 → 1.2.0

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.
package/README.md CHANGED
@@ -17,7 +17,7 @@ const agent = new AgentE({
17
17
  adapter: {
18
18
  getState: () => ({
19
19
  tick: currentTick,
20
- agentBalances: { /* id → gold */ },
20
+ agentBalances: { /* id → balance */ },
21
21
  agentRoles: { /* id → role */ },
22
22
  agentInventories: { /* id → { resource → qty } */ },
23
23
  marketPrices: { /* resource → price */ },
@@ -58,15 +58,29 @@ Organized across 15 categories: supply chain, incentives, population, currency f
58
58
 
59
59
  Each principle has a `check(metrics, thresholds)` function that returns either `{ violated: false }` or a violation with severity, evidence, suggested action, confidence, and estimated lag.
60
60
 
61
+ ## Tick Configuration
62
+
63
+ ```typescript
64
+ const agent = new AgentE({
65
+ adapter: yourAdapter,
66
+ tickConfig: {
67
+ duration: 5, // one tick = 5 seconds
68
+ unit: 'second',
69
+ mediumWindow: 12, // medium metrics = every 12 ticks (60s)
70
+ coarseWindow: 120, // coarse metrics = every 120 ticks (10min)
71
+ },
72
+ });
73
+ ```
74
+
61
75
  ## Developer API
62
76
 
63
77
  ```typescript
64
78
  // Lock a parameter from automated adjustment
65
- agent.lock('craftingCost');
66
- agent.unlock('craftingCost');
79
+ agent.lock('productionCost');
80
+ agent.unlock('productionCost');
67
81
 
68
82
  // Constrain a parameter to a range
69
- agent.constrain('auctionFee', { min: 0.01, max: 0.50 });
83
+ agent.constrain('transactionFee', { min: 0.01, max: 0.50 });
70
84
 
71
85
  // Add a custom principle
72
86
  agent.addPrinciple(myPrinciple);
@@ -96,21 +110,21 @@ import type { Principle } from '@agent-e/core';
96
110
 
97
111
  const myRule: Principle = {
98
112
  id: 'MY_01',
99
- name: 'Healer Population Floor',
113
+ name: 'Support Role Population Floor',
100
114
  category: 'population',
101
- description: 'Healer share below 5% is a crisis',
115
+ description: 'Support role share below 5% is a crisis',
102
116
  check(metrics, thresholds) {
103
- const share = metrics.roleShares['Healer'] ?? 0;
117
+ const share = metrics.roleShares['support'] ?? 0;
104
118
  if (share < 0.05) {
105
119
  return {
106
120
  violated: true,
107
121
  severity: 8,
108
122
  evidence: { share },
109
123
  suggestedAction: {
110
- parameter: 'healerReward',
124
+ parameter: 'supportReward',
111
125
  direction: 'increase',
112
126
  magnitude: 0.25,
113
- reasoning: 'Healer population critically low.',
127
+ reasoning: 'Support role population critically low.',
114
128
  },
115
129
  confidence: 0.90,
116
130
  estimatedLag: 10,
package/dist/index.d.mts CHANGED
@@ -184,8 +184,8 @@ interface Thresholds {
184
184
  replacementRateMultiplier: number;
185
185
  maxAdjustmentPercent: number;
186
186
  cooldownTicks: number;
187
- arenaWinRate: number;
188
- arenaHouseCut: number;
187
+ poolWinRate: number;
188
+ poolHouseCut: number;
189
189
  roleSwitchFrictionMax: number;
190
190
  poolCapPercent: number;
191
191
  poolDecayRate: number;
@@ -204,12 +204,23 @@ interface Thresholds {
204
204
  giftTradeFilterRatio: number;
205
205
  disposalTradeWeightDiscount: number;
206
206
  }
207
+ interface TickConfig {
208
+ /** How many real-world units one tick represents. Default: 1 */
209
+ duration: number;
210
+ /** The unit of time. Default: 'tick' (abstract). Examples: 'second', 'minute', 'block', 'frame' */
211
+ unit: string;
212
+ /** Medium-resolution metric window in ticks. Default: 10 */
213
+ mediumWindow?: number;
214
+ /** Coarse-resolution metric window in ticks. Default: 100 */
215
+ coarseWindow?: number;
216
+ }
207
217
  type AgentEMode = 'autonomous' | 'advisor';
208
218
  interface AgentEConfig {
209
- adapter: EconomyAdapter | 'game' | 'defi' | 'marketplace';
219
+ adapter: EconomyAdapter;
210
220
  mode?: AgentEMode;
211
221
  dominantRoles?: string[];
212
222
  idealDistribution?: Record<string, number>;
223
+ tickConfig?: Partial<TickConfig>;
213
224
  gracePeriod?: number;
214
225
  checkInterval?: number;
215
226
  maxAdjustmentPercent?: number;
@@ -219,7 +230,7 @@ interface AgentEConfig {
219
230
  onAlert?: (diagnosis: Diagnosis) => void;
220
231
  onRollback?: (plan: ActionPlan, reason: string) => void;
221
232
  }
222
- type PersonaType = 'Gamer' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
233
+ type PersonaType = 'Active' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
223
234
  interface PersonaProfile {
224
235
  type: PersonaType;
225
236
  share: number;
@@ -278,14 +289,17 @@ declare class DecisionLog {
278
289
  declare class MetricStore {
279
290
  /** Fine: last 200 ticks, one entry per tick */
280
291
  private fine;
281
- /** Medium: last 200 windows of 10 ticks */
292
+ /** Medium: last 200 windows */
282
293
  private medium;
283
- /** Coarse: last 200 epochs of 100 ticks */
294
+ /** Coarse: last 200 epochs */
284
295
  private coarse;
296
+ private mediumWindow;
297
+ private coarseWindow;
285
298
  private ticksSinceLastMedium;
286
299
  private ticksSinceLastCoarse;
287
300
  private mediumAccumulator;
288
301
  private coarseAccumulator;
302
+ constructor(tickConfig?: Partial<TickConfig>);
289
303
  record(metrics: EconomyMetrics): void;
290
304
  latest(resolution?: MetricResolution): EconomyMetrics;
291
305
  query(q: MetricQuery): MetricQueryResult;
@@ -354,6 +368,8 @@ declare class Observer {
354
368
  private previousPrices;
355
369
  private customMetricFns;
356
370
  private anchorBaseline;
371
+ private tickConfig;
372
+ constructor(tickConfig?: Partial<TickConfig>);
357
373
  registerCustomMetric(name: string, fn: (state: EconomyState) => number): void;
358
374
  compute(state: EconomyState, recentEvents: EconomicEvent[]): EconomyMetrics;
359
375
  }
@@ -530,4 +546,4 @@ declare const LIVEOPS_PRINCIPLES: Principle[];
530
546
  /** All 60 built-in principles in priority order (supply chain → liveops) */
531
547
  declare const ALL_PRINCIPLES: Principle[];
532
548
 
533
- export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, emptyMetrics };
549
+ export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, type TickConfig, emptyMetrics };
package/dist/index.d.ts CHANGED
@@ -184,8 +184,8 @@ interface Thresholds {
184
184
  replacementRateMultiplier: number;
185
185
  maxAdjustmentPercent: number;
186
186
  cooldownTicks: number;
187
- arenaWinRate: number;
188
- arenaHouseCut: number;
187
+ poolWinRate: number;
188
+ poolHouseCut: number;
189
189
  roleSwitchFrictionMax: number;
190
190
  poolCapPercent: number;
191
191
  poolDecayRate: number;
@@ -204,12 +204,23 @@ interface Thresholds {
204
204
  giftTradeFilterRatio: number;
205
205
  disposalTradeWeightDiscount: number;
206
206
  }
207
+ interface TickConfig {
208
+ /** How many real-world units one tick represents. Default: 1 */
209
+ duration: number;
210
+ /** The unit of time. Default: 'tick' (abstract). Examples: 'second', 'minute', 'block', 'frame' */
211
+ unit: string;
212
+ /** Medium-resolution metric window in ticks. Default: 10 */
213
+ mediumWindow?: number;
214
+ /** Coarse-resolution metric window in ticks. Default: 100 */
215
+ coarseWindow?: number;
216
+ }
207
217
  type AgentEMode = 'autonomous' | 'advisor';
208
218
  interface AgentEConfig {
209
- adapter: EconomyAdapter | 'game' | 'defi' | 'marketplace';
219
+ adapter: EconomyAdapter;
210
220
  mode?: AgentEMode;
211
221
  dominantRoles?: string[];
212
222
  idealDistribution?: Record<string, number>;
223
+ tickConfig?: Partial<TickConfig>;
213
224
  gracePeriod?: number;
214
225
  checkInterval?: number;
215
226
  maxAdjustmentPercent?: number;
@@ -219,7 +230,7 @@ interface AgentEConfig {
219
230
  onAlert?: (diagnosis: Diagnosis) => void;
220
231
  onRollback?: (plan: ActionPlan, reason: string) => void;
221
232
  }
222
- type PersonaType = 'Gamer' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
233
+ type PersonaType = 'Active' | 'Trader' | 'Collector' | 'Speculator' | 'Earner' | 'Builder' | 'Social' | 'Whale' | 'Influencer';
223
234
  interface PersonaProfile {
224
235
  type: PersonaType;
225
236
  share: number;
@@ -278,14 +289,17 @@ declare class DecisionLog {
278
289
  declare class MetricStore {
279
290
  /** Fine: last 200 ticks, one entry per tick */
280
291
  private fine;
281
- /** Medium: last 200 windows of 10 ticks */
292
+ /** Medium: last 200 windows */
282
293
  private medium;
283
- /** Coarse: last 200 epochs of 100 ticks */
294
+ /** Coarse: last 200 epochs */
284
295
  private coarse;
296
+ private mediumWindow;
297
+ private coarseWindow;
285
298
  private ticksSinceLastMedium;
286
299
  private ticksSinceLastCoarse;
287
300
  private mediumAccumulator;
288
301
  private coarseAccumulator;
302
+ constructor(tickConfig?: Partial<TickConfig>);
289
303
  record(metrics: EconomyMetrics): void;
290
304
  latest(resolution?: MetricResolution): EconomyMetrics;
291
305
  query(q: MetricQuery): MetricQueryResult;
@@ -354,6 +368,8 @@ declare class Observer {
354
368
  private previousPrices;
355
369
  private customMetricFns;
356
370
  private anchorBaseline;
371
+ private tickConfig;
372
+ constructor(tickConfig?: Partial<TickConfig>);
357
373
  registerCustomMetric(name: string, fn: (state: EconomyState) => number): void;
358
374
  compute(state: EconomyState, recentEvents: EconomicEvent[]): EconomyMetrics;
359
375
  }
@@ -530,4 +546,4 @@ declare const LIVEOPS_PRINCIPLES: Principle[];
530
546
  /** All 60 built-in principles in priority order (supply chain → liveops) */
531
547
  declare const ALL_PRINCIPLES: Principle[];
532
548
 
533
- export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, emptyMetrics };
549
+ export { ALL_PRINCIPLES, type ActionPlan, AgentE, type AgentEConfig, type AgentEMode, BOOTSTRAP_PRINCIPLES, CURRENCY_FLOW_PRINCIPLES, DEFAULT_THRESHOLDS, type DecisionEntry, DecisionLog, type DecisionResult, Diagnoser, type Diagnosis, type EconomicEvent, type EconomicEventType, type EconomyAdapter, type EconomyMetrics, type EconomyState, Executor, FEEDBACK_LOOP_PRINCIPLES, INCENTIVE_PRINCIPLES, LIVEOPS_PRINCIPLES, MARKET_DYNAMICS_PRINCIPLES, MEASUREMENT_PRINCIPLES, type MetricQuery, type MetricQueryResult, type MetricResolution, MetricStore, OPEN_ECONOMY_PRINCIPLES, Observer, P10_SpawnWeightingUsesInversePopulation, P11_TwoTierPressure, P12_OnePrimaryFaucet, P13_PotsAreZeroSumAndSelfRegulate, P14_TrackActualInjection, P15_PoolsNeedCapAndDecay, P16_WithdrawalPenaltyScales, P17_GracePeriodBeforeIntervention, P18_FirstProducerNeedsStartingInventory, P19_StartingSupplyExceedsDemand, P1_ProductionMatchesConsumption, P20_DecayPreventsAccumulation, P21_PriceFromGlobalSupply, P22_MarketAwarenessPreventsSurplus, P23_ProfitabilityFactorsFeasibility, P24_BlockedAgentsDecayFaster, P25_CorrectLeversForCorrectProblems, P26_ContinuousPressureBeatsThresholdCuts, P27_AdjustmentsNeedCooldowns, P28_StructuralDominanceIsNotPathological, P29_PinchPoint, P2_ClosedLoopsNeedDirectHandoff, P30_MovingPinchPoint, P31_AnchorValueTracking, P32_VelocityAboveSupply, P33_FairNotEqual, P34_ExtractionRatio, P35_DestructionCreatesValue, P36_MechanicFrictionDetector, P37_LatecommerProblem, P38_CommunicationPreventsRevolt, P39_TheLagPrinciple, P3_BootstrapCapitalCoversFirstTransaction, P40_ReplacementRate, P41_MultiResolutionMonitoring, P42_TheMedianPrinciple, P43_SimulationMinimum, P44_ComplexityBudget, P45_TimeBudget, P46_PersonaDiversity, P47_SmokeTest, P48_CurrencyInsulation, P49_IdleAssetTax, P4_MaterialsFlowFasterThanCooldown, P50_PayPowerRatio, P51_SharkTooth, P52_EndowmentEffect, P53_EventCompletionRate, P54_LiveOpsCadence, P55_ArbitrageThermometer, P56_ContentDropShock, P57_CombinatorialPriceSpace, P58_NoNaturalNumeraire, P59_GiftEconomyNoise, P5_ProfitabilityIsCompetitive, P60_SurplusDisposalAsymmetry, P6_CrowdingMultiplierOnAllRoles, P7_NonSpecialistsSubsidiseSpecialists, P8_RegulatorCannotFightDesign, P9_RoleSwitchingNeedsFriction, PERSONA_HEALTHY_RANGES, PLAYER_EXPERIENCE_PRINCIPLES, POPULATION_PRINCIPLES, type PersonaProfile, PersonaTracker, type PersonaType, type PinchPointStatus, Planner, type Principle, type PrincipleCategory, type PrincipleOk, type PrincipleResult, type PrincipleViolation, REGULATOR_PRINCIPLES, RESOURCE_MGMT_PRINCIPLES, type RollbackCondition, STATISTICAL_PRINCIPLES, SUPPLY_CHAIN_PRINCIPLES, SYSTEM_DYNAMICS_PRINCIPLES, type SimulationOutcome, type SimulationResult, Simulator, type SuggestedAction, type Thresholds, type TickConfig, emptyMetrics };