@descryy/mcp 0.4.0 → 0.6.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 (121) hide show
  1. package/dist/bin/descry-mcp.js +16 -2
  2. package/dist/bin/descry-mcp.js.map +1 -1
  3. package/dist/browser/driver.d.ts +105 -6
  4. package/dist/browser/driver.d.ts.map +1 -1
  5. package/dist/browser/driver.js +17 -3
  6. package/dist/browser/driver.js.map +1 -1
  7. package/dist/browser/evidence.d.ts +11 -0
  8. package/dist/browser/evidence.d.ts.map +1 -1
  9. package/dist/browser/evidence.js +64 -8
  10. package/dist/browser/evidence.js.map +1 -1
  11. package/dist/browser/fake-driver.d.ts +8 -0
  12. package/dist/browser/fake-driver.d.ts.map +1 -1
  13. package/dist/browser/fake-driver.js +26 -3
  14. package/dist/browser/fake-driver.js.map +1 -1
  15. package/dist/browser/playwright-driver.d.ts +68 -14
  16. package/dist/browser/playwright-driver.d.ts.map +1 -1
  17. package/dist/browser/playwright-driver.js +318 -38
  18. package/dist/browser/playwright-driver.js.map +1 -1
  19. package/dist/browser/provider.d.ts +10 -4
  20. package/dist/browser/provider.d.ts.map +1 -1
  21. package/dist/browser/provider.js +10 -4
  22. package/dist/browser/provider.js.map +1 -1
  23. package/dist/browser/scenario-runner.d.ts +9 -0
  24. package/dist/browser/scenario-runner.d.ts.map +1 -1
  25. package/dist/browser/scenario-runner.js +32 -2
  26. package/dist/browser/scenario-runner.js.map +1 -1
  27. package/dist/browser/tool-support.js +1 -1
  28. package/dist/browser/tool-support.js.map +1 -1
  29. package/dist/cancellation.d.ts +55 -0
  30. package/dist/cancellation.d.ts.map +1 -0
  31. package/dist/cancellation.js +76 -0
  32. package/dist/cancellation.js.map +1 -0
  33. package/dist/capped.d.ts +41 -0
  34. package/dist/capped.d.ts.map +1 -0
  35. package/dist/capped.js +35 -0
  36. package/dist/capped.js.map +1 -0
  37. package/dist/registry.d.ts +20 -1
  38. package/dist/registry.d.ts.map +1 -1
  39. package/dist/registry.js +71 -4
  40. package/dist/registry.js.map +1 -1
  41. package/dist/render.d.ts +92 -0
  42. package/dist/render.d.ts.map +1 -1
  43. package/dist/render.js +250 -5
  44. package/dist/render.js.map +1 -1
  45. package/dist/runtime-registry.d.ts +19 -1
  46. package/dist/runtime-registry.d.ts.map +1 -1
  47. package/dist/runtime-registry.js +88 -4
  48. package/dist/runtime-registry.js.map +1 -1
  49. package/dist/server.d.ts +19 -0
  50. package/dist/server.d.ts.map +1 -1
  51. package/dist/server.js +135 -11
  52. package/dist/server.js.map +1 -1
  53. package/dist/session.d.ts +22 -0
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +27 -1
  56. package/dist/session.js.map +1 -1
  57. package/dist/tools/analyze.d.ts +23 -3
  58. package/dist/tools/analyze.d.ts.map +1 -1
  59. package/dist/tools/analyze.js +35 -3
  60. package/dist/tools/analyze.js.map +1 -1
  61. package/dist/tools/browser-click.d.ts.map +1 -1
  62. package/dist/tools/browser-click.js +14 -0
  63. package/dist/tools/browser-click.js.map +1 -1
  64. package/dist/tools/browser-fill.d.ts.map +1 -1
  65. package/dist/tools/browser-fill.js +14 -0
  66. package/dist/tools/browser-fill.js.map +1 -1
  67. package/dist/tools/browser-navigate.d.ts.map +1 -1
  68. package/dist/tools/browser-navigate.js +14 -0
  69. package/dist/tools/browser-navigate.js.map +1 -1
  70. package/dist/tools/browser-run-scenario.d.ts.map +1 -1
  71. package/dist/tools/browser-run-scenario.js +12 -3
  72. package/dist/tools/browser-run-scenario.js.map +1 -1
  73. package/dist/tools/browser-save-scenario.d.ts.map +1 -1
  74. package/dist/tools/browser-save-scenario.js +109 -3
  75. package/dist/tools/browser-save-scenario.js.map +1 -1
  76. package/dist/tools/browser-start-session.d.ts.map +1 -1
  77. package/dist/tools/browser-start-session.js +43 -0
  78. package/dist/tools/browser-start-session.js.map +1 -1
  79. package/dist/tools/browser-type.d.ts.map +1 -1
  80. package/dist/tools/browser-type.js +14 -0
  81. package/dist/tools/browser-type.js.map +1 -1
  82. package/dist/tools/contracts.d.ts +41 -10
  83. package/dist/tools/contracts.d.ts.map +1 -1
  84. package/dist/tools/contracts.js +117 -17
  85. package/dist/tools/contracts.js.map +1 -1
  86. package/dist/tools/cross-pr.d.ts +39 -10
  87. package/dist/tools/cross-pr.d.ts.map +1 -1
  88. package/dist/tools/cross-pr.js +113 -29
  89. package/dist/tools/cross-pr.js.map +1 -1
  90. package/dist/tools/git-diff.d.ts.map +1 -1
  91. package/dist/tools/git-diff.js +30 -2
  92. package/dist/tools/git-diff.js.map +1 -1
  93. package/dist/tools/impact.d.ts.map +1 -1
  94. package/dist/tools/impact.js +50 -2
  95. package/dist/tools/impact.js.map +1 -1
  96. package/dist/tools/observe-runtime.d.ts.map +1 -1
  97. package/dist/tools/observe-runtime.js +84 -4
  98. package/dist/tools/observe-runtime.js.map +1 -1
  99. package/dist/tools/observe-tests.d.ts +12 -0
  100. package/dist/tools/observe-tests.d.ts.map +1 -1
  101. package/dist/tools/observe-tests.js +92 -8
  102. package/dist/tools/observe-tests.js.map +1 -1
  103. package/dist/tools/pre-push.d.ts +40 -7
  104. package/dist/tools/pre-push.d.ts.map +1 -1
  105. package/dist/tools/pre-push.js +65 -23
  106. package/dist/tools/pre-push.js.map +1 -1
  107. package/dist/tools/scope.d.ts.map +1 -1
  108. package/dist/tools/scope.js +20 -4
  109. package/dist/tools/scope.js.map +1 -1
  110. package/dist/tools/validate.d.ts +40 -1
  111. package/dist/tools/validate.d.ts.map +1 -1
  112. package/dist/tools/validate.js +150 -27
  113. package/dist/tools/validate.js.map +1 -1
  114. package/dist/tools/verification-status.d.ts.map +1 -1
  115. package/dist/tools/verification-status.js +3 -3
  116. package/dist/tools/verification-status.js.map +1 -1
  117. package/dist/transport.d.ts +12 -1
  118. package/dist/transport.d.ts.map +1 -1
  119. package/dist/transport.js +30 -16
  120. package/dist/transport.js.map +1 -1
  121. package/package.json +22 -13
