204 lines
6.6 KiB
Markdown
204 lines
6.6 KiB
Markdown
|
|
# Infospace Composition Guide
|
|||
|
|
|
|||
|
|
One completed, viable infospace can be reused as a **discipline** for
|
|||
|
|
another infospace — a lens applied to a different topic. This guide
|
|||
|
|
explains how composition works and walks through the live
|
|||
|
|
`examples/supply-chain-vsm/` reference.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## What composition means
|
|||
|
|
|
|||
|
|
An **infospace** is a directory of typed entities governed by
|
|||
|
|
`infospace.yaml`. Its entities and relations describe a specific topic
|
|||
|
|
(for example, Adam Smith's *Wealth of Nations*).
|
|||
|
|
|
|||
|
|
A **discipline** is an infospace declared as a reusable analytical
|
|||
|
|
framework by another infospace. When infospace B binds infospace A as a
|
|||
|
|
discipline:
|
|||
|
|
|
|||
|
|
1. B's entities can reference A's entities in `## WoN Concept` (or
|
|||
|
|
equivalent) sections.
|
|||
|
|
2. Properties A has already computed on its entities — such as VSM system
|
|||
|
|
placement — become available to B by transitivity through the mapping.
|
|||
|
|
3. B can impose its own viability thresholds independently of A's. The two
|
|||
|
|
infospaces each pass or fail viability on their own terms.
|
|||
|
|
|
|||
|
|
The binding is declarative: a relative path in `infospace.yaml` plus a
|
|||
|
|
display name. No code. No import. The discipline is looked up on disk at
|
|||
|
|
the declared path when B's commands run.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## The viability pre-condition
|
|||
|
|
|
|||
|
|
Binding a non-viable infospace as a discipline is a mistake: a framework
|
|||
|
|
that fails its own thresholds is not a stable reference frame. Before
|
|||
|
|
binding, confirm the candidate discipline is viable:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd examples/infospace-with-history
|
|||
|
|
markitect infospace viability
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Metric Value Threshold Status
|
|||
|
|
---------------------------------------------------------------
|
|||
|
|
redundancy_ratio 0.0061 max=0.1 PASS
|
|||
|
|
coverage_ratio 0.6190 min=0.4 PASS
|
|||
|
|
coherence_components 0.0000 max=3 PASS
|
|||
|
|
consistency_cycles 0.0000 max=0 PASS
|
|||
|
|
granularity_entropy 2.6748 min=1.0 PASS
|
|||
|
|
per_entity_mean 3.9556 min=3.5 PASS
|
|||
|
|
|
|||
|
|
Viable: YES (6/6 thresholds met)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
If the discipline is not viable, fix it first (see
|
|||
|
|
`examples/infospace-with-history/docs/advanced-usage.md` §4 for triaging
|
|||
|
|
low scorers).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Example — how `supply-chain-vsm` binds WoN
|
|||
|
|
|
|||
|
|
The supply-chain infospace declares WoN as a discipline in its
|
|||
|
|
`infospace.yaml`:
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
topic:
|
|||
|
|
name: "Modern Supply Chain Management"
|
|||
|
|
domain: "Operations Management"
|
|||
|
|
sources: artifacts/sources/
|
|||
|
|
|
|||
|
|
disciplines:
|
|||
|
|
- name: "Wealth of Nations"
|
|||
|
|
path: ../infospace-with-history
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
The binding is a **relative path**, so the two infospaces travel together
|
|||
|
|
(they can be moved as a pair without breaking the link).
|
|||
|
|
|
|||
|
|
Verify the binding resolves and the discipline is viable:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd examples/supply-chain-vsm
|
|||
|
|
markitect infospace disciplines
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
Name Entities Viable Path
|
|||
|
|
----------------------------------------------------------------------
|
|||
|
|
Wealth of Nations 988 YES ../infospace-with-history
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Each supply-chain entity then carries a `## WoN Concept` section
|
|||
|
|
mapping it to exactly one WoN entity. The consolidated mapping files
|
|||
|
|
(`output/mappings/*-mappings.md`) record the pairing, rationale, and a
|
|||
|
|
conceptual-continuity rating (Strong / Moderate / Weak):
|
|||
|
|
|
|||
|
|
| Supply Chain Entity | WoN Concept | Strength | VSM |
|
|||
|
|
|------------------------------|----------------------------------|----------|-------|
|
|||
|
|
| Demand Signal | Effectual Demand | Strong | S2 |
|
|||
|
|
| Vendor-Managed Inventory | Division of Labour | Strong | S1/S2 |
|
|||
|
|
| Just-in-Time Inventory | Circulating Capital | Strong | S1/S3 |
|
|||
|
|
| Bullwhip Effect | Natural Price as Central Price | Moderate | S2 |
|
|||
|
|
| Safety Stock | Accumulation of Stock | Moderate | S3 |
|
|||
|
|
|
|||
|
|
Because each WoN entity already has a VSM system placement (S1–S5), the
|
|||
|
|
supply-chain entities inherit a VSM position by transitivity through
|
|||
|
|
their mapping — without supply-chain-vsm needing its own VSM reference.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Creating a new infospace that binds an existing one
|
|||
|
|
|
|||
|
|
Step-by-step, using WoN as the discipline for a hypothetical "Modern
|
|||
|
|
Monetary Policy" infospace:
|
|||
|
|
|
|||
|
|
### 1. Start from the target topic
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
mkdir -p examples/monetary-policy/artifacts/sources
|
|||
|
|
cd examples/monetary-policy
|
|||
|
|
markitect infospace init
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. Declare the discipline in `infospace.yaml`
|
|||
|
|
|
|||
|
|
```yaml
|
|||
|
|
topic:
|
|||
|
|
name: "Modern Monetary Policy"
|
|||
|
|
domain: "Macroeconomics"
|
|||
|
|
sources: artifacts/sources/
|
|||
|
|
|
|||
|
|
disciplines:
|
|||
|
|
- name: "Wealth of Nations"
|
|||
|
|
path: ../infospace-with-history
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Alternatively, bind imperatively after `init`:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
markitect infospace bind-discipline ../infospace-with-history --name "Wealth of Nations"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. Set your own viability thresholds
|
|||
|
|
|
|||
|
|
Copy the `viability:` block from a reference infospace and tune the
|
|||
|
|
numbers to the scale and maturity of your topic. A smaller infospace
|
|||
|
|
(50 entities, not 988) may need laxer `coverage_ratio` and stricter
|
|||
|
|
`redundancy_ratio`.
|
|||
|
|
|
|||
|
|
### 4. Verify the binding
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
markitect infospace disciplines
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
If `Viable` is `NO`, stop and fix the discipline before continuing.
|
|||
|
|
|
|||
|
|
### 5. Reference discipline entities in your own entities
|
|||
|
|
|
|||
|
|
For each entity in the new infospace, add a `## <Discipline> Concept`
|
|||
|
|
section that names the WoN entity the concept maps to, plus a rationale.
|
|||
|
|
The exact section heading is configured per schema — see
|
|||
|
|
`schemas/won-mapping-schema-v1.0.md` in `supply-chain-vsm` for the
|
|||
|
|
template used there.
|
|||
|
|
|
|||
|
|
### 6. Run checks and evaluate
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
markitect infospace check
|
|||
|
|
markitect infospace evaluate --provider openrouter
|
|||
|
|
markitect infospace eval-summary --update-metrics
|
|||
|
|
markitect infospace viability
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
The new infospace passes or fails viability independently of WoN.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Why composition, not inclusion?
|
|||
|
|
|
|||
|
|
An alternative would be to copy WoN entities directly into the target
|
|||
|
|
infospace. Composition avoids that by design:
|
|||
|
|
|
|||
|
|
- **One source of truth** — if WoN is refined, every infospace that binds
|
|||
|
|
it picks up the improvement on the next run without a sync step.
|
|||
|
|
- **Separation of concerns** — each infospace owns its own schema,
|
|||
|
|
thresholds, and entity set. Changing the target topic cannot pollute
|
|||
|
|
the discipline.
|
|||
|
|
- **Bounded dependency** — the binding is a path, so the coupling is
|
|||
|
|
visible in one place (`infospace.yaml`) and easy to remove.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## See also
|
|||
|
|
|
|||
|
|
- `examples/supply-chain-vsm/README.md` — the full reference composition.
|
|||
|
|
- `examples/supply-chain-vsm/output/mappings/` — consolidated mapping
|
|||
|
|
files showing the rationale and strength rating for each pairing.
|
|||
|
|
- `examples/infospace-with-history/docs/advanced-usage.md` — patterns for
|
|||
|
|
maintaining the discipline once it is in use.
|