Skip to content

Name the issue derivePickedClients resolves, not only the decision - #598

Merged
philcunliffe merged 1 commit into
masterfrom
fix/issue-597
Aug 7, 2026
Merged

Name the issue derivePickedClients resolves, not only the decision#598
philcunliffe merged 1 commit into
masterfrom
fix/issue-597

Conversation

@philcunliffe

Copy link
Copy Markdown
Contributor

One added @ref on derivePickedClients (src/core/cli/walkthrough.js), naming LLP 0177 alongside the existing @ref LLP 0180#decision.

Why this is worth a PR

LLP 0177's fix shipped in #594, but no @ref LLP 0177 existed anywhere in the tree, so neutral observe reported it as backlog:

gaps: [{ "family": "pipeline", "target": "llp#177",
         "reason": "uncovered request - needs a design" }]

An uncovered request is the Designer's input. Acting on that gap would mint a fresh design LLP for a bug fixed hours earlier and push integration/picker-enables-openclaw-without-attaching. The reconciler tick that opened this deliberately skipped it.

Same shape as #590 (LLP 0174 left Accepted after its change set shipped, re-deriving as implementable). Both are cases where the work is done but the marker that makes "done" derivable was never written.

LLP 0180 does cite 0177 heavily, in **Related:** and in its Consequences ("LLP 0177 is resolved"), but coverage derives from @ref annotations rather than Related: lines or prose, so none of it registered.

On the annotation itself

CLAUDE.md warns against annotating mechanically, so to be explicit about why this one earns its place: it records that derivePickedClients exists in this shape because the picker's client list was a hardcode the manifest could not reach. That is the motivation for the whole derivation, and it is not visible from the code or the filename. The sibling @ref LLP 0180#decision names the decision taken; this one names the defect that forced it.

Verification

neutral observe --json reports backlog: [] and no llp#177 gap once this lands.

npm test: 3375 tests, 3374 pass, 1 skipped, 0 fail. npm run typecheck: clean.

Fixes #597

LLP 0177's fix shipped in #594, but no @ref pointed at it anywhere, so
neutral observe reported it as an uncovered request - the Designer's input.
Acting on that gap would mint a design and an integration branch for a bug
already fixed, the same shape as #589.

LLP 0180 cites 0177 in Related: and in prose, but coverage derives from
@ref annotations, so none of it registered.

The ref earns its place: derivePickedClients exists in this shape because
the picker's client list was a hardcode the manifest could not reach, which
is not visible from the code or the filename.

Fixes #597
@philcunliffe

Copy link
Copy Markdown
Contributor Author

Review: clean

Disclosure: reviewed by the reconciler that authored it, not by an independent agent. A deliberate proportionality call for a two-line comment-only diff, recorded so a reader can weigh it. Anything with behavior in it gets an independent reviewer.

Diff

One file, two added lines, comment-only:

+ * @ref LLP 0177 [implements]: the picker enabled OpenClaw and left it unattached, because
+ *   this list was a hardcode the manifest could not reach

git diff --name-only origin/master...origin/fix/issue-597 returns src/core/cli/walkthrough.js and nothing else. No executable change: git diff -w on the function body is empty.

Is the annotation honest?

That is the only thing worth checking here, since CLAUDE.md warns against annotating mechanically and a ref added to satisfy a predicate would be exactly that.

  • Does it say something the code and filename do not? Yes. derivePickedClients reads as a derivation; nothing in it records that it exists because the previous hardcoded list left OpenClaw enabled but unattached. That is the defect LLP 0177 reports.
  • Does it duplicate the sibling ref? No. @ref LLP 0180#decision names the decision taken (derive rather than enumerate). This one names the defect that forced the decision. Different facts.
  • Is the target real? llp/0177-picker-enables-openclaw-without-attaching.issue.md exists on master at Status: Accepted with Extended-by: LLP 0180. No anchor is cited, so there is no anchor to resolve.
  • Is it attached? It sits inside the existing JSDoc block directly above the construct, with no blank line, so attachment holds.

Does it achieve its purpose?

The gap it closes is real: refs: [] on the backlog entry, with no @ref LLP 0177 anywhere in the tree, made an already-fixed issue read as the Designer's input. neutral observe --json should report backlog: [] and no llp#177 gap once this lands. If it does not, this PR did not achieve its purpose and the residual should be investigated rather than worked around.

Gates

CI and llp-check green at 674b2e66; MERGEABLE. npm test 3375 pass / 0 fail and npm run typecheck clean were run pre-push, though for a comment-only diff the meaningful signal is llp-check.

@philcunliffe
philcunliffe marked this pull request as ready for review August 4, 2026 04:58
@philcunliffe philcunliffe added the neutral:approved neutral reviewed this and holds it for a maintainer merge (own or adopted PR; LLP 0025/0030) label Aug 4, 2026
@philcunliffe
philcunliffe merged commit f447447 into master Aug 7, 2026
9 checks passed
@philcunliffe
philcunliffe deleted the fix/issue-597 branch August 7, 2026 21:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

neutral:approved neutral reviewed this and holds it for a maintainer merge (own or adopted PR; LLP 0025/0030)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

LLP 0177 has no @ref after its fix shipped, so neutral reports it as an uncovered request

1 participant