Skip to content

docs(review): withdraw the Greptile merge requirement it cannot satisfy (GTM-45) - #17

Merged
qmarcelle merged 1 commit into
mainfrom
gtm-45-withdraw-greptile-requirement
Aug 13, 2026
Merged

docs(review): withdraw the Greptile merge requirement it cannot satisfy (GTM-45)#17
qmarcelle merged 1 commit into
mainfrom
gtm-45-withdraw-greptile-requirement

Conversation

@qmarcelle

@qmarcelle qmarcelle commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Closes GTM-45.

Greptile Review was promoted to a required status context on 2026-08-12 after a seven-criterion calibration. Criterion 5 — a further push retriggers review against the new head — stopped holding the next day. Greptile kept posting reviews and stopped emitting the check run branch protection matches on, so the required context could not be satisfied by any action available to a contributor, and main became unmergeable for every change including hotfixes.

Evidence — PR #14, four heads

Head Greptile review posted Greptile Review check run Other checks Unresolved threads
0ee76bc yes (COMMENTED) 0 8/8 pass 0
c3c17a2 (rebase onto main) yes (COMMENTED) 0 8/8 pass 0
3aa4531 (fresh push) yes (COMMENTED) 0 8/8 pass 0
be2e965 (merged head) 0 8/8 pass 0

The same statusCheck: true in .greptile/config.json kept producing the check on workspacejson/standard across #34, #35 and #36 in the same window. The configuration is not missing; emission on this repository is not dependable.

Change applied to protection (2026-08-13), read back from the API

before: ["build-and-smoke (20)", "build-and-smoke (22)",
         "standard-candidate-consumption", "SonarCloud Code Analysis",
         "Greptile Review"]
after:  ["build-and-smoke (20)", "build-and-smoke (22)",
         "standard-candidate-consumption", "SonarCloud Code Analysis"]

strict, required_conversation_resolution, dismiss_stale_reviews, enforce_admins, force-push and deletion settings all preserved. App id bindings preserved on the four surviving contexts, so a same-named check from another app still cannot satisfy them.

Greptile was not uninstalled. greptile-apps (app id 867647) remains installed on the org and continues to review. Only its authority over merge eligibility is withdrawn.

What this PR records that is uncomfortable

  • PR docs(readme): state that this is one adapter, not the way to consume workspace.json #14 merged by administrator bypass, not by satisfying protection. Four of five required contexts were green; Greptile Review was absent. The GTM-39 receipt therefore rests on four contexts plus conversation resolution. Recorded rather than smoothed over — a gate satisfiable only by bypass is not a gate.
  • The calibration protocol did not test durability. Every criterion was measured once, in one sitting; criterion 5 was verified by a single push. A behavioral bar measured once is a measurement, not a guarantee. Future promotions should require the signal to survive a stated interval first.
  • main now has no mechanically enforced reviewer context at all. That is a real reduction in enforcement, accepted knowingly: the alternative on offer was not a stronger gate but an unsatisfiable one, which delivered no review authority either while blocking every merge.

Criterion 5 is annotated in place rather than deleted — it is the criterion whose failure the requirement could not survive.

Re-admission

Greptile Review may become merge-authoritative again only after both are observed: a substantive review on the current PR head, and a mechanically enforceable current-head signal compatible with branch protection. Absence of either is reported as absence. Quota, credit-limit and error comments are not review evidence.


This PR is also the live proof the deadlock is resolved: it should merge on the four contexts that actually emit, with no bypass.

Summary by Sourcery

Update documented merge policy to reflect that the Greptile Review status check has been withdrawn as a required context due to unreliable check-run emission, while the app remains installed and its findings still influence conversation resolution.

Documentation:

  • Adjust branch protection documentation to remove Greptile Review from the list of required status checks and describe the resulting reliance on conversation resolution and per-finding protocol for review enforcement.
  • Extend the Greptile calibration record with a withdrawal section that documents the deadlock, the failed durability criterion, the before/after branch protection state, and conditions for any future re-admission as a required check.

…fy (GTM-45)

`Greptile Review` was promoted to a required context on 2026-08-12 after a
seven-criterion calibration. Criterion 5 — a further push retriggers review
against the new head — stopped holding the next day. Greptile kept posting
reviews and stopped emitting the check run branch protection matches on, so the
required context could not be satisfied by any action available to a
contributor and `main` became unmergeable for every change, hotfixes included.

Observed on PR #14 across four heads (`0ee76bc`, `c3c17a2`, `3aa4531`,
`be2e965`): a Greptile review posted on each, zero `Greptile Review` check runs
on any, 8/8 other checks green, zero unresolved threads. The same
`statusCheck: true` kept producing the check on `workspacejson/standard` across
#34, #35 and #36 in the same window — the configuration is not missing, the
emission is not dependable.

Applied to protection on 2026-08-13, measured before and after against the API
rather than trusting the write response. App id bindings preserved on the four
surviving contexts. Greptile is **not** uninstalled — `greptile-apps` (867647)
remains installed and reviewing; only its authority over merge eligibility is
withdrawn.

