The name list becomes a dated readiness ledger, and the officially documented TS6 API shim becomes first-class.
Flagging a CONFLICT on package name alone was correct on GA day (2026-07-08) and gets more wrong every week — typescript-eslint v8.65.0 (2026-07-20) already ships a "TS 7 detected" warning — while a repo that adopted the announcement's documented @typescript/typescript6 escape hatch still got a wall of CONFLICTs (or, in the alias layout, was misread as plain TypeScript 6).
Added
- Readiness ledger: db entries gain optional
ts7Ready(semver range),ts7Status("none" | "partial" | "supported"),source(URL) andcheckedAt(ISO date); the db gains a top-levelgeneratedAt. For each covered dependency the guard resolves the effective version — the installednode_modules/<pkg>/package.jsonversion when present (per package dir, falling back to the repo root in monorepos), else the minimum of the declared range. Satisfiests7Ready→ new NOTICE severity (never fails);ts7Status: "partial"→ warning with the source URL; nots7Ready→ the classic conflict, unchanged. Prereleases compare withincludePrerelease; malformed installed manifests fall back to the declared range. - TS6 API shim detection (
@typescript/typescript6), both documented layouts: a plain dependency, and anynpm:@typescript/typescript6@…alias — including thetypescriptkey itself. When present: a "TS6 API shim present" advisory, and every Compiler-API dependency conflict is downgraded to a warning (removed-tsconfig-option conflicts are not downgraded — the shim restores the API, not the config options). - Alias-target resolution:
"@typescript/native": "npm:typescript@^7.0.2"(any key name) now reports TypeScript 7.0 as installed, and"typescript": "npm:@typescript/typescript6@^6.0.2"reports the TS6 API half explicitly. v2 stripped alias targets and misread the announcement's exact side-by-side layout as plain TypeScript 6. db --checksubcommand (opt-in network; never runs during a scan or in the Action): fetches each db package's npm registry document, walks the versions map, and finds the earliest stable release whose bounded typescript peer range widens to admit 7.x; prints a proposed db.json patch + diff and writes nothing. Unbounded ranges (*,>=2.7, …) are never proposed as supported — measured 2026-07-29, 7 of the 25 covered packages carry unbounded ranges while being known-broken. 404/network/missing-peer cases reportunknowninstead of crashing.- Stale-db notice: when the bundled ledger's
generatedAtis older than 60 days, scans print a non-failing refresh suggestion. - Action outputs
notice-countandshim-detected;statusgains anoticevalue; NOTICE annotations for TS7-ready deps; SARIF carries notices aslevel: noteunderts7-compat/ready/<pkg>. - Seeded readiness data for all 25 packages — truthfully all
ts7Status: "none"as of 2026-07-29 (verified against the registry: not one ships a bounded peer range admitting 7.x), each with a realsourceURL andcheckedAt. No invented version numbers. - 37 new tests (151 total).
Changed
- BREAKING (exit codes): repos whose flagged dependencies satisfy
ts7Ready, or which have the TS6 shim installed, now exit 0 where v2 exited 1. Removed tsconfig options on TS7 still exit 1. - BREAKING (db shape):
src/db.jsonis now{ generatedAt, packages: { … } }. Thets7-compat-guardmodule still exports the flat map asdb/builtinDb;--db/.ts7guardrc.jsonextra entries stay flat and may carry the new fields. - JSON report: per-entry
severity(a shim downgrade or partial status can differ from the run-levelts7flag), plusnotices,noticeCount,shim,dbStale, andeffectiveVersionfields.
Upgrade
- uses: Booyaka101/ts7-compat-guard@v3npx ts7-compat-guard # scan (offline)
npx ts7-compat-guard db --check # propose readiness-db updates (network, writes nothing)