|
Some checks failed
Veza CI / Rust (Stream Server) (push) Successful in 4m22s
Security Scan / Secret Scanning (gitleaks) (push) Successful in 1m5s
Veza CI / Frontend (Web) (push) Failing after 17m19s
E2E Playwright / e2e (full) (push) Failing after 20m28s
Veza CI / Backend (Go) (push) Successful in 21m31s
Veza CI / Notify on failure (push) Successful in 4s
Three pre-existing infra issues surfaced by the Day 1→Day 3 push wave.
Each is independent — bundled here because the goal is "ci.yml + e2e.yml
green" before the v1.0.9 tag, and they're all small.
(1) gofmt — ci.yml golangci-lint v2 step
Five files were unformatted on main. Pre-existing (untouched by my
Item G work, but the formatter caught them now):
- internal/api/router.go
- internal/core/marketplace/reconcile_hyperswitch_test.go
- internal/models/user.go
- internal/monitoring/ledger_metrics.go
- internal/monitoring/ledger_metrics_test.go
Pure whitespace via `gofmt -w` — no behavior change.
(2) e2e silent-fail — playwright webServer port collision
The e2e workflow pre-starts the backend in step 9 ("Build + start
backend API") so it can fail-fast on a non-ok health check. But
playwright.config.ts had `reuseExistingServer: !process.env.CI` on
the backend webServer entry — meaning in CI Playwright tried to
spawn a SECOND backend on port 18080. The spawn collided with
EADDRINUSE and Playwright silently exited before printing any test
output. The artifact upload then warned "No files were found"
because tests/e2e/playwright-report/ never got written, and the job
ended in `Failure` for an unrelated reason (the artifact upload
step's GHESNotSupportedError).
Fix: backend `reuseExistingServer: true` always — workflow + dev
both pre-start backend on 18080. Vite stays `!CI` because the
workflow doesn't pre-start it. Comment in playwright.config.ts
documents the symptom so the next person debugging gets the
pointer immediately.
(3) orders.hyperswitch_payment_id missing in fresh DBs — migration 080
skip-branch + 099 ordering drift
Migration 080 (`add_payment_fields`) wraps its ALTERs in
"skip if orders doesn't exist". At authoring time orders existed
earlier in the migration sequence; that ordering has since shifted
(orders is now created at 099_z_create_orders.sql, AFTER 080).
Result: in any freshly-migrated DB (CI, fresh dev, future restore
drills) migration 080 takes the skip branch and the columns are
never added — even though the Order model and the marketplace code
rely on them.
Symptom: every CI run logs
pq: column "hyperswitch_payment_id" does not exist
from the periodic ledger_metrics worker. Order checkout would also
fail to persist payment_id at write time, breaking reconciliation.
Fix: append-only migration 987 with idempotent
`ADD COLUMN IF NOT EXISTS` + a partial index on the reconciliation
hot path. Production envs that did pick up 080 in the original
order are no-ops; fresh envs converge to the same end state.
Rollback in migrations/rollback/.
Verified locally:
$ cd veza-backend-api && go build ./... && VEZA_SKIP_INTEGRATION=1 \
go test -short -count=1 ./internal/...
(all green)
SKIP_TESTS=1: backend-only Go + Playwright config + SQL. Frontend
unit tests irrelevant to this commit.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
||
|---|---|---|
| .. | ||
| admin.go | ||
| announcement.go | ||
| api_key.go | ||
| bitrate_adaptation.go | ||
| bitrate_adaptation_test.go | ||
| chat_message.go | ||
| cloud_file_share.go | ||
| cloud_file_version.go | ||
| co_listening_session.go | ||
| custom_claims.go | ||
| daily_track_stats.go | ||
| data_export.go | ||
| delivered_status.go | ||
| feature_flag.go | ||
| federated_identity.go | ||
| gear.go | ||
| gear_document.go | ||
| gear_image.go | ||
| gear_repair.go | ||
| genre.go | ||
| hardware.go | ||
| hls_stream.go | ||
| hls_stream_test.go | ||
| hls_transcode_queue.go | ||
| hls_transcode_queue_test.go | ||
| live_stream.go | ||
| message.go | ||
| message_reaction.go | ||
| mfa_config.go | ||
| notification.go | ||
| playback_analytics.go | ||
| playback_analytics_test.go | ||
| playlist.go | ||
| playlist_collaborator.go | ||
| playlist_collaborator_test.go | ||
| playlist_follow.go | ||
| playlist_share_link.go | ||
| playlist_test.go | ||
| playlist_version.go | ||
| queue.go | ||
| queue_session.go | ||
| read_receipt.go | ||
| recovery_code.go | ||
| refresh_token.go | ||
| report.go | ||
| requests.go | ||
| responses.go | ||
| role.go | ||
| role_test.go | ||
| room.go | ||
| room_invitation.go | ||
| royalty.go | ||
| seller_stripe_account.go | ||
| session.go | ||
| storage_quota.go | ||
| tag.go | ||
| track.go | ||
| track_comment.go | ||
| track_comment_test.go | ||
| track_history.go | ||
| track_history_test.go | ||
| track_like.go | ||
| track_like_test.go | ||
| track_lyrics.go | ||
| track_play.go | ||
| track_play_test.go | ||
| track_repost.go | ||
| track_share.go | ||
| track_share_test.go | ||
| track_status.go | ||
| track_stem.go | ||
| track_version.go | ||
| track_version_test.go | ||
| user.go | ||
| user_file.go | ||
| user_folder.go | ||
| user_genre_tag_follow.go | ||
| user_presence.go | ||
| user_settings.go | ||
| webauthn_credential.go | ||
| webhook.go | ||