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
Deferred, non-blocking findings from the review of PR #857 (task-oriented CLI rollover), triaged at head
5540e4e0. The review round onc08ce17fixed 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 the5540e4e0worktree during triage (npm test: 4557 pass / 0 fail;npm run typecheck: clean).1.
CommandRegistry.registermutates its argument before validationsrc/core/registry/commands.js:59-67: thecommand.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 aTypeErrorfrom 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 cacheandhyp client historyprintusage:plus the subcommand table with nohyp <group> - <summary>line, unlike groups that have a bare command or aregisterGroupentry (hyp client,hyp privacy,hyp query graph).cacheis a new top-level token inAdditional commandswith no summary anywhere in help. Fix: addregistry.registerGroup({ name: 'cache', ... })and one forclient history(the gap LLP 0214 exists to prevent, in the new tree).3.
AGENTS.mdstill uses pre-rolloverhyp smokespellings16 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: Draftllp/0248-task-oriented-cli-rollover.decision.mdandllp/0266-cli-compatibility-rollover.plan.mdship 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 inresetCentralLayerToSeed(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