Skip to content

feat: blue-green alias lineage, health probe timeouts, test coverage - #1035

Open
MamaLove360 wants to merge 2 commits into
StellerCraft:mainfrom
MamaLove360:feat/blue-green-lineage-health-probes-test-coverage
Open

feat: blue-green alias lineage, health probe timeouts, test coverage#1035
MamaLove360 wants to merge 2 commits into
StellerCraft:mainfrom
MamaLove360:feat/blue-green-lineage-health-probes-test-coverage

Conversation

@MamaLove360

Copy link
Copy Markdown

#995 Persist blue-green alias lineage to deployments during promotion

  • Extend PipelineExecutionResult with stagingDeploymentId, productionDeploymentId, previousProductionDeploymentId
  • Set staging_deployment_id at candidate trigger, clear on promotion complete
  • Set production_deployment_id and previous_production_deployment_id after alias switch
  • Persist lineage columns in finalizeUpdate() and restore on rollback in rollbackUpdate()

#989 Harden regional router health probes with bounded timeouts and logging

  • Add AbortSignal.timeout() to per-region fetch in getRegionHealthStatus()
  • Read REGION_HEALTH_PROBE_TIMEOUT_MS env var (default 2000ms)
  • Add structured JSON log in makeRoutingDecision() capturing region health map and target
  • Document new env var in supabase/functions/README.md
  • Add timeout scenario tests

#993 Add test coverage for RealtimeStatusPoller

  • Cover ownership rejection, exponential backoff progression, maxRetries exhaustion
  • Test sequenceNumber increment, disconnect cleanup, timer clearing
  • Use mock SupabaseClient/RealtimeChannel with controllable subscription callback

#994 Add test coverage for Vercel preview bypass token

  • Cover valid round-trip, tampered token, expired, deployment mismatch, missing secret
  • Test malformed base64url rejection as invalid_signature
  • Deterministic expiry via nowSeconds injection

Infrastructure:

  • Upgrade vitest to v2.1.9 (Node 24 compatibility)
  • Fix vitest.setup.ts import for @testing-library/jest-dom/vitest
  • Remove incompatible snapshotSerializer from vitest config

Closes #994
Closes #993
Closes #989
Closes #995

StellerCraft#995 Persist blue-green alias lineage to deployments during promotion
- Extend PipelineExecutionResult with stagingDeploymentId, productionDeploymentId, previousProductionDeploymentId
- Set staging_deployment_id at candidate trigger, clear on promotion complete
- Set production_deployment_id and previous_production_deployment_id after alias switch
- Persist lineage columns in finalizeUpdate() and restore on rollback in rollbackUpdate()

StellerCraft#989 Harden regional router health probes with bounded timeouts and logging
- Add AbortSignal.timeout() to per-region fetch in getRegionHealthStatus()
- Read REGION_HEALTH_PROBE_TIMEOUT_MS env var (default 2000ms)
- Add structured JSON log in makeRoutingDecision() capturing region health map and target
- Document new env var in supabase/functions/README.md
- Add timeout scenario tests

StellerCraft#993 Add test coverage for RealtimeStatusPoller
- Cover ownership rejection, exponential backoff progression, maxRetries exhaustion
- Test sequenceNumber increment, disconnect cleanup, timer clearing
- Use mock SupabaseClient/RealtimeChannel with controllable subscription callback

StellerCraft#994 Add test coverage for Vercel preview bypass token
- Cover valid round-trip, tampered token, expired, deployment mismatch, missing secret
- Test malformed base64url rejection as invalid_signature
- Deterministic expiry via nowSeconds injection

Infrastructure:
- Upgrade vitest to v2.1.9 (Node 24 compatibility)
- Fix vitest.setup.ts import for @testing-library/jest-dom/vitest
- Remove incompatible snapshotSerializer from vitest config
@drips-wave

drips-wave Bot commented Jul 26, 2026

Copy link
Copy Markdown

@MamaLove360 Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

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