Skip to content

fix(scheduler): accept safe Unicode branch refs - #696

Open
seonghobae wants to merge 3 commits into
mainfrom
codex/scheduler-unicode-ref-current
Open

fix(scheduler): accept safe Unicode branch refs#696
seonghobae wants to merge 3 commits into
mainfrom
codex/scheduler-unicode-ref-current

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 1, 2026

Copy link
Copy Markdown
Contributor

Summary

  • accept Git-valid Unicode branch names in the central scheduler’s structured argv/JSON dispatch fields
  • retain conservative rejection of ASCII shell metacharacters, Unicode control/separator characters, dot components, .lock, @{, .., and repeated slashes
  • pin the exact production branch name that broke the organization sweep, plus a Korean ref and unsafe Unicode cases

Production evidence

The current-main organization sweep failed in run 30684158698 while processing ContextualWisdomLab/codec-carver:

ValueError: invalid git ref: '🎨-palette-ux-improvement-13325911538352561627'

git check-ref-format --branch accepts that exact ref. The scheduler passes refs as structured subprocess arguments and JSON payload fields, so an ASCII-only allowlist is not required for shell safety.

Validation

  • python3 -m pytest -q tests/test_pr_review_merge_scheduler.py — 110 passed
  • python3 -m ruff check scripts/ci/pr_review_merge_scheduler.py tests/test_pr_review_merge_scheduler.py — passed
  • git diff --check origin/main...HEAD — passed
  • exact production ref accepted by both git check-ref-format --branch and validate_git_ref

Summary by CodeRabbit

  • 개선 사항

    • 브랜치 및 Git ref 이름에 이모지, 한글 등 유니코드 문자를 사용할 수 있습니다.
    • 제어 문자, 공백, zero-width space와 같은 안전하지 않은 문자는 계속 거부됩니다.
    • .lock으로 끝나거나 하이픈으로 시작하는 ref는 사용할 수 없습니다.
  • 테스트

    • 다양한 유효·무효 Git ref 형식에 대한 검증 범위를 확대했습니다.

@coderabbitai

coderabbitai Bot commented Aug 1, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@seonghobae, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 50 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: c8dcee64-a829-481d-9f22-39967bcc9ad7

📥 Commits

Reviewing files that changed from the base of the PR and between 27226f6 and 6d34d64.

📒 Files selected for processing (3)
  • .github/workflows/scheduled-security-scan.yml
  • scripts/ci/pr_review_merge_scheduler.py
  • tests/test_pr_review_merge_scheduler.py
📝 Walkthrough

Walkthrough

Git ref 검증이 Unicode 문자를 허용하도록 변경되었습니다. 제어 문자, 공백 문자, .lock 접미사, 선행 -는 거부됩니다. 검증 및 workflow dispatch 테스트가 Unicode ref를 사용하도록 확장되었습니다.

Changes

Git ref 검증

Layer / File(s) Summary
검증 로직 및 통합 테스트
scripts/ci/pr_review_merge_scheduler.py, tests/test_pr_review_merge_scheduler.py
validate_git_ref가 Unicode 문자를 문자별로 검사합니다. ASCII에서는 영숫자와 허용된 ref 문자를 사용합니다. 제어 문자, 공백 문자, 선행 -, 경로 구성 요소의 .lock 접미사를 거부합니다. 유효·무효 ref와 Unicode head ref의 dispatch payload 검증을 추가했습니다.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed 제목은 안전한 Unicode Git 브랜치 ref를 허용하는 핵심 변경을 정확하고 간결하게 설명합니다.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/scheduler-unicode-ref-current

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

@seonghobae
seonghobae enabled auto-merge (squash) August 1, 2026 06:27
@seonghobae seonghobae moved this from Todo to In Progress in naruon Platform Roadmap Aug 1, 2026
@seonghobae

Copy link
Copy Markdown
Contributor Author

Current-head operational regression evidence for 27226f63a9f8ac35d566047d961e7175ee969562:

  • Scheduled organization sweep run https://github.com/ContextualWisdomLab/.github/actions/runs/30684158698 failed on ContextualWisdomLab/codec-carver while dispatching OpenCode for the legal live branch 🎨-palette-ux-improvement-13325911538352561627.
  • Exact exception: ValueError: invalid git ref: '🎨-palette-ux-improvement-13325911538352561627' from dispatch_opencode_review -> validate_git_ref.
  • This head now preserves that exact ref through the central repository_dispatch payload regression test, not only the validator unit case.

Local current-head validation:

  • python -m pytest -q tests/test_pr_review_merge_scheduler.py110 passed
  • focused live-ref dispatch and validation cases → 2 passed
  • Ruff on changed Python files → pass
  • git diff --check → pass

No active Actions runs remain for superseded head 3732396d620956a8530ede8623d5c5f36d2e15a2.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 2, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@opencode-agent
opencode-agent Bot force-pushed the codex/scheduler-unicode-ref-current branch from 27226f6 to b906b44 Compare August 3, 2026 05:17

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Copy link
Copy Markdown
Contributor Author

@coderabbitai review

@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@opencode-agent
opencode-agent Bot force-pushed the codex/scheduler-unicode-ref-current branch from b906b44 to f9d15e0 Compare August 3, 2026 17:21

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Re-evaluate the exact current head after the latest governance and security checks complete.

@opencode-agent
opencode-agent Bot disabled auto-merge August 3, 2026 17:26

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head f9d15e0db11e286b091d61b2557f17804cb5e2f7.

  • Head SHA: f9d15e0db11e286b091d61b2557f17804cb5e2f7

  • Workflow run: 30837286675

  • Workflow attempt: 1

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["CI script: pr_review_merge_scheduler.py"]
  S1 --> I1["review and security gate shell path"]
  I1 --> R1["Review risk: CI script: pr_review_merge_scheduler.py"]
  R1 --> V1["bash -n plus Strix self-test"]
  Evidence --> S2["Test: test_pr_review_merge_scheduler.py"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: test_pr_review_merge_scheduler.py"]
  R2 --> V2["targeted test run"]
Loading

@opencode-agent

opencode-agent Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

OpenCode Review Overview

  • Head SHA: 6d34d6445575da00a91505a4edcf8914a8a090d6
  • Workflow run: 30845590617
  • Workflow attempt: 1
  • Gate result: APPROVE (exit 0)

Changed-File Evidence Map

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

@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 cannot approve yet because required coverage evidence did not pass.

Review outcome

1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence

  • Problem: The required coverage-evidence job result was failure, so OpenCode cannot establish approval sufficiency for this head.

  • Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.

  • Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports success with required evidence or explicit no-source not-applicable evidence.

  • Regression test: Keep the approval branch checking needs.coverage-evidence.result == success before posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present.

  • Result: REQUEST_CHANGES

  • Reason: coverage-evidence result was failure, so required test/docstring evidence was not proven for current head f9d15e0db11e286b091d61b2557f17804cb5e2f7.

  • Head SHA: f9d15e0db11e286b091d61b2557f17804cb5e2f7

  • Workflow run: 30837286675

  • Workflow attempt: 2

Coverage evidence

Coverage Decision

  • Result: FAIL
  • Test evidence: not proven passing
  • Docstring evidence: not proven passing when configured
  • Failure count: 1

Changed-File Evidence Map

flowchart LR
  PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
  Evidence --> S1["CI script: pr_review_merge_scheduler.py"]
  S1 --> I1["review and security gate shell path"]
  I1 --> R1["Review risk: CI script: pr_review_merge_scheduler.py"]
  R1 --> V1["bash -n plus Strix self-test"]
  Evidence --> S2["Test: test_pr_review_merge_scheduler.py"]
  S2 --> I2["regression suite"]
  I2 --> R2["Review risk: Test: test_pr_review_merge_scheduler.py"]
  R2 --> V2["targeted test run"]
Loading

@seonghobae
seonghobae enabled auto-merge (squash) August 3, 2026 19:18
@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review August 3, 2026 19:18

Dismissed as stale after the head moved from f9d15e0 to 6d34d64. The underlying coverage failure was traced to mixed CodeQL action versions in scheduled-security-scan.yml and corrected on the live head. This dismissal does not grant approval; the new head must complete all checks and receive an independent exact-head review.

@opencode-agent
opencode-agent Bot disabled auto-merge August 3, 2026 19:19
@seonghobae
seonghobae dismissed opencode-agent[bot]’s stale review August 3, 2026 19:19

Dismissed as stale after the head moved from f9d15e0 to 6d34d64. The underlying coverage failure was traced to mixed CodeQL action versions in scheduled-security-scan.yml and corrected on the live head. This dismissal does not grant approval; the new head must complete all checks and receive an independent exact-head review.

@seonghobae seonghobae left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Exact-head re-review requested. The root cause of the prior coverage failure was the mixed CodeQL action refs in scheduled-security-scan.yml; the current head aligns them at v4.37.4. All direct current-head security workflows are green and there are no unresolved review threads.

Copy link
Copy Markdown
Contributor Author

Dependency note: this branch now includes the scheduled-security-scan.yml portion of #723 because the mixed CodeQL action refs on main caused the exact-head coverage contract to fail before the scheduler change could be reviewed. #723 still carries the remaining codeql-pr.yml alignment and should not be closed as fully superseded.

@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 bounded evidence and found no blocking issues.

Findings

No blocking findings.

Summary

Inspected changed files .github/workflows/scheduled-security-scan.yml, scripts/ci/pr_review_merge_scheduler.py, tests/test_pr_review_merge_scheduler.py. Approval sufficiency: PR intent (fix(scheduler): accept safe Unicode branch refs) is confirmed by the diff and dispatch tests; evidence affirmatively supports behavior, structure, verification, and compatibility. Verification posture: current-head focused hunks + CodeGraph changed-scope evidence reviewed; Failed GitHub Check evidence reports no completed failed checks for head 6d34d64. Linter/static: no changed-source lint findings; repo test contract python3 -m pytest tests with python 3.12/3.13 workflow versions. TDD/regression: valid/invalid ref tuples (tests/test_pr_review_merge_scheduler.py:165) plus full Unicode dispatch payload assertion (line 1967) cover the regression that broke the sweep. Coverage: Coverage execution evidence reports Result PASS - supported repository test suites passed. Docstring coverage: Coverage execution evidence reports configured repository docstring gates passed or advisory. DAG: base-to-head changed-flow flowchart below (validate_git_ref -> client_payload pr_head_ref -> central workflow dispatch -> OpenCode/Strix workflows; CodeQL init/analyze alignment -> scheduled security scan). PoC/execution: no OPENCODE_EXECUTION_RECEIPT present; evidence is trusted tests, diff, and Coverage PASS. DDD/domain: scheduler dispatch domain unchanged; only ref-validation policy adjusted. CDD/context: central .github workflows context; the scheduled-security-scan portion is a documented dependency of #723 per author note. Similar issues: no similar unresolved issues found in CodeGraph blast radius. Claim/concept check: git-check-ref-format-style component rules (.lock, dot parts, @{, ..) match the implementation and tests. Standards search: git ref-format rules (no component starting with '.', none ending '.lock', no '@{', no '..', no control/space) are mirrored by the bounded branch. Compatibility/convention: GIT_REF_ASCII_SAFE_CHARS and has_unsafe_character follow snake_case repo convention; no new exposed identifiers or API fields. Breaking-change/backcompat: every previously accepted ASCII ref remains accepted; only previously-rejected Unicode/format refs change; CodeQL bump is patch-level v4.37.0->v4.37.4 applied to both init and analyze. Implementation completeness: no placeholder bodies; validator fully implemented and tested. Performance: O(n) per-ref validation on dispatch; no hot path impact. Developer experience: scheduler operators no longer blocked by Unicode branch sweeps; evidence is the dispatch test at tests/test_pr_review_merge_scheduler.py:1967 and Coverage PASS. User experience: non-web surface - CI review-comment/dispatch logs; aligned CodeQL refs avoid mixed-version failures; evidence is the workflow diff and absence of failed checks. Visual/DOM: non-web interaction surface (CLI/workflow review output) reviewed; no DOM changes. Accessibility/i18n: i18n-positive - emoji and Korean branch refs now dispatch correctly; no UI surface affected. Supply-chain/license: codeql-action pinned SHA f205ea1c3313d32999d8d6a48b4f6530d4437b38 (# v4.37.4); checkout/harden-runner refs unchanged; no new dependencies. Packaging: pyproject requires-python >=3.10; str.isascii and unicodedata are stdlib and available; no packaging changes. Security/privacy: injection resistance preserved for structured argv/JSON dispatch (no shell interpolation of refs); no secrets touched; no sequential/exposed identifier surface.

Approval sufficiency: bounded evidence supplied affirmative approval evidence for changed files, coverage/docstring posture, risk surfaces, and current-head verification; approval is not based merely on the absence of known blockers.
Verification posture: CodeGraph evidence was initialized and bounded current-head evidence reviewed for changed-file evidence including .github/workflows/scheduled-security-scan.yml, scripts/ci/pr_review_merge_scheduler.py, tests/test_pr_review_merge_scheduler.py.
Linter/static: workflow/static review evidence is bounded by the current-head GitHub Checks gate and changed-file evidence.
TDD/regression: coverage execution evidence and focused changed hunks were reviewed from bounded-review-evidence.md.
Coverage: coverage execution evidence reports supported repository test suites passed.
Docstring coverage: coverage execution evidence reports configured repository docstring gates passed or docstring coverage was advisory.
DAG: CodeGraph/source-backed behavior map connects .github/workflows/scheduled-security-scan.yml to the affected review, runtime, or workflow path and required checks.
PoC/execution: coverage-evidence job executed on the current head and reported PASS.
DDD/domain: workflow and repository-governance invariants were reviewed against changed files in bounded evidence.
CDD/context: CodeGraph evidence, changed-file history, and focused hunks were reviewed from bounded-review-evidence.md.
Similar issues: changed-file history evidence was reviewed for comparable local precedents.
Claim/concept check: bounded evidence, repository source, current-head workflow evidence, and, where numeric, scientific, statistical, or literature-backed claims are affected, original-paper/formula evidence and parameter-recovery expectations were used for claims.
Standards search: standards and external-source claims require trusted bounded source evidence prepared outside the isolated model process; no evidence-backed standards blocker is present in bounded evidence.
Compatibility/convention: changed workflow/script conventions, object naming, and reserved-word safety for schema/API/config/code surfaces were checked in bounded evidence.
Breaking-change/backcompat: deployment evidence and changed-file history were checked for backward-compatibility risk.
Performance: changed surfaces were checked for performance risk in bounded evidence.
Developer experience: changed automation, review, test, setup, and maintenance surfaces were checked for helpful or obstructive DX impact in bounded evidence.
User experience: connected user, operator, API, CLI, documentation, review-comment, status-check, rendering, and workflow-reader behavior was checked for contradictions against code, docs, and tests in bounded evidence.
Visual/DOM: deterministic repair does not infer browser runtime execution; source-backed DOM/UI evidence and trusted workflow receipts were reviewed when present, and non-web surfaces used API/CLI/log/docs/workflow evidence instead.
Accessibility/i18n: accessibility, localization, and human-readable text surfaces were checked where UI, CLI, API message, docs, logs, or review text changed.
Supply-chain/license: dependency, package, model, container, and external-tool changes were checked in bounded evidence.
Packaging: package, build, test, lint, and security contracts were checked in bounded evidence.
Security/privacy: workflow-token, review-gate, and repository-automation security/privacy boundaries were checked in bounded evidence.

Adversarial validation

{"status":"passed","probes":[{"path":"scripts/ci/pr_review_merge_scheduler.py","line":561,"hypothesis":"The rewritten validate_git_ref lets an invalid ref containing a .lock component or a dot component pass through into the dispatch payload.","attack_or_counterexample":"ref='feature/main.lock' (git refuses slash-separated components ending in .lock) and 'feature/.tmp/main' (component starting with a dot).","evidence":"Trusted source trace at scripts/ci/pr_review_merge_scheduler.py:561: the bounded branch splits the ref on '/' and rejects any part that is '.', starts with '.', or ends with '.lock', so 'feature/main.lock' and 'feature/.tmp/main' raise ValueError; the trusted changed test at tests/test_pr_review_merge_scheduler.py:171-187 includes both in the bad_ref tuple asserting pytest.raises(ValueError), and Coverage execution evidence reports the supported repository test suite passed. source-line-sha256=d082b2a1c69b618aaf79212e21df24fcd947cb0fd445228a3711a141e47953d5","outcome":"falsified"},{"path":"tests/test_pr_review_merge_scheduler.py","line":165,"hypothesis":"The fix still rejects the exact Unicode production branch that broke the organization sweep, so the PR fails its stated goal.","attack_or_counterexample":"ref='🎨-palette-ux-improvement-13325911538352561627' (emoji category So, allowed) and '기능/달력-개선' (Korean Lo letters, no C/Z category).","evidence":"Trusted source trace at tests/test_pr_review_merge_scheduler.py:165: the valid_ref tuple asserts validate_git_ref returns both refs unchanged, and the trusted dispatch test at tests/test_pr_review_merge_scheduler.py:1967 asserts json.loads(dispatch_calls[1][1])['client_payload']['pr_head_ref'] equals the Unicode head_ref through dispatch_strix_evidence/dispatch_opencode_review; Coverage execution evidence reports the supported repository test suite passed. source-line-sha256=e4b043a376bc1595000a813fbdd53d4ccb49d69344d563ff36c2f9ee94376cbc","outcome":"falsified"},{"path":".github/workflows/scheduled-security-scan.yml","line":93,"hypothesis":"The CodeQL steps keep mixed action refs (init and analyze at different versions), re-triggering the exact-head coverage/workflow failure this PR claims to fix.","attack_or_counterexample":"Compare both github/codeql-action/init and github/codeql-action/analyze pins in the changed hunk at scheduled-security-scan.yml:93-100.","evidence":"Trusted changed diff at .github/workflows/scheduled-security-scan.yml:93-100 pins both init and analyze to the same SHA f205ea1c3313d32999d8d6a48b4f6530d4437b38 (# v4.37.4), removing the mixed v4.37.0 refs that previously failed the exact-head coverage contract (author conversation note at 2026-08-03T19:19:33Z); Coverage execution evidence reports Result PASS and Failed GitHub Check evidence reports no completed failed checks for head 6d34d6445575da00a91505a4edcf8914a8a090d6. source-line-sha256=20081fe69905f85a4909cb816fb14f18fb35c075a52641678fe8082c633e5f0a","outcome":"falsified"}],"residual_risk":"Unicode format characters (Cf category, e.g. ZWJ used in some emoji sequences) are conservatively rejected, so exotic emoji ZWJ-joined branch names would still fail validation; the removed module constant GIT_REF_RE has no covering cross-file usage evidence, low risk because the scheduler is invoked as a script."}
  • Result: APPROVE
  • Reason: Verified the Unicode-capable ref validator preserves conservative rejection of metacharacters, control/separator Unicode, dot components, .lock, @{, .., // and HEAD; CodeQL init/analyze pins are aligned at v4.37.4; trusted tests and Coverage execution evidence PASS; no failed checks and no unresolved threads.
  • Head SHA: 6d34d6445575da00a91505a4edcf8914a8a090d6
  • Workflow run: 30845590617
  • Workflow attempt: 1

@opencode-agent
opencode-agent Bot enabled auto-merge (squash) August 3, 2026 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

1 participant