Skip to content

feat: v8 ctx-split swimlane design prototype#121

Merged
lis186 merged 1 commit into
mainfrom
feat/v8-ctx-split-design
Jul 3, 2026
Merged

feat: v8 ctx-split swimlane design prototype#121
lis186 merged 1 commit into
mainfrom
feat/v8-ctx-split-design

Conversation

@lis186

@lis186 lis186 commented Jul 3, 2026

Copy link
Copy Markdown
Owner

Summary

  • v8 redesigns swimlane turn bar: bar height = ctx% (cache read/write split), 40%/80% threshold lines, cost → dedicated 8px track, 4 event tracks with exclusive color families
  • 3-state interaction model (Idle → Hover with 1..N cumulative highlight → Locked with cross-lane dim)
  • Design validated via 4 expert subagents (Tufte/Charity Majors/Munzner/Willison) + 3-round autoresearch (9.03/10) + zone autoresearch (9.0/10)
  • Adds v7-vs-v8.html prototype, navigation index.html, 3 screenshots, design docs

Files changed

File Change
prototype/swimlane/v7-vs-v8.html NEW: v7 vs v8 side-by-side prototype
prototype/swimlane/index.html REWRITE: navigation hub with 4 phases
prototype/swimlane/assets/v8-*.png NEW: 3 screenshots (collapsed/expanded/locked)
prototype/swimlane/DESIGN-DECISIONS.md ADD: v8 section + lessons #11-16
prototype/swimlane/README.md ADD: v8 section + updated file listing

Test plan

  • python3 -m http.server 8199 --directory prototype/swimlane → open http://localhost:8199/
  • Verify index.html links to all prototypes
  • Open v7-vs-v8.html: hover v8 bars (spotlight + cursor guide + tooltip)
  • Click to lock → cross-lane dim + global guide
  • Esc to unlock
  • Click lane-head to expand → 4 event tracks with labels

🤖 Generated with Claude Code

v8 redesigns the swimlane turn bar from cost-centric to context-centric:
- Bar height = ctx window % (was: cost), split into cache read/write/input
- Zone via 40%/80% threshold lines (was: bar hue / bottom border)
- Cost moved to dedicated 8px mini-bar track with orange outlier coloring
- 4 event tracks (Faults/Context/Mutations/Safety) with exclusive color
  families, max 4 dot types per track, zero cross-track color collisions
- 3-state interaction: Idle → Hover (1..N cumulative) → Locked
- Cross-lane dim (0.35) + global cursor guide + per-lane guide uniqueness
- Collapsed shows Faults + Safety only (~6 dots/50 turns)

Design process: 4 expert subagents (Tufte/Charity Majors/Munzner/Willison)
→ 3-round autoresearch (R1 7.41 → R2 8.53 → R3 9.03). Zone display had
separate autoresearch (bands 5.95 rejected → threshold lines 9.0 accepted).

Adds: v7-vs-v8.html prototype, navigation index.html, 3 screenshots,
DESIGN-DECISIONS.md v8 section + 6 new lessons, README.md v8 section.
Removes: redundant v5-proto.html.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@lis186 lis186 merged commit 284c4f7 into main Jul 3, 2026
2 checks passed
@lis186 lis186 deleted the feat/v8-ctx-split-design branch July 3, 2026 22:12
lis186 pushed a commit that referenced this pull request Jul 4, 2026
…ation

Lane label gutter (240px) becomes a 3-row agent info block:
- Row 1 (11px): agent name — detected agentLabel; child lanes append
  the 8-char session id; fallback subagent-<model> when the request
  has no system prompt to detect from
- Row 2 (10px): model · context window size
- Row 3 (10px): sysprompt version chips, one per distinct coreHash in
  first-seen order, width-budgeted (~196px) with +n overflow. Chip
  click locks the turn where that version first appeared; ↗ opens the
  System Prompt page pre-selected via spPendingDeepLink state handoff
  (URL params don't survive syncUrlFromState's rebuild — the prompt
  badge has the same latent race). Hashes/keys are validated
  (hex / safe charset) before innerHTML interpolation since
  escapeHtml doesn't cover quotes.

Lane classification is agent-identity-first: main keys (orchestrator /
sdk-agent / codex default) always go to the main lane regardless of
model switches or the isSubagent flag — a mid-session opus→fable
switch no longer splits the orchestrator into a phantom sub-lane
(157c0faa: 32/287 turns split, sub-lane literally named
"Orchestrator"). Other keys get an agent-<key> lane named by
agentLabel. Model/ctx heuristics remain as fallback for entries
without agent identity. Main lane is longest and on top; sub lanes
sort by first-turn time.

Lane selection with no locked turn renders the last turn's Timeline
detail directly (its request carries the whole conversation = full
range) with no lock visuals — _wfShowTurnDetail suppresses the
selectTurn → wfHighlightTurn echo. No flat-list intermediate state.

Closes #121

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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