Skip to content

ci: adopt the canonical org lint gate - #94

Merged
Bryan Fawcett (bryanfawcett) merged 3 commits into
mainfrom
ci/adopt-org-lint
Oct 2, 2026
Merged

Bryan Fawcett (bryanfawcett) merged 3 commits into
mainfrom
ci/adopt-org-lint

Conversation

@bryanfawcett

Copy link
Copy Markdown
Contributor

What

Adopts the canonical org lint gate. .github/workflows/lint.yml is a
caller for nyuchi/.github/.github/workflows/reusable-lint.yml@main,
dropped in verbatim and not customised.

It publishes exactly the five contexts the mukoko-dev org ruleset
(id 22932468)
already requires on every repo:

  • lint / actionlint
  • lint / JSON validity
  • lint / prettier
  • lint / markdownlint
  • lint / yamllint

mukoko emitted none of them, so the ruleset had every PR in this
repo blocked. This PR is what unblocks it.

Config files

Landed verbatim from nyuchi/.github so every repo in the five orgs
lints identically:

  • .prettierrc
  • .prettierignore
  • .markdownlint.jsonc
  • .yamllint.yaml
  • .editorconfig

Two pre-existing files were replaced by their canonical versions:

  • .prettierrc — the old file set printWidth: 100 plus
    semi/singleQuote/bracketSpacing/arrowParens. The canonical file
    uses printWidth: 80 and leaves the rest at Prettier defaults. The CI
    gate only checks **/*.{md,mdx,json,jsonc}, so no TypeScript source is
    reformatted here — but note that pnpm format and the lint-staged
    prettier --check hook now wrap TS/TSX at 80 rather than 100. Nothing
    in CI (pnpm turbo run build typecheck lint test) enforces Prettier;
    eslint-config-prettier only disables formatting rules, so this
    cannot break ci / Build & Test.
  • .prettierignore — the old file excluded app/, honey/, and
    build-output directories. The canonical file ignores node_modules/,
    .git/, YAML (handled by yamllint/actionlint), lockfiles, and files
    with structural meaning. Build outputs are absent from a fresh CI
    checkout, and the Flutter (app/) and Python (honey/) trees contain
    no md/json that the gate would have skipped by accident.

No "prettier" key existed in package.json, so there was nothing
shadowing .prettierrc. No tracked file is shadowed by .gitignore
(checked with git ls-files | git check-ignore --no-index --stdin),
so the CLAUDE.md trap does not apply here. ci.yml publishes only
ci / Build & Test and does not compete with the lint / * contexts,
so it is untouched.

Violations fixed (not suppressed)

Run locally with CI's exact pinned versions — actionlint 1.7.12,
prettier 3.9.4, markdownlint-cli2 0.23.2, yamllint 1.38.0.

  • prettier — 8 files reformatted: six services/*/wrangler.jsonc,
    web/tsconfig.json, web/vercel.json. The .jsonc files pick up
    trailing commas (valid JSONC, which is what Wrangler parses); the
    .json files do not, and lint / JSON validity still parses every
    *.json with json.load().
  • markdownlint — 12 issues in 5 files.
    • MD029 (ordered-list prefix) in docs/guides/creating-mini-app.md
      and docs/guides/creating-service.md — auto-fixed.
    • MD034 (bare URLs) in web/MIGRATED.md and
      web/studio/MIGRATED.md — auto-fixed to autolinks.
    • MD036 (emphasis used instead of a heading) ×5 in ARCHITECTURE.md —
      fixed by hand, no rule disabled. The title-block and footer
      credit lines became blockquotes (they are document metadata, not
      headings) and the table caption **Total: 15 workers deployed**
      gained its sentence-ending period.
  • actionlint — clean.
  • yamllint — clean.
  • JSON validity — clean.

Local result: RESULT rc=0.

Not done

No ruleset, branch protection, or deployment was touched.

Adds .github/workflows/lint.yml, a caller for
nyuchi/.github/.github/workflows/reusable-lint.yml@main, so this repo
publishes the five check contexts the mukoko-dev org ruleset already
requires:

  lint / actionlint
  lint / JSON validity
  lint / prettier
  lint / markdownlint
  lint / yamllint

Before this commit mukoko emitted none of them, so every PR was blocked
by the org ruleset.

Also lands the canonical .prettierrc, .prettierignore,
.markdownlint.jsonc, .yamllint.yaml and .editorconfig verbatim from
nyuchi/.github, and fixes the violations they surface.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two canonical files moved while this branch was open, and every repo must
carry them byte-identically:

  - lint.yml gains a `merge_group:` trigger, so the five required checks
    also report on the gh-readonly-queue/** ref where a ruleset uses a
    merge queue. Harmless where there is no queue.
  - .yamllint.yaml now ignores lockfiles, matching .prettierignore.
    pnpm writes registry deprecation notices verbatim into
    pnpm-lock.yaml, which exceeds the 140-character limit and cannot be
    rewrapped without invalidating the lockfile.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Two canonical files moved again while this rollout was in flight, and
every repo must carry them byte-identically:

  - lint.yml now triggers on push to main, master and scaffold. Those
    are every default-branch name in the estate; a repo whose default
    branch is missing from the list never lands the five contexts on its
    default-branch head, which is how lint / prettier stayed red in
    bundu-labs/.github unnoticed. A list rather than a bare `push:`, so
    the gate does not run on every feature-branch push.
  - .yamllint.yaml now ignores test/fixtures/. Rails fixtures are ERB
    templates, not YAML documents, and only become valid YAML after
    Rails renders them.

Neither changes anything for this repo today — its default branch is
main and it has no Rails fixtures. This is about the files being
identical everywhere, which is the whole point of having them.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@bryanfawcett
Bryan Fawcett (bryanfawcett) merged commit 8ca7102 into main Oct 2, 2026
8 checks passed
@bryanfawcett
Bryan Fawcett (bryanfawcett) deleted the ci/adopt-org-lint branch October 2, 2026 16:15
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