# Navigation Visibility & Tab Access Control

> Added: 2026-02-20

## Design Philosophy

The Bytelyst dashboard follows a **"Contextual Depth"** navigation model:

- **Consumer-facing tabs** are simple, action-oriented, and confidence-building.
- **Technical/operational tabs** are restricted to admins — they contain raw signal data, rule pass/fail states, and engine internals that are misleading without deep engine knowledge.

### Core Principle
> A rule failing (❌) is **normal and correct** — it's the filtering system working. But visually, ❌ icons look like errors. Customers without context interpret "fail" as "broken." This generates anxiety and unnecessary support tickets.

---

## Tab Visibility Matrix

| Tab | All Users | Admin Only | Rationale |
|:---|:---:|:---:|:---|
| Overview | ✅ | | High-level portfolio summary |
| My Strategies | ✅ | | Core user experience |
| ✨ Marketplace | ✅ | | Strategy discovery & adoption |
| 💎 Plans | ✅ | | Subscription conversion |
| 🛠️ Build Strategy | ✅ | | Guided self-service wizard |
| Trade History | ✅ | | User accountability & records |
| Positions & Orders | ✅ | | Current state awareness |
| Settings | ✅ | | Basic bot configuration |
| **Signals** | | ✅ | Raw technical rule/indicator data — misleading without engine knowledge |
| **Entries** | | ✅ | Internal watchlist/position engine state |
| **🛡️ Strategy Clusters** | | ✅ | Advanced multi-profile management |
| **⚙️ Admin Panel** | | ✅ | System operations & health |

---

## Why Signals and Entries Are Admin-Only

### Signals Tab
Shows raw per-symbol rule evaluation output:
- `TrendBiasRule`: EMA50 vs EMA200 comparison
- `SessionRule`: Active trading session detection
- `MomentumRule`: RSI state
- `AIAnalysisRule`: Confidence scores
- Rule pass/fail counts per profile

**Consumer risk**: A customer sees "❌ TrendBiasRule Failed" and assumes the bot is broken, when in reality the bot is correctly waiting for a confirmed trend before entering. This contradiction between correct-behavior and perceived-failure creates support tickets and churn.

### Entries Tab
Shows raw internal watchlist and position engine state — data structures that have no direct user-actionable interpretation without understanding the execution pipeline.

---

## Consumer UX Strategy

Instead of exposing raw signals, consumers receive intelligence through curated, translated layers:

| Raw Technical Data | Consumer-Friendly Equivalent |
|:---|:---|
| `TrendBiasRule: ❌ No 4H trend` | "Bot is waiting for a confirmed market direction" |
| `SessionRule: ❌ TOK/SYD session` | "Bot is active only during London & New York hours" |
| `RSI: 57.73` | Not shown — irrelevant to consumer |
| `minRulePassRatio: 0.9` | "⚖️ Balanced Mode — requires 90% signal agreement" |

This translation is handled by `src/lib/StrategyExplanationService.ts` and surfaced in the **Diagnostic Intelligence** section of each strategy card.

---

## Implementation

**File**: `src/App.tsx` — tab visibility is controlled by `profile?.role === 'admin'` guard on each sensitive tab button in the `<nav>` element.
