feat: three-tier CLI architecture — plumbing, core porcelain, semantic porcelain (#104)
Formally separates Muse's command surface into three tiers with clean namespace boundaries and strict contracts:
Tier 1 — Plumbing (muse plumbing …) 12 new machine-readable, JSON-outputting, pipeable commands that expose the raw engine: hash-object, cat-object, rev-parse, ls-files, read-commit, read-snapshot, commit-tree, update-ref, commit-graph, pack-objects, unpack-objects, ls-remote (moved from top-level).
Tier 2 — Core Porcelain (muse … top-level, unchanged paths) All VCS commands stay at the root: init, commit, status, log, diff, show, branch, checkout, merge, reset, revert, cherry-pick, stash, tag, remote, clone, fetch, pull, push, check, annotate, domains, attributes.
Tier 3 — Semantic Porcelain (muse midi …, muse code …, muse coord …) All domain-specific commands moved into namespaced sub-Typers: 11 midi commands, 30 code commands, 6 coord commands.
Also: - ApplyResult TypedDict replaces bare int return from apply_pack(), giving callers structured counts of commits/snapshots/objects written vs skipped. - docs/reference/cli-tiers.md — authoritative tier reference with JSON schemas for every Tier 1 output format and extension guide for new domains. - 41 new plumbing tests (test_cli_plumbing.py), all tests updated for new command paths: 1903 total passing.
Co-authored-by: Gabriel Cardona <gabriel@tellurstori.com>
Comments
0No comments yet. Be the first to start the discussion.