Skip to content

Build Samples Solution failing on PR #569 (chore/typescript-7): typescript-eslint has no TS 7.0 support yet #592

Description

@cratis-direct

Diagnosis

The run in question (https://github.com/Cratis/Samples/actions/runs/34032783153) is not on main — it's on branch chore/typescript-7 / PR #569 ("Upgrade TypeScript to 7 (build failing — needs review)"). main's own Build Samples Solution runs are green (e.g. #34028300447, #34024508448), because main still pins typescript at 6.0.3, and .github/workflows/update-packages.yml deliberately excludes typescript from automated dependency updates:

npm-package-exclusions: typescript,@cratis/components

So there is nothing to fix on main — the workflow itself is healthy there.

Why PR #569 fails

Confirmed against the captured log: typescript resolves to 7.0.2 on that branch, and yarn lint:ci fails immediately in every frontend workspace with:

Error: typescript-eslint does not support TS 7.0.
    at Object.<anonymous> (node_modules/@typescript-eslint/eslint-plugin/dist/index.js:50:11)

This is a real, currently-unresolved upstream limitation, not a Samples misconfiguration:

  • @typescript-eslint/eslint-plugin@8.69.0 (latest, and also latest canary 8.69.1-alpha.0) still declares "typescript": ">=4.8.4 <6.1.0" as a peer dependency — TS 7 is out of range.
  • Upstream tracking issue typescript-eslint/typescript-eslint#10940 is open with no released fix (last updated 2026-07-09).

The other blocker PR #569 already documented is now resolved upstream

PR #569's own description and a maintainer comment flag a second blocker: @cratis/arc.vite's EmitMetadataPlugin used the classic TS Program/ts.sys API, which TS 7's native package no longer exposes, breaking yarn build (Vite). That was fixed and merged in Cratis/Arc#2340 (2026-07-15), which also ports rollup-plugin-typescript2rollup-plugin-swc3 and works around the @typescript-eslint peer-dependency conflict via an aliased typescript-for-eslint devDependency + a postinstall script that relinks it into @typescript-eslint's own dependency tree (since neither resolutions nor packageExtensions can override an already-declared peer dependency). @cratis/arc.vite@22.10.4 (published 2026-09-05, already what main consumes) includes this fix.

So the Vite-build blocker is gone for a fresh attempt. The typescript-eslint peer-dependency conflict remains, but Arc#2340 shows a working pattern for it.

Why this isn't a small patch to PR #569 as-is

chore/typescript-7 was created 2026-07-10 (before Arc#2340 merged) and has drifted significantly from main — its latest "merge main" commit is missing entire workspace folders that exist on main now (Arc/React, ModelFirst aren't present in the branch tree at all). Patching the branch in place isn't safe; a real fix means re-doing the TypeScript 7 bump fresh off current main, reapplying the typescript-for-eslint aliasing pattern from Arc, and re-verifying lintcompiletestbuild across all three frontend workspaces (Arc/React, Library/Lending, Library/Members). That's a deliberate feature-sized change to an experimental branch a maintainer already marked "Draft ... needs review" — not something to force onto their open PR as an ad-hoc CI fix.

Recommendation

  • No action needed on main — it is intentionally pinned and its CI is green.
  • PR Upgrade TypeScript to 7 (build failing — needs review) #569 should either be rebased fresh off main and updated with the same typescript-for-eslint aliasing workaround Arc used (now proven viable since @cratis/arc.vite publishes the TS7-compatible build), or left closed/paused until typescript-eslint ships official TS 7 support (typescript-eslint/typescript-eslint#10940).
  • Keep the typescript exclusion in update-packages.yml until one of the above happens.

Posted by Stagehand (AI) - an autonomous agent, not a person. Review accordingly.

Ref #590

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    cidependenciesPull requests that update a dependency file

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions