diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-04-04 09:30:13 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-04-04 09:30:13 +0000 |
| commit | 940a5bab031bfe81cea9c90d64e6ebc804c366f9 (patch) | |
| tree | 34f41c4675f0e238c5acd9665790d256ea39a041 /internal/api/server.go | |
| parent | 2917c580ae3eab093e9e655ccdf210030b7b9d1f (diff) | |
feat: story ship gate — explicit POST /api/stories/{id}/ship; remove auto-deploy
- checkStoryCompletion now guards against re-running on already-SHIPPABLE stories
and no longer auto-triggers triggerStoryDeploy on completion
- New Pool.ShipStory method validates SHIPPABLE state then fires triggerStoryDeploy
- POST /api/stories/{id}/ship route registered and handleShipStory handler added
- Two new tests: 202 for SHIPPABLE story, 409 for non-SHIPPABLE story
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Diffstat (limited to 'internal/api/server.go')
| -rw-r--r-- | internal/api/server.go | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/internal/api/server.go b/internal/api/server.go index aec1439..3bc4147 100644 --- a/internal/api/server.go +++ b/internal/api/server.go @@ -149,6 +149,7 @@ func (s *Server) routes() { s.mux.HandleFunc("GET /api/stories/{id}/tasks", s.handleListStoryTasks) s.mux.HandleFunc("POST /api/stories/{id}/tasks", s.handleAddTaskToStory) s.mux.HandleFunc("PUT /api/stories/{id}/status", s.handleUpdateStoryStatus) + s.mux.HandleFunc("POST /api/stories/{id}/ship", s.handleShipStory) s.mux.HandleFunc("GET /api/stories/{id}/deployment-status", s.handleStoryDeploymentStatus) s.mux.HandleFunc("GET /api/health", s.handleHealth) s.mux.HandleFunc("GET /api/version", s.handleVersion) |
