Skip to content

ci: resolve fork PRs missing Castiron run associations - #3831

Merged
marcuswood-oai merged 1 commit into
mainfrom
codex/fix-castiron-pr-association
Sep 9, 2026
Merged

ci: resolve fork PRs missing Castiron run associations#3831
marcuswood-oai merged 1 commit into
mainfrom
codex/fix-castiron-pr-association

Conversation

@marcuswood-oai

Copy link
Copy Markdown
Contributor

Summary

Fork PRs #3760 and #3345 have green Python CI but no required Castiron budget statuses: both the workflow-run association and commit-to-PR endpoint return no PRs. The trusted evaluator fails with source run must identify exactly one current PR targeting main, and the publisher returns without posting statuses.

Fall back to listing open PRs by the source run's fork owner and branch, then retain the existing exact-head, target, freshness, and ambiguity checks. Apply the fallback to report computation, budget evaluation, and publication; update the reporter integrity digest.

Validation

  • Regression tests reproduce the evaluator failure and missing statuses on unpatched main.
  • Patched read-only lookup resolves the exact current heads of both affected PRs.
  • Castiron reporter/budget suite: 53 tests, OK (1 optional compiler-contract test skipped), including the JavaScript publishers, pagination, stale heads, wrong targets, and ambiguous matches.
  • Ruff, Pyright, and mypy for scripts/castiron.

The trusted handler runs from main. After this fix merges, rerun the Castiron custom-code workflows for #3760 and #3345 to publish their required statuses.

@marcuswood-oai
marcuswood-oai requested a review from a team as a code owner September 9, 2026 23:38
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 9, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-09T23:41:44.218419Z 3fbd4ac PR opened
🔒 Security Review Completed 2026-09-09T23:42:14.668793Z 3fbd4ac PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@openai-sdks

openai-sdks Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

OkTest Summary

236/236 SDK tests passed in 12.151s for Python SDK PR #3831.

Test results — 42 files
Test Result Time
tests/chat-completions-complex-body.test.ts ✅ Passed 177ms
tests/chat-completions-create.test.ts ✅ Passed 198ms
tests/chat-completions-stream.test.ts ✅ Passed 254ms
tests/files-content-binary.test.ts ✅ Passed 271ms
tests/files-create-multipart.test.ts ✅ Passed 211ms
tests/files-list-pagination.test.ts ✅ Passed 164ms
tests/initialize-config.test.ts ✅ Passed 246ms
tests/instance-isolation.test.ts ✅ Passed 248ms
tests/models-list.test.ts ✅ Passed 242ms
tests/responses-background-lifecycle.test.ts ✅ Passed 274ms
tests/responses-body-method-errors.test.ts ✅ Passed 330ms
tests/responses-cancel-timeout.test.ts ✅ Passed 203ms
tests/responses-cancel.test.ts ✅ Passed 262ms
tests/responses-compact-retries.test.ts ✅ Passed 355ms
tests/responses-compact.test.ts ✅ Passed 345ms
tests/responses-create-advanced-stream.test.ts ✅ Passed 140ms
tests/responses-create-advanced.test.ts ✅ Passed 378ms
tests/responses-create-disconnect.test.ts ✅ Passed 1.249s
tests/responses-create-errors.test.ts ✅ Passed 210ms
tests/responses-create-malformed-api-responses.test.ts ✅ Passed 243ms
tests/responses-create-retries.test.ts ✅ Passed 275ms
tests/responses-create-stream-failures.test.ts ✅ Passed 769ms
tests/responses-create-stream-timeout.test.ts ✅ Passed 232ms
tests/responses-create-stream-wire.test.ts ✅ Passed 3.941s
tests/responses-create-stream.test.ts ✅ Passed 87ms
tests/responses-create-terminal-states.test.ts ✅ Passed 248ms
tests/responses-create-timeout.test.ts ✅ Passed 244ms
tests/responses-create.test.ts ✅ Passed 565ms
tests/responses-delete.test.ts ✅ Passed 215ms
tests/responses-input-items-errors.test.ts ✅ Passed 542ms
tests/responses-input-items-list.test.ts ✅ Passed 396ms
tests/responses-input-items-options.test.ts ✅ Passed 281ms
tests/responses-input-tokens-count-timeout.test.ts ✅ Passed 242ms
tests/responses-input-tokens-count.test.ts ✅ Passed 185ms
tests/responses-malformed-inputs.test.ts ✅ Passed 3.001s
tests/responses-not-found-errors.test.ts ✅ Passed 259ms
tests/responses-parse.test.ts ✅ Passed 463ms
tests/responses-retrieve-retries.test.ts ✅ Passed 318ms
tests/responses-retrieve.test.ts ✅ Passed 240ms
tests/responses-stored-method-errors.test.ts ✅ Passed 538ms
tests/retry-behavior.test.ts ✅ Passed 3.053s
tests/sdk-error-shape.test.ts ✅ Passed 268ms

View OkTest run #34417819162

