Murmuration is built on a biological trait architecture. Contributions should respect that foundation.
- Bug fixes — if something doesn't work as described, fix it
- Performance improvements — the engine should run smoothly at 300 agents
- New emergence metrics — if the extractor should surface something it currently doesn't, propose it
- Visualization improvements — better rendering, connection line algorithms, canvas performance
- Documentation — clearer explanations, better examples, translations
- Framework dependencies — Murmuration is zero-dependency by design. No React, no D3, no lodash. If it can't be done in vanilla JS, it doesn't belong here.
- Build tools — no webpack, no vite, no npm scripts. The product ships as files you can open.
- Changes to core trait mechanics — the trust battery charging rules, grief state machine, seppuku criteria, dishonor-to-sentinel flow, and collective memory weighting are architectural decisions, not bugs. If you think a mechanic should change, open an issue to discuss it first.
- AI/LLM integration into the core engine — the engine is rule-based by design. LLM integration belongs at the edges (input processing, output interpretation), not inside the simulation loop.
- Fork the repository
- Create a branch with a descriptive name
- Make your changes
- Open a pull request with a clear description of what changed and why
If you want to propose a new biological trait for the engine:
- Open an issue titled
[Trait Proposal] Name — Biological Source - Describe the biological mechanism you're modeling
- Explain what computational behavior it maps to
- Show how it interacts with existing traits
The trait system has a specific design philosophy — biology is the blueprint, not the metaphor. Proposals that treat biological mechanisms as loose inspiration rather than engineering specifications will be redirected.
- No comments unless the WHY is non-obvious
- Variable names that say what they are
- No abstractions unless they earn their existence through reuse
- If it works in one function, don't split it into three