@@ -42,6 +42,18 @@
42
42
  * the same two-call `confirmToken` handshake `observe_runtime` and `questions`
43
43
  * use.
44
44
  *
45
+ * ## The handshake validates the command before minting, not after
46
+ *
47
+ * A UAT caught the unconfirmed call minting a token that promised to run a
48
+ * command the confirmed call would go on to refuse by name — validation had
49
+ * moved to the wrong side of the two-call gate. `describeAction` now calls
50
+ * `discoverRunner` (imported from `@descryy/runtime-test-runner`, the same
51
+ * predicate `collector.start()` calls internally) before returning a
52
+ * `willDo`, so an unsupported command is refused at the first call, with the
53
+ * exact reason text the confirmed call would otherwise have produced — see
54
+ * `describeAction`'s own doc comment for why no second copy of the runner
55
+ * table exists here.
56
+ *
45
57
  * `evidence` — it reports what ran. It draws no conclusion about the code and
46
58
  * writes no finding or hypothesis.
47
59
  *
@@ -70,8 +82,9 @@
70
82
  import { isAbsolute, join } from "node:path";
71
83
  import { randomBytes } from "node:crypto";
72
84
  import { applyObservedTests, counts } from "@descryy/core";
85
+ import { cancellationHeadline, cancellationNotes, whenAborted } from "../cancellation.js";
73
86
  import { witnessedSignalTypes } from "./observe-runtime.js";
74
- import { createTestRunnerCollector } from "@descryy/runtime-test-runner";
87
+ import { createTestRunnerCollector, discoverRunner } from "@descryy/runtime-test-runner";
75
88
  import { resolveObservedTestCase } from "@descryy/runtime-test-runner";
76
89
  import { answer, optionalInteger, optionalString, requiredString, ToolInputError, } from "./kit.js";
77
90
  const DEFAULT_TIMEOUT_MS = 600_000;
