Skip to content

fix: stabilize LCO 1.6 for Hermes-first MCP - #792

Merged
100yenadmin merged 7 commits into
mainfrom
fix/1.6-hermes-stabilization
Jul 28, 2026
Merged

fix: stabilize LCO 1.6 for Hermes-first MCP#792
100yenadmin merged 7 commits into
mainfrom
fix/1.6-hermes-stabilization

Conversation

@100yenadmin

@100yenadmin 100yenadmin commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

Stabilizes the LCO 1.6 candidate for Hermes-first stdio MCP use:

  • makes JSON-RPC notifications silent and prevents notification-form tool execution
  • preserves object structured results and wraps arrays, scalars, and null as { "result": value }
  • makes MCP lco_find query the existing index by default while retaining explicit refresh
  • adds public-safe Hermes smoke and release-readiness commands
  • corrects product/release copy: published stable remains 1.5.0; source 1.6.0 is a candidate

Validation

Candidate SHA: edcdc78c89364b3f3cd3aeacd56f906ae950e3f4

  • npm run build
  • focused Node suites: 118 passed
  • OpenClaw generated manifests are in sync
  • packed candidate installed into an isolated prefix
  • lco qa-lab cli-mcp-smoke --strict: pass
  • lco hermes smoke --strict: pass, all 14 Eva tools present, default find 15 ms
  • lco release hermes-readiness --strict: pass
  • Hermes-installed Python MCP client 1.26.0 canary: pass
    • initialization and tool listing: 51.207 ms
    • 20 persistent-process warm searches: p95 15.449 ms, max 19.498 ms
    • every search reported index_skipped_by_default
  • sanitized evidence privacy scan: pass, no blockers or warnings

Eval: lco-hermes-1.6-stabilization-v1

Evidence: /Volumes/LEXAR/Codex/evidence/lco-hermes-first/2026-07-28/

Scope boundary

This establishes PR readiness and isolated Hermes-client compatibility for the
named SHA. It does not merge this PR, merge #785, publish npm, create a tag or
GitHub Release, change Eva's active Hermes profile/database, run live Codex
control, or prove active-Eva/customer runtime safety.

PR #785 remains separate and has no file overlap with this candidate.

Closes #786
Closes #788
Closes #790
Tracks #791
Tracks #673

Summary by CodeRabbit

  • New Features
    • Added Hermes-first local stdio MCP guidance, including a Hermes config.yaml example.
    • Added loo hermes smoke and loo release hermes-readiness for evidence-based candidate validation.
  • Behavior Changes
    • lco_find/loo_find refresh/index only when index: true; default behavior skips indexing and records the reason.
    • Hardened MCP JSON-RPC handling for notification safety and structured tool-result validation, including latency checks.
  • Documentation
    • Updated README/VISION/setup and release-gate docs to emphasize Hermes-first and clarify candidate vs published release authority; revised release/roadmap wording.
  • Tests
    • Expanded smoke/readiness, MCP contract, indexing default suppression, notification-robustness, and CLI help assertions.

@coderabbitai

coderabbitai Bot commented Jul 28, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR makes Hermes the primary stdio MCP path, fixes notification and structured-content handling, makes lco_find indexing explicitly opt-in, adds Hermes smoke/readiness CLI reporting, and updates setup, release, and candidate-claim documentation.

Changes

Hermes MCP stabilization

