1 Commits

Author SHA1 Message Date
temeddix c8f325e048 Review file
Check / deno (pull_request) Successful in 32s
2026-09-14 01:53:24 +09:00
2 changed files with 18 additions and 20 deletions
+10 -11
View File
@@ -26,17 +26,16 @@ at the end of this prompt, not only the diff; a violation is at least Important
even when the diff did not cause it. Write the complete review, and nothing
else, to the file `${REVIEW_PATH}`: it is posted verbatim as a pull request
review from the bot account, and your final response is not posted at all. The
file's first line must be exactly the verdict and nothing else: `Approved` when
the template's answer is yes, `Changes requested` otherwise. The mark in front
of it is added when posting, so write the words alone; any other first line is
posted as a plain comment, which wastes the run. Minor issues alone never block,
and neither does a finding the author has answered in the comment history below
as intended or a false alarm, once the code or docs make that clear. When the
verdict is `Changes requested`, the second line names what must change in one
line, addressed to the author; the author's own agent picks the fixes up, so
never ask `@bot` to make them. For UI changes, check that the result is aligned,
clean, and pixel-perfect, and that included screenshots prove the intended
result was achieved.
file's first line must be exactly the template's verdict and nothing else:
`Yes`, `No`, or `With fixes`. `Yes` approves and the other two request changes;
any other first line is posted as a plain comment, which wastes the run. Minor
issues alone never block, and neither does a finding the author has answered in
the comment history below as intended or a false alarm, once the code or docs
make that clear. When the verdict is not `Yes`, the second line names what must
change in one line, addressed to the author; the author's own agent picks the
fixes up, so never ask `@bot` to make them. For UI changes, check that the
result is aligned, clean, and pixel-perfect, and that included screenshots prove
the intended result was achieved.
The review must read at a glance: everything outside `<details>` blocks totals
under 512 bytes. Only core information stays visible: the verdict, the summary
+8 -9
View File
@@ -62,12 +62,12 @@ async function postComment(body: string): Promise<void> {
// A pull request event is a review request, so the review is posted instead
// of the response. It comes through a file, because a final chat message picks
// up narration while a file's first line is written on purpose. That line is
// the verdict, matched whole; anything unexpected only comments, never
// approves. The mark in front is added here, so it is never part of the match.
// the verdict; anything unexpected only comments, never approves.
const REVIEW_PATH = `${await Deno.makeTempDir()}/review.md`;
const VERDICTS: Record<string, [event: string, mark: string]> = {
Approved: ["APPROVED", "✅"],
"Changes requested": ["REQUEST_CHANGES", "🛑"],
const VERDICTS: Record<string, string> = {
Yes: "APPROVED",
No: "REQUEST_CHANGES",
"With fixes": "REQUEST_CHANGES",
};
async function postResult(body: string): Promise<void> {
@@ -75,11 +75,10 @@ async function postResult(body: string): Promise<void> {
const review = await Deno.readTextFile(REVIEW_PATH).catch(() => {
throw new Error(`no review was written to ${REVIEW_PATH}`);
});
const [verdict, ...rest] = review.split("\n");
const [event, mark] = VERDICTS[verdict.trim()] ?? ["COMMENT", "💬"];
const [verdict] = review.split("\n", 1);
await gitea(REVIEWER_TOKEN, `repos/${REPO}/pulls/${INDEX}/reviews`, {
body: stripAnsi([`${mark} ${verdict.trim()}`, ...rest].join("\n")),
event,
body: stripAnsi(review),
event: VERDICTS[verdict.trim()] ?? "COMMENT",
});
}