← roadmap

interline

keep priority P3 effort S wave 3

What it does: A stateless dynamic statusline renderer for Claude Code. scripts/statusline.sh reads stdin JSON (model, project_dir, transcript, session_id, context_window %) and composes a prioritized, ANSI-colored single-/two-line status from many independent sources, each individually toggleable via ~/.claude/interline.json. Layers (in priority order): (1) active Codex/Clavain dispatch from /tmp/clavain-dispatch-.json + ~/.interband/clavain/dispatch/.json with live PID liveness check and stale-file cleanup; (2) interlock multi-agent coordination (agent count + signal text, gated on INTERMUTE_AGENT_ID); (3) in_progress beads via bd list --json merged with interphase sideband phase/age, with P0-P4 priority coloring and title truncation; (4) workflow phase via tac|grep|sed scan of the transcript mapping the last Skill invocation to a phase name; plus ambient layers: context-window %, context pressure from intercheck interband signal, budget % from interstat, next-ready bead scoped to the session lane, delegation pass-rate from the interspect SQLite DB, git branch + dirty count, and a rainbow interserve branding label with auto-detected Clavain version. Ships two commands (statusline-setup, statusline-customize), a SessionStart hook that nudges intercheck, shared lane-detection lib (lib-lane.sh) reused by a bd-lane wrapper, an interband envelope schema (versioned payload with v0 backward-compat fallbacks), and a structural test suite.

Rationale: interline is a mature, correct, genuinely well-engineered plugin and its core SOTA-relevant axis is already covered. The dominant 2026 enterprise pain point in the findings is token economics / cost-and-context observability (‘the token bill comes due’; context-rot snowballing). interline already surfaces three independent cost/context signals at a glance — live context-window %, intercheck context-pressure (green/yellow/orange/red), and interstat budget % with escalating color thresholds — which is exactly the operator-facing observability the trend calls for. The plugin embodies the right architectural discipline elsewhere too: fail-open graceful degradation (every source optional), no daemon/no owned state (pure read-render), versioned interband envelopes with backward-compatible fallbacks, PID-liveness checks with stale-file GC, and config-merge (never-overwrite) customization. Critically, interline is a passive display surface, NOT part of the agent reasoning/tool/memory/orchestration loop — so the bulk of the frontier findings (orchestrator-worker fan-out, tiered memory, RAG-MCP tool selection, context compression, verification loops, embedding routers) structurally do not apply and forcing them in would be cargo-culting. The only real weakness is robustness, not modernity, so this stays keep rather than modernize.

SOTA gap: none material. The frontier ideas (multi-agent orchestration, agent memory tiers, MCP tool-selection/progressive-disclosure, context-window compression, reflection/verification, embedding-based routing) target the agent reasoning/tool loop; interline is a read-only display surface and correctly stays out of that loop. The single trend-adjacent soft spot is the transcript phase detector: it does a tac|grep|sed scan of the raw JSONL transcript on every render against a hardcoded ~15-entry skill→phase case map, while the ecosystem now has 60+ plugins and dozens of phase-bearing skills, so most workflow phases render blank and the scan cost recurs each prompt. This is a brittleness/maintenance issue (not a missing AI technique) — better solved by consuming an interphase sideband phase signal (which it already reads for beads) than by smarter transcript parsing.

Redundancy: No true redundancy — interline is the sole render/consumer surface. It reads signals produced by interphase (phase/lane sideband), interlock (coordination), intercheck (pressure), interstat (budget), interspect (delegation DB), and Clavain dispatch, but none of those render a statusline. Adjacent-but-complementary: intermux (tmux-pane agent activity monitoring/feeds), interpulse (session token-pressure estimation), and interstat (token-efficiency analytics) overlap on the underlying state being surfaced but each targets a different surface/output, so they feed or parallel interline rather than duplicating it.

Actions:

  • Make phase detection sideband-first: have interphase write the active phase to ~/.interband/interphase/phase/${session_id}.json and read that envelope (like the bead/pressure/budget layers already do), keeping the transcript tac|grep|sed scan only as a fallback — removes per-render transcript I/O and the stale hardcoded case map.
  • Expand or externalize the skill→phase map (currently 15 entries) into config (/.claude/interline.json) or a generated table so new phase-bearing skills across the 60+ plugin ecosystem render instead of going blank.
  • Sync the README/AGENTS.md/vision label drift: docs say the branding label is ‘Interserve’ while statusline.sh defaults to ‘Clodex’ (interserve_label/dispatch_prefix) — reconcile so customize-command docs match actual defaults.
  • Add a fast-path render budget: the script issues many per-prompt jq/sqlite3/bd/git subprocesses; cache config parsing in one jq pass (partially done) and confirm the bd/interspect timeouts keep total render latency low on large repos.