Skip to content

substrate: outdated review threads block merge — resolve explicitly after force-push (operational lesson 2026-04-27)#64

Merged
AceHack merged 1 commit intomainfrom
acehack/outdated-review-threads-block-merge-resolve-explicitly-after-force-push
Apr 27, 2026
Merged

substrate: outdated review threads block merge — resolve explicitly after force-push (operational lesson 2026-04-27)#64
AceHack merged 1 commit intomainfrom
acehack/outdated-review-threads-block-merge-resolve-explicitly-after-force-push

Conversation

@AceHack
Copy link
Copy Markdown
Owner

@AceHack AceHack commented Apr 27, 2026

Summary

Operational lesson: GitHub required_conversation_resolution blocks merge on ANY unresolved thread (including outdated=true). Force-pushing a fix outdates the thread but doesn't resolve it. Must explicitly resolve via GraphQL after every force-push.

Cost-of-discovery

90+ minutes of merge-stuck on #57/#59/#62 today before diagnosing.

Refines Otto-355

Otto-355: "BLOCKED-with-green-CI investigate review threads first" — this memory adds: the investigation must include outdated threads, not just current-revision threads.

Operational rule

After every force-push addressing review feedback:

  1. Verify fix on remote
  2. Run diagnostic GraphQL query for isResolved == false (regardless of outdated)
  3. Resolve all unresolved threads
  4. Verify auto-merge fires within ~5 min

Composes with

  • Otto-355 (refined)
  • Otto-250 (PR reviews are training signals)
  • Otto-329 (force-push discipline; this adds post-push step)

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings April 27, 2026 19:01
@AceHack AceHack enabled auto-merge (squash) April 27, 2026 19:01
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: db9988a75c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

…fter force-push (operational lesson 2026-04-27)

Three PRs (#57/#59/#62) sat BLOCKED 90+ min despite green CI +
zero current-revision unresolved threads. Root cause: GitHub
required_conversation_resolution blocks merge on ANY unresolved
thread, including outdated=true ones. Force-push doesn't
auto-resolve outdated threads.

Refines Otto-355: investigate must include outdated threads.
Operational rule: after every force-push that addresses review
feedback, run resolveReviewThread mutation on ALL unresolved
threads (regardless of outdated status).

Direct cost-amortization per Amara's stability=velocity-amortized
framing: 90+ min lost discovery → zero discovery cost for
future-Otto wakes.

Composes Otto-355 + Otto-250 + Otto-329 force-push discipline.
@AceHack AceHack force-pushed the acehack/outdated-review-threads-block-merge-resolve-explicitly-after-force-push branch from db9988a to 5e93457 Compare April 27, 2026 19:03
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds an operational memory capturing a GitHub branch-protection pitfall: required_conversation_resolution can block merges on unresolved review threads even when those threads are marked outdated after a force-push, and documents an explicit (GraphQL-based) resolution workflow.

Changes:

  • Added a new memory entry documenting the “merge blocked by unresolved outdated threads” failure mode plus a GraphQL diagnosis/remediation flow.
  • Updated memory/MEMORY.md to index the new memory entry (newest-first).

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
memory/feedback_outdated_review_threads_block_merge_resolve_explicitly_after_force_push_2026_04_27.md New operational memory describing the failure mode and providing GraphQL query/mutation guidance.
memory/MEMORY.md Adds the new memory entry to the top of the index.

@AceHack AceHack merged commit c94a316 into main Apr 27, 2026
16 checks passed
@AceHack AceHack deleted the acehack/outdated-review-threads-block-merge-resolve-explicitly-after-force-push branch April 27, 2026 19:11
AceHack added a commit that referenced this pull request Apr 27, 2026
…y-roster with per-insight contribution (Aaron 2026-04-27 reinforcement)

Aaron 2026-04-27: 'yes very good that you caught this and we want
to not do in the future or catch if we do.'

Error class: roster-collapse attribution. When crediting multi-step
contribution, naming all roster members as contributors-to-this-step
even when only some actually contributed.

Specific manifestation #65: frontmatter wrote 'convergence from
Amara/Gemini/Codex/Ani' — included Codex who didn't contribute,
omitted Copilot who also didn't. Codex (per #57/#59) caught real
errors but on OTHER reviews, not the stability/velocity convergence.

Discipline:
- Default: avoid (trace actual contribution chain; name only
  per-insight contributors; distinguish absent-roster-members
  explicitly as 'did NOT contribute')
- Fallback: catch-after-the-fact via cross-AI review if produced
  (Codex's catch on #65 demonstrates infrastructure works)

Composes Otto-352 + Otto-279 + #63 + #64 (same fallback pattern as
outdated-threads — avoid by default; reviewer infrastructure as
safety net, not primary correctness mechanism).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
…y-roster with per-insight contribution (Aaron 2026-04-27 reinforcement)

Aaron 2026-04-27: 'yes very good that you caught this and we want
to not do in the future or catch if we do.'

Error class: roster-collapse attribution. When crediting multi-step
contribution, naming all roster members as contributors-to-this-step
even when only some actually contributed.

Specific manifestation #65: frontmatter wrote 'convergence from
Amara/Gemini/Codex/Ani' — included Codex who didn't contribute,
omitted Copilot who also didn't. Codex (per #57/#59) caught real
errors but on OTHER reviews, not the stability/velocity convergence.

Discipline:
- Default: avoid (trace actual contribution chain; name only
  per-insight contributors; distinguish absent-roster-members
  explicitly as 'did NOT contribute')
- Fallback: catch-after-the-fact via cross-AI review if produced
  (Codex's catch on #65 demonstrates infrastructure works)

Composes Otto-352 + Otto-279 + #63 + #64 (same fallback pattern as
outdated-threads — avoid by default; reviewer infrastructure as
safety net, not primary correctness mechanism).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
AceHack added a commit that referenced this pull request Apr 27, 2026
…y-roster with per-insight contribution (Aaron 2026-04-27 reinforcement) (#66)

Aaron 2026-04-27: 'yes very good that you caught this and we want
to not do in the future or catch if we do.'

Error class: roster-collapse attribution. When crediting multi-step
contribution, naming all roster members as contributors-to-this-step
even when only some actually contributed.

Specific manifestation #65: frontmatter wrote 'convergence from
Amara/Gemini/Codex/Ani' — included Codex who didn't contribute,
omitted Copilot who also didn't. Codex (per #57/#59) caught real
errors but on OTHER reviews, not the stability/velocity convergence.

Discipline:
- Default: avoid (trace actual contribution chain; name only
  per-insight contributors; distinguish absent-roster-members
  explicitly as 'did NOT contribute')
- Fallback: catch-after-the-fact via cross-AI review if produced
  (Codex's catch on #65 demonstrates infrastructure works)

Composes Otto-352 + Otto-279 + #63 + #64 (same fallback pattern as
outdated-threads — avoid by default; reviewer infrastructure as
safety net, not primary correctness mechanism).

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
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