8000 chore(0002): quality surface stabilization by Ryan-AI-Studios · Pull Request #35 · gimp-mcp/gimp-mcp · GitHub
[go: up one dir, main page]

Skip to content

chore(0002): quality surface stabilization - #35

Closed
Ryan-AI-Studios wants to merge 9 commits into
gimp-mcp:mainfrom
Ryan-AI-Studios:feature/0002-quality-surface-stabilization
Closed

Ryan-AI-Studios wants to merge 9 commits into
gimp-mcp:mainfrom
Ryan-AI-Studios:feature/0002-quality-surface-stabilization

Conversation

@Ryan-AI-Studios
@Ryan-AI-Studios Ryan-AI-Studios commented Aug 2, 2026 •
Copy link
Copy Markdown

Summary

Implements conductor track 0002-QualitySurfaceStabilization: honest full-surface ruff/format, script layout hygiene, pre-commit/CI cleanup, basedpyright policy, and local ledgerful rules.toml fix.

Changes

  • Move live GIMP scripts out of pytest discovery: tests/ → scripts/
  • ruff format + ruff check across product Python (plugin included with E402/I/RUF001/RUF002 per-file policy)
  • Honest pyproject: remove temp product excludes; retain global B904/E501 with deferred debt notes
  • Pre-commit: ruff-check then ruff-format @ v0.16.1
  • basedpyright: server + unit tests; permanent plugin exclude
  • CI: retire lint.yml; ci.yml is sole quality SoT
  • docs: planner-handoff quality surface policy

Verification (local)

  • uv run ruff check . / ruff format --check . / basedpyright / offline pytest (2) — green
  • ledgerful verify --scope full — green
  • Internal review CLEAN; Codex final PASS WITH DEFERRED P3

Notes

  • .ledgerful/rules.toml is gitignored; fixed locally (duplicate required_verifications)
  • Product behavior unchanged (quality surface only)

Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4

Summary by CodeRabbit

  • Quality & Reliability

    • Added automated CI checks for linting, formatting, type checking, and fast test suites.
    • Added offline smoke tests to verify key modules load correctly.
    • Improved timeout handling for communication with GIMP.
  • Documentation

    • Added a comprehensive planning, onboarding, setup, and workflow reference.
  • Developer Experience

    • Standardized formatting and expanded local tooling configuration.
    • Improved ignore rules for caches, build output, editor files, and local state.

Ryan added 9 commits August 2, 2026 08:17
Add uv dev toolchain (ruff, basedpyright, pytest), project CI with
Node-24-ready Actions, gitignore for local agent/conductor governance,
offline smoke tests, and docs/planner-handoff.md for cold-start planners.
Includes small gimp_mcp_server typing/format fixes for the new gate.
Document 0001 bootstrap complete, 0002 quality stabilization as next,
and the full path through 0028 final product polish.
Move test_add_text_metadata and continuous_edit_test (with fixtures) out of
pytest discovery paths so offline collection only sees unit tests. Update
pytest norecursedirs and gitignore output path.

Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
Drop temporary product-Python extend-exclude entries and apply ruff format
across the intentional quality surface (server, plugin, demos, scripts, tests).

Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
Auto-fix demos/scripts; manual RUF034 on plugin; ASCII-ize non-plugin
unicode for RUF001/002. Honest pyproject: plugin per-file E402/I/RUF001/002
(no import reorder), drop dead T201 ignore, retain B904+E501 with comments,
basedpyright scripts exclude, pre-commit ruff-check then ruff-format.

Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
Branch protection on main is absent (no required Lint check name). Dual
workflows double-ran ruff on every PR. Keep ci.yml as the single quality gate.

Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
Document post-0002 lint vs types surface, plugin excludes, lockfile SoT for
mcp/fastmcp, type-hardening dials, scripts layout, and ci.yml as sole CI gate.

Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
Ledger: 83598dee-78b5-4c0a-8975-96a7b5cd15c4
@coderabbitai
coderabbitai Bot commented Aug 2, 2026 •
Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e3c637c1-58dd-425c-850b-0cee9c9d30ab

📥 Commits

Reviewing files that changed from the base of the PR and between 09bfb2d and 8634c27.

⛔ Files ignored due to path filters (3)
  • scripts/continuous_edit_test/files/bg_night_2048.png is excluded by !**/*.png
  • scripts/continuous_edit_test/files/winry_joy.png is excluded by !**/*.png
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (15)
  • .github/workflows/ci.yml
  • .github/workflows/lint.yml
  • .gitignore
  • .pre-commit-config.yaml
  • agent_edit_demo.py
  • bg_remove.py
  • bg_remove_iterative.py
  • docs/planner-handoff.md
  • gimp-mcp-plugin.py
  • gimp_mcp_server.py
  • pyproject.toml
  • run_tests.py
  • scripts/add_text_metadata.py
  • scripts/continuous_edit_test/continuous_edit_test.py
  • tests/test_quality_smoke.py

Walkthrough

The pull request adds CI quality checks, expands Python tooling configuration, documents repository workflows, adds smoke tests, and applies Ruff-style formatting across the MCP server, GIMP plugin, and supporting scripts. Socket handlers now catch TimeoutError, and call_api avoids mutable defaults.

Changes

Repository quality foundation

Layer / File(s) Summary
Quality tooling, CI, documentation, and smoke tests
.github/workflows/ci.yml, .gitignore, .pre-commit-config.yaml, pyproject.toml, docs/planner-handoff.md, tests/test_quality_smoke.py
Added CI, Ruff, basedpyright, pytest, ignore rules, planner documentation, and offline import smoke tests.

Runtime and script consistency

Layer / File(s) Summary
Transport and workflow scripts
agent_edit_demo.py, bg_remove.py, bg_remove_iterative.py, run_tests.py, scripts/*
Standardized formatting and quoting. Socket receive handlers now catch TimeoutError. Existing workflows remain unchanged.
MCP server API wiring
gimp_mcp_server.py
Reformatted tool declarations and payloads, validated connected sockets, and changed call_api to use nullable collection defaults.
GIMP plugin operations
gimp-mcp-plugin.py
Reformatted lifecycle, image, layer, selection, text, effect, transformation, and export operations. Timeout handling now catches TimeoutError.

Estimated code review effort: 4 (Complex) | ~45 minutes

Possibly related PRs

Suggested labels: documentation

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Ryan-AI-Studios
Copy link
Copy Markdown
Author

Opened against upstream by mistake; quality-surface work is for Ryan-AI-Studios fork track 0002.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0