Skip to content

feat(spritz): add binding-owned spritz lifecycle#201

Merged
onutc merged 3 commits intomainfrom
docs-spritz-binding-owned-lifecycle
Apr 3, 2026
Merged

feat(spritz): add binding-owned spritz lifecycle#201
onutc merged 3 commits intomainfrom
docs-spritz-binding-owned-lifecycle

Conversation

@onutc
Copy link
Copy Markdown
Member

@onutc onutc commented Apr 3, 2026

TL;DR

This adds the Spritz-side control-plane pieces for binding-owned lifecycle management.
Spritz now has a durable SpritzBinding resource, a controller that owns candidate creation/cutover/cleanup, and internal APIs that let platform drive bindings instead of raw runtime replacement.

Summary

  • add the SpritzBinding CRD and generated Helm/CRD manifests
  • add the binding controller and register it in the operator
  • add internal binding upsert/get/reconcile APIs
  • make the internal :replace endpoint delegate to binding-owned lifecycle when the source runtime belongs to a binding
  • add focused API and controller tests

Review focus

  • whether the binding controller cleanly owns create, ready, cutover, and cleanup phases
  • replace-API compatibility for callers still using :replace
  • CRD/status shape and whether it is enough for durable resumption
  • ownership/label semantics between SpritzBinding and Spritz

Validation

  • cd api && go test ./...
  • cd operator && go test ./...

Context

@onutc onutc changed the title docs(spritz): propose binding-owned lifecycle architecture feat(spritz): add binding-owned spritz lifecycle Apr 3, 2026
@onutc
Copy link
Copy Markdown
Member Author

onutc commented Apr 3, 2026

Implementation status:

  • Binding-owned Spritz lifecycle work is implemented on this branch.
  • I fixed the local review findings around replace contract preservation, conflict/idempotency handling, controller retry behavior, cleanup ref retention, and terminal-runtime cleanup.

Validation run:

  • cd api && go test ./... -> pass
  • cd operator && go test ./... -> pass
  • gh pr checks 201 --repo textcortex/spritz -> all checks passing

Note:

  • A fresh local codex review --base main attempt hit the current Codex usage cap, so there is no new completed local review result from this pass. There are also no outstanding issue comments or inline review comments on this PR.

@onutc onutc merged commit 286921c into main Apr 3, 2026
9 checks passed
@onutc onutc deleted the docs-spritz-binding-owned-lifecycle branch April 3, 2026 14:57
@gitrank-connector
Copy link
Copy Markdown

⭐ GitRank PR Analysis

Score: 50 points

Metric Value
Component Other (1× multiplier)
Severity P1 - High (50 base pts)
Final Score 50 × 1 = 50

Eligibility Checks

Check Status
Issue/Bug Fix
Fix Implementation
PR Documented
Tests
Lines Within Limit

Impact Summary

This PR adds comprehensive binding-owned lifecycle management to Spritz, introducing a new SpritzBinding CRD and controller that manages creation, cutover, and cleanup of disposable Spritz runtimes. The implementation includes internal APIs for binding upsert/get/reconcile operations and integrates binding lifecycle into the existing :replace endpoint, enabling durable resumption and platform-driven runtime management.

Analysis Details

Component Classification: This PR introduces a new feature (SpritzBinding lifecycle management) rather than fixing a specific categorized component. It spans API, CRD definitions, operator controllers, and Helm manifests, making it a cross-cutting architectural enhancement that doesn't fit existing component categories.

Severity Justification: This is a P1 (High) contribution because it introduces significant new functionality for durable binding-owned lifecycle management with a new CRD, controller, and internal APIs that enable platform-driven runtime replacement. While not a critical bug fix, it represents major architectural capability addition with substantial code changes (4958 lines) and integration complexity.

Eligibility Notes: Tests are required and present: the PR includes 399 lines of API binding tests and 399 lines of controller tests covering upsert, replacement, idempotency, and conflict scenarios. The fix_implementation is true as the code implements the binding lifecycle architecture described in the PR. The PR is well-documented with clear description, architecture document, and companion platform PR reference. No specific issue number is referenced, but this is a feature addition rather than a bug fix, so the issue flag is false.


Analyzed by GitRank 🤖

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant