Skip to content

Commit 7a87e7e

Browse files
πŸ“– [Docs]: Software design principles now cover smart defaults and local overrides (#14)
The software design principles now include **smart defaults, local overrides** β€” how to set a safe, sensible default once at the broadest scope and let it be overridden closer to the item it controls. Readers and agents get a single principle to point at when deciding where a setting belongs and how far a default should reach. ## New: "Smart defaults, local overrides" principle Added under Software design, beside "Extensible by default". It states: - The default is the smart, secure choice; a zero-config system is already correct and safe. Configuration exists to *deviate* from a good default, not to reach a usable one. - Defaults are set at the broadest scope and overridden closer to the item β€” the most specific setting wins, predictably by position in the hierarchy, never by special-casing. - The shape is chosen for long-term manageability: change the wide default once and everything that has not opted out follows; deviating is a small, local edit beside the item that needs it. It consolidates ideas already in the docs rather than restating them β€” cross-linking the Easy/Safe value, least-privilege, secure by default, and the vision cascade. ## Technical Details - `src/docs/Ways-of-Working/Principles/Software-Design.md` β€” new `## Smart defaults, local overrides` section plus an updated front-matter `description`. - `src/docs/Ways-of-Working/Principles/index.md` β€” Software design row updated to match the new description, keeping the auto-generated index in sync (`Update-DocumentationIndex.ps1 -Check` passes). - Quality gates green locally: markdownlint, textlint, codespell, documentation link check, and index-drift check.
1 parent f45e0a0 commit 7a87e7e

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#least-privilege) and [secure by default](../../Coding-Standards/Security.md#secure-by-default) are this principle applied to permissions and security; the way [the vision cascades](../../Vision/index.md#how-the-vision-cascades) 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)