@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.
Files changed (264) hide show
  1. package/dist/action-handshake.d.ts +8 -75
  2. package/dist/action-handshake.d.ts.map +1 -1
  3. package/dist/action-handshake.js +9 -79
  4. package/dist/action-handshake.js.map +1 -1
  5. package/dist/bin/descry-mcp.d.ts +4 -15
  6. package/dist/bin/descry-mcp.d.ts.map +1 -1
  7. package/dist/bin/descry-mcp.js +12 -42
  8. package/dist/bin/descry-mcp.js.map +1 -1
  9. package/dist/browser/driver.d.ts +121 -224
  10. package/dist/browser/driver.d.ts.map +1 -1
  11. package/dist/browser/driver.js +9 -55
  12. package/dist/browser/driver.js.map +1 -1
  13. package/dist/browser/evidence.d.ts +10 -43
  14. package/dist/browser/evidence.d.ts.map +1 -1
  15. package/dist/browser/evidence.js +20 -54
  16. package/dist/browser/evidence.js.map +1 -1
  17. package/dist/browser/fake-driver.d.ts +12 -19
  18. package/dist/browser/fake-driver.d.ts.map +1 -1
  19. package/dist/browser/fake-driver.js +31 -26
  20. package/dist/browser/fake-driver.js.map +1 -1
  21. package/dist/browser/graph-write.d.ts +4 -45
  22. package/dist/browser/graph-write.d.ts.map +1 -1
  23. package/dist/browser/graph-write.js +8 -53
  24. package/dist/browser/graph-write.js.map +1 -1
  25. package/dist/browser/playwright-driver.d.ts +7 -91
  26. package/dist/browser/playwright-driver.d.ts.map +1 -1
  27. package/dist/browser/playwright-driver.js +59 -197
  28. package/dist/browser/playwright-driver.js.map +1 -1
  29. package/dist/browser/provider.d.ts +5 -34
  30. package/dist/browser/provider.d.ts.map +1 -1
  31. package/dist/browser/provider.js +4 -24
  32. package/dist/browser/provider.js.map +1 -1
  33. package/dist/browser/registry.d.ts +26 -106
  34. package/dist/browser/registry.d.ts.map +1 -1
  35. package/dist/browser/registry.js +20 -77
  36. package/dist/browser/registry.js.map +1 -1
  37. package/dist/browser/scenario-provenance.d.ts +23 -0
  38. package/dist/browser/scenario-provenance.d.ts.map +1 -0
  39. package/dist/browser/scenario-provenance.js +59 -0
  40. package/dist/browser/scenario-provenance.js.map +1 -0
  41. package/dist/browser/scenario-resolve.d.ts +10 -44
  42. package/dist/browser/scenario-resolve.d.ts.map +1 -1
  43. package/dist/browser/scenario-resolve.js +10 -41
  44. package/dist/browser/scenario-resolve.js.map +1 -1
  45. package/dist/browser/scenario-runner.d.ts +12 -70
  46. package/dist/browser/scenario-runner.d.ts.map +1 -1
  47. package/dist/browser/scenario-runner.js +30 -90
  48. package/dist/browser/scenario-runner.js.map +1 -1
  49. package/dist/browser/stack-parser.d.ts +4 -28
  50. package/dist/browser/stack-parser.d.ts.map +1 -1
  51. package/dist/browser/stack-parser.js +12 -39
  52. package/dist/browser/stack-parser.js.map +1 -1
  53. package/dist/browser/tool-support.d.ts +20 -67
  54. package/dist/browser/tool-support.d.ts.map +1 -1
  55. package/dist/browser/tool-support.js +21 -65
  56. package/dist/browser/tool-support.js.map +1 -1
  57. package/dist/browser/url-scheme.d.ts +14 -0
  58. package/dist/browser/url-scheme.d.ts.map +1 -0
  59. package/dist/browser/url-scheme.js +38 -0
  60. package/dist/browser/url-scheme.js.map +1 -0
  61. package/dist/cancellation.d.ts +11 -46
  62. package/dist/cancellation.d.ts.map +1 -1
  63. package/dist/cancellation.js +11 -46
  64. package/dist/cancellation.js.map +1 -1
  65. package/dist/capped.d.ts +9 -33
  66. package/dist/capped.d.ts.map +1 -1
  67. package/dist/capped.js +7 -27
  68. package/dist/capped.js.map +1 -1
  69. package/dist/disclosure-ledger.d.ts +6 -30
  70. package/dist/disclosure-ledger.d.ts.map +1 -1
  71. package/dist/disclosure-ledger.js +4 -26
  72. package/dist/disclosure-ledger.js.map +1 -1
  73. package/dist/index.d.ts +10 -26
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +7 -17
  76. package/dist/index.js.map +1 -1
  77. package/dist/module-trust.d.ts +24 -0
  78. package/dist/module-trust.d.ts.map +1 -0
  79. package/dist/module-trust.js +60 -0
  80. package/dist/module-trust.js.map +1 -0
  81. package/dist/path-confinement.d.ts +31 -0
  82. package/dist/path-confinement.d.ts.map +1 -0
  83. package/dist/path-confinement.js +44 -0
  84. package/dist/path-confinement.js.map +1 -0
  85. package/dist/protocol.d.ts +10 -53
  86. package/dist/protocol.d.ts.map +1 -1
  87. package/dist/protocol.js +14 -60
  88. package/dist/protocol.js.map +1 -1
  89. package/dist/registry.d.ts +37 -58
  90. package/dist/registry.d.ts.map +1 -1
  91. package/dist/registry.js +88 -96
  92. package/dist/registry.js.map +1 -1
  93. package/dist/render.d.ts +89 -13
  94. package/dist/render.d.ts.map +1 -1
  95. package/dist/render.js +111 -16
  96. package/dist/render.js.map +1 -1
  97. package/dist/runtime-registry.d.ts +7 -66
  98. package/dist/runtime-registry.d.ts.map +1 -1
  99. package/dist/runtime-registry.js +39 -114
  100. package/dist/runtime-registry.js.map +1 -1
  101. package/dist/scenarios/index.d.ts +1 -1
  102. package/dist/scenarios/index.d.ts.map +1 -1
  103. package/dist/scenarios/index.js +1 -1
  104. package/dist/scenarios/index.js.map +1 -1
  105. package/dist/scenarios/parse.d.ts +4 -18
  106. package/dist/scenarios/parse.d.ts.map +1 -1
  107. package/dist/scenarios/parse.js +14 -34
  108. package/dist/scenarios/parse.js.map +1 -1
  109. package/dist/scenarios/scenario.d.ts +18 -74
  110. package/dist/scenarios/scenario.d.ts.map +1 -1
  111. package/dist/scenarios/scenario.js +7 -34
  112. package/dist/scenarios/scenario.js.map +1 -1
  113. package/dist/scenarios/storage.d.ts +11 -41
  114. package/dist/scenarios/storage.d.ts.map +1 -1
  115. package/dist/scenarios/storage.js +57 -47
  116. package/dist/scenarios/storage.js.map +1 -1
  117. package/dist/server.d.ts.map +1 -1
  118. package/dist/server.js +69 -19
  119. package/dist/server.js.map +1 -1
  120. package/dist/session.d.ts +90 -259
  121. package/dist/session.d.ts.map +1 -1
  122. package/dist/session.js +136 -250
  123. package/dist/session.js.map +1 -1
  124. package/dist/tools/analyze.d.ts +32 -118
  125. package/dist/tools/analyze.d.ts.map +1 -1
  126. package/dist/tools/analyze.js +65 -186
  127. package/dist/tools/analyze.js.map +1 -1
  128. package/dist/tools/browser-click.d.ts +3 -21
  129. package/dist/tools/browser-click.d.ts.map +1 -1
  130. package/dist/tools/browser-click.js +10 -31
  131. package/dist/tools/browser-click.js.map +1 -1
  132. package/dist/tools/browser-close-session.d.ts +4 -13
  133. package/dist/tools/browser-close-session.d.ts.map +1 -1
  134. package/dist/tools/browser-close-session.js +4 -13
  135. package/dist/tools/browser-close-session.js.map +1 -1
  136. package/dist/tools/browser-fill.d.ts +5 -36
  137. package/dist/tools/browser-fill.d.ts.map +1 -1
  138. package/dist/tools/browser-fill.js +9 -44
  139. package/dist/tools/browser-fill.js.map +1 -1
  140. package/dist/tools/browser-navigate.d.ts +6 -27
  141. package/dist/tools/browser-navigate.d.ts.map +1 -1
  142. package/dist/tools/browser-navigate.js +6 -23
  143. package/dist/tools/browser-navigate.js.map +1 -1
  144. package/dist/tools/browser-run-scenario.d.ts +5 -31
  145. package/dist/tools/browser-run-scenario.d.ts.map +1 -1
  146. package/dist/tools/browser-run-scenario.js +10 -46
  147. package/dist/tools/browser-run-scenario.js.map +1 -1
  148. package/dist/tools/browser-save-scenario.d.ts +3 -28
  149. package/dist/tools/browser-save-scenario.d.ts.map +1 -1
  150. package/dist/tools/browser-save-scenario.js +47 -84
  151. package/dist/tools/browser-save-scenario.js.map +1 -1
  152. package/dist/tools/browser-snapshot.d.ts +6 -39
  153. package/dist/tools/browser-snapshot.d.ts.map +1 -1
  154. package/dist/tools/browser-snapshot.js +4 -31
  155. package/dist/tools/browser-snapshot.js.map +1 -1
  156. package/dist/tools/browser-start-session.d.ts +4 -23
  157. package/dist/tools/browser-start-session.d.ts.map +1 -1
  158. package/dist/tools/browser-start-session.js +145 -56
  159. package/dist/tools/browser-start-session.js.map +1 -1
  160. package/dist/tools/browser-type.d.ts +5 -35
  161. package/dist/tools/browser-type.d.ts.map +1 -1
  162. package/dist/tools/browser-type.js +10 -45
  163. package/dist/tools/browser-type.js.map +1 -1
  164. package/dist/tools/contracts.d.ts +9 -86
  165. package/dist/tools/contracts.d.ts.map +1 -1
  166. package/dist/tools/contracts.js +24 -80
  167. package/dist/tools/contracts.js.map +1 -1
  168. package/dist/tools/cross-pr.d.ts +42 -30
  169. package/dist/tools/cross-pr.d.ts.map +1 -1
  170. package/dist/tools/cross-pr.js +81 -62
  171. package/dist/tools/cross-pr.js.map +1 -1
  172. package/dist/tools/git-diff.d.ts +18 -2
  173. package/dist/tools/git-diff.d.ts.map +1 -1
  174. package/dist/tools/git-diff.js +118 -26
  175. package/dist/tools/git-diff.js.map +1 -1
  176. package/dist/tools/git-history.d.ts +5 -16
  177. package/dist/tools/git-history.d.ts.map +1 -1
  178. package/dist/tools/git-history.js +3 -10
  179. package/dist/tools/git-history.js.map +1 -1
  180. package/dist/tools/history.d.ts +4 -33
  181. package/dist/tools/history.d.ts.map +1 -1
  182. package/dist/tools/history.js +6 -31
  183. package/dist/tools/history.js.map +1 -1
  184. package/dist/tools/impact.d.ts +7 -51
  185. package/dist/tools/impact.d.ts.map +1 -1
  186. package/dist/tools/impact.js +15 -67
  187. package/dist/tools/impact.js.map +1 -1
  188. package/dist/tools/index.d.ts +3 -8
  189. package/dist/tools/index.d.ts.map +1 -1
  190. package/dist/tools/index.js +3 -8
  191. package/dist/tools/index.js.map +1 -1
  192. package/dist/tools/kit.d.ts +66 -113
  193. package/dist/tools/kit.d.ts.map +1 -1
  194. package/dist/tools/kit.js +60 -28
  195. package/dist/tools/kit.js.map +1 -1
  196. package/dist/tools/link-workspace.d.ts +7 -45
  197. package/dist/tools/link-workspace.d.ts.map +1 -1
  198. package/dist/tools/link-workspace.js +10 -48
  199. package/dist/tools/link-workspace.js.map +1 -1
  200. package/dist/tools/lookup.d.ts +4 -14
  201. package/dist/tools/lookup.d.ts.map +1 -1
  202. package/dist/tools/lookup.js +4 -14
  203. package/dist/tools/lookup.js.map +1 -1
  204. package/dist/tools/mark-incident.d.ts +7 -54
  205. package/dist/tools/mark-incident.d.ts.map +1 -1
  206. package/dist/tools/mark-incident.js +15 -68
  207. package/dist/tools/mark-incident.js.map +1 -1
  208. package/dist/tools/observe-runtime.d.ts +27 -210
  209. package/dist/tools/observe-runtime.d.ts.map +1 -1
  210. package/dist/tools/observe-runtime.js +273 -434
  211. package/dist/tools/observe-runtime.js.map +1 -1
  212. package/dist/tools/observe-tests.d.ts +9 -100
  213. package/dist/tools/observe-tests.d.ts.map +1 -1
  214. package/dist/tools/observe-tests.js +74 -152
  215. package/dist/tools/observe-tests.js.map +1 -1
  216. package/dist/tools/pr-analysis.d.ts +18 -2
  217. package/dist/tools/pr-analysis.d.ts.map +1 -1
  218. package/dist/tools/pr-analysis.js +73 -23
  219. package/dist/tools/pr-analysis.js.map +1 -1
  220. package/dist/tools/pre-push.d.ts +74 -16
  221. package/dist/tools/pre-push.d.ts.map +1 -1
  222. package/dist/tools/pre-push.js +152 -51
  223. package/dist/tools/pre-push.js.map +1 -1
  224. package/dist/tools/propagation.d.ts +11 -53
  225. package/dist/tools/propagation.d.ts.map +1 -1
  226. package/dist/tools/propagation.js +17 -58
  227. package/dist/tools/propagation.js.map +1 -1
  228. package/dist/tools/questions.d.ts +13 -63
  229. package/dist/tools/questions.d.ts.map +1 -1
  230. package/dist/tools/questions.js +33 -105
  231. package/dist/tools/questions.js.map +1 -1
  232. package/dist/tools/refusal-fetch.d.ts +4 -40
  233. package/dist/tools/refusal-fetch.d.ts.map +1 -1
  234. package/dist/tools/refusal-fetch.js +4 -40
  235. package/dist/tools/refusal-fetch.js.map +1 -1
  236. package/dist/tools/runtime-incident.d.ts +4 -63
  237. package/dist/tools/runtime-incident.d.ts.map +1 -1
  238. package/dist/tools/runtime-incident.js +10 -87
  239. package/dist/tools/runtime-incident.js.map +1 -1
  240. package/dist/tools/scope.d.ts +7 -25
  241. package/dist/tools/scope.d.ts.map +1 -1
  242. package/dist/tools/scope.js +10 -29
  243. package/dist/tools/scope.js.map +1 -1
  244. package/dist/tools/similar-incidents.d.ts +11 -86
  245. package/dist/tools/similar-incidents.d.ts.map +1 -1
  246. package/dist/tools/similar-incidents.js +7 -71
  247. package/dist/tools/similar-incidents.js.map +1 -1
  248. package/dist/tools/validate.d.ts +29 -70
  249. package/dist/tools/validate.d.ts.map +1 -1
  250. package/dist/tools/validate.js +141 -85
  251. package/dist/tools/validate.js.map +1 -1
  252. package/dist/tools/verification-status.d.ts +9 -64
  253. package/dist/tools/verification-status.d.ts.map +1 -1
  254. package/dist/tools/verification-status.js +9 -62
  255. package/dist/tools/verification-status.js.map +1 -1
  256. package/dist/tools/verify-claim.d.ts +5 -52
  257. package/dist/tools/verify-claim.d.ts.map +1 -1
  258. package/dist/tools/verify-claim.js +6 -56
  259. package/dist/tools/verify-claim.js.map +1 -1
  260. package/dist/transport.d.ts +15 -52
  261. package/dist/transport.d.ts.map +1 -1
  262. package/dist/transport.js +16 -60
  263. package/dist/transport.js.map +1 -1
  264. package/package.json +40 -22
