Skip to content

Route JSON-mode plugin registration logs to stderr#84741

Merged
clawsweeper[bot] merged 2 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-84684
May 21, 2026
Merged

Route JSON-mode plugin registration logs to stderr#84741
clawsweeper[bot] merged 2 commits into
mainfrom
clawsweeper/automerge-openclaw-openclaw-84684

Conversation

@clawsweeper

@clawsweeper clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor

Makes #84684 merge-ready for the ClawSweeper automerge loop.
The edit pass should inspect the live PR diff, review comments, and failing checks; rebase if needed; keep the contributor branch credited; and stop only when validation is green or an external blocker is proven.

ClawSweeper 🐠 replacement reef notes:

  • Repair fallback: GitHub rejected the repair branch push because it updates workflow files and the ClawSweeper app token does not have workflows permission

Inherited issue-closing references from the source PR:
Fixes #84293

Co-author credit kept:

fish notes: model gpt-5.5, reasoning high; reviewed against c9d0867.

@clawsweeper clawsweeper Bot added cli CLI command changes commands Command implementations size: M clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge proof: supplied External PR includes structured after-fix real behavior proof. labels May 21, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the commands Command implementations label May 21, 2026
@clawsweeper clawsweeper Bot added the proof: sufficient ClawSweeper judged the real behavior proof convincing. label May 21, 2026
@clawsweeper clawsweeper Bot added P2 Normal backlog priority with limited blast radius. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. clawsweeper Tracked by ClawSweeper automation labels May 21, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the proof: supplied External PR includes structured after-fix real behavior proof. label May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor Author

Codex review: passed.

Workflow note: Future ClawSweeper reviews update this same comment in place.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.

Summary
The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and nodes lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.

Reproducibility: yes. for source-level reproduction: the linked report shows openclaw nodes list --json 2> /dev/null emitting plugin logs before JSON, and current main shows the nodes registration path bypassing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

PR rating
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Summary: Good, likely mergeable PR: proof directly exercises the stdout/stderr behavior and the patch is focused with regression coverage.

Rank-up moves:

  • Let exact-head CI finish before merge.
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

Real behavior proof
Sufficient (terminal): The source PR follow-up supplies terminal proof from an actual post-fix CLI run with stdout and stderr captured separately, showing parseable JSON stdout and noisy plugin logs on stderr.

Risk before merge

  • Exact-head GitHub checks were still in progress during this read-only review, so merge should remain gated on required CI completing successfully.

Maintainer options:

  1. Decide the mitigation before merge
    Merge the replacement PR after exact-head CI passes, preserve the credited contributor attribution, and let it close the linked JSON stdout bug.
  2. Pause or close
    Do not merge this PR until maintainers decide whether the risk is worth taking.

Next step before merge
No repair lane is needed because no blocking finding remains; keep this on the normal automerge/maintainer path and wait for exact-head checks.

Security
Cleared: The diff only touches CLI routing code, a focused test, and changelog text; it does not change dependencies, CI workflows, permissions, credentials, install scripts, or secret handling.

Review details

Best possible solution:

Merge the replacement PR after exact-head CI passes, preserve the credited contributor attribution, and let it close the linked JSON stdout bug.

Do we have a high-confidence way to reproduce the issue?

Yes for source-level reproduction: the linked report shows openclaw nodes list --json 2> /dev/null emitting plugin logs before JSON, and current main shows the nodes registration path bypassing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Is this the best way to solve the issue?

Yes. The shared helper is a narrow maintainable fix because it reuses the existing root CLI JSON behavior and applies it to the nodes registration gap without changing non-JSON registration behavior.

Label changes:

  • add status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The source PR follow-up supplies terminal proof from an actual post-fix CLI run with stdout and stderr captured separately, showing parseable JSON stdout and noisy plugin logs on stderr.
  • remove status: 👀 ready for maintainer look: Current PR status label is status: 🚀 automerge armed.

