Skip to content

fix(noema): authorize exact-head 429 continuation dispatch - #2372

Open
seonghobae wants to merge 2 commits into
mainfrom
fix/noema-429-continuation-dispatch
Open

seonghobae wants to merge 2 commits into
mainfrom
fix/noema-429-continuation-dispatch

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Failure and fix

A Noema run exhausted provider capacity after trying distinct free-pool candidates, then its same-head continuation failed with Resource not accessible by integration (HTTP 403) at POST /repos/.../dispatches (run 36026163711). The re-dispatch step preferred a read-scoped reviewer credential. Its job also requested only contents: read, while GitHub requires Contents write for repository dispatch.

The trusted Noema job now requests Contents write and uses its repository-scoped github.token only for re-dispatch. Reviewer credentials still handle model context and verdict publication. The existing exact-live-head check remains.

The retry counter previously treated malformed or oversized values as zero, replenishing its own two-attempt budget. Invalid values now exhaust that budget. The workflow preserves the supplied JSON type so empty and nonnumeric values cannot be silently converted to zero before validation. An absent initial counter remains zero.

Gateway candidate selection is tracked separately in contextual-orchestrator #1249 and #1251. This PR repairs the Noema continuation authority and counter integrity; it does not claim a hosted retry or independent approval yet.

Validation

  • uv run --no-sync python -m pytest tests/test_noema_review_gate.py tests/test_noema_two_phase_handoff.py tests/test_noema_orchestrator_workflow_contract.py tests/test_required_workflow_queue_contract.py -q: 222 passed
  • GITHUB_ACTIONS=true uv run --no-sync python -m pytest tests/test_noema_review_gate.py tests/test_noema_two_phase_handoff.py tests/test_noema_orchestrator_workflow_contract.py -q: 152 passed
  • actionlint .github/workflows/noema-review.yml: passed
  • git diff --check: passed

Protected merge still requires terminal checks and an independent current-head Noema or OpenCode approval.

@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 51 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 3bb2515a-eeb9-4f6a-9c7c-8691d5145d47

📥 Commits

Reviewing files that changed from the base of the PR and between e6334e2 and 40e1a6b.

📒 Files selected for processing (4)
  • .github/workflows/noema-review.yml
  • scripts/ci/noema_review_gate.py
  • tests/test_noema_orchestrator_workflow_contract.py
  • tests/test_noema_review_gate.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae

Copy link
Copy Markdown
Contributor Author

Planned supersession by #2373 (not closing yet).

Line-level comparison against e6334e229: the toJSON(transport_retry_attempt) change and the scripts/ci/noema_review_gate.py / tests/test_noema_review_gate.py changes are identical in #2373 (head 8f972024). The only lines absent from #2373 grant contents: write to the whole noema-review job and test that grant. #2373 deliberately does not adopt it: it keeps the model job read-only and gives contents: write only to the separate continue-noema-transport job that performs repository_dispatch.

This PR will be closed with that evidence only after #2373 passes current-head required checks and receives a GitHub-recognised non-author approval. Until then it stays open; no rerun or cancel is requested.

@opencode-agent opencode-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

OpenCode reviewed the current-head product diff. Coverage is a separate gate.

Changed files

  • .github/workflows/noema-review.yml — GitHub Actions review job
  • scripts/ci/noema_review_gate.py — review and security gate shell path
  • tests/test_noema_orchestrator_workflow_contract.py — regression suite
  • tests/test_noema_review_gate.py — regression suite

Changed behavior

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: noema-review.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: noema-review.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["CI script: noema_review_gate.py"]
  S2 --> I2["review and security gate shell path"]
  I2 --> R2["Review risk: CI script: noema_review_gate.py"]
  R2 --> V2["bash -n plus Strix self-test"]
  Evidence --> S3["Test: test_noema_orchestrator_workflow_contract.py (2 files)"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: test_noema_orchestrator_workflow_contract.py (2 files)"]
  R3 --> V3["targeted test run"]
Loading

Findings

No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.

  • Head SHA: 40e1a6b4b956703f8f246d062c847210dde60bd3
  • Workflow run: 36191814438
  • Workflow attempt: 1
  • Coverage gate: failure

Review outcome

Coverage is a gate, not the review. This body reviews the changed product files.

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["Workflow: noema-review.yml"]
  S1 --> I1["GitHub Actions review job"]
  I1 --> R1["Review risk: Workflow: noema-review.yml"]
  R1 --> V1["actionlint plus required checks"]
  Evidence --> S2["CI script: noema_review_gate.py"]
  S2 --> I2["review and security gate shell path"]
  I2 --> R2["Review risk: CI script: noema_review_gate.py"]
  R2 --> V2["bash -n plus Strix self-test"]
  Evidence --> S3["Test: test_noema_orchestrator_workflow_contract.py (2 files)"]
  S3 --> I3["regression suite"]
  I3 --> R3["Review risk: Test: test_noema_orchestrator_workflow_contract.py (2 files)"]
  R3 --> V3["targeted test run"]
Loading

@opencode-agent

opencode-agent Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

Coverage evidence did not pass, so approval is blocked. The formal pull-request review is the source-backed diff review, not this status comment.

This branch has not been deployed

No deployments
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