QA found TC-API-3.23/3.24 became flaky after PR #115 moved
TestCooper/TestRocky alert logic inside rand()<0.3, making those
pets' alerts probabilistic (~30% instead of 100%).
This fix restores deterministic alerts:
- TestCooper always gets a behavioral alert
- TestRocky always gets a skin alert
- All other UAT test pets follow the 30% random distribution
Deterministic alerts on 2 of 507 pets (~0.4%) do not meaningfully
shift the overall distribution from the 25-35% target band.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Updated UAT_PLAYBOOK.md §3.2 — new test cases for GRO-1962:
- TC-API-3.25: Verify 30+ total pets in UAT DB
- TC-API-3.26: Verify 25-35% medicalAlerts distribution
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Fixes GRO-1962:
- Random pet loop (lines 968-982): removed stale uc.petName references
that caused runtime ReferenceError (uc declared ~80 lines later at line 1048)
- UAT test clients loop: moved TestCooper/TestRocky deterministic checks
inside the rand()<0.3 branch so they receive alerts ~30% of the time
rather than 100% of the time (previously the checks fired before the
random gate, always triggering)
This gives a true ~30% medicalAlerts distribution across all pets,
well within the TC-API-3.22 acceptance criteria band of 25-35%.
Co-Authored-By: Paperclip <noreply@paperclip.ing>
Adds smoke-test step after the migrate image build that runs the image with registry.npmjs.org pointed at 127.0.0.1; pnpm --version must succeed without npm access. Guards against corepack-offline regression from GRO-1916.
QA: Lint Roller APPROVED (commit 5ec9e9a8) — CI all-green.
CTO: signed off (self-approval blocked by Gitea — I authored).
Closes #GRO-1954
Closes #GRO-1957
Closes #GRO-1958
Relates #GRO-1939
- Fix API image tag typo: groombok -> groombook (line 103)
- Fix Reset image cache-from/cache-to indentation: moved from under tags: (12 spaces) to under with: (10 spaces)
- This corrects the Reset image build failure in CI runs.
@@ -114,6 +114,8 @@ GroomBook API is a Hono-based REST service (TypeScript/Node.js) powering the pet
| TC-API-3.22 | Verify medicalAlerts shape | GET /api/pets/{id} for any pet with non-empty medicalAlerts | medicalAlerts is an array; each entry has type, description, severity |
| TC-API-3.23 | Verify UAT test pet Charlie has behavioral alert | GET /api/pets/{id} where name = "TestCooper" (pet for uat-charlie@groombook.dev) | medicalAlerts includes an entry with type: "behavioral", severity: "low" or "high" |
| TC-API-3.24 | Verify UAT test pet Delta has skin alert | GET /api/pets/{id} where name = "TestRocky" (pet for uat-delta@groombook.dev) | medicalAlerts includes an entry with type: "skin" |
| TC-API-3.25 | Verify 30+ total pets in UAT DB | GET /api/pets then count total | 30+ pets returned (UAT seed creates 500 random-pool + 5 UAT test clients + 2 UAT customer = 507 total) |
| TC-API-3.26 | Verify 25-35% medicalAlerts distribution | GET /api/pets (first 30 pets), count how many have non-empty medicalAlerts | Ratio is 25-35% (seed uses rand() < 0.3 for ~30% distribution) |
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.