# Old Matchmaking — Decommission & Slot-In Plan > How `matchmaking-v2` (Scout) replaces the dead `matchmaking` service. Companion to > `ENGINE_DESIGN.md`. Status (2026-06-16): **planned, local teardown not yet executed.** ## Current state (verified live 2026-06-16) The old `matchmaking` runs identically in **both** local (`growqr-demo`) and prod (EC2): | Component | Local | Prod (EC2 `3.109.159.139`) | |---|---|---| | `matchmaking-api` | `:8006` → 8000, up | `:8006` → 8000, up 4d | | `matchmaking-worker` | up | up 4d | | `matchmaking-ingestion-worker` | up | up 4d | | `matchmaking-postgres` (own DB, NOT RDS) | `:5439`, vol `matchmaking-pgdata` | `:5439`, vol `matchmaking-pgdata` | Containers are *running* but the **service is functionally dead** (ingestion chain broke 2026-05-27; 986,770 stale score rows for 21 users). `:8011` is free in both. AWS reachable: CLI as `iam::189924572890:user/rahul`; SSH `ec2-user@3.109.159.139` (key `~/.ssh/growqr-key.pem`). ## Locked decisions 1. **Reuse port `:8006`** (the old matchmaking's slot) — NOT a new `:8011`. This overrides `ENGINE_DESIGN.md` §1's "12th agent on :8011". Rationale: in-place swap — v2 inherits the existing `api.growqr.ai/matchmaking/*` nginx route + the frontend's existing matchmaking wiring, so the Scout UI works with minimal rewiring. 2. **Drop the old corpus DB.** v2 is **on-demand, no corpus** (`ENGINE_DESIGN.md` §1) — so `matchmaking-postgres` + its `matchmaking-pgdata` volume are discarded. The data is stale/worthless (design doc verdict). Irreversible — confirm before deleting the volume. 3. **WS-agent via orchestrator.** v2 reuses `:8006`, registers in orchestrator `AGENT_URLS`, and the frontend reaches it through `useAgentSession` (WS) — matching the mesh pattern (like course-service `:8010`). The old `/matchmaking/*` nginx HTTP route stays vestigial or is removed later. ## Sequence **A. Local — immediate (on go-ahead):** - `docker compose stop` + `rm` the 4 matchmaking containers (api, worker, ingestion-worker, postgres). - Drop the `matchmaking-pgdata` volume (decision #2). Frees `:8006` + `:5439` for v2 dev. - Comment/remove the matchmaking services from the local compose; v2 takes `:8006`. **B. Prod — later (after v2 validated):** - Stop the 4 prod matchmaking containers; remove from `docker-compose.prod.yml`. - Deploy v2 on `:8006`; add to orchestrator `AGENT_URLS`; keep/retire the nginx `/matchmaking/*` route. - Periodic `docker builder/image prune` (per aws-deployment.md) after the swap. ## Rollback Local teardown is reversible except the dropped volume. Keep the old `matchmaking` repo + compose definition until v2 is validated in prod, so prod can be restored by re-adding the service block.