docs(example): add layered development concept and extend tutorial
Some checks failed
Test Suite / unit-tests (3.11) (push) Has been cancelled
Test Suite / unit-tests (3.12) (push) Has been cancelled
Test Suite / integration-tests (push) Has been cancelled
Test Suite / e2e-tests (push) Has been cancelled
Test Suite / performance-tests (push) Has been cancelled
Test Suite / code-quality (push) Has been cancelled
Test Suite / security-scan (push) Has been cancelled
Test Suite / test-summary (push) Has been cancelled

Adds LAYERED-DEVELOPMENT.md documenting the concept for evolving a flat
entity collection into a structured systemic model through four layers:

  L0 Source text → L1 Raw entities (current) → L2 Typed entities
  → L3 Relation graph → L4 Minimal systemic model

Covers: the element/relation/principle/institution type taxonomy,
VSM as a structural coordinate system, the type × VSM coverage matrix,
triplet extraction with a controlled predicate vocabulary, feedback loop
detection, and the distillation hypothesis for finding the generative
core of a corpus.

Extends TUTORIAL.md with sections 17–23:
  17. Observing entity heterogeneity
  18. The four-layer model overview
  19. Layer 2 — classifying entities (schema, pipeline stage, metrics)
  20. Layer 3 — extracting the relation graph (triplets, feedback loops)
  21. Layer 4 — the minimal systemic model (core-model.md output)
  22. Planned CLI commands for layers 2–4
  23. Layers 2–4 as composed infospaces

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-20 10:43:32 +01:00
parent 9c32ad1837
commit c861520ccd
2 changed files with 851 additions and 0 deletions

View File

