@reneturcios/greenlight 0.12.0 → 0.13.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/README.md +11 -2
- package/dist/cli.js +84 -3
- package/dist/cli.js.map +1 -1
- package/dist/github.js +5 -1
- package/dist/github.js.map +1 -1
- package/dist/help.js +19 -2
- package/dist/help.js.map +1 -1
- package/dist/index.js +50 -4
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/xray.d.ts +52 -0
- package/dist/xray.js +213 -0
- package/dist/xray.js.map +1 -0
- package/package.json +1 -1
- package/server.json +6 -6
package/dist/xray.js
ADDED
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeline X-Ray: deep timeline verification for candidate issues.
|
|
3
|
+
*
|
|
4
|
+
* Field data (2026-10-18, usebruno/bruno focus session): `scan` ranks
|
|
5
|
+
* candidates from list/search data, but in dense repos most well-specified
|
|
6
|
+
* issues are already TAKEN by open PRs that are visible only in the issue
|
|
7
|
+
* TIMELINE (cross-referenced events), not in list views. Of 7 hand-vetted
|
|
8
|
+
* Bruno issues, 6 were secretly taken: #8149 -> PR #8176, #9319 -> PR #9320
|
|
9
|
+
* (the reporter's own prepared fix), #8287 -> PR #8288, #8264 -> PR #9475,
|
|
10
|
+
* #9517 -> PR #9552, #9483 -> PR #9484. The `check` pipeline catches these
|
|
11
|
+
* one issue at a time; X-Ray batches the deep verification.
|
|
12
|
+
*
|
|
13
|
+
* What X-Ray does per issue (lean pipeline, ~4 API calls):
|
|
14
|
+
* 1. fetchLinkedPRs() — the EXISTING timeline + search walk with per-PR
|
|
15
|
+
* linkStrength scoring (classifyLinkStrength is reused, not forked).
|
|
16
|
+
* 2. Issue author lookup (cached; reused from the check snapshot cache
|
|
17
|
+
* when scan --deep already ran the check pipeline).
|
|
18
|
+
* 3. Comment claim scan (LAZY: only when no open linked PRs were found,
|
|
19
|
+
* because claim flags cannot change a PR-driven verdict; this keeps a
|
|
20
|
+
* 10-issue xray near ~35 API calls). Reuses detectClaims /
|
|
21
|
+
* strongClaimants from claims.ts.
|
|
22
|
+
*
|
|
23
|
+
* X-Ray verdict rules (documented; stricter than the check pipeline in
|
|
24
|
+
* exactly one place):
|
|
25
|
+
* - open PR with linkStrength "closing" -> TAKEN
|
|
26
|
+
* - open PR cross-referenced in the issue timeline -> TAKEN
|
|
27
|
+
* (any strength; matches verdict Rule 3d)
|
|
28
|
+
* - open mention-strength PR authored by the issue REPORTER -> TAKEN
|
|
29
|
+
* (X-Ray strengthening: a reporter's own fix PR is the classic hidden
|
|
30
|
+
* trap — e.g. bruno#9319 -> PR #9320. The check pipeline would call
|
|
31
|
+
* this RISKY/GO via weak-pr-mention.)
|
|
32
|
+
* - open mention-strength PR by anyone else -> RISKY (weak-pr-mention)
|
|
33
|
+
* - 2+ fresh full-strength comment claimants -> TAKEN (claim race)
|
|
34
|
+
* - 1 fresh full-strength comment claimant -> RISKY (claimed)
|
|
35
|
+
* - only closed/merged linked PRs, or nothing -> GO (with a note)
|
|
36
|
+
*
|
|
37
|
+
* Closed/merged PRs are evidence, never blockers. Every linked PR is
|
|
38
|
+
* reported with number, state, link strength, discovery path (via),
|
|
39
|
+
* author, and URL, so a human can audit the verdict in seconds.
|
|
40
|
+
*/
|
|
41
|
+
import { apiCallsUsed, apiGet, cacheGet, cacheSet, fetchComments, fetchLinkedPRs, } from "./github.js";
|
|
42
|
+
import { isClosingPR } from "./linkstrength.js";
|
|
43
|
+
import { detectClaims, strongClaimants } from "./claims.js";
|
|
44
|
+
const xrefLabel = (pr) => `#${pr.number} "${pr.title}" [${pr.state}/${pr.linkStrength}${pr.via ? `/${pr.via}` : ""}]${pr.reporterOwned ? " (reporter's own PR)" : ""} (${pr.url})`;
|
|
45
|
+
/** Issue author + title, cached; prefers the check pipeline's snapshot cache. */
|
|
46
|
+
async function xrayIssueMeta(owner, repo, number) {
|
|
47
|
+
const key = [owner, repo, String(number), "author"];
|
|
48
|
+
const cached = cacheGet("issue", key);
|
|
49
|
+
if (cached !== undefined)
|
|
50
|
+
return cached;
|
|
51
|
+
// scan --deep runs the check pipeline first, which caches the snapshot.
|
|
52
|
+
const snap = cacheGet("issue", [owner, repo, String(number), "snapshot"]);
|
|
53
|
+
if (snap?.author !== undefined) {
|
|
54
|
+
const meta = { author: snap.author ?? "", title: snap.title ?? "" };
|
|
55
|
+
cacheSet("issue", key, meta);
|
|
56
|
+
return meta;
|
|
57
|
+
}
|
|
58
|
+
try {
|
|
59
|
+
const issue = (await apiGet(`/repos/${owner}/${repo}/issues/${number}`));
|
|
60
|
+
const meta = { author: String(issue.user?.login ?? ""), title: String(issue.title ?? "") };
|
|
61
|
+
cacheSet("issue", key, meta);
|
|
62
|
+
return meta;
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
const meta = { author: "", title: "" };
|
|
66
|
+
cacheSet("issue", key, meta);
|
|
67
|
+
return meta;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
export async function xrayIssue(owner, repo, number) {
|
|
71
|
+
const callsBefore = apiCallsUsed();
|
|
72
|
+
const url = `https://github.com/${owner}/${repo}/issues/${number}`;
|
|
73
|
+
const fail = (reasons) => ({
|
|
74
|
+
owner, repo, number, url, title: "",
|
|
75
|
+
verdict: "ERROR", reasons, flags: [],
|
|
76
|
+
linkedPRs: [], claimFlags: [], deepVerified: true,
|
|
77
|
+
apiCalls: apiCallsUsed() - callsBefore,
|
|
78
|
+
});
|
|
79
|
+
let linked;
|
|
80
|
+
let issueAuthor;
|
|
81
|
+
let issueTitle;
|
|
82
|
+
try {
|
|
83
|
+
linked = await fetchLinkedPRs(owner, repo, number);
|
|
84
|
+
({ author: issueAuthor, title: issueTitle } = await xrayIssueMeta(owner, repo, number));
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
return fail([`x-ray fetch failed: ${err instanceof Error ? err.message : String(err)}`]);
|
|
88
|
+
}
|
|
89
|
+
const reasons = [];
|
|
90
|
+
const flags = [];
|
|
91
|
+
const xrayPRs = linked.map((pr) => {
|
|
92
|
+
const author = pr.author ?? "";
|
|
93
|
+
return { ...pr, author, reporterOwned: author !== "" && author === issueAuthor };
|
|
94
|
+
});
|
|
95
|
+
const open = xrayPRs.filter((p) => p.state === "open");
|
|
96
|
+
const openClosing = open.filter((p) => isClosingPR(p));
|
|
97
|
+
const openTimeline = open.filter((p) => !isClosingPR(p) && p.via === "timeline");
|
|
98
|
+
const openReporter = open.filter((p) => !isClosingPR(p) && p.via !== "timeline" && p.reporterOwned);
|
|
99
|
+
const openMention = open.filter((p) => !isClosingPR(p) && p.via !== "timeline" && !p.reporterOwned);
|
|
100
|
+
const done = (verdict, claimFlags = []) => ({
|
|
101
|
+
owner, repo, number, url, title: issueTitle,
|
|
102
|
+
verdict, reasons, flags,
|
|
103
|
+
linkedPRs: xrayPRs, claimFlags, deepVerified: true,
|
|
104
|
+
apiCalls: apiCallsUsed() - callsBefore,
|
|
105
|
+
});
|
|
106
|
+
if (openClosing.length > 0) {
|
|
107
|
+
const first = openClosing[0];
|
|
108
|
+
reasons.push(`open PR #${first.number} closes this issue (${first.linkStrength}, via ${first.via ?? "unknown"})`);
|
|
109
|
+
const others = open.filter((p) => p.number !== first.number);
|
|
110
|
+
if (others.length > 0) {
|
|
111
|
+
flags.push("cross-referenced-pr");
|
|
112
|
+
reasons.push(`also in flight: ${others.map(xrefLabel).join("; ")}`);
|
|
113
|
+
}
|
|
114
|
+
return done("TAKEN");
|
|
115
|
+
}
|
|
116
|
+
if (openTimeline.length > 0) {
|
|
117
|
+
flags.push("cross-referenced-pr");
|
|
118
|
+
reasons.push(`open PR(s) cross-referenced in the issue timeline: ${openTimeline.map(xrefLabel).join("; ")}`);
|
|
119
|
+
return done("TAKEN");
|
|
120
|
+
}
|
|
121
|
+
if (openReporter.length > 0) {
|
|
122
|
+
const first = openReporter[0];
|
|
123
|
+
flags.push("reporter-own-pr");
|
|
124
|
+
reasons.push(`open PR #${first.number} is the reporter's own fix PR (${first.url}) — the classic hidden-trap shape`);
|
|
125
|
+
const others = open.filter((p) => p.number !== first.number);
|
|
126
|
+
if (others.length > 0)
|
|
127
|
+
reasons.push(`also in flight: ${others.map(xrefLabel).join("; ")}`);
|
|
128
|
+
return done("TAKEN");
|
|
129
|
+
}
|
|
130
|
+
// No open PR takes the issue: scan comments for human claim language.
|
|
131
|
+
// Lazy by design (see module doc): claim flags cannot overturn a
|
|
132
|
+
// PR-driven verdict, so this fetch is skipped when open PRs exist.
|
|
133
|
+
let claimFlags = [];
|
|
134
|
+
let freshStrong = 0;
|
|
135
|
+
try {
|
|
136
|
+
const comments = await fetchComments(owner, repo, number);
|
|
137
|
+
const claims = detectClaims(issueAuthor, comments);
|
|
138
|
+
claimFlags = claims.map((c) => ({
|
|
139
|
+
author: c.author,
|
|
140
|
+
createdAt: c.createdAt,
|
|
141
|
+
ageDays: c.ageDays,
|
|
142
|
+
phrase: c.phrase,
|
|
143
|
+
}));
|
|
144
|
+
for (const c of claimFlags) {
|
|
145
|
+
flags.push(`claimed-by @${c.author} (${c.ageDays}d ago: "${c.phrase}")`);
|
|
146
|
+
}
|
|
147
|
+
freshStrong = strongClaimants(claims).filter((c) => c.scope !== "partial").length;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// Comments are best-effort; a failure degrades to no claim flags.
|
|
151
|
+
}
|
|
152
|
+
if (freshStrong >= 2) {
|
|
153
|
+
reasons.push(`claim race: ${freshStrong} strong claimants in comments`);
|
|
154
|
+
flags.push("claimed");
|
|
155
|
+
return done("TAKEN", claimFlags);
|
|
156
|
+
}
|
|
157
|
+
if (openMention.length > 0) {
|
|
158
|
+
flags.push("weak-pr-mention");
|
|
159
|
+
reasons.push(`open PR(s) only mention this issue (no closing link): ${openMention.map(xrefLabel).join("; ")}`);
|
|
160
|
+
return done("RISKY", claimFlags);
|
|
161
|
+
}
|
|
162
|
+
if (freshStrong === 1) {
|
|
163
|
+
const c = claimFlags[0];
|
|
164
|
+
reasons.push(`claimed by ${c.author} ${c.ageDays} day(s) ago ("${c.phrase}"), no PR in flight`);
|
|
165
|
+
flags.push("claimed");
|
|
166
|
+
return done("RISKY", claimFlags);
|
|
167
|
+
}
|
|
168
|
+
const closedOrMerged = xrayPRs.filter((p) => p.state !== "open");
|
|
169
|
+
if (closedOrMerged.length > 0) {
|
|
170
|
+
reasons.push(`only closed/merged PRs reference this issue: ${closedOrMerged.map(xrefLabel).join("; ")}`);
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
reasons.push("no linked PRs in the issue timeline or search; no comment claims");
|
|
174
|
+
}
|
|
175
|
+
return done("GO", claimFlags);
|
|
176
|
+
}
|
|
177
|
+
/** X-Ray a list of issues serially (rate-limit discipline over speed). */
|
|
178
|
+
export async function xrayIssues(owner, repo, numbers) {
|
|
179
|
+
const out = [];
|
|
180
|
+
for (const n of numbers) {
|
|
181
|
+
out.push(await xrayIssue(owner, repo, n));
|
|
182
|
+
}
|
|
183
|
+
return out;
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Merge an X-Ray result into a scan/check verdict (used by `scan --deep`
|
|
187
|
+
* and the scan_repo `deep` param). The x-ray verdict only ever demotes:
|
|
188
|
+
* when it is worse than the scan verdict (and not ERROR), the scan
|
|
189
|
+
* verdict, reasons, and flags are replaced/augmented; the
|
|
190
|
+
* `xray-deep-verified` flag is always recorded. Returns true when the
|
|
191
|
+
* verdict changed.
|
|
192
|
+
*/
|
|
193
|
+
export function applyXrayDemotion(scan, xr) {
|
|
194
|
+
const rank = { GO: 0, RISKY: 1, GATED: 2, STALE: 3, TAKEN: 4, ERROR: 5 };
|
|
195
|
+
if (!scan.flags.includes("xray-deep-verified"))
|
|
196
|
+
scan.flags.push("xray-deep-verified");
|
|
197
|
+
if (xr.verdict === "ERROR")
|
|
198
|
+
return false;
|
|
199
|
+
if ((rank[xr.verdict] ?? 9) <= (rank[scan.verdict] ?? 9))
|
|
200
|
+
return false;
|
|
201
|
+
scan.verdict = xr.verdict;
|
|
202
|
+
scan.reasons = [...xr.reasons, ...scan.reasons];
|
|
203
|
+
for (const fl of xr.flags)
|
|
204
|
+
if (!scan.flags.includes(fl))
|
|
205
|
+
scan.flags.push(fl);
|
|
206
|
+
return true;
|
|
207
|
+
}
|
|
208
|
+
/** Sort order for x-ray output: worst news first (triage order). */
|
|
209
|
+
export function sortXrayResults(results) {
|
|
210
|
+
const rank = { TAKEN: 0, RISKY: 1, GO: 2, ERROR: 3 };
|
|
211
|
+
return [...results].sort((a, b) => rank[a.verdict] - rank[b.verdict] || a.number - b.number);
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=xray.js.map
|
package/dist/xray.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"xray.js","sourceRoot":"","sources":["../src/xray.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -6,15 +6,15 @@
|
|
|
6
6
|
"url": "https://github.com/CloudCorpRecords/greenlight",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
10
|
-
"version": "0.
|
|
9
|
+
"version": "0.13.0",
|
|
10
|
+
"version": "0.13.0",
|
|
11
11
|
"packages": [
|
|
12
12
|
{
|
|
13
13
|
"registryType": "npm",
|
|
14
14
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
15
15
|
"identifier": "@reneturcios/greenlight",
|
|
16
|
-
"version": "0.
|
|
17
|
-
"version": "0.
|
|
16
|
+
"version": "0.13.0",
|
|
17
|
+
"version": "0.13.0",
|
|
18
18
|
"runtimeHint": "npx",
|
|
19
19
|
"packageArguments": [
|
|
20
20
|
{
|
|
@@ -28,8 +28,8 @@
|
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"registryType": "oci",
|
|
31
|
-
"identifier": "ghcr.io/cloudcorprecords/greenlight:0.
|
|
32
|
-
"identifier": "ghcr.io/cloudcorprecords/greenlight:0.
|
|
31
|
+
"identifier": "ghcr.io/cloudcorprecords/greenlight:0.13.0",
|
|
32
|
+
"identifier": "ghcr.io/cloudcorprecords/greenlight:0.13.0",
|
|
33
33
|
"runtimeHint": "docker",
|
|
34
34
|
"runtimeArguments": [
|
|
35
35
|
{
|