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 +5 -5
- package/CHANGELOG.md +39 -0
- package/README.md +5 -4
- package/SECURITY.md +26 -0
- package/package.json +15 -1
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.
|
|
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.
|
|
74
|
-
"version": "1.
|
|
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.
|
|
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** (
|
|
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.
|
|
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.
|
|
80
|
-
"version": "1.
|
|
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
|
|
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.
|
|
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",
|