Default PR batches to one canonical target - #458
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fc5f1c95c5
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 8d120c1a42
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 02b3ee04b9
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 1384e39f4c
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7a23847ee7
ℹ️ 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".
| reservation.fetch("rename").values.any? do |endpoint| | ||
| path == endpoint || path.start_with?("#{endpoint}/") |
There was a problem hiding this comment.
Detect ancestor paths around rename endpoints
When a rename reservation uses an endpoint such as lib/old/sub and another same-wave lane reserves or reports the ancestor path lib/old, this predicate returns false because it checks only whether the other path is equal to or below the endpoint. colliding_paths applies the same one-way test, so preflight can accept both lanes without the required max-one serialization even though the documented rename contract promises ancestor/descendant collision checks at both endpoints; compare both path.start_with?(endpoint + "/") and endpoint.start_with?(path + "/").
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Valid finding, but not fixed by this issue-402 lane. The required changes are in skills/plan-pr-batch/bin/batch-plan-preflight and its test, which are outside the explicit authorized envelope. Independent QA reproduces the bidirectional rename-ancestor collision gap. This thread remains unresolved pending the PR-426/base owner or explicit scope expansion; no waiver or merge-readiness claim is made.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3bfcc1787d
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 05138ae9d2
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 5eb6fbb291
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2d30eee471
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a54dd1a5e6
ℹ️ 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".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c21eb551be
ℹ️ 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".
|
Review-status checkpoint for exact head
This is a non-cutoff status because a valid review item is still pending. The next review pass must check all reviews, not only comments newer than this checkpoint.
|
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e99b6b2dd7
ℹ️ 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".
| ownership = manifest["ownership"] | ||
| allowed_roles = %w[maker checker reviewer qa] | ||
| normalized_actors = ownership.values.map { |actor| canonical_identity(actor) } | ||
| unless (ownership.keys - allowed_roles).empty? && known_string?(ownership["maker"]) && |
There was a problem hiding this comment.
Require a checker owner before accepting the manifest
When a launch manifest supplies ownership as only { "maker": "..." }, this condition passes because it merely rejects unknown role keys and requires the maker; it never requires a checker. If the remaining launch gates pass, validate_launch! can therefore authorize worker_spawn without the independent checker identity that the workflow contract says must exist before mutation. Require at least both the maker and checker ownership entries, while keeping reviewer/QA conditional if they are optional.
Useful? React with 👍 / 👎.
abf81c2 to
17381e9
Compare
Why
PR-batch currently permits broad multi-target supervision even when one user-visible task has one canonical issue or PR. That topology amplifies context, delegation, and correction costs and makes ownership harder to reason about.
This change makes one user-visible task map to one repository-qualified canonical issue or existing PR, one lane, one active maker by default, and at most one implementation PR. Multi-target supervision remains available only through an explicit, budgeted, rollback-safe exception.
What changed
canonical-task-controlhelper and focused contract tests.UNKNOWNresults without falsely promoting the default.Review path
skills/pr-batch/bin/canonical-task-control-test.rbfor the accepted state machine and negative cases.skills/pr-batch/bin/canonical-task-controlagainst those contracts.Stacked dependency
This PR is intentionally stacked on PR #426 (
jg-codex/399-hierarchical-token-budgets) so #402 can proceed independently while consuming the real budget/usage contract. It must not merge intomainyet. After #426 merges, this branch will be rebased or retargeted to currentmain, conflicts will be resolved here, and every exact-head validation/review/QA gate will be rerun.Closes #402