@descryy/mcp 0.6.0 → 0.7.1
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/dist/action-handshake.d.ts +8 -75
- package/dist/action-handshake.d.ts.map +1 -1
- package/dist/action-handshake.js +9 -79
- package/dist/action-handshake.js.map +1 -1
- package/dist/bin/descry-mcp.d.ts +4 -15
- package/dist/bin/descry-mcp.d.ts.map +1 -1
- package/dist/bin/descry-mcp.js +12 -42
- package/dist/bin/descry-mcp.js.map +1 -1
- package/dist/browser/driver.d.ts +121 -224
- package/dist/browser/driver.d.ts.map +1 -1
- package/dist/browser/driver.js +9 -55
- package/dist/browser/driver.js.map +1 -1
- package/dist/browser/evidence.d.ts +10 -43
- package/dist/browser/evidence.d.ts.map +1 -1
- package/dist/browser/evidence.js +20 -54
- package/dist/browser/evidence.js.map +1 -1
- package/dist/browser/fake-driver.d.ts +12 -19
- package/dist/browser/fake-driver.d.ts.map +1 -1
- package/dist/browser/fake-driver.js +31 -26
- package/dist/browser/fake-driver.js.map +1 -1
- package/dist/browser/graph-write.d.ts +4 -45
- package/dist/browser/graph-write.d.ts.map +1 -1
- package/dist/browser/graph-write.js +8 -53
- package/dist/browser/graph-write.js.map +1 -1
- package/dist/browser/playwright-driver.d.ts +7 -91
- package/dist/browser/playwright-driver.d.ts.map +1 -1
- package/dist/browser/playwright-driver.js +59 -197
- package/dist/browser/playwright-driver.js.map +1 -1
- package/dist/browser/provider.d.ts +5 -34
- package/dist/browser/provider.d.ts.map +1 -1
- package/dist/browser/provider.js +4 -24
- package/dist/browser/provider.js.map +1 -1
- package/dist/browser/registry.d.ts +26 -106
- package/dist/browser/registry.d.ts.map +1 -1
- package/dist/browser/registry.js +20 -77
- package/dist/browser/registry.js.map +1 -1
- package/dist/browser/scenario-provenance.d.ts +23 -0
- package/dist/browser/scenario-provenance.d.ts.map +1 -0
- package/dist/browser/scenario-provenance.js +59 -0
- package/dist/browser/scenario-provenance.js.map +1 -0
- package/dist/browser/scenario-resolve.d.ts +10 -44
- package/dist/browser/scenario-resolve.d.ts.map +1 -1
- package/dist/browser/scenario-resolve.js +10 -41
- package/dist/browser/scenario-resolve.js.map +1 -1
- package/dist/browser/scenario-runner.d.ts +12 -70
- package/dist/browser/scenario-runner.d.ts.map +1 -1
- package/dist/browser/scenario-runner.js +30 -90
- package/dist/browser/scenario-runner.js.map +1 -1
- package/dist/browser/stack-parser.d.ts +4 -28
- package/dist/browser/stack-parser.d.ts.map +1 -1
- package/dist/browser/stack-parser.js +12 -39
- package/dist/browser/stack-parser.js.map +1 -1
- package/dist/browser/tool-support.d.ts +20 -67
- package/dist/browser/tool-support.d.ts.map +1 -1
- package/dist/browser/tool-support.js +21 -65
- package/dist/browser/tool-support.js.map +1 -1
- package/dist/browser/url-scheme.d.ts +14 -0
- package/dist/browser/url-scheme.d.ts.map +1 -0
- package/dist/browser/url-scheme.js +38 -0
- package/dist/browser/url-scheme.js.map +1 -0
- package/dist/cancellation.d.ts +11 -46
- package/dist/cancellation.d.ts.map +1 -1
- package/dist/cancellation.js +11 -46
- package/dist/cancellation.js.map +1 -1
- package/dist/capped.d.ts +9 -33
- package/dist/capped.d.ts.map +1 -1
- package/dist/capped.js +7 -27
- package/dist/capped.js.map +1 -1
- package/dist/disclosure-ledger.d.ts +6 -30
- package/dist/disclosure-ledger.d.ts.map +1 -1
- package/dist/disclosure-ledger.js +4 -26
- package/dist/disclosure-ledger.js.map +1 -1
- package/dist/index.d.ts +10 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -17
- package/dist/index.js.map +1 -1
- package/dist/module-trust.d.ts +24 -0
- package/dist/module-trust.d.ts.map +1 -0
- package/dist/module-trust.js +60 -0
- package/dist/module-trust.js.map +1 -0
- package/dist/path-confinement.d.ts +31 -0
- package/dist/path-confinement.d.ts.map +1 -0
- package/dist/path-confinement.js +44 -0
- package/dist/path-confinement.js.map +1 -0
- package/dist/protocol.d.ts +10 -53
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +14 -60
- package/dist/protocol.js.map +1 -1
- package/dist/registry.d.ts +37 -58
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +88 -96
- package/dist/registry.js.map +1 -1
- package/dist/render.d.ts +89 -13
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +111 -16
- package/dist/render.js.map +1 -1
- package/dist/runtime-registry.d.ts +7 -66
- package/dist/runtime-registry.d.ts.map +1 -1
- package/dist/runtime-registry.js +39 -114
- package/dist/runtime-registry.js.map +1 -1
- package/dist/scenarios/index.d.ts +1 -1
- package/dist/scenarios/index.d.ts.map +1 -1
- package/dist/scenarios/index.js +1 -1
- package/dist/scenarios/index.js.map +1 -1
- package/dist/scenarios/parse.d.ts +4 -18
- package/dist/scenarios/parse.d.ts.map +1 -1
- package/dist/scenarios/parse.js +14 -34
- package/dist/scenarios/parse.js.map +1 -1
- package/dist/scenarios/scenario.d.ts +18 -74
- package/dist/scenarios/scenario.d.ts.map +1 -1
- package/dist/scenarios/scenario.js +7 -34
- package/dist/scenarios/scenario.js.map +1 -1
- package/dist/scenarios/storage.d.ts +11 -41
- package/dist/scenarios/storage.d.ts.map +1 -1
- package/dist/scenarios/storage.js +57 -47
- package/dist/scenarios/storage.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +69 -19
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +90 -259
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +136 -250
- package/dist/session.js.map +1 -1
- package/dist/tools/analyze.d.ts +32 -118
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +65 -186
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/browser-click.d.ts +3 -21
- package/dist/tools/browser-click.d.ts.map +1 -1
- package/dist/tools/browser-click.js +10 -31
- package/dist/tools/browser-click.js.map +1 -1
- package/dist/tools/browser-close-session.d.ts +4 -13
- package/dist/tools/browser-close-session.d.ts.map +1 -1
- package/dist/tools/browser-close-session.js +4 -13
- package/dist/tools/browser-close-session.js.map +1 -1
- package/dist/tools/browser-fill.d.ts +5 -36
- package/dist/tools/browser-fill.d.ts.map +1 -1
- package/dist/tools/browser-fill.js +9 -44
- package/dist/tools/browser-fill.js.map +1 -1
- package/dist/tools/browser-navigate.d.ts +6 -27
- package/dist/tools/browser-navigate.d.ts.map +1 -1
- package/dist/tools/browser-navigate.js +6 -23
- package/dist/tools/browser-navigate.js.map +1 -1
- package/dist/tools/browser-run-scenario.d.ts +5 -31
- package/dist/tools/browser-run-scenario.d.ts.map +1 -1
- package/dist/tools/browser-run-scenario.js +10 -46
- package/dist/tools/browser-run-scenario.js.map +1 -1
- package/dist/tools/browser-save-scenario.d.ts +3 -28
- package/dist/tools/browser-save-scenario.d.ts.map +1 -1
- package/dist/tools/browser-save-scenario.js +47 -84
- package/dist/tools/browser-save-scenario.js.map +1 -1
- package/dist/tools/browser-snapshot.d.ts +6 -39
- package/dist/tools/browser-snapshot.d.ts.map +1 -1
- package/dist/tools/browser-snapshot.js +4 -31
- package/dist/tools/browser-snapshot.js.map +1 -1
- package/dist/tools/browser-start-session.d.ts +4 -23
- package/dist/tools/browser-start-session.d.ts.map +1 -1
- package/dist/tools/browser-start-session.js +145 -56
- package/dist/tools/browser-start-session.js.map +1 -1
- package/dist/tools/browser-type.d.ts +5 -35
- package/dist/tools/browser-type.d.ts.map +1 -1
- package/dist/tools/browser-type.js +10 -45
- package/dist/tools/browser-type.js.map +1 -1
- package/dist/tools/contracts.d.ts +9 -86
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +24 -80
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/cross-pr.d.ts +42 -30
- package/dist/tools/cross-pr.d.ts.map +1 -1
- package/dist/tools/cross-pr.js +81 -62
- package/dist/tools/cross-pr.js.map +1 -1
- package/dist/tools/git-diff.d.ts +18 -2
- package/dist/tools/git-diff.d.ts.map +1 -1
- package/dist/tools/git-diff.js +118 -26
- package/dist/tools/git-diff.js.map +1 -1
- package/dist/tools/git-history.d.ts +5 -16
- package/dist/tools/git-history.d.ts.map +1 -1
- package/dist/tools/git-history.js +3 -10
- package/dist/tools/git-history.js.map +1 -1
- package/dist/tools/history.d.ts +4 -33
- package/dist/tools/history.d.ts.map +1 -1
- package/dist/tools/history.js +6 -31
- package/dist/tools/history.js.map +1 -1
- package/dist/tools/impact.d.ts +7 -51
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +15 -67
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/index.d.ts +3 -8
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kit.d.ts +66 -113
- package/dist/tools/kit.d.ts.map +1 -1
- package/dist/tools/kit.js +60 -28
- package/dist/tools/kit.js.map +1 -1
- package/dist/tools/link-workspace.d.ts +7 -45
- package/dist/tools/link-workspace.d.ts.map +1 -1
- package/dist/tools/link-workspace.js +10 -48
- package/dist/tools/link-workspace.js.map +1 -1
- package/dist/tools/lookup.d.ts +4 -14
- package/dist/tools/lookup.d.ts.map +1 -1
- package/dist/tools/lookup.js +4 -14
- package/dist/tools/lookup.js.map +1 -1
- package/dist/tools/mark-incident.d.ts +7 -54
- package/dist/tools/mark-incident.d.ts.map +1 -1
- package/dist/tools/mark-incident.js +15 -68
- package/dist/tools/mark-incident.js.map +1 -1
- package/dist/tools/observe-runtime.d.ts +27 -210
- package/dist/tools/observe-runtime.d.ts.map +1 -1
- package/dist/tools/observe-runtime.js +273 -434
- package/dist/tools/observe-runtime.js.map +1 -1
- package/dist/tools/observe-tests.d.ts +9 -100
- package/dist/tools/observe-tests.d.ts.map +1 -1
- package/dist/tools/observe-tests.js +74 -152
- package/dist/tools/observe-tests.js.map +1 -1
- package/dist/tools/pr-analysis.d.ts +18 -2
- package/dist/tools/pr-analysis.d.ts.map +1 -1
- package/dist/tools/pr-analysis.js +73 -23
- package/dist/tools/pr-analysis.js.map +1 -1
- package/dist/tools/pre-push.d.ts +74 -16
- package/dist/tools/pre-push.d.ts.map +1 -1
- package/dist/tools/pre-push.js +152 -51
- package/dist/tools/pre-push.js.map +1 -1
- package/dist/tools/propagation.d.ts +11 -53
- package/dist/tools/propagation.d.ts.map +1 -1
- package/dist/tools/propagation.js +17 -58
- package/dist/tools/propagation.js.map +1 -1
- package/dist/tools/questions.d.ts +13 -63
- package/dist/tools/questions.d.ts.map +1 -1
- package/dist/tools/questions.js +33 -105
- package/dist/tools/questions.js.map +1 -1
- package/dist/tools/refusal-fetch.d.ts +4 -40
- package/dist/tools/refusal-fetch.d.ts.map +1 -1
- package/dist/tools/refusal-fetch.js +4 -40
- package/dist/tools/refusal-fetch.js.map +1 -1
- package/dist/tools/runtime-incident.d.ts +4 -63
- package/dist/tools/runtime-incident.d.ts.map +1 -1
- package/dist/tools/runtime-incident.js +10 -87
- package/dist/tools/runtime-incident.js.map +1 -1
- package/dist/tools/scope.d.ts +7 -25
- package/dist/tools/scope.d.ts.map +1 -1
- package/dist/tools/scope.js +10 -29
- package/dist/tools/scope.js.map +1 -1
- package/dist/tools/similar-incidents.d.ts +11 -86
- package/dist/tools/similar-incidents.d.ts.map +1 -1
- package/dist/tools/similar-incidents.js +7 -71
- package/dist/tools/similar-incidents.js.map +1 -1
- package/dist/tools/validate.d.ts +29 -70
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js +141 -85
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/verification-status.d.ts +9 -64
- package/dist/tools/verification-status.d.ts.map +1 -1
- package/dist/tools/verification-status.js +9 -62
- package/dist/tools/verification-status.js.map +1 -1
- package/dist/tools/verify-claim.d.ts +5 -52
- package/dist/tools/verify-claim.d.ts.map +1 -1
- package/dist/tools/verify-claim.js +6 -56
- package/dist/tools/verify-claim.js.map +1 -1
- package/dist/transport.d.ts +15 -52
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +16 -60
- package/dist/transport.js.map +1 -1
- package/package.json +40 -22
package/dist/tools/validate.d.ts
CHANGED
|
@@ -1,53 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `validate` — §15
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
*
|
|
10
|
-
* 1. **It does not report a variable that is read and never declared, by
|
|
11
|
-
* default.** Measured on two real repositories, that rule produces 18 wrong
|
|
12
|
-
* findings on one and 107 on the other. A finding needs a read that asserts
|
|
13
|
-
* *requirement* — no fallback at the read site — and a declaration surface
|
|
14
|
-
* complete enough for an absence to mean something. See `validation/env.ts`.
|
|
15
|
-
*
|
|
16
|
-
* 2. **It does not return `ok` with an empty list when no adapter supplied
|
|
17
|
-
* reads.** That is `refused` with the reason and the exact `attrs` key
|
|
18
|
-
* it needs, because "no missing variables" is a false statement when the code
|
|
19
|
-
* was never read.
|
|
20
|
-
*
|
|
21
|
-
* The declaration half runs regardless: configuration files are read straight
|
|
22
|
-
* from the repository, which needs no adapter and no resolution.
|
|
23
|
-
*
|
|
24
|
-
* ## "By default" above is load-bearing: pass `files` and a second rule runs
|
|
25
|
-
*
|
|
26
|
-
* UAT round 3, Suggestion 4. Rule 1's own precondition — the accessor has to
|
|
27
|
-
* fail on absence — made this check structurally silent on real work: a
|
|
28
|
-
* Python feature read two new third-party API keys through
|
|
29
|
-
* `os.environ.get()`, declared nowhere, and this tool said "Clean" because
|
|
30
|
-
* nothing anywhere asserted requirement. Pass `files` (the diff you are
|
|
31
|
-
* about to push, exactly the same scope `contracts`' `paths` and this tool's
|
|
32
|
-
* own `files` already narrow to elsewhere) and a second rule, gated only on
|
|
33
|
-
* "new in this diff" rather than on accessor shape, reports
|
|
34
|
-
* `NEW_READ_UNDECLARED` for any such read regardless of whether it would
|
|
35
|
-
* fail on absence — see `validation/env.ts`'s own header for why that
|
|
36
|
-
* substitution keeps precision high without an extra guard.
|
|
37
|
-
*/
|
|
38
|
-
import type { AttributeFinding, AttributeReport, ConfigGraph, ConfigReadSite, EnvClaim, EnvEvidence, EnvFindingKind, EnvReport, MigrationIntegrityFinding, MigrationIntegrityReport, RollbackFinding, RollbackReport } from "@descryy/core";
|
|
2
|
+
* `validate` — §15 static validation: env/config checks.
|
|
3
|
+
* Omits a var unless its read fails-on-absence AND declaration surface is complete
|
|
4
|
+
* (18/107 wrong findings measured otherwise); refuses rather than `ok` when no reads
|
|
5
|
+
* exist. Pass `files` for NEW_READ_UNDECLARED — catches accessor-shape-independent reads.
|
|
6
|
+
* Add `changedLines` (from get_git_diff's patch) to verify against an added line rather
|
|
7
|
+
* than a file scope, and get `defect` instead of `lead` back for it — see C2, UAT phase 4. */
|
|
8
|
+
import type { AttributeFinding, AttributeReport, ConfigGraph, ConfigReadSite, EnvClaim, EnvEvidence, EnvFindingKind, EnvReport, MigrationIntegrityFinding, MigrationIntegrityReport, OrmRegistrationFinding, OrmRegistrationReport, RollbackFinding, RollbackReport } from "@descryy/core";
|
|
39
9
|
import type { ResolutionLevel } from "@descryy/ir";
|
|
40
10
|
import { type ToolDefinition } from "./kit.ts";
|
|
41
|
-
/**
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
* `claim` is the axis that matters: a `defect` is a statement about the code, a
|
|
45
|
-
* `lead` is something to look at. A variable read with no fallback and
|
|
46
|
-
* declared nowhere is the first; a variable set in one file and documented in
|
|
47
|
-
* no example file is the second, and reporting it as the first is how this
|
|
48
|
-
* check produced 18 and 107 wrong findings on two real repositories before the
|
|
49
|
-
* distinction existed.
|
|
50
|
-
*/
|
|
11
|
+
/** One env/config finding. `claim` distinguishes `defect` (code contradiction) from
|
|
12
|
+
* `lead` (worth a look) — conflating them caused 18/107 wrong findings on two repos. */
|
|
51
13
|
export interface EnvFindingReport {
|
|
52
14
|
readonly kind: EnvFindingKind;
|
|
53
15
|
readonly name: string;
|
|
@@ -57,13 +19,8 @@ export interface EnvFindingReport {
|
|
|
57
19
|
readonly evidence: readonly EnvEvidence[];
|
|
58
20
|
readonly resolution: ResolutionLevel;
|
|
59
21
|
}
|
|
60
|
-
/**
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* Only variables whose dependent set could actually be computed appear —
|
|
64
|
-
* §15.3's third check feeding the first. An unknown count is not a zero, so it
|
|
65
|
-
* is left out rather than reported as none.
|
|
66
|
-
*/
|
|
22
|
+
/** A variable and how much of the repo depends on it (§15.3's third check feeding
|
|
23
|
+
* the first). Only variables with a computable dependent set appear — unknown ≠ zero. */
|
|
67
24
|
export interface ConfigDependencyReport {
|
|
68
25
|
readonly name: string;
|
|
69
26
|
/** A lower bound, never a total. */
|
|
@@ -85,13 +42,8 @@ export interface ValidateData {
|
|
|
85
42
|
readonly coverage: EnvReport["coverage"];
|
|
86
43
|
/** Declared and read nowhere. A dead-configuration lead, not a finding. */
|
|
87
44
|
readonly declaredNeverRead: number;
|
|
88
|
-
/**
|
|
89
|
-
*
|
|
90
|
-
*
|
|
91
|
-
* The whole point of the field: with it false, "no missing variables" would
|
|
92
|
-
* be a statement about code that was never read, so the call is degraded
|
|
93
|
-
* rather than clean.
|
|
94
|
-
*/
|
|
45
|
+
/** False when no adapter supplied environment reads — otherwise "no missing
|
|
46
|
+
* variables" would misstate code that was never read as clean. */
|
|
95
47
|
readonly readsAvailable: boolean;
|
|
96
48
|
readonly configGraph: {
|
|
97
49
|
readonly counts: ConfigGraph["counts"];
|
|
@@ -112,11 +64,8 @@ export interface ValidateData {
|
|
|
112
64
|
/** Named in plain words when `ran` is false. */
|
|
113
65
|
readonly blockers: readonly string[];
|
|
114
66
|
};
|
|
115
|
-
/**
|
|
116
|
-
*
|
|
117
|
-
* defect, never a lead: this is a contradiction between two producers that
|
|
118
|
-
* must agree, provable from the graph alone.
|
|
119
|
-
*/
|
|
67
|
+
/** §"attribute read, type doesn't declare it" — always a defect (graph-provable
|
|
68
|
+
* contradiction between two producers), never a lead. */
|
|
120
69
|
readonly attributeExistence: {
|
|
121
70
|
readonly findings: readonly AttributeFinding[];
|
|
122
71
|
readonly findingsTotal: number;
|
|
@@ -124,10 +73,8 @@ export interface ValidateData {
|
|
|
124
73
|
/** False when no READS edge onto a type-like node carried field-existence info at all. */
|
|
125
74
|
readonly ran: boolean;
|
|
126
75
|
};
|
|
127
|
-
/**
|
|
128
|
-
*
|
|
129
|
-
* chain" — both always defects, both provable from the graph alone.
|
|
130
|
-
*/
|
|
76
|
+
/** §"migration outside its directory, or broken revision chain" — both always
|
|
77
|
+
* defects, both graph-provable. */
|
|
131
78
|
readonly migrationIntegrity: {
|
|
132
79
|
readonly findings: readonly MigrationIntegrityFinding[];
|
|
133
80
|
readonly findingsTotal: number;
|
|
@@ -137,6 +84,18 @@ export interface ValidateData {
|
|
|
137
84
|
readonly ran: boolean;
|
|
138
85
|
readonly withheld: MigrationIntegrityReport["withheld"];
|
|
139
86
|
};
|
|
87
|
+
/** §"ORM model inherits the declarative base but no __init__.py in its package
|
|
88
|
+
* reaches its module" — always a lead, never a defect: a model registered by an
|
|
89
|
+
* explicit scan rather than by import, or deliberately excluded from migrations,
|
|
90
|
+
* triggers this without being a bug. See `orm-registration.ts`'s header. */
|
|
91
|
+
readonly ormRegistration: {
|
|
92
|
+
readonly findings: readonly OrmRegistrationFinding[];
|
|
93
|
+
readonly findingsTotal: number;
|
|
94
|
+
readonly examined: OrmRegistrationReport["examined"];
|
|
95
|
+
/** False when no MODEL node in the graph carried an outgoing INHERITS edge. */
|
|
96
|
+
readonly ran: boolean;
|
|
97
|
+
readonly withheld: OrmRegistrationReport["withheld"];
|
|
98
|
+
};
|
|
140
99
|
}
|
|
141
100
|
export declare const validateTool: ToolDefinition;
|
|
142
101
|
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/validate.js
CHANGED
|
@@ -1,42 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* `validate` — §15
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
* 1. **It does not report a variable that is read and never declared, by
|
|
11
|
-
* default.** Measured on two real repositories, that rule produces 18 wrong
|
|
12
|
-
* findings on one and 107 on the other. A finding needs a read that asserts
|
|
13
|
-
* *requirement* — no fallback at the read site — and a declaration surface
|
|
14
|
-
* complete enough for an absence to mean something. See `validation/env.ts`.
|
|
15
|
-
*
|
|
16
|
-
* 2. **It does not return `ok` with an empty list when no adapter supplied
|
|
17
|
-
* reads.** That is `refused` with the reason and the exact `attrs` key
|
|
18
|
-
* it needs, because "no missing variables" is a false statement when the code
|
|
19
|
-
* was never read.
|
|
20
|
-
*
|
|
21
|
-
* The declaration half runs regardless: configuration files are read straight
|
|
22
|
-
* from the repository, which needs no adapter and no resolution.
|
|
23
|
-
*
|
|
24
|
-
* ## "By default" above is load-bearing: pass `files` and a second rule runs
|
|
25
|
-
*
|
|
26
|
-
* UAT round 3, Suggestion 4. Rule 1's own precondition — the accessor has to
|
|
27
|
-
* fail on absence — made this check structurally silent on real work: a
|
|
28
|
-
* Python feature read two new third-party API keys through
|
|
29
|
-
* `os.environ.get()`, declared nowhere, and this tool said "Clean" because
|
|
30
|
-
* nothing anywhere asserted requirement. Pass `files` (the diff you are
|
|
31
|
-
* about to push, exactly the same scope `contracts`' `paths` and this tool's
|
|
32
|
-
* own `files` already narrow to elsewhere) and a second rule, gated only on
|
|
33
|
-
* "new in this diff" rather than on accessor shape, reports
|
|
34
|
-
* `NEW_READ_UNDECLARED` for any such read regardless of whether it would
|
|
35
|
-
* fail on absence — see `validation/env.ts`'s own header for why that
|
|
36
|
-
* substitution keeps precision high without an extra guard.
|
|
37
|
-
*/
|
|
38
|
-
import { buildConfigGraph, checkAttributeExistence, checkEnvironment, checkMigrationIntegrity, checkRollbackReadiness, scanConfigSurfaces, scanMigrations, } from "@descryy/core";
|
|
39
|
-
import { optionalInteger, optionalStringArray } from "./kit.js";
|
|
2
|
+
* `validate` — §15 static validation: env/config checks.
|
|
3
|
+
* Omits a var unless its read fails-on-absence AND declaration surface is complete
|
|
4
|
+
* (18/107 wrong findings measured otherwise); refuses rather than `ok` when no reads
|
|
5
|
+
* exist. Pass `files` for NEW_READ_UNDECLARED — catches accessor-shape-independent reads.
|
|
6
|
+
* Add `changedLines` (from get_git_diff's patch) to verify against an added line rather
|
|
7
|
+
* than a file scope, and get `defect` instead of `lead` back for it — see C2, UAT phase 4. */
|
|
8
|
+
import { buildConfigGraph, checkAttributeExistence, checkEnvironment, checkMigrationIntegrity, checkOrmModelRegistration, checkRollbackReadiness, scanConfigSurfaces, scanMigrations, } from "@descryy/core";
|
|
9
|
+
import { optionalInteger, optionalStringArray, ToolInputError, } from "./kit.js";
|
|
40
10
|
const SCHEMA = {
|
|
41
11
|
type: "object",
|
|
42
12
|
properties: {
|
|
@@ -62,14 +32,85 @@ const SCHEMA = {
|
|
|
62
32
|
minimum: 1,
|
|
63
33
|
description: "Cap on findings returned. Default 25; overflow is disclosed, not dropped.",
|
|
64
34
|
},
|
|
35
|
+
changedLines: {
|
|
36
|
+
type: "array",
|
|
37
|
+
items: {
|
|
38
|
+
type: "object",
|
|
39
|
+
properties: {
|
|
40
|
+
file: {
|
|
41
|
+
type: "string",
|
|
42
|
+
description: "A repo-relative path, matching one entry of \"files\".",
|
|
43
|
+
},
|
|
44
|
+
ranges: {
|
|
45
|
+
type: "array",
|
|
46
|
+
items: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {
|
|
49
|
+
start: { type: "integer", minimum: 1 },
|
|
50
|
+
end: { type: "integer", minimum: 1 },
|
|
51
|
+
},
|
|
52
|
+
required: ["start", "end"],
|
|
53
|
+
additionalProperties: false,
|
|
54
|
+
},
|
|
55
|
+
description: "1-based, inclusive line ranges this file's diff actually added.",
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
required: ["file", "ranges"],
|
|
59
|
+
additionalProperties: false,
|
|
60
|
+
},
|
|
61
|
+
description: "Which lines the diff actually added, per file — e.g. from get_git_diff's patch text run " +
|
|
62
|
+
"through addedLineRanges. Sharpens NEW_READ_UNDECLARED (which \"files\" alone already " +
|
|
63
|
+
"enables) from \"in a file this call scoped to\" to \"on a line this diff actually added\": " +
|
|
64
|
+
"without it, a pre-existing undeclared read in a file you touched for an unrelated reason is " +
|
|
65
|
+
"reported as a lead rather than a defect, because this call cannot tell it apart from a read " +
|
|
66
|
+
"the change just introduced. A file named in \"files\" but absent here is treated the same as " +
|
|
67
|
+
"when this argument is omitted entirely, for that file only.",
|
|
68
|
+
},
|
|
65
69
|
},
|
|
66
70
|
additionalProperties: false,
|
|
67
71
|
};
|
|
72
|
+
/** `changedLines`' wire shape ({ file, ranges }[], JSON-schema-friendly) into the
|
|
73
|
+
* `Map` `checkEnvironment` takes. Malformed input is refused, not silently dropped —
|
|
74
|
+
* a caller that thinks it narrowed the check and did not is worse off than one who
|
|
75
|
+
* never tried. */
|
|
76
|
+
function parseChangedLines(args) {
|
|
77
|
+
const raw = args["changedLines"];
|
|
78
|
+
if (raw === undefined)
|
|
79
|
+
return undefined;
|
|
80
|
+
if (!Array.isArray(raw)) {
|
|
81
|
+
throw new ToolInputError('"changedLines" must be an array of { file, ranges }.');
|
|
82
|
+
}
|
|
83
|
+
const map = new Map();
|
|
84
|
+
for (const entry of raw) {
|
|
85
|
+
if (typeof entry !== "object" || entry === null) {
|
|
86
|
+
throw new ToolInputError('Each "changedLines" entry must be an object with "file" and "ranges".');
|
|
87
|
+
}
|
|
88
|
+
const row = entry;
|
|
89
|
+
const file = row["file"];
|
|
90
|
+
const ranges = row["ranges"];
|
|
91
|
+
if (typeof file !== "string" || file === "" || !Array.isArray(ranges)) {
|
|
92
|
+
throw new ToolInputError('Each "changedLines" entry needs a non-empty "file" and a "ranges" array.');
|
|
93
|
+
}
|
|
94
|
+
const parsedRanges = [];
|
|
95
|
+
for (const range of ranges) {
|
|
96
|
+
const r = typeof range === "object" && range !== null ? range : null;
|
|
97
|
+
const start = r?.["start"];
|
|
98
|
+
const end = r?.["end"];
|
|
99
|
+
if (typeof start !== "number" || typeof end !== "number") {
|
|
100
|
+
throw new ToolInputError(`"changedLines" entry for "${file}" has a range that is not { start, end }.`);
|
|
101
|
+
}
|
|
102
|
+
parsedRanges.push({ start, end });
|
|
103
|
+
}
|
|
104
|
+
map.set(file, parsedRanges);
|
|
105
|
+
}
|
|
106
|
+
return map;
|
|
107
|
+
}
|
|
68
108
|
async function run(args, ctx) {
|
|
69
109
|
const files = optionalStringArray(args, "files");
|
|
70
110
|
const maxFindings = optionalInteger(args, "maxFindings", 1);
|
|
71
111
|
const rawFloor = args["coverageFloor"];
|
|
72
112
|
const coverageFloor = typeof rawFloor === "number" && rawFloor >= 0 && rawFloor <= 1 ? rawFloor : undefined;
|
|
113
|
+
const changedLines = parseChangedLines(args);
|
|
73
114
|
ctx.progress("Reading configuration files");
|
|
74
115
|
const scan = scanConfigSurfaces(ctx.session.repoPath);
|
|
75
116
|
ctx.progress("Cross-checking against environment reads in the graph");
|
|
@@ -78,6 +119,7 @@ async function run(args, ctx) {
|
|
|
78
119
|
...(files === undefined ? {} : { files }),
|
|
79
120
|
...(maxFindings === undefined ? {} : { maxFindings }),
|
|
80
121
|
...(coverageFloor === undefined ? {} : { coverageFloor }),
|
|
122
|
+
...(changedLines === undefined ? {} : { changedLines }),
|
|
81
123
|
});
|
|
82
124
|
ctx.progress("Tracing what depends on each configuration variable");
|
|
83
125
|
const configGraph = buildConfigGraph(provider, scan);
|
|
@@ -96,37 +138,34 @@ async function run(args, ctx) {
|
|
|
96
138
|
...(files === undefined ? {} : { files }),
|
|
97
139
|
...(maxFindings === undefined ? {} : { maxFindings }),
|
|
98
140
|
});
|
|
141
|
+
ctx.progress("Checking ORM models are reached by their package's __init__");
|
|
142
|
+
const ormRegistration = checkOrmModelRegistration(provider, {
|
|
143
|
+
...(files === undefined ? {} : { files }),
|
|
144
|
+
...(maxFindings === undefined ? {} : { maxFindings }),
|
|
145
|
+
});
|
|
99
146
|
const report = checked.data;
|
|
100
147
|
const defects = report.findings.filter((f) => f.claim === "defect").length +
|
|
101
148
|
attributeExistence.data.findings.length +
|
|
102
149
|
migrationIntegrity.data.findings.length;
|
|
103
150
|
const leads = report.findings.length - report.findings.filter((f) => f.claim === "defect").length;
|
|
104
|
-
// Nothing
|
|
105
|
-
// migration
|
|
106
|
-
// alone is a real answer; none of them is not.
|
|
151
|
+
// Nothing compared at all: no config files, reads, migrations, attribute reads,
|
|
152
|
+
// or migration revisions — any one alone is a real answer, none of them is not.
|
|
107
153
|
const nothingToCheck = report.surfaces.length === 0 &&
|
|
108
154
|
!report.readsAvailable &&
|
|
109
155
|
!rollback.data.ran &&
|
|
110
156
|
!attributeExistence.data.ran &&
|
|
111
|
-
!migrationIntegrity.data.ran
|
|
112
|
-
|
|
113
|
-
// matching zero FILE nodes
|
|
114
|
-
//
|
|
115
|
-
//
|
|
116
|
-
// they are fine." `filesWithReads + filesWithoutReads` is every FILE node
|
|
117
|
-
// the read side considered under the scope; zero of them existing is the
|
|
118
|
-
// same collapse `contracts(paths: [...])` had, one level down.
|
|
157
|
+
!migrationIntegrity.data.ran &&
|
|
158
|
+
!ormRegistration.data.ran;
|
|
159
|
+
// A `files` scope matching zero FILE nodes means those files were never read into
|
|
160
|
+
// the graph (bad path, or unparsed) — not "read and clean". Same collapse as
|
|
161
|
+
// `contracts(paths)`, one level down.
|
|
119
162
|
const filesMatchedNothing = files !== undefined && report.reads.filesWithReads + report.reads.filesWithoutReads === 0;
|
|
120
|
-
//
|
|
121
|
-
//
|
|
122
|
-
|
|
123
|
-
//
|
|
124
|
-
|
|
125
|
-
//
|
|
126
|
-
// is the exact collapse Suggestion 5 names: it would read as "checked your
|
|
127
|
-
// files, they're fine" when in fact none of them were ever read at all.
|
|
128
|
-
// Only the pure-Clean case is downgraded — real findings from the
|
|
129
|
-
// unscoped documentation-drift or rollback checks still deserve to be seen.
|
|
163
|
+
// Leads and rollback findings are worth a look; defects are what this tool exists
|
|
164
|
+
// to catch. Never blur the two into one count (see EnvFindingReport.claim).
|
|
165
|
+
const otherFindings = leads + rollback.data.findings.length + ormRegistration.data.findings.length;
|
|
166
|
+
// A "Clean" verdict from a files scope matching nothing would misreport "checked,
|
|
167
|
+
// fine" when nothing was read. Only pure-Clean is downgraded — real findings from
|
|
168
|
+
// unscoped checks still surface.
|
|
130
169
|
const falseClean = filesMatchedNothing && defects === 0 && otherFindings === 0;
|
|
131
170
|
const verdict = falseClean
|
|
132
171
|
? "not checked"
|
|
@@ -143,27 +182,24 @@ async function run(args, ctx) {
|
|
|
143
182
|
"they are clean.",
|
|
144
183
|
]
|
|
145
184
|
: [];
|
|
146
|
-
//
|
|
147
|
-
//
|
|
148
|
-
//
|
|
149
|
-
// rollback findings, attribute-existence findings, migration-integrity
|
|
150
|
-
// findings, and configGraph's own dependent-variable enumeration — so no
|
|
151
|
-
// single shown/total pair can describe all of them exactly. `shown`/`total`
|
|
152
|
-
// cover the four finding lists a maxFindings cap actually acts on;
|
|
153
|
-
// configGraph's truncation has no findings list of its own and stays
|
|
154
|
-
// disclosed only in prose, as it already was.
|
|
185
|
+
// render.ts requires truncatedDetail whenever truncated=true. `truncated` folds 5
|
|
186
|
+
// independently-truncatable sources; shown/total cover only the 4 finding lists a
|
|
187
|
+
// maxFindings cap acts on — configGraph's own truncation stays prose-only.
|
|
155
188
|
const shown = report.findings.length +
|
|
156
189
|
rollback.data.findings.length +
|
|
157
190
|
attributeExistence.data.findings.length +
|
|
158
|
-
migrationIntegrity.data.findings.length
|
|
191
|
+
migrationIntegrity.data.findings.length +
|
|
192
|
+
ormRegistration.data.findings.length;
|
|
159
193
|
const total = report.findingsTotal +
|
|
160
194
|
rollback.data.findingsTotal +
|
|
161
195
|
attributeExistence.data.findingsTotal +
|
|
162
|
-
migrationIntegrity.data.findingsTotal
|
|
196
|
+
migrationIntegrity.data.findingsTotal +
|
|
197
|
+
ormRegistration.data.findingsTotal;
|
|
163
198
|
const truncated = checked.truncated ||
|
|
164
199
|
rollback.truncated ||
|
|
165
200
|
attributeExistence.truncated ||
|
|
166
201
|
migrationIntegrity.truncated ||
|
|
202
|
+
ormRegistration.truncated ||
|
|
167
203
|
configGraph.truncated;
|
|
168
204
|
const truncatedDetail = truncated
|
|
169
205
|
? { shown, total: Math.max(total, shown), more: null }
|
|
@@ -186,10 +222,8 @@ async function run(args, ctx) {
|
|
|
186
222
|
coverage: report.coverage,
|
|
187
223
|
declaredNeverRead: report.declaredNeverRead,
|
|
188
224
|
readsAvailable: report.readsAvailable,
|
|
189
|
-
// §15.3's third check feeds the first
|
|
190
|
-
//
|
|
191
|
-
// script. Only variables whose dependent set could be computed are
|
|
192
|
-
// carried — an unknown count is not a zero and is not worth a row.
|
|
225
|
+
// §15.3's third check feeds the first. Only variables with a computable
|
|
226
|
+
// dependent set are carried — unknown count is not a zero, not worth a row.
|
|
193
227
|
configGraph: {
|
|
194
228
|
counts: configGraph.data.counts,
|
|
195
229
|
importsAvailable: configGraph.data.importsAvailable,
|
|
@@ -226,27 +260,33 @@ async function run(args, ctx) {
|
|
|
226
260
|
ran: migrationIntegrity.data.ran,
|
|
227
261
|
withheld: migrationIntegrity.data.withheld,
|
|
228
262
|
},
|
|
263
|
+
ormRegistration: {
|
|
264
|
+
findings: ormRegistration.data.findings,
|
|
265
|
+
findingsTotal: ormRegistration.data.findingsTotal,
|
|
266
|
+
examined: ormRegistration.data.examined,
|
|
267
|
+
ran: ormRegistration.data.ran,
|
|
268
|
+
withheld: ormRegistration.data.withheld,
|
|
269
|
+
},
|
|
229
270
|
},
|
|
230
|
-
// Every check's disclosures reach the reader
|
|
231
|
-
//
|
|
232
|
-
// failure rule 7 exists to prevent.
|
|
271
|
+
// Every check's disclosures reach the reader — dropping one half silently
|
|
272
|
+
// is the degradation rule 7 exists to prevent.
|
|
233
273
|
notes: [
|
|
234
274
|
...scopeNotes,
|
|
235
275
|
...checked.notes,
|
|
236
276
|
...rollback.notes,
|
|
237
277
|
...attributeExistence.notes,
|
|
238
278
|
...migrationIntegrity.notes,
|
|
279
|
+
...ormRegistration.notes,
|
|
239
280
|
...configGraph.notes,
|
|
240
281
|
],
|
|
241
282
|
truncated,
|
|
242
283
|
stamp: {
|
|
243
284
|
...checked.stamp,
|
|
244
|
-
resolutionFloor: Math.min(checked.stamp.resolutionFloor, rollback.stamp.resolutionFloor, attributeExistence.stamp.resolutionFloor, migrationIntegrity.stamp.resolutionFloor, configGraph.stamp.resolutionFloor),
|
|
285
|
+
resolutionFloor: Math.min(checked.stamp.resolutionFloor, rollback.stamp.resolutionFloor, attributeExistence.stamp.resolutionFloor, migrationIntegrity.stamp.resolutionFloor, ormRegistration.stamp.resolutionFloor, configGraph.stamp.resolutionFloor),
|
|
245
286
|
},
|
|
246
287
|
},
|
|
247
|
-
//
|
|
248
|
-
//
|
|
249
|
-
// class A. The shape of its value is never asserted here.
|
|
288
|
+
// §11A.5's canonical name-level fact (exists or not) — the one claim R2 supports
|
|
289
|
+
// at class A. Value shape is never asserted here.
|
|
250
290
|
nameLevel: true,
|
|
251
291
|
...(truncatedDetail === undefined ? {} : { truncatedDetail }),
|
|
252
292
|
...(nothingToCheck
|
|
@@ -266,7 +306,9 @@ async function run(args, ctx) {
|
|
|
266
306
|
`${rollback.data.examined.operations} destructive migration operation(s) examined; ` +
|
|
267
307
|
`${attributeExistence.data.examined.readEdgesExamined} attribute read(s) checked against ` +
|
|
268
308
|
`a declared type; ${migrationIntegrity.data.examined.modulesWithRevision} migration(s) ` +
|
|
269
|
-
"checked for location and revision-chain integrity
|
|
309
|
+
"checked for location and revision-chain integrity; " +
|
|
310
|
+
`${ormRegistration.data.examined.candidates} ORM model(s) inheriting a declarative base ` +
|
|
311
|
+
"checked for package-import reachability.",
|
|
270
312
|
};
|
|
271
313
|
}
|
|
272
314
|
function countDeclared(surfaces) {
|
|
@@ -276,7 +318,13 @@ export const validateTool = {
|
|
|
276
318
|
name: "validate",
|
|
277
319
|
class: "read",
|
|
278
320
|
tier: "conclusion",
|
|
279
|
-
|
|
321
|
+
// 1.1.0 (C2, UAT phase 4): without "changedLines", NEW_READ_UNDECLARED for a
|
|
322
|
+
// pre-existing read in a "files"-scoped file is now a `lead`, worded without
|
|
323
|
+
// an authorship claim, where it used to be a `defect` calling it "a new read
|
|
324
|
+
// this change introduces" — a claim `files` alone never supported. A caller
|
|
325
|
+
// that passes "changedLines" gets the stronger `defect` back, now genuinely
|
|
326
|
+
// verified against an added line rather than assumed from file scope.
|
|
327
|
+
version: "1.1.0",
|
|
280
328
|
title: "Environment and configuration checks",
|
|
281
329
|
description: "Cross-check the environment variables the code requires against the ones this repository " +
|
|
282
330
|
"declares. Reports a variable only when the code reads it with no fallback and no " +
|
|
@@ -285,14 +333,22 @@ export const validateTool = {
|
|
|
285
333
|
"manager or a platform is disclosed with a count, never reported as missing. Pass \"files\" " +
|
|
286
334
|
"(the diff you are about to push) to also catch a variable your change reads that no " +
|
|
287
335
|
"declaration surface declares, regardless of whether the accessor fails on absence — the " +
|
|
288
|
-
"usual shape on a codebase where almost no read is required
|
|
336
|
+
"usual shape on a codebase where almost no read is required; without \"changedLines\" this is " +
|
|
337
|
+
"reported as a lead, because a file-scoped read cannot yet be told apart from one the diff never " +
|
|
338
|
+
"touched. Pass \"changedLines\" (from get_git_diff's patch text) to sharpen it to a defect, " +
|
|
339
|
+
"verified against a line the diff actually added. Also reports variables set in " +
|
|
289
340
|
"one configuration file and documented in no example file, stated as a lead rather than a " +
|
|
290
341
|
"defect. Two further checks, both always defects because both are provable from the graph " +
|
|
291
342
|
"alone: an attribute read on a value whose declared type does not name it (from a READS " +
|
|
292
343
|
"edge's attrs.unresolvedFields), and a migration whose location or declared parent revision " +
|
|
293
344
|
"disagrees with the rest of the project's migrations (from attrs.migrationRevision, " +
|
|
294
345
|
"migrationDownRevision and migrationDir). Both are silent wherever the producer supplied no " +
|
|
295
|
-
"signal — absence of the attrs key is never read as a clean result."
|
|
346
|
+
"signal — absence of the attrs key is never read as a clean result. A fifth check reports a " +
|
|
347
|
+
"class inheriting an ORM declarative base (a MODEL node with an INHERITS edge) whose own " +
|
|
348
|
+
"module no __init__.py in its package reaches, directly or transitively — the shape behind a " +
|
|
349
|
+
"model silently missing from Base.metadata and having its table dropped by the next " +
|
|
350
|
+
"autogenerate. Always a lead, never a defect: an explicit scan/glob registration or a " +
|
|
351
|
+
"deliberately excluded model triggers it without being a bug.",
|
|
296
352
|
inputSchema: SCHEMA,
|
|
297
353
|
run,
|
|
298
354
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
|