Repository navigation
fix(slack): name channels in approval summaries, log resolver misses - #845
Merged
Merged
Conversation
A prod Slack approval read "to C0123…" though slack.yaml declares a
conversations.info resolver: the HTTP resolver drops every failure
silently, and Slack answers its own (missing_scope, channel_not_found)
in-band as 200 {"ok": false}, so there was nothing to diagnose from.
- HTTP display resolvers log transport errors, error statuses and empty
projections, with the upstream's short `error` code; never the URL or
the argument. Mirrors the MCP path, which already logged.
- slack.yaml: channels render as '#general'; get_thread_replies gains the
channel resolver and get_user a users.info resolver.
- Tests: approval title names the channel, an unresolvable channel falls
back to the raw id, read audit rows carry the resolved names.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Code diff size+53 / −3 across 1 file (net +50)
Source files under |
reqwest's Display quotes the request URL, which carries the substituted argument the log line was written to keep out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
This was referenced Oct 29, 2026
Merged
Merged
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A Slack approval on prod (Reveni) was titled
Post Slack message "…" to C0123…, even thoughservices/slack.yamlalready declares aconversations.inforesolver onchannel, and the existing test passes against the fake. The HTTP display resolver drops every failure without logging anything. Slack also reports its own failures in-band (200 {"ok": false, "error": "missing_scope" | "channel_not_found"}), so there was nothing on prod to diagnose from.Likely causes, not confirmed (prod isn't reachable from the agent env):
channels:read/groups:read;chat.postMessageaccepts butconversations.infocan't name.What
services/param_resolver.rs). HTTP display resolvers now log three cases: transport errors and error statuses atwarn, and empty projections atinfo. Each line carries the templategetpath, the param name and the upstream's short top-levelerrorcode. The substituted URL and the argument are never logged. The MCP path already did this. No behaviour change: misses still fall back to the raw ID.slack.yaml'#general'(display: '#{channel.name}').get_thread_repliesgains the channel resolver.get_usergains ausers.inforesolver:Alice Liddell (@alice).tests/slack.rs)action_description) names#general.Follow-up
channels:readandgroups:read. If they don't, a reconnect fixes public and private channels. Once this ships, Cloud Logging will show Slack's exacterrorcode for the next miss.@aliceneeds a resolver fallback chain, and the engine allows only one target per param today.Test plan
cargo nextest run -p overslash-api -E 'test(/slack|upstream_error_code/)': 12/12 passNo screenshots: no dashboard change. The title string is asserted in tests.
🤖 Generated with Claude Code