Remove cloud leftovers from the local edition console

Task 10182 · Done · Coder · created · updated

Supersedes drafts 10170 and 10138 (one topic: AC-21/AC-23 quality on the real install). Reproduction (Task 10133 walk of a real install, plus Task 10131's visual walk): - Automation > Automations lists ~50 cloud system crons, enabled and running (billing, Stripe, SES, Bedrock, CloudWatch, headscale, node groups, NodeLink, node orders/rentals/SSM, project memory, support KB incl. a `jaah.ai` crawl — breaks AC-22 when it runs — SIEM, SOC 2 collectors, ECS, sign-up drafts). - Settings > Tasks and Settings > Runners show a "Project memory" row. - Directory > Secrets > New offers Slack, Telegram bot, Headscale, Stripe types. - Audit > Workflows lists Slack/Telegram sends, token billing, tailnet retag/converge, Slack card settle. - Settings > Providers names MicroVM nodes in gap text. - Console calls removed `/api/operator/transfers/kinds` (404 in browser console on every page). - jaahd polls `/api/agent/memory/bundle` every minute (ERROR on 404) and runs `tailscale status` each minute. - Accounts list shows Org column and cross-org Share; "Others see your email" banner/Profile text and the "task notifications reached no one… Integrations" banner assume multi-user/Slack. - Public tree still ships unreachable billing/Stripe web source (`components/billing/`, `lib/stripe.ts`, `@stripe/*`, `OrgSwitcherList`, `CreateOrgDialog`, `pages/customers/**`) — PRD §7 says no Stripe/billing in the public repo. - Onboarding Setup guide steps must not point at removed surfaces. Fix: register only local crons under `edition.IS_LOCAL` (pin the set with a test); hide the listed rows/types/columns/banners in local; stop the removed-route call and jaahd's memory/tailscale polls in local; untangle web imports so `tools/local_edition/manifest.toml` excludes the billing/org/customers source. Help link: keep docs.jaah.ai (user-initiated, not phone-home) — decided to avoid new surface. Out of scope: cloud console behaviour (PRD §7: unchanged); API route table (pinned by `apps/api/tests/test_routers_cloud.py`). Done means: - A test pins the local cron set; none of the cloud crons above registers on a fresh install. - No Settings tab, Secrets type, Audit workflow list, Accounts column or banner names a removed feature (component tests with edition mocked + screenshot of the built-tree console at desktop and 390 px). - No browser-console 404 on any page of a fresh install; no recurring jaahd ERROR on an idle local node. - `local-edition-check.yml` and `./dc check quick` green; cloud pages unchanged.

Outcome

Removed cloud leftovers from local edition: local-only crons (pinned; cloud rows deleted at boot), hidden cloud Secrets/Workflows/UI, no jaahd memory/tailscale polls, billing source out of public tree. Fresh install: 0 404s, 0 node ERRORs. #6959 merged, dev deploy green. Draft 10190 filed. Memory: none applied; proposed 1 gotcha.

Pull request

Artifacts

Activity

  • Ready
  • Runner started
  • Runner ended (done)