Skip to content

feat(ci): dogfood the root .editorconfig + aggregate 'just ci' on the maintainer repo#9

Merged
maybebyte merged 5 commits into
mainfrom
chore/dogfood-editorconfig-ci
Jul 7, 2026
Merged

feat(ci): dogfood the root .editorconfig + aggregate 'just ci' on the maintainer repo#9
maybebyte merged 5 commits into
mainfrom
chore/dogfood-editorconfig-ci

Conversation

@maybebyte

Copy link
Copy Markdown
Owner

Summary

Dogfood two Phase-1 template layers on the maintainer repo (roadmap gap #7 + gap #3): drop the shipped .editorconfig at root, and add the aggregate just ci / verify recipe — so the maintainer runs the same "one command, all gates" entry point it ships to every downstream.

Changes

  • .editorconfig — byte-for-byte copy of template/.editorconfig. The template enforces it passively (no checker), so parity is met by dropping the file at root; values already match repo conventions.
  • just ci + verify — mirror template/justfile.jinja's ci: fmt-check lint typecheck test audit (+ verify: ci). audit is a member because the template chains it ({% if enable_dependency_audit %} audit{% endif %}) and it is itself a PR-blocking check here.
  • Consistency edits — adding audit to ci means it is no longer "out-of-band" (this repo defines out-of-band as "ships a recipe but stays off ci"), so the just audit recipe/section wording is updated; scan's "out-of-band" wording is deliberately left intact (scan stays off ci). New ## Run every gate section in AGENTS.md.

Testing

  • TMPDIR=<roomy> just ciruff format --check + ruff check + basedpyright (0 errors) + pytest (70 passed, full generation matrix) + pip-audit (no vulns) → ends ci: all gates passed.
  • just precommit clean (incl. hygiene on the new root .editorconfig); diff template/.editorconfig .editorconfig empty.

Notes for reviewers

  • audit is intentionally in ci (mirrors the template), not dropped — the local aggregate reproduces the full PR gate. CI is unchanged: it still runs parallel per-gate jobs + the OS×Python matrix and does not invoke just ci.
  • No check: fast split (the template ships none — use just fmt-check lint typecheck), and candidate F (pointing CI jobs at the just recipes) is deferred: the scan job's three tools don't map onto the audit+scan recipe split, so it is a real restructure for a follow-up.
  • No CI / dependency / mise / CHANGELOG change; zizmor N/A (no workflow touched).

Related

maybebyte added 5 commits July 7, 2026 16:01
Design + implementation plan for Phase-1 item #4 (gap #7 editorconfig, gap #3 aggregate `just ci`). Records the mirror decisions: audit is a `ci` member (the template chains it), no `check:` split, candidate F deferred.
Byte-for-byte copy of template/.editorconfig. The template enforces it passively (no checker), so parity is met by dropping the file at root; values already match repo conventions.
Mirror template/justfile.jinja's `ci: fmt-check lint typecheck test audit` (+ `verify: ci`). audit is a member because the template chains it and it is a PR-blocking check here via the scan job. Re-word the audit recipe comments accordingly — it is no longer out-of-band.
Add a "Run every gate" section (recipe shape, roomy-TMPDIR note, scanners stay CI-only, downstream-vs-maintainer `ci`, forward-sync for policy/fuzz). Update the Dependency-audit section: audit is chained into `just ci`, not out-of-band.
The "Run every gate" section described all four per-gate CI jobs as
running across the OS×Python matrix, each via `uv run` inline. In fact
only `test` is matrixed; `typecheck`, `lint`, and `scan` are single
`ubuntu-latest` jobs, and `scan` invokes `uvx`/`mise exec`, not
`uv run` — matching this file's own Scanning and Dependency-audit
sections. Correct both the section prose and the divergences summary.
@maybebyte maybebyte merged commit b7dd8b8 into main Jul 7, 2026
10 checks passed
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