@renaiss-shipflow/cli 0.10.0 → 0.12.1
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/dist/client.d.ts +27 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +5 -0
- package/dist/client.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +3 -1
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/git-identity.d.ts +3 -0
- package/dist/commands/git-identity.d.ts.map +1 -0
- package/dist/commands/git-identity.js +77 -0
- package/dist/commands/git-identity.js.map +1 -0
- package/dist/commands/issue.d.ts.map +1 -1
- package/dist/commands/issue.js +49 -6
- package/dist/commands/issue.js.map +1 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +16 -2
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/pr.d.ts.map +1 -1
- package/dist/commands/pr.js +107 -3
- package/dist/commands/pr.js.map +1 -1
- package/dist/commands/stats.d.ts +7 -0
- package/dist/commands/stats.d.ts.map +1 -1
- package/dist/commands/stats.js +72 -1
- package/dist/commands/stats.js.map +1 -1
- package/dist/commands/test.d.ts +10 -0
- package/dist/commands/test.d.ts.map +1 -1
- package/dist/commands/test.js +52 -14
- package/dist/commands/test.js.map +1 -1
- package/dist/config.d.ts +7 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +9 -0
- package/dist/config.js.map +1 -1
- package/dist/escalation-format.d.ts +35 -2
- package/dist/escalation-format.d.ts.map +1 -1
- package/dist/escalation-format.js +81 -4
- package/dist/escalation-format.js.map +1 -1
- package/dist/gh.d.ts +40 -1
- package/dist/gh.d.ts.map +1 -1
- package/dist/gh.js +88 -3
- package/dist/gh.js.map +1 -1
- package/dist/git-local.d.ts +4 -0
- package/dist/git-local.d.ts.map +1 -1
- package/dist/git-local.js +37 -0
- package/dist/git-local.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/packet.d.ts +43 -3
- package/dist/packet.d.ts.map +1 -1
- package/dist/packet.js +124 -17
- package/dist/packet.js.map +1 -1
- package/dist/review-contract-data.d.ts +91 -0
- package/dist/review-contract-data.d.ts.map +1 -0
- package/dist/review-contract-data.js +111 -0
- package/dist/review-contract-data.js.map +1 -0
- package/dist/review-contract.d.ts +66 -0
- package/dist/review-contract.d.ts.map +1 -0
- package/dist/review-contract.js +139 -0
- package/dist/review-contract.js.map +1 -0
- package/package.json +1 -1
package/dist/packet.js
CHANGED
|
@@ -6,26 +6,36 @@
|
|
|
6
6
|
// packet tempts a reviewer into confidently redefining "spec" as whatever the
|
|
7
7
|
// diff implies — the exact failure family Superpowers 6 measured (0/5 flagged
|
|
8
8
|
// a missing brief). When no linked issue exists, the packet says so loudly.
|
|
9
|
-
|
|
10
|
-
//
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
export const
|
|
9
|
+
import { REVIEW_CONTRACT } from "./review-contract-data.js";
|
|
10
|
+
// Budgets come from the canonical review contract (contracts/review-contract.json,
|
|
11
|
+
// epic #96 slice 2) — the SAME values the server-side pr_review runner loads, so
|
|
12
|
+
// both reviewers see identically sized diffs.
|
|
13
|
+
export const PACKET_PER_FILE_CAP = REVIEW_CONTRACT.budgets.perFileDiffCap;
|
|
14
|
+
export const PACKET_TOTAL_CAP = REVIEW_CONTRACT.budgets.packetTotalCap;
|
|
15
|
+
export const PACKET_BRIEF_CAP = REVIEW_CONTRACT.budgets.briefCap; // acceptance criteria sit at the BOTTOM of issue bodies — a tight cap silently drops the spec's checklist
|
|
14
16
|
// Noise paths excluded from the packet diff — lockfiles, generated output,
|
|
15
|
-
// vendored deps, binary-adjacent assets.
|
|
16
|
-
//
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
// vendored deps, binary-adjacent assets. Loaded from the shared contract's
|
|
18
|
+
// review-filter scope (the union of both reviewers' pre-contract lists).
|
|
19
|
+
// The contract's `noise.featuremapOnly` scope (.claude/ — tracked plugin
|
|
20
|
+
// source) is deliberately NOT consumed here: the server reviewer drops those
|
|
21
|
+
// paths (featuremap.IsNoisePath), so this packet is the only reviewer that
|
|
22
|
+
// sees them — filtering them here would blind review entirely.
|
|
23
|
+
// Matching: substrings contains-match; suffixes/extensions match as trailing
|
|
24
|
+
// patterns; basenames match the path's base name EXACTLY (parity with the Go
|
|
25
|
+
// side's filepath.Base — `notbun.lockb` must not match `bun.lockb`). All
|
|
26
|
+
// matching is case-insensitive (this side's pre-contract semantics).
|
|
27
|
+
const NOISE_SUBSTRINGS = REVIEW_CONTRACT.noise.substrings.map((s) => s.toLowerCase());
|
|
21
28
|
const NOISE_SUFFIXES = [
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
...REVIEW_CONTRACT.noise.suffixes,
|
|
30
|
+
...REVIEW_CONTRACT.noise.extensions,
|
|
31
|
+
].map((s) => s.toLowerCase());
|
|
32
|
+
const NOISE_BASENAMES = REVIEW_CONTRACT.noise.basenames.map((s) => s.toLowerCase());
|
|
26
33
|
export function isNoiseDiffPath(path) {
|
|
27
|
-
|
|
28
|
-
|
|
34
|
+
// Normalize: forward slashes, no leading "./" — diff paths are repo-relative.
|
|
35
|
+
const p = path.replace(/\\/g, "/").replace(/^\.\//, "").toLowerCase();
|
|
36
|
+
const base = p.slice(p.lastIndexOf("/") + 1);
|
|
37
|
+
return (NOISE_BASENAMES.includes(base) ||
|
|
38
|
+
NOISE_SUBSTRINGS.some((s) => p.includes(s)) ||
|
|
29
39
|
NOISE_SUFFIXES.some((s) => p.endsWith(s)));
|
|
30
40
|
}
|
|
31
41
|
/** Split a unified `gh pr diff` output into per-file sections. */
|
|
@@ -91,6 +101,63 @@ export function extractEvidenceLines(comments) {
|
|
|
91
101
|
}
|
|
92
102
|
return lines.slice(0, 12);
|
|
93
103
|
}
|
|
104
|
+
/** Directory-boundary ownership: "src/app/admin" owns "src/app/admin/…" and
|
|
105
|
+
* the exact path itself, but never "src/app/admin-shop/…". A leading "./" on
|
|
106
|
+
* the prefix is ignored; an empty prefix owns nothing. Keep in lockstep with
|
|
107
|
+
* the server's reviewcontract.OwnsPath — both must pass the canonical
|
|
108
|
+
* contract's ownsTestVectors (contract-parity.test.ts). */
|
|
109
|
+
export function ownsPath(prefix, path) {
|
|
110
|
+
const p = prefix.replace(/^\.\//, "");
|
|
111
|
+
if (!p)
|
|
112
|
+
return false;
|
|
113
|
+
return path === p || path.startsWith(p.endsWith("/") ? p : p + "/");
|
|
114
|
+
}
|
|
115
|
+
/** Names of the features whose path prefixes match any non-noise diff path,
|
|
116
|
+
* in feature-map order, deduped. */
|
|
117
|
+
export function touchedFeatures(diffPaths, features) {
|
|
118
|
+
const changed = diffPaths.filter((p) => !isNoiseDiffPath(p));
|
|
119
|
+
const out = [];
|
|
120
|
+
for (const f of features) {
|
|
121
|
+
if ((f.paths ?? []).some((prefix) => changed.some((path) => ownsPath(prefix, path)))) {
|
|
122
|
+
out.push(f.name || f.key);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return out;
|
|
126
|
+
}
|
|
127
|
+
/** The deterministic layer under the per-feature evidence rule: a PR that
|
|
128
|
+
* touches more than one feature needs at least one proof per feature. The
|
|
129
|
+
* semantic judgment (which proof covers which feature) stays with the
|
|
130
|
+
* reviewer; this only counts — conservatively, by comment. */
|
|
131
|
+
export function assessEvidenceCoverage(touched, comments) {
|
|
132
|
+
const evidenceItems = comments.filter((c) => {
|
|
133
|
+
const body = c.body ?? "";
|
|
134
|
+
// Anchored: a structured caption line ("- Verified: …") or the 🧪 bundle
|
|
135
|
+
// header at line start. A bare substring match would count prose like
|
|
136
|
+
// "not yet verified:" or quoted captions and silently suppress the warning.
|
|
137
|
+
return /^\s*🧪.*Test evidence/m.test(body) || /^\s*-?\s*\*{0,2}verified:/im.test(body);
|
|
138
|
+
}).length;
|
|
139
|
+
if (touched.length <= 1 || evidenceItems >= touched.length) {
|
|
140
|
+
return { evidenceItems, warning: null };
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
evidenceItems,
|
|
144
|
+
warning: `⚠️ ${touched.length} features touched, ${evidenceItems} evidence item(s) — ` +
|
|
145
|
+
`need ≥1 proof per feature on a multi-feature PR; treat each unproven feature ` +
|
|
146
|
+
`as an unresolved thread (request_changes) unless every touched feature maps ` +
|
|
147
|
+
`to a proof.`,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/** The "### Deviations from brief" section of a PR body — where the worker
|
|
151
|
+
* logs off-brief pivots (field-guide pattern: deviations must be visible to
|
|
152
|
+
* review, not buried in commit messages). Empty string when absent. */
|
|
153
|
+
export function extractDeviations(prBody) {
|
|
154
|
+
const m = /^###\s*Deviations from brief\s*$/im.exec(prBody);
|
|
155
|
+
if (!m)
|
|
156
|
+
return "";
|
|
157
|
+
const rest = prBody.slice(m.index + m[0].length);
|
|
158
|
+
const end = rest.search(/^#{1,3}\s/m);
|
|
159
|
+
return (end >= 0 ? rest.slice(0, end) : rest).trim();
|
|
160
|
+
}
|
|
94
161
|
/** Render the full review packet as markdown. */
|
|
95
162
|
export function buildReviewPacket(input) {
|
|
96
163
|
const { pr, threads, diff, issue } = input;
|
|
@@ -122,6 +189,12 @@ export function buildReviewPacket(input) {
|
|
|
122
189
|
b.push("\n## PR description");
|
|
123
190
|
b.push(prBody.length > PACKET_BRIEF_CAP ? prBody.slice(0, PACKET_BRIEF_CAP) + "\n… (truncated)" : prBody);
|
|
124
191
|
}
|
|
192
|
+
const deviations = extractDeviations(pr.body ?? "");
|
|
193
|
+
if (deviations) {
|
|
194
|
+
b.push("\n## Deviations from brief");
|
|
195
|
+
b.push(deviations);
|
|
196
|
+
b.push("_Verify each deviation: conservative? justified? does the spec still hold?_");
|
|
197
|
+
}
|
|
125
198
|
b.push("\n## CI");
|
|
126
199
|
const checks = pr.statusCheckRollup ?? [];
|
|
127
200
|
if (checks.length === 0) {
|
|
@@ -156,7 +229,41 @@ export function buildReviewPacket(input) {
|
|
|
156
229
|
}
|
|
157
230
|
const evidence = extractEvidenceLines(pr.comments ?? []);
|
|
158
231
|
b.push("\n## Evidence / health");
|
|
232
|
+
if (input.features?.length) {
|
|
233
|
+
const touched = touchedFeatures(splitUnifiedDiff(diff).map((s) => s.path), input.features);
|
|
234
|
+
if (touched.length) {
|
|
235
|
+
b.push(`Features touched (${touched.length}): ${touched.join(", ")}`);
|
|
236
|
+
const cov = assessEvidenceCoverage(touched, pr.comments ?? []);
|
|
237
|
+
if (cov.warning)
|
|
238
|
+
b.push(cov.warning);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
159
241
|
b.push(evidence.length ? evidence.join("\n") : "no evidence caption posted");
|
|
242
|
+
// Features (relevant slice) — kills the reviewer's mandatory full-map pull:
|
|
243
|
+
// touched features in detail, same-layer neighbors by name, full map only
|
|
244
|
+
// on demand (issue #83).
|
|
245
|
+
if (input.features?.length) {
|
|
246
|
+
const diffPaths = splitUnifiedDiff(diff).map((s) => s.path);
|
|
247
|
+
const touchedNames = new Set(touchedFeatures(diffPaths, input.features));
|
|
248
|
+
if (touchedNames.size) {
|
|
249
|
+
const touched = input.features.filter((f) => touchedNames.has(f.name || f.key)).slice(0, 12);
|
|
250
|
+
b.push("\n## Features (relevant slice)");
|
|
251
|
+
for (const f of touched) {
|
|
252
|
+
const layer = f.layer ? ` [${f.layer}]` : "";
|
|
253
|
+
const tp = f.testPriority ? ` · test_priority: ${f.testPriority}` : "";
|
|
254
|
+
const desc = f.description ? ` — ${f.description}` : "";
|
|
255
|
+
b.push(`- ${f.name || f.key}${layer}${tp}${desc}`);
|
|
256
|
+
}
|
|
257
|
+
const layers = new Set(touched.map((f) => f.layer).filter(Boolean));
|
|
258
|
+
const neighbors = input.features
|
|
259
|
+
.filter((f) => !touchedNames.has(f.name || f.key) && f.layer && layers.has(f.layer))
|
|
260
|
+
.map((f) => f.name || f.key)
|
|
261
|
+
.slice(0, 15);
|
|
262
|
+
if (neighbors.length)
|
|
263
|
+
b.push(`Same-layer neighbors: ${neighbors.join(", ")}`);
|
|
264
|
+
b.push("_This slice replaces the full map for most reviews — run `renaiss-shipflow features --json` only if you need beyond it._");
|
|
265
|
+
}
|
|
266
|
+
}
|
|
160
267
|
const filtered = filterDiffForPacket(diff);
|
|
161
268
|
b.push(`\n## Diff (${filtered.shown} file(s) shown` +
|
|
162
269
|
(filtered.omittedNoise ? `, ${filtered.omittedNoise} noise file(s) omitted` : "") +
|
package/dist/packet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"packet.js","sourceRoot":"","sources":["../src/packet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
export declare const REVIEW_CONTRACT: {
|
|
2
|
+
readonly $comment: "Canonical review contract (epic #96, Option B): the single source of truth for constants BOTH reviewers share — the Go server's pr_review runner and the TS CLI's loop review packet. Mirrors: apps/renaissshipflow-server/internal/reviewcontract/review-contract.json (go:embed, byte-identical) and apps/renaissshipflow-cli/src/review-contract-data.ts (generated). Regenerate mirrors with `node scripts/sync-review-contract.mjs`; parity tests on both sides fail on drift. Noise lists are the UNION of the two pre-contract lists (never narrow), split into scopes: the lists under `noise` are shared review-filter noise; `noise.featuremapOnly` is feature-map-only (tracked, reviewable source the loop packet must keep showing). Verdict vocabularies are carried per side AS-IS — reconciliation is a later slice. `ownsTestVectors` pins the directory-boundary `owns` matcher, which stays implemented per language.";
|
|
3
|
+
readonly version: 1;
|
|
4
|
+
readonly budgets: {
|
|
5
|
+
readonly $comment: "perFileDiffCap/packetTotalCap bound each reviewer's diff; briefCap bounds the linked-issue spec + PR body (acceptance criteria sit at the BOTTOM of issue bodies — a tight cap silently drops the checklist).";
|
|
6
|
+
readonly perFileDiffCap: 6000;
|
|
7
|
+
readonly packetTotalCap: 60000;
|
|
8
|
+
readonly briefCap: 8000;
|
|
9
|
+
};
|
|
10
|
+
readonly noise: {
|
|
11
|
+
readonly $comment: "Paths excluded from review diffs / the feature map, in two scopes. The lists directly under `noise` are SHARED review-filter noise: excluded from both reviewers' diffs and from the feature map. `featuremapOnly` entries are excluded from the feature map only — and, transitively, from the Go server's review filter, which shares featuremap.IsNoisePath (its pre-contract behavior) — but they are tracked, reviewable source the loop packet MUST keep showing (pre-contract it was the only reviewer that saw them). Matching: substrings contains-match anywhere in the path (TS case-insensitively, Go case-sensitively — each side keeps its pre-contract semantics). suffixes: trailing patterns filepath.Ext can't express. basenames: exact filenames (matched against the path's base name, never as a suffix). extensions: final-dot file extensions.";
|
|
12
|
+
readonly substrings: readonly ["node_modules/", ".git/", "vendor/", "dist/", "build/", ".next/", "__pycache__/", ".mypy_cache/", ".tox/", ".venv/", ".cache/", "coverage/", ".nyc_output/", ".turbo/", "__generated__/", "__snapshots__/", "__mocks__/", "storybook-static/", ".pytest_cache/", ".gradle/", "DerivedData/", "Pods/", "target/", ".rush/", "out/", ".swc/", ".expo/"];
|
|
13
|
+
readonly suffixes: readonly [".pb.go", "_pb2.py", "_pb2_grpc.py", "_gen.go", "_generated.go", ".gen.go", ".generated.ts", ".generated.tsx", ".gen.ts", ".min.js", ".min.css", ".tsbuildinfo"];
|
|
14
|
+
readonly basenames: readonly ["package-lock.json", "bun.lockb"];
|
|
15
|
+
readonly extensions: readonly [".map", ".lock", ".sum", ".png", ".jpg", ".jpeg", ".gif", ".ico", ".svg", ".woff", ".woff2", ".ttf", ".eot", ".snap"];
|
|
16
|
+
readonly featuremapOnly: {
|
|
17
|
+
readonly $comment: ".claude/ is tracked, reviewable source in this repo (63 files incl. plugin-shipped .claude/commands/shipflow-*.md and .claude/skills TS source) — noise for the feature map (and the server reviewer, per its pre-contract IsNoisePath), never for the loop packet.";
|
|
18
|
+
readonly substrings: readonly [".claude/"];
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
readonly verdicts: {
|
|
22
|
+
readonly $comment: "Carried AS-IS per side; unifying the vocabulary is a later slice of #96. Do not gate on the server enum — the server review is advisory.";
|
|
23
|
+
readonly loop: readonly ["approve", "comment", "request_changes", "reject"];
|
|
24
|
+
readonly server: readonly ["looks_good", "comment", "request_changes"];
|
|
25
|
+
};
|
|
26
|
+
readonly severities: readonly ["critical", "high", "medium", "low"];
|
|
27
|
+
readonly defaultSeverity: "medium";
|
|
28
|
+
readonly ownsTestVectors: readonly [{
|
|
29
|
+
readonly $comment: "Directory-boundary match: a prefix owns itself and everything under it, never a sibling that merely shares the string.";
|
|
30
|
+
readonly prefix: "src/app/admin";
|
|
31
|
+
readonly path: "src/app/admin";
|
|
32
|
+
readonly owns: true;
|
|
33
|
+
}, {
|
|
34
|
+
readonly prefix: "src/app/admin";
|
|
35
|
+
readonly path: "src/app/admin/page.tsx";
|
|
36
|
+
readonly owns: true;
|
|
37
|
+
}, {
|
|
38
|
+
readonly prefix: "src/app/admin";
|
|
39
|
+
readonly path: "src/app/admin/nested/deep/file.ts";
|
|
40
|
+
readonly owns: true;
|
|
41
|
+
}, {
|
|
42
|
+
readonly prefix: "src/app/admin";
|
|
43
|
+
readonly path: "src/app/admin-shop/page.tsx";
|
|
44
|
+
readonly owns: false;
|
|
45
|
+
}, {
|
|
46
|
+
readonly prefix: "src/app/admin";
|
|
47
|
+
readonly path: "src/app/adminx";
|
|
48
|
+
readonly owns: false;
|
|
49
|
+
}, {
|
|
50
|
+
readonly prefix: "./src/app/admin";
|
|
51
|
+
readonly path: "src/app/admin/page.tsx";
|
|
52
|
+
readonly owns: true;
|
|
53
|
+
}, {
|
|
54
|
+
readonly prefix: "src/app/admin/";
|
|
55
|
+
readonly path: "src/app/admin/page.tsx";
|
|
56
|
+
readonly owns: true;
|
|
57
|
+
}, {
|
|
58
|
+
readonly prefix: "src/app/admin/";
|
|
59
|
+
readonly path: "src/app/admin/";
|
|
60
|
+
readonly owns: true;
|
|
61
|
+
}, {
|
|
62
|
+
readonly prefix: "src/app/admin/";
|
|
63
|
+
readonly path: "src/app/admin";
|
|
64
|
+
readonly owns: false;
|
|
65
|
+
}, {
|
|
66
|
+
readonly prefix: "";
|
|
67
|
+
readonly path: "src/anything.ts";
|
|
68
|
+
readonly owns: false;
|
|
69
|
+
}, {
|
|
70
|
+
readonly prefix: "./";
|
|
71
|
+
readonly path: "src/anything.ts";
|
|
72
|
+
readonly owns: false;
|
|
73
|
+
}, {
|
|
74
|
+
readonly prefix: "apps";
|
|
75
|
+
readonly path: "apps/renaissshipflow-cli/src/index.ts";
|
|
76
|
+
readonly owns: true;
|
|
77
|
+
}, {
|
|
78
|
+
readonly prefix: "src/app/admin";
|
|
79
|
+
readonly path: "src";
|
|
80
|
+
readonly owns: false;
|
|
81
|
+
}, {
|
|
82
|
+
readonly prefix: "app";
|
|
83
|
+
readonly path: "src/app/x.ts";
|
|
84
|
+
readonly owns: false;
|
|
85
|
+
}, {
|
|
86
|
+
readonly prefix: "SRC/App";
|
|
87
|
+
readonly path: "src/app/x.ts";
|
|
88
|
+
readonly owns: false;
|
|
89
|
+
}];
|
|
90
|
+
};
|
|
91
|
+
//# sourceMappingURL=review-contract-data.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-contract-data.d.ts","sourceRoot":"","sources":["../src/review-contract-data.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGlB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// GENERATED FILE — DO NOT EDIT.
|
|
2
|
+
// Mirror of contracts/review-contract.json (the canonical review contract,
|
|
3
|
+
// epic #96). Regenerate with: node scripts/sync-review-contract.mjs
|
|
4
|
+
// The contract-parity test fails if this file drifts from the canonical one.
|
|
5
|
+
export const REVIEW_CONTRACT = {
|
|
6
|
+
"$comment": "Canonical review contract (epic #96, Option B): the single source of truth for constants BOTH reviewers share — the Go server's pr_review runner and the TS CLI's loop review packet. Mirrors: apps/renaissshipflow-server/internal/reviewcontract/review-contract.json (go:embed, byte-identical) and apps/renaissshipflow-cli/src/review-contract-data.ts (generated). Regenerate mirrors with `node scripts/sync-review-contract.mjs`; parity tests on both sides fail on drift. Noise lists are the UNION of the two pre-contract lists (never narrow), split into scopes: the lists under `noise` are shared review-filter noise; `noise.featuremapOnly` is feature-map-only (tracked, reviewable source the loop packet must keep showing). Verdict vocabularies are carried per side AS-IS — reconciliation is a later slice. `ownsTestVectors` pins the directory-boundary `owns` matcher, which stays implemented per language.",
|
|
7
|
+
"version": 1,
|
|
8
|
+
"budgets": {
|
|
9
|
+
"$comment": "perFileDiffCap/packetTotalCap bound each reviewer's diff; briefCap bounds the linked-issue spec + PR body (acceptance criteria sit at the BOTTOM of issue bodies — a tight cap silently drops the checklist).",
|
|
10
|
+
"perFileDiffCap": 6000,
|
|
11
|
+
"packetTotalCap": 60000,
|
|
12
|
+
"briefCap": 8000
|
|
13
|
+
},
|
|
14
|
+
"noise": {
|
|
15
|
+
"$comment": "Paths excluded from review diffs / the feature map, in two scopes. The lists directly under `noise` are SHARED review-filter noise: excluded from both reviewers' diffs and from the feature map. `featuremapOnly` entries are excluded from the feature map only — and, transitively, from the Go server's review filter, which shares featuremap.IsNoisePath (its pre-contract behavior) — but they are tracked, reviewable source the loop packet MUST keep showing (pre-contract it was the only reviewer that saw them). Matching: substrings contains-match anywhere in the path (TS case-insensitively, Go case-sensitively — each side keeps its pre-contract semantics). suffixes: trailing patterns filepath.Ext can't express. basenames: exact filenames (matched against the path's base name, never as a suffix). extensions: final-dot file extensions.",
|
|
16
|
+
"substrings": [
|
|
17
|
+
"node_modules/",
|
|
18
|
+
".git/",
|
|
19
|
+
"vendor/",
|
|
20
|
+
"dist/",
|
|
21
|
+
"build/",
|
|
22
|
+
".next/",
|
|
23
|
+
"__pycache__/",
|
|
24
|
+
".mypy_cache/",
|
|
25
|
+
".tox/",
|
|
26
|
+
".venv/",
|
|
27
|
+
".cache/",
|
|
28
|
+
"coverage/",
|
|
29
|
+
".nyc_output/",
|
|
30
|
+
".turbo/",
|
|
31
|
+
"__generated__/",
|
|
32
|
+
"__snapshots__/",
|
|
33
|
+
"__mocks__/",
|
|
34
|
+
"storybook-static/",
|
|
35
|
+
".pytest_cache/",
|
|
36
|
+
".gradle/",
|
|
37
|
+
"DerivedData/",
|
|
38
|
+
"Pods/",
|
|
39
|
+
"target/",
|
|
40
|
+
".rush/",
|
|
41
|
+
"out/",
|
|
42
|
+
".swc/",
|
|
43
|
+
".expo/"
|
|
44
|
+
],
|
|
45
|
+
"suffixes": [
|
|
46
|
+
".pb.go",
|
|
47
|
+
"_pb2.py",
|
|
48
|
+
"_pb2_grpc.py",
|
|
49
|
+
"_gen.go",
|
|
50
|
+
"_generated.go",
|
|
51
|
+
".gen.go",
|
|
52
|
+
".generated.ts",
|
|
53
|
+
".generated.tsx",
|
|
54
|
+
".gen.ts",
|
|
55
|
+
".min.js",
|
|
56
|
+
".min.css",
|
|
57
|
+
".tsbuildinfo"
|
|
58
|
+
],
|
|
59
|
+
"basenames": [
|
|
60
|
+
"package-lock.json",
|
|
61
|
+
"bun.lockb"
|
|
62
|
+
],
|
|
63
|
+
"extensions": [
|
|
64
|
+
".map",
|
|
65
|
+
".lock",
|
|
66
|
+
".sum",
|
|
67
|
+
".png",
|
|
68
|
+
".jpg",
|
|
69
|
+
".jpeg",
|
|
70
|
+
".gif",
|
|
71
|
+
".ico",
|
|
72
|
+
".svg",
|
|
73
|
+
".woff",
|
|
74
|
+
".woff2",
|
|
75
|
+
".ttf",
|
|
76
|
+
".eot",
|
|
77
|
+
".snap"
|
|
78
|
+
],
|
|
79
|
+
"featuremapOnly": {
|
|
80
|
+
"$comment": ".claude/ is tracked, reviewable source in this repo (63 files incl. plugin-shipped .claude/commands/shipflow-*.md and .claude/skills TS source) — noise for the feature map (and the server reviewer, per its pre-contract IsNoisePath), never for the loop packet.",
|
|
81
|
+
"substrings": [
|
|
82
|
+
".claude/"
|
|
83
|
+
]
|
|
84
|
+
}
|
|
85
|
+
},
|
|
86
|
+
"verdicts": {
|
|
87
|
+
"$comment": "Carried AS-IS per side; unifying the vocabulary is a later slice of #96. Do not gate on the server enum — the server review is advisory.",
|
|
88
|
+
"loop": ["approve", "comment", "request_changes", "reject"],
|
|
89
|
+
"server": ["looks_good", "comment", "request_changes"]
|
|
90
|
+
},
|
|
91
|
+
"severities": ["critical", "high", "medium", "low"],
|
|
92
|
+
"defaultSeverity": "medium",
|
|
93
|
+
"ownsTestVectors": [
|
|
94
|
+
{ "$comment": "Directory-boundary match: a prefix owns itself and everything under it, never a sibling that merely shares the string.", "prefix": "src/app/admin", "path": "src/app/admin", "owns": true },
|
|
95
|
+
{ "prefix": "src/app/admin", "path": "src/app/admin/page.tsx", "owns": true },
|
|
96
|
+
{ "prefix": "src/app/admin", "path": "src/app/admin/nested/deep/file.ts", "owns": true },
|
|
97
|
+
{ "prefix": "src/app/admin", "path": "src/app/admin-shop/page.tsx", "owns": false },
|
|
98
|
+
{ "prefix": "src/app/admin", "path": "src/app/adminx", "owns": false },
|
|
99
|
+
{ "prefix": "./src/app/admin", "path": "src/app/admin/page.tsx", "owns": true },
|
|
100
|
+
{ "prefix": "src/app/admin/", "path": "src/app/admin/page.tsx", "owns": true },
|
|
101
|
+
{ "prefix": "src/app/admin/", "path": "src/app/admin/", "owns": true },
|
|
102
|
+
{ "prefix": "src/app/admin/", "path": "src/app/admin", "owns": false },
|
|
103
|
+
{ "prefix": "", "path": "src/anything.ts", "owns": false },
|
|
104
|
+
{ "prefix": "./", "path": "src/anything.ts", "owns": false },
|
|
105
|
+
{ "prefix": "apps", "path": "apps/renaissshipflow-cli/src/index.ts", "owns": true },
|
|
106
|
+
{ "prefix": "src/app/admin", "path": "src", "owns": false },
|
|
107
|
+
{ "prefix": "app", "path": "src/app/x.ts", "owns": false },
|
|
108
|
+
{ "prefix": "SRC/App", "path": "src/app/x.ts", "owns": false }
|
|
109
|
+
]
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=review-contract-data.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-contract-data.js","sourceRoot":"","sources":["../src/review-contract-data.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/** The loop reviewer's verdict vocabulary — from the canonical contract
|
|
2
|
+
* (contracts/review-contract.json): `approve`/`comment`/`request_changes`/
|
|
3
|
+
* `reject`. The server's advisory vocabulary lives beside it in the contract;
|
|
4
|
+
* reconciling the two is a later slice of epic #96. */
|
|
5
|
+
export declare const LOOP_VERDICTS: readonly ["approve", "comment", "request_changes", "reject"];
|
|
6
|
+
export type Verdict = (typeof LOOP_VERDICTS)[number];
|
|
7
|
+
/** Severity scale (highest first) + the default applied to blank severities —
|
|
8
|
+
* from the canonical contract, matching the server's normalisation. */
|
|
9
|
+
export declare const SEVERITIES: readonly ["critical", "high", "medium", "low"];
|
|
10
|
+
export declare const DEFAULT_SEVERITY: "medium";
|
|
11
|
+
/** Severity badge — byte-identical to the server's severityBadge(). */
|
|
12
|
+
export declare function severityBadge(severity: string): string;
|
|
13
|
+
/** CodeRabbit-style fix-size tag after the badge — mirrors the server. */
|
|
14
|
+
export declare function effortTag(effort?: string): string;
|
|
15
|
+
/** Verdict header, shared by the inline review body and any fallback comment. */
|
|
16
|
+
export declare function verdictHeader(verdict: Verdict): string;
|
|
17
|
+
export interface ReviewFinding {
|
|
18
|
+
path: string;
|
|
19
|
+
line: number;
|
|
20
|
+
severity: string;
|
|
21
|
+
issue: string;
|
|
22
|
+
why?: string;
|
|
23
|
+
fix?: string;
|
|
24
|
+
effort?: string;
|
|
25
|
+
suggestion?: string;
|
|
26
|
+
code?: string;
|
|
27
|
+
}
|
|
28
|
+
/** One finding's comment body — mirrors renderInlineFinding(): badge + effort +
|
|
29
|
+
* issue, why, fix, and a committable ```suggestion block when present. */
|
|
30
|
+
export declare function renderFindingBody(f: ReviewFinding): string;
|
|
31
|
+
/** Repo-relative path in one canonical shape: forward slashes, no leading
|
|
32
|
+
* "./". Applied to both diff keys and finding paths so `./src/x` / `src\\x`
|
|
33
|
+
* still anchor. NOT a filesystem realpath — diff paths aren't fs paths. */
|
|
34
|
+
export declare function normPath(p: string): string;
|
|
35
|
+
/** Map of path → set of new-file line numbers that GitHub will accept a
|
|
36
|
+
* RIGHT-side inline comment on (context + added lines). Mirrors the server's
|
|
37
|
+
* annotatePatch line numbering so a bad anchor can't 422 the whole review. */
|
|
38
|
+
export declare function diffAnchors(diff: string): Map<string, Set<number>>;
|
|
39
|
+
/** Partition findings into ones that anchor to a real diff line (postable
|
|
40
|
+
* inline) and ones that must fold into the summary body (bad line / file). */
|
|
41
|
+
export declare function splitAnchorable(findings: ReviewFinding[], anchors: Map<string, Set<number>>): {
|
|
42
|
+
inline: ReviewFinding[];
|
|
43
|
+
body: ReviewFinding[];
|
|
44
|
+
};
|
|
45
|
+
export interface ReviewComment {
|
|
46
|
+
path: string;
|
|
47
|
+
line: number;
|
|
48
|
+
side: "RIGHT";
|
|
49
|
+
body: string;
|
|
50
|
+
}
|
|
51
|
+
export interface ReviewPayload {
|
|
52
|
+
event: "COMMENT";
|
|
53
|
+
body: string;
|
|
54
|
+
comments: ReviewComment[];
|
|
55
|
+
}
|
|
56
|
+
/** Build the GitHub "create review" payload: a COMMENT-event review (ShipFlow
|
|
57
|
+
* reviews are advisory — approval authority stays with the label gate, so the
|
|
58
|
+
* event is never APPROVE/REQUEST_CHANGES; the verdict lives in the header),
|
|
59
|
+
* with on-diff findings as inline comments and the rest folded into the body. */
|
|
60
|
+
export declare function buildReviewPayload(opts: {
|
|
61
|
+
summary: string;
|
|
62
|
+
verdict: Verdict;
|
|
63
|
+
findings: ReviewFinding[];
|
|
64
|
+
anchors: Map<string, Set<number>>;
|
|
65
|
+
}): ReviewPayload;
|
|
66
|
+
//# sourceMappingURL=review-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-contract.d.ts","sourceRoot":"","sources":["../src/review-contract.ts"],"names":[],"mappings":"AAOA;;;wDAGwD;AACxD,eAAO,MAAM,aAAa,8DAAgC,CAAC;AAC3D,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;wEACwE;AACxE,eAAO,MAAM,UAAU,gDAA6B,CAAC;AACrD,eAAO,MAAM,gBAAgB,UAAkC,CAAC;AAEhE,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOtD;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAOtD;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID;2EAC2E;AAC3E,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAS1D;AAED;;4EAE4E;AAC5E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;AAKD;;+EAE+E;AAC/E,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAkBlE;AAED;+EAC+E;AAC/E,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,aAAa,EAAE,EACzB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAChC;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,IAAI,EAAE,aAAa,EAAE,CAAA;CAAE,CAQpD;AAED,MAAM,WAAW,aAAa;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;CAAE;AAC3F,MAAM,WAAW,aAAa;IAAG,KAAK,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,aAAa,EAAE,CAAC;CAAE;AAE7F;;;kFAGkF;AAClF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CACnC,GAAG,aAAa,CAqBhB"}
|