Skip to content

ci: add lint and typecheck quality gate#230

Open
jeremylongshore wants to merge 1 commit intopascalorg:mainfrom
jeremylongshore:ci/lint-typecheck
Open

ci: add lint and typecheck quality gate#230
jeremylongshore wants to merge 1 commit intopascalorg:mainfrom
jeremylongshore:ci/lint-typecheck

Conversation

@jeremylongshore
Copy link
Copy Markdown

Summary

Closes #147

Adds a CI workflow that runs the repo's existing quality scripts on every push/PR:

Step Command What it checks
Lint bun run lint Biome lint rules from biome.jsonc
Type check bun run check-types tsc --noEmit via turbo across workspaces

Why lint not check

bun run check (lint + format) currently fails with 191 pre-existing format violations across 189 files. Using bun run lint enforces lint rules without requiring a massive formatting PR first. Format enforcement can be added separately.

Setup

Matches release.yml exactly — bun package manager, Node 22, frozen lockfile.

Context

I opened #147 with this exact approach on March 22. This PR implements it.

Closes pascalorg#147

Adds a lightweight CI quality gate that runs the existing `bun run lint`
(biome) and `bun run check-types` (tsc via turbo) on every push to main
and every pull request. Uses `bun run lint` instead of `bun run check`
to avoid triggering 191 pre-existing format violations.

Matches release.yml setup exactly: oven-sh/setup-bun@v2, Node 22,
frozen lockfile.
jeremylongshore added a commit to jeremylongshore/contributing-clanker that referenced this pull request May 4, 2026
…tions (#22)

Closes #20, contributing-clanker-r1v.

Sibling to audit-overrides.sh and catalog-coverage.sh: a read-only
reporter that walks ~/.contribute-system/candidates/, reads each
candidate's status, and surfaces missing required body sections per
the matrix in skills/contribute/references/candidate-file-format.md.

Required-sections matrix (matches the spec + transition.sh):
  shortlist  → ## Scope, ## Files to touch
  claimed    → ## Scope, ## Files to touch, ## Claim comment draft
  working    → same as claimed
  submitted  → ## PR title, ## PR body, ## Test results
  merged     → same as submitted
  open       → no body requirements
  dropped    → no body requirements

Flags:
  --status=<status>     filter to one status
  --missing-only        only show candidates with missing sections
  --json                machine-readable output (one object per row)
  --candidates-dir=DIR  override candidate dir (test seam)
  --help                inline help

Exit codes:
  0   no missing sections in the filtered set (clean)
  1   at least one candidate has missing required sections (CI signal)
  64  bad arguments

Output (default table form):

  candidate                          status     missing
  ---------                          ------     -------
  pascalorg__editor__issue230.md     submitted  ## PR title, ## PR body, ## Test results
  secureblue__secureblue__issue...   shortlist  ## Scope, ## Files to touch
  ...
  4 candidate(s) shown · 4 with missing sections

Verified:
  - shellcheck clean
  - default table output renders correctly
  - --status filter works (filters to chosen state)
  - --missing-only filter works (hides clean rows)
  - --json output is parseable by jq
  - exit code 1 when missing rows exist; 0 when clean
  - --help reads the script header inline

Empirical first run on the live ~/.contribute-system/candidates/
surfaces 4 candidates with missing sections — the 3 backfilled
upstream PRs (xireactor#3, xireactor#5, pascalorg/editor#230) plus
the secureblue/secureblue#2138 shortlist candidate that was created
before scope/files-to-touch were added to its body.

jeremy made me do it
-claude

Co-authored-by: jeremylongshore <jeremylongshore@users.noreply.github.com>
@jeremylongshore
Copy link
Copy Markdown
Author

Checking in on this — opened 19 days ago and hasn't seen a maintainer review yet. No worries either way; just want to flag it's still here in case it slipped past the review queue.

If there's anything I can do to make it easier to review (rebase on main, split into smaller commits, address any concerns up front), happy to. Otherwise, fine to keep it open or close it if it's no longer wanted.

Thanks!

jeremylongshore.com made me do it
-claude
intentsolutions.io

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.

Add CI workflow for lint + typecheck on push/PR

1 participant