SDK merge (efde8ac65262) · head (3fbd4ac29d4c) · base (2d4b97cc84d5) · OkTest (08ec4299e769)

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Castiron custom code

✅ No new custom-code files detected.

36 mixed files remain; 2 existing customizations changed.

Compared 2d4b97cc84d53fbd4ac29d4c. Generated baselines verified.

File Result Current custom patch
scripts/castiron/custom_code_report.py Existing customization changed +146 / −31
scripts/castiron/test_custom_code_report.py Existing customization changed +346 / −32
34 existing customizations unchanged
  • api.md
  • scripts/castiron/README.md
  • src/openai/init.py
  • src/openai/_client.py
  • src/openai/resources/audio/transcriptions.py
  • src/openai/resources/audio/translations.py
  • src/openai/resources/beta/beta.py
  • src/openai/resources/beta/responses/responses.py
  • src/openai/resources/beta/threads/runs/runs.py
  • src/openai/resources/beta/threads/threads.py
  • src/openai/resources/chat/completions/completions.py
  • src/openai/resources/embeddings.py
  • src/openai/resources/files.py
  • src/openai/resources/realtime/realtime.py
  • src/openai/resources/responses/responses.py
  • src/openai/resources/uploads/uploads.py
  • src/openai/resources/vector_stores/file_batches.py
  • src/openai/resources/vector_stores/files.py
  • src/openai/resources/videos.py
  • src/openai/resources/webhooks/init.py
  • src/openai/resources/webhooks/webhooks.py
  • src/openai/types/chat/init.py
  • src/openai/types/chat/chat_completion_message_tool_call.py
  • src/openai/types/fine_tuning/fine_tuning_job_integration.py
  • src/openai/types/responses/init.py
  • src/openai/types/responses/response.py
  • src/openai/types/responses/response_function_web_search.py
  • src/openai/types/responses/response_function_web_search_param.py
  • src/openai/types/responses/responses_client_event.py
  • src/openai/types/responses/responses_client_event_param.py
  • src/openai/types/responses/tool.py
  • src/openai/types/responses/tool_param.py
  • src/openai/types/webhooks/init.py
  • tests/api_resources/test_videos.py

A changed generated baseline means this report cannot reliably identify which handwritten lines changed.

Inspect the custom-code diff

Download the exact patch produced by this run (requires repository access):

gh run download 34417845521 --repo openai/openai-python \
  --name castiron-custom-code-34417845521-1 --dir /tmp/castiron-custom-code-34417845521-1
git apply --stat /tmp/castiron-custom-code-34417845521-1/custom-code.patch
cat /tmp/castiron-custom-code-34417845521-1/custom-code.patch

Or reproduce it from an SDK checkout containing the vendored reporter:

git fetch --no-tags origin 2d4b97cc84d5c3ca051cc2ac2d8a6c9928b4d5f0 3fbd4ac29d4c0bb8fe0c41155b23d1763b6c95e4
python3 scripts/castiron/custom_code_report.py report \
  --base 2d4b97cc84d5c3ca051cc2ac2d8a6c9928b4d5f0 \
  --head 3fbd4ac29d4c0bb8fe0c41155b23d1763b6c95e4 --fetch --require-head-hash --public \
  --out /tmp/castiron-custom-code-3fbd4ac29d4c
cat /tmp/castiron-custom-code-3fbd4ac29d4c/custom-code.patch

This is the current full custom patch for mixed files, not an attribution of only the handwritten lines changed by this PR.

Full report and patch

@markstuart-oai markstuart-oai 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.

Reviewed with two independent reviewers. No actionable findings. The fork owner/branch fallback discovers candidates without replacing the existing live PR, exact-head, target/base and ambiguity checks. Trusted-main evaluation and publication freshness checks remain intact, and the shared Python helper keeps discovery consistent across computation and publication.

Validation: the 53-test Castiron suite passed with one optional compiler-contract test skipped; reporter digest and whitespace checks passed. I did not independently run Ruff/mypy/Pyright or live fork/workflow checks. Normal SDK CODEOWNER review remains required.

@jbeckwith-oai jbeckwith-oai 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.

Reviewed exact head 3fbd4ac. No findings. The owner/branch lookup is used only after direct workflow-run and commit associations are empty; trusted report generation and passing status publication still re-read live PR data and require the exact head, expected target repository, current main base, and a unique match. Empty, stale, wrong-target, or ambiguous fallback results fail closed. The protected-main reporter and least-privilege publisher split remain intact.

Validation: complete security diff review of all six changed files found no issues; the 53-test Castiron suite passed locally with one optional test skipped; Python compilation, reporter digest, and diff checks passed; exact-head CI is green.

@marcuswood-oai
marcuswood-oai added this pull request to the merge queue Sep 9, 2026
Merged via the queue into main with commit 397ea08 Sep 9, 2026
26 checks passed
@marcuswood-oai
marcuswood-oai deleted the codex/fix-castiron-pr-association branch September 9, 2026 23:52
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.

3 participants