Skip to content

docs(review): record Greptile Review as a required context - #13

Merged
qmarcelle merged 2 commits into
mainfrom
meta-322/record-required-gate
Aug 12, 2026
Merged

docs(review): record Greptile Review as a required context#13
qmarcelle merged 2 commits into
mainfrom
meta-322/record-required-gate

Conversation

@qmarcelle

@qmarcelle qmarcelle commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Follow-up to #10. Branch protection changed on 2026-08-12 after ratification, so the committed merge policy no longer described the live setting.

docs/review/merge-policy.md §2 says that when the API and the document disagree, the API is right and the document is the defect, to be corrected in the PR that notices. This is that correction — and it is also the first ordinary PR to pass through the new gate.

Recorded

Branch protection, before → after

Setting Before After
Required contexts build-and-smoke (20), (22) + Greptile Review (app id 867647)
strict true preserved
required_conversation_resolution true preserved
required_approving_review_count 0 preserved
dismiss_stale_reviews / enforce_admins true / false preserved
Sourcery review required no no — deliberately not promoted

Verified by independent read-back of the protection API, not from the write response.

How to read the requirement: the Greptile context asserts the current head was reviewed, not the review found nothing — it concludes success even on a head carrying a P1. The semantic half is required_conversation_resolution plus the written per-finding protocol in §3. GitHub cannot encode "a human actually engaged", so the written disposition, not the isResolved bit, is the evidence.

Observed working on PR #12 at 76d495d: all three required contexts green, SonarCloud Code Analysis failing but unrequired and not blocking, mergeStateStatus=BLOCKED on one unresolved Greptile P1. Every required status satisfied and still blocked, on conversation resolution alone.

Accepted cost, stated plainly: PR #6 predates the policy and its head has no Greptile run, so it must update before it can merge. Intended behavior; the gate was not weakened to preserve it.

No product behavior change. No published package bytes or metadata change. No changeset — the repository is not Changesets-managed.

Summary by Sourcery

Document that Greptile Review is now a required status check on main, paired with required conversation resolution as part of the merge gate, and record the calibrated branch-protection state before and after.

Documentation:

  • Update merge-policy documentation to list Greptile Review as a required status check and explain its role alongside required conversation resolution.
  • Extend the Greptile calibration document to record the ratified decision, branch-protection changes, and the intended cost for pre-policy PRs that must update to satisfy the new gate.

Branch protection was changed on 2026-08-12 after ratification, so the merge
policy as committed no longer described the live setting. merge-policy.md §2
declares that when the API and this document disagree the API is right and the
document is the defect, to be corrected by the PR that notices — this is that
correction.

Records the before/after protection state, that strict, both build-and-smoke
contexts, and required_conversation_resolution were preserved, that the context
is pinned to app id 867647, and that Sourcery was deliberately not promoted.

Also records the first post-policy proof on PR #12 at 76d495d: all three
required contexts green, SonarCloud failing but unrequired and therefore not
blocking, and mergeStateStatus BLOCKED on one unresolved Greptile P1 — the
status half proving the head was reviewed, the resolution half holding the
merge.

States the accepted cost plainly: PR #6 predates the policy and has no Greptile
run, so it must update before it can merge. The gate was not weakened for it.

No product behavior change. No changeset.

Refs META-322
Copilot AI lite review requested due to automatic review settings August 12, 2026 15:39

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@sourcery-ai

sourcery-ai Bot commented Aug 12, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR updates the documented merge policy to reflect that Greptile Review is now a required status check on main, and records the calibrated, two-part contract between Greptile status and GitHub conversation resolution, along with before/after branch-protection details and the accepted impact on older PRs.

Sequence diagram for merge gate with Greptile Review and conversation resolution

