fix(scheduler): canonicalize repository dispatch identity - #1984
fix(scheduler): canonicalize repository dispatch identity#1984seonghobae wants to merge 2 commits into
Conversation
Use the OIDC-exchanged OpenCode App token exclusively for OpenCode and Strix repository_dispatch POSTs. Keep central Actions reads and PR mutation credentials separate, and fail closed without the scoped App credential. Refs #1927.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
Exact-head local execution receipt for
This is source-level GREEN only. Hosted checks are queued, exact-head approvals are 0, #1238 has an independent same-file delta, and live allowlist/settings convergence plus unchanged-consumer terminal callbacks remain required. Draft retained; no merge/rerun/settings/bypass action taken. |
|
SOURCE WRITER RECLAIM — protected main advanced to |
Ordinarily adopt #1980's cancel-in-progress value contract without changing the canonical repository-dispatch identity repair.
|
P0 BLOCKER / PREMISE CORRECTION — fresh Actions evidence in #1927 shows |
|
SOURCE WRITER RELEASE — current exact head Design status remains BLOCKED/Draft: direct run |
Problem
The trusted OpenCode producer already creates central
repository_dispatchevents with the OIDC-exchanged OpenCode App token (opencode-agent[bot]), while the PR review scheduler creates the same OpenCode/Strix events withgithub.token(github-actions[bot]). Current receiver-side actor=sender enforcement is correct; the producer identity drift is not. Broadening the live allowlist to two principals would keep two mutable transport identities for one operation.Refs #1927. This is separate from dependency-review #810 and workflow materialization #712.
Change
SCHEDULER_REPOSITORY_DISPATCH_TOKENbound only tosteps.scheduler_app_token.outputs.token;SCHEDULER_DISPATCH_TOKENonly for central Actions artifact reads/control;TDD evidence
RED on protected
main@49eb9e7035a6994fffb5b24bf943156be27a02fb:GREEN on exact head
0212917f3ee00deb9feacc64b9126590af242cfd, exact treed7b92693bf9d7678d110313db57e01aed987acc0:focused scheduler/queue contracts:
400 passed;full Python suite:
2971 passed, 1 skipped, 21 subtests passed;Python compile and
git diff --check: PASS.full Strix shell harness:
test_strix_quick_gate: PASS.The exact-tree full Strix shell harness also reports
test_strix_quick_gate: PASS. Hosted checks/review are not yet complete, so this PR remains Draft.Ownership / merge order
#1238 currently changes the same scheduler workflow for independent flag-coercion semantics. This branch was built from the same live main and does not alter that delta, but whichever PR lands second must ordinarily adopt the first without force-push or semantic loss. Do not merge this PR until that overlap and all exact-head gates are resolved.
Post-merge acceptance
Source merge alone does not close #1927. An authorized settings owner must set the live allowlist to the single canonical
opencode-agent[bot]principal after protected-source convergence, then unchanged consumer exact heads must produce terminal central verdicts and callbacks. This PR does not mutate settings, secrets, consumer refs, or rulesets.