@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 +12 -6
- package/dist/src/types.d.ts +1 -1
- package/dist/src/types.js +1 -1
- package/dist/src/typescript-arguments.d.ts +4 -0
- package/dist/src/typescript-arguments.js +10 -0
- package/dist/src/typescript-runner.d.ts +1 -0
- package/dist/src/typescript-runner.js +19 -0
- package/dist/src/typescript.js +3 -9
- package/dist/src/vue-tsc-runner.js +2 -1
- package/docs/ACCEPTANCE.md +22 -13
- package/docs/INSTALLATION.md +5 -6
- package/docs/LANGUAGES.md +11 -1
- package/docs/NATIVE-CI.md +4 -0
- package/docs/ONBOARDING.md +7 -2
- package/docs/PUBLIC-ADOPTION.md +116 -0
- package/docs/RELEASE.md +35 -13
- package/docs/STATUS.md +22 -11
- package/docs/TYPESCRIPT.md +78 -0
- package/docs/measurements/public-adoption-alpha2.json +2034 -0
- package/docs/measurements/typescript-legacy-replay.json +39 -0
- package/package.json +1 -1
- package/server.json +2 -2
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.
|
|
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
|
|
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
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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
|
package/dist/src/types.d.ts
CHANGED
|
@@ -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.
|
|
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
|
@@ -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
|
+
});
|
package/dist/src/typescript.js
CHANGED
|
@@ -16,18 +16,12 @@ export async function typescriptCheck(source, project, vue = false) {
|
|
|
16
16
|
{
|
|
17
17
|
executable: process.execPath,
|
|
18
18
|
args: [
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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) => {
|
package/docs/ACCEPTANCE.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
47
|
-
[hosted run at
|
|
48
|
-
passed all jobs
|
|
49
|
-
|
|
50
|
-
|
|
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.
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
# Install the preview
|
|
2
2
|
|
|
3
|
-
The published preview is `0.1.0-alpha.
|
|
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.
|
|
6
|
-
|
|
7
|
-
|
|
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.
|
|
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
|
|
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,
|
package/docs/ONBOARDING.md
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
# Project setup
|
|
2
2
|
|
|
3
|
-
These commands are
|
|
4
|
-
|
|
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.
|
|
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
|
-
`
|
|
7
|
-
Fresh registry installation, CLI
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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.
|
|
16
|
-
|
|
17
|
-
as evidence of a stable release
|
|
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
|
|
36
|
-
passed all jobs
|
|
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.
|
|
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.
|
|
7
|
-
[hosted run at
|
|
8
|
-
passed all jobs
|
|
9
|
-
|
|
10
|
-
|
|
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
|
|
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
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
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.
|