Skip to content

chore(team-server): remove self-hosted server runtime (per #242)#245

Merged
jinhongkuan merged 2 commits into
devfrom
chore/242-team-server-removal
May 7, 2026
Merged

chore(team-server): remove self-hosted server runtime (per #242)#245
jinhongkuan merged 2 commits into
devfrom
chore/242-team-server-removal

Conversation

@jinhongkuan

Copy link
Copy Markdown
Contributor

Closes #242 (when merged).

Summary

Removes the self-hosted team-server runtime per the v0 Productization decision (Notion: 📦 v0 Productization §2). v0's team mode is a remote append-only event-log adapter consumed by pull-based CLI sync — not a long-running HTTP server with workers. The committed code is the wrong shape and we have decided not to ship it.

66 files changed: 64 deletions + 2 surgical edits.

What's deleted

  • team_server/ — entire directory (26 files: HTTP API, Slack/Notion OAuth, workers, extraction pipeline)
  • events/team_server_{bridge,consumer,pull}.py
  • deploy/{Dockerfile.team-server,team-server.docker-compose.yml}
  • 24 tests/test_team_server_*.py + tests/test_materializer_team_server_pull.py
  • 4 plan-priority-c-team-server-*.md
  • docs/research-brief-priority-c-selective-ingest-2026-05-02.md

What's edited (surgical repairs)

  • server.py — remove team_consumer_task startup + shutdown blocks (the only call site of the deleted events.team_server_consumer). The MCP stdio loop is unaffected.
  • events/materializer.py — remove the team-server-specific event_type='ingest' bridge in replay_new_events(). The existing event_type='ingest.completed' handler is unchanged and still works for non-team-server payloads.

What's preserved (v0-conformant, right shape)

Verification

  • grep -r 'from team_server\\|import team_server\\|events\\.team_server_' → empty
  • python3 -c 'import ast; ast.parse(...)' on modified files → clean
  • ruff check server.py events/materializer.py → All checks passed

Restoration path

If we ever needed to bring this back (we won't), git revert <merge-sha-of-this-PR> on a fresh branch off dev reapplies the entire surface mechanically. That's the design intent of shipping this as a deletion-only PR per the #242 PR-structure clarification.

Issues becoming moot when this lands

Out of scope (separate follow-up issue, not this PR)

  1. Build the Drive/S3/Dropbox event-log adapter (the v0 §2 commitment).
  2. Rename + generalize TeamWriteAdapter once the pluggable backend lands.
  3. Adjust setup_wizard to gate team-mode on the new adapter.

Test plan

  • grep clean (no orphan imports)
  • ast.parse clean on modified files
  • ruff clean on modified files
  • CI run on this PR (mypy + full test suite — assumes test_team_server_* deletions don't leave orphan fixtures)
  • Local pipx install --force ~/github/bicameral-mcp smoke test on a non-team install

Per v0 Productization §2 (Notion: 📦 v0 Productization), team mode in v0
is a remote append-only event-log adapter consumed by pull-based CLI
sync — not a self-hosted server. The committed team-server code on dev
is the wrong shape (HTTP /events API + Slack/Notion OAuth + per-source
workers + Docker compose) and we have decided not to ship it.

Deletes:
- team_server/ (entire directory, 26 files: app.py, db.py, schema.py,
  config.py, requirements.txt; api/, auth/, extraction/, sync/, workers/)
- events/team_server_bridge.py, events/team_server_consumer.py,
  events/team_server_pull.py
- deploy/Dockerfile.team-server, deploy/team-server.docker-compose.yml
- tests/test_team_server_*.py (24 files)
- tests/test_materializer_team_server_pull.py
- plan-priority-c-team-server-{notion-v1,real-extractor-v1,slack-v0,
  v0-release-blockers}.md
- docs/research-brief-priority-c-selective-ingest-2026-05-02.md

Repairs (surgical):
- server.py: remove team_consumer_task startup + shutdown blocks (was
  imported from events.team_server_consumer; now gone with the rest).
- events/materializer.py: remove the team-server-specific
  event_type='ingest' bridge in replay_new_events; the existing
  event_type='ingest.completed' handler is unaffected.

Preserved (right shape for v0 productization §2):
- events/__init__.py, events/CLAUDE.md, events/models.py
- events/writer.py — local append-only file writer
- events/materializer.py — local ledger projection (now bridge-free)
- events/transcript_queue.py — SessionEnd hook queue (#156)
- events/team_adapter.py — dual-write adapter shape; will be renamed +
  generalized in a follow-up issue when the Drive/S3 backend lands

Verification:
- grep -r 'from team_server|import team_server|events.team_server_' .
  → empty
- ast.parse on server.py + events/materializer.py → clean
- ruff check on modified files → All checks passed!

Closes follow-ups (will become moot when this lands):
- #160 (team-server materializer dispatch bug)
- #161 (channel_allowlist never populated)
- #196 (write decisions to team-server) — superseded by #242 follow-up

Refs #242

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented May 7, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: f3b8a745-855b-4423-b54d-2ae13fdb081b

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/242-team-server-removal

Tip

💬 Introducing Slack Agent: The best way for teams to turn conversations into code.

Slack Agent is built on CodeRabbit's deep understanding of your code, so your team can collaborate across the entire SDLC without losing context.

  • Generate code and open pull requests
  • Plan features and break down work
  • Investigate incidents and troubleshoot customer tickets together
  • Automate recurring tasks and respond to alerts with triggers
  • Summarize progress and report instantly

Built for teams:

  • Shared memory across your entire org—no repeating context
  • Per-thread sandboxes to safely plan and execute work
  • Governance built-in—scoped access, auditability, and budget controls

One agent for your entire SDLC. Right inside Slack.

👉 Get started


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

)

The initial commit ab2d45b deleted the team_server/ + events/team_server_*
files but left two surgical edits unstaged:

- server.py: remove the team_consumer_task startup + shutdown blocks
  that imported from events.team_server_consumer (now deleted).
- events/materializer.py: remove the team-server-specific
  event_type='ingest' bridge in replay_new_events that imported from
  events.team_server_bridge (now deleted).

CI ruff caught it: server.py:1389 still imported from a deleted module.
This commit applies those edits and finishes the surgery.

Refs #242

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jinhongkuan jinhongkuan had a problem deploying to recording-approval May 7, 2026 05:26 — with GitHub Actions Failure
@jinhongkuan jinhongkuan merged commit 32a9785 into dev May 7, 2026
5 of 7 checks passed
@jinhongkuan jinhongkuan deleted the chore/242-team-server-removal branch May 7, 2026 05:31
Knapp-Kevin pushed a commit to Knapp-Kevin/bicameral-mcp that referenced this pull request May 21, 2026
First minor since v0.13.9 triage. Cut from dev after BicameralAI#245 (closes BicameralAI#242)
and BicameralAI#246 (closes BicameralAI#244) landed the team-server scale-down + v1 HITL/
decision_level scale-down respectively.

- pyproject.toml: 0.13.3 → 0.14.0
- RECOMMENDED_VERSION: 0.13.3 → 0.14.0
- CHANGELOG.md: new ## v0.14.0 release header at top of the prior
  Unreleased content, with a release note documenting which dev
  Unreleased entries no longer apply (the v1 features removed by BicameralAI#246)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
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