# Architecture principles whose severity is discouraged

> 88 records

This index as JSON: https://banes-lab.com/json/api/facets/architecture/severity/discouraged

## Entries

- [Big Ball of Mud](https://banes-lab.com/records/architecture/big-ball-of-mud.md): A defect in which a system has no discernible boundaries, so any part can depend on and change any other.
- [God Object](https://banes-lab.com/records/architecture/god-object.md): A defect in which one object accumulates unrelated responsibilities and becomes the default place for every change.
- [Concrete Coupling](https://banes-lab.com/records/architecture/concrete-coupling.md): A defect in which high-level policy depends directly on concrete implementations instead of on abstractions.
- [Schema Drift](https://banes-lab.com/records/architecture/schema-drift.md): A defect in which the producers, consumers and stores of one payload evolve its shape independently until its meaning diverges.
- [Implicit Contract](https://banes-lab.com/records/architecture/implicit-contract.md): A defect in which a boundary's assumptions, including the shape and meaning of the data it passes, live in behavior, naming or ordering rather than in a declared contract.
- [Hardcoded Configuration](https://banes-lab.com/records/architecture/hardcoded-configuration.md): A defect in which environment, credential or policy values are written into code instead of being supplied as configuration.
- [Shared Mutable State](https://banes-lab.com/records/architecture/shared-mutable-state.md): A defect in which writable state is shared across modules with no owner and no synchronization.
- [Boundary Leakage](https://banes-lab.com/records/architecture/boundary-leakage.md): A defect in which internal, persistence or vendor types cross an architectural boundary.
- [Manual-Only Governance](https://banes-lab.com/records/architecture/manual-only-governance.md): A defect in which architecture rules or security policies exist only in documents or in reviewers' memory, with no executable check, so they drift from what the system does.
- [Opaque Runtime Behavior](https://banes-lab.com/records/architecture/opaque-runtime-behavior.md): A defect in which runtime behavior emerges from hidden reflection, registration or binding that nothing reports, so the runtime's structure and state cannot be inspected.
- [Unowned Risk](https://banes-lab.com/records/architecture/unowned-risk.md): A defect in which a risk is never identified, or is identified and has no owner, severity, mitigation or review date.
- [Unobservable Failure](https://banes-lab.com/records/architecture/unobservable-failure.md): A defect in which an operation can fail without leaving a log, metric, trace or error contract.
- [Unversioned Breaking Change](https://banes-lab.com/records/architecture/unversioned-breaking-change.md): A defect in which a public contract changes incompatibly without a version, a deprecation path or a compatibility test.
- [Distributed Monolith](https://banes-lab.com/records/architecture/distributed-monolith.md): A defect in which services are deployed separately but still share data, transactions and release cycles.
- [Shotgun Surgery](https://banes-lab.com/records/architecture/shotgun-surgery.md): A defect in which one responsibility is scattered so that a single change needs edits in many files.
- [Divergent Change](https://banes-lab.com/records/architecture/divergent-change.md): A defect in which one module changes for many unrelated reasons.
- [Feature Envy](https://banes-lab.com/records/architecture/feature-envy.md): A defect in which one module mostly works on another module's data instead of its own.
- [Inappropriate Intimacy](https://banes-lab.com/records/architecture/inappropriate-intimacy.md): A defect in which modules depend on each other's internal structure or private state.
- [Message Chain](https://banes-lab.com/records/architecture/message-chain.md): A defect in which a client navigates a chain of objects to reach the behavior it needs.
- [Middle Man](https://banes-lab.com/records/architecture/middle-man.md): A defect in which a module delegates almost every call without adding behavior of its own.
- [Data Clumps](https://banes-lab.com/records/architecture/data-clumps.md): A defect in which the same group of values travels together without being named as one type.
- [Primitive Obsession](https://banes-lab.com/records/architecture/primitive-obsession.md): A defect in which domain concepts are held in raw primitives with no type or validation.
- [Stringly Typed Programming](https://banes-lab.com/records/architecture/stringly-typed-programming.md): A defect in which states, types or permissions are encoded as unchecked strings.
- [Boolean Trap](https://banes-lab.com/records/architecture/boolean-trap.md): A defect in which boolean parameters hide the intent of a call site.
- [Long Parameter List](https://banes-lab.com/records/architecture/long-parameter-list.md): A defect in which a signature grows so many parameters that a caller can no longer read or validate it.
- [Magic Value](https://banes-lab.com/records/architecture/magic-value.md): A defect in which policy, thresholds or states are written as unexplained literals.
- [Speculative Generality](https://banes-lab.com/records/architecture/speculative-generality.md): A defect in which abstractions are built for variation that has no evidence of arriving.
- [Premature Abstraction](https://banes-lab.com/records/architecture/premature-abstraction.md): A defect in which a shared abstraction is extracted before its variation is understood, so it fits no caller well.
- [Over-Abstraction](https://banes-lab.com/records/architecture/over-abstraction.md): A defect in which layers, interfaces and factories outnumber the variation they serve.
- [Golden Hammer](https://banes-lab.com/records/architecture/golden-hammer.md): A defect in which one familiar solution is applied to problems regardless of fit.
- [Pattern Cargo Cult](https://banes-lab.com/records/architecture/pattern-cargo-cult.md): A defect in which a pattern's name and shape are copied without the forces, contracts and checks that make it work.
- [Lava Flow](https://banes-lab.com/records/architecture/lava-flow.md): A defect in which obsolete or half-migrated code survives because nothing records whether it is still needed.
- [Zombie Code](https://banes-lab.com/records/architecture/zombie-code.md): A defect in which unreachable or disabled code stays in the system and misleads the developer and the model.
- [Temporal Coupling](https://banes-lab.com/records/architecture/temporal-coupling.md): A defect in which operations must be called in an undocumented order to work.
- [Hidden Side Effect](https://banes-lab.com/records/architecture/hidden-side-effect.md): A defect in which an operation that looks like a query mutates state or performs I/O that its name and signature do not show.
- [Action at a Distance](https://banes-lab.com/records/architecture/action-at-a-distance.md): A defect in which one part of the system changes behavior elsewhere through globals, patches or implicit listeners.
- [Ambient Context](https://banes-lab.com/records/architecture/ambient-context.md): A defect in which request, tenant or user state is read from implicit global context.
- [Inconsistent Error Model](https://banes-lab.com/records/architecture/inconsistent-error-model.md): A defect in which one class of failure is reported through several incompatible shapes.
- [Exception Control Flow](https://banes-lab.com/records/architecture/exception-control-flow.md): A defect in which exceptions carry expected branching or normal absence.
- [Null Semantics Drift](https://banes-lab.com/records/architecture/null-semantics-drift.md): A defect in which null, empty, zero and missing are used interchangeably for one field.
- [Anemic Domain Model](https://banes-lab.com/records/architecture/anemic-domain-model.md): A defect in which domain objects hold data only, while their rules live in services and handlers.
- [Transaction Script Sprawl](https://banes-lab.com/records/architecture/transaction-script-sprawl.md): A defect in which business processes are procedural scripts that coordinate validation, persistence and decisions directly.
- [Fat Controller](https://banes-lab.com/records/architecture/fat-controller.md): A defect in which controllers hold validation, business rules, persistence and response formatting.
- [Repository Dump](https://banes-lab.com/records/architecture/repository-dump.md): A defect in which a repository accumulates business queries, policy and orchestration until it is a second service layer.
- [Utility Dump](https://banes-lab.com/records/architecture/utility-dump.md): A defect in which unrelated helpers accumulate in a generic utility module that no one owns.
- [Framework Leakage](https://banes-lab.com/records/architecture/framework-leakage.md): A defect in which framework or infrastructure types, annotations or lifecycles enter core domain logic, so business rules depend on technical specifics.
- [Vendor Lock-In Leakage](https://banes-lab.com/records/architecture/vendor-lock-in-leakage.md): A defect in which an external system's or a vendor's APIs, errors and models spread through application and domain code, so their changes ripple across it.
- [Circular Dependency](https://banes-lab.com/records/architecture/circular-dependency.md): A defect in which modules depend on each other, directly or through others, so none can change alone.
- [Cyclic Deployment Dependency](https://banes-lab.com/records/architecture/cyclic-deployment-dependency.md): A defect in which services must deploy in lockstep because each depends on the other's current version.
- [Synchronous Chain Trap](https://banes-lab.com/records/architecture/synchronous-chain-trap.md): A defect in which one request depends on a deep chain of blocking synchronous remote calls, so one slow link stalls the whole request.
- [Chatty Interface](https://banes-lab.com/records/architecture/chatty-interface.md): A defect in which one operation needs many small remote calls.
- [N Plus One Query](https://banes-lab.com/records/architecture/n-plus-one-query.md): A defect in which a collection is fetched and then one further query is issued per item.
- [Cache Poisoning by Design](https://banes-lab.com/records/architecture/cache-poisoning-by-design.md): A defect in which a cache key omits an input the entry depends on, so one request is served another's result.
- [Retry Storm](https://banes-lab.com/records/architecture/retry-storm.md): A defect in which clients retry a failing dependency so aggressively that the retries prolong the failure.
- [Timeout Omission](https://banes-lab.com/records/architecture/timeout-omission.md): A defect in which calls to external systems carry no timeout, cancellation or deadline, so a caller can wait for ever on work that never completes.
- [Missing Backpressure](https://banes-lab.com/records/architecture/missing-backpressure.md): A defect in which a system accepts work faster than it can process it, with no limit or shedding.
- [Silent Data Corruption](https://banes-lab.com/records/architecture/silent-data-corruption.md): A defect in which invalid data is accepted, transformed or stored without any check noticing.
- [Lost Update](https://banes-lab.com/records/architecture/lost-update.md): A defect in which concurrent writers overwrite each other's changes without a version check.
- [Dual Write](https://banes-lab.com/records/architecture/dual-write.md): A defect in which related state is written to two systems with no atomicity or compensation.
- [Read-Your-Writes Violation](https://banes-lab.com/records/architecture/read-your-writes-violation.md): A defect in which a writer reads back a stale copy of what it has just written.
- [Security Theater](https://banes-lab.com/records/architecture/security-theater.md): A defect in which visible security controls leave the real threat unreduced, or can be bypassed.
- [Authorization Scattering](https://banes-lab.com/records/architecture/authorization-scattering.md): A defect in which authorization checks are spread across layers with no central policy.
- [Secret Sprawl](https://banes-lab.com/records/architecture/secret-sprawl.md): A defect in which credentials and keys are stored across code, logs and configuration.
- [Personal Data Oversharing](https://banes-lab.com/records/architecture/personal-data-oversharing.md): A defect in which more personal data is collected, kept, logged or exposed than the declared purpose needs.
- [Observability Noise](https://banes-lab.com/records/architecture/observability-noise.md): A defect in which logs, metrics and alerts are too many and too low in signal to act on.
- [Log-as-Control-Flow](https://banes-lab.com/records/architecture/log-as-control-flow.md): A defect in which a failure is logged as though logging handled it, and execution continues.
- [Manual Runbook Dependency](https://banes-lab.com/records/architecture/manual-runbook-dependency.md): A defect in which repeatable operational steps, such as detecting a failure and recovering from it, are performed by hand during incidents and deploys, so recovery waits on a person.
- [Big-Bang Release](https://banes-lab.com/records/architecture/big-bang-release.md): A defect in which a large, irreversible change reaches every user at once, with no staged rollout.
- [Irreversible Migration](https://banes-lab.com/records/architecture/irreversible-migration.md): A defect in which a schema or data change can neither run beside the old version nor be rolled back.
- [Big-Upfront Frozen Architecture](https://banes-lab.com/records/architecture/big-upfront-frozen-architecture.md): A defect in which major architectural decisions are fixed before the forces they answer are known.
- [Architecture Astronaut](https://banes-lab.com/records/architecture/architecture-astronaut.md): A defect in which abstract frameworks, meta-models and architectural structure are built ahead of the concrete needs they should serve.
- [Feature-Only Design](https://banes-lab.com/records/architecture/feature-only-design.md): A defect in which architecture serves immediate features while its quality attributes go unaddressed.
- [Test Pyramid Inversion](https://banes-lab.com/records/architecture/test-pyramid-inversion.md): A defect in which a test suite relies mainly on slow end-to-end tests, with few unit and contract tests.
- [Mock Mirage](https://banes-lab.com/records/architecture/mock-mirage.md): A defect in which tests assert calls on mocks rather than observable behavior or contracts.
- [Flaky Test Normalization](https://banes-lab.com/records/architecture/flaky-test-normalization.md): A defect in which intermittent test failures are accepted and rerun until they pass.
- [Prompt Sprawl](https://banes-lab.com/records/architecture/prompt-sprawl.md): A defect in which prompts, model parameters and output schemas are scattered through code without versions or evaluation.
- [Ungrounded Content](https://banes-lab.com/records/architecture/ungrounded-content.md): A defect in which the model produces answers or decisions without retrieved evidence or disclosed uncertainty.
- [Model Version Ambiguity](https://banes-lab.com/records/architecture/model-version-ambiguity.md): A defect in which models, prompts or indexes are used without recording their version and configuration.
- [Runtime Code Generation](https://banes-lab.com/records/architecture/runtime-code-generation.md): A mechanism that builds executable code while the program runs, from a specification such as a field mapping.
- [Singleton Pattern](https://banes-lab.com/records/architecture/singleton-pattern.md): A design pattern that restricts a class to one instance, reached through a global access point.
- [Service Locator Pattern](https://banes-lab.com/records/architecture/service-locator-pattern.md): A design pattern in which code fetches its dependencies from a global registry at the point of use.
- [Contradicted Invariant](https://banes-lab.com/records/architecture/contradicted-invariant.md): A defect in which one surface states the opposite of an invariant another relies on, so every mechanism faithfully implementing either statement stays green while the invariant is violated.
- [Written Status Marker](https://banes-lab.com/records/architecture/written-status-marker.md): A defect in which a party writes a record's state as a marker instead of deriving it from the record's edges, so the marker goes stale and asserts a state that no longer holds.
- [Invocation-Keyed Report](https://banes-lab.com/records/architecture/invocation-keyed-report.md): A defect in which a run writes its result under a name derived from how it was invoked, beside the shared aggregate, so documents accumulate that each describe a moment and none the state.
- [Narrowed Aggregate](https://banes-lab.com/records/architecture/narrowed-aggregate.md): A defect in which a run over a narrowed scope overwrites the whole-scope aggregate, so the aggregate reports a smaller population as though it were the whole.
- [Cyclic Tiebreak](https://banes-lab.com/records/architecture/cyclic-tiebreak.md): A defect in which a tiebreak picks a source among copies none of which is distinguished, turning a correct refusal into a direction no copy supports.
- [Destructive Closure](https://banes-lab.com/records/architecture/destructive-closure.md): A defect in which closing a converged venue deletes it instead of moving it to the archive, keeping the outcome and destroying the argument it came from.
- [Hand-Kept Index](https://banes-lab.com/records/architecture/hand-kept-index.md): A defect in which an index is written by hand beside what it indexes, so it drifts silently because nothing compares the two.