Criterion 5 is annotated rather than deleted: it is the criterion whose failure
the requirement could not survive, and the calibration record now says what the
protocol did not test — durability. Every criterion was measured once, in one
sitting. A behavioral bar measured once is a measurement, not a guarantee.

Recorded honestly: PR #14 merged by administrator bypass, not by satisfying
protection, so the GTM-39 receipt rests on four contexts plus conversation
resolution. A gate satisfiable only by bypass is not a gate. The accepted cost
is that `main` now has no mechanically enforced reviewer context at all —
conversation resolution and the written per-finding protocol carry the whole
semantic gate.

Re-admission requires both a substantive review on the current head and a
mechanically enforceable current-head signal. Absence is reported as absence;
quota and error comments are not review evidence.
Copilot AI lite review requested due to automatic review settings August 13, 2026 03:56

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.

@greptile-apps greptile-apps 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.

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

@sourcery-ai

sourcery-ai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR updates the review documentation to record that the Greptile Review status check was briefly required, then withdrawn when its check-run emission became unreliable, and to describe the resulting branch-protection change, its impact on merge policy, and the conditions for any future re-admission as a required check.

Sequence diagram for Greptile Review withdrawal and merge deadlock resolution

sequenceDiagram
    actor Contributor
    participant GitHub
    participant BranchProtection
    participant Greptile_app

    Contributor->>GitHub: push_head_to_main
    GitHub->>Greptile_app: trigger_review
    Greptile_app->>GitHub: post_review_comments

    alt before_withdrawal (Greptile Review required)
        GitHub->>Greptile_app: expect_Greptile_Review_check_run
        note over Greptile_app,GitHub: Greptile Review check run not emitted
        GitHub->>BranchProtection: evaluate_required_status_checks
        BranchProtection-->>Contributor: merge_blocked_missing_Greptile_Review
    else after_withdrawal (Greptile Review not required)
        GitHub->>BranchProtection: evaluate_required_status_checks
        note over BranchProtection: Only build-and-smoke, standard-candidate-consumption, SonarCloud required
        BranchProtection-->>Contributor: merge_allowed_if_checks_green_and_conversations_resolved
    end
Loading

File-Level Changes

Change Details Files
Update merge policy docs to reflect removal of Greptile Review as a required status check and clarify the remaining enforcement semantics.
  • Remove Greptile Review from the documented list of required status checks for main.
  • Adjust the narrative description of what is required to merge into main so it no longer mentions Greptile Review as a gate.
  • Rewrite the section describing Greptile Review to state it is no longer required, explain that only its merge authority was withdrawn, and emphasize that Greptile still posts findings whose threads must be resolved.
  • Annotate criterion 5 in the calibration list as no longer holding and point to a dedicated withdrawal explanation section.
docs/review/merge-policy.md
Add a withdrawal section to the calibration document that records why the Greptile Review requirement failed and the precise branch-protection changes applied.
  • Introduce a new section documenting the withdrawal of the requirement, explicitly tying it to the failure of criterion 5 (no retriggered check-run on new heads).
  • Provide a table of observations on PR docs(readme): state that this is one adapter, not the way to consume workspace.json #14 across multiple heads showing reviews without corresponding Greptile Review check runs but with all other checks passing.
  • Document that statusCheck: true continues to work on another repository, attributing the issue to unreliable emission on this repo rather than missing configuration.
  • Add a before/after table of branch-protection settings from the GitHub API, highlighting removal of Greptile Review while preserving other protections and app-id bindings.
  • Explain that Greptile remains installed, that PR docs(readme): state that this is one adapter, not the way to consume workspace.json #14 merged via administrator bypass due to an unsatisfiable required context, and that main now relies entirely on conversation resolution and written protocol for review semantics.
  • Define conditions under which Greptile Review may be re-admitted as merge-authoritative, requiring both substantive head review and a dependable, enforceable status signal.
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

@sonarqubecloud

Copy link
Copy Markdown

@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 PR-14 evidence and withdrawal narrative are now duplicated across merge-policy.md and calibration-2026-08.md; consider consolidating the detailed account in one file and referencing it from the other to avoid future drift.
  • The withdrawal and re-admission criteria for Greptile Review are restated in both documents with slightly different wording; it may be clearer to define the re-admission conditions once and link to them, so the policy remains single-sourced.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The PR-14 evidence and withdrawal narrative are now duplicated across `merge-policy.md` and `calibration-2026-08.md`; consider consolidating the detailed account in one file and referencing it from the other to avoid future drift.
- The withdrawal and re-admission criteria for `Greptile Review` are restated in both documents with slightly different wording; it may be clearer to define the re-admission conditions once and link to them, so the policy remains single-sourced.

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.

@qmarcelle
qmarcelle merged commit 861c227 into main Aug 13, 2026
8 checks passed
@qmarcelle
qmarcelle deleted the gtm-45-withdraw-greptile-requirement branch August 13, 2026 04:03
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