@@ -674,3 +674,445 @@ To build your own infospace:
The key insight is that **schemas and guidelines are artifacts** — they
live in the repository and can be versioned and diffed just like code.
Every refinement decision is traceable through git history.
---
## 17. Observing Entity Heterogeneity
After processing all 35 chapters you will notice that the entity collection
is not homogeneous. Reviewing the files, some entities describe **things
that exist** (stocks, agents, institutions) while others describe **how
things connect** (mechanisms, signals, causal dependencies):
| Entity | Character |
|---|---|
| *Capital Stock* | A persistent resource — an element |
| *Division of Labour* | An ongoing activity — a process |
| *Natural Price* | A structural dependency — a relation |
| *Opportunity Cost* | An abstract invariant — a principle |
| *Banking System* | A socially constructed rule — an institution |
This heterogeneity is not a flaw in the extraction. It reflects the actual
structure of Smith's argument. But treating all entities identically — as
unnamed nodes in a flat collection — hides structural information that is
necessary for building a systemic model.
The VSM mapping compounds this: System 2 ends up containing both a *price
signal* (a relation) and a *market* (an element that hosts those signals).
Both are genuinely in S2, but conflating them makes it harder to answer the
competency questions precisely.
**The solution is layered development**: moving from the flat entity set
toward a typed, structured, minimal systemic model. The full concept and
rationale is documented in [`LAYERED-DEVELOPMENT.md`](LAYERED-DEVELOPMENT.md).
---
## 18. The Four Layers
Infospace development proceeds through four layers, each with its own
pipeline, schema, and viability check:
```
L0 Source text (35 chapters)
│ extract-entities
L1 Raw entities (~988) ← current state after full processing
│ classify-entities
L2 Typed entities Each entity has: type × VSM coordinate
│ extract-relations
L3 Relation graph Explicit triplets: Element → Relation → Element
│ distil-core
L4 Systemic model Minimal viable set (~30 elements + 20 relations)
```
Each layer is a **proper infospace** that uses the previous layer as its
topic (and sometimes as its discipline). The composition model already
built into MarkiTect makes this explicit and auditable.
---
## 19. Layer 2 — Classifying Entities
The goal of Layer 2 is to assign every entity a **type** and confirm or
refine its **VSM system assignment**, giving each entity a coordinate in a
structured space.
### Entity types
| Type | What it is | Examples |
|---|---|---|
| **Element** | A stock, agent, or artifact that persists | Capital Stock, Corn, Colony |
| **Process** | A flow or transformation (has duration) | Division of Labour, Trade, Credit Extension |
| **Relation** | A structural dependency between elements | Natural Price, Wages of Labour |
| **Principle** | An abstract law holding across contexts | Comparative Advantage, Opportunity Cost |
| **Institution** | A socially constructed rule system | Banking System, Guild, Taille |
### New schema: `schemas/typed-entity-schema-v1.0.md`
Extend the economic entity schema with two new required sections:
```markdown
## Entity Type
[Element | Process | Relation | Principle | Institution]
## VSM System
[S1 | S2 | S3 | S3* | S4 | S5]
```
And two supporting rationale fields (one sentence each):
```markdown
## Type Rationale
This is a Relation because it expresses a structural dependency between
Wages and Capital Stock rather than being an entity that exists independently.
## VSM Rationale
Assigned to S2 because Natural Price functions as the coordination signal
that prevents market price oscillation — Beer's primary definition of S2.
```
### New pipeline stage: `classify-entities`
Add the stage to `infospace.yaml` after the existing pipeline:
```yaml
pipeline:
stages:
- name: extract-entities
template: templates/extract-entities.md
output_dir: output/entities
...
- name: map-to-vsm
...
- name: synthesize-analysis
...
- name: classify-entities
template: templates/classify-entities.md
output_dir: output/typed-entities
output_macro: typed_entity
max_tokens: 1200
macros:
vsm_framework: artifacts/vsm-reference/vsm-framework.md
type_taxonomy: artifacts/guidelines/entity-type-taxonomy.md
```
This stage runs **once per entity** (not per chapter), taking the canonical
entity file as input and producing an enriched version in `output/typed-entities/`.
### New coverage metric — type × VSM matrix
At Layer 2, the coverage metric gains a new interpretation. The matrix is
no longer domain × chapter but **type × VSM system** — a 5 × 6 grid:
```
S1 S2 S3 S3* S4 S5
Element ████ ████ ██ · ██ ██
Process ████ ████ ██ · ████ ·
Relation ████ ████ ████ ██ ██ ██
Principle ██ ██ · · ████ ████
Institution· · ████ ████ · ████
```
An empty cell in this matrix means the VSM system has no entities of that
structural type — a genuine explanatory gap.
---
## 20. Layer 3 — Extracting the Relation Graph
The goal of Layer 3 is to make the **connections between entities explicit**.
Rather than inferring connectivity from embedding similarity or co-occurrence,
Layer 3 extracts directed, typed **triplets** from entity definitions and
source chapters.
### Triplet structure
Each triplet is a directed edge in the relation graph:
```
Subject Predicate Object
────────────────── ───────────────── ──────────────────
Division of Labour ←limited by→ Market Extent
Capital Stock ←enables→ Division of Labour
Natural Price ←centres on→ Market Price
Wages of Labour ←regulated by→ Profit of Stock
```
The predicate is drawn from a **controlled vocabulary** of twelve relation
classes, each mapped to a VSM channel:
| Predicate class | VSM channel |
|---|---|
| enables / constrains | S1 structural dependency |
| regulates / is regulated by | S3→S1 control |
| coordinates | S2 anti-oscillation |
| produces / consumes | S1 operational flow |
| monitors / audits | S3* audit loop |
| adapts to / anticipates | S4 intelligence |
| defines / is defined by | S5 policy authority |
| contradicts / tensions with | cross-level conflict |
### New output directory: `output/relations/`
One file per triplet (or per named relation cluster):
```markdown
# Division of Labour — limited by — Market Extent
## Subject
Division of Labour (Process / S1)
## Predicate
limited by
## Object
Market Extent (Element / S2)
## VSM Channel
S1 operational capacity constrained by S2 coordination reach
## Evidence
Book I, Chapter 3: "The division of labour is limited by the extent
of the market."
## Feedback Role
Entry point of the Market Expansion loop.
```
### Feedback loops
The relation graph will reveal feedback loops — cycles in the directed
graph. These are the most structurally important outputs of Layer 3 because
they are the mechanisms Smith describes throughout the WoN:
```
Capital Accumulation → Division of Labour → Productivity
→ Profit Margin → Capital Accumulation [positive reinforcement]
Market Price above Natural Price → Capital Inflow → Supply
→ Market Price restores [balancing loop, S2]
Wages rise → Consumer Demand → Employment
→ Wages rise [positive reinforcement, S1]
```
Finding and naming these loops is the primary intellectual payoff of
Layer 3. Each loop can be documented as a named pattern:
```bash
# Future command:
markitect infospace loops
# Detected feedback loops (3):
# Capital Accumulation Loop (positive, S1→S3→S1)
# Price Equilibration Loop (balancing, S2)
# Labour Market Loop (positive, S1→S2→S1)
```
---
## 21. Layer 4 — The Minimal Systemic Model
Layer 4 answers the ultimate question: **what is the smallest set of
elements and relations that can generate Smith's argument from first
principles?**
The hypothesis is that the 988-entity collection can be reduced to a core
of roughly 3040 elements, 1525 relations, and 812 principles. Everything
else is a refinement, an illustration, or historical context.
### How the core is identified
Two methods work together:
**Graph centrality**: Entities with the highest combined in-degree and
out-degree in the Layer 3 relation graph are candidates. An entity that
many other entities connect to or depend on is structurally load-bearing.
**VSM completeness**: The core must have at least one entity at each VSM
level, and each level must have at least one Element, one Process, and one
Relation. This is the stopping condition — the minimum viable set is the
smallest set that is VSM-complete.
**FCA concept density**: The concept lattice from Layer 1 (FCA already
computed) identifies which entities co-occur across the most attributes
(domains and chapters). High-density concepts are likely core entities.
### Output: `output/core-model.md`
The final artifact documents the core model with explicit VSM assignment,
named feedback loops, and competency question coverage:
```markdown
# Core Systemic Model — The Wealth of Nations (L4)
## Core Elements
### S1 — Operations
- Labour
- Capital Stock
- Land
- Commodity
### S2 — Coordination
- Market
### S3 — Management
- Banking System
## Core Processes
- Division of Labour (S1)
- Agricultural Production (S1)
- Trade (S1)
- Capital Allocation (S3)
## Core Relations
- Natural Price — centres — Market Price (S2)
- Wages of Labour — allocates — Labour (S2)
- Profit of Stock — allocates — Capital (S2)
## Core Principles
- Invisible Hand (S4)
- Comparative Advantage (S4)
- System of Natural Liberty (S5)
## Feedback Loops
1. Capital Accumulation (positive, S1S3)
2. Price Equilibration (balancing, S2)
3. Labour Market (positive, S1S2)
## Viability
VSM coverage: S1 ✓ S2 ✓ S3 ✓ S4 ✓ S5 ✓
Competency questions answered: 6/6
Entities in core: 28 / 988 (3%)
```
### What the core enables
With a validated core model, the infospace becomes far more useful as a
discipline:
- **Composability**: Another infospace can import the WoN core as its
discipline, knowing that only the 28 load-bearing entities will be
injected as context — not all 988.
- **Gap analysis**: New source material can be evaluated against the core:
does this modern supply chain text engage with Smith's three core
relations? If not, the analysis is incomplete.
- **Theory comparison**: Two economic theories (Smith and Ricardo, say)
can be compared at the core level — do they share elements? Where do
their feedback loops diverge?
---
## 22. Running Layers 24 (Planned)
The following commands are planned for a future implementation phase.
They are documented here to describe the intended workflow.
### Layer 2: classify all entities
```bash
# Classify entity types and confirm VSM assignments:
markitect infospace classify --provider openrouter
# Classify a single entity:
markitect infospace classify --entity division-of-labour --provider openrouter
# Review type × VSM coverage matrix:
markitect infospace check type-coverage
```
Expected output:
```
Classifying 988 entities...
[████████████████████] 988/988
Type distribution:
Element: 312 (32%)
Process: 248 (25%)
Relation: 201 (20%)
Principle: 142 (14%)
Institution: 85 (9%)
Type × VSM coverage: 25/30 cells populated
Missing: Institution/S1, Principle/S3*, Process/S5
```
### Layer 3: extract relations
```bash
# Extract relation triplets (per entity pair or per chapter):
markitect infospace extract-relations --provider openrouter
# View the relation graph:
markitect infospace graph --output output/relations/graph.dot
# Detect feedback loops:
markitect infospace loops
```
### Layer 4: distil the core
```bash
# Identify the minimal viable entity set:
markitect infospace distil --provider openrouter
# Review the core model:
cat output/core-model.md
# Check VSM completeness of the core:
markitect infospace viability --layer 4
```
---
## 23. Layer 24 as Composed Infospaces
The cleanest way to implement Layers 24 is as **separate infospaces**,
each using the previous layer as its topic and discipline. This is already
supported by the MarkiTect composition model.
```bash
# Layer 2 infospace — using L1 entities as the topic:
mkdir ../won-typed/
cd ../won-typed/
markitect infospace init \
--topic "WoN Typed Entities" \
--domain "Ontological Classification" \
--discipline "Viable System Model"
# Bind the L1 infospace as the source topic:
markitect infospace bind-discipline ../infospace-with-history
# Layer 3 infospace — using L2 typed entities as the topic:
mkdir ../won-relations/
markitect infospace init \
--topic "WoN Relation Graph" \
--domain "Systemic Modelling"
markitect infospace bind-discipline ../won-typed
# Layer 4 infospace — the core model:
mkdir ../won-core/
markitect infospace init \
--topic "WoN Core Model" \
--domain "Systemic Modelling"
markitect infospace bind-discipline ../won-relations
```
This structure makes every distillation decision auditable through git
history. A reclassification in L2 (an entity's type changes from Process
to Relation) propagates as a flag on dependent L3 triplets, which in turn
flags the L4 core model for re-evaluation.
The intellectual history of how a theory was extracted from a text, typed,
connected, and distilled to its minimal core is fully preserved — as a set
of git commits, each with a human-readable rationale.