docs: pack inventory 2026-05-21 — strengths, weaknesses, leverage gaps (#84)

Comprehensive survey of every pack in the tree across five layers
(primitives → language → teaching → policy → selection axes → style)
with per-pack stats, cross-pack lemma overlap, teaching-chain graph
topology, and a ranked top-leverage-gaps list.

Key findings:

  * **Layer 4 (selection axes) is the densest by far** — 24 packs
    (17 anchor lenses + 7 registers).  Greek and Hebrew lens
    families are at parity (8 each).
  * **Layer 2 (teaching corpora) is the load-bearing thin layer** —
    only 41 reviewed chains across 18 subjects, with just 2 intent
    shapes covered (CAUSE / VERIFICATION) and 7 connectives total.
    No COMPARISON / PROCEDURE / CORRECTION chains exist; those
    intents route through pack composers only.
  * **Layer 1 EN is solid** — 354 lemmas across 12 mounted packs
    with 93% gloss coverage; 24 ungloss'd lemmas remain.
  * **Cross-language is structurally present but content-light** —
    grc / he micro-packs ship and mount; the bigger
    ``*_cognition_v1`` siblings ratify but are not in the default
    mount; no glosses exist on any non-EN pack.
  * **Three drafted ethics packs are unratified** (legal /
    research / engineering) — the highest-leverage low-effort gap.
  * **Rhetorical-style axis ships substrate only** — one
    null-lift pack; ADR-0087 consumer phase pending.

Top-leverage gaps ordered by ratio of unblocked value to effort
are enumerated in §7 of the doc itself.  No code lands here.
This commit is contained in:
Shay 2026-05-20 19:59:18 -07:00 committed by GitHub
parent 8b51813c73
commit 5446ab1615
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -0,0 +1,251 @@
# Pack Inventory — 2026-05-21
A full survey of every pack in the tree, what it covers, what consumes it, and where the system is well-rounded vs. lopsided. Generated by walking `language_packs/data/`, `packs/`, `teaching/`, `chat/teaching_grounding.py`, and `core/config.py`.
---
## 1. Pack landscape at a glance
Five layers, distinct contracts, distinct lifecycles. The bottom layer is *lexicon* (what tokens exist); the top layer is *style* (how surfaces sound).
```
┌─────────────────────────────────────────────────────────────────┐
│ LAYER 5 — Style / rhetorical (substrate only today) │
│ rhetorical_style/ 1 pack [SPARSE — substrate phase] │
├─────────────────────────────────────────────────────────────────┤
│ LAYER 4 — Selection axes (orthogonal to truth) │
│ register/ 7 packs [DENSE — fully built out] │
│ anchor_lens/ 17 packs [DENSE — Greek + Hebrew rich] │
├─────────────────────────────────────────────────────────────────┤
│ LAYER 3 — Policy (boundary commitments) │
│ identity/ 3 packs [ADEQUATE] │
│ safety/ 1 pack [MINIMAL — sufficient floor] │
│ ethics/ 5 packs [PARTIAL — 2/5 ratified] │
├─────────────────────────────────────────────────────────────────┤
│ LAYER 2 — Teaching corpora (reviewed chains) │
│ cognition_chains_v1 22 chains [WIRED] │
│ relations_chains_v1 7 chains [WIRED] │
│ relations_chains_v2 7 chains [WIRED] │
│ cross_pack_chains_v1 5 chains [WIRED, separate path] │
├─────────────────────────────────────────────────────────────────┤
│ LAYER 1 — Language packs (lexicon + glosses + alignment) │
│ en_core_* 12 packs, 354 lex / 330 gloss (93%) │
│ en_minimal_v1 220 lex / 0 gloss │
│ grc_* 2 packs (1 mounted) │
│ he_* 2 packs (1 mounted) │
│ en_collapse_anchors_v1 [UNMOUNTED] │
│ en_core_relations_v3 [UNMOUNTED — newer schema] │
├─────────────────────────────────────────────────────────────────┤
│ LAYER 0 — Primitives / shared schema │
│ primitives/ 1 pack (en_semantic_primitives_v1) │
│ common/anchors, common/contracts, common/schema │
└─────────────────────────────────────────────────────────────────┘
```
---
## 2. Layer 1 — Language packs (the lexical foundation)
### 2.1 English operational base (12 packs, all mounted)
| pack | role | lex | gloss | gloss-cov |
|---|---|---:|---:|---:|
| `en_core_cognition_v1` | operational_base v1.2.0 | 85 | 70 | 82% |
| `en_core_meta_v1` | operational_base | 73 | 71 | 97% |
| `en_core_attitude_v1` | operational_base | 40 | 40 | 100% |
| `en_core_temporal_v1` | operational_base | 28 | 28 | 100% |
| `en_core_action_v1` | operational_base | 26 | 25 | 96% |
| `en_core_quantitative_v1` | operational_base | 24 | 19 | 79% |
| `en_core_spatial_v1` | operational_base | 24 | 23 | 95% |
| `en_core_polarity_v1` | operational_base | 16 | 16 | 100% |
| `en_core_causation_v1` | operational_base | 15 | 15 | 100% |
| `en_core_relations_v1` | operational_base (kinship) | 8 | 8 | 100% |
| `en_core_relations_v2` | operational_base (kinship+) | 8 | 8 | 100% |
| `en_core_relations_v3` | depth_relation | 7 | 7 | 100% |
| **TOTAL** | | **354** | **330** | **93%** |
`en_minimal_v1` (220 lex, 0 gloss) is the bare-vocabulary substrate — function words and basics; never expected to carry glosses.
**Cross-pack lemma overlap.** 98 of 466 unique EN lemmas live in more than one pack (~21%). Every duplicate today pairs a domain pack against `en_minimal_v1` (e.g. `above` is in both `en_core_spatial_v1` and `en_minimal_v1`). The resolver's first-match-wins rule (ADR-0063) makes this safe but means `en_minimal_v1` is currently shadowed for any of those 98 lemmas. **Not a bug, but worth noting**`en_minimal_v1` is the historical baseline and could be trimmed to just the lemmas no other pack carries.
### 2.2 Non-English packs (depth_relation / depth_root)
| pack | lang | lex | align | morph | mounted? |
|---|---|---:|---:|---:|---|
| `grc_logos_micro_v1` | grc | 11 | 9 | 11 | ✓ |
| `grc_logos_cognition_v1` | grc | 29 | 23 | 29 | ✗ |
| `he_logos_micro_v1` | he | 9 | 11 | 9 | ✓ |
| `he_core_cognition_v1` | he | 23 | 11 | 23 | ✗ |
The mounted-by-default pair (`*_micro_v1`) is the deliberately-minimal seam-test set (ADR-0073). The bigger `*_cognition_v1` packs exist and ratify, but `core/config.py` doesn't pull them — **either intentional (depth_relation/depth_root packs are loaded by the lens system separately) or a wiring gap**. Worth confirming.
**No glosses on any non-EN pack.** Greek and Hebrew packs carry alignment edges (cross-language equivalence) and morphology, but not the explanatory glosses that drive ADR-0085's gloss-aware CAUSE composer. If `core eval cognition` ever runs with `output_language=grc`, the gloss path silently no-ops.
### 2.3 Orphaned / not-yet-mounted packs
- `en_collapse_anchors_v1` — collapse_anchor role, 3 lex / 3 gloss. Lens-specialization pack; not loaded by the default mount.
- `en_core_relations_v3``depth_relation` role, 7 lex / 7 gloss. Newer schema than v1/v2.
- `grc_logos_cognition_v1`, `he_core_cognition_v1` — see §2.2.
---
## 3. Layer 2 — Teaching corpora (the reviewed-knowledge layer)
| corpus | chains | distinct subjects | distinct objects | wired by |
|---|---:|---:|---:|---|
| `cognition_chains_v1` | 22 | 18 | 13 | `TEACHING_CORPORA` |
| `relations_chains_v1` | 7 | 5 | 6 | `TEACHING_CORPORA` |
| `relations_chains_v2` | 7 | 5 | 6 | `TEACHING_CORPORA` |
| `cross_pack_chains_v1` | 5 | 4 | 4 | `chat.cross_pack_grounding` (separate path) |
| **TOTAL reviewed** | **41** | | | |
**Intent shapes covered.** Every chain is either `cause` (28) or `verification` (13). No `comparison`, `procedure`, or `correction` chains exist yet — those intents route through pack composers, not the teaching corpus.
**Predicate / connective vocabulary.** Only seven distinct connectives across 41 chains: `requires` (14), `reveals` (8), `grounds` (8), `precedes` (5), `follows` (4), `orders` (1), `supports` (1). The CAUSE/VERIFICATION lane is well-served; everything else is unreachable through teaching grounding.
**Topology.**
```
out-degree leaders (radiate outward):
3 family
2 truth | wisdom | understanding | parent
1 light | knowledge | memory | correction | creation | ...
in-degree leaders (well-grounded sinks):
4 knowledge
3 evidence | understanding | parent
2 truth | meaning | memory
```
Source-only nodes (a subject in some chain, never an object): `analogy`, `correction`, `creation`, `grandparent`, `inference`, `light`, `question`, `thought`.
Sink-only nodes: `grandchild`, `relation`.
This shape says: **`knowledge` is the most-grounded concept** (4 distinct chains terminate there), **`family` is the most-radiant** (3 distinct chains start there), and there is *no terminal sink that lacks its own grounding chain except `grandchild` and `relation`* — meaning the cognition graph is roughly **well-connected** internally, but **does not yet bridge between the cognition and relations domains** at chain level (the cross-pack work in `cross_pack_chains_v1` is 5 chains attempting exactly that bridge).
---
## 4. Layer 3 — Policy packs
### 4.1 Identity (3 packs, all ratified)
`default_general_v1`, `generosity_first_v1`, `precision_first_v1`. Adequate floor — every domain has at least one identity stance available. **Could grow**: domain-specific identities (e.g. an academic-tutor identity, a clinical-clinician identity) would slot in here.
### 4.2 Safety (1 pack, ratified)
`core_safety_axes_v1` is the sole safety pack and is fail-closed at startup. Per ADR-0029 this is intentional — safety should not have multiple competing definitions in production. **Adequate.**
### 4.3 Ethics (5 packs, 2 ratified)
| pack | ratified |
|---|---|
| `default_general_ethics_v1` | ✓ |
| `medical_clinical_ethics_v1` | ✓ |
| `legal_ethics_v1` | ✗ |
| `research_ethics_v1` | ✗ |
| `engineering_ethics_v1` | ✗ |
Three drafted domain-ethics packs exist but lack the companion `.mastery_report.json` self-seal — they cannot load in production until ratified. **Highest-leverage Layer 3 gap.**
---
## 5. Layer 4 — Selection axes (the orthogonal dimensions)
### 5.1 Register (7 packs, all ratified)
```
default_neutral_v1 ← null-lift baseline (ADR-0072 invariant)
terse_v1 ← compression
convivial_v1 ← warmth + seeded variation (ADR-0071)
precise_v1
formal_v1
pedagogical_v1
socratic_v1
```
This axis is **well-built-out**. Seven distinct registers covering compression, warmth, precision, formality, teaching, and dialectic. Holds `trace_hash` constant — surfaces vary, truth path does not.
### 5.2 Anchor-lens (17 packs, all ratified)
```
default_unanchored_v1 ← null-lift baseline (ADR-0073d invariant)
grc_* (8): aletheia, arche, epignosis, episteme, logos, sophia, synesis, zoe
he_* (8): chayyim, chesed, chokmah, dabar, emet, logos, shalom, tzedek
```
This axis is **the richest in the system** by pack count. It deliberately moves `trace_hash` (opposite invariant from register). Greek and Hebrew are at parity — 8 distinguishing-concept lenses each. The thesis behind this density (ADR-0073 → ADR-0073d) is that the *substantive* axis of variation is genuinely 16-dimensional, and trying to collapse it into English semantics is the load-bearing failure mode this system is designed to refuse.
### 5.3 Rhetorical-style (1 pack — substrate phase)
```
default_unstyled_v1 ← only pack today; no composer consumes it
```
ADR-0087 substrate ships the loader and a single null-pack; the *content* phase (additional packs) is the next step. **The newest axis; deliberately sparse today.**
---
## 6. Coverage matrix — strength / weakness summary
| dimension | strong | weak / missing |
|---|---|---|
| **EN vocabulary breadth** | 12 domain packs, 354 lemmas, 93% gloss coverage | `en_core_cognition_v1` is at 82% (15 ungloss'd lemmas); `en_core_quantitative_v1` at 79% (5 ungloss'd) |
| **EN domain breadth** | 47 unique top-level semantic-domain prefixes; cognition (291) / meta (146) / attitude (80) lead | `biology` (7), `semantics` (7), `memory` (10), `logic` (5) are thin |
| **Cross-language** | Greek + Hebrew at parity (8 lenses each on the lens axis) | Neither language has glosses; both micro-packs are tiny (≤11 lex); the bigger `*_cognition_v1` siblings are unmounted |
| **Teaching chains** | 41 reviewed chains; well-connected internally; `knowledge` has 4 incoming grounding edges | Only 2 intent shapes covered (CAUSE, VERIFICATION); 7 connectives total; no COMPARISON / PROCEDURE / CORRECTION chains; only 5 cross-pack chains |
| **Identity** | 3 ratified general stances | Domain-specific identities absent |
| **Safety** | Floor pack ratified and fail-closed | Intentionally singular |
| **Ethics** | 2 ratified packs (general + medical) | **3 drafted packs (legal / research / engineering) not yet ratified** |
| **Register** | 7 ratified packs spanning compression → warmth → formality → dialectic | None |
| **Anchor-lens** | 17 ratified packs; Greek + Hebrew at parity; trace-hash-moving axis | Latin / Sanskrit / Arabic lenses absent (an analogous Arabic axis would extend the same pattern) |
| **Rhetorical-style** | Substrate ships | **Content packs absent — only the null-lift baseline exists** |
---
## 7. Top-leverage gaps (ordered by ratio of unblocked value to effort)
1. **Ratify the three drafted ethics packs** (`legal_ethics_v1`, `research_ethics_v1`, `engineering_ethics_v1`).
*Effort:* low (companion `.mastery_report.json` self-seal generation).
*Unblocks:* domain-ethics composition in production for legal / research / engineering workflows.
2. **Wire `grc_logos_cognition_v1` + `he_core_cognition_v1` into the default mount** (or document why they're held back).
*Effort:* one-line additions to `core/config.py` `input_packs`.
*Unblocks:* substantially more Greek + Hebrew lexical surface area for the anchor-lens system to actually distinguish on.
3. **Add glosses to `grc_*` and `he_*` packs.**
*Effort:* medium (content authorship — needs Greek/Hebrew literacy).
*Unblocks:* ADR-0085 gloss-aware CAUSE composer works in non-English output, instead of silently no-op'ing.
4. **Add COMPARISON / PROCEDURE / CORRECTION teaching chains.**
*Effort:* medium (410 chains per intent).
*Unblocks:* the teaching-grounded surface composer fires on intents beyond CAUSE/VERIFICATION (today those intents route through pack composers only — no reviewed-knowledge layer feeds them).
5. **Ship at least one rhetorical-style content pack** (the consumer ADR for ADR-0087).
*Effort:* medium (content + composer-consumer wiring).
*Unblocks:* the third orthogonal axis (after register and anchor-lens) actually does anything.
6. **Fill the 24 ungloss'd EN lemmas** (15 in `en_core_cognition_v1`, 5 in `en_core_quantitative_v1`, plus stragglers in spatial / action).
*Effort:* very low (content authorship in English).
*Unblocks:* ADR-0085 fluency lift covers 100% of the EN cognition path instead of 93%.
7. **Trim or rescope `en_minimal_v1`** (98 lemmas shadowed by domain packs; first-match-wins makes them dead today).
*Effort:* low.
*Unblocks:* nothing user-visible, but the pack inventory becomes honest about which entry resolves a given lemma.
---
## 8. Architectural observation: the "well-rounded" question
The system is **disproportionately deep on its orthogonal axes** (17 anchor lenses + 7 registers = 24 substantive selection packs) **vs. its grounded-knowledge layer** (41 reviewed chains, 2 intent shapes, 7 connectives). That's not a bug per se — the audit's Finding 4 (compound intent) and Finding 2 (grounded realizer) both name exactly this asymmetry: the *truth path* is the lightest-developed substrate, and the *selection / variation axes* are the heaviest. The seven shipped PRs from the 2026-05-20 audit (#76 → #83) all add to the truth path; the next natural batch is widening the teaching corpora and ratifying the drafted ethics packs to keep the layers in proportion.
The five layers in order of build-out (heaviest → lightest):
```
Layer 4 (selection axes) ████████████████████████ 24 packs
Layer 1 (language: EN domain) ████████████ 12 packs / 354 lex
Layer 3 (policy) █████████ 9 packs (4 unratified)
Layer 2 (teaching corpora) ████ 41 chains / 4 corpora
Layer 1 (language: grc + he) ██ 4 packs
Layer 5 (rhetorical style) ▎ 1 pack (substrate only)
```
Layer 2 is the **load-bearing thin layer**. Every grounded surface the system emits today routes through either a pack composer (Layer 1) or a teaching chain (Layer 2); Layer 1 covers cold-start lookups, Layer 2 covers reviewed multi-hop reasoning. With only 41 chains across 18 distinct subjects, the multi-hop ceiling is structurally close. The audit's `ground_graph` wiring (PR #83 substrate, ADR-0088 Phase A pending) and Finding 4's compound dispatch (PR #82 substrate, ADR-0089 Phase C2 pending) are the right next moves on the truth path — but they will only stretch as far as Layer 2's coverage permits. Doubling Layer 2 to ~80 chains, with at least 810 chains per intent shape, is the single most-leveraged content move.