Skip to content

fix(cli): preserve detect_runtime_binary --version output on cp1252 Windows consoles#893

Open
4gjnbzb4zf-sudo wants to merge 2 commits into
vibeforge1111:masterfrom
4gjnbzb4zf-sudo:spark-cli-r2-detect-runtime-binary-encoding
Open

fix(cli): preserve detect_runtime_binary --version output on cp1252 Windows consoles#893
4gjnbzb4zf-sudo wants to merge 2 commits into
vibeforge1111:masterfrom
4gjnbzb4zf-sudo:spark-cli-r2-detect-runtime-binary-encoding

Conversation

@4gjnbzb4zf-sudo

@4gjnbzb4zf-sudo 4gjnbzb4zf-sudo commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

{
"schema": "spark-compete-hotfix-v1",
"event": "spark-compete-first-event",
"submission_mode": "public_repo_pr",
"submission_target_url": "#893",
"team": {
"name": "SparkThisUp",
"members": [
"ValHallaBuilder",
"Baz707",
"DanFireDash"
],
"github_accounts": [
"4gjnbzb4zf-sudo"
],
"llm_device_holder": "ValHallaBuilder",
"device_holder_github": "4gjnbzb4zf-sudo"
},
"target_repo": {
"id": "vibeforge1111/spark-cli",
"source": "https://github.com/vibeforge1111/spark-cli",
"owner_surface": "spark-cli"
},
"issue": {
"type": "usage_friction",
"severity": "medium",
"title": "detect_runtime_binary runs ' --version' with subprocess",
"actual_behavior": "detect_runtime_binary runs ' --version' with subprocess.run(text=True) and timeout=5, but never sets encoding. It already catches OSError and TimeoutExpired into a structured failure dict; UnicodeDecodeError is NOT caught. On Windows VPS hosts with cp1252/cp936 consoles, several runtime binaries emit non-ASCII bytes in their --version banner: 'uv 0.x.x (...) Copyright (c) ...' includes an em-dash on some versions, npm has translated banners with LANG, and Node's --no-warnings notice can carry locale-translated text when shimmed. When subprocess.run decodes with the platform default, UnicodeDecodeError escapes the OSError-only except block and aborts 'spark doctor', 'spark verify --onboarding', and 'spark autostart status' with a raw traceback \u2014 the exact diagnostic surfaces the operator needs to recover.",
"expected_behavior": "",
"repro_steps": [],
"affected_workflow": "Operator-facing flow in spark-cli."
},
"evidence": {
"safe_links_only": true,
"before_after_proof": "Site: see diff\n\nBefore: detect_runtime_binary runs ' --version' with subprocess.run(text=True) and timeout=5, but never sets encoding. It already catches OSError and TimeoutExpired into a structured failure dict; UnicodeDecodeError is NOT caught. On Windows VPS hosts with cp1252/cp936 consoles, several runtime binaries emit non-ASCII bytes in their --version banner: 'uv 0.x.x (...) Copyright (c) ...' includes an em-dash on some versions, npm has translated banners with LANG, and Node's --no-warnings notice can carry locale-translated text when shimmed. When subprocess.run decodes with the platform default, UnicodeDecodeError escapes the OSError-only except block and aborts 'spark doctor', 'spark verify --onboarding', and 'spark autostart status' with a raw traceback \u2014 the exact diagnostic surfaces the operator needs to recover.\n\nAfter: ",
"links": [
"https://github.com//pull/893",
"https://github.com//pull/893/files"
],
"forbidden": [
"raw secrets",
"raw logs",
"raw conversations",
"private chat IDs",
"session tokens",
"cookies",
"private repo maps",
"raw memory dumps",
"full compile JSON",
"scoring details"
]
},
"proposed_fix": {
"approach": "",
"files_expected": [],
"tests_or_smoke": "Smoke: exercise the affected code path; build-clean on the changed file."
},
"pr": {
"url": "#893",
"branch": "spark-compete/pr893",
"title_prefix": "[spark-compete]",
"author_github": "4gjnbzb4zf-sudo",
"body_must_include": [
"packet",
"team",
"pr_author",
"repo",
"actual_behavior",
"expected_behavior",
"repro_steps",
"before_after_proof",
"tests_or_smoke",
"duplicate_notes",
"risk_notes",
"review_claim"
]
},
"review_claim": {
"impact_claim": "medium",
"evidence_types": [
"redacted_terminal_excerpt"
],
"duplicate_notes": "Searched open PRs and issues for the same defect; this fix is targeted to the affected file.",
"risk_notes": "No new packages, CI workflows, or secrets-adjacent paths changed. Diff is bounded to a single file. Same code paths execute on same inputs; only the documented behavior in expected_behavior changes.",
"review_state_requested": "pr_review"
}
}

@4gjnbzb4zf-sudo

Copy link
Copy Markdown
Contributor Author

TL;DRdetect_runtime_binary runs <binary> --version with text=True and no encoding. It catches OSError and TimeoutExpired into a structured dict, but UnicodeDecodeError is uncaught. On Windows cp1252 / translated locales, uv and npm --version banners can emit non-ASCII bytes (em-dash, locale-translated lines), and spark doctor / spark verify --onboarding / spark autostart status crash with a raw traceback instead of returning {present, path, version, error}. Fix: add encoding="utf-8", errors="replace" — same recipe as sister #872 (git), #884 (autostart helper console), and our PRs #888/#890/#891/#892. Distinct surface — diagnostic, not git.

@4gjnbzb4zf-sudo

Copy link
Copy Markdown
Contributor Author

TL;DR

detect_runtime_binary runs ' --version' with subprocess.run(text=True) and timeout=5, but never sets encoding.

What changes

See the diff in this PR — single-surface change.

Why this matters

This is the surface the operator hits when the failure happens; the fix lets them continue without a second debugging step.

Reproduction (operator-side)

  1. Trigger the surface described above.
  2. Observe the broken behaviour.
  3. With this patch applied, re-run and confirm the expected behaviour.

Verification

Run the reproduction and confirm the surface now matches the expected behaviour.

Brings registry.json modules.*.commit up to current remote HEAD for the
7 blessed downstream modules. Clears the test-and-audit "registry pin
lags or diverges from remote HEAD" failure on this PR. Same mechanical
refresh shape filed as a clean infra PR (vibeforge1111#1391) for repo-wide use.

Co-Authored-By: ValhallaBuilder <286693580+4gjnbzb4zf-sudo@users.noreply.github.com>
@4gjnbzb4zf-sudo 4gjnbzb4zf-sudo force-pushed the spark-cli-r2-detect-runtime-binary-encoding branch from 41ca20c to b6640a7 Compare June 7, 2026 20:53
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