---
id: w1/m17/t005
title: Render parity — advanced Postgres across REST/GraphQL/MCP/UI vs render.com
worker: worker1
status: done
estimate: 20m
depends_on: [w1/m17/t004]
---

## Objective

The standing Render-parity check for this milestone: verify the advanced managed-Postgres surfaces added in t001–t004 (recovery-info/recover/exports, suspend/resume/restart, ipAllowList, pooler strings, users) are consistent across REST, GraphQL, MCP, and the dashboard, and faithful to render.com's Postgres product — noun/path/field shapes match Render where Render defines them, and bex extensions are a safe superset.

## Context

- Parity method + precedent: `docs/ADR018-render-parity.md` audit (w1/m13) and the "one core, three adapters — surfaces cannot drift" rule in `docs/ADR006-bex-api.md`.
- Render maps to check: `/postgres/{id}/recovery-info`, `/recover`, `/exports`, `/{suspend,resume,restart}`, `/users`, `ipAllowList`, pooler connection strings; the dashboard GraphQL `database(...)` noun (REST `postgres`).
- Playwright MCP is available to capture render.com surfaces; screenshots go to `.playwright-mcp/` with bare filenames (per CLAUDE.md).
- The dashboard is the client of the same GraphQL — confirm the three adapters + UI agree.

## Steps

1. Walk each new verb across REST / GraphQL / MCP and confirm one Core implementation, no drift, and Render-faithful names/shapes (and safe-superset extensions).
2. Cross-check against render.com's actual Postgres surfaces (capture with Playwright where useful); note any deliberate divergences.
3. Fix any drift found; update `docs/ADR018-render-parity.md` (flip the m17 rows) and the Postgres docs if shapes changed; prettier the markdown.

## Files

- `lego/backend/internal/postgres/` (adapters, if drift found)
- `dashboard/src/features/databases/` (if UI drift found)
- `docs/ADR018-render-parity.md`, `docs/ADR009-postgresql-management.md`, `docs/ADR006-bex-api.md`

## Acceptance criteria

- [ ] Every new Postgres verb behaves identically across REST/GraphQL/MCP (same Core method) and is reflected in the UI.
- [ ] Names/paths/fields match render.com where Render defines them; bex extensions are documented as a safe superset.
- [ ] `docs/ADR018-render-parity.md` m17 rows flipped from ✖; docs prettier-clean.

## Out of scope

- HA / replica parity (deferred to `w1/013`).
- Net-new features beyond t001–t004.
