Skip to content

test(prepare-pr): pin utf-8 on 4 subprocess calls - #27142

Merged
javenciu merged 1 commit into
mainfrom
test/subprocess-encoding-prepare-pr-local-review
Nov 1, 2026
Merged

javenciu merged 1 commit into
mainfrom
test/subprocess-encoding-prepare-pr-local-review

Conversation

@javenciu

@javenciu javenciu commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Problem / Motivation

Goal: A text-mode subprocess call in 1 file decodes its child's output as UTF-8 on every platform instead of the locale's code page.

The subprocess-encoding gate counts, per file, the sites the repo still tolerates. This PR retires: 4 test/test_prepare_pr_local_review.py.

Why it matters

Without an explicit encoding, subprocess.run(..., text=True) decodes with the locale code page, which on Windows is not UTF-8: non-ASCII output becomes mojibake or raises UnicodeDecodeError (#5249). The repo lists every such call per file in .github/subprocess-encoding-baseline.txt and the gate lets each count only shrink.

Not a goal

  • Calls in files not listed here (each is its own one-mechanism PR).
  • Changing what any child process does or how its output is used.
  • Any refactor or reformatting of untouched lines.

What changed (motivation → approach → change)

Each call below now passes encoding="utf-8" beside its text=True, and the file's baseline line is removed. A call whose child is Python (sys.executable) also starts it with -X utf8, so the child writes UTF-8 on every platform and the pinned decoder matches it; without UTF-8 mode, a Python child on Windows writes its console code page.

  • test/test_prepare_pr_local_review.py:121: the run(...) call in _git
  • test/test_prepare_pr_local_review.py:743: the run(...) call in test_cli_exits_40_on_a_contract_that_escapes_the_repo
  • test/test_prepare_pr_local_review.py:1624: the run(...) call in test_cli_exits_40_when_the_prompt_assembly_is_gone
  • test/test_prepare_pr_local_review.py:1721: the run(...) call in test_cli_json_summary_is_machine_readable
  • .github/subprocess-encoding-baseline.txt: removed 4 test/test_prepare_pr_local_review.py.

Backwards compatibility

Compatible: test-only change
Removes nothing: a baseline entry is a tolerance the gate stops needing, not a capability.

Tests

  • Red: with the file put back to main and the baseline line still deleted, RATCHET_SCOPE_WHOLE_TREE=1 python3 scripts/check_subprocess_encoding.py exits 1: ::error file=test/test_prepare_pr_local_review.py::text-mode subprocess call without encoding= (decodes with the ....
  • Green: with the edit, python3 scripts/check_subprocess_encoding.py --test && python3 scripts/check_subprocess_encoding.py exit 0.
  • test/test_prepare_pr_local_review.py: 140 passed with the edit
  • flake8 clean on the touched file; the repo's baselined black gate passes.

Manual verification

N/A: the subprocess-encoding gate checks the changed call directly.

Screenshots / video

Why no screenshot: nothing renders; this change touches test code and a CI baseline only.

No issue exists; burn-down of the subprocess-encoding gate baseline (precedents #20146, #20142, #20147).

Pin UTF-8 on the text-mode subprocess call(s) in test/test_prepare_pr_local_review.py and drop the file's row
from .github/subprocess-encoding-baseline.txt, so the subprocess-encoding gate stops tolerating it.
@javenciu
javenciu requested review from a team and KiroCrewCaptain as code owners November 1, 2026 15:38
@javenciu
javenciu requested a review from iamwhatever November 1, 2026 15:38
@github-actions github-actions Bot added the readiness: checking Automated validation is still running label Nov 1, 2026
@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

First Principles Review (Opus 5.5) — ⏭️ skipped

Revision a78fbbc2301fe42c23cf44b7219aee025c8b7e60 ships no reviewable capability (docs, tests or generated files only), so there is nothing to inventory. Does not block merge.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

UX Review (Opus 5.5) — ⏭️ skipped

Revision a78fbbc2301fe42c23cf44b7219aee025c8b7e60 touches no user-facing surface (no changes under website/ or committed screenshots), so the UX review was skipped. Does not block merge.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Design Review (Opus 5.5) — ✅ PASS

Design-level review of a78fbbc2301fe42c23cf44b7219aee025c8b7e60 — updated in place on each push. A BLOCK verdict blocks PR readiness; PASS does not.

Design-Verdict: PASS

Nothing to check. This is a test-only encoding pin that matches the earlier baseline burn-down PRs and removes no capability.

[DESIGN-REVIEWED] a78fbbc

Description read

[DESCRIPTION-READ] 5033189eaa2d20d84428c41b478774a955eda8b40a137e8e14e21d4d98c98034

That sha256 names everything this verdict read: the PR description, plus the 1 evidence file(s) the workflow collected from it and handed this review. It covers that evidence because the media strip replaces every attachment URL with the same placeholder, so an edit swapping one attachment for another would leave the description's captured text identical while what this review judged changed. Recompute it with .github/scripts/pr-description-capture.sh over the same inputs; if it differs, the description or that evidence changed after this verdict was formed and any finding drawn from either is unproven.

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

GPT 6.1 Review — ✅ no blocking findings

GPT 6.1 completed its review of a78fbbc2301fe42c23cf44b7219aee025c8b7e60 and found no blocking issues.

This comment is updated in place on each push.

Review details

No findings.
[GPT-REVIEWED] a78fbbc

False positive or not applicable? A repository writer can comment:
/ai-review override gpt a78fbbc2301fe42c23cf44b7219aee025c8b7e60 false-positive: <reason, 20 to 500 characters>

@github-actions

github-actions Bot commented Nov 1, 2026

Copy link
Copy Markdown
Contributor

Opus 5.5 Review — ✅ no blocking findings

Reviewed a78fbbc2301fe42c23cf44b7219aee025c8b7e60 — this comment is updated in place on each push.

Review details

No findings.

[OPUS-REVIEWED] a78fbbc

Verdict parsed from the review's SHA-scoped output markers for commit a78fbbc2301fe42c23cf44b7219aee025c8b7e60.

False positive or not applicable? A repository writer can comment:
/ai-review override fable a78fbbc2301fe42c23cf44b7219aee025c8b7e60 false-positive: <reason, 20 to 500 characters>

@github-actions github-actions Bot added readiness: action required A blocking check or review needs attention readiness: passed Eligible automated validation passed for the current revision and removed readiness: checking Automated validation is still running readiness: action required A blocking check or review needs attention labels Nov 1, 2026
@javenciu
javenciu enabled auto-merge (squash) November 1, 2026 17:18

@KiroCrewCaptain KiroCrewCaptain left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Tier 1 auto-approve: test (2 files). Criteria: no conflict, no requested changes, security path denylist clean, design-doc gate clean, security checklist all-NO, no reviewer-lane findings, readiness signal fresh for this head SHA, declared category matches the diff. Category: test-only change: pins utf-8 on four test subprocess calls, and drops the file from the subprocess-encoding baseline.

@javenciu
javenciu merged commit c1a470e into main Nov 1, 2026
148 of 150 checks passed
@javenciu
javenciu deleted the test/subprocess-encoding-prepare-pr-local-review branch November 1, 2026 18:06
@github-actions github-actions Bot removed the readiness: passed Eligible automated validation passed for the current revision label Nov 1, 2026
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.

2 participants