@specship/specship-win32-arm64 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/dist/activation/steering.d.ts +4 -4
- package/lib/dist/activation/steering.d.ts.map +1 -1
- package/lib/dist/activation/steering.js +6 -6
- package/lib/dist/activation/steering.js.map +1 -1
- package/lib/dist/bin/specship.js +232 -40
- package/lib/dist/bin/specship.js.map +1 -1
- package/lib/dist/commands/specship/learn.md +5 -3
- package/lib/dist/commands/specship/spec.md +73 -15
- package/lib/dist/db/spec-queries.d.ts +73 -3
- package/lib/dist/db/spec-queries.d.ts.map +1 -1
- package/lib/dist/db/spec-queries.js +139 -5
- package/lib/dist/db/spec-queries.js.map +1 -1
- package/lib/dist/enforce/changed-files.d.ts +28 -0
- package/lib/dist/enforce/changed-files.d.ts.map +1 -0
- package/lib/dist/enforce/changed-files.js +72 -0
- package/lib/dist/enforce/changed-files.js.map +1 -0
- package/lib/dist/enforce/enforce.d.ts +28 -1
- package/lib/dist/enforce/enforce.d.ts.map +1 -1
- package/lib/dist/enforce/enforce.js +37 -5
- package/lib/dist/enforce/enforce.js.map +1 -1
- package/lib/dist/extraction/grammars.d.ts +10 -0
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +32 -3
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +7 -0
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts +7 -0
- package/lib/dist/extraction/specs/markdown-spec-extractor.d.ts.map +1 -1
- package/lib/dist/extraction/specs/markdown-spec-extractor.js +81 -8
- package/lib/dist/extraction/specs/markdown-spec-extractor.js.map +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-pascal.wasm.gz +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-scala.wasm.gz +0 -0
- package/lib/dist/graph/spec-coverage.d.ts +86 -0
- package/lib/dist/graph/spec-coverage.d.ts.map +1 -0
- package/lib/dist/graph/spec-coverage.js +152 -0
- package/lib/dist/graph/spec-coverage.js.map +1 -0
- package/lib/dist/index.d.ts +69 -6
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +133 -21
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts +33 -8
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +50 -50
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/init-offer.d.ts +14 -9
- package/lib/dist/installer/init-offer.d.ts.map +1 -1
- package/lib/dist/installer/init-offer.js +13 -9
- package/lib/dist/installer/init-offer.js.map +1 -1
- package/lib/dist/installer/install-defaults.d.ts +62 -0
- package/lib/dist/installer/install-defaults.d.ts.map +1 -0
- package/lib/dist/installer/install-defaults.js +67 -0
- package/lib/dist/installer/install-defaults.js.map +1 -0
- package/lib/dist/installer/targets/claude.d.ts +14 -0
- package/lib/dist/installer/targets/claude.d.ts.map +1 -1
- package/lib/dist/installer/targets/claude.js +64 -0
- package/lib/dist/installer/targets/claude.js.map +1 -1
- package/lib/dist/installer/targets/shared.js +4 -4
- package/lib/dist/installer/targets/shared.js.map +1 -1
- package/lib/dist/mcp/fitness-tool.d.ts +5 -6
- package/lib/dist/mcp/fitness-tool.d.ts.map +1 -1
- package/lib/dist/mcp/fitness-tool.js +0 -16
- package/lib/dist/mcp/fitness-tool.js.map +1 -1
- package/lib/dist/mcp/health-tool.d.ts +26 -0
- package/lib/dist/mcp/health-tool.d.ts.map +1 -0
- package/lib/dist/mcp/health-tool.js +50 -0
- package/lib/dist/mcp/health-tool.js.map +1 -0
- package/lib/dist/mcp/maintainability-tool.d.ts +5 -7
- package/lib/dist/mcp/maintainability-tool.d.ts.map +1 -1
- package/lib/dist/mcp/maintainability-tool.js +0 -16
- package/lib/dist/mcp/maintainability-tool.js.map +1 -1
- package/lib/dist/mcp/model-context.d.ts +13 -2
- package/lib/dist/mcp/model-context.d.ts.map +1 -1
- package/lib/dist/mcp/model-context.js +39 -12
- package/lib/dist/mcp/model-context.js.map +1 -1
- package/lib/dist/mcp/proxy.d.ts.map +1 -1
- package/lib/dist/mcp/proxy.js +4 -1
- package/lib/dist/mcp/proxy.js.map +1 -1
- package/lib/dist/mcp/server-instructions.d.ts +1 -1
- package/lib/dist/mcp/server-instructions.d.ts.map +1 -1
- package/lib/dist/mcp/server-instructions.js +5 -4
- package/lib/dist/mcp/server-instructions.js.map +1 -1
- package/lib/dist/mcp/spec-tools.d.ts.map +1 -1
- package/lib/dist/mcp/spec-tools.js +213 -28
- package/lib/dist/mcp/spec-tools.js.map +1 -1
- package/lib/dist/mcp/tools.d.ts +12 -8
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +89 -48
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.d.ts +44 -2
- package/lib/dist/resolution/spec-link-resolver.d.ts.map +1 -1
- package/lib/dist/resolution/spec-link-resolver.js +132 -0
- package/lib/dist/resolution/spec-link-resolver.js.map +1 -1
- package/lib/dist/resolution/test-title-links.d.ts +62 -0
- package/lib/dist/resolution/test-title-links.d.ts.map +1 -0
- package/lib/dist/resolution/test-title-links.js +108 -0
- package/lib/dist/resolution/test-title-links.js.map +1 -0
- package/lib/dist/search/query-parser.d.ts.map +1 -1
- package/lib/dist/search/query-parser.js +6 -1
- package/lib/dist/search/query-parser.js.map +1 -1
- package/lib/dist/server/project-registry.js +1 -1
- package/lib/dist/server/routes/claude.js +9 -36
- package/lib/dist/server/routes/graph.js +53 -7
- package/lib/dist/server/routes/mcp.js +4 -3
- package/lib/dist/server/routes/projects.js +4 -4
- package/lib/dist/server/routes/spec.js +49 -7
- package/lib/dist/server/server.js +29 -17
- package/lib/dist/skills/spec-author/SKILL.md +164 -0
- package/lib/dist/skills/spec-author/references/format.md +210 -0
- package/lib/dist/skills/spec-author/references/gap-questions.md +152 -0
- package/lib/dist/skills/spec-author/references/quality-rubric.md +125 -0
- package/lib/dist/skills/spec-author/references/review-checklist.md +175 -0
- package/lib/dist/spec-lint/lint.d.ts +82 -0
- package/lib/dist/spec-lint/lint.d.ts.map +1 -0
- package/lib/dist/spec-lint/lint.js +430 -0
- package/lib/dist/spec-lint/lint.js.map +1 -0
- package/lib/dist/statusline/index.js.map +1 -1
- package/lib/dist/statusline/render.d.ts +1 -1
- package/lib/dist/statusline/render.d.ts.map +1 -1
- package/lib/dist/statusline/render.js +3 -1
- package/lib/dist/statusline/render.js.map +1 -1
- package/lib/dist/ui/assets/index-BzuUWUAE.js +50 -0
- package/lib/dist/ui/index.html +1 -1
- package/lib/dist/verify/report-ingest.d.ts +88 -0
- package/lib/dist/verify/report-ingest.d.ts.map +1 -0
- package/lib/dist/verify/report-ingest.js +269 -0
- package/lib/dist/verify/report-ingest.js.map +1 -0
- package/lib/dist/workflows/defaults/spec-fix.yaml +103 -12
- package/lib/dist/workflows/defaults/spec-implement-mixed.yaml +264 -21
- package/lib/dist/workflows/defaults/spec-implement.yaml +260 -19
- package/lib/dist/workflows/defaults/spec-verify.yaml +60 -9
- package/lib/node_modules/.package-lock.json +1 -1
- package/lib/package.json +7 -3
- package/package.json +1 -1
- package/lib/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
- package/lib/dist/extraction/wasm/tree-sitter-scala.wasm +0 -0
- package/lib/dist/server/ingest/impact-query.js +0 -343
- package/lib/dist/server/routes/events.js +0 -152
- package/lib/dist/ui/assets/index-CjjaftDw.js +0 -50
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* Highest-confidence signal wins per logical key — `upsertSpecLink` enforces
|
|
28
28
|
* this.
|
|
29
29
|
*/
|
|
30
|
-
import { Spec, SpecLink, SpecLinkState } from '../types';
|
|
30
|
+
import { Node, NodeKind, Spec, SpecLink, SpecLinkState } from '../types';
|
|
31
31
|
import { QueryBuilder } from '../db/queries';
|
|
32
32
|
import { SpecQueries } from '../db/spec-queries';
|
|
33
33
|
import { SpecLinkCandidate } from '../extraction/specs/types';
|
|
@@ -49,6 +49,12 @@ export interface SpecLinkResolverOptions {
|
|
|
49
49
|
* If true, log a one-line summary per resolved link.
|
|
50
50
|
*/
|
|
51
51
|
verbose?: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Absolute project root. Required by {@link SpecLinkResolver.applyTestTitleLinks},
|
|
54
|
+
* which reads test files from disk to scan their `it()` titles
|
|
55
|
+
* (REQ-VSTATE-002); without it that pass is a no-op.
|
|
56
|
+
*/
|
|
57
|
+
projectRoot?: string;
|
|
52
58
|
}
|
|
53
59
|
export interface SpecLinkResolverStats {
|
|
54
60
|
scanned: number;
|
|
@@ -57,6 +63,19 @@ export interface SpecLinkResolverStats {
|
|
|
57
63
|
driftedCode: number;
|
|
58
64
|
candidatesApplied: number;
|
|
59
65
|
commentLinksApplied: number;
|
|
66
|
+
/**
|
|
67
|
+
* `tests` links created from a spec id inside an `it()` / `test()` title in a
|
|
68
|
+
* test file (REQ-VSTATE-002). Optional so existing stats literals keep
|
|
69
|
+
* compiling — every producer sets it.
|
|
70
|
+
*/
|
|
71
|
+
testTitleLinksApplied?: number;
|
|
72
|
+
/**
|
|
73
|
+
* `spec-declaration` links removed this pass because the bullet that declared
|
|
74
|
+
* them is no longer in the spec file (REQ-VSTATE-001). Deleting a declaration
|
|
75
|
+
* deletes its link, and the count is how that stays visible rather than
|
|
76
|
+
* silent. Optional so existing stats literals keep compiling.
|
|
77
|
+
*/
|
|
78
|
+
declarationsReconciled?: number;
|
|
60
79
|
/**
|
|
61
80
|
* Orphaned links whose logical target reappeared this pass and were
|
|
62
81
|
* auto-reattached to `implemented` (REQ-LINKFIX-001).
|
|
@@ -133,8 +152,13 @@ export declare class SpecLinkResolver {
|
|
|
133
152
|
* `kind` is a hint, not a hard filter — we prefer an exact-kind match
|
|
134
153
|
* but fall back to any kind on the same path/qname (a function turned
|
|
135
154
|
* method is still "the same logical symbol" from the spec's POV).
|
|
155
|
+
*
|
|
156
|
+
* Public so the assert paths (MCP tool + dashboard route) can validate a
|
|
157
|
+
* target BEFORE recording a link (REQ-REVINT-003) — the same lookup the
|
|
158
|
+
* resolver uses, so validate-then-insert and the later resolve pass can
|
|
159
|
+
* never disagree.
|
|
136
160
|
*/
|
|
137
|
-
|
|
161
|
+
findLogicalTarget(filePath: string, qualifiedName: string, kind: NodeKind): Node | null;
|
|
138
162
|
/**
|
|
139
163
|
* Apply spec-declared `implementations:` links. Provenance = 'spec-declaration',
|
|
140
164
|
* confidence 0.7. Idempotent — upsert by logical key.
|
|
@@ -152,6 +176,24 @@ export declare class SpecLinkResolver {
|
|
|
152
176
|
* Bounded by the changed-files set — full-graph scans only on indexAll.
|
|
153
177
|
*/
|
|
154
178
|
applyCodeCommentLinks(changedFiles: string[], stats?: SpecLinkResolverStats): void;
|
|
179
|
+
/**
|
|
180
|
+
* Scan TEST FILES for spec ids inside `it()` / `test()` titles and emit
|
|
181
|
+
* `tests`-kind links (REQ-VSTATE-002).
|
|
182
|
+
*
|
|
183
|
+
* One link per (spec id, test file): the target is the test file's `file`
|
|
184
|
+
* node — the only node the graph actually has for a test case's location —
|
|
185
|
+
* and the matched titles ride along in `metadata.testTitles`, which is what
|
|
186
|
+
* `specship verify --report` matches a reported case against (REQ-VSTATE-004).
|
|
187
|
+
*
|
|
188
|
+
* File-derived by construction: nothing is remembered between passes, so the
|
|
189
|
+
* links are re-created on every extraction and survive re-index (A3). Only
|
|
190
|
+
* recognized test files are scanned, so a spec id in a source file's message
|
|
191
|
+
* string can never become evidence (A2).
|
|
192
|
+
*
|
|
193
|
+
* Requires `projectRoot` in the resolver options (it reads the files); a
|
|
194
|
+
* resolver without one silently skips the pass.
|
|
195
|
+
*/
|
|
196
|
+
applyTestTitleLinks(changedFiles: string[], stats?: SpecLinkResolverStats): void;
|
|
155
197
|
/**
|
|
156
198
|
* Mark every link of `specId` as `drifted(spec)` because the spec's
|
|
157
199
|
* `contentHash` changed since the link was established.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-link-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"spec-link-resolver.d.ts","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,12 +28,48 @@
|
|
|
28
28
|
* Highest-confidence signal wins per logical key — `upsertSpecLink` enforces
|
|
29
29
|
* this.
|
|
30
30
|
*/
|
|
31
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
32
|
+
if (k2 === undefined) k2 = k;
|
|
33
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
34
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
35
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
36
|
+
}
|
|
37
|
+
Object.defineProperty(o, k2, desc);
|
|
38
|
+
}) : (function(o, m, k, k2) {
|
|
39
|
+
if (k2 === undefined) k2 = k;
|
|
40
|
+
o[k2] = m[k];
|
|
41
|
+
}));
|
|
42
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
43
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
44
|
+
}) : function(o, v) {
|
|
45
|
+
o["default"] = v;
|
|
46
|
+
});
|
|
47
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
48
|
+
var ownKeys = function(o) {
|
|
49
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
50
|
+
var ar = [];
|
|
51
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
52
|
+
return ar;
|
|
53
|
+
};
|
|
54
|
+
return ownKeys(o);
|
|
55
|
+
};
|
|
56
|
+
return function (mod) {
|
|
57
|
+
if (mod && mod.__esModule) return mod;
|
|
58
|
+
var result = {};
|
|
59
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
60
|
+
__setModuleDefault(result, mod);
|
|
61
|
+
return result;
|
|
62
|
+
};
|
|
63
|
+
})();
|
|
31
64
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
65
|
exports.SpecLinkResolver = exports.INHERITED_LINK_MAX_DEPTH = void 0;
|
|
33
66
|
exports.canonicalQualifiedName = canonicalQualifiedName;
|
|
34
67
|
exports.qualifiedNameVariants = qualifiedNameVariants;
|
|
35
68
|
exports.sourceSpecIds = sourceSpecIds;
|
|
36
69
|
const types_1 = require("../types");
|
|
70
|
+
const test_title_links_1 = require("./test-title-links");
|
|
71
|
+
const fs = __importStar(require("fs"));
|
|
72
|
+
const path = __importStar(require("path"));
|
|
37
73
|
/** Pattern: `// @implements REQ-X` or `# @implements REQ-X` etc. */
|
|
38
74
|
const CODE_COMMENT_IMPL = /@implements\s+([A-Za-z][A-Za-z0-9_.-]*)/g;
|
|
39
75
|
/**
|
|
@@ -99,6 +135,18 @@ function sourceSpecIds(spec) {
|
|
|
99
135
|
// Dedup while preserving order.
|
|
100
136
|
return [...new Set(out)];
|
|
101
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* Metadata carrying the non-test-target flag for a `tests` link
|
|
140
|
+
* (REQ-VSTATE-002.A4). Returns `undefined` for every other link kind so
|
|
141
|
+
* non-evidence links keep clean metadata. The flag is written on EVERY pass
|
|
142
|
+
* (true and false) so a target that moves into — or out of — a test file
|
|
143
|
+
* self-corrects instead of keeping a stale verdict.
|
|
144
|
+
*/
|
|
145
|
+
function nonTestEvidenceFlag(kind, targetFilePath) {
|
|
146
|
+
if (kind !== 'tests')
|
|
147
|
+
return undefined;
|
|
148
|
+
return { nonTestTarget: !(0, test_title_links_1.isRecognizedTestFile)(targetFilePath) };
|
|
149
|
+
}
|
|
102
150
|
class SpecLinkResolver {
|
|
103
151
|
queries;
|
|
104
152
|
specQueries;
|
|
@@ -209,6 +257,11 @@ class SpecLinkResolver {
|
|
|
209
257
|
* `kind` is a hint, not a hard filter — we prefer an exact-kind match
|
|
210
258
|
* but fall back to any kind on the same path/qname (a function turned
|
|
211
259
|
* method is still "the same logical symbol" from the spec's POV).
|
|
260
|
+
*
|
|
261
|
+
* Public so the assert paths (MCP tool + dashboard route) can validate a
|
|
262
|
+
* target BEFORE recording a link (REQ-REVINT-003) — the same lookup the
|
|
263
|
+
* resolver uses, so validate-then-insert and the later resolve pass can
|
|
264
|
+
* never disagree.
|
|
212
265
|
*/
|
|
213
266
|
findLogicalTarget(filePath, qualifiedName, kind) {
|
|
214
267
|
// Look up every separator-form variant (Class.method ⇄ Class::method) so
|
|
@@ -267,6 +320,10 @@ class SpecLinkResolver {
|
|
|
267
320
|
nodeSigAtLink: resolvedNode?.signature,
|
|
268
321
|
provenance: 'spec-declaration',
|
|
269
322
|
confidence: 0.7,
|
|
323
|
+
// A `verifies:` bullet pointing outside a recognized test file is
|
|
324
|
+
// flagged, not trusted (REQ-VSTATE-002.A4) — fixtures and helpers may be
|
|
325
|
+
// declared, but the flag keeps them out of the evidence gate.
|
|
326
|
+
metadata: nonTestEvidenceFlag(c.kind, c.targetFilePath),
|
|
270
327
|
createdAt: now,
|
|
271
328
|
updatedAt: now,
|
|
272
329
|
});
|
|
@@ -324,6 +381,9 @@ class SpecLinkResolver {
|
|
|
324
381
|
nodeSigAtLink: node.signature,
|
|
325
382
|
provenance: 'code-comment',
|
|
326
383
|
confidence: 0.9,
|
|
384
|
+
// An `@verifies` marker on a symbol that isn't in a test file
|
|
385
|
+
// is flagged the same way as a declared one (REQ-VSTATE-002.A4).
|
|
386
|
+
metadata: nonTestEvidenceFlag(kind, node.filePath),
|
|
327
387
|
createdAt: now,
|
|
328
388
|
updatedAt: now,
|
|
329
389
|
});
|
|
@@ -335,6 +395,78 @@ class SpecLinkResolver {
|
|
|
335
395
|
}
|
|
336
396
|
}
|
|
337
397
|
}
|
|
398
|
+
/**
|
|
399
|
+
* Scan TEST FILES for spec ids inside `it()` / `test()` titles and emit
|
|
400
|
+
* `tests`-kind links (REQ-VSTATE-002).
|
|
401
|
+
*
|
|
402
|
+
* One link per (spec id, test file): the target is the test file's `file`
|
|
403
|
+
* node — the only node the graph actually has for a test case's location —
|
|
404
|
+
* and the matched titles ride along in `metadata.testTitles`, which is what
|
|
405
|
+
* `specship verify --report` matches a reported case against (REQ-VSTATE-004).
|
|
406
|
+
*
|
|
407
|
+
* File-derived by construction: nothing is remembered between passes, so the
|
|
408
|
+
* links are re-created on every extraction and survive re-index (A3). Only
|
|
409
|
+
* recognized test files are scanned, so a spec id in a source file's message
|
|
410
|
+
* string can never become evidence (A2).
|
|
411
|
+
*
|
|
412
|
+
* Requires `projectRoot` in the resolver options (it reads the files); a
|
|
413
|
+
* resolver without one silently skips the pass.
|
|
414
|
+
*/
|
|
415
|
+
applyTestTitleLinks(changedFiles, stats) {
|
|
416
|
+
const root = this.opts.projectRoot;
|
|
417
|
+
if (!root)
|
|
418
|
+
return;
|
|
419
|
+
const now = Date.now();
|
|
420
|
+
for (const file of changedFiles) {
|
|
421
|
+
if (!(0, test_title_links_1.isRecognizedTestFile)(file))
|
|
422
|
+
continue;
|
|
423
|
+
let source;
|
|
424
|
+
try {
|
|
425
|
+
source = fs.readFileSync(path.resolve(root, file), 'utf-8');
|
|
426
|
+
}
|
|
427
|
+
catch {
|
|
428
|
+
continue; // deleted / unreadable — the resolve pass handles the fallout
|
|
429
|
+
}
|
|
430
|
+
// Group the file's titles by spec id so one link carries every title in
|
|
431
|
+
// that file which names the same criterion.
|
|
432
|
+
const titlesBySpec = new Map();
|
|
433
|
+
for (const ref of (0, test_title_links_1.scanTestTitleRefs)(source)) {
|
|
434
|
+
const titles = titlesBySpec.get(ref.specId) ?? [];
|
|
435
|
+
if (!titles.includes(ref.title))
|
|
436
|
+
titles.push(ref.title);
|
|
437
|
+
titlesBySpec.set(ref.specId, titles);
|
|
438
|
+
}
|
|
439
|
+
if (titlesBySpec.size === 0)
|
|
440
|
+
continue;
|
|
441
|
+
const fileNode = this.findLogicalTarget(file, file, 'file');
|
|
442
|
+
for (const [specId, titles] of titlesBySpec) {
|
|
443
|
+
const spec = this.specQueries.getSpecById(specId);
|
|
444
|
+
if (!spec)
|
|
445
|
+
continue; // not a real spec id — just words in a title
|
|
446
|
+
this.specQueries.upsertSpecLink({
|
|
447
|
+
specId,
|
|
448
|
+
targetFilePath: file,
|
|
449
|
+
targetQualifiedName: canonicalQualifiedName(fileNode?.qualifiedName ?? file),
|
|
450
|
+
targetNodeKind: 'file',
|
|
451
|
+
resolvedNodeId: fileNode?.id,
|
|
452
|
+
kind: 'tests',
|
|
453
|
+
state: fileNode ? 'implemented' : 'orphaned',
|
|
454
|
+
driftAxis: null,
|
|
455
|
+
specHashAtLink: spec.contentHash,
|
|
456
|
+
// A file node's "signature" is not a stable drift axis (any edit to
|
|
457
|
+
// the file would trip it), so no baseline is taken here.
|
|
458
|
+
nodeSigAtLink: undefined,
|
|
459
|
+
provenance: 'code-comment',
|
|
460
|
+
confidence: 0.9,
|
|
461
|
+
metadata: { testTitles: titles, evidenceSource: 'test-title', nonTestTarget: false },
|
|
462
|
+
createdAt: now,
|
|
463
|
+
updatedAt: now,
|
|
464
|
+
});
|
|
465
|
+
if (stats)
|
|
466
|
+
stats.testTitleLinksApplied = (stats.testTitleLinksApplied ?? 0) + 1;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
}
|
|
338
470
|
// ===========================================================================
|
|
339
471
|
// Spec-side drift (called from spec extraction stage)
|
|
340
472
|
// ===========================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-link-resolver.js","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spec-link-resolver.js","sourceRoot":"","sources":["../../src/resolution/spec-link-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Test-title spec links (REQ-VSTATE-002).
|
|
3
|
+
*
|
|
4
|
+
* The repo convention is already `it('does X (REQ-FOO-001.A1)', …)`. That title
|
|
5
|
+
* is the most precise test evidence a spec can have — it names the criterion the
|
|
6
|
+
* test case proves — but nothing read it, so evidence had to be re-declared as a
|
|
7
|
+
* `verifies:` block or an `@verifies` comment on a hoisted named function, and a
|
|
8
|
+
* fixture file could satisfy the evidence gate by accident.
|
|
9
|
+
*
|
|
10
|
+
* This module turns those titles into `tests`-kind link candidates:
|
|
11
|
+
*
|
|
12
|
+
* - Only TEST FILES are scanned (`__tests__/`, `*.test.*`, `*.spec.*`,
|
|
13
|
+
* `*_test.*`) — a spec id inside a source file's message string must never
|
|
14
|
+
* become test evidence (REQ-VSTATE-002.A2).
|
|
15
|
+
* - A candidate is file-derived: it is re-discovered from the file on every
|
|
16
|
+
* extraction pass, so it survives re-index (A3).
|
|
17
|
+
*
|
|
18
|
+
* TARGET CHOICE: the graph has no node for an `it(...)` call — extractors emit
|
|
19
|
+
* nodes for declarations, not for call expressions — so a link that targeted the
|
|
20
|
+
* test case itself would never resolve and would rest at `orphaned`. The link
|
|
21
|
+
* therefore targets the test FILE's `file` node (always present, always
|
|
22
|
+
* resolvable) and carries the matched test titles in `metadata.testTitles`. That
|
|
23
|
+
* is the per-test-case granularity report ingestion needs (REQ-VSTATE-004 maps a
|
|
24
|
+
* reported case to a link by file + title) without inventing node kinds.
|
|
25
|
+
*/
|
|
26
|
+
import type { SpecLinkKind } from '../types';
|
|
27
|
+
/** A spec id found inside an `it()` / `test()` title in a test file. */
|
|
28
|
+
export interface TestTitleRef {
|
|
29
|
+
specId: string;
|
|
30
|
+
/** The test title exactly as written (without quotes). */
|
|
31
|
+
title: string;
|
|
32
|
+
/** 1-indexed line of the `it()` / `test()` call. */
|
|
33
|
+
line: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* True when `filePath` is a recognized test file (REQ-VSTATE-002.A4): it lives
|
|
37
|
+
* under a `__tests__/` (or `tests/`, `spec/`) directory, or its basename carries
|
|
38
|
+
* a `.test.` / `.spec.` / `_test.` marker.
|
|
39
|
+
*
|
|
40
|
+
* This is the SAME predicate the evidence gate uses, so "what counts as a test"
|
|
41
|
+
* can't disagree between the two sides.
|
|
42
|
+
*/
|
|
43
|
+
export declare function isRecognizedTestFile(filePath: string): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* True when a `tests`-kind link points at something that is NOT in a recognized
|
|
46
|
+
* test file, or was flagged as such when it was recorded (REQ-VSTATE-002.A4).
|
|
47
|
+
* A fixture, a helper, or a source symbol can be *declared* as evidence, but it
|
|
48
|
+
* must not satisfy the promotion gate.
|
|
49
|
+
*/
|
|
50
|
+
export declare function isNonTestEvidence(link: {
|
|
51
|
+
kind: SpecLinkKind;
|
|
52
|
+
targetFilePath: string;
|
|
53
|
+
metadata?: Record<string, unknown>;
|
|
54
|
+
}): boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Every spec id mentioned in an `it()` / `test()` title in `source`.
|
|
57
|
+
*
|
|
58
|
+
* Returns one entry per (spec id, title) pair — a title naming two criteria
|
|
59
|
+
* yields two refs, and the same criterion in two titles yields two refs.
|
|
60
|
+
*/
|
|
61
|
+
export declare function scanTestTitleRefs(source: string): TestTitleRef[];
|
|
62
|
+
//# sourceMappingURL=test-title-links.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-title-links.d.ts","sourceRoot":"","sources":["../../src/resolution/test-title-links.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;CACd;AAkBD;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQ9D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,IAAI,EAAE,YAAY,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,OAAO,CAIV;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,EAAE,CAoBhE"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Test-title spec links (REQ-VSTATE-002).
|
|
4
|
+
*
|
|
5
|
+
* The repo convention is already `it('does X (REQ-FOO-001.A1)', …)`. That title
|
|
6
|
+
* is the most precise test evidence a spec can have — it names the criterion the
|
|
7
|
+
* test case proves — but nothing read it, so evidence had to be re-declared as a
|
|
8
|
+
* `verifies:` block or an `@verifies` comment on a hoisted named function, and a
|
|
9
|
+
* fixture file could satisfy the evidence gate by accident.
|
|
10
|
+
*
|
|
11
|
+
* This module turns those titles into `tests`-kind link candidates:
|
|
12
|
+
*
|
|
13
|
+
* - Only TEST FILES are scanned (`__tests__/`, `*.test.*`, `*.spec.*`,
|
|
14
|
+
* `*_test.*`) — a spec id inside a source file's message string must never
|
|
15
|
+
* become test evidence (REQ-VSTATE-002.A2).
|
|
16
|
+
* - A candidate is file-derived: it is re-discovered from the file on every
|
|
17
|
+
* extraction pass, so it survives re-index (A3).
|
|
18
|
+
*
|
|
19
|
+
* TARGET CHOICE: the graph has no node for an `it(...)` call — extractors emit
|
|
20
|
+
* nodes for declarations, not for call expressions — so a link that targeted the
|
|
21
|
+
* test case itself would never resolve and would rest at `orphaned`. The link
|
|
22
|
+
* therefore targets the test FILE's `file` node (always present, always
|
|
23
|
+
* resolvable) and carries the matched test titles in `metadata.testTitles`. That
|
|
24
|
+
* is the per-test-case granularity report ingestion needs (REQ-VSTATE-004 maps a
|
|
25
|
+
* reported case to a link by file + title) without inventing node kinds.
|
|
26
|
+
*/
|
|
27
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
28
|
+
exports.isRecognizedTestFile = isRecognizedTestFile;
|
|
29
|
+
exports.isNonTestEvidence = isNonTestEvidence;
|
|
30
|
+
exports.scanTestTitleRefs = scanTestTitleRefs;
|
|
31
|
+
/**
|
|
32
|
+
* `it(` / `test(` / `bench(` with the usual modifier chains
|
|
33
|
+
* (`it.each`, `test.skip`, `it.runIf(...)`, `it.concurrent.only`) followed by a
|
|
34
|
+
* quoted title. Group 2 is the quote char, group 3 the raw title body.
|
|
35
|
+
*/
|
|
36
|
+
const TEST_CALL = /\b(?:it|test|bench)((?:\.\w+)*(?:\([^()]*\))?(?:\.\w+)*)?\s*\(\s*(['"`])((?:\\.|(?!\2)[^\\])*)\2/g;
|
|
37
|
+
/**
|
|
38
|
+
* A spec id as embedded in a test title: an upper-case dashed token
|
|
39
|
+
* (`REQ-VSTATE-001`, `VSTATE-DOC`, `DOM-AUTH-003`) with an optional `.A<N>`
|
|
40
|
+
* acceptance suffix. Deliberately loose — every hit is checked against the specs
|
|
41
|
+
* table before a link is created, so a false positive costs nothing.
|
|
42
|
+
*/
|
|
43
|
+
const SPEC_ID_IN_TITLE = /\b([A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+(?:\.A\d+)?)\b/g;
|
|
44
|
+
/**
|
|
45
|
+
* True when `filePath` is a recognized test file (REQ-VSTATE-002.A4): it lives
|
|
46
|
+
* under a `__tests__/` (or `tests/`, `spec/`) directory, or its basename carries
|
|
47
|
+
* a `.test.` / `.spec.` / `_test.` marker.
|
|
48
|
+
*
|
|
49
|
+
* This is the SAME predicate the evidence gate uses, so "what counts as a test"
|
|
50
|
+
* can't disagree between the two sides.
|
|
51
|
+
*/
|
|
52
|
+
function isRecognizedTestFile(filePath) {
|
|
53
|
+
const p = filePath.replace(/\\/g, '/');
|
|
54
|
+
const base = p.split('/').pop() ?? '';
|
|
55
|
+
if (/(^|\/)(__tests__|__test__|tests|spec)(\/|$)/.test(p))
|
|
56
|
+
return true;
|
|
57
|
+
if (/\.(test|spec)\.[^.]+$/.test(base))
|
|
58
|
+
return true;
|
|
59
|
+
if (/_test\.[^.]+$/.test(base))
|
|
60
|
+
return true;
|
|
61
|
+
if (/(^|[^A-Za-z])test_[^/]*\.py$/.test(base))
|
|
62
|
+
return true;
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* True when a `tests`-kind link points at something that is NOT in a recognized
|
|
67
|
+
* test file, or was flagged as such when it was recorded (REQ-VSTATE-002.A4).
|
|
68
|
+
* A fixture, a helper, or a source symbol can be *declared* as evidence, but it
|
|
69
|
+
* must not satisfy the promotion gate.
|
|
70
|
+
*/
|
|
71
|
+
function isNonTestEvidence(link) {
|
|
72
|
+
if (link.kind !== 'tests')
|
|
73
|
+
return false;
|
|
74
|
+
if (link.metadata?.nonTestTarget === true)
|
|
75
|
+
return true;
|
|
76
|
+
return !isRecognizedTestFile(link.targetFilePath);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Every spec id mentioned in an `it()` / `test()` title in `source`.
|
|
80
|
+
*
|
|
81
|
+
* Returns one entry per (spec id, title) pair — a title naming two criteria
|
|
82
|
+
* yields two refs, and the same criterion in two titles yields two refs.
|
|
83
|
+
*/
|
|
84
|
+
function scanTestTitleRefs(source) {
|
|
85
|
+
const out = [];
|
|
86
|
+
TEST_CALL.lastIndex = 0;
|
|
87
|
+
let m;
|
|
88
|
+
while ((m = TEST_CALL.exec(source)) !== null) {
|
|
89
|
+
const title = m[3];
|
|
90
|
+
if (title === undefined || title.length === 0)
|
|
91
|
+
continue;
|
|
92
|
+
// Template literals with `${}` interpolation are not stable evidence keys —
|
|
93
|
+
// the report carries the interpolated text, which we can't reconstruct.
|
|
94
|
+
if (m[2] === '`' && title.includes('${'))
|
|
95
|
+
continue;
|
|
96
|
+
const line = source.slice(0, m.index).split('\n').length;
|
|
97
|
+
SPEC_ID_IN_TITLE.lastIndex = 0;
|
|
98
|
+
let idMatch;
|
|
99
|
+
while ((idMatch = SPEC_ID_IN_TITLE.exec(title)) !== null) {
|
|
100
|
+
const specId = idMatch[1];
|
|
101
|
+
if (specId === undefined)
|
|
102
|
+
continue;
|
|
103
|
+
out.push({ specId, title, line });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=test-title-links.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-title-links.js","sourceRoot":"","sources":["../../src/resolution/test-title-links.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;AAqCH,oDAQC;AAQD,8CAQC;AAQD,8CAoBC;AA5ED;;;;GAIG;AACH,MAAM,SAAS,GACb,mGAAmG,CAAC;AAEtG;;;;;GAKG;AACH,MAAM,gBAAgB,GAAG,iDAAiD,CAAC;AAE3E;;;;;;;GAOG;AACH,SAAgB,oBAAoB,CAAC,QAAgB;IACnD,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;IACtC,IAAI,6CAA6C,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACvE,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3D,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,IAIjC;IACC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACvD,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,MAAc;IAC9C,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;IACxB,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QACxD,4EAA4E;QAC5E,wEAAwE;QACxE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,SAAS;QACnD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACzD,gBAAgB,CAAC,SAAS,GAAG,CAAC,CAAC;QAC/B,IAAI,OAA+B,CAAC;QACpC,OAAO,CAAC,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,MAAM,KAAK,SAAS;gBAAE,SAAS;YACnC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-parser.d.ts","sourceRoot":"","sources":["../../src/search/query-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,sFAAsF;IACtF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAiBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAiFnD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"query-parser.d.ts","sourceRoot":"","sources":["../../src/search/query-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,6DAA6D;IAC7D,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,iEAAiE;IACjE,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,sFAAsF;IACtF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAiBD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAiFnD;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAgCjF"}
|
|
@@ -172,6 +172,11 @@ function boundedEditDistance(a, b, maxDist) {
|
|
|
172
172
|
return maxDist + 1;
|
|
173
173
|
[prev, cur] = [cur, prev];
|
|
174
174
|
}
|
|
175
|
-
|
|
175
|
+
// Clamp the final cell. The per-row early exit above only runs once per
|
|
176
|
+
// character of `a`, so a short `a` against a long `b` can finish the DP
|
|
177
|
+
// without ever tripping it — leaving an unclamped distance above the
|
|
178
|
+
// promised `maxDist + 1` ceiling, and making the result asymmetric in the
|
|
179
|
+
// argument order (`("ab","bcccca",4)` → 5 but `("bcccca","ab",4)` → 6).
|
|
180
|
+
return Math.min(prev[bl], maxDist + 1);
|
|
176
181
|
}
|
|
177
182
|
//# sourceMappingURL=query-parser.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../src/search/query-parser.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;;AAqCH,gCAiFC;AAUD,
|
|
1
|
+
{"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../src/search/query-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -71,7 +71,7 @@ export class ProjectRegistry {
|
|
|
71
71
|
* Exempt `projectPath` from LRU eviction. The server pins its primary:
|
|
72
72
|
* routes capture the primary instance by reference (`app.primaryCg`), so
|
|
73
73
|
* an eviction CLOSES a handle they still use and every request 500s with
|
|
74
|
-
* "database connection is not open". Surfaced when
|
|
74
|
+
* "database connection is not open". Surfaced when a cross-project sweep
|
|
75
75
|
* started opening many projects through this cache.
|
|
76
76
|
*/
|
|
77
77
|
pin(projectPath) { this.pinned.add(projectPath); }
|