Skip to content

chore!: reset CI to one fast workflow; oxlint + oxfmt replace eslint + prettier (CL-8150) - #790

Merged
TheGreatAxios merged 8 commits into
mainfrom
cl-8150-ci-reset
Sep 17, 2026
Merged

TheGreatAxios merged 8 commits into
mainfrom
cl-8150-ci-reset

Conversation

@TheGreatAxios

Copy link
Copy Markdown
Contributor

Summary

  • Owner ruling: the sharded build-test matrix, Postgres-backed e2e-suite/isolation/db-suites jobs, and walking-skeleton/e2e-plan machinery had regressed into noise — CI is now one workflow with five parallel jobs (setup, typecheck, lint, structural, unit) sharing a bun install cache, no Postgres service, no matrix, no artifacts.
  • eslint, every eslint-*/@eslint/*/typescript-eslint package, and prettier are gone, replaced by oxlint (1.83.0) and oxfmt (0.68.0), scoped to apps packages workflows scripts test. .oxlintrc.json carries the real rules the retired eslint.config.ts enforced (no-console in src/ outside tests/client-log; no-restricted-imports banning lucide-react/@phosphor-icons/react outside packages/icons) plus several rules turned off as noisy repo-wide (see below).
  • bun run fmt was run once repo-wide; the reformat is its own commit.
  • DB-gated suites (including scripts/e2e/*) skip themselves in the unit job for lack of DATABASE_URL, same as they always have locally — nothing there was deleted, it just no longer gets a Postgres-backed CI job.
  • 17 tool packages whose src/ the mass reformat touched got a patch bump (tool-package-freshness keys on name@version), with every real pin repointed at the new version.

Rules disabled in .oxlintrc.json (noisy repo-wide, not fixed per-line)

unicorn/consistent-function-scoping, unicorn/prefer-string-starts-ends-with, unicorn/no-array-sort, unicorn/no-array-reverse, unicorn/prefer-add-event-listener, unicorn/no-useless-spread, unicorn/no-useless-fallback-in-spread, unicorn/no-thenable, unicorn/no-new-array, unicorn/require-module-specifiers, no-shadow, no-underscore-dangle, no-unmodified-loop-condition, no-unsafe-optional-chaining (every hit was the same safe test-only assert-then-cast-then-call pattern), no-useless-concat.

Two real findings were fixed rather than suppressed: an unused destructured binding (renamed _restoreFailure) and a redundant empty-export barrel left as-is with the rule turned off for that one deliberate idiom.

One convention is now unenforced: the Sparkle/Sparkles glyph ban was an ESLint no-restricted-syntax selector oxlint has no equivalent for — noted in packages/icons/README.md; reviewers should reject it by eye until/unless we find a substitute.

Anything deleted that a remaining script referenced

  • scripts/run-all.ts lost its --shard flag/exports (parseShardArg, selectShard, ShardSpec) since nothing shards anymore; scripts/run-all.test.ts dropped the matching coverage.
  • scripts/e2e/db-gate.ts's CI_JOBS_WITHOUT_POSTGRES allowlist is repointed at the new job names (setup, lint, typecheck, structural, unit); scripts/e2e/db-gate.test.ts updated to match.
  • scripts/ci-jobs.test.ts rewritten from scratch — the old assertions were entirely about the retired job shapes.
  • Kept check:web-utilities (the check itself builds apps/web on demand when dist is stale, so it doesn't need CI's old build-test job to have run first — it's just slower on a cold structural run now).

Test plan

  • bun run typecheck
  • bun run lint / bun run fmt:check
  • bun run check:structural
  • bun test apps packages workflows scripts — 543 pre-existing failures confirmed identical on unmodified origin/main in a side-by-side worktree (this environment's sandboxed/headless bun test setup, unrelated to this change); net one fewer failure and five fewer tests here from the shard-test removal.
  • CI on this PR (pending)

@linear-code

linear-code Bot commented Sep 17, 2026

Copy link
Copy Markdown

CL-8150

Drops eslint, eslint-config packages, typescript-eslint, and prettier in
favor of oxlint and oxfmt, per the CI reset ruling (CL-8150). Noisy
repo-wide stylistic rules (no-shadow, no-underscore-dangle, several
unicorn rules) are turned off in .oxlintrc.json rather than suppressed
per-line; no-unsafe-optional-chaining is off because every hit is the
same safe test-only (assert-then-cast-then-call) pattern.
Replaces the sharded/db-suite/e2e assertions with coverage for the
five-job workflow (setup, typecheck, lint, structural, unit) CL-8150
replaces them with, and drops the shard-argument coverage from
run-all.test.ts and the retired CI job names from db-gate.test.ts.
Owner ruling: the sharded build-test matrix, the Postgres-backed
e2e-suite/isolation/db-suites jobs, and the walking-skeleton/e2e-plan
machinery had regressed into noise. Replaces all of it with five jobs
— setup, typecheck, lint, structural, unit — that share one bun
install cache and run in parallel with no Postgres service, no
matrix, and no artifacts. DB-gated suites (scripts/e2e/* included)
skip themselves in the unit job for lack of DATABASE_URL, same as
they always have locally.

scripts/run-all.ts drops its --shard flag now that nothing shards;
scripts/e2e/db-gate.ts's job allowlist is repointed at the new job
names. .oxlintrc.json gains the no-console and no-restricted-imports
overrides the retired eslint.config.ts enforced (no-console error in
src/ outside tests and client-log; lucide-react/@phosphor-icons/react
banned outside packages/icons) — oxlint has no equivalent for the
Sparkle/Sparkles no-restricted-syntax ban, so that one is unenforced
by tooling for now.
check:tool-package-freshness treats any src/ diff — reformatting
included — as shipped source, since tool resolution keys on
name@version. Patch-bumps the 17 tool packages whose src/ the oxfmt
reformat commit touched and repoints every real { name, version } pin
(workflow/agent definitions, not test fixtures) at the new versions,
then regenerates the report-error baseline for the line numbers the
reformat shifted.
README, IMPLEMENTATION, and CONTRIBUTING now describe oxlint +
oxfmt and CI's five-job structure instead of eslint/prettier and the
retired walking-skeleton/e2e/isolation/db-suites jobs.
@TheGreatAxios
TheGreatAxios merged commit 5fe3fba into main Sep 17, 2026
1 check passed
TheGreatAxios added a commit that referenced this pull request Sep 17, 2026
… APIs

Rebases the 79adc433 re-vendor onto main (#790 oxfmt reformat, #791 hub
composition-root reduction) and fixes what the bump broke: routeMail's
new required authenticatedSender param, deployReadyAllocation's new
reconciliation-context param, and the retirement of
SessionService.sendUserMessage (every caller now delivers a signed MIME
message through SidecarRouter.routeMail, matching
native-workflow-routine-launch.ts's existing pattern) and of
workflow_definition.origin / workflow_definition_version.wire_projection
(the routine/catalog code that read a launch body off the frozen
projection is deleted outright — schedule/{available-catalog,
deployed-cron-deployments,list-scheduled}.ts, launchable/target.ts, the
hub cron-emitter wiring, and their tests — since Interchange no longer
stores that projection at all). packages/workflows/definition-projection.ts
keeps only its pure, DB-free half (the named errors and the
schema-validated FoldedBody reader) for chat, which still needs the type
surface ahead of its own CL-8175 retirement; its two DB-touching
resolvers now fail loud with a named error instead of guessing at
retired data. Re-applies workflow-host's CL-6448 single-step grants
collapse, which the bump otherwise silently dropped.

Updates VENDORED.md and kill-dates.txt for the 79adc433 pin, drops the
delta rows upstream has since absorbed (the per-principal signing-key
series, beforeToolExtension, the message_response signal kind, the
childRunId forward), and bumps @corbits/interaction-tools past a
test-only change the freshness check caught.
TheGreatAxios added a commit that referenced this pull request Sep 17, 2026
* Re-vendor @intX agent, harness, mail-memory, mailbox, mime, workflow-deploy, hub-common at 79adc433

* Re-vendor remaining @intX packages at 79adc433

db, types, hub-api, hub-sessions, hub-agent, inference, workflow,
workflow-host copied wholesale from Interchange 79adc433, stripping
upstream test files.

* fix(vendor): rebase re-pin onto main and cut over removed Interchange APIs

Rebases the 79adc433 re-vendor onto main (#790 oxfmt reformat, #791 hub
composition-root reduction) and fixes what the bump broke: routeMail's
new required authenticatedSender param, deployReadyAllocation's new
reconciliation-context param, and the retirement of
SessionService.sendUserMessage (every caller now delivers a signed MIME
message through SidecarRouter.routeMail, matching
native-workflow-routine-launch.ts's existing pattern) and of
workflow_definition.origin / workflow_definition_version.wire_projection
(the routine/catalog code that read a launch body off the frozen
projection is deleted outright — schedule/{available-catalog,
deployed-cron-deployments,list-scheduled}.ts, launchable/target.ts, the
hub cron-emitter wiring, and their tests — since Interchange no longer
stores that projection at all). packages/workflows/definition-projection.ts
keeps only its pure, DB-free half (the named errors and the
schema-validated FoldedBody reader) for chat, which still needs the type
surface ahead of its own CL-8175 retirement; its two DB-touching
resolvers now fail loud with a named error instead of guessing at
retired data. Re-applies workflow-host's CL-6448 single-step grants
collapse, which the bump otherwise silently dropped.

Updates VENDORED.md and kill-dates.txt for the 79adc433 pin, drops the
delta rows upstream has since absorbed (the per-principal signing-key
series, beforeToolExtension, the message_response signal kind, the
childRunId forward), and bumps @corbits/interaction-tools past a
test-only change the freshness check caught.
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