Review: Apply ruff standard to gmail-mcp (missed from #29 rollout)

review-640-2026-03-28 Doc

review ready

Verdict: READY

Re-review after refinement. Previous review returned NEEDS_REFINEMENT with 2 body fixes. Both applied and verified.

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
  • [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, line-length=120 (should be 88), target-version="py310" (should be py312), select=["E","F","W","I"]. Issue claim confirmed.
  • [x] ~/gmail-mcp/.pre-commit-config.yaml — verified: file does not exist, parent directory exists. Needs creation. Issue claim confirmed.
  • [x] convention-python-ruff-standard — verified: note exists in pal-e-docs with exact pyproject.toml and .pre-commit-config.yaml templates.
  • [x] ~/gmail-mcp/.woodpecker.yml — verified: ruff lint step exists (lines 5-10), includes 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. Previous review flagged this as a mismatch. Refinement added explicit clarification in the Repo section: "code changes target this repo; issue tracked on pal-e-platform for board alignment." Acceptable — cross-repo tracking is documented.

Dependencies

  • [x] Parent issue pal-e-platform#29 — board item #55 in done column. Not a blocker.
  • [x] Convention note convention-python-ruff-standard — active and complete, provides exact templates.
  • [x] Woodpecker CI pipeline — already has ruff lint step. No CI changes needed.
  • [x] No blockers found in in_progress column.

Acceptance Criteria

All 4 AC are machine-verifiable:
  • AC1: pyproject.toml ruff config matches convention — agent can diff against convention template. Testable.
  • AC2: .pre-commit-config.yaml exists with ruff hook — file existence check. Testable.
  • AC3: ruff check . passes — direct command. Testable.
  • AC4: CI pipeline includes ruff step — pre-satisfied, documented in issue body. Testable.
Checklist now includes explicit ruff format . step (fix from previous review). All criteria complete.

Blast Radius

  • minio-sdk still non-conformant at line-length=120. Discovered scope from previous review — needs its own ticket. Not a blocker for this ticket.
  • Convention note gap: gmail-mcp not listed in convention-python-ruff-standard Repos In Scope table. Post-completion update needed — not a blocker.
  • Convention table also stale for minio-api and pal-e-mcp (both already at 88 but table says 120). Separate housekeeping.

Decomposition Assessment

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

Refinement Delta

Changes since previous review (NEEDS_REFINEMENT):
  • [BODY] Repo clarification — applied. Repo section now documents cross-repo tracking.
  • [BODY] Added ruff format . checklist item — applied. Checklist item #2 now reads "Run ruff format . to reformat for new line-length."
  • [SCOPE] minio-sdk discovered scope — external, not a blocker. Tracked for follow-up.
  • [SCOPE] Convention note update after remediation — post-completion work, not a blocker.

Recommendation

No action needed. Ticket is ready for dispatch.