docs: cross-link design docs with README
Add a Design & docs section to the README linking CONTEXT, DESIGN, and the three ADRs, plus a backlink to the README from each of those documents.
This commit is contained in:
@@ -5,6 +5,9 @@ models (stock-and-flow diagrams with feedback loops) in the spirit of Donella
|
|||||||
Meadows' *Thinking in Systems*. The diagram is the product now; numeric simulation
|
Meadows' *Thinking in Systems*. The diagram is the product now; numeric simulation
|
||||||
is a planned later phase, so the language is chosen to be simulation-ready.
|
is a planned later phase, so the language is chosen to be simulation-ready.
|
||||||
|
|
||||||
|
Part of [meadows](./README.md); see [DESIGN.md](./DESIGN.md) for how these terms
|
||||||
|
map to goals, functions, and components.
|
||||||
|
|
||||||
## Language
|
## Language
|
||||||
|
|
||||||
**System**:
|
**System**:
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ model, and persistence for building stock-and-flow **Models**. It relies on
|
|||||||
[ADR-0001](./docs/adr/0001-detected-feedback-loops.md) (loops detected from a
|
[ADR-0001](./docs/adr/0001-detected-feedback-loops.md) (loops detected from a
|
||||||
polarity-annotated graph, not stored). "Simulation-ready" is a constraint here,
|
polarity-annotated graph, not stored). "Simulation-ready" is a constraint here,
|
||||||
not a goal: nothing in the data model should need a rewrite when simulation lands.
|
not a goal: nothing in the data model should need a rewrite when simulation lands.
|
||||||
|
See [README.md](./README.md) for the project overview and how to run it.
|
||||||
|
|
||||||
Strength weights used in matrices: **9** strong, **3** medium, **1** weak, blank none.
|
Strength weights used in matrices: **9** strong, **3** medium, **1** weak, blank none.
|
||||||
|
|
||||||
|
|||||||
15
README.md
15
README.md
@@ -5,6 +5,21 @@ Inspired by Donella Meadows' *Thinking in Systems*.
|
|||||||
|
|
||||||
Deployed at https://meadows.apoena.dev
|
Deployed at https://meadows.apoena.dev
|
||||||
|
|
||||||
|
## Design & docs
|
||||||
|
|
||||||
|
- [CONTEXT.md](./CONTEXT.md) — the ubiquitous language: Stock, Flow, Converter,
|
||||||
|
Information Link, Polarity, and the Feedback Loops (Reinforcing / Balancing) the
|
||||||
|
wiring forms.
|
||||||
|
- [DESIGN.md](./DESIGN.md) — goal-driven design (QFD): goals → functions →
|
||||||
|
components, the House of Quality, the performance budget, and recorded tradeoffs.
|
||||||
|
- Architecture decisions (`docs/adr/`):
|
||||||
|
- [ADR-0001](./docs/adr/0001-detected-feedback-loops.md) — feedback loops are
|
||||||
|
detected from structure, not stored.
|
||||||
|
- [ADR-0002](./docs/adr/0002-vue-flow-substrate.md) — Vue Flow is the editor
|
||||||
|
substrate; the domain Model is the source of truth.
|
||||||
|
- [ADR-0003](./docs/adr/0003-flow-as-node-materialised-clouds.md) — a Flow is a
|
||||||
|
node; Source/Sink clouds are materialised nodes.
|
||||||
|
|
||||||
## Stack
|
## Stack
|
||||||
|
|
||||||
Vite + Vue 3 + TypeScript, Tailwind v4, DaisyUI. Lint/format via [oxc](https://oxc.rs)
|
Vite + Vue 3 + TypeScript, Tailwind v4, DaisyUI. Lint/format via [oxc](https://oxc.rs)
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# Feedback loops are detected from a polarity-annotated graph, not stored
|
# Feedback loops are detected from a polarity-annotated graph, not stored
|
||||||
|
|
||||||
|
_Part of [meadows](../../README.md) · see [DESIGN.md](../../DESIGN.md)._
|
||||||
|
|
||||||
A **Feedback Loop** in a **Model** is a cycle in the wiring (Stock → Information
|
A **Feedback Loop** in a **Model** is a cycle in the wiring (Stock → Information
|
||||||
Link(s)/Flow → same Stock). We chose to **derive** loops by detecting cycles and
|
Link(s)/Flow → same Stock). We chose to **derive** loops by detecting cycles and
|
||||||
classifying each as **Reinforcing** (even number of `−` polarities) or
|
classifying each as **Reinforcing** (even number of `−` polarities) or
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# Vue Flow is the editor substrate; the domain Model is the source of truth
|
# Vue Flow is the editor substrate; the domain Model is the source of truth
|
||||||
|
|
||||||
|
_Part of [meadows](../../README.md) · see [DESIGN.md](../../DESIGN.md)._
|
||||||
|
|
||||||
The editor is built on **Vue Flow** (`@vue-flow/core`) for pan/zoom, node
|
The editor is built on **Vue Flow** (`@vue-flow/core`) for pan/zoom, node
|
||||||
dragging, handles, edge-drawing, and selection, with Stocks/Flows/Converters/
|
dragging, handles, edge-drawing, and selection, with Stocks/Flows/Converters/
|
||||||
Clouds as custom Vue node components. We rejected hand-rolling an SVG editor (too
|
Clouds as custom Vue node components. We rejected hand-rolling an SVG editor (too
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
# A Flow is a node; Source/Sink clouds are materialised nodes
|
# A Flow is a node; Source/Sink clouds are materialised nodes
|
||||||
|
|
||||||
|
_Part of [meadows](../../README.md) · see [DESIGN.md](../../DESIGN.md)._
|
||||||
|
|
||||||
In the domain `Model`, a **Flow** is a *node* carrying `source` and `target`
|
In the domain `Model`, a **Flow** is a *node* carrying `source` and `target`
|
||||||
references (each to a Stock or Cloud), not an edge. The pipe you see is *rendered*
|
references (each to a Stock or Cloud), not an edge. The pipe you see is *rendered*
|
||||||
from those references. The **Source/Sink** boundary is a **materialised Cloud
|
from those references. The **Source/Sink** boundary is a **materialised Cloud
|
||||||
|
|||||||
Reference in New Issue
Block a user