Label justifications:

  • P2: The PR fixes a normal-priority CLI automation bug where JSON-mode stdout can be contaminated by plugin startup logs.
  • rating: 🐚 platinum hermit: Current PR rating is 🐚 platinum hermit because proof is 🦞 diamond lobster, patch quality is 🐚 platinum hermit, and Good, likely mergeable PR: proof directly exercises the stdout/stderr behavior and the patch is focused with regression coverage.
  • status: 🚀 automerge armed: This PR is in ClawSweeper's automerge lane. Sufficient (terminal): The source PR follow-up supplies terminal proof from an actual post-fix CLI run with stdout and stderr captured separately, showing parseable JSON stdout and noisy plugin logs on stderr.
  • proof: sufficient: Contributor real behavior proof is sufficient. The source PR follow-up supplies terminal proof from an actual post-fix CLI run with stdout and stderr captured separately, showing parseable JSON stdout and noisy plugin logs on stderr.

What I checked:

  • Current main nodes gap: Current main registers nodes plugin CLI commands directly with { mode: "lazy", primary: "nodes" }, so this sub-CLI path bypasses the existing JSON-mode stderr guard. (src/cli/nodes-cli/register.ts:42, cd019cfa412b)
  • Current main root guard: The root lazy plugin registration path already detects --json before the argument terminator and temporarily sets loggingState.forceConsoleToStderr; the PR reuses that behavior instead of inventing a different policy. (src/cli/run-main.ts:743, cd019cfa412b)
  • Logging contract: Console and subsystem logging write to stderr when loggingState.forceConsoleToStderr is set, which is the existing mechanism for keeping JSON stdout parseable. (src/logging/console.ts:263, cd019cfa412b)
  • PR implementation: The patch adds withConsoleLogsRoutedToStderrForJson, preserves terminator-aware --json detection, and wraps both root and nodes plugin registration paths. (src/cli/json-output-mode.ts:3, c9d0867db0ca)
  • PR regression coverage: The added test verifies that nodes list --json enables stderr routing during plugin registration and that nodes invoke -- --json does not treat pass-through --json as a CLI JSON flag. (src/cli/nodes-cli.plugin-registration.test.ts:48, c9d0867db0ca)
  • Real behavior proof: The source PR follow-up reports an actual post-fix CLI run with stdout and stderr captured separately: stdout parsed as JSON and proof plugin registration logs appeared only on stderr. (f7b7c3c14eb3)

Likely related people:

  • vincentkoc: Commit 2d6fd54 added the current root lazy plugin registration JSON stdout protection that this PR extracts and reuses. (role: introduced root JSON registration guard; confidence: high; commits: 2d6fd54ebdfe; files: src/cli/run-main.ts, src/cli/run-main.exit.test.ts)
  • cgdusek: Commit 0e1da03 added prior routing of plugin logs to stderr for JSON output modes in CLI startup paths. (role: introduced JSON-mode plugin log routing; confidence: high; commits: 0e1da034c24b; files: src/cli/program/preaction.ts, src/cli/route.ts)
  • mbelinky: Commit b7aac92 introduced the nodes CLI registration surface that is missing the JSON-mode guard on current main. (role: nodes CLI feature introducer; confidence: medium; commits: b7aac92ac451; files: src/cli/nodes-cli/register.ts, src/cli/nodes-cli.coverage.test.ts)
  • steipete: Recent path history shows repeated maintenance of src/cli/run-main.ts and src/cli/nodes-cli/register.ts, including shared CLI startup/routing refactors. (role: recent CLI area contributor; confidence: medium; commits: a21709d041fe, 330ba1fa3194; files: src/cli/run-main.ts, src/cli/nodes-cli/register.ts, src/cli/program/preaction.ts)

Codex review notes: model gpt-5.5, reasoning high; reviewed against cd019cfa412b.

@clawsweeper clawsweeper Bot added status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane. and removed status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels May 21, 2026
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor Author

ClawSweeper PR egg

✨ Hatched: 🥚 common Cosmic Patch Peep

Hatch command

Comment @clawsweeper hatch when this PR is hatchable.

Hatchability rules:

  • Merged PRs are hatchable.
  • Open PRs are hatchable when they are status: 👀 ready for maintainer look, status: 🚀 automerge armed, or labeled clawsweeper:automerge.
  • Closed unmerged PRs are hatchable only when one of those hatchable labels is still present in the durable record.