sequenceDiagram
  actor Developer
  participant GitHub
  participant BuildAndSmoke20
  participant BuildAndSmoke22
  participant GreptileApp867647

  Developer->>GitHub: push commits to main PR
  GitHub->>BuildAndSmoke20: run build-and-smoke (20)
  GitHub->>BuildAndSmoke22: run build-and-smoke (22)
  GitHub->>GreptileApp867647: trigger Greptile Review on head SHA
  BuildAndSmoke20-->>GitHub: status success
  BuildAndSmoke22-->>GitHub: status success
  GreptileApp867647-->>GitHub: status success (head was reviewed)

  GitHub-->>Developer: mergeStateStatus=BLOCKED
  alt [all conversations resolved]
    GitHub-->>Developer: merge allowed
  else [Greptile P1 thread unresolved]
    GitHub-->>Developer: merge blocked by required_conversation_resolution
  end
Loading

File-Level Changes

Change Details Files
Document that Greptile Review is a required status check on main and clarify its role in the merge gate alongside conversation resolution.
  • Expanded the branch-protection table to include Greptile Review as a required status check and removed the statement that no reviewer app is required.
  • Added narrative explaining that Greptile asserts that the current head was reviewed (not that it is defect-free), and that its meaning is coupled with required_conversation_resolution and the per-finding protocol in §3.
  • Introduced an "Observed working" subsection describing PR fix(meta-285): make the candidate-consumption harness admissible evidence #12 as an end-to-end proof of the two-part gate and the impact on PRs whose heads predate the policy.
docs/review/merge-policy.md
Update the calibration document to record that the Greptile gate decision has been ratified and applied, including explicit before/after branch protection settings and the accepted cost on legacy PRs.
  • Reworded the decision section from Greptile being eligible to required, and reframed the criteria as having been observed on this repository.
  • Added a branch-protection before/after table showing the addition of Greptile Review (app id 867647) while preserving other protections and keeping Sourcery review unrequired.
  • Documented the deliberate impact on PR docs(meta-257): add the ratified conformance taxonomy #6 and left other unrequired CI contexts explicitly out of scope.
