|
| 1 | +# Context: ego-graph |
| 2 | + |
| 3 | +The vocabulary of this package. Glossary only — no implementation, no decisions. |
| 4 | +For decisions see [docs/adr](./docs/adr). |
| 5 | + |
| 6 | +## Terms |
| 7 | + |
| 8 | +**Ego graph** — a graph seen from one node. Not a general graph: every layout |
| 9 | +here answers "what surrounds *this* node", and every distance is measured from it. |
| 10 | + |
| 11 | +**Root** — the node the layout centres on. The ego. Its centre is the origin of |
| 12 | +the coordinate system the layout returns. |
| 13 | + |
| 14 | +**Structural edge** — an edge that defines the hierarchy the layout draws. The |
| 15 | +spanning tree is built from these and nothing else. |
| 16 | + |
| 17 | +**Associative edge** — an edge that exists and is rendered, but must never |
| 18 | +influence position. Two nodes can be associated without one being under the |
| 19 | +other. An associative edge between two ordinary nodes is legal and common. |
| 20 | + |
| 21 | +The distinction is *not* importance. An associative edge may be the most |
| 22 | +significant relationship in the domain; it is simply not hierarchical. |
| 23 | + |
| 24 | +**Satellite** — a node that never joins the spanning tree, whatever edges it |
| 25 | +has. A role, not a consequence: declaring a node a satellite settles its |
| 26 | +placement regardless of edge classes. Satellites are parked on the periphery so |
| 27 | +they cannot reparent branches or warp the ring. |
| 28 | + |
| 29 | +Satellite and edge class are **orthogonal axes**. A satellite may have structural |
| 30 | +edges (it still stays out of the tree); an ordinary node may have only |
| 31 | +associative ones (it still is not a satellite). |
| 32 | + |
| 33 | +**Spanning tree** — the one hierarchy every pass agrees on: structural edges |
| 34 | +between non-satellite nodes, breadth-first from the root. There is exactly one |
| 35 | +definition, shared by layout and folding. |
| 36 | + |
| 37 | +**Ring** — the circle of level-1 branches around the root. |
| 38 | + |
| 39 | +**Slot** — one angular position on a ring. **Sector** — a wedge of the circle |
| 40 | +allotted to a group of children. |
| 41 | + |
| 42 | +**Pocket** — the angular region allotted to one satellite and the island hanging |
| 43 | +off it, on an arc outside everything the tree placed. |
| 44 | + |
| 45 | +**Island** — a connected group of nodes the spanning tree could not reach, |
| 46 | +claimed by a satellite (or, if no satellite touches it, standing alone as an |
| 47 | +**orphan** island). Every island gets a pocket. |
| 48 | + |
| 49 | +**Lateral half-extent** — half the width of a laid-out subtree, measured |
| 50 | +perpendicular to the ray it grows along. The packing measure: two neighbouring |
| 51 | +branches clear each other when the ring is wide enough for both half-extents |
| 52 | +plus padding. |
| 53 | + |
| 54 | +**Fold** — a branch collapsed behind a single stand-in. **Folded group** — the |
| 55 | +nodes that disappeared. A fold names the branch by its **root**; the fold's |
| 56 | +members include that root. |
| 57 | + |
| 58 | +**Fold plan** — what to collapse and what to redraw, with no opinion about how. |
| 59 | +The package emits a plan; the caller materialises whatever a collapsed branch |
| 60 | +should look like. |
| 61 | + |
| 62 | +## Words this package does not use |
| 63 | + |
| 64 | +`pivot`, `connector`, `person`, `company`, `match edge`, `link edge`, `cluster`, |
| 65 | +`chip`, `start`. They come from the domain this code was extracted from and mean |
| 66 | +nothing to anyone else. |
0 commit comments