Commit graph

9 commits

Author SHA1 Message Date
Ashwin Kumar Sivakumar
c307ef1ba4 fix(ci): run ai_credits tests via buildx build, not runtime apt-get/docker run -v
Some checks failed
build-and-release / build (catering-services) (push) Successful in 17s
build-and-release / build (companies) (push) Successful in 30s
build-and-release / build (cron) (push) Successful in 37s
build-and-release / build (developers) (push) Successful in 27s
build-and-release / build (fitness-trainers) (push) Successful in 31s
build-and-release / build (graphic-designers) (push) Successful in 15s
build-and-release / build (job-seekers) (push) Successful in 11s
build-and-release / build (makeup-artists) (push) Successful in 9s
build-and-release / build (payments) (push) Successful in 10s
build-and-release / build (gateway) (push) Successful in 42s
build-and-release / build (photographers) (push) Successful in 14s
build-and-release / build (social-media-managers) (push) Successful in 13s
build-and-release / build (tutors) (push) Successful in 15s
build-and-release / build (ugc-content-creators) (push) Successful in 15s
build-and-release / build (customers) (push) Failing after 1m46s
build-and-release / build (employees) (push) Successful in 2m0s
backend-integration-tests / ai-credits (push) Failing after 58s
build-and-release / build (jobs) (push) Successful in 1m56s
build-and-release / build (video-editors) (push) Successful in 1m34s
build-and-release / build (users) (push) Successful in 2m53s
The bare bookworm runner image has no apt-get/package manager at all
(the earlier build-essential install attempt failed with 'apt-get:
command not found'), and a plain 'docker run -v $PWD:/workspace'
wouldn't work either - DOCKER_HOST points at the sibling dind engine
(same nested-container setup build.yaml's own comments describe), so a
bind mount would look for the path on the wrong filesystem.

Matches build.yaml's actual working pattern instead: docker buildx
build with context transfer (not a volume mount), using a Dockerfile
(Dockerfile.test) whose RUN step runs the test suite and fails the
build on a non-zero exit. TEST_DATABASE_URL passed via buildx --secret
(not --build-arg) so it never lands in image layer history.

Isolated this by testing each piece of the original workflow
independently (env/secrets, id+GITHUB_OUTPUT, if: conditionals all
checked out fine one at a time) until apt-get was confirmed as the
actual failure point.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 18:08:31 +05:30
Ashwin Kumar Sivakumar
a0a4259d50 debug: test apt-get network access in isolation
Some checks failed
build-and-release / build (cron) (push) Successful in 8s
build-and-release / build (companies) (push) Successful in 16s
build-and-release / build (customers) (push) Successful in 17s
build-and-release / build (developers) (push) Successful in 14s
build-and-release / build (employees) (push) Successful in 10s
build-and-release / build (fitness-trainers) (push) Successful in 12s
build-and-release / build (gateway) (push) Successful in 24s
build-and-release / build (graphic-designers) (push) Successful in 32s
build-and-release / build (job-seekers) (push) Successful in 34s
build-and-release / build (jobs) (push) Successful in 25s
build-and-release / build (photographers) (push) Successful in 11s
build-and-release / build (social-media-managers) (push) Successful in 10s
build-and-release / build (makeup-artists) (push) Successful in 33s
build-and-release / build (tutors) (push) Successful in 12s
build-and-release / build (ugc-content-creators) (push) Successful in 11s
build-and-release / build (catering-services) (push) Successful in 1m42s
backend-integration-tests / ai-credits (push) Failing after 4s
build-and-release / build (users) (push) Successful in 1m58s
build-and-release / build (payments) (push) Has been cancelled
build-and-release / build (video-editors) (push) Has been cancelled
2026-08-13 18:04:31 +05:30
Ashwin Kumar Sivakumar
24e85db097 debug: add back a conditional step to isolate the failure further
Some checks failed
build-and-release / build (catering-services) (push) Successful in 20s
build-and-release / build (cron) (push) Successful in 29s
build-and-release / build (companies) (push) Successful in 48s
build-and-release / build (customers) (push) Successful in 1m0s
build-and-release / build (fitness-trainers) (push) Successful in 36s
build-and-release / build (employees) (push) Successful in 58s
build-and-release / build (graphic-designers) (push) Successful in 40s
build-and-release / build (gateway) (push) Successful in 56s
build-and-release / build (jobs) (push) Successful in 35s
build-and-release / build (makeup-artists) (push) Successful in 27s
build-and-release / build (developers) (push) Failing after 1m56s
build-and-release / build (payments) (push) Successful in 30s
build-and-release / build (social-media-managers) (push) Successful in 19s
build-and-release / build (tutors) (push) Successful in 19s
build-and-release / build (ugc-content-creators) (push) Successful in 14s
backend-integration-tests / ai-credits (push) Successful in 5s
build-and-release / build (video-editors) (push) Successful in 12s
build-and-release / build (job-seekers) (push) Successful in 1m38s
build-and-release / build (photographers) (push) Successful in 2m8s
build-and-release / build (users) (push) Successful in 4m15s
2026-08-13 18:01:39 +05:30
Ashwin Kumar Sivakumar
c0a961c8ef debug: add back the check step to isolate the failure further
Some checks failed
build-and-release / build (companies) (push) Successful in 9s
build-and-release / build (cron) (push) Successful in 15s
build-and-release / build (catering-services) (push) Successful in 21s
build-and-release / build (developers) (push) Successful in 14s
build-and-release / build (employees) (push) Successful in 15s
build-and-release / build (fitness-trainers) (push) Successful in 12s
build-and-release / build (gateway) (push) Successful in 14s
build-and-release / build (graphic-designers) (push) Successful in 12s
build-and-release / build (job-seekers) (push) Successful in 10s
build-and-release / build (jobs) (push) Successful in 9s
build-and-release / build (makeup-artists) (push) Successful in 12s
build-and-release / build (photographers) (push) Successful in 10s
build-and-release / build (social-media-managers) (push) Successful in 10s
build-and-release / build (tutors) (push) Successful in 9s
build-and-release / build (customers) (push) Successful in 1m44s
build-and-release / build (video-editors) (push) Successful in 21s
backend-integration-tests / ai-credits (push) Successful in 4s
build-and-release / build (ugc-content-creators) (push) Has been cancelled
build-and-release / build (users) (push) Has been cancelled
build-and-release / build (payments) (push) Has been cancelled
2026-08-13 17:59:04 +05:30
Ashwin Kumar Sivakumar
22cbd3e285 debug: add back job-level env secret reference to isolate the failure
All checks were successful
build-and-release / build (catering-services) (push) Successful in 9s
build-and-release / build (companies) (push) Successful in 8s
build-and-release / build (cron) (push) Successful in 9s
build-and-release / build (customers) (push) Successful in 8s
build-and-release / build (developers) (push) Successful in 9s
build-and-release / build (employees) (push) Successful in 9s
build-and-release / build (fitness-trainers) (push) Successful in 8s
build-and-release / build (gateway) (push) Successful in 9s
build-and-release / build (job-seekers) (push) Successful in 8s
build-and-release / build (jobs) (push) Successful in 9s
build-and-release / build (makeup-artists) (push) Successful in 8s
build-and-release / build (payments) (push) Successful in 9s
build-and-release / build (photographers) (push) Successful in 8s
build-and-release / build (tutors) (push) Successful in 8s
build-and-release / build (ugc-content-creators) (push) Successful in 8s
build-and-release / build (users) (push) Successful in 11s
build-and-release / build (video-editors) (push) Successful in 9s
backend-integration-tests / ai-credits (push) Successful in 4s
build-and-release / build (social-media-managers) (push) Successful in 52s
build-and-release / build (graphic-designers) (push) Successful in 2m33s
2026-08-13 17:55:30 +05:30
Ashwin Kumar Sivakumar
e80c58641f debug: strip test.yaml to bare minimum to isolate why the job dies mid-run
Some checks failed
build-and-release / build (catering-services) (push) Successful in 25s
build-and-release / build (cron) (push) Successful in 33s
build-and-release / build (companies) (push) Successful in 39s
build-and-release / build (developers) (push) Successful in 45s
build-and-release / build (fitness-trainers) (push) Successful in 28s
build-and-release / build (gateway) (push) Successful in 26s
build-and-release / build (graphic-designers) (push) Successful in 31s
build-and-release / build (makeup-artists) (push) Successful in 12s
build-and-release / build (jobs) (push) Successful in 24s
build-and-release / build (photographers) (push) Successful in 9s
build-and-release / build (payments) (push) Successful in 19s
build-and-release / build (social-media-managers) (push) Successful in 14s
build-and-release / build (employees) (push) Failing after 1m46s
build-and-release / build (customers) (push) Failing after 1m48s
backend-integration-tests / ai-credits (push) Successful in 5s
build-and-release / build (tutors) (push) Successful in 1m33s
build-and-release / build (video-editors) (push) Successful in 2m26s
build-and-release / build (users) (push) Successful in 2m52s
build-and-release / build (job-seekers) (push) Successful in 6m30s
build-and-release / build (ugc-content-creators) (push) Successful in 7m36s
2026-08-13 17:53:14 +05:30
Ashwin Kumar Sivakumar
3740bb81c5 fix(ci): fetch full git history in ai-credits job for diff-based change detection
Some checks failed
build-and-release / build (employees) (push) Successful in 18s
build-and-release / build (cron) (push) Successful in 23s
build-and-release / build (gateway) (push) Successful in 9s
build-and-release / build (graphic-designers) (push) Successful in 8s
build-and-release / build (catering-services) (push) Successful in 1m38s
build-and-release / build (jobs) (push) Successful in 9s
build-and-release / build (fitness-trainers) (push) Successful in 1m29s
build-and-release / build (payments) (push) Successful in 9s
build-and-release / build (photographers) (push) Successful in 11s
build-and-release / build (companies) (push) Successful in 2m15s
build-and-release / build (customers) (push) Successful in 2m26s
build-and-release / build (tutors) (push) Successful in 18s
build-and-release / build (developers) (push) Successful in 2m48s
build-and-release / build (video-editors) (push) Successful in 18s
backend-integration-tests / ai-credits (push) Failing after 10s
build-and-release / build (job-seekers) (push) Successful in 2m48s
build-and-release / build (makeup-artists) (push) Successful in 2m0s
build-and-release / build (users) (push) Has been cancelled
build-and-release / build (social-media-managers) (push) Has been cancelled
build-and-release / build (ugc-content-creators) (push) Has been cancelled
Previous job died silently right after checkout with no logs at all
from the 'Check for relevant changes' step onward - shallow clone
(default fetch-depth:1, unlike build.yaml which sets fetch-depth:0)
may have been the cause. Matching build.yaml's checkout config.

Also re-set TEST_DATABASE_URL with a properly percent-encoded password
(the raw '@' in it made the postgresql:// URI ambiguous to parse).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 17:48:43 +05:30
Ashwin Kumar Sivakumar
3b4a4eac3f fix(ci): install build-essential before cargo test in ai-credits job
Some checks failed
build-and-release / build (catering-services) (push) Successful in 28s
build-and-release / build (customers) (push) Successful in 30s
build-and-release / build (cron) (push) Successful in 55s
build-and-release / build (companies) (push) Successful in 1m54s
build-and-release / build (job-seekers) (push) Successful in 8s
build-and-release / build (employees) (push) Successful in 2m11s
build-and-release / build (fitness-trainers) (push) Successful in 1m48s
build-and-release / build (developers) (push) Successful in 2m26s
build-and-release / build (gateway) (push) Successful in 2m2s
build-and-release / build (jobs) (push) Successful in 54s
build-and-release / build (graphic-designers) (push) Successful in 2m32s
build-and-release / build (ugc-content-creators) (push) Successful in 8s
build-and-release / build (payments) (push) Successful in 1m50s
build-and-release / build (photographers) (push) Successful in 1m51s
backend-integration-tests / ai-credits (push) Failing after 4s
build-and-release / build (makeup-artists) (push) Successful in 2m32s
build-and-release / build (social-media-managers) (push) Successful in 2m55s
build-and-release / build (tutors) (push) Successful in 2m45s
build-and-release / build (users) (push) Has been cancelled
build-and-release / build (video-editors) (push) Has been cancelled
The bare bookworm runner image has no C toolchain at all, unlike
build.yaml's jobs which build inside a Dockerfile-based image with one
already present. proc-macro2/libc/etc build scripts need `cc` to link
and failed immediately (error: linker `cc` not found) before any real
test code ran.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 17:39:12 +05:30
Ashwin Kumar Sivakumar
da9be7f6a3 feat(db,ci): fix missing ai_credits tables, wire integration tests to CI
Some checks failed
build-and-release / build (cron) (push) Successful in 1m10s
build-and-release / build (developers) (push) Successful in 1m40s
build-and-release / build (catering-services) (push) Successful in 1m58s
build-and-release / build (employees) (push) Successful in 2m19s
build-and-release / build (companies) (push) Successful in 2m36s
build-and-release / build (customers) (push) Successful in 2m45s
build-and-release / build (gateway) (push) Successful in 1m11s
build-and-release / build (jobs) (push) Successful in 40s
build-and-release / build (fitness-trainers) (push) Successful in 2m28s
build-and-release / build (graphic-designers) (push) Successful in 2m14s
build-and-release / build (payments) (push) Successful in 1m48s
build-and-release / build (job-seekers) (push) Successful in 2m57s
build-and-release / build (makeup-artists) (push) Successful in 2m49s
build-and-release / build (photographers) (push) Successful in 2m43s
backend-integration-tests / ai-credits (push) Failing after 31s
build-and-release / build (social-media-managers) (push) Successful in 2m58s
build-and-release / build (tutors) (push) Successful in 2m47s
build-and-release / build (ugc-content-creators) (push) Successful in 2m39s
build-and-release / build (users) (push) Has been cancelled
build-and-release / build (video-editors) (push) Has been cancelled
Re-enables and corrects 20260703210000_ai_credits_wallet, which had been
disabled (.up.sql.skip) in commit 0163349 because 'relation already
exists' aborted the original CREATE TABLE script on its very first
table (ai_plans) - silently leaving ai_credit_ledger and
ai_reservation_holds never created, despite the wallet system being
actively wired into apps/users/handlers/ai_credits.rs, apps/payments,
apps/cron with real subscription rows already in prod.

Rewrote the migration to be idempotent: ADD COLUMN IF NOT EXISTS to
bring ai_plans/user_ai_subscriptions/ai_feature_costs/ai_usage_logs up
to the full column set crates/db/src/models/ai_credits.rs expects
(safe zero/default backfills, no data loss - verified against the 3
existing subscription rows), and CREATE TABLE IF NOT EXISTS for the 2
genuinely-missing tables. down.sql updated to only reverse what this
corrected version actually adds, not drop tables that predate it.

Applied directly to the live database (verified schema + existing rows
intact afterward).

Also wires crates/db/tests/ai_credits.rs + ai_credits_reaper.rs to
Forgejo Actions CI (docs/LIVE_SERVER_RUNBOOK.md step 6):
- New TEST_DATABASE_URL repo secret, pointing at a dedicated
  nxtgauge_test database (created fresh, schema mirrored from live prod
  via pg_dump --schema-only - never runs against the real nxtgauge DB).
- .forgejo/workflows/test.yaml: runs on push to main/high-performance,
  skips when crates/db/ isn't touched, cargo test -p db --test
  ai_credits --test ai_credits_reaper -- --test-threads=1.

Also commits docs/openapi.wallet-holds.json (hand-written minimal
OpenAPI spec used for schemathesis fuzzing in step 4) and gitignores
the local .schemathesis/ cache directory from that run.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-13 17:31:22 +05:30