01a04284 - Publish rejected findings as a review, not a bare comment - #41
01a04284 - Publish rejected findings as a review, not a bare comment#41davidleomay wants to merge 8 commits into
Conversation
|
EN: DE: DetailsWhat an author actually received from the path added in #32, unattended: The mechanism worked and the delivery defeated it. Internal stage names, a 40-character SHA, two findings in one paragraph, and lane bookkeeping that means nothing outside the runner. Change. A It also corrects a measurement. A runner asks whether a review happened by looking for a review artefact; issue comments are not one. The first unattended run therefore finished Six passes, eight findings, every one a defect in this change. Three were defects I had fixed in a sibling repository a day earlier and reintroduced by modelling the new executor on Four of the eight were documentation claiming what the code does not do — Verification. 452 passed, 1 skipped. Every behaviour reverted individually and confirmed red: the activity type, the short SHA, executability, Three mutations started green and are why the run was worth doing. Two failures in Engines: Codex CLI for both dimensions under a personal ChatGPT Plus plan with model training disabled. One quality pass failed with a capacity error and was re-run rather than counted; a lane that errored is not a lane that approved. No open pull-request comments, reviews, or review threads — verified via paginated queries at this head (0/0/0). Mergeable, no conflicts ( |
|
EN: DE: |
EN:
A rejected gate published its findings as a plain issue comment whose body was whatever the reviewer typed, so the first real one reached an author as two findings run together in a paragraph, wrapped in
STATUS=completeand a session id. They now post as a pull-request review of typeCOMMENT, which is where an author looks and which a runner can count as a review artefact. The contract also says what the evidence should look like, since specifying the mechanism and leaving the presentation unsaid is what produced that comment.COMMENTand neverREQUEST_CHANGES: a bot that can hold a merge closed through branch protection is a different tool from one that reports.DE:
Ein abgelehntes Gate veröffentlichte seine Befunde als gewöhnlichen Kommentar, dessen Text war, was der Reviewer tippte — der erste echte erreichte den Autor als zwei ineinanderlaufende Befunde, eingepackt in
STATUS=completeund eine Session-ID. Sie erscheinen jetzt als Pull-Request-Review vom TypCOMMENT, dort schaut ein Autor hin und ein Runner kann es als Review-Artefakt zählen. Der Vertrag sagt jetzt auch, wie die Evidenz auszusehen hat, denn genau das Offenlassen der Darstellung hat jenen Kommentar erzeugt.COMMENTund nieREQUEST_CHANGES: ein Bot, der einen Merge über Branch Protection zuhalten kann, ist ein anderes Werkzeug als einer, der berichtet.Details
What the author actually received, from the first unattended run of the path added in #32:
The mechanism worked and the delivery defeated it. Internal stage names, a 40-character SHA, two findings in one paragraph, and lane bookkeeping that means nothing outside the runner.
Change. A new
review.postactivity with an executor that submitsPOST /repos/{o}/{n}/pulls/{n}/reviewswithevent=COMMENT, de-duplicated by the same activity marker the comment path uses, so a retry finds its own review rather than posting a second._queue_gate_findingsemits it with a header a human can read —**Codex quality — rejected** at \3bb0050`— and the contract gains a paragraph on the evidence itself: one finding per line,file:linefirst, noSTATUS=` or session ids.It also corrects a measurement. A runner asks whether a review happened by looking for a review artefact; issue comments are not one. The first unattended run therefore finished
successwithwork_performed: no— the two fields disagreeing about the same job. Findings posted as a review make that field honest without weakening the check.Verification. 442 passed, 1 skipped. Five behaviours reverted individually and each confirmed red: the activity type back to
comment.post, the short SHA back to full,review.postremoved from the executable types,event=COMMENTswapped forREQUEST_CHANGES, and the evidence paragraph deleted from the contract.Three of those five started green and are the reason the run was worth doing. Asserting
head[:7] in bodypasses for the full SHA too, since the long form contains the short one — it now also asserts the full SHA is absent. Nothing verifiedreview.postwas executable, though omitting it fromEXECUTABLE_ACTIVITY_TYPESalone would mean findings are queued and never sent, silently. And the executor had no test at all, so theevent=COMMENTmutation reported red only because no test matched — which reads identically to a real failure.Two failures in
tests/test_dashboard_control.pyare unrelated and reproduce on a cleandevelopcarrying none of this change; they depend on whether an agent daemon is installed on the machine running the suite.