stapes-adsa 1.1.0 → 1.1.2

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/AGENTS.md CHANGED
@@ -55,7 +55,7 @@ only our marker block, leaves Husky / lefthook / etc. intact.
55
55
  Default (human):
56
56
 
57
57
  ```
58
- stapes-adsa@1.0.0
58
+ stapes-adsa@1.1.2
59
59
 
60
60
  ✗ fast-path-with-io 1 finding(s)
61
61
  src/auth/verify.ts:12:1
@@ -70,8 +70,8 @@ stapes-adsa@1.0.0
70
70
  ```json
71
71
  {
72
72
  "startedAt": "2026-09-01T10:49:45.195Z",
73
- "tool": "stapes-adsa@1.0.0",
74
- "version": "1.0.0",
73
+ "tool": "stapes-adsa@1.1.2",
74
+ "version": "1.1.2",
75
75
  "exitCode": 1,
76
76
  "checkCount": 5,
77
77
  "failed": 1,
@@ -166,7 +166,7 @@ The other three checks (`fast-path-with-io`, `decision-router`, `log-schema`) ar
166
166
  }
167
167
  ```
168
168
 
169
- ## Known limitations (v1.0.0)
169
+ ## Known limitations (v1.1.2)
170
170
 
171
171
  - TypeScript only. No Python, Go, Rust, Java support.
172
172
  - No per-check config files. The five checks have fixed heuristics.
@@ -202,7 +202,7 @@ Built by stapes.
202
202
  <!-- gitnexus:start -->
203
203
  # GitNexus — Code Intelligence
204
204
 
205
- This project is indexed by GitNexus as **adsa** (457 symbols, 489 relationships, 0 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
205
+ This project is indexed by GitNexus as **adsa** (492 symbols, 528 relationships, 0 execution flows). Use the GitNexus MCP tools to understand code, assess impact, and navigate safely.
206
206
 
207
207
  > If any GitNexus tool warns the index is stale, run `npx gitnexus analyze` in terminal first.
208
208
 
package/CHANGELOG.md CHANGED
@@ -5,6 +5,45 @@ All notable changes to `stapes-adsa` are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.1.2] - 2026-11-08
9
+
10
+ ### Fixed
11
+
12
+ - **The documented import path now resolves.** The README tells users to
13
+ `import { withAdsaLogging } from "stapes-adsa/lib/instrument"`. That
14
+ import failed with `ERR_MODULE_NOT_FOUND` in every consumer install
15
+ from v1.0.0 through v1.1.1. The package published `dist/` but declared
16
+ no `exports` map, so the documented path resolved to nothing.
17
+ The package now declares an `exports` map. `stapes-adsa/lib/instrument`
18
+ and the package root `stapes-adsa` both resolve to the helper. The deep
19
+ path `stapes-adsa/dist/lib/instrument.js` keeps working, so no upgrade
20
+ breaks an existing import.
21
+
22
+ ### Documentation
23
+
24
+ - The README and AGENTS.md sample output names the current version.
25
+
26
+ ### Tests
27
+
28
+ - `test/package-exports.test.ts` packs the package, installs the tarball
29
+ into a scratch project, and imports it through each published path.
30
+ The defect that shipped through three releases is now a failing build.
31
+ - `test/doc-version.test.ts` fails the build when a version bump leaves
32
+ the documentation behind.
33
+
34
+ ## [1.1.1] - 2026-11-08
35
+
36
+ ### Fixed
37
+
38
+ - The README and AGENTS.md sample output printed `stapes-adsa@1.0.0`
39
+ after v1.1.0 shipped. The samples now print the current version.
40
+
41
+ ### Documentation
42
+
43
+ - `SECURITY.md` now explains the transitive `minimatch` advisory that
44
+ `npm audit` reports in a consumer's tree, why the linter cannot reach
45
+ it, and why it cannot be cleared by upgrading `ts-morph`.
46
+
8
47
  ## [1.1.0] - 2026-11-08
9
48
 
10
49
  ### Changed
package/README.md CHANGED
@@ -52,7 +52,7 @@ commit. Warnings print and let the commit pass.
52
52
 
53
53
  ```text
54
54
  $ npx stapes-adsa
55
- stapes-adsa@1.0.0
55
+ stapes-adsa@1.1.2
56
56
 
57
57
  ✗ fast-path-with-io 1 finding(s)
58
58
  src/auth/verify.ts:12:1
