Modernize Helm Spray for Helm 4, portable builds, CI, and AI-assisted tooling#105
Open
tonybjzhao wants to merge 26 commits into
Open
Modernize Helm Spray for Helm 4, portable builds, CI, and AI-assisted tooling#105tonybjzhao wants to merge 26 commits into
tonybjzhao wants to merge 26 commits into
Conversation
…26June_TZ' into AU_Thales-Against-The-Machine_2026June
…26June_JA' into HEAD
- 18 skills covering architecture, code quality, testing, safety, and workflow - Skills: git-commit, go-api-design, go-architecture-review, go-code-review, go-coding-standards, go-concurrency-review, go-context, go-database, go-dependency-audit, go-design-patterns, go-error-handling, go-interface-design, go-modernize, go-observability, go-performance-review, go-security-audit, go-test-quality, go-test-table-driven - skills-lock.json tracks installed skill versions and hashes
Phase 1: Bug Fixes (14 issues) - Replace deprecated ioutil with os.MkdirTemp/os.CreateTemp - Fix shell injection in Fetch() with os.ReadDir - Add bounds checking after os.ReadDir - Replace reflect.TypeOf with type switch - Handle strconv.Atoi error properly - Fix WithNumberedLines infinite loop on empty string - Remove redundant == true/false comparisons - Fix README typos Phase 2: Wait Algorithm Fix (ThalesGroup#60, ThalesGroup#58) - Deployments: check unavailableReplicas > 0 - StatefulSets: remove updatedReplicas check for OnDelete strategy Phase 3: Helm 4 Migration - Update go.mod: helm.sh/helm/v3 → helm.sh/helm/v4 - Update all imports for new package structure - Handle chart.Charter interface from loader.Load() - Use chart/common.Values instead of chartutil.Values Phase 4: Web GUI - New cmd/web.go command: helm spray web - HTTP server with chart browser and spray execution - WebSocket live log streaming - Static HTML/CSS/JS frontend (dark theme) - API: /api/charts, /api/chart, /api/releases, /api/spray, /ws Phase 5: Unit Tests (39 test cases) - pkg/util/util_test.go: Duration function - internal/log/log_test.go: Info, WithNumberedLines, Error - internal/values/values_test.go: mergeMaps - internal/dependencies/dependencies_test.go: Get, tags - internal/web/chart_scanner_test.go: parseWeights, computeExecutionOrder Phase 6: Documentation + CI/CD - GitHub Actions workflow: build, test, lint, cross-compile - Expanded CONTRIBUTING.md - Updated AGENTS.md with all changes
This reverts commit f8254ef.
- Add Condition field to Dependency struct, populated from req.Condition - Use dependency's Condition path instead of hardcoded <usedName>.enabled - Fall back to <usedName>.enabled when Condition is empty (backward compat) - Handle comma-delimited condition paths (use first path) - Skip sub-chart with warning when condition resolves to false in values - Warn at detail level for non-standard condition paths - Update upgrade() signature to accept mergedValues parameter - Add TestCondition with 5 test cases (standard, non-standard, empty, alias, comma) - Update README and root.go help text
…26June' into AU_Thales-Against-The-Machine_2026June
Ran 'go mod tidy' to regenerate missing checksums for Helm v4, gorilla/websocket, k8s.io, and other transitive dependencies.
- Add net/http import to chart_scanner.go (undefined: http)
- Remove unused os import from server.go
- Change web.go init() to exported AddWebCommand(rootCmd) function
since upstream uses NewRootCmd() pattern instead of rootCmd var
- Call AddWebCommand(cmd) from root.go
- Fix test values to use spray.weights.<name> format (upstream convention)
- Use common.Values type in tests instead of map[string]interface{}
- Duration: use strings.Replace for h0m in middle (e.g. 1h0m30s -> 1h30s) instead of only checking suffix, which missed the middle case - WithNumberedLines test: fix empty string expectation — bufio.Scanner on empty input produces no tokens, so no output is correct
go.mod was auto-upgraded to Go 1.26.0 by 'go mod tidy' because helm.sh/helm/v4 v4.2.2 requires go >= 1.26.0. The CI matrix and golangci-lint setup now use Go 1.26 to match.
…26June' into feature/AI-improvements_EC
Feature/ai improvements ec
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
This PR modernizes Helm Spray as part of the “AI Against The Machine 2026 June” work.
It includes the six planned maintenance tasks plus additional AI-assisted competition tooling and validation work.
Main Changes
helm fetchwithhelm pulland remove shell copy logic.spray.weights.<chart-or-alias>.enabled/conditionhandling.OnDelete.CGO_ENABLED=0artifacts.Related Upstream Issues
This work addresses or improves behavior related to:
Validation
Tested locally with:
scripts/helm4_integration_tests.sh scripts/helm4_smoke_test.sh go test ./... go vet ./... make dist