docs/review/calibration-2026-08.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • The branch protection before/after tables and narrative are now duplicated between merge-policy.md and calibration-2026-08.md; consider centralizing the canonical description in one place and referencing it from the other to reduce future drift.
  • Several passages are very date- and PR-specific (e.g., explicit references to PR #12, PR #6, specific SHAs and dates); you might want to tighten these into more general statements so the docs remain accurate and readable as the repository evolves.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The branch protection before/after tables and narrative are now duplicated between `merge-policy.md` and `calibration-2026-08.md`; consider centralizing the canonical description in one place and referencing it from the other to reduce future drift.
- Several passages are very date- and PR-specific (e.g., explicit references to PR #12, PR #6, specific SHAs and dates); you might want to tighten these into more general statements so the docs remain accurate and readable as the repository evolves.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@greptile-apps

greptile-apps Bot commented Aug 12, 2026

Copy link
Copy Markdown

Greptile Summary

The PR updates the documented merge policy to reflect that Greptile Review is now required and records the ratified before/after branch-protection state.

  • Distinguishes current policy from the historical calibration record.
  • Documents the two-part gate of current-head review completion and conversation resolution.
  • Records the intended impact on pre-policy pull requests.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
docs/review/merge-policy.md Correctly updates the required-context list and measurement provenance to the post-policy SHA, resolving the prior inconsistency.
docs/review/calibration-2026-08.md Records the ratified policy transition and removes the previously duplicated conclusion.

Reviews (2): Last reviewed commit: "docs(review): reconcile review findings ..." | Re-trigger Greptile

Comment thread docs/review/merge-policy.md
Comment thread docs/review/calibration-2026-08.md
- correct the measurement stamp in merge-policy.md §2: the table describes main
  at f61e0cb, not the pre-policy a31242b reading, which stays in the calibration
  record as the before half
- remove a duplicated paragraph in the calibration decision section
- state the division of responsibility between the two documents: merge-policy
  is the current contract, calibration is the evidence and change record

Refs META-322
@sonarqubecloud

Copy link
Copy Markdown

@qmarcelle

Copy link
Copy Markdown
Contributor Author

Reconciling Sourcery finding 1 of 2 — before/after tables duplicated across the two documents

Accepted in substance, addressed structurally rather than by deletion.

The overlap is real and is a genuine drift risk: two places stating what is required is two places that can disagree.

Applied in e3f8d0e — an explicit division of responsibility at the top of merge-policy.md §2:

  • merge-policy.md is the current contract — what is required now and how to read it.
  • calibration-2026-08.md is the evidence and change record — before/after protection state, the calibration that justified it, and the SHAs it was measured against.

So when a setting changes, the new state is recorded in one place and the transition in the other. They are adjacent, not redundant.

Not centralized into a single file, because they answer different questions and have different lifetimes: the contract is read by anyone opening a PR today, while the calibration record is an append-only artifact that must keep its pre-policy readings intact to remain evidence. Collapsing them would force the historical a31242b baseline to live in a document describing current state — which is precisely the inconsistency the Greptile P2 on merge-policy.md:52 caught in this same review.

@qmarcelle

Copy link
Copy Markdown
Contributor Author

Reconciling Sourcery finding 2 of 2 — passages are very date-, PR-, and SHA-specific

Declined, with reasoning — this one I disagree with, and the disagreement is the disposition.

The suggestion is to generalize passages that name PR #12, PR #6, specific SHAs and dates, so the docs read better as the repository evolves. For most documentation that would be right. Here the specificity is the content.

calibration-2026-08.md is not a description of how review works; it is the evidence record that justified making a check required. Its claims are only checkable because they name what was observed and where:

Generalizing those into "a clean head", "a subsequent PR", "an older PR" would convert falsifiable receipts into assertions — the exact failure this repository's own evidence-load-bearing and absence-not-success rules exist to prevent. A reader six months from now who cannot reproduce the observation is entitled to distrust the conclusion, and the SHAs are how they check.

The dated filename (calibration-2026-08.md) is deliberate for the same reason: it is a point-in-time record, and a successor calibration gets its own file rather than overwriting this one.

Where the concern does apply is merge-policy.md, which is read as current state and should stay durable. That is now handled by the division of responsibility added in e3f8d0e and by the refresh procedure in §2 that makes the live API authoritative over the prose. The one PR-specific block retained there is the "Observed working" table, which is load-bearing for how to read the gate — it is the demonstration that required-status and conversation-resolution are separate halves.

@qmarcelle
qmarcelle merged commit 70cfd57 into main Aug 12, 2026
9 checks passed
@qmarcelle
qmarcelle deleted the meta-322/record-required-gate branch August 12, 2026 15:45
qmarcelle added a commit that referenced this pull request Aug 13, 2026
…TM-45) (#18)

The withdrawal record said "emission on this repository is not dependable."
That was accurate about the symptom and wrong about the cause, and the
difference decides what anyone does next: a flaky app is waited out, an
exhausted trial is topped up.

Established 2026-08-13. Greptile posts, in place of a review:

  `qmarcelle` has reached the 50-credit limit for trial accounts. To continue
  receiving code reviews, upgrade your plan.

and emits no check run. That is why the check fired on #10 and #13 and then
stopped at #14 — the credits ran out in between, not the app's emission becoming
unreliable here.

The prediction that follows was confirmed the same day. `workspacejson/standard`
kept working only until its own next pull request: #37 reviewed the exact head
4f9e8f6f and emitted zero check runs, against exactly one each on #34, #35 and
#36. It hit the identical deadlock and its requirement was withdrawn the same
way.

So the "next door still works" observation in the original evidence was true but
temporary, and reading it as repository-specific would have sent the
investigation somewhere there was nothing to find. Restoring the signal is a
billing action.
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.

2 participants