Skip to content

fix(cli): preserve update_module_source git stderr on cp1252 Windows consoles across all 5 git calls#890

Open
4gjnbzb4zf-sudo wants to merge 2 commits into
vibeforge1111:masterfrom
4gjnbzb4zf-sudo:spark-cli-r2-update-module-git-encoding
Open

fix(cli): preserve update_module_source git stderr on cp1252 Windows consoles across all 5 git calls#890
4gjnbzb4zf-sudo wants to merge 2 commits into
vibeforge1111:masterfrom
4gjnbzb4zf-sudo:spark-cli-r2-update-module-git-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": "#890",
"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": "update_module_source is the central drive of 'spark update ' for pinned-commit modules",
"actual_behavior": "update_module_source is the central drive of 'spark update ' for pinned-commit modules. It runs five sequential subprocess.run(text=True) git commands with no encoding: status --porcelain, rev-parse HEAD (twice), fetch --depth=1 origin , verify-commit, checkout --detach. Every one of them decodes git stderr/stdout with the Windows console default. When git returns translated error text (LANG=de_DE/ja_JP/zh_CN), a tag containing non-ASCII bytes, or a verify-commit message that includes a non-ASCII signing-key UID, decoding with cp1252 raises UnicodeDecodeError and the function never reaches the shaped 'working tree has local changes' / 'checkout mismatch' returns. Operators see a raw crash mid-update and don't know which step failed. Sister fix #872 closed run_git_or_exit with the same recipe; this is the next pinned-commit code path that needs it.",
"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: update_module_source is the central drive of 'spark update ' for pinned-commit modules. It runs five sequential subprocess.run(text=True) git commands with no encoding: status --porcelain, rev-parse HEAD (twice), fetch --depth=1 origin , verify-commit, checkout --detach. Every one of them decodes git stderr/stdout with the Windows console default. When git returns translated error text (LANG=de_DE/ja_JP/zh_CN), a tag containing non-ASCII bytes, or a verify-commit message that includes a non-ASCII signing-key UID, decoding with cp1252 raises UnicodeDecodeError and the function never reaches the shaped 'working tree has local changes' / 'checkout mismatch' returns. Operators see a raw crash mid-update and don't know which step failed. Sister fix #872 closed run_git_or_exit with the same recipe; this is the next pinned-commit code path that needs it.\n\nAfter: ",
"links": [
"https://github.com//pull/890",
"https://github.com//pull/890/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": "#890",
"branch": "spark-compete/pr890",
"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"
}
}

…consoles across status/rev-parse/fetch/verify/checkout
@4gjnbzb4zf-sudo

Copy link
Copy Markdown
Contributor Author

TL;DRupdate_module_source runs five sequential git subprocesses for pinned-commit upgrades (status, rev-parse, fetch, verify-commit, checkout, rev-parse) all with text=True and no encoding. On Windows cp1252 / locale-translated git, any of those calls can emit non-ASCII stderr (signer UID with a diacritic, translated "Could not lock ref", non-ASCII tag) that the platform default codec cannot decode — summarize_command_output never sees the bytes, UnicodeDecodeError escapes mid-update. Sister #872 already closed run_git_or_exit; this PR closes the next pinned-commit code path with the same encoding="utf-8", errors="replace" recipe across all five calls. Pair with #888 (verify_pinned_commit, install chain).

@4gjnbzb4zf-sudo

Copy link
Copy Markdown
Contributor Author

TL;DR

update_module_source is the central drive of 'spark update ' for pinned-commit modules.

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-update-module-git-encoding branch from b621049 to 2417e5b 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