Repository navigation
fix(#8484): pass --no-git-ignore to openshell sandbox upload - #8485
Conversation
OpenShell >= 0.1.3 (NVIDIA/OpenShell#3957) makes "sandbox upload" fail when the source sits in a Git work tree and .gitignore filtering selects no files; 0.1.2 only warned. The output schema is uploaded from <fullsend-dir>/.fullsend-cache/..., which many checkouts (including fullsend's own) ignore, so it would fail after the OpenShell bump. - sandbox.Upload now passes --no-git-ignore before the positional args. fullsend always hands openshell one file it already chose (UploadDir applies its own excludes and uploads a tarball), so Git filtering at this layer is never wanted. The flag exists on 0.1.2, so no version gate. - bootstrapEnv now returns an error when creating the .fullsend dir or uploading the output schema fails, instead of warning and continuing without FULLSEND_OUTPUT_SCHEMA. The "schema file not found on host" warning is unchanged. - Tests: assert --no-git-ignore for Upload and UploadDir; cover the schema mkdir/upload error paths and the success export; shift test-fake openshell upload argv indexes ($4/$5 -> $5/$6). Note: pre-commit could not fetch hook repos (TLS); applicable hooks (pre-commit-hooks file checks, gofmt, go vet, broken symlinks) were run directly and passed. Pre-existing env-dependent failures unrelated to this change (network/claude-on-PATH tests) also fail on main. Closes #8484 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
/fs-fix-stop |
|
Fix agent disabled for this PR. Remove the |
|
🤖 Finished Review · ✅ Success · Started 1:08 PM UTC · Completed 1:15 PM UTC Commit: Runtime: pi · Model: sonnet → claude-sonnet-5-5 · Effort: high · Cost: $1.37 |
Validation on OpenShell 0.1.4I ran a real Fixture: a harness whose main This PR
|
|
Risk Assessment: moderate (2/5) DetailsFocused bug fix with high test coverage and no protected paths, elevated to moderate by high churn in modified runner files and behavioral change without a feature flag. |
ReviewFindingsLow
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
|
@fullsend-ai/core this is ready for a human review: CI is green, all threads are resolved, and the 0.1.4 validation is above. It unblocks the OpenShell 0.1.4 bump (#8299). |
waynesun09
left a comment
There was a problem hiding this comment.
Approved: fixes the 0.1.4 strict-upload break (#8484); validated locally on v0.1.4.
…ks-integrity Point TestInstallClaudeHooks_PinsInterpreter's upload stub at $5: #8485 put --no-git-ignore before the sandbox name, so the local path moved from $4 to $5. Assisted-by: Claude Signed-off-by: Wayne Sun <gsun@redhat.com>
Summary
openshell sandbox uploadnow always gets--no-git-ignore. A failed output-schema upload now stops bootstrap with an error instead of logging a warning. Since OpenShell 0.1.3 (NVIDIA/OpenShell#3957), uploading a single file fails when the checkout's.gitignorematches it. The output schema is uploaded from.fullsend-cache/, which many checkouts ignore, fullsend's own included. On 0.1.2 that same upload only warned.Related Issue
Blocks #8299 (OpenShell v0.1.4 bump).
Changes
internal/sandbox/sandbox.go:Uploadpasses--no-git-ignorebefore the positional args. fullsend always uploads one file it has already picked (UploadDirapplies its own excludes and uploads a tarball), so OpenShell's Git filtering is never wanted here. The flag already exists on 0.1.2, so there is no version gate.internal/cli/run.go:bootstrapEnvnow returnscreating .fullsend dir for output schema: ...oruploading output schema <path>: ...instead of printing aWARNINGand running withoutFULLSEND_OUTPUT_SCHEMA. The "schema file not found on host" warning is unchanged.TestUpload_PassesNoGitIgnorechecks that both a regular-fileUploadandUploadDir's tarball upload pass the flag.bootstrapEnvtests cover the upload-failure error, the mkdir-failure error, and the success path, where the schema env var is exported.openshellscripts ininternal/sandboxandinternal/runtimenow read upload paths as$5/$6instead of$4/$5, and the log assertions match the new argv.Testing
go test ./internal/sandbox/ ./internal/runtime/ ./internal/cli/pass, apart from failures that also happen on unmodifiedmainin this sandbox:TestDialReachable_ClosedPort,TestBuildRunCommand_ClaudeMissingExits127(a realclaudeis on PATH here),TestStartFetchService_*andTestPostScriptEnv_NoSchema*. Thefetch,securityandtelemetrypackages also fail here but are untouched by this change.pre-commitcould not fetch its hook repos (TLS error in the sandbox), so the hooks that apply to Go files were run directly and all passed: the pre-commit-hooks file checks, gofmt,go vet ./..., and lint-broken-symlinks. Secret scan passed.Checklist
🤖 Generated with Claude Code
Closes #8484
Post-script verification
agent/8484-upload-no-git-ignore)4dea855322bc8cca6a277fac06642bfcd1cd093d..HEAD)