Skip to content

chore(gateway): drop dead secrets.resolve method + reconcile stale talk.speak/secrets docs (#2724)#2728

Merged
alexey-pelykh merged 1 commit into
mainfrom
chore/2724-secrets-resolve-talk-speak-docs
Jun 17, 2026
Merged

chore(gateway): drop dead secrets.resolve method + reconcile stale talk.speak/secrets docs (#2724)#2728
alexey-pelykh merged 1 commit into
mainfrom
chore/2724-secrets-resolve-talk-speak-docs

Conversation

@alexey-pelykh

Copy link
Copy Markdown

Summary

Resolves two cleanup items tracked on #2724, both gateway method-surface hygiene:

  1. Remove the dead secrets.resolve gateway method. It was advertised in BASE_METHODS (server-methods-list.ts) and classified in method-scopes.ts (ADMIN_SCOPE), but has no handler (server-methods/secrets.ts was gutted) and zero production callers (grep finds only the two registry/scope sites). Gateway behavioral test suite is gated out of CI — recently-merged fixes have no behavioral coverage #2720 removed the sibling secrets.reload but deliberately kept secrets.resolve, deferring the decision to a dedicated evaluation — this is that evaluation, and the answer is remove.

    Advertising a handler-less method is strictly worse than honest non-advertisement: the requiredMethods pre-check (call.ts) would pass, then dispatch hard-errors unknown method. The fork's SecretRef resolution is local (src/secrets/resolve.ts, gateway/resolve-configured-secret-input-string.ts), wholly independent of this RPC. Mirrors the talk.speak cleanup (chore(gateway): remove talk.speak orphan method declarations (#2724) #2727).

  2. Reconcile stale talk.speak docs to the fork's real Talk-mode playback story. docs/nodes/talk.md and docs/gateway/protocol.md described the gateway resolving Talk playback through a talk.speak RPC — but that RPC was gutted (chore(gateway): remove talk.speak orphan method declarations (#2724) #2727), and the native apps (macOS / iOS / Android) all synthesize on-device: each calls the ElevenLabs API directly using the active Talk config, falling back to the platform's system TTS (AVSpeechSynthesizer / Android TextToSpeech) when no ElevenLabs key is configured. The gateway is config/state only (talk.config, talk.mode), never synthesis. Also dropped the gutted secrets.reload + secrets.resolve bullets from protocol.md's method-families reference.

Changes

File Change
src/gateway/server-methods-list.ts Remove secrets.resolve from BASE_METHODS
src/gateway/method-scopes.ts Remove secrets.resolve from ADMIN_SCOPE
docs/nodes/talk.md Rewrite the 2 talk.speak refs → on-device synthesis (ElevenLabs direct, system-TTS fallback)
docs/gateway/protocol.md Drop the talk.speak bullet (→ client-side note); drop the gutted secrets.reload/secrets.resolve bullets; retitle the subsection

Validation

  • Gateway suites method-scopes + call: 80/80 pass — the method-list ↔ scope-map consistency invariant holds with secrets.resolve removed.
  • pnpm check (format + tsgo + lint + custom lints) clean (pre-commit hook).
  • No rebrand-gate trip (no openclaw refs added).
  • src/commands/message.test.ts has 3 pre-existing local failures unrelated to this change — identical on clean main, and the test only references secrets.resolve as fixture strings (never imports the method list). The test lane is green on main in CI.

Follow-ups (tracked on #2724)

These need subsystem-accurate rewrites, not mechanical edits, so they're deferred:

  • (A) docs/gateway/secrets.md (Command-path resolution) + docs/cli/qr.md still name secrets.resolve as the gateway snapshot RPC, but the fork resolves SecretRefs locally — needs an accurate rewrite of the command-path-resolution story.
  • (B) docs/gateway/protocol.md's "Common RPC method families" still documents other methods Gateway behavioral test suite is gated out of CI — recently-merged fixes have no behavioral coverage #2720 removed from BASE_METHODS (models.list, skills.search/detail/bins, plugin.approval.* methods) — a full method-list reconciliation pass with per-method handler verification.

🤖 Generated with Claude Code

…lk.speak/secrets docs (#2724)

secrets.resolve was advertised in BASE_METHODS + classified in method-scopes
(ADMIN_SCOPE) but has no handler (server-methods/secrets.ts was gutted) and zero
production callers (grep: only the two registry/scope sites). #2720 removed the
sibling secrets.reload but deliberately KEPT secrets.resolve, deferring the call to
a dedicated evaluation — this resolves that #2724 item: REMOVE.

Advertising a handler-less method is strictly worse than honest non-advertisement:
the requiredMethods pre-check (call.ts) would pass, then dispatch hard-errors
"unknown method". SecretRef resolution in the fork is local (src/secrets/resolve.ts,
gateway/resolve-configured-secret-input-string.ts), wholly independent of the RPC.
Mirrors the talk.speak cleanup (#2727).

Docs reconciled to the fork's actual behavior:
- docs/nodes/talk.md + docs/gateway/protocol.md: Talk-mode playback is synthesized
  on-device by the native apps (ElevenLabs direct, with the platform's system TTS as
  fallback), not via the gutted talk.speak gateway RPC; the gateway is config/state
  only (talk.config, talk.mode).
- docs/gateway/protocol.md: dropped the gutted secrets.reload + secrets.resolve
  bullets from the method-families reference and retitled the subsection.

Validation: gateway method-scopes + call suites 80/80 (the method-list <-> scope-map
consistency invariant holds); tsgo + format:check clean; no rebrand-gate trip.

Deeper reconciliation tracked as follow-ups on #2724 (need subsystem-accurate
rewrites, not mechanical edits): (A) secrets.md/qr.md command-path SecretRef-
resolution docs still name secrets.resolve as the gateway snapshot RPC, but the fork
resolves locally; (B) protocol.md method-families list still documents other
#2720-gutted methods (models.list, skills.search/detail/bins, plugin.approval.*).

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
@alexey-pelykh
alexey-pelykh enabled auto-merge (squash) June 17, 2026 19:25
@alexey-pelykh
alexey-pelykh merged commit 026da9b into main Jun 17, 2026
17 checks passed
@alexey-pelykh
alexey-pelykh deleted the chore/2724-secrets-resolve-talk-speak-docs branch June 17, 2026 19:31
alexey-pelykh added a commit that referenced this pull request Jun 18, 2026
) (#2740)

The fork resolves SecretRefs locally and the gateway secrets.resolve snapshot
RPC was dropped in #2728; protocol.md still advertised methods #2720 removed
from BASE_METHODS. Reconcile the docs to the fork's actual surface (verified
each line against the live code, not a mechanical edit).

secrets.md + qr.md (local SecretRef resolution):
- Command paths resolve SecretRefs locally and in-process (env/file/exec via
  src/secrets/resolve.ts + gateway/resolve-configured-secret-input-string.ts),
  not via a gateway `secrets.resolve` snapshot RPC (removed in #2728). `qr`
  resolves all refs locally (qr-cli.ts + setup-code.ts) with no gateway client.
- Drop the obsolete qr `secrets.resolve` gateway-version-skew note.

protocol.md (method families — verified vs BASE_METHODS/GATEWAY_EVENTS/handlers):
- Remove methods #2720 dropped from BASE_METHODS: models.list,
  skills.search/detail/bins, the plugin.approval.* methods, and commands.list.
- Remove orphaned sessions.usage* (only a method-scopes classification, no
  handler) and exec.approval.get/list (no BASE_METHODS entry, no handler).
- KEEP the plugin.approval.requested/resolved EVENTS (in GATEWAY_EVENTS) — the
  methods were removed, the events survive.

Verified the docs build (astro/starlight, 319 pages) and rebrand-gate pass.

Part of #2724.

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant