Commit graph

314 commits

Author SHA1 Message Date
ed464a3678 docs: add postmortem for 4.2.46 test matrix failures 2026-01-29 16:04:31 -05:00
24277e2d92 chore: bump version to 4.2.48 2026-01-29 15:56:14 -05:00
cf5530875c fix(ci): improve test reliability and failure diagnostics
- detect-changes: VERSION/Makefile changes trigger full test matrix
- test-sdk: fix service_destroy treating "not found" as success
- test-sdk: skip qr_generate on missing deps instead of failing
- test-sdk: increase backoff cap from 10s to 30s for overloaded pools
- test-sdk: increase no-match retry from 3 to 5 with longer delay
- test-sdk: detect nginx error messages (bad gateway, etc) as 5xx
- test-sdk: show HTTP status and error details on test failure
2026-01-29 15:56:09 -05:00
GitLab CI
f691fa2518 perf: Update aggregated performance analysis [ci skip] 2026-01-29 15:47:45 -05:00
GitLab CI
46bdbe8a45 perf - Add performance report for 4.2.46 [ci skip] 2026-01-29 15:47:15 -05:00
93224fd60a chore: bump version to 4.2.46 2026-01-29 15:20:02 -05:00
9868b696e4 fix(tests): prevent orphaned services from create retries
Use a single service name per test run instead of unique-per-attempt.
If a 5xx hides a successful create, the retry gets a 409 and we look
up the existing service ID instead of creating another orphan.
2026-01-29 13:57:16 -05:00
70bfb536bc fix(cleanup): detect 503/502 errors as failures and retry 2026-01-29 13:53:53 -05:00
8cf3276f77 chore: bump version to 4.2.45 2026-01-29 13:25:36 -05:00
495d916cfc fix(cleanup): add retry rounds with backoff for failed destroys
- 3 retry rounds, re-lists remaining resources each round
- 5s/10s/15s backoff between rounds
- Quiet output (only shows Destroyed/Failed per ID)
2026-01-29 12:58:09 -05:00
0620310781 ci: fix manual-cleanup visibility on all pipelines 2026-01-29 12:49:23 -05:00
2330a05518 chore: bump version to 4.2.44 2026-01-29 12:40:44 -05:00
7baae23164 ci: add fast parallel cleanup + manual trigger
- New scripts/cleanup-test-resources.sh runs 10 parallel destroys
- Manual 'Emergency Cleanup' job in GitLab UI
- Test matrix cleanup now uses parallel script
2026-01-29 12:40:36 -05:00
271cfb71e7 chore: bump version to 4.2.43 2026-01-29 12:03:18 -05:00
72cbbc0589 ci: add resource_group to prevent concurrent test runs
Prevents race condition where cleanup phase of one pipeline
destroys services still in use by another pipeline.
2026-01-29 12:03:13 -05:00
8feba9b21b chore: bump version to 4.2.42 2026-01-29 11:53:57 -05:00
8ab3160306 fix(tests): faster retries, unique service names, bash local fix
- Remove 'local' outside function (line 442)
- Reduce max retry from 10 to 5 for service_create
- Cap backoff at 10s instead of 60s (both run_test and service_create)
- Generate unique service name per attempt (fixes 409 conflicts)
- Handle HTTP 409 as retriable error
2026-01-29 11:53:52 -05:00
GitLab CI
9ec2f5a4e7 perf: Update aggregated performance analysis [ci skip] 2026-01-29 10:59:19 -05:00
GitLab CI
89219909c8 perf - Add performance report for 4.2.38 [ci skip] 2026-01-29 10:57:39 -05:00
fefdd7c811 chore: bump version to 4.2.40 2026-01-29 10:41:22 -05:00
fbc998a750 chore: bump version to 4.2.39 2026-01-29 09:46:16 -05:00
4c2aec9862 fix(tests): retry on pattern mismatch (up to 3 times)
When API returns 200 but output doesn't match expected pattern,
retry up to 3 times. This handles cases where service operations
succeed but the service isn't fully ready yet.
2026-01-29 09:45:51 -05:00
GitLab CI
e3dbafb701 perf: Update aggregated performance analysis [ci skip] 2026-01-29 08:56:40 -05:00
GitLab CI
bd2461d4ef perf - Add performance report for 4.2.37 [ci skip] 2026-01-29 08:56:12 -05:00
c7d1fe14cd chore: bump version to 4.2.37 2026-01-29 08:21:04 -05:00
4e4ae3c911 fix: add shebangs to async SDK implementations
Add #!/usr/bin/env interpreter lines to async SDKs for portability:
- Python: #!/usr/bin/env python3
- JavaScript: #!/usr/bin/env node
- Ruby: #!/usr/bin/env ruby
- PHP: #!/usr/bin/env php
2026-01-29 06:09:44 -05:00
GitLab CI
6120f3585d perf: Update aggregated performance analysis [ci skip] 2026-01-28 21:04:35 -05:00
GitLab CI
859addd016 perf - Add performance report for 4.2.36 [ci skip] 2026-01-28 21:04:08 -05:00
092c88cab1 chore: bump version to 4.2.36 2026-01-28 18:40:21 -05:00
8da77c6dd1 feat(reports): add API health tracking to perf reports
- generate-perf-report.sh now collects api-health.json from test artifacts
- Aggregates retry counts by type (429, 5xx, timeout, connection)
- Calculates API health score (100 = perfect, decreases with retries)
- Adds API Health section to perf.md with interpretation guide
- aggregate-performance-reports.py now shows API health trends over time
- Tracks scientific integrity improvements starting from 4.2.34
2026-01-28 18:40:10 -05:00
ee43329a55 chore: bump version to 4.2.35 2026-01-28 18:33:17 -05:00
b651bf2b63 feat(tests): add transient error tracking for API health monitoring
Track retry counts by error type (429, 5xx, timeout, connection) and
output API Health Report at end of each test run. Writes api-health.json
for aggregation across all 42 SDKs.