@@ -1,53 +1,15 @@
1
1
  /**
2
- * `validate` — §15's static validation engine, currently its env/config check.
3
- *
4
- * The architecture calls this one *"cheapest and most reliable — ship first"*,
5
- * and it is the first tool here whose output is a statement about the user's
6
- * code rather than a measurement of the graph.
7
- *
8
- * ## Two things this tool refuses to do, and both are the point
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
- * One environment/configuration finding.
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
- * A variable and how much of the repository stands behind it.
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
- * False when no adapter supplied environment reads.
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
- * §"an attribute is read, and the type does not declare it" — always a
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
- * §"a migration outside the migrations directory, or a broken revision
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":"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"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/tools/validate.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,12 @@
1
1
  /**
2
- * `validate` — §15's static validation engine, currently its env/config check.
3
- *
4
- * The architecture calls this one *"cheapest and most reliable — ship first"*,
5
- * and it is the first tool here whose output is a statement about the user's
6
- * code rather than a measurement of the graph.
7
- *
8
- * ## Two things this tool refuses to do, and both are the point
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 was compared at all: no configuration files, no reads, no
105
- // migration, no attribute read, no migration revision. Any one of them
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
- // UAT round 3, Suggestion 5, audited into this tool too: a `files` scope
113
- // matching zero FILE nodes in the graph is not a clean result — it means
114
- // none of the named files were ever read into the graph at all (wrong
115
- // path, or never parsed), which is a different claim from "read them and
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
- // MK-7: the leading clause a caller reads first, graded on the axis that
121
- // actually matters — `claim`. A lead or a rollback finding is worth a look;
122
- // a defect is the thing this tool exists to catch. Never blur the two into
123
- // one count, the exact failure `EnvFindingReport.claim`'s own doc names.
124
- const otherFindings = leads + rollback.data.findings.length;
125
- // A "Clean" verdict resting entirely on a files scope that matched nothing
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
- // Hand-off from Lane 2 (B6): render.ts now refuses to relay a `truncated`
147
- // answer with no `truncatedDetail`. `result.truncated` below is one boolean
148
- // folded from five independently-truncatable sources — env findings,
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: a variable read by a module forty
190
- // others import is a different sentence from one read by a single
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. Dropping one half's notes
231
- // because another had something to say is the silent-degradation
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
- // A missing environment variable is §11A.5's canonical name-level fact —
248
- // the variable exists or it does not — which is the one claim R2 supports at
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
- version: "1.0.0",
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. Also reports variables set in " +
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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"}