@geonosis/doctor 2.0.0 → 2.2.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.
- package/README.md +9 -7
- package/dist/{chunk-SMCRXSH5.js → chunk-DR5P4QYC.js} +672 -490
- package/dist/doctor-cli.js +127 -4
- package/dist/index.d.ts +42 -4
- package/dist/index.js +9 -1
- package/package.json +5 -2
package/README.md
CHANGED
|
@@ -24,7 +24,7 @@ geonosis-doctor [--root <dir>] [--json] [--strict] [--baseline-against [<ref>]]
|
|
|
24
24
|
|
|
25
25
|
## One check, asked alone
|
|
26
26
|
|
|
27
|
-
`geonosis-doctor --only loaded` runs that check and no other, in well under a second: a manifest read and a resolution per config. It exists because the doctor subsumed a consumer's own declared-vs-loaded script that lived in a 2.5 s local gate, and eleven seconds for seven checks cannot live there — so the question that catches a stale nested copy earliest had fallen out of the gate that runs most often (
|
|
27
|
+
`geonosis-doctor --only loaded` runs that check and no other, in well under a second: a manifest read and a resolution per config. It exists because the doctor subsumed a consumer's own declared-vs-loaded script that lived in a 2.5 s local gate, and eleven seconds for seven checks cannot live there — so the question that catches a stale nested copy earliest had fallen out of the gate that runs most often (measured in a consumer, 2026-08-30: a per-workspace `bun add` left one workspace loading 1.0.0 against configs written for 1.1.0, and the script about to be deleted caught it). `--only loaded,runner` takes a list; a name the doctor does not have is refused with the seven it does. A `loaded` FAIL now says the remedy: remove the nested copies and reinstall.
|
|
28
28
|
|
|
29
29
|
## The seven checks
|
|
30
30
|
|
|
@@ -195,8 +195,10 @@ options, and asking one config's fixtures to answer for another's would report f
|
|
|
195
195
|
#### The engine a rule presumes (#159)
|
|
196
196
|
|
|
197
197
|
A rule that reaches ONE engine carries it in its own metadata — `presumes: { engine, packages }` —
|
|
198
|
-
and this asks the
|
|
199
|
-
|
|
198
|
+
and this asks every manifest the config governs — its own, the ones above it up to the root, and the
|
|
199
|
+
workspaces underneath — whether any of those packages is declared, naming the ones it read. A
|
|
200
|
+
backend one directory BELOW a root config declares the engine for the rules that config enables over
|
|
201
|
+
it (#227). during.day ran three Medusa rules at `error` over sagaflow trees: the default step
|
|
200
202
|
factory is `createStep`, sagaflow has none, and the possible findings were zero. Enabled-with-no-
|
|
201
203
|
engine and clean are the identical green.
|
|
202
204
|
|
|
@@ -244,8 +246,8 @@ naming bun. It used to be warned with vitest's sentence — eight lines of it in
|
|
|
244
246
|
report, each blaming a runner the check had not read, which is how a reader learns to skim the
|
|
245
247
|
section and miss the vitest lines beside them that are true.
|
|
246
248
|
|
|
247
|
-
A workspace whose test script runs a runner over **zero test files** is a SKIP, not a warning:
|
|
248
|
-
|
|
249
|
+
A workspace whose test script runs a runner over **zero test files** is a SKIP, not a warning: one
|
|
250
|
+
consumer has a config-only workspace that runs `vitest run` over nothing, so there is no
|
|
249
251
|
result for an exit code to be wrong about. The message says what was counted.
|
|
250
252
|
|
|
251
253
|
The message names the runner it read. What it does not do is see through a wrapper: a script that
|
|
@@ -280,8 +282,8 @@ The other four ask whether a gate measures what it names. This one asks whether
|
|
|
280
282
|
| `publicHoistPattern` | FAIL / SKIP | a pattern in `pnpm-workspace.yaml` with no root `node_modules` link for a workspace package it matches. pnpm dropped one during an **unrelated** `add`, then answered "Already up to date" to every install afterwards over a clean `git status` — the tree was fixed only by deleting `.modules.yaml` and `.pnpm-workspace-state-v1.json`, which the line carries verbatim. Only workspace packages are judged, because one exists on disk by construction and a missing link for it cannot be "the install never ran"; the root package is never asked about, since no package manager puts a repo's root inside its own `node_modules`. A pattern matching no workspace package is SKIP, never a pass |
|
|
281
283
|
| `@geonosis/observability` | WARN | it is declared in a manifest here and **no source file imports it** — installed is not composed. The kit ships the sink adapter and the reference consumer sent production errors nowhere, because nothing at its composition root ever built one; from outside the process that reads exactly like a project with nothing to report (#165). No line at all in a repo that never installed it |
|
|
282
284
|
| an `allowBuilds` entry | WARN | a platform-split package allowed by ONE platform name. pnpm 11.5.1 writes this file itself when it refuses a build script, and what it writes is the platform of the machine that ran the install — so every other platform refuses the install by the name that is missing, on somebody else's machine (#188, measured here). How many a family publishes is the registry's answer, so the line names the family and the shape rather than a count it would have to guess |
|
|
283
|
-
| a workspace's `lint` script | WARN / SKIP | the file set the script covers, against the one a committed hook lints.
|
|
284
|
-
| the law | WARN / SKIP | its measured length against `geonosis.json` → `law.maxLines`. **SKIP when the repo declares no ceiling** —
|
|
285
|
+
| a workspace's `lint` script | WARN / SKIP | the file set the script covers, against the one a committed hook lints. One consumer's app script covered its source directory and not its test one, so the pre-commit hook — which lints whatever is STAGED — was the first door ever to read a moved test file, and it found violations the package gate had never seen (#172). The line names the globs left to the hook alone. SKIP when no committed hook lints staged files: there is no second file set to be narrower than |
|
|
286
|
+
| the law | WARN / SKIP | its measured length against `geonosis.json` → `law.maxLines`. **SKIP when the repo declares no ceiling** — a consumer read "1,104 lines against a ceiling of 200" for a number it never chose, which is unactionable in both directions. The length is still printed, because that is the number a repo declares against |
|
|
285
287
|
| `.claude/settings.json` | WARN | nothing under `enabledPlugins` enables the kit's plugin, so the gates run and the method does not (D-041). The **user-scope** `~/.claude/settings.json` is read too and acknowledged as "installed elsewhere — not this repo's to declare": both source repos got this WARN while the plugin was installed machine-wide. The key is read, never the word `geonosis` appearing somewhere in the file |
|
|
286
288
|
| `geonosis.json` blocks | WARN | a block whose package **no manifest declares** — nothing reads it, and a stale `node_modules` copy is named as what a previous install left behind; a block whose package is declared and does not resolve — run the install; or a **declared** package with no block, running on defaults nobody chose |
|
|
287
289
|
|