Skip to content

Follow-up: deferred review findings from PR #857 #946

Description

@philcunliffe

Deferred, non-blocking findings from the review of PR #857 (task-oriented CLI rollover), triaged at head 5540e4e0. The review round on c08ce17 fixed its two actionable findings on the branch; the observations below were classified as preferences (style, robustness, doc hygiene) and deferred so the PR can merge. Each was re-verified against the 5540e4e0 worktree during triage (npm test: 4557 pass / 0 fail; npm run typecheck: clean).

1. CommandRegistry.register mutates its argument before validation

src/core/registry/commands.js:59-67: the command.category ??= / command.audience ??= / command.bootProfile ??= defaulting writes into the caller's object, and runs before the duplicate-name and alias-collision checks. A rejected registration leaves the caller's object mutated, and a third-party plugin passing a frozen module-level constant would get a TypeError from the defaulting instead of a registry error. No bundled caller is affected today. Fix: copy into a local record before defaulting.

2. Metadata-only groups render help without a header

hyp cache and hyp client history print usage: plus the subcommand table with no hyp <group> - <summary> line, unlike groups that have a bare command or a registerGroup entry (hyp client, hyp privacy, hyp query graph). cache is a new top-level token in Additional commands with no summary anywhere in help. Fix: add registry.registerGroup({ name: 'cache', ... }) and one for client history (the gap LLP 0214 exists to prevent, in the new tree).

3. AGENTS.md still uses pre-rollover hyp smoke spellings

16 occurrences at triage time. Alias-backed and developer-facing (and npm run smoke -- <flow> is the documented path), so drift rather than breakage; roll them onto the canonical spellings when convenient.

4. LLP 0248 and LLP 0266 are both Status: Draft

llp/0248-task-oriented-cli-rollover.decision.md and llp/0266-cli-compatibility-rollover.plan.md ship as Draft, while the repo convention is that shipped design lands Accepted/Active. Flip the statuses (or record why Draft is intentional).

Note (no action required)

The review also flagged, as disclosure rather than defect, that the PR carries the LLP 0262 claude picker/preset reconciliation, the LLP 0266 multi-recorder hyp session status, and a symlink fix in resetCentralLayerToSeed (src/core/config/apply.js:230-243) alongside the help reorganization. LLP 0266 M4 calls for the claude reconciliation, so this is in scope; noted here so the record is complete.

Backlink: #857

Metadata

Metadata

Assignees

No one assigned

    Labels

    neutral:fixDelegate this issue to neutral for an autonomous fix attempt (reproduce -> fix -> PR)

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions