@stsepelin/checktrail 0.1.0-alpha.2 → 0.1.0-alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,22 +4,28 @@ Local code validation with a CLI, MCP tools, and evidence of what actually ran.
4
4
 
5
5
  Formerly Repo Verifier. See the [rename guide](docs/RENAMING.md) for existing source checkouts.
6
6
 
7
- **Published preview: 0.1.0-alpha.1; alpha.2 is in preparation.** Public source is available at
7
+ **Published preview: 0.1.0-alpha.2; source candidate: 0.1.0-alpha.3.** Public source is available at
8
8
  [stsepelin/checktrail](https://github.com/stsepelin/checktrail).
9
9
  See [implementation status](docs/STATUS.md), the [plan](docs/PLAN.md) and the
10
10
  [language matrix](docs/LANGUAGES.md) before relying on an adapter.
11
11
  [Installation](docs/INSTALLATION.md) covers the CLI, Claude Code and Codex.
12
12
  [Agent skills](docs/SKILLS.md) provides setup, validation and review workflows
13
13
  installable with `npx skills add stsepelin/checktrail`.
14
- [Project setup](docs/ONBOARDING.md) covers the alpha.2 candidate's `init`, `doctor`
14
+ [Project setup](docs/ONBOARDING.md) covers `init`, `doctor`
15
15
  and MCP configuration generator.
16
16
  [Release preparation](docs/RELEASE.md) records publication and verification gates. The
17
17
  [milestone audit](docs/ACCEPTANCE.md) separates implemented profiles from open
18
18
  acceptance work; [client checks](docs/CLIENTS.md) record actual application coverage.
19
-
20
- The [hosted matrix](https://github.com/stsepelin/checktrail/actions/runs/35585998184)
21
- passed at `bfc8cc4` on Linux and macOS. That result predates the alpha.2 candidate;
22
- new release changes require their own CI run and package verification.
19
+ [Public adoption](docs/PUBLIC-ADOPTION.md) records the published package on five
20
+ pinned libraries, including setup friction and compatibility gaps.
21
+ The alpha.3 candidate fixes the recorded [TypeScript 4.9.5 incompatibility](docs/TYPESCRIPT.md);
22
+ it has not been published.
23
+
24
+ The [hosted matrix](https://github.com/stsepelin/checktrail/actions/runs/35590670960)
25
+ passed at release commit `4ce8398` on Linux and macOS. The exact npm tarball and
26
+ fresh CLI/MCP installations were verified. The
27
+ [MCP Registry entry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.stsepelin%2Fchecktrail/versions/0.1.0-alpha.2)
28
+ is active; execution remains disabled by default.
23
29
 
24
30
  Checktrail discovers projects, plans registered checks, invokes native tools
25
31
  when explicitly trusted, and reports results without turning skipped or empty
@@ -1,6 +1,6 @@
1
1
  import type { ExternalIdentity } from "./external-adapter.js";
2
2
  import type { RuntimeInventory } from "./runtime-inventory.js";
3
- export declare const VERSION = "0.1.0-alpha.2";
3
+ export declare const VERSION = "0.1.0-alpha.3";
4
4
  export declare const PARSERS: readonly ["vue-router-json", "nuxt-json", "exit", "empty", "node-events", "unittest", "go-scope-test", "go-scope-analysis", "golangci-json", "staticcheck-json", "go-json", "typescript-build-json", "tsc-files", "eslint-json", "vitest-json", "playwright-json", "jest-json", "pytest-json", "fastapi-json", "django-json", "laravel-json", "rust-json", "clang-json", "java-json", "dotnet-json", "actionlint-json", "external-json", "ruby-syntax", "silent-syntax", "ruff-json", "mypy-json", "phpstan-json", "phpunit-junit", "pint-json"];
5
5
  export type Status = "passed" | "failed" | "unavailable" | "skipped" | "error" | "inconclusive";
6
6
  export type Outcome = "passed" | "failed" | "incomplete";
package/dist/src/types.js CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = "0.1.0-alpha.2";
1
+ export const VERSION = "0.1.0-alpha.3";
2
2
  export const PARSERS = [
3
3
  "vue-router-json",
4
4
  "nuxt-json",
@@ -0,0 +1,4 @@
1
+ import type { parseCommandLine } from "typescript";
2
+ export declare function typecheckArguments(compiler: {
3
+ parseCommandLine: typeof parseCommandLine;
4
+ }, args: string[]): string[];
@@ -0,0 +1,10 @@
1
+ export function typecheckArguments(compiler, args) {
2
+ const probe = compiler.parseCommandLine(["--noCheck", "false"]);
3
+ if (probe.errors.length === 0 && probe.options.noCheck === false)
4
+ return [...args, "--noCheck", "false"];
5
+ if (probe.errors.length === 1 &&
6
+ probe.errors[0].code === 5023 &&
7
+ probe.options.noCheck === undefined)
8
+ return args;
9
+ throw new Error("Cannot establish the compiler's noCheck option support");
10
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { createRequire } from "node:module";
2
+ import path from "node:path";
3
+ import { withinRoot } from "./inventory.js";
4
+ import { typecheckArguments } from "./typescript-arguments.js";
5
+ async function main() {
6
+ const [entry, root, ...args] = process.argv.slice(2);
7
+ if (!entry || !root)
8
+ throw new Error("Invalid TypeScript compiler arguments");
9
+ const tool = await withinRoot(root, path.relative(root, entry));
10
+ const api = await withinRoot(root, path.relative(root, path.resolve(path.dirname(tool), "../lib/typescript.js")));
11
+ const load = createRequire(tool);
12
+ const ts = load(api);
13
+ process.argv = [process.execPath, tool, ...typecheckArguments(ts, args)];
14
+ load(tool);
15
+ }
16
+ main().catch((error) => {
17
+ process.stderr.write(`${error instanceof Error ? error.message : "TypeScript checking failed"}\n`);
18
+ process.exitCode = 2;
19
+ });
@@ -16,18 +16,12 @@ export async function typescriptCheck(source, project, vue = false) {
16
16
  {
17
17
  executable: process.execPath,
18
18
  args: [
19
- ...(vue
20
- ? [
21
- fileURLToPath(new URL("./vue-tsc-runner.js", import.meta.url)),
22
- compiler,
23
- source.root,
24
- ]
25
- : [compiler]),
19
+ fileURLToPath(new URL(vue ? "./vue-tsc-runner.js" : "./typescript-runner.js", import.meta.url)),
20
+ compiler,
21
+ source.root,
26
22
  "--project",
27
23
  "./tsconfig.json",
28
24
  "--noEmit",
29
- "--noCheck",
30
- "false",
31
25
  "--pretty",
32
26
  "false",
33
27
  "--incremental",
@@ -1,5 +1,6 @@
1
1
  import { createRequire } from "node:module";
2
2
  import path from "node:path";
3
+ import { typecheckArguments } from "./typescript-arguments.js";
3
4
  import { withinRoot } from "./inventory.js";
4
5
  async function main() {
5
6
  const [entry, root, ...args] = process.argv.slice(2);
@@ -15,7 +16,7 @@ async function main() {
15
16
  throw new Error("Vue template checking is disabled by skipTemplateCodegen");
16
17
  const compiler = load(tool);
17
18
  const tsc = await resolve("typescript/lib/tsc.js");
18
- process.argv = [process.execPath, tool, ...args];
19
+ process.argv = [process.execPath, tool, ...typecheckArguments(ts, args)];
19
20
  compiler.run(tsc);
20
21
  }
21
22
  main().catch((error) => {
@@ -5,17 +5,25 @@ verification. It does not replace the plan or promote an unverified capability.
5
5
  Local implementation, local native evidence, hosted CI and publication are
6
6
  separate states. Follow the linked evidence for tested versions and limits.
7
7
 
8
- | Milestone | Implemented scope and evidence | Open acceptance work |
9
- | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
10
- | M0: public contracts | Original public fixtures, MIT license, security/contribution guidance, schemas, explicit package allowlist, dependency notices and CI definitions. `STATUS.md`, `SECURITY.md`, `RELEASE.md`. | Public source and npm alpha.1 are published. Hosted CI passed at `bfc8cc4`; alpha.2 requires its own release commit, CI and publication verification. |
11
- | M1: executable foundation | Shared CLI/library/MCP engine, bounded inventory/runner, startup trust, native Node/Python/Go/PHP profiles, protocol and lifecycle regressions. `ARCHITECTURE.md`, `STATUS.md`, `MCP-COMPATIBILITY.md`. Fresh installed application-client profiles now have evidence in `CLIENTS.md`. | Application-client coverage beyond the named profiles. PHP remains unavailable when the consumer has no prepared runtime. |
12
- | M2: practical language validation | Explicit JS/TS, Python, Go and PHP native tool profiles, structured diagnostics/test evidence, versions, environments, workspace selection, scope accounting, SARIF/JUnit and finding ratchets. `LANGUAGES.md`, adapter documents, `WORKSPACES.md`, `FINDING-POLICY.md`, `NATIVE-CI.md`. | Hosted toolchain profiles passed at `52ba415`. Wider tool versions/framework configurations must be promoted separately; detection is not execution support. |
13
- | M3: framework/contracts | Native Laravel, Vue Router/Nuxt, Django/FastAPI assembly projections; imported runtime comparison, explicit architecture boundaries, producer/consumer schemas and a built package consumer. `RUNTIME-INVENTORY.md`, framework documents, `CONTRACTS.md`, `ARCHITECTURE-POLICY.md`, `examples/package-contract/README.md`. | Broader native semantics/import collection and live service integration are not implemented. Synthetic evidence does not establish equivalent results in a private application; private integration feedback must remain private. |
14
- | M4: ecosystem/distribution | Bounded Rust, Java, C#, Ruby, Swift, Clang and actionlint profiles; trusted external adapters, pinned data-only pack distribution, fresh offline package checks, production notice audit, measured performance and unpublished registry metadata. `LANGUAGES.md`, `EXTERNAL-ADAPTERS.md`, `PACK-DISTRIBUTION.md`, `PERFORMANCE.md`, `RELEASE.md`. | Alpha.2 release verification and MCP Registry registration. Windows execution and the unimplemented subsequent integrations in `LANGUAGES.md` remain unsupported. Runtime/container/development dependency provenance is broader than the production npm notice audit. |
15
- | M5: measured assistance | Advisory guidance, bounded Node mutation experiments, explicit-graph impact measurements, optional local/model review exchange, durable library task storage/worker, development evaluation and externally authored ESLint and Ruff integration cohorts. `GUIDANCE.md`, `MUTATIONS.md`, `IMPACT-MEASUREMENT.md`, `REVIEW-EXCHANGE.md`, `VALIDATION-TASKS.md`, `EVALUATION.md`, `EXTERNAL-EVALUATION.md`, `EXTERNAL-RUFF-EVALUATION.md`. | Standard MCP Tasks wire integration; wider held-out rule-family/review evidence, prior-workflow comparison and representative cost/latency measurement. No general equal-or-better review-quality claim is supported. |
8
+ | Milestone | Implemented scope and evidence | Open acceptance work |
9
+ | --------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
10
+ | M0: public contracts | Original public fixtures, MIT license, security/contribution guidance, schemas, explicit package allowlist, dependency notices and CI definitions. `STATUS.md`, `SECURITY.md`, `RELEASE.md`. | Public source, npm alpha.2 and its MCP Registry entry are published. Hosted CI passed at `4ce8398`; fresh registry installation was verified. |
11
+ | M1: executable foundation | Shared CLI/library/MCP engine, bounded inventory/runner, startup trust, native Node/Python/Go/PHP profiles, protocol and lifecycle regressions. `ARCHITECTURE.md`, `STATUS.md`, `MCP-COMPATIBILITY.md`. Fresh installed application-client profiles now have evidence in `CLIENTS.md`. | Application-client coverage beyond the named profiles. PHP remains unavailable when the consumer has no prepared runtime. |
12
+ | M2: practical language validation | Explicit JS/TS, Python, Go and PHP native tool profiles, structured diagnostics/test evidence, versions, environments, workspace selection, scope accounting, SARIF/JUnit and finding ratchets. `LANGUAGES.md`, adapter documents, `WORKSPACES.md`, `FINDING-POLICY.md`, `NATIVE-CI.md`. | Hosted toolchain profiles passed at `52ba415`. Wider tool versions/framework configurations must be promoted separately; detection is not execution support. |
13
+ | M3: framework/contracts | Native Laravel, Vue Router/Nuxt, Django/FastAPI assembly projections; imported runtime comparison, explicit architecture boundaries, producer/consumer schemas and a built package consumer. `RUNTIME-INVENTORY.md`, framework documents, `CONTRACTS.md`, `ARCHITECTURE-POLICY.md`, `examples/package-contract/README.md`. | Broader native semantics/import collection and live service integration are not implemented. Synthetic evidence does not establish equivalent results in a private application; private integration feedback must remain private. |
14
+ | M4: ecosystem/distribution | Bounded Rust, Java, C#, Ruby, Swift, Clang and actionlint profiles; trusted external adapters, pinned data-only pack distribution, fresh offline package checks, production notice audit, measured performance and published MCP Registry metadata. `LANGUAGES.md`, `EXTERNAL-ADAPTERS.md`, `PACK-DISTRIBUTION.md`, `PERFORMANCE.md`, `RELEASE.md`. | npm tag cleanup remains unresolved. Windows execution and the unimplemented subsequent integrations in `LANGUAGES.md` remain unsupported. Runtime/container/development dependency provenance is broader than the production npm notice audit. |
15
+ | M5: measured assistance | Advisory guidance, bounded Node mutation experiments, explicit-graph impact measurements, optional local/model review exchange, durable library task storage/worker, development evaluation and externally authored ESLint and Ruff integration cohorts. `GUIDANCE.md`, `MUTATIONS.md`, `IMPACT-MEASUREMENT.md`, `REVIEW-EXCHANGE.md`, `VALIDATION-TASKS.md`, `EVALUATION.md`, `EXTERNAL-EVALUATION.md`, `EXTERNAL-RUFF-EVALUATION.md`. | Standard MCP Tasks wire integration; wider held-out rule-family/review evidence, prior-workflow comparison and representative cost/latency measurement. No general equal-or-better review-quality claim is supported. |
16
16
 
17
17
  ## Remaining work that can proceed locally
18
18
 
19
+ [Public adoption measurements](PUBLIC-ADOPTION.md) now cover five pinned
20
+ JavaScript, TypeScript, Python, Go and PHP libraries. They expose an older
21
+ TypeScript compiler-option incompatibility and workflow/documentation/platform
22
+ coverage friction. An [unreleased compiler fix](TYPESCRIPT.md) now passes the
23
+ known TypeScript 4.9.5 case; workflow/documentation and platform coverage remain
24
+ follow-up work. The observations do not establish full upstream CI coverage or
25
+ general review effectiveness.
26
+
19
27
  1. Extend independently authored evaluation cohorts to additional implemented
20
28
  language/rule families, preserving the verifier freeze and recording exact
21
29
  selection, exclusions, native baselines and interpretation limits. New fixtures
@@ -43,11 +51,12 @@ run. The local worker/store are available independently; standard Tasks must sta
43
51
  unadvertised until routing and the integrated wire/lifecycle suite pass. See
44
52
  `MCP-COMPATIBILITY.md` for the reproduction and upstream issue.
45
53
 
46
- The public repository and npm preview `0.1.0-alpha.1` are published. The
47
- [hosted run at bfc8cc4](https://github.com/stsepelin/checktrail/actions/runs/35585998184)
48
- passed all jobs. Alpha.2 adds [setup commands](ONBOARDING.md); it requires its own
49
- release CI and publication. GitHub releases and MCP Registry registration remain
50
- pending. The repository's explicit-action requirements still apply.
54
+ The public repository, npm preview `0.1.0-alpha.2` and its MCP Registry entry are
55
+ published. The [hosted run at 4ce8398](https://github.com/stsepelin/checktrail/actions/runs/35590670960)
56
+ passed all jobs, and fresh public installation was verified. Alpha.2 adds
57
+ [setup commands](ONBOARDING.md). The [GitHub prerelease](https://github.com/stsepelin/checktrail/releases/tag/v0.1.0-alpha.2)
58
+ is also published with the verified tarball and checksum. npm tag cleanup remains
59
+ unresolved. The repository's explicit-action requirements still apply.
51
60
  `RELEASE.md` defines the concrete
52
61
  candidate checks and the authorization sequence; a local green run does not
53
62
  replace external acceptance.
@@ -1,11 +1,10 @@
1
1
  # Install the preview
2
2
 
3
- The published preview is `0.1.0-alpha.1` on
3
+ The published preview is `0.1.0-alpha.2` on
4
4
  [npm](https://www.npmjs.com/package/@stsepelin/checktrail).
5
- Use the exact version below. The registry currently assigns both `next` and
6
- `latest` to that preview; `latest` is not a stable-release guarantee.
7
- The alpha.2 candidate adds [project setup and diagnosis](ONBOARDING.md) and is
8
- available from source or a reviewed candidate tarball until published.
5
+ Use the exact version below. `next` points to alpha.2; `latest` still points to
6
+ alpha.1 because npm rejected its removal. Neither tag implies a stable release.
7
+ Alpha.2 includes [project setup and diagnosis](ONBOARDING.md).
9
8
 
10
9
  Use Node.js 22 or newer on macOS or Linux. Windows execution is not supported.
11
10
  Install each project's compilers, linters and test runners separately; Checktrail
@@ -19,7 +18,7 @@ Skills install separately from the engine and MCP configuration.
19
18
  Install the exact version once:
20
19
 
21
20
  ```sh
22
- npm install --global --ignore-scripts @stsepelin/checktrail@0.1.0-alpha.1
21
+ npm install --global --ignore-scripts @stsepelin/checktrail@0.1.0-alpha.2
23
22
  checktrail --version
24
23
  ```
25
24
 
package/docs/LANGUAGES.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Language and ecosystem roadmap
2
2
 
3
- The alpha.2 candidate's [setup guide](ONBOARDING.md) describes conservative
3
+ The [setup guide](ONBOARDING.md) describes conservative
4
4
  per-language configuration proposals and static tool diagnosis. Setup does not
5
5
  extend the execution capabilities or native evidence listed below.
6
6
 
@@ -115,3 +115,13 @@ skip, so its aggregate pass count is not evidence for every native profile.
115
115
  The prepared CI language profiles and native container helpers require exact
116
116
  regression names through `NATIVE-CI.md`. Their required results are separate from
117
117
  the optional skips allowed by a developer's general test suite.
118
+
119
+ [Public adoption measurements](PUBLIC-ADOPTION.md) record alpha.2 on pinned
120
+ JavaScript, TypeScript, Python, Go and PHP libraries. TypeScript 4.9.5 rejects
121
+ the adapter's `--noCheck` option; this older version is not verified support.
122
+ Go platform exclusions remain inconclusive even when native tests exit zero.
123
+
124
+ The unreleased [TypeScript compatibility fix](TYPESCRIPT.md) exercises plain
125
+ TypeScript 4.9.5 and 6.0.3 using native capability-aware arguments. Published
126
+ alpha.2 retains the recorded older-compiler limitation; Vue and solution-build
127
+ profiles retain their separately verified versions.
package/docs/NATIVE-CI.md CHANGED
@@ -22,6 +22,10 @@ checks. The separate PHP syntax helper checks its exact successful TAP test name
22
22
  the external-adapter helper already checks exact required native names for each
23
23
  of its different runtime containers.
24
24
 
25
+ The main matrix also prepares the separately locked TypeScript 4.9.5 compiler
26
+ from `scripts/typescript-legacy-tools/`. Its named native regression is mandatory
27
+ in the `javascript` profile; root build tooling stays on its existing compiler.
28
+
25
29
  A tool version preflight remains useful but is not the acceptance condition.
26
30
  Installing the expected binary cannot compensate for a skipped, renamed, removed
27
31
  or failing required test. When intentionally renaming or replacing a regression,
@@ -1,7 +1,12 @@
1
1
  # Project setup
2
2
 
3
- These commands are new in the unpublished `0.1.0-alpha.2` candidate. Use the
4
- source checkout or a reviewed candidate tarball, with Node.js 22+ on macOS/Linux.
3
+ These commands are available in `0.1.0-alpha.2`. Follow the
4
+ [installation guide](INSTALLATION.md), with Node.js 22+ on macOS/Linux.
5
+
6
+ [Public adoption observations](PUBLIC-ADOPTION.md) show setup on real libraries,
7
+ including nested documentation projects, workflow prerequisites and older compiler
8
+ limitations. A narrowed policy can pass its selected checks while leaving other
9
+ repository checks unverified.
5
10
 
6
11
  ## Preview and create a policy
7
12
 
@@ -0,0 +1,116 @@
1
+ # Public repository adoption: alpha.2
2
+
3
+ This exercise measures installation, policy setup and selected native checks on
4
+ public libraries. It uses the published alpha.2 artifact, not an edited engine.
5
+ The [selection plan](../scripts/public-adoption-plan.json) pins every upstream
6
+ commit. Upstream sources and their licenses remain in ignored local checkouts;
7
+ no upstream source is included in Checktrail's package or this report.
8
+
9
+ The projects were chosen for a small initial-language adoption sample, before
10
+ validation results were known. They were not replaced after failures. This is
11
+ not a randomized sample, an independent rule-effectiveness holdout, a replacement
12
+ for upstream CI, or a measurement of general false-positive rates.
13
+
14
+ ## Observations
15
+
16
+ The [measurement record](measurements/public-adoption-alpha2.json) separates the
17
+ policy created by `init` from an explicitly narrowed, root-language-only policy.
18
+ `doctor` continues to identify omitted ecosystems in the narrower policy.
19
+ A passing selected check does not mean the entire repository was validated.
20
+
21
+ | Public project | Selected language checks | Native baseline and alpha.2 observation |
22
+ | ---------------------------------------------------------------------------------------------------------------- | ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
23
+ | [Nano ID](https://github.com/ai/nanoid/tree/57009b5eb8d757ae39bf5f4361dd30c9f23391b7) | Node tests | Both ran 79 tests successfully. The full policy remains incomplete without workflow configuration/tooling. Benchmark, browser tooling, size, prebuild, lint and declaration validation were not included. |
24
+ | [mitt](https://github.com/developit/mitt/tree/6b41670516ed8e8b738612f60491995470aa63b3) | TypeScript 4.9.5 | Initial native checking needs the generated root declaration. After generating it, native typechecking passes; alpha.2 still fails with TS5023 because this compiler does not support `--noCheck`. Mocha and other package scripts were not run. |
25
+ | [more-itertools](https://github.com/more-itertools/more-itertools/tree/1da45ae4b61a832ed080f08a8833784aad0a9534) | unittest, Python 3.12 | Both ran 928 tests successfully. Full setup also discovers workflows and a separate documentation project; its selected unittest check has no candidate tests. Documentation builds, type stubs and workflow validation remain outside the narrowed result. |
26
+ | [google/uuid](https://github.com/google/uuid/tree/2d3c2a9cc518326daf99a383f07c4d3c44317e4d) | gofmt, vet and tests, Go 1.27.1 | Native test events report 212 passes and one skip. Both formatting checks report the same seven files. Checktrail marks vet/tests inconclusive because the native platform selection omits `node_js.go`; the formatting failure makes the aggregate failed. |
27
+ | [PSR Log](https://github.com/php-fig/log/tree/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3) | PHP 8.4 syntax | All eight files pass native and Checktrail syntax checks. Host diagnosis reports PHP missing; prepared Linux execution succeeds. This provides no type, behavior or test evidence. |
28
+
29
+ Counts above describe this pinned snapshot and are reconciled with the linked
30
+ record. Go's zero exit status from `gofmt -l` does not mean formatted source;
31
+ its listed paths are findings. Its skipped test and platform-excluded file are
32
+ retained instead of turning native exit zero into complete validation.
33
+
34
+ Each checkout received an original, temporary failing control. Node, Python, Go
35
+ and PHP detected the intended failure. Go retained its existing skip and formatting
36
+ findings. TypeScript's native run diagnosed the inserted TS2322 error, but alpha.2
37
+ stopped at the unsupported compiler option; that is not credited as detection.
38
+ Controls were removed in `finally`, and tracked upstream file hashes remained
39
+ unchanged. `init --write` preservation was checked byte for byte, and read-only
40
+ operations were checked against the project tree.
41
+
42
+ ## What this changes in the roadmap
43
+
44
+ - TypeScript needs a capability/version preflight for older compilers, with a
45
+ clear unavailable-tool explanation, or an explicitly tested compatible invocation.
46
+ Alpha.2's existing native verification covers TypeScript 6.0.3; this exercise
47
+ does not extend that support to 4.9.5.
48
+ - Setup guidance should distinguish an executable language profile from workflow
49
+ tooling and documentation projects. Explicit narrowing must keep the omitted
50
+ coverage visible.
51
+ - Go needs an explicit policy for platform/build-tag coverage before a developer
52
+ can distinguish intentional target exclusions from accidentally missed source.
53
+ This observation does not justify silently ignoring excluded files.
54
+
55
+ These are recorded adoption gaps, not fixes applied to the immutable alpha.2
56
+ package. No new engine version is published by this exercise.
57
+
58
+ ## Unreleased follow-up
59
+
60
+ The [compiler compatibility fix](TYPESCRIPT.md) now passes a known-case mitt replay
61
+ with TypeScript 4.9.5 through a locally packed CLI, library and MCP. The observations
62
+ above still describe published alpha.2; they are not replaced by the fixed source
63
+ checkout's results. Workflow/documentation setup and Go platform coverage remain
64
+ separate work.
65
+
66
+ ## Reproduce
67
+
68
+ Use macOS arm64 with Node 26.8.1 and Go 1.27.1 to reproduce the recorded host
69
+ profile. PHP and Python use the image identities in the measurement record;
70
+ Docker execution disables networking and mounts project inputs read-only.
71
+ The host does not impose an OS network sandbox. No Sail is used.
72
+
73
+ Download the tarball and `SHA256SUMS` from the
74
+ [alpha.2 GitHub release](https://github.com/stsepelin/checktrail/releases/tag/v0.1.0-alpha.2),
75
+ then verify SHA-256
76
+ `ffd0564f40a12a238a52fe25fe8c34fb36cf6f6480be7b6994bab82a3bd657fb`.
77
+ The original measurement installed the exact version from npm; reproduction
78
+ installs that same verified tarball with lifecycle scripts disabled.
79
+
80
+ ```sh
81
+ node scripts/prepare-public-adoption.mjs /new/adoption-directory /absolute/release.tgz
82
+ ```
83
+
84
+ Preparation downloads pinned public Git revisions and installs the engine and
85
+ explicit TypeScript tools. It does not run upstream package scripts. The TypeScript
86
+ tool profile is compiler 4.9.5 plus `@types/chai` 4.3.20, `@types/mocha` 7.0.2,
87
+ `@types/sinon` 9.0.11 and `@types/sinon-chai` 3.2.12. The preparation lockfile records
88
+ transitive dependency resolutions; it is not an upstream lockfile or a claim that
89
+ all upstream build/test dependencies were installed.
90
+
91
+ Prepare the Python/Node image using `scripts/external-tools.Dockerfile`, and the
92
+ PHP/Node image using `scripts/adoption-php.Dockerfile`. Compare local image IDs
93
+ with the record. A rebuilt image may have a different ID: a run with different
94
+ image bytes is a new environment observation, not a reproduction of that exact
95
+ runtime. The recorded Python image must already be present for this harness.
96
+
97
+ ```sh
98
+ docker build --network=none --pull=false -f scripts/adoption-php.Dockerfile -t checktrail-adoption-php:alpha2 scripts
99
+ CHECKTRAIL_ADOPTION_PHP_IMAGE="$(docker image inspect checktrail-adoption-php:alpha2 --format '{{.Id}}')" \
100
+ node scripts/measure-public-adoption.mjs /new/adoption-directory /absolute/release.tgz
101
+ ```
102
+
103
+ Measurement downloads nothing. It verifies installed engine files against the
104
+ reviewed artifact, checks upstream revisions and tracked hashes, measures both
105
+ policy scopes, compares native accounting, and applies/removes the original
106
+ controls. mitt's generated declaration is prepared separately with the installed
107
+ compiler and removed afterwards. Fresh checkouts are required for another run;
108
+ the harness preserves detailed local evidence and created policies for inspection.
109
+
110
+ Raw process outputs stay under the prepared directory's `observations/` folder.
111
+ The committed record contains relative file names, counts, diagnostic codes,
112
+ versions, hashes, outcomes and timing observations, not source or raw tool prose.
113
+ Timings include CLI/process startup and, for containers, Docker invocation; cache
114
+ state, native/wrapper order and scheduling are uncontrolled. They do not support
115
+ a representative speed comparison. No model is invoked and no prior human/model
116
+ review workflow is compared.
package/docs/RELEASE.md CHANGED
@@ -1,20 +1,42 @@
1
1
  # Release preparation
2
2
 
3
3
  The source is public at [stsepelin/checktrail](https://github.com/stsepelin/checktrail);
4
- `@stsepelin/checktrail@0.1.0-alpha.1` is published on npm. Its downloaded artifact
4
+ `@stsepelin/checktrail@0.1.0-alpha.2` is published on npm. Its downloaded artifact
5
5
  matched the reviewed tarball with SHA-256
6
- `84003e184805b6c5362c0801c702a72e415040ae5142fcd70f01eb9758637d04`.
7
- Fresh registry installation, CLI and MCP startup were verified. The alpha.2
8
- candidate adds [setup and diagnosis](ONBOARDING.md); it is not yet published.
9
- `server.json` describes the intended `io.github.stsepelin/checktrail` MCP Registry
10
- identity with the candidate's matching npm version. Registry registration remains
11
- pending. No credentials or automatic publishing workflow are stored here.
6
+ `ffd0564f40a12a238a52fe25fe8c34fb36cf6f6480be7b6994bab82a3bd657fb`.
7
+ Fresh registry installation, CLI/library validation, generated npx startup with
8
+ fresh/warm caches and MCP pass/fail/incomplete results were verified. Alpha.2 adds
9
+ [setup and diagnosis](ONBOARDING.md). The
10
+ [MCP Registry entry](https://registry.modelcontextprotocol.io/v0.1/servers/io.github.stsepelin%2Fchecktrail/versions/0.1.0-alpha.2)
11
+ is active and matches the alpha.2 release metadata, with execution disabled. The Registry omits
12
+ `isSecret: false`, whose schema default is false. No credentials or automatic
13
+ publishing workflow are stored here.
14
+ The [GitHub prerelease](https://github.com/stsepelin/checktrail/releases/tag/v0.1.0-alpha.2)
15
+ points to source commit `4ce8398` and includes the same tarball plus `SHA256SUMS`.
16
+ The downloaded release asset was verified against the digest above.
12
17
 
13
18
  Publication is configured for npm's `next` tag. After alpha.1 publication, the
14
19
  registry assigned both `next` and `latest` to that preview; attempts to remove
15
- `latest` returned HTTP 400. The cause is unresolved. Use exact versions and
16
- resolve the tag policy before publishing another candidate; do not treat `latest`
17
- as evidence of a stable release or republish an existing version.
20
+ `latest` returned HTTP 400. Alpha.2 publication updated `next` while leaving
21
+ `latest` on alpha.1. Cleanup remains unresolved; use exact versions, do not treat
22
+ `latest` as evidence of a stable release, and never republish an existing version.
23
+
24
+ ## Alpha.3 candidate (unpublished)
25
+
26
+ The source candidate is `0.1.0-alpha.3`. It fixes the plain TypeScript adapter's
27
+ unsupported `--noCheck` argument on the exercised TypeScript 4.9.5 profile, while
28
+ retaining the TypeScript 6.0.3 override and native file accounting. Vue uses the
29
+ same capability helper with its existing verified modern toolchain; the separate
30
+ solution-build profile remains gated to TypeScript 6.0.3. See [TYPESCRIPT.md](TYPESCRIPT.md).
31
+ No dependencies or report/policy schemas change in this release preparation.
32
+ The alpha.2 adoption record remains historical evidence.
33
+
34
+ The candidate still targets Node.js 22 or newer on macOS and Linux. It does not
35
+ add standard MCP Tasks or legacy Vue support. Registry metadata keeps execution
36
+ disabled by default. Publication will use npm's `next` tag after release checks
37
+ and hosted CI succeed; the alpha.2 publication evidence above does not verify
38
+ this candidate. Exact artifact, client and upgrade/rollback evidence is retained
39
+ outside the package allowlist until publication is verified.
18
40
 
19
41
  ## Prepared artifacts
20
42
 
@@ -32,8 +54,8 @@ as evidence of a stable release or republish an existing version.
32
54
  loads the installed metadata and verifies its actual startup command.
33
55
  - CI definitions cover the host suite and prepared native profiles. Local
34
56
  containers and package checks are evidence only for the environments actually
35
- exercised. The [hosted run at bfc8cc4](https://github.com/stsepelin/checktrail/actions/runs/35585998184)
36
- passed all jobs; the alpha.2 release commit requires its own run. The local Claude Code health/discovery and
57
+ exercised. The [hosted run at 4ce8398](https://github.com/stsepelin/checktrail/actions/runs/35590670960)
58
+ passed all jobs for the alpha.2 release commit. The local Claude Code health/discovery and
37
59
  Codex direct app-server profiles have fresh-install evidence in `CLIENTS.md`.
38
60
 
39
61
  The metadata follows the official registry
@@ -69,7 +91,7 @@ After explicit approval and npm authentication for the `@stsepelin` scope, publi
69
91
  the approved file, not a newly packed working tree:
70
92
 
71
93
  ```sh
72
- npm publish /absolute/path/stsepelin-checktrail-0.1.0-alpha.2.tgz \
94
+ npm publish /absolute/path/stsepelin-checktrail-0.1.0-alpha.3.tgz \
73
95
  --tag next --access public --ignore-scripts --registry=https://registry.npmjs.org
74
96
  ```
75
97
 
package/docs/STATUS.md CHANGED
@@ -3,15 +3,26 @@
3
3
  This is an experimental foundation with public source at
4
4
  [stsepelin/checktrail](https://github.com/stsepelin/checktrail).
5
5
  Check the [installation guide](INSTALLATION.md) for package availability and setup.
6
- The `0.1.0-alpha.1` preview is published on npm. The newer
7
- [hosted run at bfc8cc4](https://github.com/stsepelin/checktrail/actions/runs/35585998184)
8
- passed all jobs; earlier toolchain evidence remains in `NATIVE-CI.md`.
9
- The alpha.2 candidate adds setup commands and requires its own release CI and
10
- publication. MCP Registry registration remains pending.
6
+ The `0.1.0-alpha.2` preview is published on npm and active in the MCP Registry.
7
+ The [hosted run at 4ce8398](https://github.com/stsepelin/checktrail/actions/runs/35590670960)
8
+ passed all jobs. The published tarball matched the reviewed artifact; fresh
9
+ registry installation, CLI/library validation, generated npx startup and MCP
10
+ execution/trust behavior were verified. Earlier toolchain evidence remains in
11
+ `NATIVE-CI.md`; release details and tag limitations are in `RELEASE.md`.
12
+ The GitHub alpha.2 prerelease includes the verified artifact and checksum.
13
+ [Public adoption](PUBLIC-ADOPTION.md) records the published package on five pinned
14
+ libraries, including incomplete coverage and a TypeScript 4.9.5 incompatibility.
15
+
16
+ ## Alpha.3 candidate (unpublished)
17
+
18
+ - [TypeScript compatibility](TYPESCRIPT.md): plain typechecking now passes the
19
+ native 4.9.5 regression while retaining the 6.0.3 `noCheck` override and native
20
+ file accounting. A packed CLI/library/MCP replay fixes the recorded mitt case.
21
+ Published alpha.2 and its immutable adoption record retain the original failure.
11
22
 
12
23
  ## Implemented
13
24
 
14
- - Alpha.2 candidate: conservative multi-language `init`, execution-free `doctor`,
25
+ - Alpha.2: conservative multi-language `init`, execution-free `doctor`,
15
26
  and version-pinned MCP configuration output for Codex, Claude Code/Desktop,
16
27
  Cursor and VS Code. Existing files are preserved. See [ONBOARDING.md](ONBOARDING.md)
17
28
  for scope, ambiguity handling and package upgrade/rollback verification.
@@ -153,11 +164,11 @@ a general speedup/graph-completeness claim.
153
164
 
154
165
  ## Release preparation
155
166
 
156
- `server.json` and npm `mcpName` describe the `0.1.0-alpha.1` preview.
157
- The metadata passed the pinned official registry schema; a native SDK-client test
158
- starts its command and verifies execution remains disabled. This does not establish
159
- registry acceptance or npm publication. Hosted source evidence is recorded
160
- separately in `NATIVE-CI.md`. See `RELEASE.md`.
167
+ `server.json`, the npm package and the engine identify the unpublished
168
+ `0.1.0-alpha.3` candidate. The currently published npm and Registry release is
169
+ alpha.2. The candidate adds legacy TypeScript compatibility; publication requires
170
+ its source commit to pass hosted CI and its exact tarball to pass release checks.
171
+ Historical publication evidence and the candidate sequence are in `RELEASE.md`.
161
172
 
162
173
  ## Pinned pack distribution
163
174
 
@@ -0,0 +1,78 @@
1
+ # TypeScript compiler compatibility
2
+
3
+ The source checkout's `javascript.typescript` profile now supports the exercised
4
+ TypeScript 4.9.5 and 6.0.3 configurations. This fix is included in the
5
+ **unpublished alpha.3 candidate**. Published alpha.2 still passes an option that
6
+ TypeScript 4.9.5 rejects. The original
7
+ [public adoption record](PUBLIC-ADOPTION.md) remains unchanged as release evidence.
8
+ Other compiler versions require their own native verification.
9
+
10
+ ## Invocation and boundaries
11
+
12
+ Planning locates the project-local or root-hoisted compiler without importing it.
13
+ During explicitly trusted execution, a runner loads the selected compiler API
14
+ and uses its public command-line parser to check support for `--noCheck false`.
15
+ Supported compilers receive that override, so `noCheck: true` cannot disable the
16
+ selected type check. Older compilers that reject this option receive the remaining
17
+ arguments; an unexpected capability response stops before the compiler CLI starts.
18
+ The probe parses fixed arguments and does not parse project configuration.
19
+
20
+ The compiler entry and API must resolve inside the configured root. They are
21
+ trusted executable dependencies; this check is not a sandbox. No compiler is
22
+ installed or downloaded during planning or execution. `doctor` remains static
23
+ and does not perform this runtime capability probe.
24
+
25
+ Checks still disable emitted output and incremental state and require every
26
+ inventoried TypeScript source in the native file list. A successful compiler exit
27
+ with omitted source is incomplete. A legacy compiler's unsupported project options
28
+ remain compiler errors; the runner does not rewrite `tsconfig.json`.
29
+
30
+ The Vue runner uses the same capability helper. Its separately tested Vue 3.5.43,
31
+ vue-tsc 3.3.11 and TypeScript 6.0.3 profile retains type-error detection and the
32
+ `skipTemplateCodegen` rejection. This does not establish legacy Vue compatibility.
33
+ The solution-build adapter remains gated to TypeScript 6.0.3; see
34
+ [TYPESCRIPT-BUILD.md](TYPESCRIPT-BUILD.md).
35
+
36
+ ## Verification
37
+
38
+ The new 4.9.5 regression failed on the previous adapter's TS5023 error. With this
39
+ change it accepts valid code, rejects a real TS2322 error, accounts for excluded
40
+ source, identifies the actual tool version, supports a root-hoisted compiler and
41
+ paths with spaces, and leaves emitted/incremental files absent. Existing native
42
+ 6.0.3 and Vue regressions still reject type errors even with `noCheck: true`.
43
+ Separate regressions reject an escaping compiler API and an ambiguous capability
44
+ response before the compiler CLI executes. Planning is checked against executable
45
+ traps in both the CLI and API files.
46
+
47
+ The [known-case replay](measurements/typescript-legacy-replay.json) uses mitt at
48
+ the same pinned revision and the same TypeScript 4.9.5 tool profile as the alpha.2
49
+ adoption exercise. After generating its required root declaration, native checking
50
+ and the packed fix pass; an original injected TS2322 error fails through the CLI,
51
+ library and MCP. The policy and tracked upstream files stay unchanged, and the
52
+ injected source and generated declaration are removed afterwards. This is a
53
+ regression replay after observing the failure, not a new independent holdout.
54
+ The record identifies the tested local tarball and adapter source hashes; it is
55
+ not the published alpha.2 artifact.
56
+
57
+ ## Prepare the legacy regression
58
+
59
+ The old compiler has a separate locked installation so its `tsc` binary cannot
60
+ replace the compiler used to build Checktrail:
61
+
62
+ ```sh
63
+ mkdir -p .checktrail/typescript-legacy-tools
64
+ cp scripts/typescript-legacy-tools/package.json scripts/typescript-legacy-tools/package-lock.json .checktrail/typescript-legacy-tools/
65
+ npm ci --prefix .checktrail/typescript-legacy-tools --ignore-scripts --no-audit --no-fund
66
+ npm run build
67
+ node --test dist/test/typescript.test.js dist/test/vue-tsc.test.js dist/test/typescript-build.test.js
68
+ ```
69
+
70
+ The general suite explicitly skips the legacy native case when this installation
71
+ is absent. The hosted main matrix prepares it and the `javascript` required-native
72
+ profile rejects a skipped or missing legacy regression. A local pass does not
73
+ establish hosted CI results.
74
+
75
+ TypeScript introduced the public `noCheck` option in
76
+ [TypeScript 5.6](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-5-6.html#the--nocheck-option).
77
+ The runner checks actual parser behavior instead of assuming capabilities from a
78
+ package version string.