Root-lineage family colors replace project colors (round I) #33

Merged
ClaudiuSchuster merged 1 commit from oss-oo/observatory-lineage-colors-eage20260925 into main 2026-09-24 21:49:51 +00:00
Owner

Owner redefinition: the v1.9.0 project coloring (worktree→project derivation + clickable legend) is replaced by ROOT-BASED FAMILY COLORS — every root session gets a deterministic hue; ALL its transitive descendants inherit it. Work/mission trees read as coherent color blocks; no legend, by design.

Lineage resolution (backend)

  • Parent edges from BOTH sources: native session.parent_id + doorbell edges (🔔 15-char prefix resolution, v1.7.0).
  • root_map: transitive walk, cycle-guarded (canonical smallest-cycle-member break, entry-point independent), 16-hop emergency cap, memoized (linear in edges).
  • family_sizes / root_titles: family payload gains size (root + all descendants) and rootTitle (DB fallback for roots outside the payload).

Coloring (frontend)

  • Left accent bar + faint row tint + spanning line wear the ROOT family hue for every member (roots and children alike); same fixed 12-hue palette, hashed by root id.
  • REMOVED: project derivation (project_of/project_view), the project legend + clickable filter, and the v1.7.0 family dot (bars carry the identity cleanly — one clear signal beats two mushy ones; choice documented in README).
  • Recognition without a legend: parent-column tooltip "family of ⟨root title⟩ · N sessions"; hovering any family row washes the whole family; clicking a parent id or the root ◉ glyph PINS the family highlight across sections (click again to clear), parent link still jumps to the parent row when loaded.

Gates (evidence in /tmp/pinky-lineage-evidence)

  • Fixture DB gate, 24 assertions GREEN: two full 3-generation families (doorbell chain AND native chain) assert transitive inheritance (grandchild reports the ROOT, not its direct parent), shared deterministic hues (recomputed independently from the sha1→12-hue formula), size/rootTitle payload, cycle pair resolves deterministically (smallest member, size 2), orphan carries family=null, NO project key anywhere, hues identical across a server restart, session DB byte-identical after a full run (read-only).
  • 20-deep chain through the full HTTP path: one coherent family at the true top, fast response.
  • Headless-Chrome DOM evidence (14/14): 8 family bars in family hues, orphan honestly unbarred, data-fam = root id on every member incl. grandchild, tooltips, ◉ glyphs, legend/dot/project vars absent.
  • Super-Linter v8.7.0 slim (pinned, project lane): all 7 lanes green; forge CI (compile + boot) green locally.
Owner redefinition: the v1.9.0 project coloring (worktree→project derivation + clickable legend) is replaced by ROOT-BASED FAMILY COLORS — every root session gets a deterministic hue; ALL its transitive descendants inherit it. Work/mission trees read as coherent color blocks; no legend, by design. ## Lineage resolution (backend) - Parent edges from BOTH sources: native `session.parent_id` + doorbell edges (🔔 15-char prefix resolution, v1.7.0). - `root_map`: transitive walk, cycle-guarded (canonical smallest-cycle-member break, entry-point independent), 16-hop emergency cap, memoized (linear in edges). - `family_sizes` / `root_titles`: family payload gains `size` (root + all descendants) and `rootTitle` (DB fallback for roots outside the payload). ## Coloring (frontend) - Left accent bar + faint row tint + spanning line wear the ROOT family hue for every member (roots and children alike); same fixed 12-hue palette, hashed by root id. - REMOVED: project derivation (`project_of`/`project_view`), the project legend + clickable filter, and the v1.7.0 family dot (bars carry the identity cleanly — one clear signal beats two mushy ones; choice documented in README). - Recognition without a legend: parent-column tooltip "family of ⟨root title⟩ · N sessions"; hovering any family row washes the whole family; clicking a parent id or the root ◉ glyph PINS the family highlight across sections (click again to clear), parent link still jumps to the parent row when loaded. ## Gates (evidence in /tmp/pinky-lineage-evidence) - Fixture DB gate, 24 assertions GREEN: two full 3-generation families (doorbell chain AND native chain) assert transitive inheritance (grandchild reports the ROOT, not its direct parent), shared deterministic hues (recomputed independently from the sha1→12-hue formula), size/rootTitle payload, cycle pair resolves deterministically (smallest member, size 2), orphan carries family=null, NO `project` key anywhere, hues identical across a server restart, session DB byte-identical after a full run (read-only). - 20-deep chain through the full HTTP path: one coherent family at the true top, fast response. - Headless-Chrome DOM evidence (14/14): 8 family bars in family hues, orphan honestly unbarred, `data-fam` = root id on every member incl. grandchild, tooltips, ◉ glyphs, legend/dot/project vars absent. - Super-Linter v8.7.0 slim (pinned, project lane): all 7 lanes green; forge CI (compile + boot) green locally.
Root-lineage family colors replace project colors (round I)
All checks were successful
Checks / Functional checks (pull_request) Successful in 14s
40710d985c
Every session's ROOT — resolved transitively over BOTH parent-edge
sources (native session.parent_id plus doorbell edges), cycle-guarded
with a canonical smallest-member break and a 16-hop emergency cap,
memoized so the build is linear — is hashed into the fixed 12-hue
palette, and the root plus ALL its descendants wear that one color on
the left accent bar, row tint and spanning line: work/mission trees
read as coherent blocks.

- backend: root_map/family_sizes/root_titles; family payload gains
  size + rootTitle; project derivation (project_of/project_view,
  worktree-slot resolution, PROJECT_PALETTE naming) fully removed
- frontend: bars/tint/line now carry the ROOT family hue; legend,
  clickable project filter and the v1.7.0 family dot removed (one
  clear signal beats two mushy ones — documented); parent column
  tooltip names the family ('family of <root title> · N sessions'),
  clicking a parent id or the root ◉ glyph pins a whole-family
  highlight across sections (hover stays transient)
- README: lineage model section replaces the project-color section
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
OSS-Singularity/zcode-dispatch-observatory!33
No description provided.