Kubernetes Operator for Tangled Spindles

fix artifact chunk aliasing, add failure diagnostics, pin longhorn-v2 nodes #16

Merged evan.jarrett.net
targeting main from upgrade-core-v1.16
Merged opened by and assigned to evan.jarrett.net
targeting main from upgrade-core-v1.16

StreamToRunner pushed buf[:n] onto a buffered channel drained by a separate goroutine, so the next Read overwrote chunks that had not been marshaled yet. Copy each chunk before sending.

Also log at the two points where the engine hands a failure back to the spindle, so it is clear from controller logs which side declared the failure, and pin the controller to Longhorn v2-capable nodes.

Co-Authored-By: Claude Opus 5 (1M context) noreply@anthropic.com

Commits 10

fix audit findings: dead-on-arrival deployment, cancel holes, masking gaps
update golangci-lint and take the codebase to zero findings
unbreak make lint, and drop a dead mutex
record step-loop completion on every RunStep exit path
mask secrets in runner output so they stay out of pod logs
look secrets up by repo DID, and withhold them from fork pipelines
fix name collisions, log stream leaks, and the controller memory ceiling
make cancellation report as cancelled, and materialize submodules
upgrade to tangled.org/core v1.16.1-alpha
fix artifact chunk aliasing, add failure diagnostics, pin longhorn-v2 nodes