@promptci/core 0.0.1 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -201
- package/README.md +29 -30
- package/dist/action-pinning.d.ts +37 -0
- package/dist/action-pinning.d.ts.map +1 -0
- package/dist/action-pinning.js +277 -0
- package/dist/action-pinning.js.map +1 -0
- package/dist/agent-practices.d.ts +3 -1
- package/dist/agent-practices.d.ts.map +1 -1
- package/dist/agent-practices.js +198 -94
- package/dist/agent-practices.js.map +1 -1
- package/dist/ai-config.d.ts +178 -0
- package/dist/ai-config.d.ts.map +1 -0
- package/dist/ai-config.js +721 -0
- package/dist/ai-config.js.map +1 -0
- package/dist/alias-files.d.ts +33 -0
- package/dist/alias-files.d.ts.map +1 -0
- package/dist/alias-files.js +60 -0
- package/dist/alias-files.js.map +1 -0
- package/dist/baseline.d.ts +17 -1
- package/dist/baseline.d.ts.map +1 -1
- package/dist/baseline.js +5 -1
- package/dist/baseline.js.map +1 -1
- package/dist/buried-critical.d.ts +17 -0
- package/dist/buried-critical.d.ts.map +1 -0
- package/dist/buried-critical.js +107 -0
- package/dist/buried-critical.js.map +1 -0
- package/dist/canonical-owner.d.ts.map +1 -1
- package/dist/canonical-owner.js +60 -30
- package/dist/canonical-owner.js.map +1 -1
- package/dist/ci-alignment.d.ts.map +1 -1
- package/dist/ci-alignment.js +3 -2
- package/dist/ci-alignment.js.map +1 -1
- package/dist/command-validity.d.ts +16 -0
- package/dist/command-validity.d.ts.map +1 -1
- package/dist/command-validity.js +387 -134
- package/dist/command-validity.js.map +1 -1
- package/dist/conflicts.d.ts.map +1 -1
- package/dist/conflicts.js +4 -44
- package/dist/conflicts.js.map +1 -1
- package/dist/context-analysis.d.ts.map +1 -1
- package/dist/context-analysis.js +13 -2
- package/dist/context-analysis.js.map +1 -1
- package/dist/context-bloat.d.ts +20 -1
- package/dist/context-bloat.d.ts.map +1 -1
- package/dist/context-bloat.js +99 -15
- package/dist/context-bloat.js.map +1 -1
- package/dist/context-optimizer.d.ts.map +1 -1
- package/dist/context-optimizer.js +18 -54
- package/dist/context-optimizer.js.map +1 -1
- package/dist/copilot-instructions-detector.d.ts +24 -0
- package/dist/copilot-instructions-detector.d.ts.map +1 -0
- package/dist/copilot-instructions-detector.js +145 -0
- package/dist/copilot-instructions-detector.js.map +1 -0
- package/dist/cursor-rules-detector.d.ts +17 -0
- package/dist/cursor-rules-detector.d.ts.map +1 -0
- package/dist/cursor-rules-detector.js +110 -0
- package/dist/cursor-rules-detector.js.map +1 -0
- package/dist/custom-rules.d.ts +52 -0
- package/dist/custom-rules.d.ts.map +1 -0
- package/dist/custom-rules.js +303 -0
- package/dist/custom-rules.js.map +1 -0
- package/dist/dead-references.d.ts +8 -2
- package/dist/dead-references.d.ts.map +1 -1
- package/dist/dead-references.js +315 -68
- package/dist/dead-references.js.map +1 -1
- package/dist/dependency-staleness.d.ts +35 -0
- package/dist/dependency-staleness.d.ts.map +1 -0
- package/dist/dependency-staleness.js +1001 -0
- package/dist/dependency-staleness.js.map +1 -0
- package/dist/detectors.d.ts +1 -3
- package/dist/detectors.d.ts.map +1 -1
- package/dist/detectors.js +74 -56
- package/dist/detectors.js.map +1 -1
- package/dist/duplicates.d.ts.map +1 -1
- package/dist/duplicates.js +15 -9
- package/dist/duplicates.js.map +1 -1
- package/dist/evidence.d.ts +39 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +78 -0
- package/dist/evidence.js.map +1 -0
- package/dist/finding-id.d.ts +21 -0
- package/dist/finding-id.d.ts.map +1 -0
- package/dist/finding-id.js +31 -0
- package/dist/finding-id.js.map +1 -0
- package/dist/fix-engine.d.ts +11 -0
- package/dist/fix-engine.d.ts.map +1 -1
- package/dist/fix-engine.js +88 -71
- package/dist/fix-engine.js.map +1 -1
- package/dist/frameworks/dotnet.js +2 -2
- package/dist/frameworks/dotnet.js.map +1 -1
- package/dist/frameworks/python.d.ts.map +1 -1
- package/dist/frameworks/python.js +5 -2
- package/dist/frameworks/python.js.map +1 -1
- package/dist/frameworks/rust.d.ts.map +1 -1
- package/dist/frameworks/rust.js +2 -1
- package/dist/frameworks/rust.js.map +1 -1
- package/dist/git-symlinks.d.ts +30 -0
- package/dist/git-symlinks.d.ts.map +1 -0
- package/dist/git-symlinks.js +161 -0
- package/dist/git-symlinks.js.map +1 -0
- package/dist/gitignore.d.ts +22 -0
- package/dist/gitignore.d.ts.map +1 -0
- package/dist/gitignore.js +157 -0
- package/dist/gitignore.js.map +1 -0
- package/dist/health-score.d.ts.map +1 -1
- package/dist/health-score.js +35 -5
- package/dist/health-score.js.map +1 -1
- package/dist/hooks-settings-detector.d.ts +17 -0
- package/dist/hooks-settings-detector.d.ts.map +1 -0
- package/dist/hooks-settings-detector.js +228 -0
- package/dist/hooks-settings-detector.js.map +1 -0
- package/dist/index.d.ts +29 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -6
- package/dist/index.js.map +1 -1
- package/dist/makefile.d.ts +37 -0
- package/dist/makefile.d.ts.map +1 -0
- package/dist/makefile.js +156 -0
- package/dist/makefile.js.map +1 -0
- package/dist/manifest-consistency.d.ts +6 -0
- package/dist/manifest-consistency.d.ts.map +1 -1
- package/dist/manifest-consistency.js +75 -10
- package/dist/manifest-consistency.js.map +1 -1
- package/dist/markdown-fences.d.ts +112 -0
- package/dist/markdown-fences.d.ts.map +1 -0
- package/dist/markdown-fences.js +174 -0
- package/dist/markdown-fences.js.map +1 -0
- package/dist/mcp-config-detector.d.ts +20 -0
- package/dist/mcp-config-detector.d.ts.map +1 -0
- package/dist/mcp-config-detector.js +237 -0
- package/dist/mcp-config-detector.js.map +1 -0
- package/dist/missing-context.d.ts.map +1 -1
- package/dist/missing-context.js +2 -52
- package/dist/missing-context.js.map +1 -1
- package/dist/model-budgets.d.ts +69 -0
- package/dist/model-budgets.d.ts.map +1 -0
- package/dist/model-budgets.js +110 -0
- package/dist/model-budgets.js.map +1 -0
- package/dist/negative-instructions.d.ts +26 -0
- package/dist/negative-instructions.d.ts.map +1 -0
- package/dist/negative-instructions.js +169 -0
- package/dist/negative-instructions.js.map +1 -0
- package/dist/path-containment.d.ts +41 -0
- package/dist/path-containment.d.ts.map +1 -0
- package/dist/path-containment.js +123 -0
- package/dist/path-containment.js.map +1 -0
- package/dist/project-type.d.ts +12 -2
- package/dist/project-type.d.ts.map +1 -1
- package/dist/project-type.js +25 -12
- package/dist/project-type.js.map +1 -1
- package/dist/prompt-cache.d.ts.map +1 -1
- package/dist/prompt-cache.js +33 -24
- package/dist/prompt-cache.js.map +1 -1
- package/dist/promptci-gitignore.d.ts +34 -0
- package/dist/promptci-gitignore.d.ts.map +1 -0
- package/dist/promptci-gitignore.js +42 -0
- package/dist/promptci-gitignore.js.map +1 -0
- package/dist/repo-context.d.ts +80 -0
- package/dist/repo-context.d.ts.map +1 -1
- package/dist/repo-context.js +170 -16
- package/dist/repo-context.js.map +1 -1
- package/dist/report.d.ts +8 -0
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +163 -63
- package/dist/report.js.map +1 -1
- package/dist/scan.d.ts.map +1 -1
- package/dist/scan.js +47 -4
- package/dist/scan.js.map +1 -1
- package/dist/scanner.d.ts +61 -1
- package/dist/scanner.d.ts.map +1 -1
- package/dist/scanner.js +367 -70
- package/dist/scanner.js.map +1 -1
- package/dist/security-pack.d.ts +20 -0
- package/dist/security-pack.d.ts.map +1 -1
- package/dist/security-pack.js +33 -14
- package/dist/security-pack.js.map +1 -1
- package/dist/skill-supply-chain.d.ts +132 -0
- package/dist/skill-supply-chain.d.ts.map +1 -0
- package/dist/skill-supply-chain.js +2954 -0
- package/dist/skill-supply-chain.js.map +1 -0
- package/dist/skills-detector.d.ts +23 -0
- package/dist/skills-detector.d.ts.map +1 -0
- package/dist/skills-detector.js +279 -0
- package/dist/skills-detector.js.map +1 -0
- package/dist/stale-instructions.d.ts +4 -1
- package/dist/stale-instructions.d.ts.map +1 -1
- package/dist/stale-instructions.js +53 -55
- package/dist/stale-instructions.js.map +1 -1
- package/dist/subagents-detector.d.ts +19 -0
- package/dist/subagents-detector.d.ts.map +1 -0
- package/dist/subagents-detector.js +155 -0
- package/dist/subagents-detector.js.map +1 -0
- package/dist/suppression.d.ts +2 -0
- package/dist/suppression.d.ts.map +1 -1
- package/dist/suppression.js +16 -47
- package/dist/suppression.js.map +1 -1
- package/dist/types.d.ts +62 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +47 -1
- package/dist/types.js.map +1 -1
- package/dist/vague-guidance.d.ts +15 -2
- package/dist/vague-guidance.d.ts.map +1 -1
- package/dist/vague-guidance.js +44 -41
- package/dist/vague-guidance.js.map +1 -1
- package/dist/windsurf-detector.d.ts +22 -0
- package/dist/windsurf-detector.d.ts.map +1 -0
- package/dist/windsurf-detector.js +96 -0
- package/dist/windsurf-detector.js.map +1 -0
- package/dist/within-section-dedup.d.ts +16 -0
- package/dist/within-section-dedup.d.ts.map +1 -0
- package/dist/within-section-dedup.js +148 -0
- package/dist/within-section-dedup.js.map +1 -0
- package/dist/workspace-manifests.d.ts +80 -0
- package/dist/workspace-manifests.d.ts.map +1 -0
- package/dist/workspace-manifests.js +333 -0
- package/dist/workspace-manifests.js.map +1 -0
- package/package.json +11 -8
- package/dist/cheap-model-routing.d.ts +0 -4
- package/dist/cheap-model-routing.d.ts.map +0 -1
- package/dist/cheap-model-routing.js +0 -43
- package/dist/cheap-model-routing.js.map +0 -1
- package/dist/cli-output-filter.d.ts +0 -16
- package/dist/cli-output-filter.d.ts.map +0 -1
- package/dist/cli-output-filter.js +0 -88
- package/dist/cli-output-filter.js.map +0 -1
- package/dist/context-cost.d.ts +0 -4
- package/dist/context-cost.d.ts.map +0 -1
- package/dist/context-cost.js +0 -70
- package/dist/context-cost.js.map +0 -1
- package/dist/context-recommender.d.ts +0 -3
- package/dist/context-recommender.d.ts.map +0 -1
- package/dist/context-recommender.js +0 -329
- package/dist/context-recommender.js.map +0 -1
- package/dist/llm.d.ts +0 -6
- package/dist/llm.d.ts.map +0 -1
- package/dist/llm.js +0 -67
- package/dist/llm.js.map +0 -1
- package/dist/mcp-detector.d.ts +0 -4
- package/dist/mcp-detector.d.ts.map +0 -1
- package/dist/mcp-detector.js +0 -131
- package/dist/mcp-detector.js.map +0 -1
- package/dist/native-tool-preference.d.ts +0 -20
- package/dist/native-tool-preference.d.ts.map +0 -1
- package/dist/native-tool-preference.js +0 -94
- package/dist/native-tool-preference.js.map +0 -1
- package/dist/output-verbosity.d.ts +0 -3
- package/dist/output-verbosity.d.ts.map +0 -1
- package/dist/output-verbosity.js +0 -83
- package/dist/output-verbosity.js.map +0 -1
- package/dist/product-boundary.d.ts +0 -11
- package/dist/product-boundary.d.ts.map +0 -1
- package/dist/product-boundary.js +0 -301
- package/dist/product-boundary.js.map +0 -1
package/dist/dead-references.js
CHANGED
|
@@ -7,15 +7,24 @@
|
|
|
7
7
|
* - Reference-style links: [text][ref] with a `[ref]: path` definition
|
|
8
8
|
* - @-file refs: @AGENTS.md | @docs/guide.md
|
|
9
9
|
*
|
|
10
|
+
* - Directory / extension-less paths (pcic-2b6.8): links like
|
|
11
|
+
* [api](./src/api/) and code spans like `apps/admin/` or `src/payments`
|
|
12
|
+
*
|
|
10
13
|
* External URLs (http/https), anchor-only links (#section), and mailto:
|
|
11
|
-
* are always skipped.
|
|
12
|
-
*
|
|
14
|
+
* are always skipped. File paths need a recognisable extension; a directory or
|
|
15
|
+
* extension-less path in a code span is only checked when its FIRST segment
|
|
16
|
+
* exists in the repository (so `owner/repo`, `origin/main`, `@scope/pkg` and
|
|
17
|
+
* paths describing some other project stay silent).
|
|
13
18
|
*
|
|
14
19
|
* Findings are heuristic — wording is intentionally cautious.
|
|
15
20
|
*/
|
|
16
21
|
import * as fs from 'node:fs';
|
|
17
22
|
import * as path from 'node:path';
|
|
18
23
|
import * as crypto from 'node:crypto';
|
|
24
|
+
import fg from 'fast-glob';
|
|
25
|
+
import { fencedBlocks, scanFencedLines } from './markdown-fences.js';
|
|
26
|
+
import { createGitIgnoreChecker } from './gitignore.js';
|
|
27
|
+
import { isWithinRoot } from './path-containment.js';
|
|
19
28
|
// ── Patterns ──────────────────────────────────────────────────────────────────
|
|
20
29
|
/** Matches markdown inline links: [label](target) — captures target (may include a title). */
|
|
21
30
|
const MD_LINK_RE = /\[(?:[^\]]*)\]\(([^)]+)\)/g;
|
|
@@ -41,6 +50,37 @@ const AT_FILE_RE = /(?<!\w)@((?:\.{1,2}\/)?[\w./\\-]+\.(?:md|ts|js|mjs|cjs|tsx|j
|
|
|
41
50
|
* after the extension but excluded from the captured path.
|
|
42
51
|
*/
|
|
43
52
|
const BACKTICK_PATH_RE = /`([^\s`\n]+\.(?:md|sh|py|ts|js|tsx|jsx|mjs|cjs|json|yml|yaml|toml|cs|go|rs|txt|lock|env|png|jpg|jpeg|gif|svg|webp|pdf))(?::\d+(?::\d+)?)?`/g;
|
|
53
|
+
/**
|
|
54
|
+
* pcic-2b6.8: code spans holding a directory or extension-less repo path —
|
|
55
|
+
* `src/payments/`, `apps/admin`, `./src/api/`. Path characters only (Next.js
|
|
56
|
+
* route segments like `(auth)` and `[id]` included); anything with a space,
|
|
57
|
+
* colon, `$`, `*`, `~` or `<…>` is a command, URL, variable, glob or
|
|
58
|
+
* placeholder and never matches. At least two segments are required: a lone
|
|
59
|
+
* `docs/` or `./scripts` names no location specific enough to call stale.
|
|
60
|
+
*/
|
|
61
|
+
const BACKTICK_DIR_RE = /`((?:\.\/)?[\w@.()[\]-]+(?:\/[\w@.()[\]-]+)+\/?)`/g;
|
|
62
|
+
/**
|
|
63
|
+
* A line talking about git branches, HTTP routes or URLs: its slash-shaped
|
|
64
|
+
* code spans (`docs/update-readme`, `api/v1/users`) are names, not paths.
|
|
65
|
+
*/
|
|
66
|
+
const NON_PATH_CONTEXT_RE = /\b(?:branch(?:es)?|checkout|rebase|merge|cherry-pick|route[sd]?|routing|endpoints?|urls?|uris?|http\s+(?:get|post|put|patch|delete))\b/i;
|
|
67
|
+
/**
|
|
68
|
+
* Conventional git branch prefixes. A span starting with one of these that has
|
|
69
|
+
* no trailing slash (`docs/update-readme`, `test/flaky-fix`) is more likely a
|
|
70
|
+
* branch than a directory, so only the explicit directory form (`docs/guides/`)
|
|
71
|
+
* is checked.
|
|
72
|
+
*/
|
|
73
|
+
const BRANCH_PREFIXES = new Set([
|
|
74
|
+
'feat', 'feature', 'features', 'fix', 'bugfix', 'hotfix', 'chore', 'docs', 'doc', 'refactor',
|
|
75
|
+
'test', 'tests', 'ci', 'perf', 'build', 'release', 'releases', 'style', 'wip', 'dependabot',
|
|
76
|
+
]);
|
|
77
|
+
/**
|
|
78
|
+
* Generated output and dependency directories: never committed, so a path
|
|
79
|
+
* under one says nothing about the repository's current layout.
|
|
80
|
+
*/
|
|
81
|
+
const OUTPUT_DIRS = new Set([
|
|
82
|
+
'dist', 'build', 'out', '.next', 'coverage', 'target', 'bin', 'obj', 'node_modules', '.turbo',
|
|
83
|
+
]);
|
|
44
84
|
/**
|
|
45
85
|
* BUG-004: Bullet-list bare file paths in Repository Layout / Project Structure sections.
|
|
46
86
|
* Catches lines like:
|
|
@@ -231,10 +271,40 @@ function isGitignored(ref) {
|
|
|
231
271
|
const normalised = ref.replace(/\\/g, '/');
|
|
232
272
|
return GITIGNORED_CREDENTIAL_PATTERNS.some((re) => re.test(normalised));
|
|
233
273
|
}
|
|
274
|
+
/**
|
|
275
|
+
* pcic-2b6.12: Paths rooted in the reader's home or profile directory —
|
|
276
|
+
* `~/.config/x/settings.json`, `$HOME/.claude/settings.json`,
|
|
277
|
+
* `%USERPROFILE%\.claude.json`. They live outside the repository by definition,
|
|
278
|
+
* so their absence from the checkout says nothing about the reference.
|
|
279
|
+
*/
|
|
280
|
+
const HOME_ROOTED_RE = /^(?:~(?:[/\\]|$)|\$\{?(?:HOME|USERPROFILE|XDG_CONFIG_HOME|XDG_DATA_HOME)\}?(?:[/\\]|$)|\$env:(?:HOME|USERPROFILE|APPDATA|LOCALAPPDATA)(?:[/\\]|$)|%(?:USERPROFILE|HOMEPATH|APPDATA|LOCALAPPDATA)%(?:[/\\]|$))/i;
|
|
281
|
+
export function isHomeRooted(ref) {
|
|
282
|
+
return HOME_ROOTED_RE.test(ref.trim());
|
|
283
|
+
}
|
|
234
284
|
function hasCheckableExtension(ref) {
|
|
235
285
|
const ext = path.extname(ref.split('#')[0] ?? '').toLowerCase();
|
|
236
286
|
return CHECKABLE_EXTENSIONS.has(ext);
|
|
237
287
|
}
|
|
288
|
+
/**
|
|
289
|
+
* pcic-2b6.8: a markdown link target naming a directory or an extension-less
|
|
290
|
+
* file (`./src/api/`, `docs/`, `LICENSE`). Site-absolute (`/pricing`) and
|
|
291
|
+
* scheme-qualified targets, and anything with characters a repo path would not
|
|
292
|
+
* carry, are left alone.
|
|
293
|
+
*/
|
|
294
|
+
function isExtensionlessPathRef(ref) {
|
|
295
|
+
if (!ref || /^[a-z][a-z0-9+.-]*:/i.test(ref) || ref.startsWith('/'))
|
|
296
|
+
return false;
|
|
297
|
+
if (/[\s*?$%<>{}|"'`~\\]/.test(ref))
|
|
298
|
+
return false;
|
|
299
|
+
if (!/[A-Za-z]/.test(ref))
|
|
300
|
+
return false; // `./`, `../`, `..`
|
|
301
|
+
// Path-shaped only: a separator or a leading dot (`./x`, `.github`). A bare
|
|
302
|
+
// word (`[WARNING]: Never …`, `[x](payload)`) is too ambiguous to judge.
|
|
303
|
+
if (!ref.includes('/') && !ref.startsWith('.'))
|
|
304
|
+
return false;
|
|
305
|
+
const last = ref.replace(/\/+$/, '').split('/').pop() ?? '';
|
|
306
|
+
return ref.endsWith('/') || path.extname(last) === '';
|
|
307
|
+
}
|
|
238
308
|
/** Strip query strings and anchor fragments from a path reference. */
|
|
239
309
|
function stripFragment(ref) {
|
|
240
310
|
return ref.split('#')[0].split('?')[0].trim();
|
|
@@ -257,14 +327,16 @@ const SOURCE_CODE_EXTENSIONS = new Set([
|
|
|
257
327
|
'.py', '.rs', '.sh', '.java', '.kt', '.swift',
|
|
258
328
|
]);
|
|
259
329
|
/**
|
|
260
|
-
* BUG-002: Compiled/native source extensions that,
|
|
261
|
-
* inline spans (NOT markdown links or @-refs)
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
*
|
|
330
|
+
* BUG-002 / pcic-2b6.8: Compiled/native source extensions that, as backtick
|
|
331
|
+
* inline spans (NOT markdown links or @-refs), are often architecture
|
|
332
|
+
* documentation — `internal/client/errors.go`, `PlayerController.cs` — or
|
|
333
|
+
* examples from some other project. They are no longer skipped outright: a
|
|
334
|
+
* missing one is reported (at reduced confidence) only when its first path
|
|
335
|
+
* segment exists in this repository, i.e. it names a real part of THIS tree.
|
|
265
336
|
*
|
|
266
337
|
* NOTE: .sh, .py, .js are intentionally excluded — shell/Python/JS scripts are often
|
|
267
|
-
* legitimately referenced by name in instruction files (e.g. `scripts/setup-dev.sh`)
|
|
338
|
+
* legitimately referenced by name in instruction files (e.g. `scripts/setup-dev.sh`)
|
|
339
|
+
* and are checked like any other file.
|
|
268
340
|
*/
|
|
269
341
|
const BACKTICK_SKIP_SOURCE_EXTENSIONS = new Set([
|
|
270
342
|
'.go', '.rs', '.cs', '.java', '.kt', '.swift',
|
|
@@ -277,19 +349,15 @@ const BACKTICK_SKIP_SOURCE_EXTENSIONS = new Set([
|
|
|
277
349
|
*/
|
|
278
350
|
const STALE_SOURCE_REF_RE = /(?:^|[/\\])(?:legacy|old|deprecated|archive|archived)(?:[/\\]|[-_.])/i;
|
|
279
351
|
/**
|
|
280
|
-
* File types
|
|
281
|
-
*
|
|
282
|
-
* descriptions appear in all of them.
|
|
352
|
+
* File types whose backtick-enclosed compiled/native source paths and
|
|
353
|
+
* directory paths get the first-segment rule above. All instruction file types
|
|
354
|
+
* are included because architecture descriptions appear in all of them.
|
|
283
355
|
*
|
|
284
356
|
* BUG-002: Expanded from readme-only to all instruction file types.
|
|
285
|
-
*
|
|
286
|
-
* NOTE: this covers every FileType value, which also means backtick-quoted bare
|
|
287
|
-
* *directory* paths (no extension, e.g. `pkg/registry/`) are always treated as
|
|
288
|
-
* architecture descriptions rather than checked — that is intentional per
|
|
289
|
-
* BUG-002, not an oversight.
|
|
290
357
|
*/
|
|
291
358
|
const SKIP_SOURCE_BACKTICK_FILE_TYPES = new Set([
|
|
292
|
-
'readme', 'claude', 'agents', 'cursor', 'copilot', '
|
|
359
|
+
'readme', 'claude', 'agents', 'cursor', 'windsurf', 'copilot', 'gemini', 'cline', 'persona',
|
|
360
|
+
'docs', 'prompt', 'unknown',
|
|
293
361
|
]);
|
|
294
362
|
/** Minimum confidence to emit a dead-reference issue. Below this the signal is too noisy. */
|
|
295
363
|
const MIN_CONFIDENCE = 0.45;
|
|
@@ -395,14 +463,15 @@ function collectLayoutEntryPaths(lines, lineOffsets, startOffset) {
|
|
|
395
463
|
}
|
|
396
464
|
function extractCodeBlockLayoutPaths(content, lineOffsets) {
|
|
397
465
|
const results = [];
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
466
|
+
// Closed blocks only — the same requirement the previous ``` -only regex
|
|
467
|
+
// enforced by needing a closing fence to match at all. Going through the
|
|
468
|
+
// shared scanner is what gives this check ~~~ fences and indented fences,
|
|
469
|
+
// which the regex silently skipped.
|
|
470
|
+
for (const block of fencedBlocks(content)) {
|
|
471
|
+
if (!block.closed)
|
|
472
|
+
continue;
|
|
473
|
+
const startOffset = lineOffsets[block.contentStartLine - 1] ?? content.length;
|
|
474
|
+
results.push(...collectLayoutEntryPaths(block.lines, lineOffsets, startOffset));
|
|
406
475
|
}
|
|
407
476
|
return results;
|
|
408
477
|
}
|
|
@@ -412,6 +481,26 @@ function extractLayoutTreePaths(content, lineOffsets) {
|
|
|
412
481
|
function collectRefs(content, opts = {}) {
|
|
413
482
|
const found = [];
|
|
414
483
|
const lineOffsets = buildLineOffsets(content);
|
|
484
|
+
const fenceLines = scanFencedLines(content);
|
|
485
|
+
// `handlers[type](payload)` in a code fence or `a[i](b)` in a code span has
|
|
486
|
+
// the shape of a link without being one. Checkable-extension targets keep
|
|
487
|
+
// their historical behavior; the extension-less check only reads real prose.
|
|
488
|
+
const inCode = (index) => {
|
|
489
|
+
const line = lineForOffset(lineOffsets, index);
|
|
490
|
+
if (fenceLines[line - 1]?.inFence)
|
|
491
|
+
return true;
|
|
492
|
+
const before = content.slice(lineOffsets[line - 1] ?? 0, index);
|
|
493
|
+
return (before.match(/`/g)?.length ?? 0) % 2 === 1;
|
|
494
|
+
};
|
|
495
|
+
const pushLink = (ref, evidence, index) => {
|
|
496
|
+
if (!ref || isExternalRef(ref))
|
|
497
|
+
return;
|
|
498
|
+
const line = lineForOffset(lineOffsets, index);
|
|
499
|
+
if (hasCheckableExtension(ref))
|
|
500
|
+
found.push({ ref, evidence, line, kind: 'file' });
|
|
501
|
+
else if (isExtensionlessPathRef(ref) && !inCode(index))
|
|
502
|
+
found.push({ ref, evidence, line, kind: 'linkPath' });
|
|
503
|
+
};
|
|
415
504
|
// Markdown links: [label](target) or [label](target "Title")
|
|
416
505
|
let m;
|
|
417
506
|
const linkRe = new RegExp(MD_LINK_RE.source, MD_LINK_RE.flags);
|
|
@@ -419,10 +508,7 @@ function collectRefs(content, opts = {}) {
|
|
|
419
508
|
if (m.index >= 2 && content[m.index - 2] === '[' && content[m.index - 1] === '!')
|
|
420
509
|
continue;
|
|
421
510
|
const raw = m[1] ?? '';
|
|
422
|
-
|
|
423
|
-
if (ref && !isExternalRef(ref) && hasCheckableExtension(ref)) {
|
|
424
|
-
found.push({ ref, evidence: `[...](${raw})`, line: lineForOffset(lineOffsets, m.index) });
|
|
425
|
-
}
|
|
511
|
+
pushLink(stripFragment(stripLinkTitle(raw)), `[...](${raw})`, m.index);
|
|
426
512
|
}
|
|
427
513
|
const nestedLinkRe = new RegExp(NESTED_MD_LINK_RE.source, NESTED_MD_LINK_RE.flags);
|
|
428
514
|
while ((m = nestedLinkRe.exec(content)) !== null) {
|
|
@@ -430,47 +516,61 @@ function collectRefs(content, opts = {}) {
|
|
|
430
516
|
if (!labelPart.includes(']('))
|
|
431
517
|
continue;
|
|
432
518
|
const raw = m[1] ?? '';
|
|
433
|
-
|
|
434
|
-
if (ref && !isExternalRef(ref) && hasCheckableExtension(ref)) {
|
|
435
|
-
found.push({ ref, evidence: `[...](${raw})`, line: lineForOffset(lineOffsets, m.index) });
|
|
436
|
-
}
|
|
519
|
+
pushLink(stripFragment(stripLinkTitle(raw)), `[...](${raw})`, m.index);
|
|
437
520
|
}
|
|
438
521
|
// Reference-style link definitions: [ref]: docs/missing.md "Title"
|
|
439
522
|
const linkDefRe = new RegExp(LINK_REF_DEF_RE.source, LINK_REF_DEF_RE.flags);
|
|
440
523
|
while ((m = linkDefRe.exec(content)) !== null) {
|
|
441
524
|
const raw = m[1] ?? '';
|
|
442
|
-
|
|
443
|
-
if (
|
|
444
|
-
|
|
445
|
-
|
|
525
|
+
// `[^1]: Footnote text` is a footnote, not a link definition.
|
|
526
|
+
if (/^[ \t]*\[\^/.test(m[0]))
|
|
527
|
+
continue;
|
|
528
|
+
pushLink(stripFragment(raw), m[0].trim(), m.index);
|
|
446
529
|
}
|
|
447
530
|
// @-file refs
|
|
448
531
|
const atRe = new RegExp(AT_FILE_RE.source, AT_FILE_RE.flags);
|
|
449
532
|
while ((m = atRe.exec(content)) !== null) {
|
|
450
533
|
const ref = m[1] ?? '';
|
|
451
534
|
if (ref && !isExternalRef(ref)) {
|
|
452
|
-
found.push({ ref, evidence: `@${ref}`, line: lineForOffset(lineOffsets, m.index) });
|
|
535
|
+
found.push({ ref, evidence: `@${ref}`, line: lineForOffset(lineOffsets, m.index), kind: 'file' });
|
|
453
536
|
}
|
|
454
537
|
}
|
|
455
538
|
// Backtick file paths: `scripts/setup-dev.sh`, `Assets/Scripts/Foo.cs`
|
|
456
539
|
// No spaces = file path not a command; must have a recognisable extension.
|
|
457
540
|
// Skip glob patterns (contain * or ?) — those are pattern documentation, not file refs.
|
|
458
|
-
// BUG-002: In all instruction file types (CLAUDE.md, AGENTS.md, .cursorrules,
|
|
459
|
-
//
|
|
460
|
-
// descriptions
|
|
461
|
-
// Shell (.sh), Python (.py), and JS files are
|
|
541
|
+
// BUG-002 / pcic-2b6.8: In all instruction file types (CLAUDE.md, AGENTS.md, .cursorrules,
|
|
542
|
+
// copilot, etc.) backtick-quoted compiled/native source files are often architecture
|
|
543
|
+
// descriptions or examples from another project, so they are checked under the
|
|
544
|
+
// first-segment rule (`rootedSource`). Shell (.sh), Python (.py), and JS files are
|
|
545
|
+
// checked like any other file because they are usually real script refs.
|
|
462
546
|
const btRe = new RegExp(BACKTICK_PATH_RE.source, BACKTICK_PATH_RE.flags);
|
|
463
547
|
while ((m = btRe.exec(content)) !== null) {
|
|
464
548
|
const ref = m[1] ?? '';
|
|
465
549
|
if (ref && !isExternalRef(ref) && !ref.includes('*') && !ref.includes('?')) {
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
550
|
+
const ext = path.extname(ref).toLowerCase();
|
|
551
|
+
const rooted = opts.skipSourceBackticks && BACKTICK_SKIP_SOURCE_EXTENSIONS.has(ext) && !STALE_SOURCE_REF_RE.test(ref);
|
|
552
|
+
found.push({
|
|
553
|
+
ref,
|
|
554
|
+
evidence: `\`${ref}\``,
|
|
555
|
+
line: lineForOffset(lineOffsets, m.index),
|
|
556
|
+
kind: rooted ? 'rootedSource' : 'file',
|
|
557
|
+
});
|
|
472
558
|
}
|
|
473
559
|
}
|
|
560
|
+
// pcic-2b6.8: backtick directory / extension-less paths: `src/payments/`, `apps/admin`.
|
|
561
|
+
const btDirRe = new RegExp(BACKTICK_DIR_RE.source, BACKTICK_DIR_RE.flags);
|
|
562
|
+
while ((m = btDirRe.exec(content)) !== null) {
|
|
563
|
+
const ref = m[1] ?? '';
|
|
564
|
+
const last = ref.replace(/\/+$/, '').split('/').pop() ?? '';
|
|
565
|
+
if (!ref.endsWith('/') && path.extname(last) !== '')
|
|
566
|
+
continue; // a file: BACKTICK_PATH_RE's job
|
|
567
|
+
// Slash-shaped names that are not paths: git branches, HTTP routes, URLs.
|
|
568
|
+
const lineNo = lineForOffset(lineOffsets, m.index);
|
|
569
|
+
const lineText = content.slice(lineOffsets[lineNo - 1] ?? 0, lineOffsets[lineNo] ?? content.length);
|
|
570
|
+
if (NON_PATH_CONTEXT_RE.test(lineText))
|
|
571
|
+
continue;
|
|
572
|
+
found.push({ ref, evidence: `\`${ref}\``, line: lineForOffset(lineOffsets, m.index), kind: 'rootedPath' });
|
|
573
|
+
}
|
|
474
574
|
// BUG-004: Bare paths in Repository Layout / Project Structure sections.
|
|
475
575
|
// These appear as bullet list items or ASCII tree lines without backticks.
|
|
476
576
|
if (LAYOUT_SECTION_HEADING_RE.test(content)) {
|
|
@@ -478,14 +578,16 @@ function collectRefs(content, opts = {}) {
|
|
|
478
578
|
while ((m = bulletRe.exec(content)) !== null) {
|
|
479
579
|
const ref = m[1] ?? '';
|
|
480
580
|
if (ref && !isExternalRef(ref)) {
|
|
481
|
-
found.push({ ref, evidence: m[0].trim(), line: lineForOffset(lineOffsets, m.index) });
|
|
581
|
+
found.push({ ref, evidence: m[0].trim(), line: lineForOffset(lineOffsets, m.index), kind: 'file' });
|
|
482
582
|
}
|
|
483
583
|
}
|
|
484
|
-
|
|
584
|
+
for (const item of extractLayoutTreePaths(content, lineOffsets)) {
|
|
585
|
+
found.push({ ...item, kind: 'file' });
|
|
586
|
+
}
|
|
485
587
|
// BUG-002 (eval): Fenced code blocks in layout sections may list documentation
|
|
486
588
|
// files as indented children under a parent directory line ("docs/\n runbook.md").
|
|
487
589
|
for (const item of extractCodeBlockLayoutPaths(content, lineOffsets)) {
|
|
488
|
-
found.push(item);
|
|
590
|
+
found.push({ ...item, kind: 'file' });
|
|
489
591
|
}
|
|
490
592
|
}
|
|
491
593
|
// BUG-D1: Drop only the reference the line instructs the reader to CREATE
|
|
@@ -508,6 +610,144 @@ function collectRefs(content, opts = {}) {
|
|
|
508
610
|
return !isTarget;
|
|
509
611
|
});
|
|
510
612
|
}
|
|
613
|
+
// ── Resolution ───────────────────────────────────────────────────────────────
|
|
614
|
+
/** Path segments of a reference, without `.` / empty segments. */
|
|
615
|
+
function segmentsOf(ref) {
|
|
616
|
+
return stripFragment(ref).replace(/\\/g, '/').split('/').filter((s) => s !== '' && s !== '.');
|
|
617
|
+
}
|
|
618
|
+
function underOutputDir(ref) {
|
|
619
|
+
return segmentsOf(ref).some((s) => OUTPUT_DIRS.has(s.toLowerCase()));
|
|
620
|
+
}
|
|
621
|
+
/**
|
|
622
|
+
* An extension-less module path names the file that carries the extension:
|
|
623
|
+
* `src/lib/db` is `src/lib/db.ts`. True when the directory holds `<name>.*`.
|
|
624
|
+
*/
|
|
625
|
+
function stemSiblingExists(abs) {
|
|
626
|
+
try {
|
|
627
|
+
const base = path.basename(abs);
|
|
628
|
+
return fs.readdirSync(path.dirname(abs)).some((entry) => entry.startsWith(`${base}.`));
|
|
629
|
+
}
|
|
630
|
+
catch {
|
|
631
|
+
return false;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
/** Trees never searched for an abbreviated path (dependencies, VCS, worktrees, engine caches). */
|
|
635
|
+
const SUFFIX_SEARCH_IGNORE = [
|
|
636
|
+
...[
|
|
637
|
+
...OUTPUT_DIRS, '.git', 'worktrees', '.worktrees', 'Library', 'Temp', 'Logs', 'vendor',
|
|
638
|
+
'.venv', 'venv', '__pycache__', 'Pods', '.gradle', '.cache', '.idea',
|
|
639
|
+
].map((d) => `**/${d}/**`),
|
|
640
|
+
];
|
|
641
|
+
/**
|
|
642
|
+
* True when the path exists somewhere below the repo root as a suffix — an
|
|
643
|
+
* abbreviated reference such as `Scripts/Interfaces/` for Unity's
|
|
644
|
+
* `Assets/Scripts/Interfaces/`, or a package-relative `src/lib/db.ts` in a
|
|
645
|
+
* monorepo's root instructions. Such a path is imprecise, not stale.
|
|
646
|
+
*/
|
|
647
|
+
function existsAsSuffix(repoRoot, segments, moduleStyle, cache) {
|
|
648
|
+
const rel = segments.join('/');
|
|
649
|
+
const key = `${moduleStyle ? 'm' : 'x'}:${rel}`;
|
|
650
|
+
const cached = cache.get(key);
|
|
651
|
+
if (cached !== undefined)
|
|
652
|
+
return cached;
|
|
653
|
+
const escaped = fg.escapePath(rel);
|
|
654
|
+
const patterns = [`**/${escaped}`];
|
|
655
|
+
if (moduleStyle)
|
|
656
|
+
patterns.push(`**/${escaped}.*`);
|
|
657
|
+
let found;
|
|
658
|
+
try {
|
|
659
|
+
found = fg.sync(patterns, {
|
|
660
|
+
cwd: repoRoot,
|
|
661
|
+
dot: true,
|
|
662
|
+
onlyFiles: false,
|
|
663
|
+
followSymbolicLinks: false,
|
|
664
|
+
suppressErrors: true,
|
|
665
|
+
ignore: SUFFIX_SEARCH_IGNORE,
|
|
666
|
+
}).length > 0;
|
|
667
|
+
}
|
|
668
|
+
catch {
|
|
669
|
+
found = false;
|
|
670
|
+
}
|
|
671
|
+
cache.set(key, found);
|
|
672
|
+
return found;
|
|
673
|
+
}
|
|
674
|
+
/** Probe name used to ask the gitignore matcher whether a DIRECTORY is ignored. */
|
|
675
|
+
const DIR_PROBE = '__promptci_dir_probe__';
|
|
676
|
+
/**
|
|
677
|
+
* Confidence that `ref` is a dead reference, or `null` when it resolves, is
|
|
678
|
+
* expected to be absent (gitignored, generated output), or is not specific
|
|
679
|
+
* enough to judge.
|
|
680
|
+
*/
|
|
681
|
+
function judgeReference(ref, kind, fileDir, repoRoot, isIgnored, suffixCache) {
|
|
682
|
+
// `.git/…` is a directory in one checkout and a file in a worktree.
|
|
683
|
+
if (segmentsOf(ref)[0] === '.git')
|
|
684
|
+
return null;
|
|
685
|
+
// pcic-2b6.8 kinds: generated output / dependency trees are never committed.
|
|
686
|
+
// (File references keep their historical behavior: a committed `bin/setup.sh`
|
|
687
|
+
// or `scripts/build/x.sh` is still checked.)
|
|
688
|
+
if (kind !== 'file' && underOutputDir(ref))
|
|
689
|
+
return null;
|
|
690
|
+
const pathLike = kind === 'rootedPath' || kind === 'linkPath';
|
|
691
|
+
const target = pathLike ? stripFragment(ref) : ref;
|
|
692
|
+
const candidates = [...new Set([path.resolve(fileDir, target), path.resolve(repoRoot, target)])];
|
|
693
|
+
const inRoot = candidates.filter((c) => isWithinRoot(repoRoot, c));
|
|
694
|
+
// The repository's own ignore rules say the path is local state (pcic-2b6.8,
|
|
695
|
+
// same matcher the skills detector uses).
|
|
696
|
+
for (const candidate of inRoot) {
|
|
697
|
+
const rel = path.relative(repoRoot, candidate).replace(/\\/g, '/');
|
|
698
|
+
if (!rel)
|
|
699
|
+
continue;
|
|
700
|
+
if (isIgnored(rel) || (pathLike && isIgnored(`${rel}/${DIR_PROBE}`)))
|
|
701
|
+
return null;
|
|
702
|
+
}
|
|
703
|
+
if (kind === 'file') {
|
|
704
|
+
if (candidates.some(fileExists))
|
|
705
|
+
return null;
|
|
706
|
+
// BUG-C1: Source-code paths whose parent directory exists → lower confidence
|
|
707
|
+
// (likely documentation references, not broken links).
|
|
708
|
+
const ext = path.extname(ref.split('#')[0] ?? '').toLowerCase();
|
|
709
|
+
const isSourceCodeRef = SOURCE_CODE_EXTENSIONS.has(ext);
|
|
710
|
+
const anyParentExists = candidates.some(parentDirExists);
|
|
711
|
+
return isSourceCodeRef && anyParentExists ? 0.5 : 0.85;
|
|
712
|
+
}
|
|
713
|
+
// pcic-2b6.8 kinds: only paths that stay inside the repository are judged.
|
|
714
|
+
if (inRoot.length === 0)
|
|
715
|
+
return null;
|
|
716
|
+
const moduleStyle = pathLike && !target.endsWith('/');
|
|
717
|
+
if (inRoot.some((c) => fileExists(c) || (moduleStyle && stemSiblingExists(c))))
|
|
718
|
+
return null;
|
|
719
|
+
if (kind === 'linkPath')
|
|
720
|
+
return 0.8;
|
|
721
|
+
// Code-span paths: report only when the path's FIRST segment exists here, so
|
|
722
|
+
// the reference demonstrably names part of THIS repository — `owner/repo`,
|
|
723
|
+
// `origin/main`, `@scope/pkg` and another project's `internal/x/y.go` stay silent.
|
|
724
|
+
const segments = segmentsOf(ref);
|
|
725
|
+
if (segments.length < 2 || segments[0] === '..')
|
|
726
|
+
return null;
|
|
727
|
+
// The first segment must be a DIRECTORY here (`package.json/scripts` is not a path).
|
|
728
|
+
const anchorBases = [fileDir, repoRoot].filter((base) => dirExists(path.join(base, segments[0])));
|
|
729
|
+
if (anchorBases.length === 0)
|
|
730
|
+
return null;
|
|
731
|
+
if (kind === 'rootedPath') {
|
|
732
|
+
// `docs/update-readme`, `test/flaky-fix`: a branch name unless written as a directory.
|
|
733
|
+
if (BRANCH_PREFIXES.has(segments[0].toLowerCase()) && !target.endsWith('/'))
|
|
734
|
+
return null;
|
|
735
|
+
// `client/server`, `public/private`: alternatives when both halves exist side by side.
|
|
736
|
+
if (segments.length === 2 && anchorBases.some((base) => fileExists(path.join(base, segments[1]))))
|
|
737
|
+
return null;
|
|
738
|
+
}
|
|
739
|
+
if (existsAsSuffix(repoRoot, segments, moduleStyle, suffixCache))
|
|
740
|
+
return null;
|
|
741
|
+
return 0.6;
|
|
742
|
+
}
|
|
743
|
+
function dirExists(p) {
|
|
744
|
+
try {
|
|
745
|
+
return fs.statSync(p).isDirectory();
|
|
746
|
+
}
|
|
747
|
+
catch {
|
|
748
|
+
return false;
|
|
749
|
+
}
|
|
750
|
+
}
|
|
511
751
|
// ── Detector ─────────────────────────────────────────────────────────────────
|
|
512
752
|
/**
|
|
513
753
|
* Detect broken file references across all instruction files.
|
|
@@ -527,37 +767,40 @@ function collectRefs(content, opts = {}) {
|
|
|
527
767
|
export function detectDeadReferences(files, repoRoot) {
|
|
528
768
|
// normRef → { displayRef, filePaths, fileLines, evidenceLines, minConfidence }
|
|
529
769
|
const byRef = new Map();
|
|
770
|
+
let isIgnored;
|
|
771
|
+
const suffixCache = new Map();
|
|
530
772
|
for (const file of files) {
|
|
531
773
|
const fileDir = path.dirname(file.path);
|
|
532
774
|
const refs = collectRefs(file.content, {
|
|
533
775
|
skipSourceBackticks: SKIP_SOURCE_BACKTICK_FILE_TYPES.has(file.fileType),
|
|
534
776
|
});
|
|
535
|
-
for (const { ref, evidence, line } of refs) {
|
|
777
|
+
for (const { ref, evidence, line, kind } of refs) {
|
|
536
778
|
// BUG-009: Skip obvious placeholder/example filenames (foo.ts, bar.go, etc.)
|
|
537
779
|
if (isPlaceholderRef(ref))
|
|
538
780
|
continue;
|
|
539
781
|
// BUG-008: Skip intentionally gitignored credential/config files.
|
|
540
782
|
if (isGitignored(ref))
|
|
541
783
|
continue;
|
|
784
|
+
// pcic-2b6.12: Skip home-directory paths (`~/…`, `$HOME/…`, `%USERPROFILE%\…`).
|
|
785
|
+
if (isHomeRooted(ref))
|
|
786
|
+
continue;
|
|
542
787
|
// Resolve relative to the instruction file first, then repo root.
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
];
|
|
547
|
-
if (candidates.some(fileExists))
|
|
788
|
+
isIgnored ??= createGitIgnoreChecker(repoRoot);
|
|
789
|
+
const confidence = judgeReference(ref, kind, fileDir, repoRoot, isIgnored, suffixCache);
|
|
790
|
+
if (confidence === null)
|
|
548
791
|
continue;
|
|
549
|
-
//
|
|
550
|
-
//
|
|
551
|
-
|
|
552
|
-
const
|
|
553
|
-
const
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
const normRef = ref.toLowerCase().replace(/\\/g, '/');
|
|
792
|
+
// Normalise for deduplication (case-insensitive, forward slashes). Directory
|
|
793
|
+
// forms also drop `./` and the trailing slash, so `src/api/`, `./src/api`
|
|
794
|
+
// and a link to `./src/api/` are one finding.
|
|
795
|
+
const normalized = ref.toLowerCase().replace(/\\/g, '/');
|
|
796
|
+
const normRef = kind === 'rootedPath' || kind === 'linkPath'
|
|
797
|
+
? normalized.replace(/^\.\//, '').replace(/\/+$/, '')
|
|
798
|
+
: normalized;
|
|
557
799
|
const evidenceLine = `Reference: ${evidence}`;
|
|
558
800
|
if (!byRef.has(normRef)) {
|
|
559
801
|
byRef.set(normRef, {
|
|
560
802
|
displayRef: ref,
|
|
803
|
+
kind,
|
|
561
804
|
filePaths: new Set(),
|
|
562
805
|
fileLines: new Map(),
|
|
563
806
|
evidenceLines: [],
|
|
@@ -578,19 +821,23 @@ export function detectDeadReferences(files, repoRoot) {
|
|
|
578
821
|
}
|
|
579
822
|
const issues = [];
|
|
580
823
|
const MIN_CONFIDENCE_THRESHOLD = MIN_CONFIDENCE;
|
|
581
|
-
for (const [normRef, { displayRef, filePaths, fileLines, evidenceLines, minConfidence }] of byRef) {
|
|
824
|
+
for (const [normRef, { displayRef, kind, filePaths, fileLines, evidenceLines, minConfidence }] of byRef) {
|
|
582
825
|
// BUG-002: Skip findings below the minimum confidence threshold.
|
|
583
826
|
// Low-confidence source-code path references are almost certainly architecture docs.
|
|
584
827
|
if (minConfidence < MIN_CONFIDENCE_THRESHOLD)
|
|
585
828
|
continue;
|
|
586
829
|
const allFilePaths = [...filePaths];
|
|
830
|
+
const pathLike = kind === 'rootedPath' || kind === 'linkPath';
|
|
831
|
+
const isDir = pathLike && stripFragment(displayRef).endsWith('/');
|
|
832
|
+
const noun = isDir ? 'directory' : pathLike ? 'path' : 'file';
|
|
833
|
+
const name = path.basename(stripFragment(displayRef).replace(/\/+$/, ''));
|
|
587
834
|
issues.push({
|
|
588
835
|
id: issueId(normRef),
|
|
589
836
|
severity: 'warning',
|
|
590
837
|
category: 'structure',
|
|
591
|
-
title: `Broken
|
|
838
|
+
title: `Broken ${noun} reference: ${name}${isDir ? '/' : ''}`,
|
|
592
839
|
summary: `This instruction file references "${displayRef}" which does not appear to exist. ` +
|
|
593
|
-
`The
|
|
840
|
+
`The ${noun} may have been renamed, moved, or deleted.`,
|
|
594
841
|
filePaths: allFilePaths,
|
|
595
842
|
locations: allFilePaths.map((fp) => {
|
|
596
843
|
const startLine = fileLines.get(fp);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dead-references.js","sourceRoot":"","sources":["../src/dead-references.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dead-references.js","sourceRoot":"","sources":["../src/dead-references.ts"],"names":[],"mappings":"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"}
|