Engine Refactor: Trait-Based Species Architecture with Allometric Scaling#45
Merged
biosynthart merged 3 commits intoMay 26, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Engine Refactor: Trait-Based Species Architecture with Allometric Scaling
Summary
Replaces per-species hardcoded constants in the engine with a trait-based derivation layer. Every species is now defined as a functional trait vector; all engine parameters (metabolism, speed, sensory
range, flow rates, guard thresholds) are derived from body mass and traits using allometric scaling laws.
New Modules
DerivedParams.
is O(1) dict lookups only.
diet compatibility); compiler evaluates all pairs upfront.
Engine Changes
Backward Compatibility
Worlds without species_definitions in JSON fall back to LegacyParams, preserving original per-entity metadata behavior. Existing worlds work unchanged.
World Format
New optional species_definitions.json defines species as trait vectors:
{ "species_id": "monarch", "body_mass_kg": 0.0005, "thermoregulation": "ectotherm", "diet_type": "nectarivore", "reproductive_strategy": "r_selected", ... }Testing
66 unit tests covering: allometric derivation functions (mass scaling, ectotherm/endotherm), interaction template matching (herbivory/predation/pollination/decomposition), trait compiler integration,
and JSON parsing. All pass.