---
id: w5/m11/t003
title: Render parity — verify cron settings against render.com live page (REST/GraphQL/MCP/UI)
worker: worker5
status: done
estimate: 30m
depends_on: [w5/m11/t002]
---

## Objective

Verify that the four surfaces (REST, GraphQL, MCP, dashboard UI) agree on the cron-job settings fields and match Render's cron settings behavior. Flag any drift as follow-up work in `docs/ADR018-render-parity.md`.

## Context

- Render cron settings (captured 2026-07-09 at `/cron/crn-cr0l4oa3esus73ajt990/settings`): General (Name, Region, Instance Type), Build (Source, Branch, Git Credentials, Root Dir, Build Filters), Deploy (Schedule, Command, Build Command, Auto Deploy), Log Stream, Notifications, Danger zone
- bex MVP scope: Schedule + Command in the Deploy section; the rest (Build Filters, Log Stream, Notifications) are deferred
- REST surface: `GET /v1/servers/{id}` should return `schedule` and `command` fields
- GraphQL: `server(id)` query returns `schedule` and `command`
- MCP: `get_service` tool returns `schedule` and `command`

## Steps

1. Check `GET /v1/servers/{id}` response shape (from `lego/backend/internal/api/`) — confirm `schedule` and `command` present for cron services
2. Check the GraphQL `server` query resolver (`lego/backend/internal/graphql/`) — confirm same fields
3. Check the MCP `get_service` tool response — confirm same fields
4. Navigate to Render's cron settings page via Playwright and screenshot the Deploy section for the parity ledger
5. Update `docs/ADR018-render-parity.md` with a Cron Job row (or expand the existing service-settings row) noting what's parity (Schedule display, Command display) and what's deferred (Build Filters, Log Stream, Notifications)

## Files

- `docs/ADR018-render-parity.md`
- `lego/backend/internal/api/` (check REST handler)
- `lego/backend/internal/graphql/` (check resolver)

## Acceptance criteria

- [ ] REST, GraphQL, and MCP all return `schedule` and `command` for a cron service
- [ ] `docs/ADR018-render-parity.md` cron settings row updated with current parity status
- [ ] Any surface gaps flagged as follow-up (not silently diverging)

## Out of scope

- Fixing REST/GraphQL/MCP gaps beyond adding `schedule`/`command` (larger backend work)
