Remove unreachable ScreenPipe, beta-gate, commitment detection, and demo mode#89
Merged
Merged
Conversation
… mode
These three MCP servers were registered only in .claude-plugin/plugin.json and
.claude/mcp/ — neither of which any install path reads. install.sh reads only
System/.mcp.json.example, which never listed them. Result: 2,377 lines of code
no user could ever load, plus a /beta-activate flow that could not work for
anyone and a check_beta_enabled gate CLAUDE.md told Claude to call against a
server that was never running.
Removed:
- core/mcp/{beta,commitment,demo_mode}_server.py and their tests
- .claude/config/beta-features.yaml (read only by beta_server)
- ScreenPipe skills, docs, cleanup plist; demo-mode skills/docs; System/Demo/**
- beta/commitment entries dangling in .claude-plugin/plugin.json
Consequential edits:
- pi-autostart.cjs: gated on the now-deleted beta flag; rewired to an explicit
PI_AUTOSTART / pi_autostart flag so Pi autostart still works.
- work_server.py: dropped is_demo_mode() branching; getters return canonical paths.
- verify-distribution.sh Check 9: was a warn-only server *count*; now hard-errors
if the set of core/mcp servers doesn't match the template exactly. This is the
guardrail whose absence let the orphaned servers ship.
Nothing depends on the removed beta gate: no code reads the Pi beta flags and
analytics gates on user-profile.yaml independently.
Gates: ruff clean · 145 pytest pass · 4 hook tests pass · verify-distribution
0 errors · path-consistency pass.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Removes three MCP servers that no install path could ever load, plus everything that existed only to serve them.
install.shreads onlySystem/.mcp.json.example.beta_server.py,commitment_server.py, anddemo_mode_server.pywere registered only in.claude-plugin/plugin.jsonand.claude/mcp/— neither of which any install reads. So they were dead on arrival: 2,377 lines nobody ran, a/beta-activateflow that could not work for anyone, and acheck_beta_enabledgate thatCLAUDE.mdtold Claude to call against a server that was never running.This is the root cause behind two real user reports (Michelle's phantom ScreenPipe error; Jim's silently no-op'd MCP instructions).
Removed
core/mcp/{beta,commitment,demo_mode}_server.py+ tests.claude/config/beta-features.yaml(read only bybeta_server)System/Demo/**beta/commitmententries inplugin.jsonConsequential edits (not pure deletion)
pi-autostart.cjsgated on the now-deletedbeta.activated.piflag. Rewired to an explicitPI_AUTOSTART/pi_autostartflag so Pi autostart still works. This is the one product decision in the PR — how Pi gets enabled now that the beta gate is gone.work_server.pydroppedis_demo_mode()branching; getters return canonical paths.verify-distribution.shCheck 9 was a warn-only server count; now hard-errors if the set ofcore/mcpservers doesn't match the template exactly — the guardrail whose absence let the orphans ship.Gates
ruff clean · 145 pytest pass (1 skipped) · 4 hook tests pass · verify-distribution 0 errors · path-consistency pass · plugin.json valid.
🤖 Generated with Claude Code