Harden synchronization and release verification - #9
Merged
Merged
Conversation
Remove redundant branches from sync and GitHub reference checks, and keep the final exclusion set in scope across push retries.
…ralize commit.gpgsign and tag.gpgsign via command-line arguments and safety configuration so global signing settings do not prompt or break non-interactive synchronization.
Propagate the root timeout through Git subprocesses, preserve deadline errors, and document the --timeout flag.
Keep Git, data-directory, lock, and worktree diagnostics available in unlinked workspaces.
… Handle transient ERROR_SHARING_VIOLATION and ERROR_ACCESS_DENIED errors in MoveFileEx with bounded retries and backoff.
Validate total path length alongside component limits before accepting managed paths.
…t Version to "dev" and only adopt debug.ReadBuildInfo when Version is "dev". This prevents runtime build metadata from overwriting ldflags-injected versions.
…p Runner.Timeout from gitexec and rely solely on the caller's context to manage deadlines across child git processes. Release the command timeout cancel function deterministically in Execute and add tests for deadline propagation and exit code mapping.
Use typed Windows errors and return the caller's context error consistently after cancellation.
…wner and repo components to lowercase when resolving GitHub repository paths so references are case-insensitive.
Record approved public remotes in link state, report whether probing occurred, and run probes outside the workspace.
… probe Add workspace and link-state warnings when link checks are skipped in non-git or unlinked directories. Deduplicate the git version check to a single process spawn, and use PID-scoped lock probe files to prevent race conditions during concurrent runs.
…ce and clone roots on Windows during add and sync instead of rejecting long paths globally.
…ess Pass candidate paths over stdin with -z, --verbose, and --non-matching to verify all exclusions in one Git process.
Create workspace files with Git-style modes filtered by umask while keeping recovery copies owner-only.
Normalize error codes, emit empty arrays instead of null, and support JSON output for version.
Align the README and wiki with the JSON contract, audit follow-ups, and checksum-plus-attestation releases.
Rename regression tests so their names describe the behavior they protect.
Parse fetched refs by exact namespace so branch names are not trimmed or confused with tags.
Run native tests with -count=1 and -json. Upload results, stderr, and command timestamps while preserving test exit codes.
Keep raw selections through Diff and Remove validation, and enumerate staged rename sides without probing workspace write access.
Document read-only selection, Unicode identity checks, and separate captured and streaming budgets.
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 of Changes
Hardens SPAS synchronization, CLI contracts, Git reference handling, and release verification.
v0.1.2release tag after merge.Contract & Risk Assessment
link,add,sync,diff,remove,doctor, andversion.Verification & Testing
git rev-list --count first-review --not origin/main— 42 branch-specific commits.80f6638.go run . version --json— blocked in the review environment because the Go build cache path was inaccessible. No source changes were made by this check.Contributor Checklist
gofmt -w,go mod tidy -diff, tests, andgo vetpass cleanly.README.mdorwiki/matches the implementation.