@reneturcios/greenlight 0.3.2 → 0.3.4
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 -7
- package/dist/bounty.d.ts +26 -0
- package/dist/bounty.js +48 -0
- package/dist/bounty.js.map +1 -0
- package/dist/claims.js +9 -0
- package/dist/claims.js.map +1 -1
- package/dist/cli.js +16 -1
- package/dist/cli.js.map +1 -1
- package/dist/friction.d.ts +2 -0
- package/dist/friction.js +2 -0
- package/dist/friction.js.map +1 -1
- package/dist/gates.d.ts +15 -1
- package/dist/gates.js +60 -2
- package/dist/gates.js.map +1 -1
- package/dist/github.d.ts +79 -1
- package/dist/github.js +336 -24
- package/dist/github.js.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/merge-velocity.d.ts +22 -0
- package/dist/merge-velocity.js +49 -0
- package/dist/merge-velocity.js.map +1 -0
- package/dist/server-side.d.ts +21 -0
- package/dist/server-side.js +68 -0
- package/dist/server-side.js.map +1 -0
- package/dist/types.d.ts +63 -1
- package/dist/verdict.d.ts +36 -3
- package/dist/verdict.js +127 -0
- package/dist/verdict.js.map +1 -1
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Merge velocity: how fast outside PRs land in a repo. Signal only, never
|
|
3
|
+
* a verdict input: resend merges outsiders same-day while crewAI's
|
|
4
|
+
* buildable issues were all claimed by a cohort, and only the share of
|
|
5
|
+
* non-collaborator merges tells those stories apart.
|
|
6
|
+
*
|
|
7
|
+
* Economical by design: a single /pulls call (author_association comes
|
|
8
|
+
* back in the list response, so no per-author collaborator checks).
|
|
9
|
+
*/
|
|
10
|
+
import { apiGet } from "./github.js";
|
|
11
|
+
const INTERNAL = new Set(["OWNER", "MEMBER", "COLLABORATOR"]);
|
|
12
|
+
const SAMPLE = 30;
|
|
13
|
+
export function computeMergeVelocityStats(rows) {
|
|
14
|
+
const merged = rows.filter((r) => r.mergedAt);
|
|
15
|
+
if (merged.length === 0)
|
|
16
|
+
return null;
|
|
17
|
+
const external = merged.filter((r) => !INTERNAL.has(r.authorAssociation)).length;
|
|
18
|
+
const days = merged
|
|
19
|
+
.map((r) => (new Date(r.mergedAt).getTime() - new Date(r.createdAt).getTime()) / 86400000)
|
|
20
|
+
.sort((a, b) => a - b);
|
|
21
|
+
const mid = Math.floor(days.length / 2);
|
|
22
|
+
const median = days.length % 2 === 1 ? days[mid] : (days[mid - 1] + days[mid]) / 2;
|
|
23
|
+
return {
|
|
24
|
+
mergedPRs: merged.length,
|
|
25
|
+
externalShare: Math.round((external / merged.length) * 100) / 100,
|
|
26
|
+
medianMergeDays: Math.round(median * 10) / 10,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
/** One-line human summary, e.g. "external merge share 40%, median merge 2.1d (28 merged PRs)". */
|
|
30
|
+
export function describeMergeVelocity(s) {
|
|
31
|
+
return `external merge share ${Math.round(s.externalShare * 100)}%, median merge ${s.medianMergeDays}d (${s.mergedPRs} merged PRs)`;
|
|
32
|
+
}
|
|
33
|
+
/** The newest closed PRs (bounded), from which the merged sample is drawn. */
|
|
34
|
+
export async function fetchMergeVelocity(owner, repo, deps = {}) {
|
|
35
|
+
let rows;
|
|
36
|
+
if (deps.listClosedPulls) {
|
|
37
|
+
rows = await deps.listClosedPulls(owner, repo);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const data = (await apiGet(`/repos/${owner}/${repo}/pulls?state=closed&sort=updated&direction=desc&per_page=${SAMPLE}`));
|
|
41
|
+
rows = (data ?? []).map((p) => ({
|
|
42
|
+
authorAssociation: String(p.author_association ?? ""),
|
|
43
|
+
createdAt: String(p.created_at ?? ""),
|
|
44
|
+
mergedAt: p.merged_at == null ? null : String(p.merged_at),
|
|
45
|
+
}));
|
|
46
|
+
}
|
|
47
|
+
return computeMergeVelocityStats(rows);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=merge-velocity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge-velocity.js","sourceRoot":"","sources":["../src/merge-velocity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ServerSideDeps {
|
|
2
|
+
/** Test seam: number of code-search hits for a literal string in the repo. */
|
|
3
|
+
codeSearch?: (owner: string, repo: string, literal: string) => Promise<number>;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Pull candidate error strings out of an issue body: backtick-quoted spans,
|
|
7
|
+
* double-quoted spans that start capitalized (error text, not prose), and
|
|
8
|
+
* explicit "error:" lines. Bounded at 4 candidates; each 8-160 chars so
|
|
9
|
+
* short tokens do not become useless search queries.
|
|
10
|
+
*/
|
|
11
|
+
export declare function extractErrorStrings(body: string): string[];
|
|
12
|
+
/**
|
|
13
|
+
* Returns { flag: "possibly-server-side", evidence } when a distinctive
|
|
14
|
+
* quoted error string from the body has zero hits in the repo, else null.
|
|
15
|
+
* Only the first two candidates are searched (each costs one API call).
|
|
16
|
+
* Any search failure returns null: no evidence, no flag.
|
|
17
|
+
*/
|
|
18
|
+
export declare function detectServerSideOnly(owner: string, repo: string, body: string, deps?: ServerSideDeps): Promise<{
|
|
19
|
+
flag: string;
|
|
20
|
+
evidence: string;
|
|
21
|
+
} | null>;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side-only detection. Some issues cannot be fixed in the repo at
|
|
3
|
+
* all: ComposioHQ/composio#4852's HTTP 422 / code 1706 rejection is enforced
|
|
4
|
+
* by Composio's closed backend, while the repo holds only SDKs that pass
|
|
5
|
+
* the auth config straight through. A full build burned on it before anyone
|
|
6
|
+
* noticed the error text existed nowhere in the codebase.
|
|
7
|
+
*
|
|
8
|
+
* Heuristic: extract quoted error strings from the issue body and code-search
|
|
9
|
+
* the repo for them. Zero hits on a distinctive string means the check
|
|
10
|
+
* probably lives outside the repo. Best-effort by contract: rate limits,
|
|
11
|
+
* search failures, or an empty candidate list all yield null, never a
|
|
12
|
+
* guess. No verdict change, warning only.
|
|
13
|
+
*/
|
|
14
|
+
import { apiGet } from "./github.js";
|
|
15
|
+
/**
|
|
16
|
+
* Pull candidate error strings out of an issue body: backtick-quoted spans,
|
|
17
|
+
* double-quoted spans that start capitalized (error text, not prose), and
|
|
18
|
+
* explicit "error:" lines. Bounded at 4 candidates; each 8-160 chars so
|
|
19
|
+
* short tokens do not become useless search queries.
|
|
20
|
+
*/
|
|
21
|
+
export function extractErrorStrings(body) {
|
|
22
|
+
const out = [];
|
|
23
|
+
const add = (s) => {
|
|
24
|
+
const t = s.trim();
|
|
25
|
+
if (t.length >= 8 && t.length <= 160 && !out.includes(t))
|
|
26
|
+
out.push(t);
|
|
27
|
+
};
|
|
28
|
+
for (const m of body.matchAll(/`([^`]{8,160})`/g))
|
|
29
|
+
add(m[1]);
|
|
30
|
+
for (const m of body.matchAll(/"([A-Z][^"\n]{7,159})"/g))
|
|
31
|
+
add(m[1]);
|
|
32
|
+
for (const m of body.matchAll(/\berror\s*[:=]\s*["']?([^"'\n]{8,160})/gi))
|
|
33
|
+
add(m[1]);
|
|
34
|
+
return out.slice(0, 4);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Returns { flag: "possibly-server-side", evidence } when a distinctive
|
|
38
|
+
* quoted error string from the body has zero hits in the repo, else null.
|
|
39
|
+
* Only the first two candidates are searched (each costs one API call).
|
|
40
|
+
* Any search failure returns null: no evidence, no flag.
|
|
41
|
+
*/
|
|
42
|
+
export async function detectServerSideOnly(owner, repo, body, deps = {}) {
|
|
43
|
+
const candidates = extractErrorStrings(body);
|
|
44
|
+
if (candidates.length === 0)
|
|
45
|
+
return null;
|
|
46
|
+
const search = deps.codeSearch ??
|
|
47
|
+
(async (o, r, literal) => {
|
|
48
|
+
const data = (await apiGet(`/search/code?q=${encodeURIComponent(`repo:${o}/${r} "${literal}"`)}&per_page=1`));
|
|
49
|
+
return data.total_count ?? 0;
|
|
50
|
+
});
|
|
51
|
+
for (const c of candidates.slice(0, 2)) {
|
|
52
|
+
let hits;
|
|
53
|
+
try {
|
|
54
|
+
hits = await search(owner, repo, c);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null; // rate limited or search failed: emit nothing rather than guessing
|
|
58
|
+
}
|
|
59
|
+
if (hits === 0) {
|
|
60
|
+
return {
|
|
61
|
+
flag: "possibly-server-side",
|
|
62
|
+
evidence: `error text "${c}" not found anywhere in ${owner}/${repo}; the check may be enforced by a backend service outside this repo`,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=server-side.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server-side.js","sourceRoot":"","sources":["../src/server-side.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAOrC;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,CAAC,CAAS,EAAQ,EAAE;QAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACxE,CAAC,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAa,EACb,IAAY,EACZ,IAAY,EACZ,OAAuB,EAAE;IAEzB,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,MAAM,GACV,IAAI,CAAC,UAAU;QACf,CAAC,KAAK,EAAE,CAAS,EAAE,CAAS,EAAE,OAAe,EAAmB,EAAE;YAChE,MAAM,IAAI,GAAG,CAAC,MAAM,MAAM,CACxB,kBAAkB,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,OAAO,GAAG,CAAC,aAAa,CACjF,CAA6B,CAAC;YAC/B,OAAO,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACvC,IAAI,IAAY,CAAC;QACjB,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,CAAC,mEAAmE;QAClF,CAAC;QACD,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,OAAO;gBACL,IAAI,EAAE,sBAAsB;gBAC5B,QAAQ,EAAE,eAAe,CAAC,2BAA2B,KAAK,IAAI,IAAI,oEAAoE;aACvI,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -17,6 +17,14 @@ export interface LinkedPR {
|
|
|
17
17
|
url: string;
|
|
18
18
|
/** How strongly the PR is tied to the issue. Only "closing" PRs take an issue. */
|
|
19
19
|
linkStrength: "closing" | "mention";
|
|
20
|
+
/**
|
|
21
|
+
* Where the link was found: "timeline" for GitHub's own
|
|
22
|
+
* cross-referenced timeline events (the strongest race signal; a PR in
|
|
23
|
+
* flight against the issue even when its body never says "closes #N"),
|
|
24
|
+
* "search" for issue-number search hits, "comment" for PRs cited in
|
|
25
|
+
* comments. Absent on older fixtures.
|
|
26
|
+
*/
|
|
27
|
+
via?: "timeline" | "search" | "comment";
|
|
20
28
|
}
|
|
21
29
|
/** A pull request referenced in an issue comment, fetched and checked for issue overlap. */
|
|
22
30
|
export interface MentionedPR {
|
|
@@ -25,6 +33,15 @@ export interface MentionedPR {
|
|
|
25
33
|
state: "open" | "closed" | "merged";
|
|
26
34
|
/** True when the PR title/body references this issue's number. */
|
|
27
35
|
mentionsIssue: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* True when the PR was linked from a fix-announcement comment: a
|
|
38
|
+
* "/attempt" (or "/claim") bot command, or a "Submitted fix for ... in
|
|
39
|
+
* <PR url>" narrative. Seen on tscircuit/tscircuit#5563, where a
|
|
40
|
+
* contributor posted /attempt comments and then linked fix PRs for each
|
|
41
|
+
* sub-bug (in other repos of the same org) that no list view surfaced.
|
|
42
|
+
* These count as race signals even when the PR does not name the issue.
|
|
43
|
+
*/
|
|
44
|
+
attemptLinked?: boolean;
|
|
28
45
|
/**
|
|
29
46
|
* True when the citing comment came from the issue author. The open-PR
|
|
30
47
|
* downgrade (rule 11) only trusts non-author heads-ups, but a
|
|
@@ -59,6 +76,25 @@ export interface IssueSnapshot {
|
|
|
59
76
|
contributing?: string;
|
|
60
77
|
/** Gates supplied from a gatefile contribution-gates.json, already mapped to Greenlight kinds. */
|
|
61
78
|
externalGates?: Gate[];
|
|
79
|
+
/** Detected-only gates from the .github/workflows scan (external_prs_closed). */
|
|
80
|
+
workflowGates?: Gate[];
|
|
81
|
+
/**
|
|
82
|
+
* Other issues this issue is marked a duplicate of (from "duplicate of
|
|
83
|
+
* #N" comments and marked-as-duplicate timeline signals), each fetched
|
|
84
|
+
* for its current state. n8n-io/n8n#41215 was a duplicate of #40803,
|
|
85
|
+
* already closed as completed: a full build was nearly wasted on it.
|
|
86
|
+
*/
|
|
87
|
+
duplicateOf?: DuplicateTarget[];
|
|
88
|
+
/**
|
|
89
|
+
* Server-side-only signal (best-effort): set when a quoted error string
|
|
90
|
+
* from the issue body has zero hits in the repo, meaning the check may
|
|
91
|
+
* be enforced by a backend service outside this repo. Absent when there
|
|
92
|
+
* is no evidence.
|
|
93
|
+
*/
|
|
94
|
+
serverSide?: {
|
|
95
|
+
flag: string;
|
|
96
|
+
evidence: string;
|
|
97
|
+
};
|
|
62
98
|
}
|
|
63
99
|
/** One detected claim signal from a comment. */
|
|
64
100
|
export interface ClaimSignal {
|
|
@@ -73,7 +109,27 @@ export interface ClaimSignal {
|
|
|
73
109
|
scopeWord?: string;
|
|
74
110
|
}
|
|
75
111
|
/** A contribution gate parsed from CONTRIBUTING / repo policy. */
|
|
76
|
-
export type GateKind = "assignment_required" | "claim_first" | "vouch_required" | "cla_required" | "dco_required" | "discussion_first" | "collaborators_only"
|
|
112
|
+
export type GateKind = "assignment_required" | "claim_first" | "vouch_required" | "cla_required" | "dco_required" | "discussion_first" | "collaborators_only"
|
|
113
|
+
/**
|
|
114
|
+
* The repo has paused unsolicited outside PRs. Seen on
|
|
115
|
+
* activepieces/activepieces#16580/#16581: CONTRIBUTING said unsolicited
|
|
116
|
+
* PRs from outside the core team were paused, and two finished PRs were
|
|
117
|
+
* auto-closed within about a minute.
|
|
118
|
+
*/
|
|
119
|
+
| "unsolicited_prs_paused"
|
|
120
|
+
/**
|
|
121
|
+
* A repo workflow closes external PRs automatically ("Close external
|
|
122
|
+
* PRs" style), the sharp end of the paused-PR policy above.
|
|
123
|
+
*/
|
|
124
|
+
| "external_prs_closed";
|
|
125
|
+
/** Another issue this one is marked a duplicate of, with its live state. */
|
|
126
|
+
export interface DuplicateTarget {
|
|
127
|
+
number: number;
|
|
128
|
+
url: string;
|
|
129
|
+
state: "open" | "closed";
|
|
130
|
+
/** GitHub's state_reason: "completed" | "not_planned" | "reopened" | undefined. */
|
|
131
|
+
stateReason?: string;
|
|
132
|
+
}
|
|
77
133
|
export interface Gate {
|
|
78
134
|
kind: GateKind;
|
|
79
135
|
detected: boolean;
|
|
@@ -128,4 +184,10 @@ export interface FrictionReport {
|
|
|
128
184
|
gates: Gate[];
|
|
129
185
|
reasons: string[];
|
|
130
186
|
signals: RepoSignals;
|
|
187
|
+
/**
|
|
188
|
+
* Merge velocity, when computed (signal only, never a score input):
|
|
189
|
+
* share of recent merged PRs authored by non-collaborators and the
|
|
190
|
+
* median days to merge. Absent when it could not be computed.
|
|
191
|
+
*/
|
|
192
|
+
mergeVelocity?: import("./merge-velocity.js").MergeVelocityStats | null;
|
|
131
193
|
}
|
package/dist/verdict.d.ts
CHANGED
|
@@ -10,6 +10,23 @@
|
|
|
10
10
|
* timeline cross-reference only) does not take it: it only adds the
|
|
11
11
|
* "weak-pr-mention" flag (issue #1, seen on shadcn-labs/pdfcn#61 and
|
|
12
12
|
* #71, where PR #91 closes #70 but lists sibling issues in its body).
|
|
13
|
+
* 3b. Marked duplicate of an issue closed as completed -> RISKY, flag
|
|
14
|
+
* "duplicate-of-closed". The work already shipped: n8n-io/n8n#41215
|
|
15
|
+
* was a duplicate of #40803 (closed as completed) and a full build
|
|
16
|
+
* was nearly wasted on it.
|
|
17
|
+
* 3c. Marked duplicate of a still-open (or not-planned) issue -> warning
|
|
18
|
+
* only, never a verdict change. The target's URL and live state are
|
|
19
|
+
* quoted with the "duplicate-of-open" flag.
|
|
20
|
+
* 3d. An OPEN PR GitHub cross-referenced in the issue's timeline ->
|
|
21
|
+
* TAKEN, flag "cross-referenced-pr", with the PR URL and title
|
|
22
|
+
* quoted. The timeline records PRs already in flight that comments
|
|
23
|
+
* never link (e2b-dev/E2B#1986/#1984/#1981, ComposioHQ/composio#4904,
|
|
24
|
+
* convex/convex-js#197, ghostfolio/ghostfolio#4605's #4958).
|
|
25
|
+
* 3e. A MERGED timeline cross-reference not consumed by any other rule
|
|
26
|
+
* caps an otherwise-GO verdict at RISKY, flag
|
|
27
|
+
* "cross-referenced-pr-merged", with a "verify what shipped" note.
|
|
28
|
+
* Merged usually means fixed, but not always (#7522 fixed only the
|
|
29
|
+
* unrestricted variant of #4605), so never TAKEN.
|
|
13
30
|
* 4. Two or more strong whole-issue claimants -> TAKEN (claim race). Seen on
|
|
14
31
|
* langchain-ai/langchain#41185 (3 claimants while still "unassigned").
|
|
15
32
|
* Scoped (partial) claims do not count toward a race: part of the work
|
|
@@ -26,9 +43,13 @@
|
|
|
26
43
|
* claimed 2026-08-11, never opened a PR). A closing PR, open or not,
|
|
27
44
|
* counts as "a PR was opened" here; a mere mention does not. Stale
|
|
28
45
|
* partial claims get the same treatment, scoped.
|
|
29
|
-
* 7. Any hard gate (assignment / vouch / collaborators_only
|
|
30
|
-
*
|
|
31
|
-
*
|
|
46
|
+
* 7. Any hard gate (assignment / vouch / collaborators_only /
|
|
47
|
+
* unsolicited_prs_paused / external_prs_closed) with no assignee ->
|
|
48
|
+
* GATED. The code might be welcome, but the ritual blocks you:
|
|
49
|
+
* PrefectHQ/fastmcp#5718 (assignment), triggerdotdev/trigger.dev#5016
|
|
50
|
+
* (vouch), activepieces/activepieces (paused unsolicited PRs plus a
|
|
51
|
+
* "Close external PRs" workflow that auto-closed two finished PRs
|
|
52
|
+
* within about a minute).
|
|
32
53
|
* 8. No activity for 180+ days -> STALE. The issue is probably abandoned,
|
|
33
54
|
* the repro may not even hold on current code.
|
|
34
55
|
* 9. Soft claim-first gate (comment before starting, shadcn-labs/pdfcn
|
|
@@ -41,6 +62,18 @@
|
|
|
41
62
|
* "comment-mentioned-pr" ("PR #NNN referenced in comments may already
|
|
42
63
|
* cover part of this issue"). A merged one is only an informational
|
|
43
64
|
* note; neither can produce TAKEN. Seen on reticlehq/reticle#691.
|
|
65
|
+
* Fix-announcement comments ("/attempt #N" commands or "Submitted fix
|
|
66
|
+
* for ... in <PR url>" narratives, often in sibling repos) add
|
|
67
|
+
* "attempt-linked-pr" evidence with the PR URL quoted before rule 4,
|
|
68
|
+
* so claim verdicts carry it, and cap an otherwise-GO verdict at RISKY
|
|
69
|
+
* at the end, even when the PR never names the issue. Seen on
|
|
70
|
+
* tscircuit/tscircuit#5563.
|
|
71
|
+
* W. Warning-only signals, never a verdict change: weak claims (soft
|
|
72
|
+
* claims quoted with their age in days, e.g. a 2-month-old "taking a
|
|
73
|
+
* look"), bounty liveness ("bounty-platform-dead" when the named
|
|
74
|
+
* platform is dead like Algora, "bounty-unverified" when no platform
|
|
75
|
+
* or payer is identifiable), and "possibly-server-side" when a quoted
|
|
76
|
+
* error string from the body has zero hits in the repo.
|
|
44
77
|
* 12. Partially-addressed: merged PRs that reference the issue number
|
|
45
78
|
* (comment-mentioned or linked), or maintainer comments signaling part
|
|
46
79
|
* of the work already shipped ("Half addressed", "leaving this open
|
package/dist/verdict.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { detectClaims, strongClaimants } from "./claims.js";
|
|
2
2
|
import { parseGates, parseGatesFromSources, hardGates, gateLabel } from "./gates.js";
|
|
3
3
|
import { isClosingPR } from "./linkstrength.js";
|
|
4
|
+
import { detectBounty } from "./bounty.js";
|
|
4
5
|
import { extractPRReferences } from "./github.js";
|
|
5
6
|
const FRESH_CLAIM_DAYS = 45;
|
|
6
7
|
const STALE_INACTIVITY_DAYS = 180;
|
|
@@ -27,6 +28,18 @@ export function scoreIssue(snapshot, now = new Date()) {
|
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
30
|
}
|
|
31
|
+
// Workflow gates (auto-close automation) merge the same way: a detected
|
|
32
|
+
// .github/workflows signal fills a kind the prose pass did not catch.
|
|
33
|
+
if (snapshot.workflowGates) {
|
|
34
|
+
for (const wg of snapshot.workflowGates) {
|
|
35
|
+
const m = gates.find((x) => x.kind === wg.kind);
|
|
36
|
+
if (m && !m.detected) {
|
|
37
|
+
m.detected = true;
|
|
38
|
+
m.evidence = wg.evidence;
|
|
39
|
+
m.source = wg.source;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
30
43
|
const reasons = [];
|
|
31
44
|
const flags = [];
|
|
32
45
|
const repoRef = `${snapshot.owner}/${snapshot.repo}`;
|
|
@@ -40,12 +53,56 @@ export function scoreIssue(snapshot, now = new Date()) {
|
|
|
40
53
|
reasons.push(`assigned to ${snapshot.assignees.join(", ")}`);
|
|
41
54
|
return { verdict: "TAKEN", reasons, claims, gates, flags };
|
|
42
55
|
}
|
|
56
|
+
// Timeline cross-references (computed before rule 3 so a closing PR
|
|
57
|
+
// verdict can still quote the rest of the in-flight field).
|
|
58
|
+
const timelineXrefs = snapshot.linkedPRs.filter((pr) => pr.via === "timeline");
|
|
59
|
+
const openTimelineXrefs = timelineXrefs.filter((pr) => pr.state === "open");
|
|
60
|
+
const mergedTimelineXrefs = timelineXrefs.filter((pr) => pr.state === "merged");
|
|
61
|
+
const xrefLabel = (pr) => `#${pr.number} "${pr.title}" (${pr.url})`;
|
|
43
62
|
// Rule 3: open linked PR that closes the issue.
|
|
44
63
|
const openClosingPR = snapshot.linkedPRs.find((pr) => pr.state === "open" && isClosingPR(pr));
|
|
45
64
|
if (openClosingPR) {
|
|
46
65
|
reasons.push(`open PR #${openClosingPR.number} closes this issue`);
|
|
66
|
+
const others = openTimelineXrefs.filter((pr) => pr.number !== openClosingPR.number);
|
|
67
|
+
if (others.length > 0) {
|
|
68
|
+
flags.push("cross-referenced-pr");
|
|
69
|
+
reasons.push(`also cross-referenced in the issue timeline and in flight: ${others.map(xrefLabel).join("; ")}`);
|
|
70
|
+
}
|
|
71
|
+
return { verdict: "TAKEN", reasons, claims, gates, flags };
|
|
72
|
+
}
|
|
73
|
+
// Rule 3d: timeline cross-reference race. GitHub records a
|
|
74
|
+
// cross-referenced timeline event when a PR's body or a commit message
|
|
75
|
+
// references the issue: the PR is in flight against it even when its
|
|
76
|
+
// body never says "closes #N" and no comment ever links it. Comment-only
|
|
77
|
+
// race checks missed five of twelve claims in one evening this way
|
|
78
|
+
// (e2b-dev/E2B#1986/#1984/#1981, ComposioHQ/composio#4904,
|
|
79
|
+
// convex/convex-js#197, ghostfolio/ghostfolio#4605's #4958). Any OPEN
|
|
80
|
+
// timeline cross-reference takes the issue; closed-unmerged ones are
|
|
81
|
+
// (timelineXrefs computed above, before rule 3; open ones are quoted
|
|
82
|
+
// here even when a closing PR already took the issue, and merged ones
|
|
83
|
+
// get flag 3e below.)
|
|
84
|
+
if (mergedTimelineXrefs.length > 0) {
|
|
85
|
+
flags.push("cross-referenced-pr-merged");
|
|
86
|
+
}
|
|
87
|
+
if (openTimelineXrefs.length > 0) {
|
|
88
|
+
flags.push("cross-referenced-pr");
|
|
89
|
+
reasons.push(`open PR(s) cross-referenced in the issue timeline: ${openTimelineXrefs.map(xrefLabel).join("; ")}`);
|
|
90
|
+
if (mergedTimelineXrefs.length > 0) {
|
|
91
|
+
reasons.push(`also merged in the timeline: ${mergedTimelineXrefs.map(xrefLabel).join("; ")}`);
|
|
92
|
+
}
|
|
47
93
|
return { verdict: "TAKEN", reasons, claims, gates, flags };
|
|
48
94
|
}
|
|
95
|
+
// Rule 3b: duplicate-of a completed issue. If this issue is marked a
|
|
96
|
+
// duplicate of another issue that is closed as completed, the work
|
|
97
|
+
// already shipped and building here is wasted. n8n-io/n8n#41215 was a
|
|
98
|
+
// duplicate of #40803 (closed as completed): a full build was nearly
|
|
99
|
+
// wasted on it because the comment sat unread below the bot ticket.
|
|
100
|
+
const dupClosedCompleted = (snapshot.duplicateOf ?? []).find((d) => d.state === "closed" && d.stateReason === "completed");
|
|
101
|
+
if (dupClosedCompleted) {
|
|
102
|
+
reasons.push(`marked duplicate of #${dupClosedCompleted.number}, which is closed as completed`);
|
|
103
|
+
flags.push("duplicate-of-closed");
|
|
104
|
+
return { verdict: "RISKY", reasons, claims, gates, flags };
|
|
105
|
+
}
|
|
49
106
|
// An open PR that only mentions the issue is a weak signal, not a takeover.
|
|
50
107
|
const openMentionPRs = snapshot.linkedPRs.filter((pr) => pr.state === "open" && !isClosingPR(pr));
|
|
51
108
|
if (openMentionPRs.length > 0)
|
|
@@ -55,6 +112,20 @@ export function scoreIssue(snapshot, now = new Date()) {
|
|
|
55
112
|
// of the work open, so only whole-issue claims can form a claim race.
|
|
56
113
|
const fullStrong = strong.filter((c) => c.scope !== "partial");
|
|
57
114
|
const partialStrong = strong.filter((c) => c.scope === "partial");
|
|
115
|
+
// Attempt-linked PRs (fix-announcement comments: "/attempt #N" commands
|
|
116
|
+
// or "Submitted fix for ... in <PR url>" narratives, often in sibling
|
|
117
|
+
// repos) are race signals with the URL quoted, even when the PR never
|
|
118
|
+
// names the issue. The evidence is added here so every later return
|
|
119
|
+
// (claim race, fresh/stale claim) carries it; the GO downgrade happens
|
|
120
|
+
// at the end, after rules 11-12, so it only fires when nothing else did.
|
|
121
|
+
// Seen on tscircuit/tscircuit#5563.
|
|
122
|
+
const attemptLinkedOpen = (snapshot.commentMentionedPRs ?? []).filter((p) => p.state === "open" && p.attemptLinked);
|
|
123
|
+
if (attemptLinkedOpen.length > 0) {
|
|
124
|
+
flags.push("attempt-linked-pr");
|
|
125
|
+
const urls = attemptLinkedOpen.slice(0, 3).map((p) => p.url);
|
|
126
|
+
const more = attemptLinkedOpen.length > 3 ? ` and ${attemptLinkedOpen.length - 3} more` : "";
|
|
127
|
+
reasons.push(`fix PRs linked from fix-announcement comments may already cover this work: ${urls.join(", ")}${more}`);
|
|
128
|
+
}
|
|
58
129
|
// Rule 4: claim race.
|
|
59
130
|
if (fullStrong.length >= 2) {
|
|
60
131
|
const names = fullStrong.map((c) => c.author).join(", ");
|
|
@@ -116,6 +187,34 @@ export function scoreIssue(snapshot, now = new Date()) {
|
|
|
116
187
|
// as the weak-PR-mention rule below.
|
|
117
188
|
const claimFirst = gates.some((g) => g.kind === "claim_first" && g.detected);
|
|
118
189
|
const claimFirstNote = "repo asks contributors to comment before starting (claim first)";
|
|
190
|
+
// Warning-only signals: flags with reasons that never change the
|
|
191
|
+
// verdict. They ride along on whatever verdict the rules above and
|
|
192
|
+
// below produce.
|
|
193
|
+
// Soft claims carry their comment date so a months-old soft claim weighs
|
|
194
|
+
// differently from yesterday's: actualbudget/actual#6643's "I'm going
|
|
195
|
+
// to take a look at this one" sat two months with nothing landing.
|
|
196
|
+
const softClaims = claims.filter((c) => c.strength === "soft");
|
|
197
|
+
if (softClaims.length > 0) {
|
|
198
|
+
const c = softClaims[0];
|
|
199
|
+
flags.push("weak-claim");
|
|
200
|
+
reasons.push(`soft claim by ${c.author} ${c.ageDays} day(s) ago ("${c.phrase}"); no verdict change`);
|
|
201
|
+
}
|
|
202
|
+
// Bounty liveness: a bounty is context, never landability evidence. A
|
|
203
|
+
// dead platform (algora.io 404s, API empty since 2025) behind a "$250
|
|
204
|
+
// bounty" label means there is no money to chase (onyx#2281 style).
|
|
205
|
+
const bounty = detectBounty({ labels: snapshot.labels, title: snapshot.title, body: snapshot.body ?? "" });
|
|
206
|
+
if (bounty && bounty.flag) {
|
|
207
|
+
flags.push(bounty.flag);
|
|
208
|
+
reasons.push(bounty.flag === "bounty-platform-dead"
|
|
209
|
+
? `bounty names a dead platform: ${bounty.evidence}`
|
|
210
|
+
: `bounty offered but unverified: ${bounty.evidence}`);
|
|
211
|
+
}
|
|
212
|
+
// Server-side-only: a quoted error string from the body with zero hits
|
|
213
|
+
// in the repo means the check may live outside it entirely.
|
|
214
|
+
if (snapshot.serverSide) {
|
|
215
|
+
flags.push(snapshot.serverSide.flag);
|
|
216
|
+
reasons.push(snapshot.serverSide.evidence);
|
|
217
|
+
}
|
|
119
218
|
// Rule 10: nothing blocking, unless an open PR merely mentions the issue.
|
|
120
219
|
let verdict = "GO";
|
|
121
220
|
if (openMentionPRs.length > 0) {
|
|
@@ -195,6 +294,34 @@ export function scoreIssue(snapshot, now = new Date()) {
|
|
|
195
294
|
continue;
|
|
196
295
|
reasons.push(`PR #${p.number} (merged) referenced in comments; issue may be partially addressed`);
|
|
197
296
|
}
|
|
297
|
+
// Rule 3e: merged timeline cross-references that no other rule consumed.
|
|
298
|
+
// A merged PR GitHub recorded against this issue usually means the work
|
|
299
|
+
// already shipped, but not always: ghostfolio/ghostfolio#4605's merged
|
|
300
|
+
// #7522 fixed only the unrestricted impersonation case while the
|
|
301
|
+
// restricted-view case stayed open. So this caps an otherwise-GO verdict
|
|
302
|
+
// at RISKY; it never produces TAKEN.
|
|
303
|
+
if (mergedTimelineXrefs.length > 0 && verdict === "GO") {
|
|
304
|
+
const unconsumed = mergedTimelineXrefs.filter((p) => !consumedByRule12.has(p.number));
|
|
305
|
+
if (unconsumed.length > 0) {
|
|
306
|
+
reasons.push(`timeline cross-referenced PR(s) already merged: ${unconsumed.map(xrefLabel).join("; ")}; the issue may already be fixed, verify what shipped before building`);
|
|
307
|
+
verdict = "RISKY";
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
// Rule 3c: duplicate-of warning. A still-open duplicate target (or one
|
|
311
|
+
// closed as not_planned) is a heads-up to check there before building,
|
|
312
|
+
// never a verdict change: the target's issue number and live state are
|
|
313
|
+
// quoted so the contributor can go look.
|
|
314
|
+
const dupOther = (snapshot.duplicateOf ?? []).find((d) => !(d.state === "closed" && d.stateReason === "completed"));
|
|
315
|
+
if (dupOther) {
|
|
316
|
+
const status = dupOther.state === "closed" ? `closed as ${dupOther.stateReason ?? "unknown"}` : "still open";
|
|
317
|
+
flags.push("duplicate-of-open");
|
|
318
|
+
reasons.push(`marked duplicate of #${dupOther.number} (${dupOther.url}), which is ${status}; check there before building`);
|
|
319
|
+
}
|
|
320
|
+
// Attempt-linked downgrade: the evidence was added before rule 4 so claim
|
|
321
|
+
// returns carry it; cap an otherwise-GO verdict at RISKY here, after
|
|
322
|
+
// every other rule has had its say.
|
|
323
|
+
if (attemptLinkedOpen.length > 0 && verdict === "GO")
|
|
324
|
+
verdict = "RISKY";
|
|
198
325
|
return { verdict, reasons, claims, gates, flags };
|
|
199
326
|
}
|
|
200
327
|
/**
|
package/dist/verdict.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verdict.js","sourceRoot":"","sources":["../src/verdict.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"verdict.js","sourceRoot":"","sources":["../src/verdict.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/server.json
CHANGED
|
@@ -6,13 +6,13 @@
|
|
|
6
6
|
"url": "https://github.com/CloudCorpRecords/greenlight",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.3.
|
|
9
|
+
"version": "0.3.4",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@reneturcios/greenlight",
|
|
15
|
-
"version": "0.3.
|
|
15
|
+
"version": "0.3.4",
|
|
16
16
|
"runtimeHint": "npx",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{
|