Skip to content

feat: remove room synthesize and mycelium catchup#333

Merged
juliarvalenti merged 5 commits into
mainfrom
feat/remove-synthesize-catchup
Jun 11, 2026
Merged

feat: remove room synthesize and mycelium catchup#333
juliarvalenti merged 5 commits into
mainfrom
feat/remove-synthesize-catchup

Conversation

@juliarvalenti

Copy link
Copy Markdown
Contributor

Summary

Long-standing intent: the room synthesize + mycelium catchup memory-
synthesis system is gone. The narrower plan compiler
(consensus → plan/tasks.md) replaced it. The synthesis "blob summary of
accumulated memory" pattern is no longer how new agents get briefed —
they read the room directory and the compiled plan directly.

What changed

Backend

  • routes/rooms.py: drop POST /synthesize and GET /catchup
  • services/async_coordination.py: deleted entirely (run_synthesis,
    check_trigger, _llm_synthesize, _notify_synthesis_complete, structured-
    context builder)
  • routes/memory.py: drop _check_async_trigger fan-out after writes
  • services/metrics.py: drop record_synthesis + record_synthesis_reuse
  • models.py + schemas.py: drop Room.coordination_state,
    Room.trigger_config, Room.last_synthesis_at; drop
    RoomCreate.trigger_config; drop those three fields from RoomRead
  • alembic 0017: drop the three columns from rooms
  • tests: prune obsolete cases (deleted test_structured_memory.py;
    removed test_synthesize_session_display_404, test_room_with_trigger,
    test_async_room_full_flow, the record_synthesis* tests)

CLI

  • commands/room.py: drop room synthesize; drop --trigger flag on
    room create; drop mycelium catchup hint from room clone; drop the
    trigger_config row from the room watch header
  • commands/memory.py: drop mycelium catchup (memory_catchup)
  • cli.py: drop the top-level synthesize and catchup shortcuts

Frontend

  • api.ts: drop fetchCatchup + trigger_config from createRoom
  • create-room-dialog.tsx: drop the "Synthesis trigger (memory threshold)"
    input
  • memory-panel.tsx: drop catchup state; derive memory/contributor counts
    from the loaded memory list instead
  • event-stream.tsx: drop the synthesis_complete event case + style entry
  • room-card.tsx: deleted (unused, referenced removed coordination_state)
  • room/[name]/page.tsx: drop coordination_state from the Room interface

Generated OpenAPI client

  • openapi.json regenerated from the live FastAPI app
  • mycelium-cli/src/mycelium_backend_client/ and mycelium-client/
    regenerated via openapi-python-client
  • synthesize_room*, catchup_room*, *_trigger_config_type_0 files
    removed; net result includes new task_* models the prior snapshot was
    missing (incidental)

Docs

  • README, CLAUDE, docs/demo-script.md, docs/stories.html,
    docs/mycelium-dataflow.html
  • mycelium-cli/src/mycelium/docs/{overview, memory, rooms, quickstart, cognitive-engine, troubleshooting, index, plan, architecture, guides/structured-memory, concepts/memory}.md
  • docs/generate_docs.py: drop the "synthesize / catchup / watch" CLI
    group entry
  • docs/index.html, docs/adapters.html, docs/reference.html
    regenerated

SKILLs + promo

  • claude_code + openclaw SKILL.md: strip synthesis trigger flag and
    room synthesize command
  • mycelium-promo/index.html: already clean — no refs found

Test plan

  • fastapi-backend: pytest tests/ --ignore=tests/test_integration.py → 277 passed
  • fastapi-backend: ruff check, ruff format --check, ty check → clean
  • mycelium-cli: pytest tests/ → 181 passed
  • mycelium-cli: ruff check, ruff format --check, ty check → clean
  • mycelium-frontend: pnpm build → clean (5 routes)
  • OpenAPI spec contains zero synthesize/catchup/trigger_config/
    coordination_state/last_synthesis_at hits
  • Manual: run alembic 0017 against a populated dev DB, verify the
    three columns drop cleanly
  • Manual: create a room in the UI, verify the "Synthesis trigger"
    field is gone and creation succeeds

