Fix Unicode GitHub file encoding - #26
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
btoaRoot cause
Hypervibe v0.1.4 generated deployment workflow and pull-request-template content containing characters such as
—, smart quotes, and🚧. The GitHub adapter passed the JavaScript string directly tobtoa, which only accepts byte-range characters and threwInvalidCharacterError: Invalid characterbefore the first repository-file write.The read paths also used
atobdirectly, returning mojibake for UTF-8 content and causing managed-file comparisons to drift after a successful write.Impact
The failed HLS apply stopped safely before repository files, settings, secrets, bindings, or the applied contract marker converged. With this fix, generated Unicode workflows and templates round-trip correctly through GitHub's Base64 Contents API.
Verification
npm test -- --configLoader runner src/adapters/providers/github/__tests__/github.adapter.test.ts— 9 tests passednpm test -- --configLoader runner— 104 files, 818 tests passednpm run typechecknpm run buildnpm_config_cache=/private/tmp/hypervibe-npm-cache npm run prepublish-checkgit diff --checkRisks and follow-up
The change is limited to GitHub Contents API text encoding/decoding and preserves ASCII behavior. After merge, release a patch version, rebuild/restart the MCP, create a fresh HLS production plan, and resume the review-gated infrastructure apply. The failed plan must not be reused.