Skip to content

Cut hub over to stock Interchange composition - #741

Merged
TheGreatAxios merged 7 commits into
mainfrom
cl-intx-hub-cutover
Sep 16, 2026
Merged

TheGreatAxios merged 7 commits into
mainfrom
cl-intx-hub-cutover

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Intent

There is no parent bench: the client drives stock Interchange and the hub composes it. This branch cuts the hub over to stock Interchange composition — removing retained signup env-key code, stale tenancy mounts/guards, and contract shims without replacement — a hard cutover to the stock composition surface.

Key commits

  • fd3a43e2 feat(hub)!: cut over to stock Interchange composition
  • a648d53c docs(hub): fix stale cutover comments and README
  • 6bb78ca9 docs(hub): clear stale signup/tenancy env references post-cutover
  • 1edc1b58 test(hub): rewrite local-rip provision hops against stock tenant/agent routes
  • 368cd0bc refactor(hub): cut retained signup env-key code from four packages
  • c0a9070d refactor(auth): remove /api/auth-config, sign-in buttons from client config
  • 9aff043a test(web): keeper for failed social sign-in surfacing better-auth message

Verification

  • Suites (added/rewrote on this branch): packages/hub-api-client/src/hub.test.ts (new stock-composition coverage), scripts/e2e/local-rip.test.ts rewritten against stock tenant/agent routes, genesis, gate/policy, auth, settings-ui API suites updated; tenancy-contracts suites deleted with the code.
  • Depends on the client-driver cutover in PR (1) and the chat hard-cut in PR (2); stacked logically last.
  • Full bun run check gate runs in CI on this PR.

Notes

  • Linear issue IDs are pending; this branch will be renamed to cl-<id>-<slug> once filed.
  • Merge order is 1 → 2 → 3 with (3) hub last. This is PR (3) of 3 — merge LAST, after (1) and (2).

TheGreatAxios and others added 7 commits September 16, 2026 10:59
Summary:
- Delete Workbench product-policy mounts, guards, and onboarding from
  apps/hub (artifacts/memory/skills/slack-tag mounts, tenant-create
  guard/onboard, dispatch tenant guard, signup tenancy, connection-live
  reconcile) and repair composition wiring/imports.
- Rename WORKBENCH_CHAT_IDLE_REAP_MS to HUB_CHAT_IDLE_REAP_MS; drop
  product-only signup/genesis knobs (WORKBENCH_SIGNUP,
  WORKBENCH_ALLOWED_EMAIL_DOMAINS, WORKBENCH_DEFAULT_TENANT/ORG_SLUG).
- Update wiring-pin tests for cut routes; drop the dead draft-routes pin;
  shrink the report-error baseline to the remaining matches.

Verification:
- bun run --cwd apps/hub test: 216 pass, 0 fail (plus 1 file-level
  isolation-harness error: the shared test database carries an unknown
  chat migration 0031_workbench_tenancy_drop, so the live-sidecar probe
  cannot create workbenches; unrelated to this change).
- bun run --cwd apps/hub typecheck: clean.
- bun run lint: 0 errors (10 pre-existing warnings in unrelated packages).
- bun run check:structural: exit 0, 18 checks ok.
Summary:
- test/isolation/setup.ts, scripts/e2e/harness.ts: drop WORKBENCH_SIGNUP/ALLOW_UNVERIFIED_EMAILS boot env (stock composition leaves signup ungated).
- scripts/dev.ts: drop WORKBENCH_SIGNUP=open injection and the signup_closed seed branch.
- scripts/e2e/local-rip.test.ts: closed-signup hop becomes signup-stays-ungated against the main hub.
- .env.example: remove WORKBENCH_SIGNUP/WORKBENCH_ALLOWED_EMAIL_DOMAINS/ALLOW_UNVERIFIED_EMAILS/WORKBENCH_DEFAULT_TENANT/ORG_SLUG blocks.
- docs/TENANCY.md, docs/local-rip.md: describe ungated stock signup, caller-chosen root slug, removed tenant-create guard.

Verification:
- Hub typecheck (apps/hub tsc --noEmit): exit 0.
- prettier --check + eslint on all touched files: clean.
- Worktree grep for deleted keys: only intentional historical mentions remain (listed in report).
Summary:
- access-policy: drop envSignupMode/envAllowedDomains bootstrap from
  evaluateSignupGate/checkSignupGate; rowless evaluation is closed
  defaults. allowUnverifiedEmails stays as an explicit caller option.
- bench-ui: delete SignupMode, DEFAULT_SIGNUP_MODE,
  emailAllowedForSignup, parseAllowedEmailDomains, parseSignupMode and
  their exports/tests; README prose updated.
- settings-ui: remove envSignupClosed notice/probe from
  AccessPolicyBlock/Editor; delete getAuthConfig/AuthConfig client for
  the removed /api/auth-config endpoint and its string/test.
- hub-api-client: remove signup_closed env-fix branch from
  authenticate; failure prose points at hub logs, never an env key.
- onboarding: thread the trimmed gate options through
  genesis/provision/routes; gate-specific tests wire the policy
  explicitly, other tests run without a gate.

Verification:
- bun test in packages/access-policy (36 pass), packages/onboarding
  (223 pass), packages/bench-ui (22 pass), packages/settings-ui
  (161 pass), packages/hub-api-client (13 pass)
- bun run typecheck: exit 0
- bun run lint: exit 0 (0 errors, 10 pre-existing warnings)
- bun run check:structural: exit 0
…config

Stock Interchange exposes no sign-in discovery endpoint, so the hub stops serving GET /api/auth-config and the web sign-in screen draws its OAuth buttons from a static client list (SOCIAL_SIGN_IN_PROVIDERS) instead of probing the hub. better-auth still decides which providers actually work. The settings-ui oauth-configured probe is untouched.
TheGreatAxios added a commit that referenced this pull request Sep 16, 2026
Intx cutover: chat tenancy + hub stock composition (combines #740/#741)
@TheGreatAxios
TheGreatAxios merged commit 6388af3 into main Sep 16, 2026
17 of 24 checks passed
@TheGreatAxios

Copy link
Copy Markdown
Contributor Author

Superseded by #742, which has been merged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant