Skip to content

Project graph shows the project: PROJECT → hubs → lists → cards, laid out as a radial tree - #68

Merged
mayoalexander merged 6 commits into
iris/1.18.23from
feat/project-graph-is-interior
Sep 17, 2026
Merged

mayoalexander merged 6 commits into
iris/1.18.23from
feat/project-graph-is-interior

Conversation

@mayoalexander

Copy link
Copy Markdown

The Project graph now shows the project itself, laid out the way you read it: PROJECT → hubs → lists → cards.

What was wrong

  • The Project tab drew the board-to-board web and hid ELON's graph behind a click. /iris/graph/:id already built ELON's exact graph (golden-pinned against ELON's own code), related boards included, but you only saw it after clicking a board. So it read as "not the same graph" when it was the same graph behind a door.
  • A glob. ELON's physics has no notion of depth. With 31 related boards, lists interleaved with boards and a card could settle across the canvas from its own list.
  • An invented strength table. I added per-type link strengths (parent 0.7…) labelled "ELON'S PER-EDGE STRENGTHS". ELON has none: strength: e.strength || 0.3 for every edge. The 0.7 crushed related boards onto ATLAS.
  • List names hidden. Label priority was size alone, so 31 boards (18) beat lists (16), and a list's own cards cluster right where its label goes.

What changed

  • Project = the active board's graph, fetched on open. Connected and Full atlas stay the account-wide webs, with expand-on-click.
  • Radial tree. Every subtree owns an angular wedge sized by its card count; each child sits in its share, so a list's cards always fan out right behind it. Rings by depth, ring radius grown by population, root pinned. Related projects sit on a faint outer ring with no captions: context, not structure.
  • ELON's click rule: only a card responds, and it opens the card editor. The List picker is fed from the graph's own list-<id> nodes, since the Graph pane never loads the Atlas payload.
  • ELON's edge strength: e.strength || 0.3, no type table.
  • Labels: containers outrank leaves; a blocked label tries above/right/left before hiding; the fit pads for labels (the top row was clipped).
  • States: loading, and not-connected when the interior can't be read (never an empty graph).

Verified

  • 48 graph tests, mutation-verified per rule (equal wedges, cards flung off their list, related boards back on ring 1, no population sizing, no container bonus, only-try-below, ignore last frame's spot, reintroduced parent=0.7).
  • Local gate (CI's Blacksmith runners are still wedged) on the exact merge with iris/1.18.23: app 823 pass vs 807 base, same 12 pre-existing failures, none new. Server: one failure (serves OAuth authorize response shapes) with zero server files changed, which passed 3/3 alone and 312/0 on a full re-run, so flaky. App/opencode/tui typecheck clean.
  • Headless render of board 682: 52 nodes/52 edges without a click; ATLAS, Memory, Package Index, Manifest Spec, Organ-System labels all drawn; a card click opens the editor; no page errors. User reviewed the preview: "this is so much better".

🤖 Generated with Claude Code

https://claude.ai/code/session_01JwiqN8M84qimu1TjZGSsdQ

@mayoalexander
mayoalexander merged commit 02e7a71 into iris/1.18.23 Sep 17, 2026
1 of 6 checks passed
@mayoalexander
mayoalexander deleted the feat/project-graph-is-interior branch September 17, 2026 05:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant