Skip to content

Commit be2f35a

Browse files
Add smart defaults with local overrides to the software design principles
1 parent f45e0a0 commit be2f35a

2 files changed

Lines changed: 24 additions & 2 deletions

File tree

src/docs/Ways-of-Working/Principles/Software-Design.md

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Software design
3-
description: SOLID, extensibility, DRY with judgment, and making change easy before making the change.
3+
description: SOLID, extensibility, smart defaults with local overrides, DRY with judgment, and making change easy before making the change.
44
---
55

66
# Software design
@@ -19,6 +19,28 @@ Extend by adding, not by modifying what already works — the Open/Closed princi
1919

2020
The system stays pluggable: the docs do not change when a new agent runtime is added — only a new integration layer is written. See the [Agentic Development](../Agentic-Development.md) specification for how this plays out in practice.
2121

22+
## Smart defaults, local overrides
23+
24+
The default is the smart, secure choice — what you would pick most of the time, and the safe option when unsure. A system with no configuration is already correct, safe, and useful out of the box. Configuration exists to *deviate* from a good default, never to reach a usable one.
25+
26+
Set the default at the broadest scope, and let each narrower scope override it. The setting closest to the thing it controls wins:
27+
28+
```text
29+
org / ecosystem the widest default — set once, inherited everywhere
30+
└── repository may narrow the default for one codebase
31+
└── directory may narrow it further for one area
32+
└── item the last word — closest to what it configures
33+
```
34+
35+
This shape is chosen for manageability over the life of a system, and it earns two properties at once:
36+
37+
- **Manageable across the wide.** Change the default in one place and everything that has not opted out follows. You set the norm once instead of finding and editing many copies of it.
38+
- **Flexible in the narrow.** Deviating is a small, local edit beside the item that needs it — not a fight with the system, and not a change that ripples outward. The exception lives with the thing it applies to.
39+
40+
Make the wide default easy to set and the local override easy to make. When the two disagree, the more specific one wins — predictably, by its position in the hierarchy, never by special-casing.
41+
42+
This is [Easy and Safe](../../index.md) expressed as design: doing the right thing takes no effort because it is the default, and deviating is deliberate and contained because it is a local override. [Least-privilege](Purpose-and-Direction.md) and [secure by default](../../Coding-Standards/Security.md) are this principle applied to permissions and security; the way [the vision cascades](../../Vision/index.md) is its shape applied to knowledge.
43+
2244
## DRY — with judgment
2345

2446
Don't Repeat Yourself, but **don't extract too early**. Wait until the same non-trivial logic appears in three or more places, or until the duplication is clearly load-bearing. Premature abstraction is more expensive than duplication.

src/docs/Ways-of-Working/Principles/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Principles are grouped by theme; each theme is its own page so an agent can load
1515
| --- | --- |
1616
| [Purpose and direction](Purpose-and-Direction.md) | Why we build, who we build for, and the least-privilege stance under every decision. |
1717
| [AI-first development](AI-First-Development.md) | Agents as first-class participants, determinism before intelligence, and how humans and agents share the work. |
18-
| [Software design](Software-Design.md) | SOLID, extensibility, DRY with judgment, and making change easy before making the change. |
18+
| [Software design](Software-Design.md) | SOLID, extensibility, smart defaults with local overrides, DRY with judgment, and making change easy before making the change. |
1919
| [Engineering practices](Engineering-Practices.md) | Write it down, everything as code, evergreen docs, test-driven development, and shift-left quality. |
2020
| [Planning and delivery](Planning-and-Delivery.md) | Roadmapping, lean delivery, and the loops that keep iteration fast. |
2121
| [References](References.md) | The literature behind these principles. |

0 commit comments

Comments
 (0)