agent/slack polish: announcement ordering for cancel-with-resource, UTF-16-safe label cap, stale spend list in base prompt
- Dominant language
- TypeScript
- Stars
- 2.2k
- Forks
- 283
- Avg merge
- 11h 47m
- Merged PRs (30d)
- 737
Description
Low-severity residuals from the #3696 review, batched:
- `announcementFor` (slack-app/listeners/actions/proposal-button.js) checks the resource URL before `kind`, so a future cancel-kind op that also returns a resource would announce "Approved — follow it here" instead of "Cancelled". Latent today (cancel has no resource builder).
- `proposal-builder.js` caps the server-sent button label with `.slice(0, 75)` on UTF-16 units; an emoji at the boundary yields an unpaired surrogate that can make Slack reject the whole message. The file's own `capChars` is code-point-safe.
- The frozen base prompt's spend enumeration ("running a suite or a case, generating cases, cancelling a run") predates the two new gated ops. Fixing it is a deliberate cache-invalidating edit to the snapshot-pinned literal.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Contributor guide
Research direction
Read slack-app/listeners/actions/proposal-button.js and proposal-builder.js first, then locate the frozen base-prompt snapshot containing the spend enumeration. Verify the announcement decision is kind-aware, label truncation remains UTF-16-safe, and the snapshot lists the two newer gated operations without breaking its pinned wording.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript
- Domain
- backend, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 68/100