Architecture first
Every significant architectural change should begin with documentation. Use this decision process:- Is this a bug fix? Implement the fix with tests.
- Is this a new feature? Create an RFC describing the proposal.
- Does the feature change architectural behavior? Create or update an Architecture Decision Record (ADR).
- Does the change modify a normative platform contract? Update the relevant specification in
docs/.
Core principles
Deterministic execution
Identical inputs must always produce identical decisions.
Immutable domain model
No trust-chain artifact supports an update operation.
Independent verification
Verifying a record shouldn’t require trusting the runtime that produced it.
Append-only evidence
Corrections are new artifacts, never edits to history.
Cryptographic agility
Algorithms are swappable implementation details, not fixed domain concepts.
Separation of concerns
Each package under
packages/ has one responsibility.This documentation surfaces several places where the current implementation doesn’t yet fully live up to these principles — see REST API → Authentication, REST API → Error Model, Packages → replay, and Packages → verification for concrete examples. Contributions that close those gaps are exactly the kind this project wants; contributions that quietly paper over them without an ADR are not.
Testing requirements
All changes should include appropriate automated tests:- Unit tests for new domain behavior.
- Regression tests for bug fixes.
- Conformance tests when platform contracts are affected.
Coding standards
- Use TypeScript strict mode.
- Prefer immutable objects.
- Avoid hidden side effects.
- Keep classes focused on a single responsibility.
- Document public APIs.
Pull requests
Pull requests should include:- A clear description.
- A linked issue or RFC, if applicable.
- Updated documentation when required.
- Passing build and test results.
Where documentation lives
| Content | Location |
|---|---|
| Normative specifications | docs/ |
| Architecture decisions | docs/adr/ |
| Future proposals | docs/rfcs/ |
| Implementation guides | docs/guides/ |
Philosophy
Parmana is designed to establish trust between authority and execution. Every contribution should strengthen that goal.Related
Architecture Overview
The principles above, in context.
Security Model
The guarantees these principles support.