---
id: w2/m8/t010
title: Closeout — DoD verified, move to done/
worker: worker2
status: done
estimate: 15m
depends_on: [w2/m8/t009]
---

## Objective

Standing closing task, last. Verify the milestone's definition of done actually holds — the live connect→list→disconnect loop against a real GitHub account — then close the milestone per board convention.

## Context

- DoD (milestone README): real GitHub App configured, connect via install→callback, repos visible on REST/GraphQL/MCP incl. a private repo, disconnect empties, unset env ⇒ 503, dashboard card works.
- Closing = `/pm done w2/m8/t010` as the final act: all tasks `status: done` + moved to `done/`, README rows `— **DONE**` + `**Status:** done`, whole `w2/m8/` → `w2/done/m8/`, checkbox in `w2/README.md`.

## Steps

1. Run the live DoD check; record evidence in the milestone README.
2. Execute the closeout moves.

## Files

- `.pm/w2/m8/**`, `.pm/w2/README.md`

## Acceptance criteria

- [ ] DoD evidenced, board state synced in all three places, no stub left at `.pm/w2/m8/`

## Out of scope

- Anything that expands scope — file follow-ups instead

## Handoff runbook (code-complete 2026-07-11; live run pending)

t001–t009 are built + unit-tested + lint-clean (backend `go test ./...`, operator `make test`, `make lint` all green). The remaining live DoD check shares infrastructure with m9/t005 — do both in one session against a real GitHub App + cluster. See the full step-by-step in **[m9/t005 § Handoff runbook](../m9/t005.md)**; the m8-specific half is:

1. Configure `BEX_GITHUB_APP_ID`/`BEX_GITHUB_APP_PRIVATE_KEY`/`BEX_GITHUB_APP_SLUG` + `BEX_CP_DB_URI` on the target bex-api.
2. Connect via install → callback; confirm `GET /v1/repos`, GraphQL `repos`, MCP `list_repos` return the installation's repos **including a private one**.
3. Disconnect empties them; any `BEX_GITHUB_APP_*` unset ⇒ every git-connect verb 503.
4. Dashboard Settings → Connect GitHub card shows/creates/removes the connection (run `yarn codegen` first — see m9/t005 § dashboard verification).
5. Record evidence here, then execute the closeout moves.