@@ -80,10 +93,11 @@ const SCHEMA = {
80
93
  properties: {
81
94
  command: {
82
95
  type: "string",
83
- description: "The command that runs this project's test suite, exactly as you would type it in a terminal, " +
84
- "whatever this project's runner happens to be. It is run in the repository and it executes your " +
85
- "code, which is why the call takes a two-step confirmation. The runner is identified from the " +
86
- "command itself; a runner Descry has no reporter for is refused by name rather than run blind.",
96
+ description: "The command that runs this project's test suite, exactly as you would type it in a terminal. " +
97
+ "This observes ten declared runner families, never a runner sniffed from package.json or a " +
98
+ "lockfile -- a refusal names the ones it knows. It is run in the repository and it executes " +
99
+ "your code, which is why the call takes a two-step confirmation. The runner is identified from " +
100
+ "the command itself; a command naming none of the ten is refused by name rather than run blind.",
87
101
  },
88
102
  cwd: {
89
103
  type: "string",
@@ -169,7 +183,7 @@ async function run(args, ctx) {
169
183
  "Read every count against testsReported. A recorded count on its own cannot distinguish a fully " +
170
184
  "mapped suite from a mostly unmapped one.",
171
185
  ];
172
- const refuse = (headline, data = {}) => answer({
186
+ const refuse = (headline, data = {}, extraNotes = []) => answer({
173
187
  headline,
174
188
  state: "refused",
175
189
  nameLevel: true,
@@ -181,7 +195,7 @@ async function run(args, ctx) {
181
195
  graphBuiltAt: base.graphBuiltAt,
182
196
  irSchemaVersion: base.irSchemaVersion,
183
197
  commitSpread: base.commitSpread,
184
- notes,
198
+ notes: [...notes, ...extraNotes],
185
199
  data: {
186
200
  runId: null,
187
201
  testsReported: 0,
@@ -207,6 +221,14 @@ async function run(args, ctx) {
207
221
  const collector = createTestRunnerCollector({
208
222
  configuration: { command, cwd },
209
223
  });
224
+ // Before the spawn. A cancelled call that started the repository's own test
225
+ // suite anyway would run the user's code for nobody — and this tool's own
226
+ // schema calls that an action for exactly that reason.
227
+ if (ctx.signal.aborted) {
228
+ return refuse(cancellationHeadline("no test runner was started") +
229
+ " " +
230
+ cancellationNotes("Nothing was spawned and nothing was written.")[0]);
231
+ }
210
232
  ctx.progress(`Running ${command}`);
211
233
  const started = await collector.start({
212
234
  executionId: `observe-tests-${Date.now()}`,
@@ -224,8 +246,29 @@ async function run(args, ctx) {
224
246
  if (!started.available) {
225
247
  return refuse(`The test command could not be run: ${started.reason} Nothing was started and nothing was written.`);
226
248
  }
227
- await collector.waitForCompletion();
249
+ // The long wait. A test suite runs for minutes, and a cancellation that only
250
+ // stopped the *reply* would leave that suite running against the developer's
251
+ // repository — writing files, holding ports, occupying the machine — for as
252
+ // long as it takes, with nothing left that would ever read its output.
253
+ //
254
+ // `stop()` kills the runner's process group, so the cancelled path and the
255
+ // ordinary path release the same way; the difference is only whether the
256
+ // process had finished on its own first.
257
+ const abort = whenAborted(ctx.signal);
258
+ try {
259
+ await Promise.race([collector.waitForCompletion(), abort.promise]);
260
+ }
261
+ finally {
262
+ abort.dispose();
263
+ }
228
264
  await collector.stop();
265
+ if (ctx.signal.aborted) {
266
+ // Nothing is written. Half a suite recorded as coverage is worse than none
267
+ // of it: the rows that never ran would read as tested, and coverage is the
268
+ // one axis this tool exists to make honest.
269
+ return refuse(cancellationHeadline("the test runner was stopped"), {}, cancellationNotes("The runner's process group was killed, so nothing it started is still running.", "No result was recorded against any node — a partial suite written as coverage would make the " +
270
+ "tests that never ran look tested."));
271
+ }
229
272
  const coverage = collector.traceCoverage();
230
273
  const { observations, unresolved } = observationsFromEvidence(driver, collected, root.repo, {
231
274
  repoRoot: root.absolutePath,
@@ -285,10 +328,51 @@ async function run(args, ctx) {
285
328
  notes,
286
329
  });
287
330
  }
331
+ /**
332
+ * B4's other half. The old bug: the unconfirmed call minted a token
333
+ * describing exactly what the confirmed call would go on to refuse --
334
+ * "Confirmation required: Run '.venv/bin/python -m unittest…'" followed by
335
+ * "names no runner this collector observes" a call later. Validation had
336
+ * moved to the wrong side of the handshake.
337
+ *
338
+ * `discoverRunner` is the fix, imported rather than re-derived: it is the
339
+ * same pure, side-effect-free "would this command be matched, and by which
340
+ * profile" predicate `collector.start()` already calls internally on the
341
+ * confirmed side (`test-runner-collector.ts`'s own `start()` calls it first,
342
+ * before anything is spawned, and returns `{available:false,
343
+ * reason: discovery.reason}` verbatim on a miss). Calling it here, before a
344
+ * token is ever minted, means an unsupported command is refused at the
345
+ * *first* call, and with the exact same reason text the confirmed call would
346
+ * have produced -- not a second, hand-copied version of it that could say
347
+ * something different. A second implementation of the runner table is
348
+ * exactly what B4 already was (a hardcoded three-runner refusal that fell out
349
+ * of step with `PROFILES`), so nothing here re-derives which commands match;
350
+ * it only asks the one function that knows.
351
+ *
352
+ * `supportedRunnerExamples` -- the derived-from-`PROFILES` runner list that
353
+ * fixes `discoverRunner`'s *own* refusal text from a stale hardcoded three
354
+ * up to the real ten -- is not yet part of the published
355
+ * `@descryy/runtime-test-runner` this repo depends on (pinned at 0.2.1 --
356
+ * DEC-395, exact cross-repo pins while the engine is on 0.x). It lives on
357
+ * the coordinated, unpublished `descry-runtime` branch alongside that same
358
+ * text fix, in the same commit. That is why no second lookup for it is
359
+ * added here: by the time a published version exports it, `discoverRunner`'s
360
+ * own `reason` will already have been regenerated from it (same release),
361
+ * so a parallel check here would only ever reproduce a string
362
+ * `discovery.reason` already carries -- dead weight, not a second fix. Until
363
+ * that coordinated release lands, this refuses with whatever text
364
+ * `discoverRunner` gives it -- correct in substance (it refuses exactly the
365
+ * commands the confirmed side would refuse), stale only in which runners the
366
+ * message names as supported.
367
+ */
288
368
  function describeAction(args) {
289
369
  const command = args["command"];
290
370
  if (typeof command !== "string")
291
371
  throw new ToolInputError('"command" must be a string');
372
+ const discovery = discoverRunner(command);
373
+ if (!discovery.ok) {
374
+ throw new ToolInputError(`The test command could not be run: ${discovery.reason} Nothing was started and nothing was written.`);
375
+ }
292
376
  const cwd = args["cwd"];
293
377
  return (`Run "${command}"${typeof cwd === "string" ? ` in ${cwd}` : ""} and record which tests executed. ` +
294
378
  "This executes your repository's own code. It writes to the graph's earned ledger; it changes no " +
@@ -1 +1 @@
1
- {"version":3,"file":"observe-tests.js","sourceRoot":"","sources":["../../src/tools/observe-tests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observe-tests.js","sourceRoot":"","sources":["../../src/tools/observe-tests.ts"],"names":[],"mappings":"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"}
@@ -38,12 +38,28 @@
38
38
  *
39
39
  * ## Blocking versus informational
40
40
  *
41
- * `blockingTotal` counts `contracts` and `validate` findings only. Those are
42
- * claims that something is *wrong*. `scope` and `pr_analysis` answer "what does
43
- * this change touch" — real, useful, and not a defect, so counting them would
44
- * make every change with a blast radius look like a failure. `descry check`
45
- * exits non-zero on `blockingTotal`, which is why the line has to be drawn
46
- * here rather than left to the caller.
41
+ * `blockingTotal` counts `contracts` and `validate` findings only, and — since
42
+ * UAT round 3, Suggestion 6 — only the ones each tool's own `claim` field
43
+ * marks a `defect`. `scope` and `pr_analysis` answer "what does this change
44
+ * touch" — real, useful, and not a defect, so counting them would make every
45
+ * change with a blast radius look like a failure. A `lead` (`ROUTE_NOT_CALLED`,
46
+ * `SET_BUT_UNDOCUMENTED`) is worth a look but is not provable from the graph
47
+ * alone, so it is counted separately in `leadTotal` rather than folded into
48
+ * the number a git hook branches on. `descry check` exits non-zero on
49
+ * `blockingTotal`, which is why the line has to be drawn here rather than
50
+ * left to the caller.
51
+ *
52
+ * ## Scoped to what you are pushing
53
+ *
54
+ * UAT round 3, B11. `contracts` did not receive the `files` this tool was
55
+ * called with, so `blockingTotal` counted the repository's entire standing
56
+ * backlog rather than the change being pushed — 15 pre-existing
57
+ * `ROUTE_NOT_CALLED` findings for unrelated paths, on a push touching three
58
+ * unrelated files. `contracts` now takes the same `files` this tool was
59
+ * given (it already accepted `paths`, a different axis — a URL template
60
+ * substring, not a source file), so both blocking sources answer about the
61
+ * files in front of the developer. `validate` already took `files`; only the
62
+ * threading into `contracts` was missing.
47
63
  *
48
64
  * ## Class and tier
49
65
  *
@@ -58,6 +74,12 @@ export interface PrePushSection {
58
74
  readonly state: string;
59
75
  /** How many items this source found in total, before this tool took its top few. */
60
76
  readonly total: number;
77
+ /**
78
+ * Of `total`, how many are `claim: "defect"` — provable from the graph
79
+ * alone. Zero for `scope` and `pr_analysis`, which report no claims at all.
80
+ * `total - defects` is this section's contribution to `leadTotal`.
81
+ */
82
+ readonly defects: number;
61
83
  /** The top few, in the order that source reported them. */
62
84
  readonly shown: readonly unknown[];
63
85
  /** True when this source's findings count toward `blockingTotal`. */
@@ -68,8 +90,19 @@ export interface PrePushSection {
68
90
  export interface PrePushData {
69
91
  readonly files: readonly string[];
70
92
  readonly sections: readonly PrePushSection[];
71
- /** Contract and environment findings only — see the module header on why scope is not counted. */
93
+ /**
94
+ * Contract and environment **defects** only — see the module header on why
95
+ * scope is not counted and why a lead is not either. What a git hook
96
+ * should branch on.
97
+ */
72
98
  readonly blockingTotal: number;
99
+ /**
100
+ * Contract and environment **leads** — worth a look, never blocking. Kept
101
+ * under its own key rather than folded into `blockingTotal`, per this
102
+ * tool's own rule that a repo-wide or non-defect count never hides inside
103
+ * the number a hook branches on.
104
+ */
105
+ readonly leadTotal: number;
73
106
  /** The node budget actually applied to the traversing constituents. */
74
107
  readonly nodeBudget: number;
75
108
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pre-push.d.ts","sourceRoot":"","sources":["../../src/tools/pre-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAKH,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAuClB,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C,kGAAkG;IAClG,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAgND,eAAO,MAAM,WAAW,EAAE,cAezB,CAAC"}
1
+ {"version":3,"file":"pre-push.d.ts","sourceRoot":"","sources":["../../src/tools/pre-push.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmEG;AAKH,OAAO,EAML,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAuClB,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,CAAC;AAE/E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,+FAA+F;IAC/F,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oFAAoF;IACpF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,2DAA2D;IAC3D,QAAQ,CAAC,KAAK,EAAE,SAAS,OAAO,EAAE,CAAC;IACnC,qEAAqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,cAAc,EAAE,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAwOD,eAAO,MAAM,WAAW,EAAE,cAiBzB,CAAC"}
@@ -38,12 +38,28 @@
38
38
  *
39
39
  * ## Blocking versus informational
40
40
  *
41
- * `blockingTotal` counts `contracts` and `validate` findings only. Those are
42
- * claims that something is *wrong*. `scope` and `pr_analysis` answer "what does
43
- * this change touch" — real, useful, and not a defect, so counting them would
44
- * make every change with a blast radius look like a failure. `descry check`
45
- * exits non-zero on `blockingTotal`, which is why the line has to be drawn
46
- * here rather than left to the caller.
41
+ * `blockingTotal` counts `contracts` and `validate` findings only, and — since
42
+ * UAT round 3, Suggestion 6 — only the ones each tool's own `claim` field
43
+ * marks a `defect`. `scope` and `pr_analysis` answer "what does this change
44
+ * touch" — real, useful, and not a defect, so counting them would make every
45
+ * change with a blast radius look like a failure. A `lead` (`ROUTE_NOT_CALLED`,
46
+ * `SET_BUT_UNDOCUMENTED`) is worth a look but is not provable from the graph
47
+ * alone, so it is counted separately in `leadTotal` rather than folded into
48
+ * the number a git hook branches on. `descry check` exits non-zero on
49
+ * `blockingTotal`, which is why the line has to be drawn here rather than
50
+ * left to the caller.
51
+ *
52
+ * ## Scoped to what you are pushing
53
+ *
54
+ * UAT round 3, B11. `contracts` did not receive the `files` this tool was
55
+ * called with, so `blockingTotal` counted the repository's entire standing
56
+ * backlog rather than the change being pushed — 15 pre-existing
57
+ * `ROUTE_NOT_CALLED` findings for unrelated paths, on a push touching three
58
+ * unrelated files. `contracts` now takes the same `files` this tool was
59
+ * given (it already accepted `paths`, a different axis — a URL template
60
+ * substring, not a source file), so both blocking sources answer about the
61
+ * files in front of the developer. `validate` already took `files`; only the
62
+ * threading into `contracts` was missing.
47
63
  *
48
64
  * ## Class and tier
49
65
  *
@@ -97,6 +113,10 @@ function listOf(data, key) {
97
113
  const value = data[key];
98
114
  return Array.isArray(value) ? value : [];
99
115
  }
116
+ /** How many of `items` carry `claim: "defect"`. Items with no `claim` at all (scope, pr_analysis) count as zero. */
117
+ function defectsIn(items) {
118
+ return items.filter((item) => item.claim === "defect").length;
119
+ }
100
120
  async function run(args, ctx) {
101
121
  const files = optionalStringArray(args, "files") ?? [];
102
122
  const perSource = optionalInteger(args, "perSource", 1) ?? PER_SOURCE;
@@ -110,9 +130,10 @@ async function run(args, ctx) {
110
130
  "Sources are NOT ranked against each other. Whether a contract mismatch outranks an unset " +
111
131
  "environment variable is a judgement Descry has no model for, so each source contributes its " +
112
132
  "own top few and the totals say what they were selected from.",
113
- "blockingTotal counts contracts and validate findings only. scope and pr_analysis answer what a " +
114
- "change touches, which is not a defect — counting them would make every change with a blast " +
115
- "radius look like a failure.",
133
+ "blockingTotal counts contracts and validate findings claimed as defects only — see claim on " +
134
+ "each finding. scope and pr_analysis answer what a change touches, which is not a defect, and " +
135
+ "a lead (worth a look, not provable from the graph alone) is counted separately in leadTotal " +
136
+ "rather than folded into the number a hook branches on.",
116
137
  ];
117
138
  if (files.length === 0) {
118
139
  return answer({
@@ -125,7 +146,7 @@ async function run(args, ctx) {
125
146
  irSchemaVersion: base.irSchemaVersion,
126
147
  commitSpread: base.commitSpread,
127
148
  notes,
128
- data: { files: [], sections: [], blockingTotal: 0, nodeBudget },
149
+ data: { files: [], sections: [], blockingTotal: 0, leadTotal: 0, nodeBudget },
129
150
  });
130
151
  }
131
152
  // Sequential rather than concurrent, deliberately: these share one SQLite
@@ -152,6 +173,7 @@ async function run(args, ctx) {
152
173
  source,
153
174
  state: "failed",
154
175
  total: 0,
176
+ defects: 0,
155
177
  shown: [],
156
178
  blocking,
157
179
  headline: `${source} failed: ${error instanceof Error ? error.message : String(error)}`,
@@ -164,6 +186,9 @@ async function run(args, ctx) {
164
186
  source,
165
187
  state: sub.state,
166
188
  total: items.length,
189
+ // scope and pr_analysis carry no `claim` at all — `defectsIn` reads 0 for
190
+ // them, which is correct: neither reports a claim that something is wrong.
191
+ defects: defectsIn(items),
167
192
  shown: items.slice(0, perSource),
168
193
  blocking,
169
194
  headline: sub.headline,
@@ -181,6 +206,7 @@ async function run(args, ctx) {
181
206
  source: "pr_analysis",
182
207
  state: "refused",
183
208
  total: 0,
209
+ defects: 0,
184
210
  shown: [],
185
211
  blocking: false,
186
212
  headline: "pr_analysis needs a base ref to diff against and has no default. Pass \"base\" to include it.",
@@ -201,12 +227,21 @@ async function run(args, ctx) {
201
227
  }
202
228
  await runOne("contracts", contractsTool,
203
229
  // pathsOnly is what the pre-push tier means for a tool with no traversal to
204
- // budget — see the module header.
205
- { pathsOnly: true }, (data) => listOf(data, "findings"), true);
230
+ // budget — see the module header. `files` is UAT round 3, B11: without it,
231
+ // contracts compared the whole graph and this section's total was the
232
+ // repository's standing backlog, not the change being pushed.
233
+ { pathsOnly: true, files },
234
+ // shapeMismatches is always empty under pathsOnly, but folded in anyway
235
+ // rather than assumed empty — a future call that drops pathsOnly should
236
+ // not silently under-count defects here.
237
+ (data) => [...listOf(data, "findings"), ...listOf(data, "shapeMismatches")], true);
206
238
  await runOne("validate", validateTool, { files, maxFindings: VALIDATE_MAX_FINDINGS }, (data) => listOf(data, "findings"), true);
207
239
  const blockingTotal = sections
208
240
  .filter((section) => section.blocking)
209
- .reduce((sum, section) => sum + section.total, 0);
241
+ .reduce((sum, section) => sum + section.defects, 0);
242
+ const leadTotal = sections
243
+ .filter((section) => section.blocking)
244
+ .reduce((sum, section) => sum + (section.total - section.defects), 0);
210
245
  const failed = sections.filter((section) => section.state === "failed");
211
246
  if (failed.length > 0) {
212
247
  notes.push(`${failed.length} of 4 constituent(s) failed and contributed nothing: ` +
@@ -214,15 +249,20 @@ async function run(args, ctx) {
214
249
  "reply is not.");
215
250
  }
216
251
  return answer({
217
- headline: blockingTotal === 0
218
- ? `No contract or environment findings across ${files.length} changed file(s).`
219
- : `${blockingTotal} blocking finding(s) across ${files.length} changed file(s) — see the ` +
220
- "contracts and validate sections.",
252
+ headline: blockingTotal > 0
253
+ ? `${blockingTotal} defect(s) blocking across ${files.length} changed file(s)` +
254
+ (leadTotal > 0 ? `, plus ${leadTotal} lead(s) to review` : "") +
255
+ " — see the contracts and validate sections."
256
+ : leadTotal > 0
257
+ ? `No blocking defects across ${files.length} changed file(s); ${leadTotal} lead(s) to ` +
258
+ "review — see the contracts and validate sections."
259
+ : `No contract or environment findings across ${files.length} changed file(s).`,
221
260
  // `empty` is earned here: all four ran against a real graph and found
222
- // nothing blocking. A constituent that refused makes that untrue, so the
223
- // state follows the weakest link rather than the happy path.
224
- state: failed.length > 0 ? "failed" : blockingTotal > 0 ? "ok" : "empty",
225
- data: { files, sections, blockingTotal, nodeBudget },
261
+ // nothing at all, blocking or not. A constituent that refused makes that
262
+ // untrue, so the state follows the weakest link rather than the happy
263
+ // path — and a lead is still something found, so it is `ok`, not `empty`.
264
+ state: failed.length > 0 ? "failed" : blockingTotal > 0 || leadTotal > 0 ? "ok" : "empty",
265
+ data: { files, sections, blockingTotal, leadTotal, nodeBudget },
226
266
  resolutionFloor: (floors.length === 0 ? 0 : Math.min(...floors)),
227
267
  nameLevel: true,
228
268
  commitSha: base.commitSha,
@@ -242,8 +282,10 @@ export const prePushTool = {
242
282
  "returns one short envelope: what your change touches, what it touches that has no test, which " +
243
283
  "API contracts break, and which environment claims do not hold. Each source contributes its own " +
244
284
  "top few — they are deliberately not ranked against each other, because Descry has no model for " +
245
- "whether a contract mismatch outranks an unset variable. blockingTotal counts only the two " +
246
- "sources that report defects, and is what a git hook should branch on.",
285
+ "whether a contract mismatch outranks an unset variable. Both are scoped to the files you pass, " +
286
+ "not the repository's whole backlog. blockingTotal counts only defects (provable from the graph " +
287
+ "alone) from the two sources that report them, and is what a git hook should branch on; leads " +
288
+ "(worth a look, not provable alone) are counted separately in leadTotal.",
247
289
  inputSchema: SCHEMA,
248
290
  run,
249
291
  };
@@ -1 +1 @@
1
- {"version":3,"file":"pre-push.js","sourceRoot":"","sources":["../../src/tools/pre-push.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pre-push.js","sourceRoot":"","sources":["../../src/tools/pre-push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,iDAAiD;AACjD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;AA2JrD,eAAO,MAAM,SAAS,EAAE,cAavB,CAAC"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAIlB,iDAAiD;AACjD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;AA0KrD,eAAO,MAAM,SAAS,EAAE,cAavB,CAAC"}
@@ -17,6 +17,7 @@
17
17
  */
18
18
  import { nodesInFiles, scopeChange } from "@descryy/core";
19
19
  import { answer, briefNode, optionalEnum, optionalInteger, optionalStringArray, ToolInputError, } from "./kit.js";
20
+ import { capped } from "../capped.js";
20
21
  const TRIGGERS = ["pre-push", "pr", "nightly"];
21
22
  const SCHEMA = {
22
23
  type: "object",
@@ -113,9 +114,15 @@ async function run(args, ctx) {
113
114
  ...(budget === undefined ? {} : { budget }),
114
115
  });
115
116
  const affected = scoped.data.affected;
116
- const shown = affected.slice(0, limit);
117
- if (shown.length < affected.length) {
118
- notes.push(`${affected.length - shown.length} lower-scoring affected node(s) are in the scope but not ` +
117
+ // B6 — `capped()` produces the slice and its shown/total detail together,
118
+ // so this reply cannot cap without carrying what it capped. Previously this
119
+ // sliced by hand and only ever updated the prose note (below); `truncated`
120
+ // and `truncatedDetail` were never set, so `render.ts` reported `null` —
121
+ // this tool's reply was shorter than the scope it computed and nothing on
122
+ // the wire said so.
123
+ const cap = capped(affected, limit);
124
+ if (cap.detail !== null) {
125
+ notes.push(`${cap.detail.total - cap.detail.shown} lower-scoring affected node(s) are in the scope but not ` +
119
126
  `listed here — the reply is capped at ${limit}. Raise "limit" to see them; they were ` +
120
127
  "analysed either way.");
121
128
  }
@@ -130,15 +137,24 @@ async function run(args, ctx) {
130
137
  ...scoped,
131
138
  data: {
132
139
  changed: scoped.data.changed.map(shape),
133
- affected: shown.map(shape),
140
+ affected: cap.shown.map(shape),
134
141
  affectedTotal: affected.length,
135
142
  droppedForBudget: scoped.data.dropped.length,
136
143
  budget: scoped.data.budget,
137
144
  budgetUsed: scoped.data.budgetUsed,
138
145
  byTier,
139
146
  },
147
+ // Deliberately not `scoped.truncated` (`traverse.ts`'s own flag for
148
+ // nodes the node *budget* dropped before they ever reached `affected`).
149
+ // That is a different fact — fully disclosed on its own via
150
+ // `droppedForBudget` and `scoped.notes` — from "this reply is shorter
151
+ // than the scope this tool computed," which is what `truncated` here
152
+ // means. Conflating the two would make `total` claim a count this tool
153
+ // never actually reached.
154
+ truncated: cap.detail !== null,
140
155
  notes: [...scoped.notes, ...notes],
141
156
  },
157
+ ...(cap.detail === null ? {} : { truncatedDetail: cap.detail }),
142
158
  ...(affected.length === 0 ? { state: "empty" } : {}),
143
159
  nameLevel: true,
144
160
  headline: `${scoped.data.changed.length} changed symbol(s) reach ${affected.length} other node(s) ` +
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"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"}
@@ -20,8 +20,22 @@
20
20
  *
21
21
  * The declaration half runs regardless: configuration files are read straight
22
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.
23
37
  */
24
- import type { ConfigGraph, ConfigReadSite, EnvClaim, EnvEvidence, EnvFindingKind, EnvReport, RollbackFinding, RollbackReport } from "@descryy/core";
38
+ import type { AttributeFinding, AttributeReport, ConfigGraph, ConfigReadSite, EnvClaim, EnvEvidence, EnvFindingKind, EnvReport, MigrationIntegrityFinding, MigrationIntegrityReport, RollbackFinding, RollbackReport } from "@descryy/core";
25
39
  import type { ResolutionLevel } from "@descryy/ir";
26
40
  import { type ToolDefinition } from "./kit.ts";
27
41
  /**
@@ -98,6 +112,31 @@ export interface ValidateData {
98
112
  /** Named in plain words when `ran` is false. */
99
113
  readonly blockers: readonly string[];
100
114
  };
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
+ */
120
+ readonly attributeExistence: {
121
+ readonly findings: readonly AttributeFinding[];
122
+ readonly findingsTotal: number;
123
+ readonly examined: AttributeReport["examined"];
124
+ /** False when no READS edge onto a type-like node carried field-existence info at all. */
125
+ readonly ran: boolean;
126
+ };
127
+ /**
128
+ * §"a migration outside the migrations directory, or a broken revision
129
+ * chain" — both always defects, both provable from the graph alone.
130
+ */
131
+ readonly migrationIntegrity: {
132
+ readonly findings: readonly MigrationIntegrityFinding[];
133
+ readonly findingsTotal: number;
134
+ readonly examined: MigrationIntegrityReport["examined"];
135
+ readonly migrationsDirectory: string | null;
136
+ /** False when no module in the graph carried migration revision attrs. */
137
+ readonly ran: boolean;
138
+ readonly withheld: MigrationIntegrityReport["withheld"];
139
+ };
101
140
  }
102
141
  export declare const validateTool: ToolDefinition;
103
142
  //# sourceMappingURL=validate.d.ts.map