diff --git a/packaging/command-migration-plan.v0.json b/packaging/command-migration-plan.v0.json index 283e6fb..1902b2f 100644 --- a/packaging/command-migration-plan.v0.json +++ b/packaging/command-migration-plan.v0.json @@ -7,6 +7,7 @@ "target_command": "orro", "migration_phase": "owned-thin-wrapper", "removed_commands": { + "lock": "engine-lock", "sketch": "advise --mode sketch", "trace": "advise --mode trace", "next": "auto --dry-run", diff --git a/scripts/check_orro_removed_command_docs.py b/scripts/check_orro_removed_command_docs.py index 15dc55a..3617034 100644 --- a/scripts/check_orro_removed_command_docs.py +++ b/scripts/check_orro_removed_command_docs.py @@ -12,7 +12,7 @@ ROOT = Path(__file__).resolve().parents[1] PLAN_PATH = ROOT / "packaging/command-migration-plan.v0.json" DOC_SUFFIXES = {".md", ".rst", ".txt"} -ALLOWED_PATH_PARTS = {"fixtures", "migration", "compatibility"} +ALLOWED_PATH_PARTS = {".venv", "fixtures", "migration", "compatibility"} def fail(message: str) -> None: @@ -57,7 +57,10 @@ def scan(pattern: re.Pattern[str]) -> list[str]: def self_test() -> None: - pattern = violation_pattern({"next": "auto --dry-run", "report": "status --latest"}) + commands = removed_commands() + assert commands["lock"] == "engine-lock" + pattern = violation_pattern(commands) + assert pattern.search("orro lock --json") assert pattern.search("orro next") assert pattern.search("orro report run") assert not pattern.search("orro status --latest") diff --git a/scripts/check_orro_wrapper.py b/scripts/check_orro_wrapper.py index cf81f8d..72572d7 100644 --- a/scripts/check_orro_wrapper.py +++ b/scripts/check_orro_wrapper.py @@ -119,6 +119,7 @@ def check_help_discoverability() -> None: # tiered so the product is discoverable rather than hidden behind `delegate`. authoritative_commands = [ "setup", + "skill", "init", "advise", "scout", @@ -133,16 +134,15 @@ def check_help_discoverability() -> None: "check", "demo", "status", - "tidy", - "task", - "lock", + "workspace", "auto", "team", "doctor", "engine-lock", ] - for command in authoritative_commands: - require_contains("wrapper help", help_text, command) + authoritative_line = " " + ", ".join(authoritative_commands) + require_contains("wrapper help", help_text, "Authoritative commands:") + require_contains("wrapper help", help_text, authoritative_line) require_contains("wrapper help", help_text, "Start here:") require_contains("wrapper help", help_text, "orro demo") require_contains("wrapper help", help_text, "orro flow ") diff --git a/src/orro_wrapper/cli.py b/src/orro_wrapper/cli.py index 8b36585..7635abc 100644 --- a/src/orro_wrapper/cli.py +++ b/src/orro_wrapper/cli.py @@ -158,15 +158,24 @@ def parse_args(argv: list[str]) -> argparse.Namespace: advise routes the goal itself: bug-shaped -> trace advisory, new work -> sketch advisory (--mode overrides) ship push a ship-ready branch and optionally open a PR (evidence-gated); merge approval stays human -Removed aliases (2.27.0): sketch/trace -> advise --mode ..., next -> auto --dry-run, report -> status | --latest +Automation: + auto, team Project legibility: status roadmap items with evidence-bound state + off-plan runs + workspace summary - tidy inventory (default) and safe cleanup of run worktrees (--apply) - task persistent per-item task worktree lifecycle (begin + optional open hook) + workspace begin + persistent per-item task worktree lifecycle (begin + optional open hook) + workspace tidy + inventory (default) and safe cleanup of run worktrees (--apply) -Setup / advanced: - setup, init, advise, auto, team, engine-lock, lock, advisory-provenance-check +Setup / diagnostics: + setup, skill, init, doctor, engine-lock, advisory-provenance-check + +Removed aliases: + sketch/trace -> advise --mode ..., next -> auto --dry-run, report -> status | --latest, lock -> engine-lock + +Authoritative commands: + setup, skill, init, advise, scout, flow, flowplan, proofrun, proofcheck, advisory-provenance-check, handoff, ship, review, check, demo, status, workspace, auto, team, doctor, engine-lock Try it in 30s (no AI adapter): orro demo