DUNIN7 · LOOMWORKS · RECORD
record.dunin7.com
Status Current
Path scoping-notes/loomworks-navigation-graph-scoping-note-v0_1.html

DUNIN7 · Loomworks · Scoping Note

Navigation graph — Cluster A: the severed nav

Version. v0.1
Date. 2026-06-25
Author. Claude.ai (scoping), under Operator direction.
Status. Scoping note. Frames the severance, surfaces the one intent-dependent decision, lays out three solutions, recommends one robust across the intent question. Precedes a Change Request. Not a Step 0. No build authorized.
Grounds on. CC surface audit (2026-06-25) and the Companion surface-coherence findings (e94d6f3), Cluster A. Seed v0.12 surface principles. Scopes Cluster A alone; flags where Cluster D and the in-engagement-commit affordance attach but does not fold them in.

Plain-language summary

When a user logs in, they land on the engagement-navigation page. That page — and the in-engagement pages — have no link to Dashboard, Inbox, Library, or Spend. Those four pages can only be reached by typing their URLs. So from the default landing, half the application is undiscoverable. The Operator experienced this directly: tried to reach those pages, couldn't, read it as "menu options disappear, All Engagements cannot be reached."

This note scopes the fix. There is one design question that must be answered first, because the right fix depends on it: are the two navigation systems intended to be separate, or is the split accidental? The note surfaces that question, then shows one solution is robust either way — restore a path from the nav-less side back to the global nav, without necessarily changing the landing or collapsing the two systems. That is the recommended default. The two alternatives (change the landing; unify the nav) are laid out with the trade-offs that would make one of them right instead.

The problem, precisely

One-way island:   System A → engagement-navigation  ✓    engagement-navigation → System A  ✗

This strands shipped work. The CR-2026-121 held-commit card lives on /dashboard — a System A page, unreachable from the landing. The feature is built, tested, recorded, and a normal user cannot navigate to it.

The one decision that determines the fix

The right solution depends on a question the audit cannot answer — it is about intent, not code:

The gate

Are the two navigation systems meant to be separate, or is the split accidental?

  1. Both systems intentional (sparse in-engagement header = deliberate focus; engagement-navigation landing = Companion-as-environment framing) → fix is a crossing affordance, preserving both.
  2. Landing intentional, severance accidental (engagement-navigation-as-home wanted, but inability to escape it an oversight) → fix is a path from System B into System A, keeping the landing.
  3. Split accidental (artifact of phase-by-phase building) → fix is unification, one nav everywhere.

What the seed gives us, and what it doesn't. Seed v0.12 commits to surface principles — "only show what is available," the four rooms, the Companion as the environment the user works inside. The Companion-as-environment framing leans toward the engagement-navigation landing being intentional. But the seed (as read this session) does not specify the navigation architecture or mandate the two-system split. That intent likely lives in the architecture specification v0.4 or a design standing note — or, given phase-by-phase building, may never have been an explicit decision.

The evidence that resolves it enough to act. The Operator — who designed the landing — tried to reach the dashboard family and experienced the failure as a bug. That is decisive: the landing can be intentional while the inability to escape it is accidental. Those are not in tension. A deliberate "you land in your engagements" choice does not imply "and you can never get to your library." So whatever the intent behind the landing, the one-way severance is almost certainly not intended — the person who built it reads it as broken. This is why the recommended solution is robust across all three possibilities.

The three solutions

Solution 1 — Restore the crossing recommended · robust

Give System B a persistent path into System A, without changing the landing or collapsing the two systems. Concretely: a stable affordance on engagement-navigation and the in-engagement header that reaches Dashboard/Inbox/Library/Spend (a "home"/global-nav control, an app menu, or surfacing the global links in the sparse header).

  • User gets: from anywhere on the nav-less side, a reliable way to reach the dashboard family. The island becomes two-way.
  • Why robust: fixes the definitely-broken thing (you cannot get back) without betting on preserve-vs-unify. Right if the two systems are intentional (adds the missing crossing); right if the landing is intentional but severance accidental (restores the path, keeps the landing); only less-than-ideal if the split is fully accidental — and even then not wrong, just less clean than unification.
  • Cost: low-to-moderate. Frontend nav work; no new pages, no backend. System A components already exist — the work is exposing a path to them from System B.
  • "Only show what is available": the crossing is always available (the dashboard family always exists), so no disabled-control concern.
  • Risk: if the sparse header is deliberate minimalism, the affordance must be restrained — a single control, not the full global bar transplanted.

Solution 2 — Change the landing

Make the post-auth landing a System A page (e.g. /dashboard) with a clear, prominent route into engagement-navigation.

  • User gets: they start where the global nav exists; the island problem largely dissolves because the default entry is on the connected side.
  • When right: if the Operator decides the dashboard is the better home than engagement-navigation — i.e. the landing choice itself was the mistake, not just the severance.
  • Cost: low (change the redirect target) — but a product decision with weight: it changes what every user sees first and cuts against the Companion-as-environment framing.
  • Risk: reverses an intentional-seeming design. Only on affirmative preference, not convenience. Note: the in-engagement pages still need a path back (they are also System B), so this does not replace Solution 1 — it changes the entry but leaves the in-engagement severance.

Solution 3 — Unify the navigation

One navigation system across all surfaces — the global nav (or a single adapted nav) present everywhere, including engagement-navigation and in-engagement.

  • User gets: total consistency; no two-system confusion; everything reachable everywhere.
  • When right: if the split is confirmed accidental (possibility 3) — no deliberate reason for the sparse headers.
  • Cost: highest. Touches every surface's chrome; must reconcile the in-engagement focus context with a global bar; risks clutter if the sparse header was deliberate.
  • Risk: the biggest bet on intent. If the sparse in-engagement header is deliberate, unification destroys it. Only if the Operator confirms the split is unwanted.

Recommendation

Solution 1 as default — gate the intent decision, don't block on it

Solution 1 — restore the crossing — as the default, because it is the only one robust across the intent question. It fixes the definitely-broken thing (the one-way severance) without requiring the intent question resolved first, and it does not foreclose the others: if the Operator later changes the landing (Solution 2) or unifies the nav (Solution 3), Solution 1's crossing affordance is compatible with both and not wasted.

Sequence the intent decision as a fast gate. Before the CR, the Operator answers: is engagement-navigation the intended home, and is the two-system split deliberate? Yes-and-yes → Solution 1 as scoped. Prefers dashboard-as-home → add Solution 2's landing change on top of Solution 1 (the in-engagement severance still needs Solution 1's crossing regardless). Split unwanted → escalate to Solution 3.

Why not wait to confirm intent first: the design record may not have decided this (phase-by-phase building often sets a landing without documenting why), so a spec search could come back empty and stall the fix. Solution 1 is correct whether or not the intent is documented, because it repairs the severance the Operator already experiences as broken.

What a CR for this would need (not done here)

The CR should be drafted in a fresh chat with that grounding.

Where Cluster D and the in-engagement affordance attach (flagged, not folded)

What this note does not decide