Architecture Over Shortcuts

Rule

When a problem has a quick fix and an architecturally sound fix, choose the sound one. Quick fixes that bypass the design (special-case branches, hardcoded values that should be data, parallel code paths to dodge a refactor) create more debt than they save — they accelerate today’s task by an hour and slow every future task in that area by a fraction of that hour, compounding.

Why

The sound fix lands once and stays correct as the surrounding system evolves. The quick fix lands once and silently corrupts the surrounding system every time the system changes — because the quick fix is the special case the next change forgets about. The math compounds against the quick fix within a few sprint cycles. DPF treats technical debt as a first-class operating cost (the 20-percent refactoring budget); the way to avoid paying it is to not take it on in the first place. When the user asks for the quick fix anyway, surface the trade-off — show what the sound version would cost vs. what the quick version will cost over the next year.

Applies To

In-platform coworkers building features, external coding agents executing on the codebase, and humans setting direction. Symmetric. Applies to code design, schema design, API design, agent topology design, and operational procedures. Does NOT apply when the user explicitly authorizes a quick fix for a known-temporary surface (demo code, proof-of-concept slated for replacement) — but those exceptions are named, dated, and tracked, not silent.

How To Apply

Before implementing, ask: is this the sound fix, or am I dodging a refactor I should be doing? If you’re dodging, name the refactor in the PR description so it lands as a backlog item. When two approaches differ in cost, the sound one is usually clear — it removes a special case, consolidates duplicated logic, replaces a string with an enum, or fits cleanly under an existing abstraction. The quick one is usually clear too — it adds a branch, copies an existing function with one parameter different, or hardcodes a value that should be configurable. Pick the sound one. When the sound one is too large to fit in the current PR, split: do the small piece soundly, file the rest as planned refactor work.

Decision Dimensions

Examples

Regulatory & interoperability boundaries

When the sound path is a healthcare / regulated substrate, architecture-over-shortcuts includes boundary enforcement as architecture, not as a late bolt-on (BI-IMP-6DF60418):

  1. Payload integrity — external clinical interchange (e.g. FHIR R4 resources) must validate against the declared profile and carry integrity hashing / signature where the jurisdiction requires non-repudiation; do not ship a “parse and store free-form JSON” shortcut past the validator.
  2. Residency gates — HIPAA / GDPR / provincial residency constraints are routing and storage architecture. Cross-border or cloud-region placement is a design decision with an explicit gate, not an env default left for ops to discover.
  3. Immutable provenance — care-critical writes keep an append-only trail (who / when / what changed) co-designed with the primary model; do not add provenance as a parallel table after the feature ships.

Canonical patterns live with the healthcare program specs and validators; this principle forbids skipping them for speed. Future healthcare substrates inherit this baseline.

Sources

(Rendered from the sources: frontmatter by WikiSourceCitations — do not duplicate citation prose here.)