Skip to content

fix(ci): run extension typecheck/lint inside the lint gate (#1182) - #1226

Merged
warren-auto-merge[bot] merged 4 commits into
mainfrom
fix/extension-gates-1182
Sep 4, 2026
Merged

warren-auto-merge[bot] merged 4 commits into
mainfrom
fix/extension-gates-1182

Conversation

@jayminwest

Copy link
Copy Markdown
Owner

Summary

Closes #1182.

Each extensions/* package declares its own typecheck (all six) and lint (two) scripts, but the root tsconfig.json and biome.jsonc exclude extensions/ and CI only ran ext:install. extensions/campaign-controller sat at 15 tsc errors and 8 biome errors on main while every gate stayed green.

This PR follows the sequence the issue suggests: repair campaign-controller first, then add the gate so it lands green.

Campaign-controller repair

  • ActionErrorClass gains "dispatch_rejected". Two call sites already persisted that value.
  • FollowUpStoreDeps types errorClass as ActionErrorClass and declares requireProgress on the followUps seam, matching the real FollowUpStore.
  • branch-freshness.ts narrows the nullable branchUpdater once before the closure, and adapts the transport's { message } result to the MutationIoResult the journal expects.
  • FollowUpStore.#update binds SQLQueryBindings instead of unknown.
  • Test-side drift: real TickCommandDeps in tick-command.test.ts (replacing an unused GRAMMAR constant), the dispatch recorder shape and outcome narrowing in branch-freshness.test.ts, unused imports in the e2e test, plus biome import ordering and formatting in three files.

Extension tests: 487 pass, unchanged.

The gate

scripts/check-extensions.ts discovers every extensions/* package, runs the typecheck and lint scripts it declares (skipping any it does not), and fails with a cd extensions/<x> && bun run <gate> hint on the first red one. A missing node_modules gets bun install --frozen-lockfile first, so a fresh clone's bun run verify does not fail on a resolution error.

It rides inside bun run lint because the 12-gate manifest is frozen, and a CI-only step would leave local bun run verify green while an extension is broken. Also runnable standalone as bun run check:extensions.

  • ci.yml moves ext:install ahead of lint.
  • scripts/ci-parity-config.json updates the ext:install justification.
  • AGENTS.md lists the guard as the tenth lint-riding guard.
  • scripts/check-extensions.test.ts covers discovery and the runner through a spawn seam.

Verification

  • bun run check:all: 12/12 gates pass.
  • Stashing the campaign-controller repair and re-running bun run check:extensions fails with both typecheck and lint named, so the guard catches the exact state main was in.

Each extensions/* package declares its own typecheck (all six) and lint
(two) scripts, but the root tsconfig and biome.jsonc exclude extensions/
and CI only ran ext:install. campaign-controller sat at 15 tsc errors and
8 biome errors on main while every gate stayed green.

Repair campaign-controller first:
- ActionErrorClass gains "dispatch_rejected", which two call sites
  already persisted.
- FollowUpStoreDeps types errorClass as ActionErrorClass and declares
  requireProgress on the followUps seam.
- branch-freshness narrows the nullable branchUpdater once and adapts
  the transport's { message } result to MutationIoResult.
- FollowUpStore.#update binds SQLQueryBindings instead of unknown.
- Test-side drift: TickCommandDeps in tick-command.test.ts, the dispatch
  recorder shape and outcome narrowing in branch-freshness.test.ts,
  unused imports in the e2e test, plus biome import ordering.

Then add the gate. scripts/check-extensions.ts runs every extension's
declared typecheck and lint, repairs a missing node_modules with a
frozen install first, and rides inside `bun run lint` so a local
`bun run verify` goes red the same way CI does. ci.yml moves ext:install
ahead of lint. AGENTS.md and the ci-parity config document the guard.

Closes #1182. Closes warren-c26c.
@warren-auto-merge
warren-auto-merge Bot enabled auto-merge (squash) September 4, 2026 15:14
@warren-auto-merge
warren-auto-merge Bot merged commit dc67134 into main Sep 4, 2026
8 of 9 checks passed
@warren-auto-merge
warren-auto-merge Bot deleted the fix/extension-gates-1182 branch September 4, 2026 15:18
luantaraschi added a commit to luantaraschi/warren that referenced this pull request Sep 4, 2026
…(warren-fe72, jayminwest#1236)

Root `bun test` sweeps extensions/**, and those imports resolve only
against each package's own node_modules, so a checkout with nothing but a
root install failed the gate on a module error and skipped 32 tests.

The frozen install that check:extensions gained in jayminwest#1226 is extracted as
ensureInstalled and called from check-coverage before the sweep, so both
guards repair a checkout the same way.
jayminwest pushed a commit that referenced this pull request Sep 4, 2026
…(warren-fe72, #1236) (#1244)

Root `bun test` sweeps extensions/**, and those imports resolve only
against each package's own node_modules, so a checkout with nothing but a
root install failed the gate on a module error and skipped 32 tests.

The frozen install that check:extensions gained in #1226 is extracted as
ensureInstalled and called from check-coverage before the sweep, so both
guards repair a checkout the same way.
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.

ci: extension typecheck/lint never run; campaign-controller fails its own typecheck at main

1 participant