@systemfsoftware/arethetypeswrong-cli 2.0.0 → 3.0.0

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.
Files changed (2) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,74 @@
1
1
  # @systemfsoftware/arethetypeswrong-cli
2
2
 
3
+ ## 3.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - Collapse projection tags into the ports they projected
8
+
9
+ A `*ExecutorDeps` tag whose service type was indexed off other ports recorded which members
10
+ one operation happened to reach for. Exporting it turned internal composition into a surface
11
+ commitment: a consumer had to discover and provide an aggregator for each operation, where the
12
+ port it came from already served. The tags rode the `R` channel of exported signatures, so a
13
+ consumer met them only at their own call site.
14
+
15
+ Each was removed the way its evidence directed — no tag was renamed, and none was replaced:
16
+
17
+ - `AttwCliExecutorDeps`, `CheckPackageExecutorDeps` — deleted. Zero consumers, no Live layer;
18
+ callers already required the real capabilities directly.
19
+ - `HookDispatcherExecutorDeps` — was a 1:1 alias of `Scope.Scope`. Requiring `Scope` names the
20
+ same service.
21
+ - `InjectInstructionsExecutorDeps` — packed `FileSystem`, `Path` and `TomlLoader` with no logic.
22
+ Consumers require the three ports.
23
+ - `EffectVitestDeps` → `EffectVitestBindings`. Never a `Context.Tag`: a plain type alias already
24
+ passed as an ordinary parameter, so only the name misdescribed it. A stale api report that no
25
+ `api-extractor` regenerates was deleted with it.
26
+
27
+ A consumer providing a port instead of an aggregator provides no more than before, since a
28
+ service `{ a, b }` is assignable to a requirement `{ a }`.
29
+
30
+ ### Minor Changes
31
+
32
+ - cut over to effect v4 (4.0.0-rc.108): public surface derives from effect types; peers flip effect ^3→^4
33
+
34
+ ### Patch Changes
35
+
36
+ - Array types are spelled one way. `Array<T>` and `ReadonlyArray<T>` in emitted
37
+ declarations become `T[]` and `readonly T[]`, which the type checker cannot tell
38
+ apart: no exported type changes, only how it is written.
39
+
40
+ - An `.attw.json` in the working directory is read again. Rules listed under `ignoreRules`
41
+ were being discarded, so a package that had waived a resolution condition still failed on
42
+ it, and the only way to get a passing run was to repeat every rule on the command line
43
+
44
+ - Rename five mislabelled `*.workflow.ts` files to `*.kernel.ts`.
45
+
46
+ `computeExitCode`, `applyProfile`, `renderAnalysis`, `detectEntrypointResolutions`, and
47
+ `detectModuleKindDisagreement` each return a bare value — a decision instance, a string, an array, or
48
+ `undefined` — never an `Either`. None has a failure mode, so none is a workflow, and the suffix was
49
+ claiming a contract the files never held. The `UninhabitedError` marker in
50
+ `@systemfsoftware/effect-cell-types` prescribes exactly this repair: "this workflow cannot fail, so it
51
+ decides nothing; give it an error variant or move it to a `*.kernel.ts`". Wrapping their results in
52
+ `Either.right` to satisfy the constructor was rejected — that manufactures a success-only decision.
53
+
54
+ Neither package takes a dependency on the constructor. Both are listed as `TOOLING` in
55
+ `scripts/guards/check-lint-coverage.mjs` ("port of arethetypeswrong, tooling"), carry no
56
+ `oxlint.config.ts`, and the cell rules deliberately do not reach them.
57
+
58
+ The public symbols and the `export *` surface of `core/src/index.ts` are unchanged, so no consumer
59
+ import breaks. The bump is real rather than empty because both packages ship `dist/` built from these
60
+ sources: the emitted chunk filenames change, and `arethetypeswrong-cli` rebuilds its `bin` target at
61
+ pack time via `prepack`. Test files and one non-UTF-8 property test were repointed alongside.
62
+
63
+ - Packing for analysis (attw --pack) no longer runs the target package's pack lifecycle scripts: packing acquires the artifact for analysis instead of rebuilding it, so analyzing a package never mutates its build output.
64
+
65
+ - New version is published through npm trusted publishing, so it carries a provenance attestation you can verify.
66
+
67
+ - Build the `bin` target during install. Both CLIs point `bin` at gitignored build output, which pnpm's two bin-link passes skip when it is absent, leaving a fresh clone without the command and never retrying. A `prepare` script now builds the target between the passes; `arethetypeswrong-cli` drops its committed `bin/attw.mjs` launcher in favour of the same pattern.
68
+
69
+ - Updated dependencies:
70
+ - @systemfsoftware/arethetypeswrong-core@3.0.0
71
+
3
72
  ## 2.0.0
4
73
 
5
74
  ### Patch Changes
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "@systemfsoftware/arethetypeswrong-cli",
3
- "version": "2.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "A CLI tool for arethetypeswrong.github.io — owned and maintained by systemfsoftware",
5
5
  "author": "Ryan Lee <drdgvhbh@gmail.com>",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",
9
9
  "url": "https://github.com/systemfsoftware/systemfsoftware.git",
10
- "directory": "packages/arethetypeswrong/cli"
10
+ "directory": "packages/testing/type-testing/arethetypeswrong/cli"
11
11
  },
12
12
  "files": [
13
13
  "dist",
@@ -25,7 +25,7 @@
25
25
  "@effect/platform-node": "^4.0.0-rc.108",
26
26
  "@effect/platform-node-shared": "^4.0.0-rc.108",
27
27
  "effect": "4.0.0-rc.108",
28
- "@systemfsoftware/arethetypeswrong-core": "2.0.0"
28
+ "@systemfsoftware/arethetypeswrong-core": "3.0.0"
29
29
  },
30
30
  "devDependencies": {
31
31
  "@effect/vitest": "4.0.0-rc.108",
@@ -37,13 +37,13 @@
37
37
  "tsdown": "^0.22.14",
38
38
  "vite-tsconfig-paths": "^6.1.1",
39
39
  "vitest": "^4.1.10",
40
- "@systemfsoftware/effect-schema-law": "^0.7.0",
41
- "@systemfsoftware/effect-schema-vite": "^1.5.2",
40
+ "@systemfsoftware/effect-gherkin-spec": "^2.0.0",
41
+ "@systemfsoftware/effect-schema-law": "^0.8.0",
42
+ "@systemfsoftware/tsconfig": "^1.3.3",
43
+ "@systemfsoftware/effect-schema-vite": "^1.5.3",
44
+ "@systemfsoftware/vitest-config": "^0.1.0",
42
45
  "@systemfsoftware/oxlint-config": "^0.1.0",
43
- "@systemfsoftware/oxlint-plugin-effect-dmmf": "^2.0.0",
44
- "@systemfsoftware/effect-gherkin-spec": "^1.0.0",
45
- "@systemfsoftware/tsconfig": "^1.3.2",
46
- "@systemfsoftware/vitest-config": "^0.1.0"
46
+ "@systemfsoftware/oxlint-plugin-effect-dmmf": "^3.0.0"
47
47
  },
48
48
  "engines": {
49
49
  "node": ">=24"