This lets us monitor API reliability over time and identify patterns.
2026-01-28 18:33:04 -05:00
0db0c9be22 chore: bump version to 4.2.34 2026-01-28 18:26:23 -05:00
ab70e8b508 fix(tests): remove soft passes - tests must never lie
SCIENTIFIC INTEGRITY: Tests now retry transient errors (429, 5xx,
timeouts) with exponential backoff instead of falsely passing.

Prior to this fix, ~35% of 'passing' tests were masked failures.
Now tests will PASS (verified), FAIL (couldn't verify), or SKIP.
2026-01-28 18:26:23 -05:00
GitLab CI
2316595f6f perf: Update aggregated performance analysis [ci skip] 2026-01-28 17:24:35 -05:00
GitLab CI
eda673069f perf - Add performance report for 4.2.32 [ci skip] 2026-01-28 17:23:51 -05:00
GitLab CI
27725bc535 perf: Update aggregated performance analysis [ci skip] 2026-01-28 17:18:13 -05:00
GitLab CI
ccc9681982 perf - Add performance report for 4.2.31 [ci skip] 2026-01-28 17:17:45 -05:00
GitLab CI
be65c03eee perf: Update aggregated performance analysis [ci skip] 2026-01-28 17:16:59 -05:00
GitLab CI
ce03941151 perf - Add performance report for 4.2.30 [ci skip] 2026-01-28 17:16:33 -05:00
6997552307 chore: bump version to 4.2.31 2026-01-28 17:04:02 -05:00
23b47bfbf8 fix(qr): Groovy use qrencode CLI instead of ZXing 2026-01-28 17:03:58 -05:00
GitLab CI
50069440b4 perf: Update aggregated performance analysis [ci skip] 2026-01-28 15:40:40 -05:00
GitLab CI
257dc4cf6b perf - Add performance report for 4.2.29 [ci skip] 2026-01-28 15:40:14 -05:00
15f37c8acc chore: bump version to 4.2.29
Test QR code functional tests with updated container image.
2026-01-28 15:32:42 -05:00
bd91337584 fix(qr): Crystal use C FFI instead of qr-code shard
Crystal shards pre-cached during build aren't available for
single-file execution. Use @[Link("qrencode")] FFI instead.
2026-01-28 07:59:57 -05:00
edfe6dc865 fix(qr): Fortran dlopen FFI + Nim versioned library names
- Fortran: use dlopen/dlsym at runtime instead of direct linking
  (sandbox doesn't pass -lqrencode to gfortran)
- Both: try libqrencode.so.4, .so.3, .so in order
2026-01-28 07:41:29 -05:00
99ac93b2d5 fix(qr): update 4 failing language tests
- Perl: use Text::QRCode (pure Perl, pre-installed) instead of Imager::QRCode
- Elixir: try Erlang :qrcode module, fallback to CLI
- OCaml: use Unix.open_process_in (no ctypes in compiled mode)
- Fortran: direct C FFI binding (requires -lqrencode at link)
2026-01-28 07:04:21 -05:00
d517236663 fix(ci): match test/ directory in change detection (was tests/)
The QR test files live in test/ (singular) but detect-changes.sh
only matched tests/ (plural), causing the matrix to skip.
2026-01-28 06:43:41 -05:00
bec3f8c289 fix(qr): rewrite 7 failing language tests to use native C FFI
All use dlopen/dlsym to libqrencode.so (system-wide via gcc role):
- Haskell: System.Posix.DynamicLinker + foreign import ccall "dynamic"
- F#: Mono P/Invoke DllImport("libqrencode.so")
- COBOL: LINKAGE SECTION for proper struct pointer access
- Nim: dynlib module (loadLib/symAddr)
- Fortran: renamed dlclose binding to avoid symbol collision
- D: core.sys.posix.dlfcn (dlopen/dlsym)
- OCaml: Ctypes.foreign via ocamlfind #require
2026-01-27 19:53:21 -05:00