The software projection of the Conservation Principle of Determination Demand — a theory of where determinations come from, what they cost, and which actor should make each one.
This repository was split (
DDD-dec-04). The actor-general theory now lives in the principle repository,actor-indexed-determination(split at tagv5.0.0, pin now advanced — seegraph/upstream.yaml); decision-driven-design is its software projection and keeps the name. Core canon is consumed by pin, not copy — seegraph/upstream.yaml. Falsification of a core claim is an issue for the principle repo; software apparatus and domain projections are issues here. What remains in this repository: the tool contracts and apparatus, the SDLC and organisation-design projections, the graph tool's claims and the program's decisions.
The framework is a claim graph: every claim it makes is a node with a status, evidence, and a falsifier, stored as data and validated against a versioned schema. It remains deliberately smaller and better-attributed than v3, and harder to knock down — and says exactly which of its claims are proven, exercised, or still projected.
Four classical results govern how work is allocated in engineered systems — Brooks's essential complexity, Tesler's conservation of complexity, Ashby's requisite variety, Meyer's contracts. Each quantifies over an actor: the thing that makes a determination against some ground. None of them makes that actor explicit. They had no reason to — for the whole history of these results there were two kinds of determiner, a person or a program, and the gap between them was a light switch, not a spectrum.
A third kind now exists: non-deterministic, yet with a distribution that can be frozen by binding. Decision-Driven Design is what you get when you fill in the actor slot those results left empty — and discover that supplying the missing parameter changes their predictions.
Two consequences follow, and they are the framework's core contribution:
-
The irreducible floor of a task is a property of its acceptance predicate, not of the task. Zero where you can check the answer; non-zero where you cannot; and whether you can is, in general, undecidable. →
core/03-the-floor.md -
Selection intensity is inversely proportional to acceptance-predicate closure. Training is what you do when you can check the work. Selection is what you do when you cannot — you check the worker instead. This is falsifiable across professions. →
core/04-actors.md
And, new in 4.1: for tasks whose acceptance predicate closes, specification demand is measurable —
it is the Shannon entropy of the verdict, and conservation is the chain rule of entropy
(core/09). The measure exists exactly where the predicate closes, and
vanishes precisely at the floor.
And a prediction: model actors outperform human actors exactly where the acceptance predicate closes, and underperform exactly where it does not — the gap tracks closure, not difficulty.
It is a two-primitive theory (decisions, and the ground they are determined against), an allocation lens (four stores: encoded, mechanically checked, judged, escaped), and an actor model (pinning resolution, the floor-in-the-predicate, seam composition).
It is not a new physical law. The conservation claim is Tesler's Law of Conservation of
Complexity, generalised — denominated in decisions, with a fourth store (the escaped one Tesler
lacked) and an assurance-level bound. It has no measurable unit, so it is a principle, not a
law, and the repository says so throughout. See core/01-the-principle.md
and, for the full record of what was corrected and why,
meta/lineage-and-limits.md.
We publish the review and the retreats as first-class documents. A framework that states what it cannot support is worth more than one that overclaims.
The actor-general theory — 00 primitives through 13 delivery, the canonical term graph, and the
reproduction assets — is canon in the principle repository,
actor-indexed-determination, at the tag
pinned in graph/upstream.yaml (v5.5.0 at time of writing).
It is not duplicated here. This repository pins the specific claims it depends on in
graph/upstream.yaml; read the theory in the principle repo's core/.
The load-bearing, falsifiable results — the floor is in the acceptance predicate, selection intensity tracks predicate closure, demand is the Shannon entropy of the verdict, overflow ∩ open is the mechanism of capacity-generated escape — all live upstream. Falsification of any of them is an issue against the principle repo, not this one.
Operational results that fall out of the core. Read as needed.
| Document | What it gives you |
|---|---|
apparatus/encode-verify.md |
Encode ground you control; verify ground you don't — and verify on a schedule |
apparatus/closure-principle.md |
An actor's own output is not ground — poisoned ground, and why Terraform can delete your database |
apparatus/adversarial-ground.md |
The attack surface of an actor is its ground, not its logic — across three fields |
apparatus/the-skill-floor.md |
A skill without a per-invocation verifier is floor-exposed by construction |
apparatus/prefix-stability.md |
A prefix is a dependency chain: Martin's SDP, the optimal ordering, and cache invalidation as a specification audit |
apparatus/tool-surfaces.md |
Tools reallocate demand: exporters, resolvers, verifiers — and why class depends on the task, not the tool |
apparatus/tool-contract.md |
What a tool must declare for a DDD-native local agent; why the harness binds tools and the model never picks them |
The framework, denominated in a domain.
| Document | Domain |
|---|---|
applications/sdlc/ |
Software delivery — the agentic/DAG design framework (formerly the whole of v3) |
applications/sdlc/production-as-ground.md |
Production is the only real ground; DORA read as demand; which feedback loops are waste |
The framework as nodes. Files are storage; the graph is the object.
| Path | What it is |
|---|---|
core/claims/ |
One YAML node per claim (DDD-<area>-<nn>), with status, evidence, and falsifier. Canon authority for a converted claim lives here, not in its prose |
core/decisions/ |
Decision nodes (DDD-dec-NN); the load-bearing edge is decision --basedOn--> claim |
spec/claim-format.md |
The claim schema (format version 1) and its validation rules |
scripts/validate-claims.py |
Validates core/claims/ and core/decisions/ against the spec |
| Document | What it is |
|---|---|
meta/way-of-working.md |
How work on the framework is structured: the graph model, projections, the correction loop. Governs the repo |
meta/conversion-protocol.md |
How core/ prose becomes claim files |
meta/graph-tool-ontology.md · meta/graph-tool-mvp.md |
The claim/decision ontology and the tool's MVP sketch |
meta/lineage-and-limits.md (upstream) |
Full attribution, corrections, retreats, and the open falsification debts — canon in the principle repo |
meta/consolidated-state.md |
Projection-local status (org, outreach, product); shared claims resolve upstream |
graph/upstream.yaml |
The cross-repo pins: every upstream id this repo depends on, at a version and a status |
Danish glossary of core terms: in the principle repo (i18n/ordliste-dansk.md).
v3 was the agentic-design framework: decisions as the unit of work, a DAG of roles, artifacts with
schemas, backed by product-cli. That framework is
intact — it now lives in applications/sdlc/ as the engineering
projection of the general principle, which is exactly what it always was. What v4 adds is the layer
beneath it: the theory that explains why the DAG design works, and the actor model that says which
node each determination belongs to.
The register also changed. Following external review:
- "Law" → "Principle." No physical-law status without a measurable quantity (which we do not have; Ashby did, and even he refused the term).
- Conservation holds as an accounting identity within a fixed decomposition — re-decomposing
relocates demand into the seam (a cleaner split pre-pays more into the interface contract; the
total is invariant), so the decomposition is the highest-leverage decision. →
core/09§4,DDD-measure-03. - The immune-system "licensing" argument is demoted to a suggestive parallel with known disanalogies; CRISPR is the accurate compound-platform instance.
- The zero-floor postulate is retreated to the floor-in-the-predicate result, which is sharper and survives the theoretical limits (Rice, inevitable model error, collective tacit knowledge).
Full record: meta/lineage-and-limits.md.
This is a working specification under active revision. The strongest claims — the floor-in-the-
predicate, and selection intensity tracks predicate closure — are falsifiable, and the
conditions are stated in the documents. Live status is now in the graph: every claim carries a
status (established / reported / projected / retired) in core/claims/.
The counting-procedure debt — a measure of governing-decision demand shown invariant — is
paid for closing predicates by the measure (core/09, DDD-measure-01/02/06) and marked
as a boundary, not an open debt, off them; the framework books its remaining debts openly
(meta/).
Reference implementation: product-cli (the authoring layer
for the SDLC projection).
Tesler (conservation of complexity) · Ashby (requisite variety) · Brooks (essential complexity) ·
Meyer & Hoare (contracts) · Saltzer, Reed & Clark (end-to-end) · Kalman (observability) · Polanyi &
Collins (tacit knowledge) · Rice (undecidability) · Edelman & Gally (degeneracy). Full attribution in
meta/lineage-and-limits.md.
Spec text: CC BY 4.0. Any code and schemas: Apache-2.0.