Review: Apply ruff standard to gmail-mcp (re-review)

review-640-v2-2026-03-28 Review

review approved

Verdict: APPROVED

Re-review after refinement. Previous review (review-640-2026-03-28) returned NEEDS_REFINEMENT with 2 body fixes. Both applied and independently verified in this pass.

Template Completeness

  • [x] Type — Feature
  • [x] Lineage — board, story, arch, discovered-from all present
  • [x] Repo — forgejo_admin/gmail-mcp (clarified: code targets gmail-mcp, tracked on pal-e-platform for board alignment)
  • [x] User Story — clear as-a/I-want/so-that
  • [x] Context — explains #29 rollout gap, current config drift (line-length=120, py310)
  • [x] File Targets — 2 targets with specific config values
  • [x] Acceptance Criteria — 4 items, all verifiable
  • [x] Test Expectations — ruff check + ruff format commands
  • [x] Constraints — references convention note, notes reformatting need
  • [x] Checklist — 5 items including explicit ruff format step (fix from previous review)
  • [x] Related — parent issue #29 + convention note referenced

Traceability

  • [x] story:superuser-deploy — platform operator deploying consistent standards
  • [x] arch:ci-pipeline — CI linting infrastructure
  • [x] Forgejo issue — forgejo_admin/pal-e-platform#244, open

File Targets

  • [x] ~/gmail-mcp/pyproject.toml — verified: exists, current config is line-length=120, target-version="py310", select=["E","F","W","I"]. Issue body accurately describes the drift.
  • [x] ~/gmail-mcp/.pre-commit-config.yaml — verified: does not exist yet, parent directory exists. Creation is the correct action.
  • [x] convention-python-ruff-standard — verified: note exists in pal-e-docs with exact pyproject.toml template (py312, line-length=88, E/F/I/W) and .pre-commit-config.yaml template (ruff-pre-commit v0.15.2).
  • [x] ~/gmail-mcp/.woodpecker.yml — verified: ruff lint step present (lines 5-10) with both ruff check and ruff format --check. AC4 pre-satisfied confirmed.

Repo Placement

Issue filed on forgejo_admin/pal-e-platform with code changes targeting forgejo_admin/gmail-mcp. Cross-repo tracking is now explicitly documented in the Repo section. Acceptable.

Dependencies

  • [x] Parent issue pal-e-platform#29 — open but 5/6 repos complete. Not a blocker.
  • [x] Convention note convention-python-ruff-standard — active, provides exact templates.
  • [x] Woodpecker CI pipeline — already has ruff lint step. No CI changes needed.
  • [x] No blockers found in in_progress column (only phase-postgres items, unrelated).

Acceptance Criteria

All 4 AC are machine-verifiable:
  • AC1: pyproject.toml ruff config matches convention — agent can diff against template. Testable.
  • AC2: .pre-commit-config.yaml exists with ruff hook — file existence check. Testable.
  • AC3: ruff check . passes clean — direct command. Testable.
  • AC4: CI pipeline includes ruff step — pre-satisfied, already in .woodpecker.yml. Testable.

Blast Radius

  • gmail-mcp not in convention table: convention-python-ruff-standard "Repos In Scope" table does not list gmail-mcp. Post-completion housekeeping, not a blocker.
  • Convention table stale: minio-api and pal-e-mcp may have been updated since the table was written. Separate housekeeping.
  • No downstream consumers affected — gmail-mcp is a standalone MCP server.

Decomposition Assessment

  • 2 file targets in 1 repo — under the 3-file threshold.
  • 4 acceptance criteria — under the 5-AC threshold.
  • Estimated agent time: <3 minutes (config update + format + fix violations + create .pre-commit-config.yaml).
No decomposition needed.

Refinement Delta

Changes verified since previous NEEDS_REFINEMENT review:
  • [BODY] Repo clarification — confirmed applied. Repo section now reads: "code changes target this repo; issue tracked on pal-e-platform for board alignment."
  • [BODY] Added ruff format . checklist item — confirmed applied. Checklist item #2 reads: "Run ruff format . to reformat for new line-length."

Recommendation

No action needed. Ticket is approved for dispatch.