Layer / File(s) Summary
MCP contract and indexing behavior
packages/mcp-server/*, packages/core/src/index.ts, openclaw.plugin.json, packages/openclaw-plugin/*, tests/cli-find.test.ts, tests/mcp-hermes-contract.test.ts
MCP notifications no longer produce responses, non-object structured results are wrapped, and lco_find distinguishes explicit refresh, explicit skip, and default skip.
Smoke, readiness, and CLI orchestration
packages/cli/src/*, tests/hermes-*.test.ts, tests/cli-mcp-product-smoke.test.ts, tests/cli-help.test.ts
Adds structured MCP probe diagnostics, Hermes smoke/readiness reports, corresponding CLI commands, strict-mode handling, and regression coverage.
Hermes positioning and setup
README.md, VISION.md, docs/SETUP.md, docs/HERMES_ADAPTER_BOUNDARY.md, package.json, skills/lossless-openclaw-orchestrator/*, tests/lco-first-docs.test.ts
Positions Hermes as the primary stdio MCP agent path, retains OpenClaw compatibility, and documents configuration, indexing, and verification commands.
Release gates and claim validation
docs/BETA_RELEASE_RUNBOOK.md, docs/CLAIM_AUDIT.md, docs/RELEASE_CHECKLIST.md, docs/releases/*, tests/release-claim-audit.test.ts
Adds Hermes candidate gates and evidence requirements and clarifies that publication authorities determine stable-release claims.

Estimated code review effort: 4 (Complex) | ~60 minutes

Possibly related issues

  • #791: Tracks the Hermes-first stabilization work implemented here, including protocol, indexing, smoke, and readiness changes.

Possibly related PRs

Suggested labels: documentation, safety, orchestrator, mcp

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the Hermes-first MCP stabilization work.
Linked Issues check ✅ Passed The changes address #786, #788, and #790 with protocol suppression, structured-content normalization, and default no-refresh indexing.
Out of Scope Changes check ✅ Passed The docs, CLI, and test updates all align with the Hermes-first stabilization objectives and no clear unrelated changes stand out.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/1.6-hermes-stabilization

Comment @coderabbitai help to get the list of available commands.

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: edcdc78c89364b3f3cd3aeacd56f906ae950e3f4
Updated: 2026-07-28T18:47:54.091Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@coderabbitai coderabbitai Bot added codex Codex session indexing or control mcp MCP server and tool surface orchestrator Orchestrator-agent workflow, context retention, and session management safety Safety, approval, privacy, or control-boundary issue labels Jul 28, 2026

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: edcdc78c89364b3f3cd3aeacd56f906ae950e3f4 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +45/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Low
docs/SETUP.md modified +46/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +63/-7 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-readiness.ts added +177/-0 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-smoke.ts added +160/-0 Changed file Low
packages/cli/src/main.ts modified +180/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Low
packages/mcp-server/src/tools.ts modified +9/-2 Changed file Low
packages/openclaw-plugin/openclaw.plugin.json modified +2/-2 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +23/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +9/-9 Test coverage Low
tests/hermes-readiness.test.ts added +142/-0 Test coverage Low
tests/hermes-smoke.test.ts added +202/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +3/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 2 (P0: 0, P1: 0, P2: 0, P3: 2).
Dropped findings before posting: 1. High-severity findings: 0.

Risk Taxonomy

  • Flaky test risk: 1
  • Migration: 1

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/cli/src/hermes-readiness.ts

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: edcdc78c89

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/cli/src/hermes-readiness.ts Outdated
Comment thread README.md Outdated
Comment thread packages/mcp-server/src/tools.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread docs/RELEASE_CHECKLIST.md
@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: ef7a13821405e45af347eca028071dff0005581a
Updated: 2026-07-28T18:56:06.903Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: ef7a13821405e45af347eca028071dff0005581a into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +45/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Low
docs/SETUP.md modified +46/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +69/-7 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-readiness.ts added +189/-0 Changed file Low
packages/cli/src/hermes-smoke.ts added +160/-0 Changed file Moderate: validated P2 finding
packages/cli/src/main.ts modified +180/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Moderate: validated P3 finding
packages/mcp-server/src/tools.ts modified +9/-2 Changed file Moderate: validated P2 finding
packages/openclaw-plugin/openclaw.plugin.json modified +2/-2 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +23/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +61/-9 Test coverage Low
tests/hermes-readiness.test.ts added +149/-0 Test coverage Low
tests/hermes-smoke.test.ts added +202/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +3/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 4 (P0: 0, P1: 0, P2: 2, P3: 2).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • API compatibility: 1
  • Flaky test risk: 1
  • Runtime correctness: 1
  • Security boundary: 1

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/mcp-server/src/tools.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/mcp-server/src/server-runtime.ts
coderabbitai[bot]
coderabbitai Bot previously requested changes Jul 28, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 9

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
tests/cli-mcp-product-smoke.test.ts (1)

285-316: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Inline toolCallProbe type is stale, forcing a manual cast.

The test's local narrowing type only declares toolName/ok/contentItemCount/contentKinds/structuredContentPresent, so checking structuredContentObject needs a cast at L315. Widening the inline type to include the newer ToolCallProbe fields (structuredContentObject, structuredContentWrappedResult, reasonCodes, durationMs) would drop the cast and keep the test in sync with the real shape.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/cli-mcp-product-smoke.test.ts` around lines 285 - 316, The inline
toolCallProbe type in the test is missing newer ToolCallProbe fields. Update
that type to include structuredContentObject, structuredContentWrappedResult,
reasonCodes, and durationMs, then access structuredContentObject directly and
remove the manual cast.
packages/cli/src/cli-mcp-product-smoke.ts (1)

217-226: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

Early resolve() bypasses finish(), leaving notification-silence fields unset.

The runtimeRootFactory() throw path resolves directly instead of routing through finish(), so notificationSilenceReady/invalidNotificationResponseCount are never attached to this result. Downstream, createCliMcpProductSmokeReport treats a missing notificationSilenceReady as true (mcpProbe.notificationSilenceReady !== false), so a setup failure silently reports "notification silence proven" in evidence even though notification behavior was never exercised. Overall ok still fails (via mcpReady), but the individual field is misleading for anyone auditing the JSON evidence.

🩹 Proposed fix
     } catch {
-      resolve({
-        ...packageDefect("mcp_isolated_runtime_setup_failed"),
-        tools: [],
-        toolCall: failedToolCall(toolCallName, "mcp_isolated_runtime_setup_failed")
-      });
+      resolve({
+        ...packageDefect("mcp_isolated_runtime_setup_failed"),
+        tools: [],
+        toolCall: failedToolCall(toolCallName, "mcp_isolated_runtime_setup_failed"),
+        notificationSilenceReady: false,
+        invalidNotificationResponseCount: 0
+      });
       return;
     }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/cli-mcp-product-smoke.ts` around lines 217 - 226, Route the
runtimeRootFactory() failure through finish() instead of resolving directly,
ensuring the resulting mcp probe includes notificationSilenceReady and
invalidNotificationResponseCount. Preserve the existing
mcp_isolated_runtime_setup_failed defect, empty tools, and failed tool call
while making the failure explicitly indicate notification silence was not
proven.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/BETA_RELEASE_RUNBOOK.md`:
- Around line 253-274: Update the Hermes smoke documentation around the
“isolated Hermes client canary” to say it uses an isolated temporary database,
not a protected copy of the local LCO database. Keep the existing cleanup and
shared-evidence restrictions, and do not introduce a separate manual validation
flow.

In `@packages/cli/src/hermes-smoke.ts`:
- Around line 79-99: Update the Hermes smoke search measurement around
createCliMcpProductSmokeReport so the latency threshold reflects a warm
existing-index lco_find search: perform a throwaway lco_find warm-up in the same
MCP runtime before recording the representative find duration, or consistently
rename the threshold and related readiness/reporting symbols to describe cold
first-query latency.
- Line 1: Update createCliMcpProductSmokeReport so the recorded findLatencyMs
measures a warm search by performing a throwaway lco_find tools/call before
starting the timer, while keeping the existing timed search and report behavior
unchanged.

In `@packages/mcp-server/src/mcp-protocol.ts`:
- Around line 9-11: Update serializeMcpTextContent to catch JSON.stringify
failures for non-serializable results such as BigInt or circular references, and
return a safe fallback string instead of propagating the exception. Preserve the
existing pretty-printed JSON output and null fallback for successfully handled
values.

In `@packages/mcp-server/src/server-runtime.ts`:
- Line 77: Remove the unreachable responseAllowed guard from the catch block in
the server runtime error-handling flow. Keep the existing earlier early-return
logic and simplify the catch path so it proceeds directly with its error
handling.

In `@README.md`:
- Around line 371-373: Update the README section structure around the Hermes
configuration to make Hermes discoverable from a heading: rename the existing
“OpenClaw And MCP” heading to include Hermes, or create a dedicated Hermes
section while preserving the setup content and clear public entrypoints.

In `@tests/hermes-smoke.test.ts`:
- Around line 55-83: Add a separate Hermes smoke test using fakeHermesMcpServer
and configure it to proactively emit a genuine notification without an id
property, such as a log message, during the flow. Assert that
createHermesSmokeReport does not classify this message as
mcp_notification_response_invalid and preserves the intended
notificationSilenceReady outcome, while retaining the existing id:null violation
test unchanged.

In `@tests/release-claim-audit.test.ts`:
- Around line 194-201: Update the README version extraction logic near the
existing `Current stable:` matcher in `tests/release-claim-audit.test.ts` to
recognize `Published stable at this candidate snapshot:` followed by the version
value. Ensure subsequent release-claim assertions use the extracted README
version rather than falling back to `packageVersion`, or reuse a single shared
version source if that is the established pattern.

In `@VISION.md`:
- Around line 18-24: Update the Tier 1 Hermes candidate-release criteria in
VISION.md to replace “default indexed search” with “default existing-index
search without refresh.” Preserve the surrounding initialization, notification,
tool-registration, structured-result, and latency requirements, and align the
wording with the MCP tools configuration using indexDecision:
"skipped_by_default".

---

Outside diff comments:
In `@packages/cli/src/cli-mcp-product-smoke.ts`:
- Around line 217-226: Route the runtimeRootFactory() failure through finish()
instead of resolving directly, ensuring the resulting mcp probe includes
notificationSilenceReady and invalidNotificationResponseCount. Preserve the
existing mcp_isolated_runtime_setup_failed defect, empty tools, and failed tool
call while making the failure explicitly indicate notification silence was not
proven.

In `@tests/cli-mcp-product-smoke.test.ts`:
- Around line 285-316: The inline toolCallProbe type in the test is missing
newer ToolCallProbe fields. Update that type to include structuredContentObject,
structuredContentWrappedResult, reasonCodes, and durationMs, then access
structuredContentObject directly and remove the manual cast.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8c782ade-029c-41dc-950a-2226efe87c78

📥 Commits

Reviewing files that changed from the base of the PR and between 4384302 and edcdc78.

📒 Files selected for processing (28)
  • README.md
  • VISION.md
  • docs/BETA_RELEASE_RUNBOOK.md
  • docs/CLAIM_AUDIT.md
  • docs/HERMES_ADAPTER_BOUNDARY.md
  • docs/RELEASE_CHECKLIST.md
  • docs/SETUP.md
  • docs/releases/CHANGELOG.md
  • docs/releases/RELEASE_NOTES_1.6.0.md
  • openclaw.plugin.json
  • package.json
  • packages/cli/src/cli-mcp-product-smoke.ts
  • packages/cli/src/hermes-readiness.ts
  • packages/cli/src/hermes-smoke.ts
  • packages/cli/src/main.ts
  • packages/core/src/index.ts
  • packages/mcp-server/src/mcp-protocol.ts
  • packages/mcp-server/src/server-runtime.ts
  • packages/mcp-server/src/tools.ts
  • packages/openclaw-plugin/openclaw.plugin.json
  • tests/cli-find.test.ts
  • tests/cli-help.test.ts
  • tests/cli-mcp-product-smoke.test.ts
  • tests/hermes-readiness.test.ts
  • tests/hermes-smoke.test.ts
  • tests/lco-first-docs.test.ts
  • tests/mcp-hermes-contract.test.ts
  • tests/release-claim-audit.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: test
🧰 Additional context used
📓 Path-based instructions (2)
docs/SETUP.md

📄 CodeRabbit inference engine (AGENTS.md)

Keep detailed first-run instructions in docs/SETUP.md.

Files:

  • docs/SETUP.md
README.md

📄 CodeRabbit inference engine (AGENTS.md)

README.md: Keep README.md as the public landing page: product value, install, setup, first workflow, OpenClaw/MCP entrypoints, safety boundaries, and links.
Do not put active sprint ledgers, long issue history, exhaustive release-gate command inventories, or internal agent maintenance loops into the public README.md; link VISION.md, GitHub trackers, or runbooks instead.

Files:

  • README.md
🪛 ast-grep (0.45.0)
tests/mcp-hermes-contract.test.ts

[warning] 1-1: Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)

packages/cli/src/cli-mcp-product-smoke.ts

[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)

🪛 LanguageTool
VISION.md

[typographical] ~31-~31: To join two clauses or introduce examples, consider using an em dash.
Context: ...nly the compatibility surface. Tier 3 - Generic MCP (any harness). Any other M...

(DASH_RULE)

README.md

[style] ~180-~180: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...s the active prerelease train. - next is reserved for release candidates. - npm ...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

🔇 Additional comments (34)
README.md (1)

10-11: LGTM!

Also applies to: 106-107, 128-129, 145-146, 174-182, 307-307, 331-338, 384-386, 391-393

VISION.md (1)

7-9: LGTM!

Also applies to: 26-30, 54-64, 77-84, 93-96

docs/HERMES_ADAPTER_BOUNDARY.md (1)

5-9: LGTM!

Also applies to: 21-21, 30-34, 46-50

docs/SETUP.md (3)

314-316: LGTM!

Also applies to: 337-340, 351-353, 355-362, 373-378


341-349: 🎯 Functional Correctness

Verify the duplicated Hermes database-path examples consistently. YAML environment values containing ~ are not automatically shell-expanded; confirm Hermes or LCO expands the path before opening the database.

  • docs/SETUP.md#L341-L349: document a supported absolute-path or expansion form if needed.
  • README.md#L374-L382: keep the landing-page example identical to the verified setup form.

364-370: 🩺 Stability & Availability

Ensure both readiness examples document the required package-smoke producer. The readiness implementation requires --package-smoke, while the shown Hermes smoke command produces only hermes-smoke.json.

  • docs/SETUP.md#L364-L370: add or reference the command that creates /tmp/lco-package-smoke/cli-mcp-smoke.json.
  • README.md#L387-L388: add the same prerequisite or point to a guaranteed existing artifact.
package.json (1)

4-4: LGTM!

tests/lco-first-docs.test.ts (1)

92-99: LGTM!

tests/mcp-hermes-contract.test.ts (2)

1-2: Static-analysis child_process warning is a false positive.

spawn is invoked with a fixed process.execPath and an argument array (no shell concatenation of untrusted input) — already the safe pattern the rule recommends.

Source: Linters/SAST tools


13-22: LGTM! Thorough end-to-end coverage of notification suppression, structured-content normalization, and error-code behavior over real stdio.

Also applies to: 24-145

packages/mcp-server/src/mcp-protocol.ts (1)

1-7: LGTM!

Also applies to: 13-15

packages/mcp-server/src/server-runtime.ts (2)

39-48: LGTM! Cleanly distinguishes notifications from requests and prevents notification-based tool dispatch, matching the #786 objective.


232-240: LGTM!

packages/mcp-server/src/tools.ts (1)

569-569: LGTM! indexDecision tri-state cleanly matches the opt-in indexing contract and is exercised by the new cli-find.test.ts coverage.

Also applies to: 582-588, 613-613

packages/core/src/index.ts (2)

17856-17856: LGTM!

Also applies to: 17914-17914


17872-17876: 🎯 Functional Correctness

No change needed
indexDecision === "requested" cannot reach the fallback here: indexed is only set when shouldIndex is true, and createRecallIndexSummary() reports attempted: true whenever either indexer runs. The fallback only covers skipped_by_flag and skipped_by_default.

			> Likely an incorrect or invalid review comment.
packages/openclaw-plugin/openclaw.plugin.json (1)

202-202: LGTM! Description text matches the new opt-in indexing behavior implemented in tools.ts.

Also applies to: 2023-2023

openclaw.plugin.json (1)

202-202: LGTM! Matches the parallel update in packages/openclaw-plugin/openclaw.plugin.json.

Also applies to: 2023-2023

tests/cli-find.test.ts (1)

304-330: LGTM! Solid coverage distinguishing default-skip, explicit-flag-skip, and explicit-index behaviors, with a DB-level assertion backing the "no write" guarantee.

Also applies to: 346-369, 383-427

docs/releases/CHANGELOG.md (1)

7-8: LGTM! Correctly keeps the unreleased 1.6.0 candidate out of the released-version list per the file's stated policy.

docs/releases/RELEASE_NOTES_1.6.0.md (1)

3-9: LGTM! Release copy accurately reflects the Hermes notification/structured-content/indexing changes and correctly frames 1.6.0 as a candidate, not a published release.

Also applies to: 40-42, 65-67, 80-81

packages/cli/src/cli-mcp-product-smoke.ts (3)

451-480: LGTM on structured-content/reason-code derivation.

Object/wrapped-result detection, name-mismatch precedence, and the reason-code allowlist regex all look correct and consistent with the PR's structured-content contract.


7-113: LGTM on toolCallArguments plumbing and durationMs capture.

Argument passthrough and duration measurement around the tools/call write/response are wired correctly.

Also applies to: 200-215, 364-390, 443-449


316-329: 🎯 Functional Correctness

Drop this warning: the guard only counts response-shaped messages, and the MCP server only writes id-bearing responses to stdout.

			> Likely an incorrect or invalid review comment.
packages/cli/src/hermes-smoke.ts (1)

100-152: LGTM on blocker aggregation and report shape.

Prefixing, dedupe, and gating (ok = find.ok && extract.ok && blockers.length===0 && setupBlockers.length===0) look correct and consistent with the required-tools/notification/structured-content checks.

packages/cli/src/hermes-readiness.ts (1)

45-153: LGTM!

packages/cli/src/main.ts (1)

973-983: LGTM!

Also applies to: 1081-1091, 2168-2197, 4510-4633

tests/hermes-smoke.test.ts (1)

1-53: LGTM!

Also applies to: 85-155

tests/hermes-readiness.test.ts (1)

1-143: LGTM!

tests/cli-help.test.ts (1)

654-676: LGTM!

tests/cli-mcp-product-smoke.test.ts (1)

31-94: LGTM!

Also applies to: 125-125

docs/BETA_RELEASE_RUNBOOK.md (1)

39-40: LGTM!

Also applies to: 275-278

docs/CLAIM_AUDIT.md (1)

5-12: LGTM!

Also applies to: 53-58

docs/RELEASE_CHECKLIST.md (1)

22-30: LGTM!

Also applies to: 53-53, 72-73

Comment thread docs/BETA_RELEASE_RUNBOOK.md
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/mcp-server/src/mcp-protocol.ts
Comment thread packages/mcp-server/src/server-runtime.ts
Comment thread README.md
Comment thread tests/hermes-smoke.test.ts
Comment thread tests/release-claim-audit.test.ts
Comment thread VISION.md
@coderabbitai coderabbitai Bot removed the codex Codex session indexing or control label Jul 28, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/cli/src/cli-mcp-product-smoke.ts (1)

128-130: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Fail closed when notification silence was not measured.

If runtimeRootFactory() fails, probeMcpToolsListAndCall() resolves without notificationSilenceReady; !== false then reports silence as ready despite no MCP process being observed. Require an explicit true.

Proposed fix
-  const notificationSilenceReady = mcpProbe.notificationSilenceReady !== false;
+  const notificationSilenceReady = mcpProbe.notificationSilenceReady === true;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/cli-mcp-product-smoke.ts` around lines 128 - 130, Update the
notificationSilenceReady assignment in the MCP smoke-test readiness flow to
require mcpProbe.notificationSilenceReady === true, so missing measurements fail
closed while explicit readiness remains accepted.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@packages/cli/src/cli-mcp-product-smoke.ts`:
- Around line 128-130: Update the notificationSilenceReady assignment in the MCP
smoke-test readiness flow to require mcpProbe.notificationSilenceReady === true,
so missing measurements fail closed while explicit readiness remains accepted.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: cee84641-9566-4e37-9017-2f6f490dbff7

📥 Commits

Reviewing files that changed from the base of the PR and between edcdc78 and ef7a138.

📒 Files selected for processing (4)
  • packages/cli/src/cli-mcp-product-smoke.ts
  • packages/cli/src/hermes-readiness.ts
  • tests/cli-mcp-product-smoke.test.ts
  • tests/hermes-readiness.test.ts
📜 Review details
🧰 Additional context used
🪛 ast-grep (0.45.0)
packages/cli/src/cli-mcp-product-smoke.ts

[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)

🔇 Additional comments (4)
packages/cli/src/cli-mcp-product-smoke.ts (1)

323-334: Track sent request IDs instead of hardcoding 1, 2, and 3.

The response detector still rejects valid responses when this probe is reused with another ID scheme. Keep a set of emitted request IDs and validate against it.

packages/cli/src/hermes-readiness.ts (1)

3-3: LGTM!

Also applies to: 21-21, 55-83, 98-98, 127-127, 139-139, 149-155

tests/cli-mcp-product-smoke.test.ts (1)

41-41: LGTM!

Also applies to: 60-60, 69-69, 84-84, 147-194

tests/hermes-readiness.test.ts (1)

11-11: LGTM!

Also applies to: 22-22, 35-35, 53-53, 79-79, 88-88, 104-104

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: bcbc5746b5960b866c5c0120da6867f077f9a1a5
Updated: 2026-07-28T19:12:21.423Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@coderabbitai coderabbitai Bot added documentation Improvements or additions to documentation and removed safety Safety, approval, privacy, or control-boundary issue labels Jul 28, 2026

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: bcbc5746b5960b866c5c0120da6867f077f9a1a5 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +46/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Moderate: validated P3 finding
docs/SETUP.md modified +56/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +111/-18 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-readiness.ts added +190/-0 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-smoke.ts added +162/-0 Changed file Moderate: validated P3 finding
packages/cli/src/main.ts modified +187/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Low
packages/mcp-server/src/tools.ts modified +10/-3 Changed file Moderate: validated P3 finding
packages/openclaw-plugin/openclaw.plugin.json modified +4/-4 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +25/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +101/-20 Test coverage Low
tests/hermes-readiness.test.ts added +187/-0 Test coverage Low
tests/hermes-smoke.test.ts added +215/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +3/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 5 (P0: 0, P1: 0, P2: 0, P3: 5).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • API compatibility: 1
  • Data loss: 1
  • Flaky test risk: 1
  • Proof gap: 1
  • Release regression: 1

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/mcp-server/src/tools.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/hermes-readiness.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread docs/RELEASE_CHECKLIST.md

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
packages/cli/src/cli-mcp-product-smoke.ts (1)

266-275: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Do not mark notification silence proven before the probe reaches a completed call.

Line 266 reports true for any early failure with zero invalid messages, including failures before notifications/initialized is exercised. Gate this on pendingSuccess (or an explicit completed-notification-probe flag) as well.

Proposed fix
-      const notificationSilenceReady = invalidNotificationResponseCount === 0;
+      const notificationSilenceReady = pendingSuccess !== null
+        && invalidNotificationResponseCount === 0;
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/cli-mcp-product-smoke.ts` around lines 266 - 275, Update the
notification probe result logic around notificationSilenceReady so it is true
only when invalidNotificationResponseCount is zero and the probe has completed
successfully, using pendingSuccess or the established
completed-notification-probe state. Preserve the existing blocker and count
reporting for early failures.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@packages/cli/src/cli-mcp-product-smoke.ts`:
- Around line 266-275: Update the notification probe result logic around
notificationSilenceReady so it is true only when
invalidNotificationResponseCount is zero and the probe has completed
successfully, using pendingSuccess or the established
completed-notification-probe state. Preserve the existing blocker and count
reporting for early failures.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: ec62b906-946d-417f-9c1a-d8bce807bfb6

📥 Commits

Reviewing files that changed from the base of the PR and between ef7a138 and bcbc574.

📒 Files selected for processing (16)
  • README.md
  • docs/BETA_RELEASE_RUNBOOK.md
  • docs/RELEASE_CHECKLIST.md
  • docs/SETUP.md
  • openclaw.plugin.json
  • packages/cli/src/cli-mcp-product-smoke.ts
  • packages/cli/src/hermes-readiness.ts
  • packages/cli/src/hermes-smoke.ts
  • packages/cli/src/main.ts
  • packages/mcp-server/src/tools.ts
  • packages/openclaw-plugin/openclaw.plugin.json
  • skills/lossless-openclaw-orchestrator/SKILL.md
  • tests/cli-help.test.ts
  • tests/cli-mcp-product-smoke.test.ts
  • tests/hermes-readiness.test.ts
  • tests/hermes-smoke.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: test
🧰 Additional context used
📓 Path-based instructions (3)
skills/lossless-openclaw-orchestrator/SKILL.md

📄 CodeRabbit inference engine (AGENTS.md)

Keep agent-facing workflow instructions in skills/lossless-openclaw-orchestrator/SKILL.md.

Files:

  • skills/lossless-openclaw-orchestrator/SKILL.md
docs/SETUP.md

📄 CodeRabbit inference engine (AGENTS.md)

Keep detailed first-run instructions in docs/SETUP.md.

Files:

  • docs/SETUP.md
README.md

📄 CodeRabbit inference engine (AGENTS.md)

README.md: Keep README.md as the public landing page: product value, install, setup, first workflow, OpenClaw/MCP entrypoints, safety boundaries, and links.
Do not put active sprint ledgers, long issue history, exhaustive release-gate command inventories, or internal agent maintenance loops into the public README.md; link VISION.md, GitHub trackers, or runbooks instead.

Files:

  • README.md
🪛 ast-grep (0.45.0)
packages/cli/src/cli-mcp-product-smoke.ts

[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)


[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)

🪛 LanguageTool
skills/lossless-openclaw-orchestrator/SKILL.md

[style] ~172-~172: This word has been used in one of the immediately preceding sentences. Using a synonym could make your text more interesting to read, unless the repetition is intentional.
Context: ...prepared_inboxwhen the user asks what needs attention. 2. Uselco_describe_ref` fo...

(EN_REPEATEDWORDS_NEED)

🔇 Additional comments (16)
docs/BETA_RELEASE_RUNBOOK.md (1)

265-269: Use isolated temporary database wording.

lco hermes smoke runs against isolated temporary runtime state, so “protected copy of the local LCO database” is misleading and may encourage operators to copy active data. Rename this to “isolated temporary database,” retaining the cleanup and evidence restrictions.

README.md (1)

371-394: LGTM!

docs/SETUP.md (1)

314-316: LGTM!

Also applies to: 337-389

docs/RELEASE_CHECKLIST.md (1)

23-29: LGTM!

Also applies to: 53-53, 72-73, 116-118

skills/lossless-openclaw-orchestrator/SKILL.md (1)

67-67: LGTM!

Also applies to: 170-172

packages/openclaw-plugin/openclaw.plugin.json (1)

202-202: LGTM!

Also applies to: 214-214, 2023-2023, 2035-2035

packages/mcp-server/src/tools.ts (1)

180-180: LGTM!

Also applies to: 569-613

openclaw.plugin.json (1)

202-214: LGTM!

Also applies to: 2023-2036

packages/cli/src/cli-mcp-product-smoke.ts (1)

14-14: LGTM!

Also applies to: 35-36, 68-80, 92-92, 107-165, 183-228, 297-300, 320-435

packages/cli/src/hermes-smoke.ts (1)

26-26: LGTM!

Also applies to: 69-153

packages/cli/src/main.ts (1)

1353-1357: LGTM!

Also applies to: 2183-2196, 4575-4638

packages/cli/src/hermes-readiness.ts (1)

48-120: LGTM!

Also applies to: 158-165

tests/hermes-smoke.test.ts (1)

20-20: LGTM!

Also applies to: 64-69, 163-215

tests/cli-help.test.ts (1)

661-662: LGTM!

tests/cli-mcp-product-smoke.test.ts (1)

18-29: LGTM!

Also applies to: 33-100, 110-111, 156-218, 230-231, 261-266, 410-410, 792-793

tests/hermes-readiness.test.ts (1)

70-110: LGTM!

Also applies to: 141-177

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: 34a8130aafb585330f538dfecb635c312f9cefb0
Updated: 2026-07-28T19:16:44.831Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@coderabbitai coderabbitai Bot added safety Safety, approval, privacy, or control-boundary issue and removed orchestrator Orchestrator-agent workflow, context retention, and session management labels Jul 28, 2026

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: 34a8130aafb585330f538dfecb635c312f9cefb0 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +46/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Low
docs/SETUP.md modified +56/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +111/-18 Changed file Moderate: validated P2 finding
packages/cli/src/hermes-readiness.ts added +190/-0 Changed file Moderate: validated P2 finding
packages/cli/src/hermes-smoke.ts added +162/-0 Changed file Moderate: validated P3 finding
packages/cli/src/main.ts modified +187/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Moderate: validated P2 finding
packages/mcp-server/src/tools.ts modified +10/-3 Changed file Low
packages/openclaw-plugin/openclaw.plugin.json modified +4/-4 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +25/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +102/-20 Test coverage Low
tests/hermes-readiness.test.ts added +187/-0 Test coverage Low
tests/hermes-smoke.test.ts added +215/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +3/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 6 (P0: 0, P1: 0, P2: 3, P3: 3).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • API compatibility: 1
  • Flaky test risk: 3
  • Migration: 1
  • Release regression: 1

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/cli/src/hermes-readiness.ts
Comment thread packages/mcp-server/src/server-runtime.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/hermes-readiness.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
packages/cli/src/cli-mcp-product-smoke.ts (3)

417-436: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Do not return before draining the current stdout chunk.

If the tool result and an invalid notification response arrive in the same data event, return exits the callback and discards later entries in lines. The probe then finishes with invalidNotificationResponseCount === 0 and can incorrectly pass. Record pendingSuccess, continue parsing the current chunk, and ignore only duplicate/late valid responses.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/cli-mcp-product-smoke.ts` around lines 417 - 436, Update the
stdout data handler around the tool-result branch identified by parsed.id === 3
so it records pendingSuccess and schedules completion without returning
immediately. Continue iterating through the remaining lines in the current
chunk, while ignoring only duplicate or late valid responses after success has
been recorded, so invalid notification responses are still counted.

300-300: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win

Track outstanding response IDs, not all historically sent IDs.

pendingResponseIds is never removed after a response is consumed. A later response-like message with id 1, 2, or 3 is therefore accepted even when no request is outstanding, weakening the fail-closed notification proof. Remove IDs after the first valid response and add a duplicate/late-response regression test.

Also applies to: 344-355

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/cli-mcp-product-smoke.ts` at line 300, Update the
response-consumption logic around pendingResponseIds so each ID is removed
immediately after its first valid response is accepted, ensuring only currently
outstanding requests are tracked. Preserve fail-closed handling for duplicate or
late responses, and add a regression test covering a response received after the
corresponding ID has already been consumed.

92-92: 🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift

The 100 ms quiet period does not prove notification silence.

After 100 ms, the probe terminates the child and reports readiness; any delayed response to notifications/initialized is never observed. This makes the release-gate signal “silent for 100 ms,” not “produced no response.” Use a protocol-aware drain/EOF strategy or a timeout tied to the configured probe deadline, and test delayed invalid responses.

Also applies to: 418-435

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@packages/cli/src/cli-mcp-product-smoke.ts` at line 92, Replace the fixed
NOTIFICATION_QUIET_PERIOD_MS-based readiness check in the MCP probe with
protocol-aware draining through child-process EOF or the configured probe
deadline, so delayed responses to notifications/initialized are observed before
reporting silence. Update the cleanup/readiness flow around the probe process
and add coverage for delayed invalid responses.
tests/cli-mcp-product-smoke.test.ts (1)

151-194: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick win

Add a regression test for an actual notification response.

This test proves that legal unsolicited notifications/progress messages are ignored, but it does not prove that an id-less result/error emitted for notifications/initialized fails the smoke check. Add that fake-server behavior and assert ok === false, notificationSilenceReady === false, and a nonzero strict exit code.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@tests/cli-mcp-product-smoke.test.ts` around lines 151 - 194, Add a regression
case alongside the existing unsolicited-notification test using the fake MCP
server helpers to emit an id-less result/error response for
notifications/initialized. Run the qa-lab cli-mcp-smoke command in strict mode
and assert the process exits nonzero, the parsed report has ok === false, and
notificationSilenceReady === false.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Outside diff comments:
In `@packages/cli/src/cli-mcp-product-smoke.ts`:
- Around line 417-436: Update the stdout data handler around the tool-result
branch identified by parsed.id === 3 so it records pendingSuccess and schedules
completion without returning immediately. Continue iterating through the
remaining lines in the current chunk, while ignoring only duplicate or late
valid responses after success has been recorded, so invalid notification
responses are still counted.
- Line 300: Update the response-consumption logic around pendingResponseIds so
each ID is removed immediately after its first valid response is accepted,
ensuring only currently outstanding requests are tracked. Preserve fail-closed
handling for duplicate or late responses, and add a regression test covering a
response received after the corresponding ID has already been consumed.
- Line 92: Replace the fixed NOTIFICATION_QUIET_PERIOD_MS-based readiness check
in the MCP probe with protocol-aware draining through child-process EOF or the
configured probe deadline, so delayed responses to notifications/initialized are
observed before reporting silence. Update the cleanup/readiness flow around the
probe process and add coverage for delayed invalid responses.

In `@tests/cli-mcp-product-smoke.test.ts`:
- Around line 151-194: Add a regression case alongside the existing
unsolicited-notification test using the fake MCP server helpers to emit an
id-less result/error response for notifications/initialized. Run the qa-lab
cli-mcp-smoke command in strict mode and assert the process exits nonzero, the
parsed report has ok === false, and notificationSilenceReady === false.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 70a463d6-7476-4e0d-b1d7-690f6285ffb6

📥 Commits

Reviewing files that changed from the base of the PR and between bcbc574 and 34a8130.

📒 Files selected for processing (2)
  • packages/cli/src/cli-mcp-product-smoke.ts
  • tests/cli-mcp-product-smoke.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (2)
  • GitHub Check: test
  • GitHub Check: CodeQL (javascript-typescript)
🧰 Additional context used
🪛 ast-grep (0.45.0)
packages/cli/src/cli-mcp-product-smoke.ts

[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)

🔇 Additional comments (2)
packages/cli/src/cli-mcp-product-smoke.ts (1)

14-14: LGTM!

Also applies to: 107-129, 130-148, 165-165, 261-275, 396-403, 488-517, 520-523

tests/cli-mcp-product-smoke.test.ts (1)

247-247: LGTM!

@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: 5ec7b90c68a25c138d21b3846834a1de376487cb
Updated: 2026-07-28T19:24:33.735Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@coderabbitai coderabbitai Bot added the orchestrator Orchestrator-agent workflow, context retention, and session management label Jul 28, 2026

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: 5ec7b90c68a25c138d21b3846834a1de376487cb into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +46/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Low
docs/SETUP.md modified +56/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +115/-19 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-readiness.ts added +190/-0 Changed file Low
packages/cli/src/hermes-smoke.ts added +162/-0 Changed file Moderate: validated P2 finding
packages/cli/src/main.ts modified +187/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Low
packages/mcp-server/src/tools.ts modified +10/-3 Changed file Moderate: validated P2 finding
packages/openclaw-plugin/openclaw.plugin.json modified +4/-4 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +25/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +227/-20 Test coverage Elevated: large change
tests/hermes-readiness.test.ts added +187/-0 Test coverage Low
tests/hermes-smoke.test.ts added +215/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +3/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 3 (P0: 0, P1: 0, P2: 2, P3: 1).
Dropped findings before posting: 1. High-severity findings: 0.

Risk Taxonomy

  • API compatibility: 1
  • Flaky test risk: 2

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/mcp-server/src/tools.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
@100yenadmin
100yenadmin dismissed coderabbitai[bot]’s stale review July 28, 2026 19:26

Superseded by fixes through 5ec7b90; current-head CI, CodeQL, CodeRabbit status, and independent evaOS review are complete. No merge performed.

@100yenadmin

Copy link
Copy Markdown
Owner Author

Exact-head stabilization evidence

Candidate: 5ec7b90c68a25c138d21b3846834a1de376487cb

Review dispositions

Fixed now:

  • 3668330209, 3668362420, 3668382475, 3668510820, 3668510834: response-shaped notification violations, delayed/same-chunk responses, dynamic outstanding IDs, duplicate responses, and EOF/deadline draining are covered through the current head.
  • 3668330215, 3668362408, 3668362425, 3668362430: package/version identity, explicit candidate binaries, required false action markers, and package-smoke producer/filename are bound by the readiness gate.
  • 3668362436, 3668382458: first-run explicit indexing guidance and configurable single-call latency are documented and tested.

Accepted tradeoff / not a current gate failure:

  • 3668362439, 3668419445, 3668419448, 3668510826, 3668557543: the isolated smoke is an environment-configurable single-call ceiling; the required production-scale warm measurement is the separate persistent Hermes Python canary above, which passed the 300 ms p95 and 1 second maximum thresholds.
  • 3668382467, 3668484090, 3668557538: default no-refresh MCP search is the requested bug(mcp): lco_find blocks on implicit full reindex and times out in Hermes #790 contract. It emits index_skipped_by_default; explicit index:true and lco_index_sessions remain supported; first-run and migration guidance are updated.
  • 3668362448: the new standalone Hermes readiness aggregate is this PR's gate. Folding it into the broader publication aggregates is outside the approved stabilization and publication scope.
  • 3668382480: malformed JSON remains a JSON-RPC parse-error request with id:null; valid notification-form messages remain silent and never execute.
  • 3668419424: the runbook intentionally distinguishes isolated empty-runtime smoke from the separately required protected-snapshot Hermes client canary.
  • 3668419458, 3668419483, 3668419484, 3668419490, 3668419494, 3668419498, 3668484094, 3668484098, 3668484103, 3668484107, 3668510811, 3668510816, 3668510831: these are theoretical unsupported-result hardening, low-value cleanup/wording/duplicate-test suggestions, or fail-closed diagnostic UX notes. None reproduces a supported-path failure on this head; no extra hardening lane is opened.
  • 3668557550: EOF is the primary happy-path drain and the full timeout is only the fallback for a server that does not exit after stdin closes. The exact candidate exited promptly; correctness takes precedence over shortening that fallback.

Proof boundary: this establishes PR readiness and isolated Hermes-client compatibility for this SHA. It does not establish merge, npm/GitHub publication, installation into Eva's active profile, or live Eva runtime safety.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 28, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 5ec7b90c68

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread README.md Outdated
Comment thread packages/cli/src/cli-mcp-product-smoke.ts Outdated
Comment thread README.md
@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: 9bb2137f69095630b771ea5dac530a6663cbbadc
Updated: 2026-07-28T19:40:45.607Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@100yenadmin

Copy link
Copy Markdown
Owner Author

@codex review

Please review only the delta from 5ec7b90 to 9bb2137: standard MCP isError fail-closed handling and the credential-free Hermes YAML path correction. Current-head CI and CodeQL are green. Do not expand into publication or unrelated hardening.

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: 9bb2137f69095630b771ea5dac530a6663cbbadc into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +49/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Low
docs/SETUP.md modified +56/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +118/-19 Changed file Moderate: validated P2 finding
packages/cli/src/hermes-readiness.ts added +190/-0 Changed file Low
packages/cli/src/hermes-smoke.ts added +162/-0 Changed file Moderate: validated P3 finding
packages/cli/src/main.ts modified +187/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Moderate: validated P3 finding
packages/mcp-server/src/tools.ts modified +10/-3 Changed file Low
packages/openclaw-plugin/openclaw.plugin.json modified +4/-4 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +25/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +257/-21 Test coverage Elevated: large change
tests/hermes-readiness.test.ts added +187/-0 Test coverage Low
tests/hermes-smoke.test.ts added +215/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +5/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 4 (P0: 0, P1: 0, P2: 2, P3: 2).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • Flaky test risk: 2
  • Runtime correctness: 2

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/mcp-server/src/server-runtime.ts
@100yenadmin

Copy link
Copy Markdown
Owner Author

Final delta evidence and review dispositions

Current head: 9bb2137f69095630b771ea5dac530a6663cbbadc

The final delta fixes the two reproduced supported-path findings:

  • 3668603146 fixed: the primary Hermes YAML omits the literal ~ database environment value and documents LCO's home-based default / absolute-path rule.
  • 3668603151 fixed: a standard MCP result.isError: true now fails strict package smoke with mcp_tools_call_reported_error; the focused regression passes.

Current-head proof:

Terminal dispositions for the remaining final-delta threads:

  • 3668603138 accepted tradeoff: malformed/non-JSON stdout is a theoretical server defect not emitted by the exact candidate. The supported candidate path completed strict Hermes and Python-client protocol probes; a broader arbitrary-server hardening lane is outside this gate.
  • 3668603157 not applicable: 1.6.0 is the intended stable-version artifact, and repository tests require the stable package metadata to use latest. Publication is separately approval-gated and no publish occurred.
  • 3668666394 false on the exact candidate: lco_codex_extract produced wrapped array structured content and arrayResultWrappedReady:true in strict Hermes smoke.
  • 3668666400 false for the implemented bounded proof: the probe ends stdin and drains through child EOF or the configured deadline; same-chunk, duplicate, and delayed 250 ms violations have failing regressions. No finite smoke can prove silence after its declared deadline.
  • 3668666404 accepted tradeoff: the isolated 1-second single-call ceiling is configurable and explicitly not production p95. The separate required persistent-process canary passed 9.197 ms p95 / 9.226 ms max.
  • 3668666407 not applicable: ignoring notification-form calls before method dispatch is the critical invariant for this delivery; notifications never execute and never receive responses.

Proof boundary: PR readiness and isolated Hermes-client compatibility for this SHA only; no merge, publication, active Eva install, or live Eva runtime claim.

coderabbitai[bot]
coderabbitai Bot previously approved these changes Jul 28, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9bb2137f69

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread README.md
@evaos-code-review-bot

evaos-code-review-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

evaOS review status: completed

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: aecd7add3b1e99d52c41ea5ec71059790dc50768
Updated: 2026-07-28T19:48:37.772Z

evaOS review completed for this PR head.

Automation note: agents should wait for this comment to reach completed, stale_head, closed_or_merged_before_review, skipped, or failed before treating evaOS review as settled for this head. provider_deferred means evaOS still intends to retry.

PR URL: #792

Review URL: #792 (review)

@evaos-code-review-bot evaos-code-review-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Walkthrough

PR: #792 - fix: stabilize LCO 1.6 for Hermes-first MCP
Head: aecd7add3b1e99d52c41ea5ec71059790dc50768 into main. Review event: COMMENT.
Provider: GLM/Z.ai through ZCode (zcode-glm, zcode, model GLM-5.2).

Estimated review effort: 5/5 (~70 min)

Changed Files

File Status Churn Purpose Risk
README.md modified +49/-14 Documentation Low
docs/BETA_RELEASE_RUNBOOK.md modified +26/-4 Documentation Low
docs/CLAIM_AUDIT.md modified +14/-1 Documentation Low
docs/HERMES_ADAPTER_BOUNDARY.md modified +15/-13 Documentation Low
docs/RELEASE_CHECKLIST.md modified +14/-0 Documentation Low
docs/SETUP.md modified +59/-1 Documentation Low
docs/releases/CHANGELOG.md modified +2/-1 Documentation Low
docs/releases/RELEASE_NOTES_1.6.0.md modified +15/-6 Documentation Low
package.json modified +1/-1 Configuration Low
packages/cli/src/cli-mcp-product-smoke.ts modified +118/-19 Changed file Moderate: validated P2 finding
packages/cli/src/hermes-readiness.ts added +190/-0 Changed file Moderate: validated P3 finding
packages/cli/src/hermes-smoke.ts added +162/-0 Changed file Moderate: validated P2 finding
packages/cli/src/main.ts modified +187/-0 Changed file Low
packages/core/src/index.ts modified +7/-1 Changed file Low
packages/mcp-server/src/mcp-protocol.ts added +15/-0 Changed file Low
packages/mcp-server/src/server-runtime.ts modified +22/-3 Changed file Moderate: validated P2 finding
packages/mcp-server/src/tools.ts modified +10/-3 Changed file Low
packages/openclaw-plugin/openclaw.plugin.json modified +4/-4 Changed file Low
tests/cli-find.test.ts modified +49/-2 Test coverage Low
tests/cli-help.test.ts modified +25/-0 Test coverage Low
tests/cli-mcp-product-smoke.test.ts modified +257/-21 Test coverage Elevated: large change
tests/hermes-readiness.test.ts added +187/-0 Test coverage Low
tests/hermes-smoke.test.ts added +215/-0 Test coverage Elevated: large change
tests/lco-first-docs.test.ts modified +7/-3 Test coverage Low
tests/mcp-hermes-contract.test.ts added +145/-0 Test coverage Low

1 additional changed files omitted from this walkthrough.

Review Signal

Validated inline findings: 5 (P0: 0, P1: 0, P2: 3, P3: 2).
Dropped findings before posting: 0. High-severity findings: 0.

Risk Taxonomy

  • API compatibility: 1
  • Flaky test risk: 2
  • Release regression: 1
  • Runtime correctness: 1

Validation and Proof

2 required validation/proof recommendation(s) selected from changed files.

  • required: TypeScript/web build or CI proof - Runtime TypeScript/web files or package/config files changed. Proof: npm run build; typecheck; focused Vitest; green GitHub check.
  • required: CI/release smoke proof - CI, release, launchd, or package metadata changed. Proof: green GitHub check; release-status; coverage-audit; rollback note.
    Proof status: missing - 1 required validation/proof recommendation(s) missing from PR metadata.
    Profile validation hints: Call out evidence leakage, replay/collision risks, duplicate side effects, and brittle sanitizer logic.
    Profile proof expectations: Look for focused sanitizer, signature, orchestration, or fixture proof.

Related Context

Related issues/PRs: #785, #786, #788, #790, #791, #673.
Suggested labels: docs, tests.
Suggested reviewers: none from current metadata.

Review Settings Preview

  • Profile: assertive
  • Enabled sections: Review summary (inline_review); Walkthrough (inline_review); Changed-files table (walkthrough); Effort estimate (walkthrough); Related issues/PRs (walkthrough); Suggested labels (suggestion_only); Review status comment (sticky_status)
  • Path instructions: none
  • Label suggestions: orchestration, security, regression-hardening
  • Reviewer suggestions: none
  • Suggestion behavior: suggestions only; labels and reviewers are not auto-applied.
  • Roadmap-only settings: auto-apply labels; auto-request reviewers; required status checks

Pre-merge checklist

  • Inline comments target current RIGHT-side diff lines.
  • No secret-like content survived into posted inline comments.
  • REQUEST_CHANGES is only used when eligible P0/P1 findings survive validation.
  • Required behavior proof is present or not applicable.
  • Labels and reviewers are suggestions only; the bot did not auto-apply them.

Comment thread packages/mcp-server/src/server-runtime.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/cli-mcp-product-smoke.ts
Comment thread packages/cli/src/hermes-smoke.ts
Comment thread packages/cli/src/hermes-readiness.ts
coderabbitai[bot]
coderabbitai Bot previously requested changes Jul 28, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@tests/lco-first-docs.test.ts`:
- Around line 59-60: Update the tilde assertions in the LCO documentation test
to extract and inspect only the Hermes subsection, rather than the entire MCP
section. In that Hermes block, make the LCO_DB_PATH pattern accept optional
single or double quotes around ~, while preserving validation that non-Hermes
examples are allowed.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: e0d06e3a-f1b5-45e8-b6d8-94c16a40f4b1

📥 Commits

Reviewing files that changed from the base of the PR and between 5ec7b90 and aecd7ad.

📒 Files selected for processing (5)
  • README.md
  • docs/SETUP.md
  • packages/cli/src/cli-mcp-product-smoke.ts
  • tests/cli-mcp-product-smoke.test.ts
  • tests/lco-first-docs.test.ts
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
  • GitHub Check: test
🧰 Additional context used
📓 Path-based instructions (2)
docs/SETUP.md

📄 CodeRabbit inference engine (AGENTS.md)

Keep detailed first-run instructions in docs/SETUP.md.

Files:

  • docs/SETUP.md
README.md

📄 CodeRabbit inference engine (AGENTS.md)

README.md: Keep README.md as the public landing page: product value, install, setup, first workflow, OpenClaw/MCP entrypoints, safety boundaries, and links.
Do not put active sprint ledgers, long issue history, exhaustive release-gate command inventories, or internal agent maintenance loops into the public README.md; link VISION.md, GitHub trackers, or runbooks instead.

Files:

  • README.md
🪛 ast-grep (0.45.0)
packages/cli/src/cli-mcp-product-smoke.ts

[warning] Importing child_process exposes a command-execution surface; ensure any command/argument built from input is validated, and prefer execFile/spawn with an argument array over exec.
Context: import { spawn, spawnSync } from "node:child_process";
Note: [CWE-78] Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection').

(detect-child-process-typescript)

🔇 Additional comments (6)
packages/cli/src/cli-mcp-product-smoke.ts (1)

106-173: LGTM!

Also applies to: 243-305, 319-439, 491-524

tests/cli-mcp-product-smoke.test.ts (1)

18-18: LGTM!

Also applies to: 33-119, 327-352

README.md (2)

371-372: Make Hermes setup discoverable from a heading.

The new primary Hermes setup remains under ## OpenClaw And MCP, so the public landing page still frames the primary path as OpenClaw-only. Rename the heading to include Hermes or add a dedicated Hermes section.

As per coding guidelines, keep README.md as the public landing page with clear setup and entrypoints.

Source: Coding guidelines


383-385: LGTM!

Also applies to: 387-397

docs/SETUP.md (1)

314-316: LGTM!

Also applies to: 337-392

tests/lco-first-docs.test.ts (1)

96-103: LGTM!

Comment thread tests/lco-first-docs.test.ts
@100yenadmin

Copy link
Copy Markdown
Owner Author

Final exact-head review dispositions

Current head: aecd7add3b1e99d52c41ea5ec71059790dc50768

The final docs-only delta fixed 3668682333: README and the canonical Setup
guide now both omit the literal ~ Hermes database environment value and
document the home-based default / expanded absolute-path rule. The focused docs
and claim suite passed 43/43.

Current-head proof:

Terminal dispositions:

  • 3668713808 not applicable: valid notifications are JSON-RPC objects with a
    method and no ID and remain silent. A non-object JSON value is an invalid
    request whose id:null parse/validation error is standards-compliant; it is
    not a notification-form tool call.
  • 3668713810 accepted tradeoff: the isolated 1-second single-call ceiling is
    configurable and explicitly separate from production p95. The required
    persistent-process canary passed 9.124 ms p95 / 9.660 ms max.
  • 3668713813 false: an id-less or unmatched response during the declared drain
    window is a protocol defect, not a legitimate notification or close artifact.
    Same-chunk, duplicate, and delayed-response regressions prove this fail-closed
    behavior.
  • 3668713817 false for the delivery invariant: structured-content
    normalization is centralized for every tool and stdio contract tests cover
    object, array, scalar, and null. lco_codex_extract is the representative
    installed-candidate array probe.
  • 3668713823 accepted tradeoff: conservative “may prove” wording prevents a
    structural candidate report from being mistaken for merge, publication, or
    active-runtime proof.
  • 3668717688 accepted tradeoff: both canonical Hermes examples are directly
    asserted to omit the unquoted broken value and to include explicit
    no-shell-expansion guidance. Narrowing this already-passing test is a
    maintainability refinement, not a supported-path blocker.

Proof boundary: PR readiness and isolated Hermes-client compatibility for this
SHA only. No merge, publication, active Eva install, or live Eva runtime claim.

@100yenadmin
100yenadmin dismissed coderabbitai[bot]’s stale review July 28, 2026 19:50

Current-head review completed and the only requested change was terminally dispositioned as a non-blocking test-maintainability refinement in issue comment 5108954468. All supported-path gates are green; no merge performed.

@100yenadmin
100yenadmin merged commit 48b3d99 into main Jul 28, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation mcp MCP server and tool surface orchestrator Orchestrator-agent workflow, context retention, and session management safety Safety, approval, privacy, or control-boundary issue

Projects

None yet

1 participant