fix(addie): scrub internal dollar amounts from cost-cap message#5653
Conversation
The cap-exceeded message exposed raw USD figures and a precise countdown that have no meaning for members, and pointed to /membership (the public marketing page) instead of /dashboard/membership (billing management). Replace the message with a plain-text, member-friendly string that omits internal accounting details and uses the canonical dashboard URL — matching the convention already used in billing-tools, alerts, and billing-public. Also fixes the same /membership typo in organization-db seat-limit messages. Closes adcontextprotocol#5633, closes adcontextprotocol#5634 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
The automated review encountered an issue (possibly reached max turns, timed out, or failed to post the final gh pr review). A human reviewer should take this PR.
This is an automated message from the Argus AI review workflow.
|
I’m fine with merging this one. The change removes the internal Claude/API cost details from member-facing copy and fixes the membership dashboard URL, which is the important part. One small non-blocking wording nit: the cap is a rolling 24h window, so “try again tomorrow” may be slightly less precise than something like “try again later.” I would not block merge on that unless we want the copy to be exact about reset semantics. |
|
Noting for the record: this bot can't push the "try again later" tweak directly — the PR head branch lives on @garvitkaushik-123's fork ( Triaged by Claude Code. Session: https://claude.ai/code/${CLAUDE_CODE_REMOTE_SESSION_ID} Generated by Claude Code |
bokelley
left a comment
There was a problem hiding this comment.
Approved. The copy removes internal cost/vendor details and fixes the dashboard membership URL. The rolling-24h wording nit is non-blocking.
bokelley
left a comment
There was a problem hiding this comment.
Approved. The copy removes internal cost/vendor details and fixes the dashboard membership URL. The rolling-24h wording nit is non-blocking.
#5710) * fix(server): use /dashboard/membership instead of /membership in CTAs The Slack seat-usage notification and the member-profiles API error message linked to /membership (the public marketing page) instead of /dashboard/membership (the authenticated billing page where users actually upgrade). Also clarified the path in the onboarding OpenAPI description. Same pattern as the organization-db.ts fix in PR #5653. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * build openapi registry --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Brian O'Kelley <bokelley@scope3.com>
Summary
The daily cost-cap error message was leaking internal implementation details to members:
$6.21,5 USD) that mean nothing to end users~22 hours) that's overly mechanical/membershipURL (lands on the public marketing page, not the member billing dashboard)This PR replaces the message with a clean, member-facing string:
For paid members, the existing "ping the team" copy is preserved since they're already at the top tier.
Also noticed and fixed the same
/membership→/dashboard/membershiptypo inorganization-db.tsseat-limit messages (lines 549–550), matching the canonical URL convention used inbilling-tools.ts,alerts.ts, andbilling-public.ts.Files changed
server/src/addie/claude-cost-tracker.ts— rewroteformatCapExceededMessageto drop internal amounts/countdown, fix URLserver/src/db/organization-db.ts— fixed/membership→ full canonical URL in seat-limit error stringsserver/tests/unit/claude-cost-tracker.test.ts— updated assertions to match new message shape (no dollar amounts, correct URL)server/tests/unit/claude-client-cost-gate.test.ts— updated regex fromusage captoconversation limitTest plan
claude-cost-tracker.test.ts— 22/22 passclaude-client-cost-gate.test.ts— 4/4 passCloses #5633, closes #5634, closes #5639