Nishant — architecture principles v0.1
These are preferred heuristics, not immutable laws. Explain exceptions in an ADR.
- Start with outcomes and responsibility. Define the business capability, owner and intended result before picking a technology.
- Make boundaries explicit. Name trust, ownership, state, tenancy and deployment boundaries.
- Keep core invariants deterministic. Models can interpret and propose; validated domain logic owns committed business state.
- Expose capabilities, not database tables. Give consumers meaningful versioned contracts.
- Design for failure before scale. Idempotency, timeouts, recovery, compensation and traceability belong in the first design.
- Govern where work executes. Declared policy is not a substitute for enforced permissions at a side effect.
- Separate shared technology from shared semantics. Reuse infrastructure when beneficial, but do not silently conflate data contracts or SLOs.
- AI accelerates change; engineering proves correctness. Generation is not independent verification.
- Measure outcomes rather than activity. Observe task quality, business impact, latency, risk and unit economics.
- Architecture is a living set of decisions. Version diagrams, supersede decisions explicitly and revisit when assumptions change.