···196196 sigs.k8s.io/yaml v1.4.0 // indirect
197197)
198198199199-// Use local tangled.org/core for development
199199+// Remote replace (for future when server supports @handle in Git URLs):
200200+// replace tangled.org/core => tangled.org/evan.jarrett.net/core v0.0.0-20251107232645-99c60f368227
201201+202202+// Local replace for development (current workaround):
200203replace tangled.org/core => ../core
+5-38
internal/controller/spindleset_controller.go
···375375 currentStatus = "pending"
376376 }
377377378378- // Report status changes to spindle DB
379379- if newJob && currentStatus == "pending" {
380380- logger.Info("Reporting pending status", "job", job.Name, "workflow", workflowName)
381381- if err := r.Spindle.DB().StatusPending(wid, r.Spindle.Notifier()); err != nil {
382382- logger.Error(err, "Failed to report pending status")
383383- }
378378+ // Status reporting is handled by the spindle engine's StartWorkflows
379379+ // The controller just needs to track jobs for cleanup
380380+ if newJob {
384381 r.watchedJobs.Store(jobKey, wid)
385382 }
386383387387- if currentStatus == "running" {
388388- if newJob || !exists {
389389- logger.Info("Reporting running status", "job", job.Name, "workflow", workflowName)
390390- if err := r.Spindle.DB().StatusRunning(wid, r.Spindle.Notifier()); err != nil {
391391- logger.Error(err, "Failed to report running status")
392392- }
393393- r.watchedJobs.Store(jobKey, wid)
394394- }
395395- }
396396-397397- if currentStatus == "succeeded" {
398398- logger.Info("Reporting success status", "job", job.Name, "workflow", workflowName)
399399- if err := r.Spindle.DB().StatusSuccess(wid, r.Spindle.Notifier()); err != nil {
400400- logger.Error(err, "Failed to report success status")
401401- }
402402- r.watchedJobs.Delete(jobKey)
403403- }
404404-405405- if currentStatus == "failed" {
406406- logger.Info("Reporting failed status", "job", job.Name, "workflow", workflowName)
407407- // Try to get error message from Job conditions
408408- errorMsg := "Job failed"
409409- for _, cond := range job.Status.Conditions {
410410- if cond.Type == batchv1.JobFailed {
411411- errorMsg = cond.Message
412412- break
413413- }
414414- }
415415- exitCode := int64(1)
416416- if err := r.Spindle.DB().StatusFailed(wid, errorMsg, exitCode, r.Spindle.Notifier()); err != nil {
417417- logger.Error(err, "Failed to report failed status")
418418- }
384384+ if currentStatus == "succeeded" || currentStatus == "failed" {
385385+ logger.Info("Job completed", "job", job.Name, "workflow", workflowName, "status", currentStatus)
419386 r.watchedJobs.Delete(jobKey)
420387 }
421388 }