Description
Follow-up to #23059. Two waves of feedback flagged my removals as wrong:
- Codex review (gpt-5.5) — flagged 3 P1 issues:
botpress, swarmsyncai, whop. I added turbot_pipes for consistency (same self-billing pattern).
- Post-merge CI on #23059 — the
toolkit-provider-categories LLM lint failed at high confidence on 6 of the 13 removals: the 4 codex flagged plus ecologi and rentman.
The root cause of all 6 false-positive removals is that my audit prompt for #23059 invented a "self-billing carve-out" that does not exist in the actual lint policy at ci_checks/lint_toolkit_provider_categories.py:48-56. The policy treats any action that "manage[s] charges/refunds/payouts/subscriptions" as qualifying — there is no carve-out for the customer's own platform-self bill. The LLM also classifies a toolkit as payments based on its stated purpose, not just exposed actions, which catches things like ecologi (description says "Purchase trees programmatically").
| App | Why the lint flagged it back |
|---|
botpress | charge_workspace_unpaid_invoices (POST) initiates a charge |
swarmsyncai | create_billing_subscription_checkout_public (POST) creates a Stripe checkout session, plus x402 payment-related actions |
whop | OAuth scopes payment:manage / payment:charge; toolkit's primary domain is creator commerce |
turbot_pipes | update_org_billing_subscription / delete_org_billing_subscription (POST/DELETE) modify a subscription |
ecologi | Description says "Purchase trees and carbon offsets programmatically" — LLM treats stated API purpose as payment-affecting |
rentman | Read-only get_invoice_payments / get_payments_collection were enough for the LLM to flag at high confidence |
The 7 removals from #23059 that stand (lint accepted them as not-payments): jobnimbus, dpd2, fraudlabs_pro, brilliant_directories, omnisend, figma, cal.
How did I test this PR
make validate-config file=apps/<each>/config.ts — all 6 PASS.
- The CI
Checks job (which contains the LLM lint that flagged this) is the safety net — it should pass on this branch since all 6 flagged toolkits now carry the tag again.
- Diff is 6 files, +6/-6 — the exact inverse of the 6 corresponding lines in #23059.