Rarity: 🥚 common.
Trait: sleeps inside passing CI.
Image traits: location review cove; accessory commit compass; palette violet, aqua, and starlight; mood curious; pose sitting proudly on a smooth stone; shell starlit enamel shell; lighting moonlit rim light; background gentle dashboard dots.
Share on X: post this hatch
Copy: My PR egg hatched a 🥚 common Cosmic Patch Peep in ClawSweeper.

What is this egg doing here?
  • Eggs appear after the PR passes real-behavior proof. It is here for vibes, not verdicts: it does not change labels, ratings, merge decisions, or automation.
  • The shell reacts to review momentum: open follow-up work warms it up, re-review makes it wobble, and a clean final review lets it hatch.
  • Hatchability usually comes from sufficient real-behavior proof, no blocking P0/P1/P2 findings, no security attention needed, and clean correctness. A merged PR is already final, so merge makes the egg hatchable independently.
  • The hatch is seeded from this repository and PR number, so the same PR keeps the same creature; the reviewed head SHA can only change safe visual details.
  • Rarity is just collectible sparkle: 🥚 common, 🌱 uncommon, 💎 rare, ✨ glimmer, and 🌈 legendary.

@clawsweeper clawsweeper Bot merged commit b3ec4f0 into main May 21, 2026
192 of 206 checks passed
@clawsweeper clawsweeper Bot deleted the clawsweeper/automerge-openclaw-openclaw-84684 branch May 21, 2026 00:35
@clawsweeper

clawsweeper Bot commented May 21, 2026

Copy link
Copy Markdown
Contributor Author

🦞✅
ClawSweeper merged this PR after the passing review.

Source: clawsweeper[bot]
Feedback: structured ClawSweeper verdict: pass (sha=c9d0867db0ca03125a8cf811bc47d1de7e5553e8)
Merge status: merged by ClawSweeper automerge
Merged at: 2026-05-21T00:35:40Z
Merge commit: b3ec4f08d141

What merged:

  • The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and nodes lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
  • Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2> ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:

  • PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

The automerge loop is complete.

Automerge progress:

  • 2026-05-21 00:35:27 UTC review passed c9d0867db0ca (structured ClawSweeper verdict: pass (sha=c9d0867db0ca03125a8cf811bc47d1de7e555...)
  • 2026-05-21 00:35:43 UTC merged c9d0867db0ca (merged by ClawSweeper automerge)

SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 24, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
github-actions Bot pushed a commit to Desicool/openclaw that referenced this pull request May 24, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
galiniliev pushed a commit to galiniliev/openclaw that referenced this pull request May 25, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SebTardif pushed a commit to SebTardif/openclaw that referenced this pull request May 26, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
jameslcowan pushed a commit to jameslcowan/openclaw that referenced this pull request Jun 2, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
SYU8384 pushed a commit to SYU8384/openclaw that referenced this pull request Jun 3, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
sablehead pushed a commit to sablehead/openclaw that referenced this pull request Jun 10, 2026
Summary:
- The PR extracts JSON-mode console-to-stderr routing into a shared CLI helper, wraps root and `nodes` lazy plugin registration, adds nodes registration coverage, and adds a changelog entry.
- Reproducibility: yes. for source-level reproduction: the linked report shows `openclaw nodes list --json 2>  ... ssing the existing JSON stderr guard. I did not run the live Helm/container repro in this read-only review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: Route JSON-mode plugin registration logs to stderr

Validation:
- ClawSweeper review passed for head c9d0867.
- Required merge gates passed before the squash merge.

Prepared head SHA: c9d0867
Review: openclaw#84741 (comment)

Co-authored-by: Andy Ye <35905412+TurboTheTurtle@users.noreply.github.com>
Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: takhoffman
Co-authored-by: takhoffman <781889+takhoffman@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

clawsweeper:automerge Maintainer opted this PR into bounded ClawSweeper-reviewed automerge clawsweeper Tracked by ClawSweeper automation cli CLI command changes extensions: openrouter P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: S status: 🚀 automerge armed This PR is in ClawSweeper's automerge lane.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Suppress non-JSON output when CLI option --json is specified

1 participant