Skip to content

[MEDIUM] 2.0 preview command gaps and migration diagnostics are inconsistent #2299

Closed

Description

@tamirdresher

Summary

The 2.0.0-preview.1 dogfood pass found a cluster of incomplete commands, migration leftovers, and misleading diagnostics:

  • There is no squad client list; squad client --help exits 0 with a stub although client is not a command.
  • Upgrade dry-run prints an undefined project name and legacy root-level casting paths.
  • The Rai→rai case-only migration does not persist in Git on case-insensitive filesystems, and shipped templates still reference agents/Rai/.
  • squad_decide writes to the root inbox instead of the active workstream inbox and produces capitalized/truncated filenames.
  • update-check serves a 169-day-stale cache without a warning.
  • squad doctor reports Mode: remote for a local repo, takes about four minutes, and emits Node DEP0190.

Environment

  • Squad CLI 2.0.0-preview.1, installed from the exact published release tarball
  • Windows 11
  • Node.js 22
  • CFS-only npm host (https://packagefeedproxy.microsoft.io/npm/)

Repro

squad client list
squad client --help
squad upgrade --dry-run
git ls-files .squad/agents
git grep -n "agents/Rai"
squad update-check --json
Measure-Command { squad doctor }

With an active workstream, invoke squad_decide once and inspect both .squad/decisions/inbox/ and .squad/workstreams/active/<slug>/decisions/inbox/.

Observed

Client command behavior:

✗ Unknown command: client
No detailed help is available for 'client'

The help stub exits 0. Upgrade dry-run begins with:

undefined — previewing upgrade from 2.0.0-preview.1 → 2.0.0-preview.1

It lists legacy root paths such as:

.squad/casting-history.json
.squad/casting-policy.json
.squad/casting-registry.json

On Windows with core.ignorecase=true, Git continued tracking agents/Rai/ after the on-disk migration to agents/rai/. References remained in .squad/templates/README.md and the shipped squad.agent.md template.

The decision probe wrote to the root inbox with a name shaped like:

Scribe-squad-2-0-0-preview-1-self-check-runtime-inbox-wri.md

Update check returned stale data:

checkedAt: 2026-05-07
latest: 0.9.4
cacheAge: PT4066H…

Doctor printed:

Mode: remote
(node:…) [DEP0190] DeprecationWarning

It took approximately four minutes on a local repository.

Expected

  • Provide squad client list, or reject squad client --help consistently with exit 1 until the command exists.
  • Render a real project name and canonical casting paths.
  • Perform Rai→rai through a two-step Git-safe rename and update all shipped references.
  • Route squad_decide to the active workstream inbox when one is active; preserve lowercase, complete filenames.
  • Warn when cached update data is stale and channel-incompatible.
  • Report local mode correctly, bound doctor latency, and avoid deprecated shell: true + args spawning.

Impact / Severity

MEDIUM. These do not individually corrupt state, but together they make 2.0 host-adapter discovery, migration review, decision routing, update status, and diagnostics unreliable.

Proposed fix

Add focused regression coverage for command registration/help exit codes, upgrade header/path rendering, case-insensitive Git migration, workstream-aware decision routing, update-cache age/channel validation, and doctor mode/timeout/spawn behavior.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions