@stsepelin/checktrail 0.1.0-alpha.1 → 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.
@@ -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 is published and all hosted jobs passed at `52ba415`. The preview candidate still 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`. | Concrete preview release authorization and verification. 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,13 @@ 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 initial commit `60131d6` are available on `main`.
47
- All 13 hosted jobs passed at `52ba415`, recorded in `NATIVE-CI.md`.
48
- That result identifies the source baseline, not an unpublished preview package. Package publishing, GitHub releases and registry
49
- registration have not been performed. The repository's explicit-action
50
- requirements still apply. `RELEASE.md` defines the concrete
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.
60
+ `RELEASE.md` defines the concrete
51
61
  candidate checks and the authorization sequence; a local green run does not
52
62
  replace external acceptance.
53
63
 
@@ -58,7 +58,9 @@ pass by a parser. Source changes during execution invalidate a green result.
58
58
 
59
59
  Use bounded process output and timeouts, terminate the process group on supported
60
60
  POSIX hosts, and propagate cancellation. No automatic dependency installation,
61
- source rewriting, infrastructure startup, deployment or repository mutation.
61
+ source rewriting, infrastructure startup or deployment. The explicit `init --write`
62
+ setup command can create a new `checktrail.json`; it preserves existing
63
+ configuration and grants no execution. See [ONBOARDING.md](ONBOARDING.md).
62
64
  Executed project code still has the process user's privileges; this is not a
63
65
  sandbox. Tests may modify files or access networks and must be trusted accordingly.
64
66
 
@@ -1,20 +1,24 @@
1
1
  # Install the preview
2
2
 
3
- The first preview version is `0.1.0-alpha.1`, intended for npm's `next` tag.
4
- Check the [npm package page](https://www.npmjs.com/package/@stsepelin/checktrail)
5
- for availability. The registry commands below require that version to be published;
6
- before publication, use the source checkout or a reviewed local tarball.
3
+ The published preview is `0.1.0-alpha.2` on
4
+ [npm](https://www.npmjs.com/package/@stsepelin/checktrail).
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).
7
8
 
8
9
  Use Node.js 22 or newer on macOS or Linux. Windows execution is not supported.
9
10
  Install each project's compilers, linters and test runners separately; Checktrail
10
11
  does not download them. Missing tools produce incomplete results.
11
12
 
13
+ For agent workflows, see [installing skills with `npx skills`](SKILLS.md).
14
+ Skills install separately from the engine and MCP configuration.
15
+
12
16
  ## CLI
13
17
 
14
18
  Install the exact version once:
15
19
 
16
20
  ```sh
17
- 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
18
22
  checktrail --version
