@stsepelin/checktrail 0.1.0-alpha.3 → 0.1.0-alpha.5
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 +13 -7
- package/dist/src/adapters.js +5 -1
- package/dist/src/architecture.d.ts +1 -1
- package/dist/src/contract-schema.d.ts +1 -1
- package/dist/src/contracts.d.ts +1 -1
- package/dist/src/evidence.js +3 -1
- package/dist/src/finding-policy-schema.d.ts +1 -1
- package/dist/src/go-build.d.ts +27 -0
- package/dist/src/go-build.js +113 -0
- package/dist/src/go-scope-policy.d.ts +11 -0
- package/dist/src/go-scope-policy.js +50 -0
- package/dist/src/go-scope.d.ts +1 -1
- package/dist/src/go-scope.js +42 -5
- package/dist/src/golangci-runner.js +5 -2
- package/dist/src/golangci.js +1 -0
- package/dist/src/output.js +8 -0
- package/dist/src/report-validation.d.ts +11 -0
- package/dist/src/runtime-inventory.d.ts +2 -2
- package/dist/src/schemas.d.ts +28 -0
- package/dist/src/schemas.js +22 -2
- package/dist/src/types.d.ts +7 -1
- package/dist/src/types.js +1 -1
- package/docs/ACCEPTANCE.md +11 -8
- package/docs/CLIENTS.md +6 -4
- package/docs/EXECUTION.md +7 -0
- package/docs/GO-BUILD.md +106 -0
- package/docs/GO-RACE.md +6 -2
- package/docs/GO-SCOPE.md +79 -5
- package/docs/GOLANGCI-LINT.md +5 -2
- package/docs/INSTALLATION.md +5 -4
- package/docs/LANGUAGES.md +11 -2
- package/docs/MCP-COMPATIBILITY.md +6 -0
- package/docs/ONBOARDING.md +3 -2
- package/docs/PUBLIC-ADOPTION.md +9 -5
- package/docs/RELEASE.md +107 -40
- package/docs/SETUP-SCOPES.md +107 -0
- package/docs/STATUS.md +48 -20
- package/docs/TYPESCRIPT.md +2 -2
- package/docs/measurements/go-scope-policy-replay.json +91 -0
- package/docs/measurements/release-alpha3.json +362 -0
- package/docs/measurements/release-alpha4.json +421 -0
- package/package.json +1 -1
- package/schemas/go-build-policy.schema.json +72 -0
- package/schemas/go-scope-policy.schema.json +31 -0
- package/schemas/plan-summary.schema.json +11 -1
- package/schemas/plan.schema.json +51 -0
- package/schemas/report-summary.schema.json +10 -0
- package/schemas/report.schema.json +51 -0
- package/server.json +2 -2
package/dist/src/schemas.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { goBuildSelectionSchema } from "./go-build.js";
|
|
2
|
+
export { goBuildPolicySchema } from "./go-build.js";
|
|
3
|
+
import { goScopePolicySchema } from "./go-scope-policy.js";
|
|
4
|
+
export { goScopePolicySchema } from "./go-scope-policy.js";
|
|
1
5
|
import { externalIdentitySchema } from "./external-adapter.js";
|
|
2
6
|
export { externalManifestSchema, externalReferenceSchema, externalRequestSchema, externalResultSchema, } from "./external-adapter.js";
|
|
3
7
|
export { actionlintConfigSchema } from "./actionlint.js";
|
|
@@ -124,6 +128,8 @@ export const reportSchema = z.strictObject({
|
|
|
124
128
|
adapter: z.string(),
|
|
125
129
|
project: z.string(),
|
|
126
130
|
scope: strings,
|
|
131
|
+
goScope: goScopePolicySchema.optional(),
|
|
132
|
+
goBuild: goBuildSelectionSchema.optional(),
|
|
127
133
|
status,
|
|
128
134
|
reason: z.string(),
|
|
129
135
|
processes: z.array(processResult),
|
|
@@ -161,7 +167,13 @@ export const reportSchema = z.strictObject({
|
|
|
161
167
|
export const reportSummarySchema = z.strictObject({
|
|
162
168
|
...reportMetadata,
|
|
163
169
|
selection: selectionSummary.optional(),
|
|
164
|
-
checks: z.array(z.strictObject({
|
|
170
|
+
checks: z.array(z.strictObject({
|
|
171
|
+
id: z.string(),
|
|
172
|
+
status,
|
|
173
|
+
tests: tests.optional(),
|
|
174
|
+
goExcludedFileCount: count.optional(),
|
|
175
|
+
goBuildTagCount: count.optional(),
|
|
176
|
+
})),
|
|
165
177
|
});
|
|
166
178
|
export const planSchema = z.strictObject({
|
|
167
179
|
...metadata,
|
|
@@ -182,6 +194,8 @@ export const planSchema = z.strictObject({
|
|
|
182
194
|
adapter: z.string(),
|
|
183
195
|
project: z.string(),
|
|
184
196
|
scope: strings,
|
|
197
|
+
goScope: goScopePolicySchema.optional(),
|
|
198
|
+
goBuild: goBuildSelectionSchema.optional(),
|
|
185
199
|
kind,
|
|
186
200
|
parser: z.enum(PARSERS),
|
|
187
201
|
commands: z.array(command),
|
|
@@ -197,7 +211,13 @@ export const planSummarySchema = z.strictObject({
|
|
|
197
211
|
projectCount: count,
|
|
198
212
|
adapters: strings,
|
|
199
213
|
excludedCount: count,
|
|
200
|
-
checks: z.array(z.strictObject({
|
|
214
|
+
checks: z.array(z.strictObject({
|
|
215
|
+
id: z.string(),
|
|
216
|
+
kind,
|
|
217
|
+
ready: z.boolean(),
|
|
218
|
+
goExcludedFileCount: count.optional(),
|
|
219
|
+
goBuildTagCount: count.optional(),
|
|
220
|
+
})),
|
|
201
221
|
});
|
|
202
222
|
export const junitImportSchema = z.strictObject({
|
|
203
223
|
...metadata,
|
package/dist/src/types.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import type { GoBuildSelection } from "./go-build.js";
|
|
2
|
+
import type { GoScopePolicy } from "./go-scope-policy.js";
|
|
1
3
|
import type { ExternalIdentity } from "./external-adapter.js";
|
|
2
4
|
import type { RuntimeInventory } from "./runtime-inventory.js";
|
|
3
|
-
export declare const VERSION = "0.1.0-alpha.
|
|
5
|
+
export declare const VERSION = "0.1.0-alpha.5";
|
|
4
6
|
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
7
|
export type Status = "passed" | "failed" | "unavailable" | "skipped" | "error" | "inconclusive";
|
|
6
8
|
export type Outcome = "passed" | "failed" | "incomplete";
|
|
@@ -44,6 +46,8 @@ export interface ToolEvidence {
|
|
|
44
46
|
path?: string;
|
|
45
47
|
}
|
|
46
48
|
export interface Check {
|
|
49
|
+
goScope?: GoScopePolicy;
|
|
50
|
+
goBuild?: GoBuildSelection;
|
|
47
51
|
external?: ExternalIdentity;
|
|
48
52
|
id: string;
|
|
49
53
|
adapter: string;
|
|
@@ -115,6 +119,8 @@ export interface Finding {
|
|
|
115
119
|
line?: number;
|
|
116
120
|
}
|
|
117
121
|
export interface CheckResult {
|
|
122
|
+
goScope?: GoScopePolicy;
|
|
123
|
+
goBuild?: GoBuildSelection;
|
|
118
124
|
external?: ExternalIdentity & {
|
|
119
125
|
tools?: {
|
|
120
126
|
name: string;
|
package/dist/src/types.js
CHANGED
package/docs/ACCEPTANCE.md
CHANGED
|
@@ -7,7 +7,7 @@ separate states. Follow the linked evidence for tested versions and limits.
|
|
|
7
7
|
|
|
8
8
|
| Milestone | Implemented scope and evidence | Open acceptance work |
|
|
9
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.
|
|
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.4 and its MCP Registry entry are published. Hosted CI passed at `ebe7f5c`; fresh registry installation was verified. |
|
|
11
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
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
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. |
|
|
@@ -19,9 +19,11 @@ separate states. Follow the linked evidence for tested versions and limits.
|
|
|
19
19
|
[Public adoption measurements](PUBLIC-ADOPTION.md) now cover five pinned
|
|
20
20
|
JavaScript, TypeScript, Python, Go and PHP libraries. They expose an older
|
|
21
21
|
TypeScript compiler-option incompatibility and workflow/documentation/platform
|
|
22
|
-
coverage friction.
|
|
23
|
-
known TypeScript 4.9.5 case
|
|
24
|
-
|
|
22
|
+
coverage friction. The [alpha.3 compiler fix](TYPESCRIPT.md) now passes the
|
|
23
|
+
known TypeScript 4.9.5 case. [Setup guidance](SETUP-SCOPES.md) distinguishes
|
|
24
|
+
workflow/documentation coverage; the alpha.4 [Go scope policy](GO-SCOPE.md)
|
|
25
|
+
accounts for explicitly acknowledged native exclusions. Unreleased [per-check build-tag profiles](GO-BUILD.md)
|
|
26
|
+
add explicit tag selection; broader target coverage remains follow-up work. The observations do not establish full upstream CI coverage or
|
|
25
27
|
general review effectiveness.
|
|
26
28
|
|
|
27
29
|
1. Extend independently authored evaluation cohorts to additional implemented
|
|
@@ -51,10 +53,11 @@ run. The local worker/store are available independently; standard Tasks must sta
|
|
|
51
53
|
unadvertised until routing and the integrated wire/lifecycle suite pass. See
|
|
52
54
|
`MCP-COMPATIBILITY.md` for the reproduction and upstream issue.
|
|
53
55
|
|
|
54
|
-
The public repository, npm preview `0.1.0-alpha.
|
|
55
|
-
published. The [hosted run at
|
|
56
|
-
passed all jobs, and fresh public installation was verified. Alpha.
|
|
57
|
-
[
|
|
56
|
+
The public repository, npm preview `0.1.0-alpha.4` and its MCP Registry entry are
|
|
57
|
+
published. The [hosted run at ebe7f5c](https://github.com/stsepelin/checktrail/actions/runs/35603451711)
|
|
58
|
+
passed all jobs, and fresh public installation was verified. Alpha.4 adds
|
|
59
|
+
[explicit Go exclusions](GO-SCOPE.md) alongside [legacy compiler compatibility](TYPESCRIPT.md)
|
|
60
|
+
and the [setup commands](ONBOARDING.md). The [GitHub prerelease](https://github.com/stsepelin/checktrail/releases/tag/v0.1.0-alpha.4)
|
|
58
61
|
is also published with the verified tarball and checksum. npm tag cleanup remains
|
|
59
62
|
unresolved. The repository's explicit-action requirements still apply.
|
|
60
63
|
`RELEASE.md` defines the concrete
|
package/docs/CLIENTS.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Application client compatibility
|
|
2
2
|
|
|
3
|
-
The
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
The [alpha.4 release record](measurements/release-alpha4.json) repeats the named
|
|
4
|
+
profiles below against the exact published artifact. The original standalone
|
|
5
|
+
snapshots predate the Checktrail rename and retain their original identities.
|
|
6
|
+
A future release needs its own checks; see [RENAMING.md](RENAMING.md).
|
|
6
7
|
|
|
7
8
|
The local package was installed offline into a fresh temporary consumer and tested
|
|
8
9
|
with Claude Code 2.1.263 and Codex CLI 0.154.0 on macOS arm64, Node 26.8.1. These
|
|
@@ -106,4 +107,5 @@ The runtime digest identifies the installed `dist/src` tree independently.
|
|
|
106
107
|
|
|
107
108
|
These local checks satisfy only the named client profiles. Claude Desktop,
|
|
108
109
|
Cursor, VS Code integrations, other client versions and target operating systems
|
|
109
|
-
remain unverified.
|
|
110
|
+
remain unverified. These original snapshots do not establish public installation or hosted CI;
|
|
111
|
+
alpha.4 publication and hosted evidence are recorded separately in [RELEASE.md](RELEASE.md).
|
package/docs/EXECUTION.md
CHANGED
|
@@ -21,6 +21,13 @@ an unavailable runtime or external service does not count as verification.
|
|
|
21
21
|
|
|
22
22
|
## M2
|
|
23
23
|
|
|
24
|
+
- Alpha.5 candidate, unpublished: named per-check Go build-tag profiles with independent
|
|
25
|
+
exclusions, matching listing/execution settings, unchanged formatting scope,
|
|
26
|
+
strict missing/ambiguous assignment handling and summary privacy. Native
|
|
27
|
+
Go/Staticcheck/golangci-lint cases and CLI/library/MCP replay cover the selected
|
|
28
|
+
configuration; repeated-check and cross-target matrices remain pending.
|
|
29
|
+
See `GO-BUILD.md` and `examples/go-build`.
|
|
30
|
+
|
|
24
31
|
- Implemented: explicit local TypeScript and ESLint adapters with file accounting.
|
|
25
32
|
- Implemented: TypeScript project-reference solution validation using fresh
|
|
26
33
|
in-memory declarations, source accounting and normalized compiler diagnostics.
|
package/docs/GO-BUILD.md
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Go build-tag profiles (alpha.5 candidate)
|
|
2
|
+
|
|
3
|
+
The source checkout supports named build-tag profiles in module-local
|
|
4
|
+
`checktrail.go-build.json`. Published alpha.4 does not support this file. It
|
|
5
|
+
selects additional Go build constraints for each check and keeps that check's
|
|
6
|
+
exclusions explicit. It does not introduce cross-compilation or a target matrix.
|
|
7
|
+
|
|
8
|
+
## Configure
|
|
9
|
+
|
|
10
|
+
Continue selecting checks in `checktrail.json`. A build profile does not enable
|
|
11
|
+
checks: `go.test-race`, Staticcheck and golangci-lint still need explicit selection.
|
|
12
|
+
Use the [runnable synthetic example](../examples/go-build/checktrail.go-build.json)
|
|
13
|
+
with [its check selection](../examples/go-build/checktrail.json), or configure:
|
|
14
|
+
|
|
15
|
+
```json
|
|
16
|
+
{
|
|
17
|
+
"schemaVersion": 1,
|
|
18
|
+
"profiles": [
|
|
19
|
+
{
|
|
20
|
+
"name": "integration",
|
|
21
|
+
"tags": ["integration"],
|
|
22
|
+
"checks": ["go.vet", "go.test"],
|
|
23
|
+
"excludedFiles": []
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Every selected native Go check must be assigned exactly one profile. Missing
|
|
30
|
+
assignments are unavailable; they never silently fall back to an untagged run.
|
|
31
|
+
Profile names and check assignments must be unique. A profile may share its tags
|
|
32
|
+
and exclusions across several checks; other profiles can use different settings.
|
|
33
|
+
Unselected checks are not executed, even if a profile names them. Each check runs
|
|
34
|
+
once. Repeating one check across several profiles is not implemented.
|
|
35
|
+
|
|
36
|
+
Tags are an array of distinct ASCII identifiers matching
|
|
37
|
+
`[A-Za-z_][A-Za-z0-9_]*`, each at most 64 characters, with at most 32 tags.
|
|
38
|
+
An empty array adds no tags. Profile names start with an ASCII letter and allow
|
|
39
|
+
letters, digits, underscores and hyphens, up to 64 characters. Up to five profiles
|
|
40
|
+
can assign the five supported native checks. Unknown fields, malformed JSON,
|
|
41
|
+
nonregular policy files and invalid exclusions make native checks unavailable.
|
|
42
|
+
|
|
43
|
+
Each profile has its own `excludedFiles`, using the exact paths and nonblank
|
|
44
|
+
reasons described in [Go scope](GO-SCOPE.md). Excluded files must still be
|
|
45
|
+
inventoried and confirmed by native `IgnoredGoFiles`. An active or stale exclusion
|
|
46
|
+
cannot pass. Listing a source file as excluded never suppresses an actual finding.
|
|
47
|
+
Do not combine this file with `checktrail.go-scope.json`; their overlapping policy
|
|
48
|
+
is rejected. To migrate, move exclusions into each applicable profile and remove
|
|
49
|
+
the old scope policy after reviewing the complete configuration.
|
|
50
|
+
|
|
51
|
+
## Execution and evidence
|
|
52
|
+
|
|
53
|
+
Go listing, vet, tests and Staticcheck receive identical `-tags` settings within
|
|
54
|
+
each check. Race tests also keep `-race` in listing and execution. Golangci-lint
|
|
55
|
+
receives the profile tags in its generated configuration; its project's own
|
|
56
|
+
`run.build-tags` remains unsupported to avoid a second source of settings.
|
|
57
|
+
Existing protected Go settings, version checks and tool requirements still apply.
|
|
58
|
+
|
|
59
|
+
Formatting checks the full inventory once and ignores build profiles. Native
|
|
60
|
+
checks retain their whole inventory and reconcile selected and excluded files
|
|
61
|
+
separately. Tests still need a passing test in each package; test counts and
|
|
62
|
+
failures come from native events. A passing ordinary test does not cover a file
|
|
63
|
+
selected only by the race profile. An exclusion's reason is an operator statement,
|
|
64
|
+
not independent evidence that another check ran or covered it.
|
|
65
|
+
|
|
66
|
+
Detailed plans/reports add `goBuild` with the profile name and tags alongside
|
|
67
|
+
`goScope` with that profile's exclusions. Summary plans/reports expose only
|
|
68
|
+
`goBuildTagCount` and `goExcludedFileCount`; names, tags and reasons remain private
|
|
69
|
+
unless detailed output is enabled. Counts describe declarations, not proof of
|
|
70
|
+
execution. Older strict report-schema consumers must update before accepting the
|
|
71
|
+
new optional fields. The [policy schema](../schemas/go-build-policy.schema.json)
|
|
72
|
+
defines the data shape; planning also checks duplicate assignments and inventoried
|
|
73
|
+
file membership.
|
|
74
|
+
|
|
75
|
+
Planning reads data only. Execution still requires CLI/library/operator startup
|
|
76
|
+
trust. Policy files cannot set environment values or arbitrary command arguments.
|
|
77
|
+
Tags do not set `GOOS`, `GOARCH`, the compiler version or enable race instrumentation;
|
|
78
|
+
only the selected race check adds instrumentation. No unselected tag combinations
|
|
79
|
+
or other operating systems are claimed as validated.
|
|
80
|
+
|
|
81
|
+
## Reproduce
|
|
82
|
+
|
|
83
|
+
From a built source checkout with Go and a supported race toolchain prepared:
|
|
84
|
+
|
|
85
|
+
```sh
|
|
86
|
+
node dist/src/cli.js plan --root examples/go-build --detailed
|
|
87
|
+
node dist/src/cli.js run --root examples/go-build --trust-project --detailed --timeout-ms 120000
|
|
88
|
+
node --test dist/test/go-build.test.js
|
|
89
|
+
node scripts/verify-required-native-tests.mjs go
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The example's ordinary profile selects the integration test and acknowledges the
|
|
93
|
+
race-only test. The instrumented profile selects both. This demonstrates source
|
|
94
|
+
selection; the arithmetic example does not itself demonstrate race detection.
|
|
95
|
+
The separate [race regression](GO-RACE.md) exercises an actual data race.
|
|
96
|
+
|
|
97
|
+
The native regression suite exercises tagged compiler errors and assertions,
|
|
98
|
+
valid near misses, undeclared omissions, stale exclusions, missing assignments,
|
|
99
|
+
independent ordinary/race settings, analyzer diagnostics, nonexecuting planning,
|
|
100
|
+
summary privacy and CLI/MCP agreement. Standard schema checks cover the exported
|
|
101
|
+
policy and report shapes. Prepared CI requires these named cases to run; unavailable
|
|
102
|
+
native tools cannot satisfy the required profile.
|
|
103
|
+
|
|
104
|
+
References: [Go build constraints](https://pkg.go.dev/cmd/go#hdr-Build_constraints),
|
|
105
|
+
[Staticcheck CLI](https://staticcheck.dev/docs/running-staticcheck/cli/),
|
|
106
|
+
[golangci-lint configuration](https://golangci-lint.run/docs/configuration/file/).
|
package/docs/GO-RACE.md
CHANGED
|
@@ -10,8 +10,12 @@ cost and requires the operator to select this check.
|
|
|
10
10
|
The native fixture runs two workers repeatedly updating one shared counter. The
|
|
11
11
|
unprotected version must fail with an actual `DATA RACE` diagnostic; atomic
|
|
12
12
|
updates must pass and yield the exact combined count. A passing run cannot
|
|
13
|
-
establish freedom from races on paths it did not execute. Native package/file evidence
|
|
14
|
-
incomplete; see [Go scope](GO-SCOPE.md)
|
|
13
|
+
establish freedom from races on paths it did not execute. Native package/file evidence makes undeclared excluded source and untested packages
|
|
14
|
+
incomplete; see [Go scope](GO-SCOPE.md) for the explicit exclusion policy available since alpha.4.
|
|
15
|
+
Alpha.4 also passes `-race` to package listing so it uses the same build
|
|
16
|
+
constraints as the tests. The unpublished alpha.5 source candidate adds
|
|
17
|
+
[per-check build-tag profiles](GO-BUILD.md), allowing race and ordinary tests to
|
|
18
|
+
use different tags and exclusions. A build/OS matrix is not implemented.
|
|
15
19
|
|
|
16
20
|
A supported Go race platform and C compiler are required. Compilation and runtime
|
|
17
21
|
errors are retained in detailed output; no compiler, library or toolchain is
|
package/docs/GO-SCOPE.md
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
# Go scope and Staticcheck
|
|
2
2
|
|
|
3
|
-
`go.vet`, `go.test`, `go.test-race` and `go.
|
|
4
|
-
`go list -json ./...`.
|
|
5
|
-
|
|
3
|
+
`go.vet`, `go.test`, `go.test-race`, `go.staticcheck` and `go.golangci-lint` first run
|
|
4
|
+
native `go list -json ./...`. The race profile includes `-race` in both listing and
|
|
5
|
+
test execution, so their build constraints agree. By default, a passing result
|
|
6
|
+
requires the union of native Go, cgo and internal/external test source files to
|
|
7
|
+
exactly match the inventoried Go files.
|
|
6
8
|
Malformed package output, missing packages, duplicate/unexpected files and load
|
|
7
9
|
errors prevent completeness. Real diagnostic/test failures retain their failure
|
|
8
10
|
status even when scope is incomplete.
|
|
9
11
|
|
|
10
12
|
Files excluded by build tags, OS/architecture suffixes or Go directory conventions
|
|
11
|
-
remain unverified.
|
|
12
|
-
contract, so such projects are conservatively incomplete. This includes intentional
|
|
13
|
+
remain unverified. Without an explicit scope policy, such projects are conservatively incomplete. This includes intentional
|
|
13
14
|
`testdata` Go files if they are inventoried but not compiled. Do not treat that as
|
|
14
15
|
a source defect or remove valid platform-specific code to obtain a passing run.
|
|
15
16
|
|
|
@@ -26,6 +27,79 @@ programs. Cross-module workspace builds need a separate explicit profile. Native
|
|
|
26
27
|
compiler/analyzer caches may be used; test result caching remains disabled.
|
|
27
28
|
Dependencies and toolchains must be prepared separately.
|
|
28
29
|
|
|
30
|
+
## Explicit exclusions (alpha.4 and later)
|
|
31
|
+
|
|
32
|
+
Alpha.4 adds `checktrail.go-scope.json` at each Go module root. Earlier releases
|
|
33
|
+
do not support this policy. Opt in only after reviewing
|
|
34
|
+
which files the intended native run leaves unverified:
|
|
35
|
+
|
|
36
|
+
```json
|
|
37
|
+
{
|
|
38
|
+
"schemaVersion": 1,
|
|
39
|
+
"excludedFiles": [
|
|
40
|
+
{
|
|
41
|
+
"path": "platform_windows.go",
|
|
42
|
+
"reason": "Windows implementation; validated separately on its target"
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Paths are exact, case-sensitive, module-relative inventoried `.go` files. Globs,
|
|
49
|
+
parent traversal, absolute paths, duplicate entries, blank reasons, unknown fields,
|
|
50
|
+
missing files and symlink/directory policy files are rejected. An empty list keeps
|
|
51
|
+
strict coverage. Planning only reads this file; native commands still require
|
|
52
|
+
operator trust. A reason records the operator's statement, not proof of another run.
|
|
53
|
+
The schema is [go-scope-policy.schema.json](../schemas/go-scope-policy.schema.json).
|
|
54
|
+
|
|
55
|
+
For each selected native check, every declared file must appear in Go's
|
|
56
|
+
`IgnoredGoFiles`, and every other inventoried Go file must appear exactly once in
|
|
57
|
+
its selected source lists. An exemption becomes stale if its file disappears or
|
|
58
|
+
becomes selected. New omissions, duplicate/contradictory native entries, malformed
|
|
59
|
+
or interrupted output remain incomplete. A whole package excluded from `./...`,
|
|
60
|
+
`testdata`, dot/underscore files and arbitrary unlisted files cannot be excused by
|
|
61
|
+
this policy unless native package evidence accounts for them as ignored Go files.
|
|
62
|
+
|
|
63
|
+
The same policy applies to vet, tests, race tests, Staticcheck and golangci-lint.
|
|
64
|
+
A file ignored by ordinary tests may be selected under `-race`; one shared
|
|
65
|
+
exemption then cannot pass both profiles. Do not exempt active code to suppress a
|
|
66
|
+
diagnostic. Real diagnostics/test failures still fail. Every tested package still
|
|
67
|
+
needs a passing test; exempted source supplies no test evidence. Formatting ignores
|
|
68
|
+
the scope policy and checks every inventoried Go file.
|
|
69
|
+
|
|
70
|
+
Detailed plans and reports retain the declarations as `goScope`; the original
|
|
71
|
+
`scope` remains the complete inventory. A passing native check covers that scope
|
|
72
|
+
minus its reconciled exemptions. Summary plans and reports expose
|
|
73
|
+
`goExcludedFileCount` without paths or reasons. This is the number declared, even
|
|
74
|
+
on an incomplete or unexecuted plan; it does not independently establish that the
|
|
75
|
+
exemptions reconciled. Other-platform and excluded build-tag behavior is unverified.
|
|
76
|
+
|
|
77
|
+
This policy does not introduce build-tag flags, cross-compilation, cross-target
|
|
78
|
+
test execution or a build matrix. Use separately prepared native target runs for
|
|
79
|
+
coverage outside the selected profile. Existing protected Go settings stay intact.
|
|
80
|
+
|
|
81
|
+
The source checkout separately adds [per-check build-tag profiles](GO-BUILD.md).
|
|
82
|
+
They use their own per-profile exclusions and cannot coexist with this module-wide
|
|
83
|
+
policy. That capability is in the unpublished alpha.5 candidate; alpha.4 retains the behavior above.
|
|
84
|
+
|
|
85
|
+
## Known-case replay
|
|
86
|
+
|
|
87
|
+
The [pinned public UUID replay](measurements/go-scope-policy-replay.json) uses the
|
|
88
|
+
same upstream revision as the alpha.2 adoption exercise, with an unreleased packed
|
|
89
|
+
CLI/library/MCP. Default scope remains inconclusive for vet/tests. Explicitly
|
|
90
|
+
acknowledging `node_js.go` makes those selected native checks pass while retaining
|
|
91
|
+
the skipped test and the existing formatting failure. An injected failing test
|
|
92
|
+
still fails through all three surfaces. The JavaScript-target file is unverified;
|
|
93
|
+
this is a known-case regression replay, not independent effectiveness evidence.
|
|
94
|
+
The upstream tracked files and original policy were preserved; temporary scope
|
|
95
|
+
policy and failing control were removed. The record identifies the tested tarball
|
|
96
|
+
and runtime source hashes; adding this record changes later package bytes.
|
|
97
|
+
|
|
98
|
+
The exact alpha.4 release candidate repeated this replay before publication; see
|
|
99
|
+
the [release record](measurements/release-alpha4.json). Its synthetic upgrade test
|
|
100
|
+
also confirms that rolling back to alpha.3 preserves the policy file but restores
|
|
101
|
+
strict scope accounting: a project relying on exclusions becomes incomplete.
|
|
102
|
+
|
|
29
103
|
## Staticcheck
|
|
30
104
|
|
|
31
105
|
Select `go.staticcheck` explicitly. It requires the installed `staticcheck`
|
package/docs/GOLANGCI-LINT.md
CHANGED
|
@@ -14,8 +14,8 @@ linters:
|
|
|
14
14
|
enable: [govet, staticcheck, unused]
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
Other linters, nonempty custom settings, formatters and Go
|
|
18
|
-
|
|
17
|
+
Other linters, nonempty custom settings, formatters and Go version/tag overrides
|
|
18
|
+
in `.golangci.*` are incomplete until separately verified. This is deliberately a
|
|
19
19
|
constrained profile, not support for every golangci-lint configuration. YAML
|
|
20
20
|
duplicates, unsupported tags and excessive aliases are rejected. Planning only
|
|
21
21
|
discovers the local config and source; parsing/native execution occurs with trust.
|
|
@@ -27,6 +27,9 @@ read-only module resolution, absolute JSON locations and no extra output files.
|
|
|
27
27
|
Output and native analyzer cache use a fresh temporary directory, removed after
|
|
28
28
|
normal completion. Existing project config and output paths are not rewritten.
|
|
29
29
|
Native Go source accounting follows [the shared contract](GO-SCOPE.md).
|
|
30
|
+
The alpha.5 source candidate adds [Checktrail build-tag profiles](GO-BUILD.md).
|
|
31
|
+
Those tags are passed to both package listing and the generated native config;
|
|
32
|
+
`.golangci.*` still cannot supply a separate `run.build-tags` setting.
|
|
30
33
|
|
|
31
34
|
Native `nolint` and Staticcheck ignore directives are currently unsupported and
|
|
32
35
|
make the check incomplete. The wrapper scans Go comment boundaries, including
|
package/docs/INSTALLATION.md
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
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.4` on
|
|
4
4
|
[npm](https://www.npmjs.com/package/@stsepelin/checktrail).
|
|
5
|
-
Use the exact version below. `next` points to alpha.
|
|
5
|
+
Use the exact version below. `next` points to alpha.4; `latest` still points to
|
|
6
6
|
alpha.1 because npm rejected its removal. Neither tag implies a stable release.
|
|
7
|
-
Alpha.
|
|
7
|
+
Alpha.4 includes [project setup and diagnosis](ONBOARDING.md), the
|
|
8
|
+
[TypeScript compatibility fix](TYPESCRIPT.md), and explicit [Go scope exclusions](GO-SCOPE.md).
|
|
8
9
|
|
|
9
10
|
Use Node.js 22 or newer on macOS or Linux. Windows execution is not supported.
|
|
10
11
|
Install each project's compilers, linters and test runners separately; Checktrail
|
|
@@ -18,7 +19,7 @@ Skills install separately from the engine and MCP configuration.
|
|
|
18
19
|
Install the exact version once:
|
|
19
20
|
|
|
20
21
|
```sh
|
|
21
|
-
npm install --global --ignore-scripts @stsepelin/checktrail@0.1.0-alpha.
|
|
22
|
+
npm install --global --ignore-scripts @stsepelin/checktrail@0.1.0-alpha.4
|
|
22
23
|
checktrail --version
|
|
23
24
|
```
|
|
24
25
|
|
package/docs/LANGUAGES.md
CHANGED
|
@@ -118,10 +118,19 @@ the optional skips allowed by a developer's general test suite.
|
|
|
118
118
|
|
|
119
119
|
[Public adoption measurements](PUBLIC-ADOPTION.md) record alpha.2 on pinned
|
|
120
120
|
JavaScript, TypeScript, Python, Go and PHP libraries. TypeScript 4.9.5 rejects
|
|
121
|
-
|
|
121
|
+
alpha.2's `--noCheck` option; that published artifact does not support this profile.
|
|
122
122
|
Go platform exclusions remain inconclusive even when native tests exit zero.
|
|
123
123
|
|
|
124
|
-
The
|
|
124
|
+
The alpha.3 [TypeScript compatibility fix](TYPESCRIPT.md) exercises plain
|
|
125
125
|
TypeScript 4.9.5 and 6.0.3 using native capability-aware arguments. Published
|
|
126
126
|
alpha.2 retains the recorded older-compiler limitation; Vue and solution-build
|
|
127
127
|
profiles retain their separately verified versions.
|
|
128
|
+
|
|
129
|
+
Alpha.4 adds a [Go scope policy](GO-SCOPE.md) for exact,
|
|
130
|
+
native-confirmed ignored files. It retains unverified exclusions in reports and
|
|
131
|
+
does not claim a build matrix or add custom build-tag execution. Published alpha.3
|
|
132
|
+
keeps the original strict exclusion behavior.
|
|
133
|
+
|
|
134
|
+
The alpha.5 source candidate adds [Go build-tag profiles](GO-BUILD.md) for
|
|
135
|
+
per-check tags and exclusions across vet, tests, race tests, Staticcheck and
|
|
136
|
+
golangci-lint. This is one configuration per selected check, not a target matrix.
|
|
@@ -46,6 +46,12 @@ extension handlers run. This was reproduced locally; `tasks/update` reaches its
|
|
|
46
46
|
handler in the same probe. Upstream tracks the method-registry collision in
|
|
47
47
|
[typescript-sdk#2598](https://github.com/modelcontextprotocol/typescript-sdk/issues/2598).
|
|
48
48
|
|
|
49
|
+
Rechecked on 2026-09-21: npm's latest server/client SDK versions are still 2.0.0,
|
|
50
|
+
the local probe still returns `-32601` for get/cancel and reaches update, and the
|
|
51
|
+
[proposed upstream fix](https://github.com/modelcontextprotocol/typescript-sdk/pull/2599)
|
|
52
|
+
remains open. The package retains its pinned SDK; no transport interception or
|
|
53
|
+
protocol workaround is introduced.
|
|
54
|
+
|
|
49
55
|
Run `npm run probe:mcp-tasks` from the source checkout to repeat the routing probe. Exit `2` means one or
|
|
50
56
|
more handlers were unreachable; exit `0` means routing works. A routing success
|
|
51
57
|
does not establish Tasks conformance. The probe is separate from the ordinary
|
package/docs/ONBOARDING.md
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
# Project setup
|
|
2
2
|
|
|
3
|
-
These commands are available
|
|
3
|
+
These commands are available since `0.1.0-alpha.2`. Follow the
|
|
4
4
|
[installation guide](INSTALLATION.md), with Node.js 22+ on macOS/Linux.
|
|
5
5
|
|
|
6
6
|
[Public adoption observations](PUBLIC-ADOPTION.md) show setup on real libraries,
|
|
7
7
|
including nested documentation projects, workflow prerequisites and older compiler
|
|
8
8
|
limitations. A narrowed policy can pass its selected checks while leaving other
|
|
9
|
-
repository checks unverified.
|
|
9
|
+
repository checks unverified. The [setup scope walkthrough](SETUP-SCOPES.md)
|
|
10
|
+
shows how to inspect those boundaries and interpret an intentionally narrowed policy.
|
|
10
11
|
|
|
11
12
|
## Preview and create a policy
|
|
12
13
|
|
package/docs/PUBLIC-ADOPTION.md
CHANGED
|
@@ -55,13 +55,17 @@ operations were checked against the project tree.
|
|
|
55
55
|
These are recorded adoption gaps, not fixes applied to the immutable alpha.2
|
|
56
56
|
package. No new engine version is published by this exercise.
|
|
57
57
|
|
|
58
|
-
##
|
|
58
|
+
## Release follow-ups
|
|
59
59
|
|
|
60
|
-
The [compiler compatibility fix](TYPESCRIPT.md)
|
|
61
|
-
with TypeScript 4.9.5 through
|
|
60
|
+
The [compiler compatibility fix](TYPESCRIPT.md) is published in alpha.3. Its exact
|
|
61
|
+
release artifact passes the known-case mitt replay with TypeScript 4.9.5 through
|
|
62
|
+
the CLI, library and MCP; see [release verification](RELEASE.md). The observations
|
|
62
63
|
above still describe published alpha.2; they are not replaced by the fixed source
|
|
63
|
-
checkout's results.
|
|
64
|
-
|
|
64
|
+
checkout's results. The [setup scope guide](SETUP-SCOPES.md) explains omitted workflows and documentation.
|
|
65
|
+
Alpha.4 publishes the [Go scope policy](GO-SCOPE.md) for exact native-confirmed
|
|
66
|
+
exclusions. Its [release record](measurements/release-alpha4.json) repeats the known
|
|
67
|
+
UUID case with the exact artifact later published; the excluded JavaScript target stays unverified.
|
|
68
|
+
A target matrix remains separate work.
|
|
65
69
|
|
|
66
70
|
## Reproduce
|
|
67
71
|
|