chore: mirror the pr-review rubric provenance contract from orbit-ui-mobile - #467
Conversation
…mobile The pr-review skill is single-sourced in orbit-ui-mobile and mirrored here, and tools/launch-worker.mjs refuses an API review when the two copies disagree by committed blob. This is the mirror half of orbit-ui-mobile#701. The contract change: a review artifact now carries rubricRepositoryKey, rubricCommitOid, rubricBlobOid and rubricArtifactPath instead of rubricBaseOid. record-readiness.mjs proves all four with git and refuses the receipt when they do not hold, so a review bound to the wrong or a stale rubric cannot reach READY. For this repository the binding is always own-base: orbit-api carries .claude/skills/pr-review/rubric.md, so rubricRepositoryKey is api and rubricCommitOid is the pull request's own base SHA. The canonical-main binding exists for orbit-landing-page, which has no .claude tree at any commit and could therefore never mint a READY receipt at all. Body copied verbatim. Verified byte-identical to the UI copy: 86d428358a2b460db68d1a5c7db99d8aa5a5472bb2ed7ac093f69a819044decf MERGE THIS TOGETHER WITH orbit-ui-mobile#701. The blob-parity gate refuses every ui and api review in the window where only one of the two has landed. Refs ORB-215 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7750b001f7
ℹ️ 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".
| - **The repository carries no rubric** (orbit-landing-page has no `.claude` tree at any commit). | ||
| `rubricRepositoryKey` is `ui` and `rubricCommitOid` is orbit-ui-mobile's current `origin/main`. |
There was a problem hiding this comment.
Materialize landing rubrics from the UI repository
For an orbit-landing-page review, this binding requires the rubric from orbit-ui-mobile, but the unchanged Resolve scope procedure still runs git show {baseRefOid}:.claude/skills/pr-review/rubric.md in the target repository, which this section explicitly says has no .claude tree. Following the skill therefore fails before a landing review can produce a receipt. Update the snapshot capture and blob-resolution steps to fetch and read rubricCommitOid from the repository identified by rubricRepositoryKey.
Useful? React with 👍 / 👎.
What this is
The pr-review skill is single-sourced in orbit-ui-mobile and mirrored here.
tools/launch-worker.mjsrefuses an API review when the two copies disagree by committed blob, so this is the mirror half of orbit-ui-mobile#701 and the two must land together.The contract change
A review artifact now carries rubric provenance instead of a single base SHA:
rubricBaseOidrubricRepositoryKey,rubricCommitOid,rubricBlobOidrubricArtifactPathrubricArtifactPath(unchanged)record-readiness.mjsproves all of it with git and refuses the receipt when it does not hold, so a review bound to the wrong or a stale rubric cannot reach READY.For this repository the binding is always
own-base: orbit-api carries.claude/skills/pr-review/rubric.md, sorubricRepositoryKeyisapiandrubricCommitOidis the pull request's own base SHA. That is exactly the strength the old rule had.The second binding,
canonical-main, exists for orbit-landing-page, which has no.claudetree at HEAD or at any commit and could therefore never mint a READY receipt at all. Four complete landing pull requests reportedREVIEW_STALEon 2026-08-08 for that reason.Verification
Body copied verbatim from the UI original. Both files hash to:
Merge order
Merge this together with orbit-ui-mobile#701. The blob-parity gate refuses every
uiandapireview in the window where only one of the two has landed. Order across the whole set:.gitattributeseol pin)Refs ORB-215