Bulk rename across 213 files of `Copyright 2026 Julia Valenti` →
`Copyright 2026 Mycelium Contributors` in source-file copyright
headers. Year and SPDX license identifier preserved. No code or
behavior changes.
Long-standing intent to drop the memory-synthesis system. The narrower
plan_compiler step (consensus → plan/tasks.md) replaced it; the
synthesis "blob summary of accumulated memory" pattern is gone, and
the room directory + compiled plan are the agent briefing now.

Backend
- routes/rooms.py: drop POST /synthesize and GET /catchup
- services/async_coordination.py: removed entirely
- routes/memory.py: drop _check_async_trigger fan-out
- services/metrics.py: drop record_synthesis + record_synthesis_reuse
- models.py + schemas.py: drop Room.coordination_state, Room.trigger_config,
  Room.last_synthesis_at; drop RoomCreate.trigger_config; drop
  RoomRead.{coordination_state, trigger_config, last_synthesis_at}
- alembic 0017: drop the three columns from rooms
- tests: prune obsolete cases (test_structured_memory entirely;
  test_synthesize_session_display_404, test_room_with_trigger,
  test_async_room_full_flow, the record_synthesis* tests)

CLI
- commands/room.py: drop `room synthesize`; drop `--trigger` flag on
  `room create`; drop `mycelium catchup` hint from `room clone`;
  drop the trigger_config row from `room watch` header
- commands/memory.py: drop `mycelium catchup` (`memory_catchup`)
- cli.py: drop the synthesize/catchup top-level shortcuts

Frontend
- api.ts: drop fetchCatchup + trigger_config from createRoom
- create-room-dialog.tsx: drop "Synthesis trigger (memory threshold)" field
- memory-panel.tsx: drop catchup state + derive memory/contributor counts
  from the loaded memory list
- event-stream.tsx: drop synthesis_complete case + style entry
- room-card.tsx: deleted (unused, referenced removed coordination_state)
- room/[name]/page.tsx: drop coordination_state from Room interface

Generated client
- openapi.json regenerated from the live FastAPI app
- mycelium-cli/src/mycelium_backend_client + mycelium-client regenerated
- generated synthesize_room*, catchup_room*, *_trigger_config_type_0 files
  removed

Docs
- README, CLAUDE, demo-script, stories.html, mycelium-dataflow.html
- mycelium-cli/src/mycelium/docs/{overview, memory, rooms, quickstart,
  cognitive-engine, troubleshooting, index, plan, architecture,
  guides/structured-memory, concepts/memory}.md
- generate_docs.py: drop "synthesize / catchup / watch" group entry;
  index.html/adapters.html/reference.html regenerated

SKILLs + promo
- claude_code + openclaw SKILL.md: strip synthesis trigger flag and
  "room synthesize" command
- mycelium-promo: clean — no refs found
…e-catchup

# Conflicts:
#	fastapi-backend/app/services/async_coordination.py
#	fastapi-backend/tests/test_structured_memory.py
#	mycelium-frontend/src/components/room-card.tsx
Resolve conflict in docs/index.html (keep the inline session-negotiation
walkthrough; drop the re-added `mycelium synthesize` example and its callout).

CI fixes:
- ruff format alembic_migrations/versions/0017_drop_synthesis_columns.py
- Regenerate openapi.json snapshot + typed clients from the merged backend
  (drops stale last_synthesis_at/trigger_config; adds main's /sync-mas route
  and its generated client modules)

Tidy main-introduced references to the removed commands:
- cursor mycelium.mdc: drop `room synthesize` + `--trigger` flag, reword the
  CognitiveEngine line to "compiles consensus into the room's shared plan"
- claude-code-e2e / cursor-e2e skills: replace `mycelium catchup` with the
  `GET /api/rooms/{room}/messages` endpoint
Adds a point-in-time message reader to the room command group, wrapping the
existing `list_messages` client call (newest-first, with --limit/--sender/--type
and --json). Fills the gap left by removing `catchup`: the backend had the
read endpoint and the generated client wrapped it, but no CLI command exposed
it — the only way to read messages was `room watch` (live stream) or curl.

- Replace the curl message-reads in the e2e/cursor-e2e/claude-code-e2e skills
  with `mycelium room messages` (uses --type + --json for consensus extraction)
- Regenerate docs/reference.html (also picks up main's `room sync-mas` entry,
  which had not been regenerated)
- Add tests covering rendering, filter pass-through, and the empty case
@juliarvalenti juliarvalenti merged commit d931a54 into main Jun 11, 2026
6 checks passed
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