@@ -76,8 +76,8 @@ npx stapes-adsa --json | jq '.exitCode, .findings[].message'
76
76
  ```json
77
77
  {
78
78
  "startedAt": "2026-09-01T10:49:45.195Z",
79
- "tool": "stapes-adsa@1.0.0",
80
- "version": "1.0.0",
79
+ "tool": "stapes-adsa@1.1.2",
80
+ "version": "1.1.2",
81
81
  "exitCode": 1,
82
82
  "checkCount": 5,
83
83
  "failed": 1,
@@ -241,7 +241,8 @@ during `--fix-confirm`.
241
241
  ## What we measured
242
242
 
243
243
  On 2026-09-01 we ran `stapes-adsa@1.0.0` against two production TypeScript services
244
- before announcing it. Both repos had not adopted ADSA yet.
244
+ before announcing it. The numbers below are from that run. Both repos had not
245
+ adopted ADSA yet.
245
246
 
246
247
  | Repo | .ts files | LoC | Findings | Density |
247
248
  |---|---|---|---|---|
package/SECURITY.md CHANGED
@@ -33,6 +33,32 @@ We fix issues because they're bugs, not because we're buying silence.
33
33
  If you're not sure whether something is a security issue, report it.
34
34
  We'll triage and let you know.
35
35
 
36
+ ## Known transitive advisory
37
+
38
+ `npm audit` in a project that installs `stapes-adsa` reports four
39
+ moderate findings. They are all one issue, not four.
40
+
41
+ The chain is `stapes-adsa` → `ts-morph` → `@ts-morph/common` → `minimatch`.
42
+ The advisory is [GHSA-g3hv-75wg-m249](https://github.com/advisories/GHSA-g3hv-75wg-m249),
43
+ a denial of service through glob-part amplification, and it affects
44
+ `minimatch` 7.0.0 through 11.0.0.
45
+
46
+ `@ts-morph/common` declares `minimatch: ^10.0.1`. The 10.x line has no
47
+ fixed release, so the advisory cannot be cleared by upgrading
48
+ `ts-morph`. The fix landed in `minimatch` 11.0.1.
49
+
50
+ The advisory is not reachable through the linter. `stapes-adsa` walks the
51
+ file tree itself with `readdirSync` and calls `addSourceFileAtPath` with
52
+ one explicit path. It never calls `addSourceFilesAtPaths` and never
53
+ passes a glob pattern. The `minimatch` code in `@ts-morph/common` is
54
+ reachable only through `matchGlobs`, which the linter never enters. A
55
+ traced run of `addSourceFileAtPath` makes zero `minimatch` calls.
56
+
57
+ This repository pins `minimatch` to 11.0.5 through an `overrides` entry,
58
+ which keeps the repository's own tree clean. An `overrides` entry does
59
+ not apply to a consumer's install, so the advisory remains visible in
60
+ consumer `npm audit` output until `@ts-morph/common` widens its range.
61
+
36
62
  ## Why this tool touches sensitive data
37
63
 
38
64
  `stapes-adsa` reads TypeScript source files and inspects their AST to
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "stapes-adsa",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "AST-based ADSA (Adaptive Dual-System Architecture) linter for TypeScript. Flags slow paths without logging, fast paths doing I/O, decision points without routing, async boundaries missing the adsa_path log line, and invalid {adsa_path, adsa_area} shapes. Auto-fix safe insertions. Install as pre-commit hook. Stable --json for AI agents. Zero telemetry. MIT.",
5
5
  "license": "MIT",
6
6
  "author": "stapesco <github@stapes.co.za>",
@@ -34,6 +34,20 @@
34
34
  "bin": {
35
35
  "stapes-adsa": "dist/cli.js"
36
36
  },
37
+ "main": "./dist/lib/instrument.js",
38
+ "types": "./dist/lib/instrument.d.ts",
39
+ "exports": {
40
+ ".": {
41
+ "types": "./dist/lib/instrument.d.ts",
42
+ "import": "./dist/lib/instrument.js"
43
+ },
44
+ "./lib/instrument": {
45
+ "types": "./dist/lib/instrument.d.ts",
46
+ "import": "./dist/lib/instrument.js"
47
+ },
48
+ "./dist/*": "./dist/*",
49
+ "./package.json": "./package.json"
50
+ },
37
51
  "files": [
38
52
  "dist",
39
53
  "README.md",