Open-Closed Principle¶
Core Idea¶
The open-closed principle is the structural posture in which a system is partitioned into two regions holding opposite stances toward change: a stable kernel that is closed to modification, and an extension surface that is open to addition. New behavior is introduced by plugging into the surface, never by mutating the kernel. The principle's defining commitment is an asymmetry between two kinds of change — additive extension is treated as qualitatively safer than destructive in-place modification, because every existing dependent on the kernel keeps its guarantees while new dependents wire into the extension layer. Change is routed around the kernel as additional structure rather than through it as an edit.
What makes this a structural commitment rather than a stylistic preference is the routing rule it imposes. Without the principle, the demand "this system must change" is undifferentiated; with it, that demand splits into a sharp question — is the change routable through the surface, or does it require breaking into the kernel? The two answers carry different costs and different risks, and the whole discipline consists in arranging the system so that the cheap, safe answer is available as often as possible. The kernel's identity is thereby preserved across the system's entire evolution: it accrues no scars from successive edits, because edits are forbidden there. A system organized this way can accumulate new capability for as long as the extension surface admits additions, without accumulating the proportionate fragility that in-place modification of a shared core would produce. The principle does not claim the kernel never changes — it claims that kernel change is a distinct, expensive, high-ceremony operation that should be rare, deliberate, and gated.
How would you explain it like I'm…
Snap-On Blocks
Add, Don't Break
Stable Core, Open Edge
Structural Signature¶
the protected invariant-bearing core — the additive extension surface — the change-routing rule that diverts modification outward — the additive-versus-destructive asymmetry — the elevated gate guarding any core change
The pattern is present when each of the following holds:
- A closed core. A bounded region of the system carries the guarantees other parts depend on, and is declared off-limits to in-place edits. Its identity must survive the system's entire evolution unscarred.
- An open surface. A second region exposes attachment points — slots, hooks, contracts — at which new capability can be added without touching the core. The surface is where variability is meant to live.
- A routing rule. Every change request is sorted into one of two channels: routable through the surface as an addition, or requiring a break into the core as a modification. The rule makes this sorting explicit and checkable.
- The change asymmetry. Additive extension and destructive modification are treated as categorically different in cost and risk — the former cheap and local, the latter expensive and global. This valuation, not mere preference, is what makes the pattern load-bearing.
- An elevated gate. Core change is not forbidden but ceremonialized: it must clear a higher bar (review, ratification, slow deliberate process) than ordinary surface addition, so it stays rare.
These compose into a single posture: concentrate stability in a small, slow, gated region and let an open-ended sequence of additions accumulate cheaply on the surface around it, so capability can grow without fragility growing in proportion.
What It Is Not¶
- Not
modularity. Modularity decomposes a system into loosely-coupled parts with hidden internals; it says nothing about which parts may change. The open-closed principle adds a directional rule on top of a partition — one region is sealed against edits, the other is open to additions — so it is a stance toward change, not merely toward decomposition. - Not
minimal_modification_principle. Minimal-modification says: when you must change, perturb as little as possible. The open-closed principle says: route change so the protected core is perturbed not at all, and absorb it as additive structure outside. One minimizes the edit; the other relocates it off the kernel entirely. - Not
refinement. Refinement progressively elaborates a design toward more detail or fidelity, editing in place as understanding improves. The open-closed principle forbids exactly that in the kernel; its growth is additive accretion on a surface, not successive sharpening of a core. - Not
immutability. Immutability fixes a value or object so it never changes at all. The open-closed kernel is not immutable — it changes through a high-ceremony gate. The principle is about who pays what cost to change what, not about prohibiting change outright (seeimmutability). - Not
interfacedesign alone. Exposing a clean interface is a precondition, but the principle's load-bearing content is the asymmetry of cost between additive extension and destructive modification, plus the gate that keeps kernel edits rare — not merely the existence of an abstraction boundary. - Common misclassification. Calling any plugin or hook system "open-closed." If the core is freely edited alongside the extensions — if there is no gate making kernel change rare and expensive, and no invariant the core is sworn to preserve — what is present is an extension mechanism, not the open-closed posture, whose whole point is the protected, unscarred kernel.
Broad Use¶
The same split recurs across substrates that share little else. In software design, classes and modules expose abstract interfaces and hooks; new requirements are met by adding subclasses, plugins, or strategy implementations rather than editing the original module.[1] In constitutional design, an inviolate core of rights and governmental structure is paired with an amendable surface of statute and regulation — and the amendment procedure itself is kernel-protected, requiring a supermajority to touch.[2] In genetics and gene regulation, deeply conserved core protein domains are paired with variable regulatory regions, and evolution proceeds largely by tinkering with regulation while leaving the core machinery untouched.[3] Platform and API design offers stable public contracts plus extensible endpoints, callback hooks, and plugin systems, letting vendors evolve a product without breaking customer integrations.[4] In the philosophy of science, Lakatosian research programmes protect a "hard core" of irrevocable assumptions behind a "protective belt" of auxiliary hypotheses where revision absorbs anomalies.[5] Operating-system architecture isolates a small immutable microkernel from user-space drivers, services, and extensions.[6] In each, the load-bearing arrangement is identical: a small, slow, hardened region surrounded by a large, fast, additive one.
Clarity¶
The principle clarifies by naming the asymmetry between two kinds of change and the structural move that exploits it. "We need to modify the system" is converted into a checkable distinction: a patch on the extension surface versus a fork that breaks into the kernel. A kernel-break is recognized as a categorically more expensive and more dangerous operation than a surface addition, and is treated as such — flagged, reviewed, ratified. The clarifying force is to make the location of a proposed change diagnostically visible, so that "is this routable additively?" becomes the first question asked, and the hidden cost of mutating shared structure is surfaced before it is paid rather than after.
Manages Complexity¶
The principle concentrates the burden of stability onto a small, slow-moving region and lets a much larger region of variability evolve cheaply. Reasoning about the system's invariants becomes local to the kernel; reasoning about its variability becomes local to the extension surface. Because the two concerns no longer interleave, a change to one rarely forces re-verification of the other. The cost of change scales with surface additions rather than with kernel rewrites, so the system can grow features without growing fragility in proportion. The principle also bounds the blast radius of error: a faulty extension can be removed or replaced without disturbing the kernel or the other extensions that depend on it, whereas a faulty kernel edit would ripple through every dependent at once. Stability is thus purchased once, in a small place, and amortized across an open-ended sequence of additions.
Abstract Reasoning¶
The principle licenses a recurring set of questions about any evolving system. Where is the kernel/surface boundary, and is it drawn in the right place — is something stable trapped on the open side, or something volatile trapped in the kernel? Are the extensions genuinely additive, or are they sneaking modifications into the kernel through back-channels such as global state, monkey-patching, or regulatory capture? When the extension surface itself begins to ossify, has the kernel silently grown to absorb responsibilities that should have stayed outside it? What invariants does the kernel actually carry, and do the extensions respect them, or merely assume them? These questions transfer because they are about the topology of permitted change, not about any particular medium: the same interrogation applies to a class hierarchy, a constitution, a regulatory regime, or a conserved genetic core.
Knowledge Transfer¶
The principle's portability rests on a single relocatable move: locate the part that must not change, harden its interface, and relocate all variability outward. Once a reasoner holds that move, each substrate's local idiom becomes recognizable as an instance of it, and interventions designed in one domain suggest interventions in another. In software, the move appears as deliberately designing abstract base classes, protocols, and interfaces as extension surfaces, and as explicitly distinguishing a "patch" (a surface addition) from a "fork" (a kernel-break). In constitutional and institutional design, it appears as writing amendment procedures that are themselves kernel-protected, and as requiring kernel changes to clear a higher bar of ratification than ordinary legislation. In reliability and platform engineering, it appears as instrumenting the kernel for change-detection so that silent drift into the protected region becomes visible and auditable.
The structural roles map cleanly across domains. The kernel corresponds to conserved protein domains, constitutional rights, a research programme's hard core, or a microkernel; the extension surface corresponds to regulatory regions, statutes, the protective belt, or user-space drivers; the routing rule corresponds to the amendment procedure, the plugin contract, or the subclassing convention; and the higher bar for kernel change corresponds to supermajority ratification, formal review, or the slow pace of deep-conservation evolution.[3] A software architect adding a comparator subclass rather than editing a sort routine, a constitutional drafter walling off a bill of rights behind an amendment supermajority, and a molecular biologist observing that selection edits regulation while sparing the catalytic core are all performing the same structural work: identifying what must stay invariant, sealing its interface, and arranging for all future change to enter additively from outside. The diagnostic questions travel with the move — where is the boundary, are extensions truly additive, has the kernel silently grown? — and apply identically whether the substrate is code, law, or genome. Because the intervention family transfers without modification, a practitioner who recognizes the pattern in one medium can import the whole repertoire — harden the interface, gate kernel changes, instrument for drift — into a medium where the local vocabulary for it does not yet exist.
Examples¶
Formal/abstract¶
Take a sorting library that must accept arbitrary user-defined orderings.
The naive design exposes a single sort(list, type_flag) routine whose body
contains a switch over known types; every new orderable type forces an edit to
that switch — a break into the kernel. The open-closed redesign defines a
Comparator interface (a single method compare(a, b)) and writes sort once
against that abstraction.[1] Here the closed kernel is the sort algorithm plus
the Comparator contract: its identity — "I order any two elements a caller
can compare" — is fixed and proven once. The extension surface is the set of
all conforming Comparator implementations; the routing rule is the type
system, which sorts each new requirement into "write a new comparator"
(additive, surface) versus "change the contract" (destructive, kernel). The
change asymmetry is concrete: adding a Comparator cannot break any existing
caller, because the kernel never re-reads the new code's internals, whereas
editing compare's signature would invalidate every implementation at once.
The elevated gate is the interface-stability policy — changing a public
contract triggers a major version bump and a deprecation cycle, while adding an
implementation triggers nothing.[4] The intervention this enables is diagnostic:
when a "small feature" request would touch the sort body, the design has
detected that the boundary was drawn too tightly, and the fix is to widen the
abstraction rather than scar the kernel.
Mapped back: the algorithm-plus-contract is the protected core, conforming implementations are the additive surface, and the type system is the routing rule that keeps modification out of the kernel — the principle's exact roles.
Applied/industry¶
A national constitution instantiates the same posture at civic scale. The closed kernel is the entrenched core: a bill of rights and the structure of government, declared off-limits to ordinary legislation. The extension surface is the body of statute and regulation, where new policy is added daily without touching the core. The routing rule is constitutional review: a court sorts each proposed change into "ordinary legislation" (routable on the surface) or "requires amendment" (a kernel-break). The change asymmetry is institutional — a statute passes by simple majority and is easily revised, while amending the core requires a supermajority and often ratification by sub-units, so the core accrues no scars from the churn of ordinary politics.[2] The elevated gate is the amendment procedure itself, which is recursively kernel-protected so that the rule for changing the rules cannot be quietly lowered. The diagnosis this licenses mirrors the software case: when legislators repeatedly try to achieve by statute what really requires amendment, the system has detected pressure on the kernel boundary, and the structural question becomes whether the boundary is mis-drawn (something volatile was entrenched) or whether the pressure is an attempted end-run that the gate exists precisely to slow. The same reading applies to evolutionary genetics, where deeply conserved catalytic protein domains form a kernel that selection leaves nearly untouched while it freely edits the regulatory surface around them — change routed around the core, not through it.[3]
Mapped back: entrenched rights are the closed core, statute is the additive surface, judicial review is the routing rule, and the supermajority amendment procedure is the elevated gate — the open-closed split governing how a polity, and a genome, accumulate change without accumulating fragility.
Structural Tensions¶
T1 — Boundary Placement (scopal). The principle presupposes a clean kernel/surface partition, but where the line falls is a judgment the principle does not make for you. Draw the kernel too large and ordinary variation is forced through the high-ceremony gate, ossifying the system; draw it too small and volatile assumptions leak onto the surface where dependents wire into them unguarded. The characteristic failure is a "stable" core that in fact carries a contested decision, so every extension silently depends on something still in flux. Diagnostic: count how often surface additions require touching the kernel anyway — a high rate means the boundary, not the discipline, is wrong.
T2 — Anticipation Cost (temporal). Extension points must be designed before the variation they will absorb is known, so the surface encodes a prediction about which axes will vary. Speculative generality — hooks for futures that never arrive — is itself a cost the principle's "openness" tempts you to over-pay, and here the competing prime is premature_optimization. The failure mode is a baroque plugin architecture serving requirements that never materialized while the one axis that did vary was hard-coded into the kernel. Diagnostic: which extension slots have exactly one implementation after a year?
T3 — The Kernel Must Sometimes Change (sign/direction). The principle forbids kernel edits, but kernels are sometimes simply wrong, and an inviolable core that should have changed becomes a liability the surface cannot route around. The discipline that protects against churn also protects mistakes from correction. Failure mode: piling compensating extensions on top of a flawed kernel — epicycles — because breaking it is forbidden, until the surface is more complex than a clean rewrite would have been. Diagnostic: is the protective belt growing faster than the functionality it delivers?
T4 — Back-Channel Modification (coupling). "Additive" extensions can mutate the kernel through side channels the type system does not see — global state, monkey-patching, shared mutable resources, regulatory capture of the amendment body. The routing rule classifies a change as surface-additive while it is covertly destructive. Failure mode: a plugin that satisfies the interface yet corrupts a kernel invariant other dependents relied on, producing a failure with no edit to blame. Diagnostic: instrument the kernel for change-detection; if its observable state drifts without any kernel commit, the additivity is a fiction.
T5 — Surface Ossification (scalar, local vs global). Each individual extension is cheap and local, but the accumulation of extensions can itself harden into a de facto interface no one may break — the surface becomes a second kernel by attrition. The local additive-safety guarantee says nothing about the global rigidity that emerges from thousands of dependents on the extension contract. Failure mode: a "stable" public API that can no longer evolve because too much wired into it, even though no single addition was the culprit. Diagnostic: is the extension contract now harder to change than the kernel it was meant to protect?
T6 — Gate Calibration (measurement). The elevated gate must be high enough to keep kernel changes rare but not so high that legitimate core evolution becomes impossible; the principle asserts the gate exists but not where to set its bar. Set too low and the kernel accretes scars; set too high and pressure routes into end-runs — statute attempting what needs amendment, monkey-patches substituting for a refused contract change. Failure mode: a gate so onerous that all real change goes underground, defeating the auditability the gate was for. Diagnostic: track attempted-and-refused kernel changes; a backlog of legitimate ones means the bar is miscalibrated, not that the kernel is stable.
Structural–Framed Character¶
The open-closed principle sits in the mixed-framed band of the structural–framed spectrum, consistent with its aggregate of 0.6. There is a genuine relational skeleton underneath — a partition of a system into a sealed, invariant-bearing kernel and an additive extension surface, with all change routed around the core rather than through it — and that skeleton does recur in genetics (conserved catalytic domains behind a regulatory belt), in evolutionary and constitutional substrates, with no software present. But the prime is most naturally read in the design-prescriptive vocabulary it was born in, and several diagnostics pull it toward the framed end.
The decisive criterion is institutional origin. The open-closed principle is a named software-engineering doctrine — Meyer's formulation, later canonized in the SOLID acronym — and invoking it imports a design-discipline stance: "closed to modification, open to extension" is a normative prescription about how engineers ought to arrange code, not a neutral observation about how matter behaves. That gives it real evaluative weight: a system that violates the principle is judged badly designed, scar-accruing, fragile. The vocabulary travels only partway — "kernel," "extension surface," "the gate," "additive versus destructive" carry a home design lexicon, and the genetics analog is recognizable only after one strips that lexicon away and translates conserved-core/regulatory-belt into kernel/surface. And invoking the principle imports an interpretive frame as much as it recognizes a pattern: to call a structure "open-closed" is to assert that change should be channeled this way, a prescriptive overlay the bare partition does not itself carry.
What keeps it off the extreme framed end — and warrants the 0.6 rather than something higher — is that the underlying topology of permitted change is substrate-neutral once named: the diagnostic questions (where is the boundary, are extensions truly additive, has the kernel silently grown) apply identically to a class hierarchy, a constitution, and a genome. The relational core is real; the inherited design-discipline frame is heavy enough to place the prime past the middle, in the mixed-framed band rather than the framed one.
Substrate Independence¶
The open-closed principle is moderately substrate-independent — composite 3 / 5 on the substrate-independence scale. Its domain breadth is genuine: the stable-kernel-plus-additive-surface split recurs in software design (sealed module behind plugin hooks), constitutional design (entrenched rights behind an amendable statutory surface), gene regulation (deeply conserved catalytic domains beside variable regulatory regions), platform and API design (stable public contracts beside extensible endpoints), Lakatosian philosophy of science (a hard core behind a protective belt), and microkernel operating-system architecture — substrates that share little else. The structural abstraction is real, since the underlying topology of permitted change is medium-neutral once named, but it does not climb higher because the prime is most naturally read in its native design-prescriptive vocabulary — "kernel," "extension surface," "the gate," "additive versus destructive" — and the genetics analog is recognized only after that software-design lexicon is stripped away and translated. Transfer evidence is solid rather than overwhelming: each substrate carries a documented instance of the same routing rule, but the cross-domain mappings are mostly recognizable analogies rather than a single shared formalism that ports unchanged. The three threes line up into a composite 3: a real cross-substrate pattern wearing a software-design frame.
- Composite substrate independence — 3 / 5
- Domain breadth — 3 / 5
- Structural abstraction — 3 / 5
- Transfer evidence — 3 / 5
Relationships to Other Abstractions¶
Current abstraction Open-Closed Principle Prime
Parents (1) — more general patterns this builds on
-
Open-Closed Principle presupposes Modularity Prime
Modularity is 'the prerequisite substrate — a system carved into parts with hidden internals'; OCP layers a directional change-stance (sealed kernel and additive surface and gate) onto a modular partition.Presupposes modularity; adds the additive-vs-destructive asymmetry. Modularity supplies the prerequisite condition: Breaks systems into smaller units. Open-Closed Principle operates against that background: Harden a stable kernel against modification and route all change through an open extension surface. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption.
Children (1) — more specific cases that build on this
-
Platform Design Prime presupposes Open-Closed Principle
Platform design's core mechanism is a stable-core-plus-extension-surface, explicitly OCP-style.Open-Closed Principle supplies the prerequisite condition: Harden a stable kernel against modification and route all change through an open extension surface. Platform Design operates against that background: Extensible core systems. If the parent condition is removed, the child relation becomes undefined or loses the mechanism asserted by this edge; the parent can obtain independently, so the relation is presupposition rather than subsumption.
Hierarchy path (1) — routes to 1 parentless root
- Open-Closed Principle → Modularity → Decomposition
Neighborhood in Abstraction Space¶
Open-Closed Principle sits in a moderately populated region (42nd percentile for distinctiveness): it has near-neighbors but no dense thicket of synonyms.
Family — Interfaces, Contracts & Hidden Implementation (22 primes)
Nearest neighbors
- Premature Optimization — 0.72
- Additive Bias — 0.71
- Frictionless Benchmark Reasoning — 0.71
- Law of Conservation of Complexity — 0.71
- Sandboxing — 0.71
Computed from structural-signature embeddings · 2026-09-10
Not to Be Confused With¶
The open-closed principle's nearest neighbor is minimal_modification_principle, and the two are easy to fuse because both are disciplines of restraint about touching existing structure. The difference is in what each minimizes and where the protected region lies. Minimal-modification is a local rule applied to any change: when a modification is unavoidable, alter the smallest possible region and leave everything else intact — it accepts that the place you must edit may be anywhere, and asks only that the blast radius be small. The open-closed principle is a global topological rule: it declares in advance a fixed kernel that change may never enter, and routes all variability to a designated open surface. Under minimal-modification you might make a small surgical edit to the core; under open-closed that edit is forbidden outright and must be reformulated as an addition outside. The practitioner consequence: minimal-modification answers "how do I change this with least disturbance?" while open-closed answers "how do I arrange the system so that this class of change never reaches the core at all?" The latter is a design posture imposed before the change request arrives; the former is a tactic applied when it does.
A subtler confusion is with modularity. Modularity is the prerequisite substrate — a system carved into parts with hidden internals and narrow interfaces — but it carries no directionality about change. A perfectly modular system can be one in which every module is freely edited in place; modularity constrains coupling, not who may be modified. The open-closed principle layers a change-stance onto a modular partition: it picks out one module-region as the sealed kernel, declares the rest an additive surface, and gates kernel edits behind a high bar. Modularity tells you the system is decomposable; open-closed tells you which decomposition-region is invariant-bearing and off-limits. A reasoner who conflates them will believe that achieving clean module boundaries has already achieved open-closed discipline, missing that the load-bearing commitment — the additive-versus-destructive cost asymmetry and the gate — is an additional and separable choice.
Finally, the principle is distinct from refinement, with which it shares the vocabulary of evolving a design over time. Refinement is in-place sharpening: a model or specification is successively edited toward greater detail, correctness, or fidelity, and each pass legitimately rewrites what came before. The open-closed principle treats exactly that in-place rewriting as the dangerous operation to be avoided in the kernel; its mode of evolution is additive accretion on an external surface, with the core held frozen. Refinement improves a thing by changing it; open-closed grows a system by not changing its protected part. The two can coexist — one refines the extension surface while the kernel stays open-closed-protected — but a practitioner who reaches for refinement where open-closed is wanted will edit a shared core that many dependents rely on, accumulating exactly the scars the principle exists to prevent.
These distinctions matter because each names a different scope of commitment. Confusing open-closed with minimal-modification leads to permitting small core edits the principle forbids; confusing it with modularity leads to mistaking a clean partition for a change-discipline that has not actually been imposed; and confusing it with refinement leads to in-place rewrites of the very region whose unscarred identity is the point. The diagnostic that separates them: ask not "is this change small?" or "are the parts decoupled?" but "is this change required to break into the protected core, and if so, has it cleared the gate?"
Solution Archetypes¶
Solution archetypes in the catalog that build on this prime — directly (this prime is a source ingredient) or as a related prime.
Built directly on this prime (1)
- Behavior-Preserving Refactoring: Improve the inside without changing what the outside can validly observe or rely on.▸ Mechanisms (15)
- Architecture Decision Record — Records why a complexity-adding placement choice was accepted — the criterion applied, the host-dependency it commits to, and the conditions that would reopen it — so the decision is revisited on evidence, not relitigated from memory.
- Automated Refactoring Tool — Applies named code transformations — rename, extract, inline, move — mechanically and across every reference at once, preserving observable behavior by construction rather than by testing.
- Backward Compatibility Test — Checks that a new version still honors every promise existing consumers already rely on, so an internal change can ship without breaking anyone downstream.
- Behavioral Diff Gate — Runs the same inputs through the old and new code and blocks the change automatically if any output differs beyond an approved tolerance — an unapproved behavioral diff is a failed build.
- Characterization Test Harness — Pins down what legacy code currently does — bugs and all — by capturing its outputs on a batch of inputs as the golden baseline, so any later change that alters that behavior shows up immediately.
- Compatibility Test Suite — A maintained battery that runs the matrix of supported version, client, and configuration combinations on every change, standing guard that none of them regresses.
- Dependency Inversion — Refactors a rigid dependency by making both sides depend on a stable abstraction, so a volatile detail can be swapped or restructured without disturbing the code that used it.
- Deployment Rollback — Returns a running service to its last validated release when a change turns out bad, converting a failed refactor from an outage into a quick, bounded reversal.
- Golden Case Benchmark — A curated library of canonical input-to-output cases, captured from the current system, that serves as the fixed reference for judging whether a refactor changed observable behavior.
- Interface Contract Test — Turns the promises a delegated host interface makes — permissions, isolation, error and capacity behavior, and what happens when the host is unavailable — into automated pass/fail checks, so delegation is verified rather than assumed.
- Refactoring Cadence — A recurring, time-boxed slot for structural cleanup, so complexity is paid down continuously and behavior-neutral improvement never has to wait for permission.
- Refactoring or Cleanup Sprint — Sets aside a dedicated, time-boxed block of work to pay down a specific chunk of structural debt to an agreed standard — and to stop when that standard is met, not when the code is perfect.
- Regression Test Suite — Re-runs a corpus of previously-passing cases against each new version so that any unintended loss of working behaviour breaks the build, using the system's own recorded past output as the reference.
- Shadow Run or Parallel Run — Runs the new implementation alongside the old on live traffic — old system serving, new system shadowing — and compares their outputs and real-world side effects before trusting the new one to take over.
- Small-Step Refactoring Workflow — Breaks a large restructuring into a chain of tiny, individually behavior-preserving edits, each verified green before the next, so the system is never more than one small step away from working.
Also a related prime in 6 archetypes
- Coordination Scaffold Load Control: Keep the support machinery for coordination from becoming a second workload larger than the work it exists to coordinate.
- Entry-Boundary Friction Calibration: Calibrate the cost of crossing a membership boundary so the population inside reflects intended qualification, not unequal ability to pay entry costs.
- Layer-Appropriate Capability Placement: Place a capability in the layer that can express and govern it well, then let narrower embedded layers delegate through explicit contracts instead of rebuilding miniature host platforms.
- Open Reuse Publication Infrastructure: Make an artifact reusable by strangers by publishing it as a stable, openly accessible, license-clear, machine-readable, versioned, and maintained public dependency rather than as a private handoff.
- Refinement Timing Guardrail: Delay costly local refinement until the global structure, real bottlenecks, and reversibility conditions are known enough to spend optimization effort well.
- Representation-Independent Interface Contract: Specify what a component does at its public surface, hide how it does it, and test that any replacement implementation honors the same contract.
References¶
[1] Meyer, Bertrand. Object-Oriented Software Construction. New York: Prentice Hall, 1988. Originates the Open-Closed Principle: software entities should be open for extension but closed for modification, achieved through abstraction and inheritance so the closed module is reused while new classes extend it. registry ↩a ↩b
[2] Albert, Richard. Constitutional Amendments: Making, Breaking, and Changing Constitutions. New York: Oxford University Press, 2019. Analyzes constitutional entrenchment and unamendability — how an inviolable core (rights and governmental structure) is walled off behind supermajority/ratification amendment procedures that are themselves kernel-protected, so the core resists the churn of ordinary politics. registry ↩a ↩b
[3] Carroll, Sean B. "Evolution at Two Levels: On Genes and Form." PLoS Biology, vol. 3, no. 7 (2005): e245. Argues evolution proceeds largely by changes to cis-regulatory regions while conserved coding sequences (the catalytic core) remain untouched. registry ↩a ↩b ↩c
[4] Preston-Werner, Tom. Semantic Versioning 2.0.0. 2013. Specifies that backward-incompatible changes to a public API MUST increment the MAJOR version — the elevated, ceremonialized gate distinguishing a breaking kernel/contract change from additive (minor/patch) extension, and the mechanism letting platforms evolve without breaking dependent integrations. registry ↩a ↩b
[5] Lakatos, Imre. "Falsification and the Methodology of Scientific Research Programmes." In Criticism and the Growth of Knowledge, edited by Imre Lakatos and Alan Musgrave, 91–196. Cambridge: Cambridge University Press, 1970. Distinguishes an irrevocable 'hard core' protected by a revisable 'protective belt' of auxiliary hypotheses that absorbs anomalies. registry ↩
[6] Liedtke, Jochen. "On Micro-Kernel Construction." Proceedings of the 15th ACM Symposium on Operating Systems Principles (SOSP), 1995: 237–250. Argues for a minimal, stable microkernel (the minimality principle) with services and drivers in user space — the kernel/extension split in OS architecture. registry ↩