19
23
  ```
20
24
 
@@ -84,7 +88,7 @@ Validation uses asynchronous calls and supports cancellation. Standard MCP Tasks
84
88
  is not advertised; the durable worker is a separate library API. See
85
89
  [client coverage](CLIENTS.md) and [MCP compatibility](MCP-COMPATIBILITY.md).
86
90
 
87
- ## Before npm publication
91
+ ## Source checkout or unpublished candidate
88
92
 
89
93
  Build the public source checkout:
90
94
 
package/docs/LANGUAGES.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # Language and ecosystem roadmap
2
2
 
3
+ The [setup guide](ONBOARDING.md) describes conservative
4
+ per-language configuration proposals and static tool diagnosis. Setup does not
5
+ extend the execution capabilities or native evidence listed below.
6
+
3
7
  Capability levels are discovery, planning, execution, structured evidence,
4
8
  semantic rules, and integration validation. None implies the next. This file's
5
9
  initial scope column describes the experimental implementation. Node, Python,
@@ -111,3 +115,13 @@ skip, so its aggregate pass count is not evidence for every native profile.
111
115
  The prepared CI language profiles and native container helpers require exact
112
116
  regression names through `NATIVE-CI.md`. Their required results are separate from
113
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,
@@ -0,0 +1,133 @@
1
+ # Project setup
2
+
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.
10
+
11
+ ## Preview and create a policy
12
+
13
+ ```sh
14
+ checktrail init --root "$PWD"
15
+ checktrail init --root "$PWD" --write
16
+ checktrail doctor --root "$PWD" --detailed
17
+ ```
18
+
19
+ `init` returns JSON with a proposed `configuration`. The preview changes nothing.
20
+ `--write` creates `checktrail.json` only when every discovered ecosystem has a
21
+ selected supported check, publishing complete contents without replacing an
22
+ existing file. A valid existing policy returns `preserved`, retaining its bytes,
23
+ packs, environment requirements and workspace graph. Invalid policies, directories
24
+ and symlinks are errors and remain untouched. There is no overwrite option.
25
+
26
+ The preview includes relative project paths, groups ecosystems sharing a directory
27
+ and preserves nested project boundaries. It does not infer workspace dependencies,
28
+ grant execution, install tools, run scripts or import project code. Use `doctor`
29
+ and the detailed plan to inspect prerequisites before running validation.
30
+
31
+ | Ecosystem | Initial selection |
32
+ | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
33
+ | JavaScript / TypeScript | Exact test scripts `node --test`, `vitest run`, `jest`, or `playwright test`; other commands need selection. Linters and type checks require explicit selection. |
34
+ | Python | Explicit runner/check selection required; a manifest cannot identify a test framework. |
35
+ | Go | Existing format, vet and test defaults. |
36
+ | PHP | Syntax only; tests and analysis require explicit selection. |
37
+ | Rust, Java, C#, Ruby, Swift, C/C++ | Existing bounded adapter defaults; profiles, tools and dependencies still need preparation. |
38
+ | Infrastructure | GitHub Actions checking where applicable; other infrastructure remains an unresolved gap. |
39
+
40
+ `needs-selection` exits `2`, returns no partial configuration and writes nothing.
41
+ Its `unresolved` entries list paths, ecosystems and registered choices; those
42
+ choices do not promise tools are installed or applicable to every source file.
43
+ Repeated `--check PATH#CHECK_ID` arguments select the complete check set for a path:
44
+
45
+ ```sh
46
+ checktrail init --root "$PWD" --check '.#python.pytest' --check '.#python.ruff'
47
+ checktrail init --root "$PWD" --check '.#python.pytest' --check '.#python.ruff' --write
48
+ ```
49
+
50
+ Paths must exactly match discovered roots. For a polyglot directory, include
51
+ checks for every discovered ecosystem there. Unmentioned paths keep defaults.
52
+ Unknown and duplicate IDs are errors. Setup never silently drops unsupported
53
+ ecosystems. External adapters and private overlays are supported by planning and
54
+ diagnosis but are not generated by `init`.
55
+
56
+ ## Diagnose setup without execution
57
+
58
+ `doctor` reuses the planner. It reports invalid configuration, unavailable checks,
59
+ missing/non-executable programs, invalid JS tool metadata, missing required
60
+ environment, empty plans, unsupported platforms and ecosystems omitted by policy.
61
+ An intentionally narrowed policy can therefore produce `unselected-project`.
62
+
63
+ Executable checks use the effective PATH and file permissions. Diagnosis never
64
+ runs version commands, imports modules, boots frameworks or runs tests. Prepare
65
+ native tools and activate Python environments on the PATH used for validation.
66
+
67
+ Output always includes `validationPerformed: false` and unverified runtime
68
+ properties. `no-static-blockers` exits `0`; `attention-required` exits `2`.
69
+ Neither means validation passed. Tool compatibility, importable modules, services
70
+ and execution results still need a trusted `run`.
71
+
72
+ Summary output omits paths and raw errors. `--detailed` adds paths and diagnostic
73
+ details that can contain absolute paths. Supported options include
74
+ `--policy-overlay`, pinned `--adapter` references and `--allow-env NAME`.
75
+ Environment values are not printed. Git selection and execution flags are rejected.
76
+
77
+ ## Generate MCP configuration
78
+
79
+ ```sh
80
+ checktrail mcp-config --root "$PWD" --client codex
81
+ checktrail mcp-config --root "$PWD" --client claude-code
82
+ checktrail mcp-config --root "$PWD" --client claude-desktop
83
+ checktrail mcp-config --root "$PWD" --client cursor
84
+ checktrail mcp-config --root "$PWD" --client vscode
85
+ ```
86
+
87
+ Output is JSON containing `format` and a `configuration` string. Merge the decoded
88
+ string's server entry into the appropriate client configuration. The generator
89
+ never opens or overwrites client files. Do not redirect the JSON envelope over
90
+ an existing configuration.
91
+
92
+ | Client | Generated format / location |
93
+ | -------------- | ------------------------------------------------------------- |
94
+ | Codex | TOML `mcp_servers.checktrail`; Codex `config.toml`. |
95
+ | Claude Code | JSON `mcpServers.checktrail`; project `.mcp.json`. |
96
+ | Claude Desktop | JSON `mcpServers.checktrail`; developer MCP configuration. |
97
+ | Cursor | JSON `mcpServers.checktrail`; `.cursor/mcp.json`. |
98
+ | VS Code | JSON `servers.checktrail`, `type: stdio`; `.vscode/mcp.json`. |
99
+
100
+ Snippets capture the canonical absolute root and pin the generating engine version
101
+ in `npx --yes --ignore-scripts @stsepelin/checktrail@VERSION serve`. Execution
102
+ and detailed output remain disabled; client trust settings still apply. Roots
103
+ containing `${` are rejected because client interpolation could change the root.
104
+
105
+ Generation needs no network; starting npx may download the pinned package. The
106
+ version must be published first. For an unpublished candidate, use its installed
107
+ absolute `checktrail` executable with `serve --root /absolute/project` instead.
108
+ After reviewing an update, regenerate/merge the entry and restart the client.
109
+ Updating a global CLI does not change an npx version pin.
110
+
111
+ Formats follow official [Codex](https://developers.openai.com/codex/mcp/),
112
+ [Claude Code](https://code.claude.com/docs/en/mcp),
113
+ [Cursor](https://cursor.com/docs/mcp), and
114
+ [VS Code](https://code.visualstudio.com/docs/agent-customization/mcp-servers)
115
+ documentation. Generation is not proof of a client connection; [CLIENTS.md](CLIENTS.md)
116
+ records tested application profiles and limits.
117
+
118
+ ## Upgrade and rollback verification
119
+
120
+ Build and prepare the npm cache for both reviewed artifacts, then run:
121
+
122
+ ```sh
123
+ node scripts/verify-package-upgrade.mjs /absolute/baseline.tgz /absolute/candidate.tgz
124
+ ```
125
+
126
+ The verifier installs baseline → candidate → baseline into one isolated consumer
127
+ offline with lifecycle scripts disabled. Each stage checks the CLI version,
128
+ planning, a native Node test, MCP planning and denied untrusted execution. Project
129
+ source, policy and existing client configuration must remain byte-identical.
130
+ The candidate must preserve the policy through `init --write`, diagnose it, and
131
+ import the baseline report through SARIF export. Output records artifact hashes
132
+ and measured stages. This exercises a synthetic Node workflow, not migration of
133
+ every language/tool profile.
@@ -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,12 +1,42 @@
1
1
  # Release preparation
2
2
 
3
3
  The source is public at [stsepelin/checktrail](https://github.com/stsepelin/checktrail);
4
- the first preview is `0.1.0-alpha.1`. `server.json` describes the
5
- intended `io.github.stsepelin/checktrail` MCP registry identity and the matching
6
- `@stsepelin/checktrail` npm package. The npm and registry names are proposed
7
- metadata, not evidence of a published package or registry entry. Package publishing
8
- is configured for public access on npm's `next` tag. No credentials or automatic
9
- publishing workflow are stored in this repository.
4
+ `@stsepelin/checktrail@0.1.0-alpha.2` is published on npm. Its downloaded artifact
5
+ matched the reviewed tarball with SHA-256
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.
17
+
18
+ Publication is configured for npm's `next` tag. After alpha.1 publication, the
19
+ registry assigned both `next` and `latest` to that preview; attempts to remove
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.
10
40
 
11
41
  ## Prepared artifacts
12
42
 
@@ -24,8 +54,8 @@ publishing workflow are stored in this repository.
24
54
  loads the installed metadata and verifies its actual startup command.
25
55
  - CI definitions cover the host suite and prepared native profiles. Local
26
56
  containers and package checks are evidence only for the environments actually
27
- exercised. All 13 hosted jobs passed at source baseline `52ba415`; the preview
28
- 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
29
59
  Codex direct app-server profiles have fresh-install evidence in `CLIENTS.md`.
30
60
 
31
61
  The metadata follows the official registry
@@ -61,7 +91,7 @@ After explicit approval and npm authentication for the `@stsepelin` scope, publi
61
91
  the approved file, not a newly packed working tree:
62
92
 
63
93
  ```sh
64
- npm publish /absolute/path/stsepelin-checktrail-0.1.0-alpha.1.tgz \
94
+ npm publish /absolute/path/stsepelin-checktrail-0.1.0-alpha.3.tgz \
65
95
  --tag next --access public --ignore-scripts --registry=https://registry.npmjs.org
66
96
  ```
67
97
 
@@ -93,6 +123,8 @@ GitHub private vulnerability reporting is enabled. Use the channel linked in
93
123
  Run the corresponding native verification helpers for every advertised profile.
94
124
  Record actual tool/platform results and explicit skips. Repeat registry schema
95
125
  validation against its pinned bytes.
126
+ Run `scripts/verify-package-upgrade.mjs` with the reviewed previous and candidate
127
+ tarballs to verify offline upgrade, policy/report compatibility and rollback.
96
128
  3. Inspect the exact tarball and its SHA-256, its source revision, dependency/notice
97
129
  report, package allowlist, public examples and documentation. The smoke helper
98
130
  compares repeated packing of the same checkout and tests a fresh offline install;
package/docs/SKILLS.md ADDED
@@ -0,0 +1,123 @@
1
+ # Install agent skills with npx skills
2
+
3
+ Checktrail provides portable workflows for setup, validation and review:
4
+
5
+ | Skill | Use it for |
6
+ | --------------------- | ------------------------------------------------------------------------------ |
7
+ | `checktrail-setup` | Configure project roots, select supported language checks and connect MCP |
8
+ | `checktrail-validate` | Run authorized checks and distinguish passed, failed and incomplete evidence |
9
+ | `checktrail-review` | Review code and test adequacy using validation evidence and advisory questions |
10
+
11
+ Each skill is self-contained in `skills/<name>/SKILL.md` and follows the
12
+ [Agent Skills format](https://agentskills.io/specification). The
13
+ [Vercel skills CLI](https://github.com/vercel-labs/skills) installs these folders
14
+ from GitHub. No Checktrail plugin or separate skills registry registration is
15
+ required for installation by repository URL.
16
+
17
+ ## Install
18
+
19
+ These GitHub commands require the `skills/` directory to be present on the public
20
+ repository's default branch. For an unpublished checkout, use the local command
21
+ below. Listing the remote source first verifies what is available:
22
+
23
+ ```sh
24
+ npx skills add stsepelin/checktrail --list
25
+ npx skills add stsepelin/checktrail
26
+ ```
27
+
28
+ The interactive installer lets you choose skills and target agents. For an
29
+ explicit project installation, run from the repository where you want to use
30
+ Checktrail:
31
+
32
+ ```sh
33
+ npx skills add stsepelin/checktrail \
34
+ --skill checktrail-setup checktrail-validate checktrail-review \
35
+ --agent codex claude-code cursor
36
+ ```
37
+
38
+ Choose only the agents you use. Add `--global` for a personal installation shared
39
+ across projects, or `--yes` when deliberately skipping installer prompts. The
40
+ default installation uses project directories; it does not configure an MCP server.
41
+ Use `--copy` if independent copies are preferable to the installer's default links.
42
+
43
+ To install from a local checkout before pushing, substitute its absolute path:
44
+
45
+ ```sh
46
+ npx skills add /absolute/path/to/checktrail --skill checktrail-validate --agent codex
47
+ ```
48
+
49
+ The CLI's agent target names are installer options, not evidence that Checktrail
50
+ has been tested end-to-end in every editor. See [client coverage](CLIENTS.md).
51
+ Reload skills or start a new session as required by the selected agent. Example
52
+ requests are "Set up Checktrail for this repository", "Validate these changes
53
+ with Checktrail", and "Review this diff using Checktrail evidence".
54
+
55
+ ## Install the engine separately
56
+
57
+ `npx skills` installs instructions. It does not install the npm engine, native
58
+ language tools, an MCP server, or execution permissions. The skills support an
59
+ existing MCP connection or the CLI, including the published preview:
60
+
61
+ ```sh
62
+ npx --yes --ignore-scripts @stsepelin/checktrail@0.1.0-alpha.1 plan --root /absolute/project
63
+ ```
64
+
65
+ Use Node.js 22+ on macOS or Linux. See [installation](INSTALLATION.md) for persistent
66
+ CLI installation, MCP registration and operator-controlled execution. Skills do
67
+ not expand native language coverage, grant trust, or replace required CI checks.
68
+
69
+ ## Update and remove
70
+
71
+ For GitHub-installed project skills, update just Checktrail's workflows:
72
+
73
+ ```sh
74
+ npx skills update checktrail-setup checktrail-validate checktrail-review --project
75
+ ```
76
+
77
+ Use `--global` instead of `--project` for a global installation. Updates replace
78
+ installed instructions; keep project-specific policy in your project's own files.
79
+ Retain and review the project installation's `skills-lock.json` and file changes.
80
+ For local-path installations, re-run `skills add` against the updated checkout.
81
+
82
+ The installer version used for local verification is `skills@1.7.0`. It aliases
83
+ `skills check` to `skills update`; do not use `check` as a read-only update probe.
84
+ Use `npx skills list` to inspect installed skills. Pin the installer itself with
85
+ `npx skills@1.7.0` when reproducing the installation checks.
86
+
87
+ Skill updates and engine updates are separate. The skills declare the Checktrail
88
+ version they target. To update the engine, deliberately select a compatible npm
89
+ version and restart the MCP process. Updating skills never changes its root,
90
+ execution grant or output disclosure settings. For a reproducible skill revision,
91
+ install from a reviewed GitHub tree URL containing a commit SHA and the selected
92
+ skill path; re-add that same revision to roll back. Do not treat following a branch
93
+ as an immutable pin.
94
+
95
+ Remove the project skills with:
96
+
97
+ ```sh
98
+ npx skills remove checktrail-setup checktrail-validate checktrail-review
99
+ ```
100
+
101
+ Add `--global` for a global removal. This removes skills, not the separately
102
+ installed engine or MCP configuration.
103
+
104
+ ## Verification boundaries
105
+
106
+ Local checks exercise discovery, selective installation, copy/link destinations,
107
+ file integrity, reinstallation from an updated local source and removal in
108
+ temporary projects. They do not modify personal agent installations. Skill format
109
+ validation does not prove model behavior or improved review quality. Installation
110
+ from the public GitHub source and remote update verification require the changes
111
+ to be pushed; a local installation is not evidence of either.
112
+
113
+ Reproduce the installation checks from the Checktrail checkout:
114
+
115
+ ```sh
116
+ npm install --prefix .checktrail/skills-tools --ignore-scripts --no-audit --no-fund \
117
+ --package-lock=false --save-exact skills@1.7.0
118
+ node scripts/verify-skills-install.mjs .checktrail/skills-tools/node_modules/skills/bin/cli.mjs
119
+ ```
120
+
121
+ The helper uses temporary project and installer-state directories, exercises the
122
+ real installer, and removes its fixtures afterward. It does not run a model,
123
+ register MCP, install global skills, or invoke remote skill updates.