Phase 2 brings Models to life. ADR-0004: behaviour comes from a small fixed vocabulary of rules (Constant / Proportional / Gap) read over the inbound Information Links, not free-form formulas — valid by construction. - types: Rule union, SimSpec, initialValue; replaces the unused equation field - simulation: forward-Euler engine, dependency-ordered evaluation, algebraic-loop detection, non-negative stocks, and a divergence guard - io: validate and round-trip the new fields (F8)
44 lines
1.6 KiB
Markdown
44 lines
1.6 KiB
Markdown
# meadows
|
|
|
|
A canvas for thinking in systems — stocks, flows, converters, and feedback loops.
|
|
Inspired by Donella Meadows' _Thinking in Systems_.
|
|
|
|
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.
|
|
- [ADR-0004](./docs/adr/0004-rate-rules-not-formulas.md) — simulation behaviour
|
|
comes from a small fixed vocabulary of rules over Information Links, not
|
|
free-form formulas.
|
|
|
|
## Stack
|
|
|
|
Vite + Vue 3 + TypeScript, Tailwind v4, DaisyUI. Lint/format via [oxc](https://oxc.rs)
|
|
(oxlint + oxfmt). SPA-only — diagram model is client-side.
|
|
|
|
## Develop
|
|
|
|
```bash
|
|
pnpm install
|
|
pnpm dev # frontend on :5173
|
|
pnpm lint # oxlint (pnpm lint:fix to autofix)
|
|
pnpm fmt # oxfmt (pnpm fmt:check to verify only)
|
|
pnpm build # type-check + production build (what Coolify runs)
|
|
```
|
|
|
|
## Deploy
|
|
|
|
Pushes to `main` are picked up by Coolify at https://platform.apoena.dev.
|