Summary
Meshflow Python repos (meshflow-bot, meshflow-api) should share one documented formatting/lint toolchain and quote policy, then land the inevitable large mechanical formatting PR once—not as drive-by churn on feature branches.
Do not start this until explicitly scheduled. Feature work (e.g. bot version reporting) should stay off a repo-wide reformat branch.
Background
- Black normalises strings to double quotes; it has no single-quote mode.
skip-string-normalization only preserves existing quotes.
- flake8-quotes can enforce single quotes, but does not auto-fix the whole tree.
- meshflow-bot largely uses single quotes today; meshflow-api CI historically used double in
.flake8 while much code is mixed.
- Partial config already landed on some branches (
pyproject.toml skip-string-normalization, bot .flake8, dev deps)—this ticket is to finish the policy, align both repos, and run the big format pass deliberately.
Options to decide in planning (not now)
| Approach |
Pros |
Cons |
| Stay on Black + flake8-quotes + isort |
Minimal CI change |
No auto-format to single; huge manual or one-off script |
Ruff format + check (quote-style = "single") |
Single tool, Black-like layout, configurable quotes |
CI/skill doc migration; team learns ruff commands |
Recommendation to evaluate when picking up: Ruff if the goal is consistent single quotes with one formatter; Black + flake8-quotes if the goal is minimal tool churn and lint-only enforcement.
Scope — meshflow-api
Scope — meshflow-bot
Out of scope (this ticket)
- meshflow-ui (Prettier/ESLint—separate concern).
- Reformatting on unrelated feature branches.
- Changing runtime behaviour or API contracts.
Expected outcome
- Both repos document the same commands in README or AGENTS.md.
- One formatting PR per repo (or one coordinated merge order: agree config PRs first, then format PRs).
- Future PRs fail CI if quotes/style drift.
Risks
- Large diff → painful merges with in-flight branches; coordinate freeze or merge main first.
- Blame noise on
git blame → optional .git-blame-ignore-revs entry after format commit.
Test plan (when implemented)
Related
Summary
Meshflow Python repos (
meshflow-bot,meshflow-api) should share one documented formatting/lint toolchain and quote policy, then land the inevitable large mechanical formatting PR once—not as drive-by churn on feature branches.Do not start this until explicitly scheduled. Feature work (e.g. bot version reporting) should stay off a repo-wide reformat branch.
Background
skip-string-normalizationonly preserves existing quotes..flake8while much code is mixed.pyproject.tomlskip-string-normalization, bot.flake8, dev deps)—this ticket is to finish the policy, align both repos, and run the big format pass deliberately.Options to decide in planning (not now)
quote-style = "single")ruffcommandsRecommendation to evaluate when picking up: Ruff if the goal is consistent single quotes with one formatter; Black + flake8-quotes if the goal is minimal tool churn and lint-only enforcement.
Scope — meshflow-api
Meshflow/pyproject.toml+Meshflow/.flake8(or Ruff-only config).requirements.dev.txt/ PR workflow (black --check,isort,flake8) with bot.meshflow-api/.cursor/skills/meshflow-git-workflowpre-commit section if commands change.Meshflow/(exclude migrations per existingforce-exclude/ policy).Scope — meshflow-bot
pyproject.toml,.flake8,requirements.dev.txt).unit-tests.yaml).src/+test/.meshflow-git-workflowskill if needed.Out of scope (this ticket)
Expected outcome
Risks
git blame→ optional.git-blame-ignore-revsentry after format commit.Test plan (when implemented)
black/ruff format --check(or equivalent) passes in both repos.flake8/ruff checkpasses in both repos.isort --check-onlypasses (or Ruff import sorting).Related
bot-99/*branches; reconcile when this work starts.