How we work
Principles.
The day-to-day operating rules that complement the manifesto. Most of them were earned the hard way.
The nine tenets
Ship the smallest useful thing
Every release answers one question. We cut scope until the remaining change is small enough to merge with full attention. The roadmap stays public so users see what's next and what's intentionally not yet.
Public by default
Specs, decisions, and tradeoffs live in the open. We document in the file, not in a wiki. Decisions are recorded in the docs they affect, with their context, so a future reader can rebuild the choice from first principles.
Two-way door first
Reversible changes ship fast. Irreversible ones earn design docs, second reviews, and a runbook. We bias toward options we can walk back from, and we name the few we cannot.
Templates are test fixtures
Every DeesseJS template is built once, smoke-tested, versioned, and reused. If a template needs custom logic that doesn't generalize, it stays a private fork — the registry earns its name by curating what survives contact with production.
The CLI is the contract
Anything users do often lives in the CLI. The web surface explains; the terminal ships. When the two diverge, the terminal wins — that's where time accumulates.
Modular before clever
We split until each file has one job, then we stop. Reusable primitives live in packages/* with their own tests, their own version, their own release cadence. Cross-package coupling is a smell.
Defaults over configuration
We ship defaults that work for 80% of cases. Configuration exists for the 20%; we don't apologize for hiding it under a flag. Every option we expose is a future option someone has to maintain.
Observability is a feature
If we can't see it, we can't ship it. Logs, traces, and metrics land with the feature, not after. Internal tools get the same telemetry treatment as user-facing ones.
Pause before adding
We add things on purpose. The default answer to a new dependency, a new endpoint, a new env var, a new product surface is *not yet*. If the case grows louder after a week of waiting, we revisit. Otherwise, we let it go.