Skip to content

feat(pr): replace per-round comments with one living review status - #101

Merged
satyaborg merged 4 commits into
feat/sha-bound-acceptancefrom
feat/living-review-status
Aug 17, 2026
Merged

feat(pr): replace per-round comments with one living review status#101
satyaborg merged 4 commits into
feat/sha-bound-acceptancefrom
feat/living-review-status

Conversation

@satyaborg

Copy link
Copy Markdown
Owner

Why

Each review pass appended a new comment containing a full dump of the review file, and the end of the run appended a final report on top. A four-pass run buried the reader under five walls of text with no summary, so a human opening the PR had to read everything to find the verdict.

What

  • The PR carries exactly one status comment, found by a marker and edited in place.
  • It leads with the current state, a two-row quality gate table, and open findings.
  • Review history, gate matrices, the full review, and run details move into collapsed sections.

How

<!-- devloop-review-status --> identifies the comment. find_status_comment extracts the REST comment id from the comment URL and upsert_status_comment PATCHes it through gh api, falling back to creating one when none exists. --edit-last was deliberately avoided because it targets the author's last comment, which may be a human's.

States follow the run: Review pending, Changes required, Review unavailable, Final verification, Ready for human review. The last two come from the readiness gate in the parent PR.

Pass history is appended to .devloop/status/<slug>-history.tsv and rendered as a table inside a collapsed block, so earlier rows are never rewritten. .devloop/status/ is registered as a runtime artifact so it is never committed.

The full review stays available in a collapsed Latest review detail block, which is also what latest_pr_review_comment reads when a run resumes and local review files are gone.

Proof

  • bash scripts/devloop_test.sh: passes, except the same pre-existing nightshift digest sandbox failure present on main.
  • New coverage for all ten added functions: gate results and evidence counts, every status label, history append and render, body rendering for pending / accepted / empty runs, comment id extraction, create-vs-edit dispatch, and gh failure paths.

Scope

  • Included: the living status comment, pass history, README PR row.
  • Not included: stacked PRs, which follow in the next PR.

Stack

  • Position: 2 of 3
  • Base: feat/sha-bound-acceptance
  • Depends on: the readiness gate from PR 1
  • Followed by: feat/stacked-pr-manifests

Every pass previously appended a full review dump, and the run appended a
final report on top, so a four-pass run buried the reader under five walls of
text. The PR now carries exactly one status comment, found by a marker and
edited in place.

The comment leads with the current state, a two-row quality gate table, and
open findings. Review history, gate matrices, the full review, and run details
move into collapsed sections, so a human sees the verdict first and opens only
what they need.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Aug 17, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
devloop 4ef5ad9 Commit Preview URL

Branch Preview URL
Aug 17 2026, 07:47 AM

The fake gh now stores the marked comment and answers gh api PATCH, so the
loop tests prove a two-pass run creates exactly one comment, edits it on the
later pass, and keeps one history row per pass.
@satyaborg
satyaborg merged commit 5e63a79 into main Aug 17, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant