docs(adr): ADR-066 — abstract hierarchy vocabulary (peat#904 Phase 0)#956
Conversation
…rchy levels (peat#904 Phase 0) Phase 0 of the peat#904 rename epic. Establishes the vocabulary mapping (Squad→Cell, Platoon→Tissue, Company→Organ), the field/document-key renames, and the wire-format break strategy (hard rename + peat-schema major version bump, no deprecated aliases) before any code phase starts. This is a docs-only PR. Phases 1–4 are blocked on Kit's vocabulary acceptance/redirect on this ADR.
After review, biological-organismal (Cell → Tissue → Organ) was too scientific and imported a specific domain into a substrate that's meant to be domain-neutral. Topology-native (Pod / Cluster / Fleet) collides directionally with K8s (a K8s Pod lives inside a Node; a K8s Cluster is the whole installation — reusing them inverts the aggregation direction and would confuse enterprise-architecture readers). Cell → Cohort → Federation keeps the existing Cell consolidation work, avoids K8s collisions, and the words are domain-neutral. Federation in particular carries semantic information: peat's model IS independently- managed cells coordinating with autonomy. Renames ADR file too (066-biological-hierarchy-vocabulary.md → 066-abstract-hierarchy-vocabulary.md) since 'biological' no longer fits. All field/document-key/event/HierarchyLevel renames + the wire-format break strategy + boundary translation are updated accordingly.
A concrete deployment (US Army echelon scaling to 1000+ peers) requires a 4th tier today. Folding it into peat#904 now avoids a second wire-format break immediately after Phase 1 ships. Vocabulary commits to four fixed, named tiers above Platform: Platform → Cell → Cohort → Federation → Coalition Coalition is "alliance for combined action of autonomous parties" — stacks semantically over Federation (which is an autonomous alliance of cohorts). Phase 1–3 scope grows: not pure renames anymore. They also add a new CoalitionSummary proto message, HierarchyLevel::Coalition variant, and Coalition-tier aggregation / routing code paths in peat-protocol and peat-mesh. Same files as the rename touches; new exercise paths need their own tests. Tier 5+ (Brigade / Division / Corps, ~10000+ peers) is explicitly out of scope under the rigid-schema model and deferred to a planned ADR-067 (parametric N-tier aggregation) — generic AggregationSummary with level/parent fields, tier names become deployment-config labels rather than schema types. ADR-067 is planned but not yet in flight.
There was a problem hiding this comment.
Peat QA Review (SHA: c5f9746)
Scope: Docs-only ADR (Phase 0 of peat#904). No code changes; security-primitive, FFI/BLE, peat-mesh transport, and test-surface checks do not apply to this PR.
[WARNING] Verification grep gate — command is syntactically broken
The "Verification gate" section specifies:
```bash
grep -rEln '\b(Squad|Platoon|Company|Battalion|Regiment|Brigade|Division|Fireteam)\w*'
--include='.rs' --include='.proto'
-- ':!docs/adr' ':!docs/whitepaper' ':!CHANGELOG.md' ':!CLAUDE.md' ':!SKILL.md'
-- ':!/tests/fixtures/' ':!peat-transport/src/tak/bridge/**'
```
POSIX grep does not interpret :!pattern git-pathspec exclusion syntax. After --, those tokens are treated as literal file paths to search — no file named :!docs/adr exists, so grep finds no input files, returns exit 1 (or 0 with GNU grep and no matches), and the "empty output" acceptance criterion is satisfied regardless of actual codebase content. The gate silently passes even when violations are present.
Action: Replace grep with git grep, which natively supports :! pathspecs:
```bash
git grep -Eln --perl-regexp '\b(Squad|Platoon|Company|Battalion|Regiment|Brigade|Division|Fireteam)\w*'
-- '.rs' '.proto'
':!docs/adr' ':!docs/whitepaper' ':!CHANGELOG.md' ':!CLAUDE.md' ':!SKILL.md'
':!/tests/fixtures/' ':!peat-transport/src/tak/bridge/**'
```
Or, if CI runs outside a git worktree, replace each exclusion with --exclude-dir / --exclude flags. The ADR's own acceptance criterion must be executable and correct before Phase 4 ships.
[WARNING] Tier vocabulary table conflates renames with new additions
The top-level tier table uses an identical "Old (military) → New (abstract)" row format for both existing-code renames (Squad→Cell, Platoon→Cohort, Company→Federation) and for Coalition, which is a new tier addition with no existing implementation. A Phase 1 implementer reading the tier table in isolation would look for a HierarchyLevel::Battalion variant or battalion_id field to rename — neither exists in the current codebase. The field-name renames table correctly marks coalition_id and CoalitionSummary as "(new — no military analogue used in code)", but the tier table's "New tier in this ADR" annotation is in the Meaning column where it can be skimmed past.
Action: Visually separate renames from additions in the tier table — e.g., a "+" prefix on the Coalition row's Old column, a dedicated "New tiers added by this ADR" sub-table beneath the rename table, or a column annotation. The goal is that Phase 1's implementer cannot mistake Coalition for a rename when reading the authoritative ADR table.
Summary
Phase 0 of the peat#904 workspace-wide rename epic. Docs-only. Establishes:
Squad → Cell(consolidates the existingCellconcept),Platoon → Cohort,Company → Federation, plus a newCoalitiontier (no military rename — newly-added tier 4).Platformunchanged.Pod/Cluster/Fleet, which directionally conflict with K8s's containment + cardinality model); preserves the half-doneCellconsolidation work; Federation and Coalition both carry semantic information about peat's actual coordination model (autonomous parties combining for action).AggregationSummaryproto withlevel: uint32+parent_level_id, tier names become deployment-config labels rather than schema types. ADR-067 is planned but not yet in flight.squad_id→cell_id(consolidates),platoon_id→cohort_id,company_id→federation_id, newcoalition_id.SquadSummary→CellSummary, etc., newCoalitionSummary.HierarchyLevel::{Squad,Platoon,Company}→::{Cell,Cohort,Federation}, new::Coalition.peat-schemamajor version bump. No deprecated aliases. Justified by pre-1.0 posture + revealed preference for clean cuts (peat#898, peat#704).a-f-G-U-C-I) are wire artifacts and may appear inpeat-transport/src/tak/bridge/; internal types translated to the new vocabulary at the boundary.peat-schema(rename + add CoalitionSummary), Phase 2peat-protocol(rename + implement Coalition aggregation), Phase 3peat-mesh(rename + extend hierarchy strategies for Coalition tier), Phase 4peat-transportTAK bridge + CI grep gate. Phases 1–3 are no longer pure renames — they also add the Coalition tier's new code paths. One PR per repo per the ecosystem skill.This PR is intentionally draft so the vocabulary + tier-count can be redirected before downstream phases consume it. Phases 1–4 are blocked on this ADR's acceptance.
Revision history
Test plan
Cell → Cohort → Federation → Coalition4-tier mappingTracks peat#904.