Process gap: branch 369-first-payment-email-blast deployed to prod without merging to main #466

Open
opened 2026-04-13 00:08:30 +00:00 by forgejo_admin · 0 comments

Type

Bug

Lineage

Standalone — discovered during 2026-04-12 Jaxon Gerber payment email session.

Repo

forgejo_admin/basketball-api

What Broke

Branch 369-first-payment-email-blast was deployed directly to the basketball-api prod pod without ever being merged to main. The first-payment endpoint (POST /admin/email/first-payment, send_first_payment_email(), GET /checkout/first-payment) existed only on this branch. While it ran in prod, main received 15+ merges (EmailType additions, generic blast endpoint, sponsor PRs), causing merge conflicts when the branch finally needed to merge.

Symptoms:

  • grep for email/blast on main returned nothing — endpoint was invisible
  • sop-contract-offer and sop-email-send referenced infrastructure that wasn't on main
  • PR #459 (skip_proration) was merged to the branch, not main, requiring a second conflict-resolution PR
  • ~30 min wasted debugging why code existed on the pod but not in the repo

Repro Steps

  1. Create a long-lived feature branch with production-critical code
  2. Deploy it to the pod without merging to main
  3. Continue merging other PRs to main
  4. Try to merge the branch to main months later
  5. Observe: merge conflicts across 6+ files, invisible endpoints, SOPs referencing non-existent code

Expected Behavior

All production code goes through: PR to main → QA review → merge → CI build → deploy → validation. No branch runs in prod without being on main. The issue lifecycle (new → in-progress → qa → approved → merged → deployed) is followed for every change.

Environment

  • Cluster/namespace: prod / basketball-api
  • Service version/commit: pod image 1c4a0b97... (main), branch 369-first-payment-email-blast at 213b0d0 (4 commits ahead of main at time of discovery)
  • Related alerts: none — this was a silent process violation

Acceptance Criteria

  • Branch 369-first-payment-email-blast merged to main
  • Pod rebuilt from main with all first-payment + skip_proration code
  • Process gap scoped on pal-e-agency board for enforcement
  • project-pal-e-agency — enforcement architecture
  • sop-validation — "Merged does not equal deployed"
  • pr-lifecycle — the 7-stage flow that was skipped
### Type Bug ### Lineage Standalone — discovered during 2026-04-12 Jaxon Gerber payment email session. ### Repo `forgejo_admin/basketball-api` ### What Broke Branch `369-first-payment-email-blast` was deployed directly to the basketball-api prod pod without ever being merged to main. The first-payment endpoint (`POST /admin/email/first-payment`, `send_first_payment_email()`, `GET /checkout/first-payment`) existed only on this branch. While it ran in prod, main received 15+ merges (EmailType additions, generic blast endpoint, sponsor PRs), causing merge conflicts when the branch finally needed to merge. Symptoms: - `grep` for email/blast on main returned nothing — endpoint was invisible - `sop-contract-offer` and `sop-email-send` referenced infrastructure that wasn't on main - PR #459 (skip_proration) was merged to the branch, not main, requiring a second conflict-resolution PR - ~30 min wasted debugging why code existed on the pod but not in the repo ### Repro Steps 1. Create a long-lived feature branch with production-critical code 2. Deploy it to the pod without merging to main 3. Continue merging other PRs to main 4. Try to merge the branch to main months later 5. Observe: merge conflicts across 6+ files, invisible endpoints, SOPs referencing non-existent code ### Expected Behavior All production code goes through: PR to main → QA review → merge → CI build → deploy → validation. No branch runs in prod without being on main. The issue lifecycle (new → in-progress → qa → approved → merged → deployed) is followed for every change. ### Environment - Cluster/namespace: prod / basketball-api - Service version/commit: pod image `1c4a0b97...` (main), branch `369-first-payment-email-blast` at `213b0d0` (4 commits ahead of main at time of discovery) - Related alerts: none — this was a silent process violation ### Acceptance Criteria - [ ] Branch `369-first-payment-email-blast` merged to main - [ ] Pod rebuilt from main with all first-payment + skip_proration code - [ ] Process gap scoped on pal-e-agency board for enforcement ### Related - `project-pal-e-agency` — enforcement architecture - `sop-validation` — "Merged does not equal deployed" - `pr-lifecycle` — the 7-stage flow that was skipped
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
forgejo_admin/basketball-api#466
No description provided.