[Sprint] sprint-loop-45#42
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.
Sprint Plan: 2026-06-01 Sprint Loop 45
Sprint Goal
Close three high-priority shell-scripts regressions that can cause packaged installs to miss documented commands, Kubernetes helper commands to run against the wrong namespace, and
daml-exportto terminate or duplicate background builds. The sprint is intentionally limited to the three eligible Backlog issues returned by Linear for the verified Surinisshell-scriptsproject; each issue has a clear failure mode, focused implementation surface, and regression-test path.Selected Issues
SUR-3351: Bug: Kubernetes pod helpers drop -n on per-pod commands
Description summary:
against-each-podandpod-consoleaccept-n NAMESPACEand use it for the initial pod listing, but later per-pod commands omit the namespace.against-each-poddrops-nfromkubectl get pod "$pod" -o jsonand the requested pod command, whilepod-consolebuilds tmux payloads that runkubectl $COMMAND pod/$pod ...without-n. The issue calls out existingtests/against-each-pod.batscoverage as incomplete because it only checks the listing call.Rationale: This is a correctness bug with user-visible risk: the helpers can list pods from one namespace and then inspect or operate on same-named pods from another namespace. It is also relatively small and testable with the existing kubectl/tmux stubs.
Definition of Done:
bash/against-each-podbuilds namespace args when-nis supplied and passes them to every per-podk8s::ctl get podand command invocation.bash/pod-consoleincludes the namespace in each generated kubectl send-keys payload when-nis supplied.-nremains unchanged and does not emit namespace flags.tests/against-each-pod.batsasserts every recorded kubectl call includes-n my-nswhen the option is provided.tests/pod-console.batscovers the namespace-bearing send-keys payload without weakening the existing quoting regression.KUBECTL_ARGV_LOGsnippets are posted to Linear if retained, not committed under.claude/sprints/,.claude/runs/, or.claude/plans/.tests/bats/bin/bats tests/against-each-pod.bats tests/pod-console.batspasses.Dependencies / ordering: Do first. It is the smallest runtime fix and establishes the namespace argument pattern to preserve while running the rest of the sprint tests.
SUR-3353: Bug: bin package omits standalone executable commands
Description summary: The bin tarball recipe only selects no-extension files containing the string
includer, so executable standalone commands without@includesupport are silently left out. The issue identifiesbash/mddocandbash/semveras executable command scripts missing fromdist/bin-*.tar.gz, and notesREADME.mddocumentsbash/mddoc <file>as a usable command.Rationale: This packaging bug affects all users installing from the bin tarball and is reviewable if handled with an explicit command-selection rule plus a tarball regression. It pairs well with SUR-3351 because both protect command availability and behavior for installed scripts.
Definition of Done:
Makefileno longer relies ongrep -q "includer"as the only selector for bin-package commands.mddocandsemverare included in the bin tarball.@includeare still packed throughbash/pack-script; standalone executable commands are copied or otherwise packaged without requiring fake includer references.bin/mddocandbin/semverare present.pack-scriptbehavior and tests remain intact.make packageand the targeted packaging regression pass.Dependencies / ordering: Do after SUR-3351 and before SUR-3352. The Makefile change is broad enough to verify independently before moving to the more stateful
daml-exportprocess-control fix.SUR-3352: Bug: daml-export can kill in-flight builds on normal exit
Description summary:
daml-exportstartsbuild "$OUTPUT_DIR" &jobs, tracks PIDs inRUNNING_PROCS, and installs anEXITtrap that kills all tracked jobs. There is no final wait after the main and post-loop scheduling, so a normal successful exit can kill still-running builds. The post-loopfind "$TARGET_DIR" -name export.goodpass can also start duplicate builds for an output directory whose first build is still running.Rationale: This is the riskiest selected issue because it changes background-process lifecycle behavior, but it fixes data loss and wasted CPU in long-running exports. Keeping it last lets earlier, smaller fixes land with green tests before focused process-control work.
Definition of Done:
bash/daml-exportdistinguishes normal completion from signal or failure cleanup so successful exits wait for remaining builds instead of killing them.verify_and_buildpath does not start a duplicate build for an output directory that already has a running build.daml buildto prove successful runs wait for completion and do not kill in-flight jobs..claude/sprints/,.claude/runs/, or.claude/plans/.Dependencies / ordering: Do last. It touches async behavior in
bash/daml-exportand should be verified after the packaging and Kubernetes changes are already stable.Risks + Mitigations
pod-consolealready has quoting-sensitive send-keys coverage; extend the existing payload inspection instead of replacing it.against-each-podcurrently invokesjqafter the kubectl stub; keep tests focused on logged kubectl argv and avoid adding a real jq dependency.*.shexclusion.pack-scriptagainst standalone commands could fail or alter scripts unnecessarily; only usepack-scriptfor commands that actually include the includer mechanism.make packagemay leavedist/state that affects follow-up assertions; run from a clean dist or have the test isolate package output.daml-exportbackground waits can hang if the regression stub or PID pruning is wrong; keep slow stubs short and add bounded test timeouts where the bats suite already supports them..claude/sprints/,.claude/runs/, or.claude/plans/; post or discard generated logs before final diff review.Out of Scope
Backlogat planning time.daml-exportexport-range generation, archive correction, or Daml source rewriting beyond the background-build lifecycle bug..claude/.Linear Evidence
Surinisshell-scriptsSurinis, projectshell-scripts, state exactlyBacklog, archived excluded; full descriptions and comments read for every Backlog issue returned; manual label,blockedBy, sub-issue, and open-PR overlap filters applied. Open PR file list was[], so Dependency Filter B was a no-op.Sub-issue Status
No selected or skipped candidate issue had sub-issues in Linear.
Linear State Transitions