Skip to content

docs: iterate rich-cli-tools spec — three-subpackage layout, Rich-only dep#8

Draft
jlevy wants to merge 1 commit into
mainfrom
claude/rich-cli-tools-plan-iter
Draft

docs: iterate rich-cli-tools spec — three-subpackage layout, Rich-only dep#8
jlevy wants to merge 1 commit into
mainfrom
claude/rich-cli-tools-plan-iter

Conversation

@jlevy

@jlevy jlevy commented Jun 12, 2026

Copy link
Copy Markdown
Owner

Summary

Iterate on the rich-cli-tools spec following feedback that (a) I'd planned the layout from survey reports without reading the rich_custom/* source directly, (b) the original flat layout conflated terminal-specific and Rich-specific modules, and (c) the dependency surface could be tighter.

What changed

  • Three subpackages document the dep split: terminal/ (stdlib only — OSC escapes, capability detection, sixel/kitty subprocess), icons/ (stdlib only — Nerd Font tables and lookup), display/ (Rich-required — all rendering enhancements). Plus two top-level stdlib modules (errors, progress_types) that span the layers.
  • Single runtime dependency: rich. Drops strif (AtomicVarthreading.Lock; abbrev_str/single_line → inline helpers), typing-extensions (override → stdlib-or-shim), and flowmark (fill_texttextwrap.fill).
  • Per-module maturity table grounded in current source — git history, in-kash usage, coupling, inline tests. Splits the ports into a ship-now tier (cells, char_transform, indent, nerd_icons, clideps osc/styles) and a ship-careful tier (markdown_fork, multitask_status, unified_live, terminal_images, rich_output) with explicit risk notes (markdown fork uses Rich private internals).
  • CI lint rule: build fails if any module under terminal/ or icons/ imports rich — enforces the dep-free contract.
  • Markdown-fork canary test: imports the private Rich symbols the fork relies on (rich._loop.loop_first, rich._stack.Stack); a CI failure here signals a Rich-internals break before any user-visible bug ships.
  • Implementation phases reorganized to match the new layout. Beads for Phases 2–4 retitled.

What's unchanged

  • Scaffolding from simple-modern-uv, the companion agent skill design, tryscript golden testing, byte-identical port verification, the kash + clideps consumer migration plan, and the gather-limited interop note (TaskState compare-by-value contract).

Note

This is a docs-only PR (spec iteration). No code changes; existing beads continue to track implementation.

Test plan

  • Spec renders cleanly (608 lines, structured outline verified)
  • Bead links remain valid via tbd list --spec docs/project/specs/active/plan-2026-05-23-rich-cli-tools.md (9 beads, dependency graph intact)
  • Phase 2–4 bead titles updated to match new structure

https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW


Generated by Claude Code

…y dep

Revised after reading the rich_custom/unified_live/nerd_icons source
directly and assessing maturity per module.

Key changes:

- Reorganize the package into three subpackages that document the
  dependency split visually: terminal/ (stdlib only, terminal-emulator
  concerns), icons/ (stdlib only, pure data), display/ (Rich-required,
  all rendering). Plus two top-level stdlib modules (errors,
  progress_types).
- Single runtime dependency: rich. Drop strif (AtomicVar ->
  threading.Lock; abbrev_str/single_line -> inline helpers),
  typing-extensions (override -> stdlib-or-shim), and flowmark
  (fill_text -> textwrap.fill).
- Add a CI lint that fails the build if any module under terminal/ or
  icons/ imports rich, enforcing the dep-free contract.
- Add a per-module maturity table grounded in current source: ship-now
  tier (cells, char_transform, indent, nerd_icons, clideps osc/styles)
  vs ship-careful tier (markdown_fork, multitask_status, unified_live,
  terminal_images, rich_output) with risk notes (markdown fork pinned
  to Rich private internals).
- Restructure the implementation plan around the new layout. Add a
  markdown-fork canary test that fails loudly when Rich's internals
  break the fork.
- Update bead titles for Phases 2-4 to match the new structure.

https://claude.ai/code/session_01ASsBTDGgzLRb3C5Aj5wkJW
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.

2 participants