Skip to content

[Fix] Pull requests become ready after an explicit draft request - #3442

Merged
daniel-lxs merged 1 commit into
developfrom
fix/explicit-pr-draft-intent-2ausc3ucazj2w
Oct 9, 2026
Merged

daniel-lxs merged 1 commit into
developfrom
fix/explicit-pr-draft-intent-2ausc3ucazj2w

Conversation

@roomote-roomote

@roomote-roomote roomote-roomote Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

​Opened on behalf of @daniel-lxs. Follow up by mentioning @roomote-roomote, in the web UI, or in Telegram.

What changed

An explicit draft-state update through Roomote now prevents clean-review automation from marking that PR ready. This includes an already-draft update that makes no remote change. A successful explicit ready update releases the hold; title, description, and base-branch refreshes preserve it.

The hold is persisted on tracked PR associations, applies across subsequent pushes/reviews, and is checked under the same provider-scoped lifecycle lock used by explicit state updates. Provider failures retain the hold, and ready updates must confirm the requested remote state before releasing it. Includes an additive, default-false migration and updated source-control documentation.

Why this change was made

Previously, the clean-review path only knew that Roomote created the PR. It could therefore override an explicit draft request, even immediately after a successful no-op draft update. Persisting that intent preserves the requested review workflow while retaining normal opt-in promotion for unheld PRs.

Impact

Explicit draft intent remains effective across clean reviews, multiple task associations, and new heads. The normal deployment-default draft creation and automatic promotion of unheld PRs remain unchanged. The hold records state updates made through Roomote; direct provider UI/CLI changes do not create a Roomote hold. No merge or approval behavior is added.

How it was tested

  • Current-develop baseline (35201fbf): actual update/promotion helpers with real Postgres associations, real Redis, and controlled GitHub protocol reproduced an explicit no-op draft update being promoted to ready.
  • Exact pushed head b4380234a376146d271c9abe2857e3e8c9f6dd9e: 133 focused tests passed. Eight real persistence/ordering tests cover no-op intent, default promotion, explicit ready release, provider failure/retry, later associations/new heads, isolation, controlled in-flight ordering, and independent-process lock ownership, durable hold, release, cleanup, and recovery.
  • All five provider promotion gates are exercised. Existing transition tests and adverse ignored-ready-response/lock-loss tests pass. External protocol clients are controlled; these are application/persistence tests, not live-provider parity claims.
  • Generated migration applied to the existing local development database; all preexisting associations retain the default unheld state. SDK/DB types, pnpm lint:fast, pnpm check-types:fast, pnpm knip, and normal pre-push gates passed. Mintlify validation and broken-link checks passed.
  • Adjacent GitHub review-intake/lifecycle suites passed 64 checks at the same head. Full hosted CI passed, including Test, app Docker, backup/restore and upgrade compatibility. Worker-image matrix and Mintlify deployment are expected skips. Exact-head automated review is clean with zero findings or unresolved threads.
  • Judgement is explicitly incomplete despite its green policy result: precommit evaluated 37 judgments with generated-snapshot file-budget gaps; hosted final run evaluated zero judgments and reported evidence/judgment failures plus snapshot budget limits. This is not complete semantic coverage or merge certification.

Checklist

  • The PR title follows the repo convention: [Fix], [Feat], [Improve], [Refactor], [Docs], or [Chore] followed by a user-facing description
  • This PR is small and scoped to one change (the large JSON addition is the generated Drizzle schema snapshot)
  • pnpm lint and pnpm check-types pass locally — normal fast repository gates passed; full formatting-inclusive commands were not run
  • I added tests or included a clear manual validation note above
  • I removed secrets, tokens, private keys, and customer data from code, logs, and screenshots
  • If this change should appear in the changelog, I ran pnpm changeset

Screenshots

Source-control documentation describing explicit draft holds and ready release

Genuine local Mintlify desktop rendering, opened and independently reviewed. This screenshot proves documentation copy/layout only; backend behavior is covered by the persistence/protocol tests above. The existing table-of-contents prior-section highlight is visible. No simulated UI state was used.

Related PRs

@roomote-community

roomote-community Bot commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

No code issues found. See task

Reviewed draft-intent persistence, explicit state updates and provider confirmations, promotion locking, association refreshes, migration consistency, regression coverage, and documentation. Current-head tests, lint, type checks, Knip, docs validation, Docker build, and CodeQL passed.

Reviewed b438023

@daniel-lxs daniel-lxs left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Verified explicit draft holds and release through the actual PR writer and clean-review promotion path, with real persistence, locking and a controlled HTTP provider. Focused SDK/database checks and current CI pass at this head.

@daniel-lxs
daniel-lxs merged commit 86c02ab into develop Oct 9, 2026
39 checks passed
@daniel-lxs
daniel-lxs deleted the fix/explicit-pr-draft-intent-2ausc3ucazj2w branch October 9, 2026 23:17
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