Triage of the residual review findings on PR #845 (head 590d4f438466daeca01285d5d270a8fe13814903, branch fix/issue-835) classified every open finding as non-blocking, so the PR can merge and these are deferred here. Each item carries its evidence from the review rounds, re-verified against the head in a clean worktree.
Deferred findings
1. hyp help <group> <typo> renders the group help and exits 0 (round 2, finding 1, low)
src/core/cli/dispatch.js:509: the helpVerb branch renders group help and sets exitCode = 0 regardless of leftover tokens in matched.rest, so hyp help query bogus prints the query group table and exits 0, while hyp query bogus --help exits 2 (src/core/cli/group_help.js:157) and hyp help graph bogus exits 2. Same user error, three answers.
Why deferred: the page shown is the right command's page and lists the valid subcommands, so the typo is self-correcting; nothing wrong executes. The obvious guard (refuse leftover non-flag tokens) is wrong on this codebase because backfill is a group parent that legitimately takes positionals (src/core/cli/core_commands.js:150-153), and letting the group command run instead would reintroduce the hyp help purge <path> hazard (src/core/commands/backfill.js:50 does not handle a stray --help). A correct fix needs a way to tell a pure group (built by makeGroupCommand) apart from a group whose bare command takes positionals: a new marker on CommandRegistration or a WeakSet exported from src/core/cli/group_help.js. That is new public API surface plus a design decision LLP 0270 does not settle.
2. hyp help zzz reports unknown command 'help zzz' (round 2, finding 2, nit)
src/core/cli/dispatch.js:404 echoes typedArgv.join(' '), so the diagnostic quotes the pair as though a help namespace exists, while the token that is actually unknown is zzz. The current wording is deliberate (it echoes exactly what the user typed) and is asserted by test/core/cli/help-metadata.test.js:195. If the other spelling is preferred, typedArgv.slice(1) on this path is the whole change, plus the test update.
3. PR body understates the test file and misreports the suite baseline (round 2, finding 3, nit)
The PR body says 11 assertions with 10 of 11 failing on master; test/core/cli/help-metadata.test.js contains 14 test(...) cases. The body also reports 4207 pass / 22 fail as the local baseline, while a clean-environment run on the same head gives 4497 pass / 0 fail, so the 22 failures were environmental. No code impact; a body edit or a note in the merge commit closes it.
4. Blanket --platform refusal also rejects the matching host (round 1, finding 6, design call)
src/core/commands/daemon.js:457: the rule is p.platform !== undefined && !p['dry-run'], so hyp daemon install --platform linux is refused on Linux, where it was a correct no-op-equivalent. LLP 0270 #platform-is-a-render-override rests its rationale on cross-platform breakage only; a rule of p.platform !== process.platform would be exactly as safe. The blanket form is defensible (mirrors --json requires --dry-run) and is settled in an Accepted LLP, so changing it means a new LLP extending 0270, either narrowing the rule or restating the rationale as "any --platform, matching or not". Exit is a clean 2 with a clear message and no in-repo caller is broken, so this is a documentation-honesty and ergonomics call, not a defect.
5. runDaemonInstall still prints its own usage string (round 1, finding 7, informational)
src/core/commands/daemon.js:178 keeps a hand-maintained usage: line reachable when --help is not the first token after the command (hyp daemon install --dry-run --help). Pre-existing tension with LLP 0009 "a command body never prints its own usage"; the fix is a cross-command cleanup in parseCommandArgv's help branch, out of scope for #835.
Not carried forward
Round 1 finding 8 (branch behind origin/master) is resolved: head 590d4f4-era merge brought the branch to 0 commits behind at triage time.
Backlink: PR #845 (fixes #835). Review records: the two neutral-review comments on that PR, for heads 649f02b3 and 590d4f43.
Triage of the residual review findings on PR #845 (head
590d4f438466daeca01285d5d270a8fe13814903, branchfix/issue-835) classified every open finding as non-blocking, so the PR can merge and these are deferred here. Each item carries its evidence from the review rounds, re-verified against the head in a clean worktree.Deferred findings
1.
hyp help <group> <typo>renders the group help and exits 0 (round 2, finding 1, low)src/core/cli/dispatch.js:509: thehelpVerbbranch renders group help and setsexitCode = 0regardless of leftover tokens inmatched.rest, sohyp help query bogusprints thequerygroup table and exits 0, whilehyp query bogus --helpexits 2 (src/core/cli/group_help.js:157) andhyp help graph bogusexits 2. Same user error, three answers.Why deferred: the page shown is the right command's page and lists the valid subcommands, so the typo is self-correcting; nothing wrong executes. The obvious guard (refuse leftover non-flag tokens) is wrong on this codebase because
backfillis a group parent that legitimately takes positionals (src/core/cli/core_commands.js:150-153), and letting the group command run instead would reintroduce thehyp help purge <path>hazard (src/core/commands/backfill.js:50does not handle a stray--help). A correct fix needs a way to tell a pure group (built bymakeGroupCommand) apart from a group whose bare command takes positionals: a new marker onCommandRegistrationor aWeakSetexported fromsrc/core/cli/group_help.js. That is new public API surface plus a design decision LLP 0270 does not settle.2.
hyp help zzzreportsunknown command 'help zzz'(round 2, finding 2, nit)src/core/cli/dispatch.js:404echoestypedArgv.join(' '), so the diagnostic quotes the pair as though ahelpnamespace exists, while the token that is actually unknown iszzz. The current wording is deliberate (it echoes exactly what the user typed) and is asserted bytest/core/cli/help-metadata.test.js:195. If the other spelling is preferred,typedArgv.slice(1)on this path is the whole change, plus the test update.3. PR body understates the test file and misreports the suite baseline (round 2, finding 3, nit)
The PR body says 11 assertions with 10 of 11 failing on master;
test/core/cli/help-metadata.test.jscontains 14test(...)cases. The body also reports 4207 pass / 22 fail as the local baseline, while a clean-environment run on the same head gives 4497 pass / 0 fail, so the 22 failures were environmental. No code impact; a body edit or a note in the merge commit closes it.4. Blanket
--platformrefusal also rejects the matching host (round 1, finding 6, design call)src/core/commands/daemon.js:457: the rule isp.platform !== undefined && !p['dry-run'], sohyp daemon install --platform linuxis refused on Linux, where it was a correct no-op-equivalent. LLP 0270#platform-is-a-render-overriderests its rationale on cross-platform breakage only; a rule ofp.platform !== process.platformwould be exactly as safe. The blanket form is defensible (mirrors--json requires --dry-run) and is settled in an Accepted LLP, so changing it means a new LLP extending 0270, either narrowing the rule or restating the rationale as "any--platform, matching or not". Exit is a clean 2 with a clear message and no in-repo caller is broken, so this is a documentation-honesty and ergonomics call, not a defect.5.
runDaemonInstallstill prints its own usage string (round 1, finding 7, informational)src/core/commands/daemon.js:178keeps a hand-maintainedusage:line reachable when--helpis not the first token after the command (hyp daemon install --dry-run --help). Pre-existing tension with LLP 0009 "a command body never prints its own usage"; the fix is a cross-command cleanup inparseCommandArgv's help branch, out of scope for #835.Not carried forward
Round 1 finding 8 (branch behind
origin/master) is resolved: head590d4f4-era merge brought the branch to 0 commits behind at triage time.Backlink: PR #845 (fixes #835). Review records: the two
neutral-reviewcomments on that PR, for heads649f02b3and590d4f43.