# B-2 Pre-Fix Test Suite

**Date:** 2026-03-29
**Branch:** culurien
**Purpose:** Document data integrity and concurrency bugs BEFORE fixes.
**Reference:** docs/B2_Data_Integrity_Audit.md

---

## Test Files Created

| File | Package | Bugs Documented |
|------|---------|-----------------|
| `server/internal/api/handlers/registration_transaction_test.go` | `handlers_test` | F-B2-1, F-B2-8 |
| `server/internal/api/handlers/command_delivery_race_test.go` | `handlers_test` | F-B2-2 |
| `server/internal/api/handlers/token_renewal_transaction_test.go` | `handlers_test` | F-B2-9 |
| `server/internal/api/handlers/rapid_mode_ratelimit_test.go` | `handlers_test` | F-B2-4 |
| `server/internal/database/stuck_command_retry_test.go` | `database_test` | F-B2-10 |
| `agent/internal/polling_jitter_test.go` | `internal_test` | F-B2-5 |
| `agent/internal/reconnect_stagger_test.go` | `internal_test` | F-B2-7 |

---

## State-Change Summary

| Test | Bug | Current | After Fix |
|------|-----|---------|-----------|
| TestRegistrationFlowIsNotTransactional | F-B2-1 | PASS | update |
| TestRegistrationFlowMustBeTransactional | F-B2-1 | **FAIL** | PASS |
| TestRegistrationManualRollbackExists | F-B2-1 | PASS | update |
| TestGetCommandsAndMarkSentNotTransactional | F-B2-2 | PASS | update |
| TestGetCommandsMustBeAtomic | F-B2-2 | **FAIL** | PASS |
| TestSelectForUpdatePatternInGetCommands | F-B2-2 | PASS | update |
| TestTokenRenewalIsNotTransactional | F-B2-9 | PASS | update |
| TestTokenRenewalShouldBeTransactional | F-B2-9 | **FAIL** | PASS |
| TestGetCommandsEndpointHasNoRateLimit | F-B2-4 | PASS | update |
| TestGetCommandsEndpointShouldHaveRateLimit | F-B2-4 | **FAIL** | PASS |
| TestRapidModeHasServerSideMaxDuration | F-B2-4 | PASS | PASS |
| TestJitterExceedsRapidModeInterval | F-B2-5 | PASS | update |
| TestJitterDoesNotExceedPollingInterval | F-B2-5 | **FAIL** | PASS |
| TestStuckCommandHasNoMaxRetryCount | F-B2-10 | PASS | update |
| TestStuckCommandHasMaxRetryCount | F-B2-10 | **FAIL** | PASS |
| TestReconnectionUsesFixedJitterOnly | F-B2-7 | PASS | update |
| TestReconnectionUsesExponentialBackoffWithJitter | F-B2-7 | **FAIL** | PASS |

**7 FAIL** (assert post-fix behavior), **10 PASS** (document current state).

---

## Notes

1. All tests are static source inspection — no live database required.
2. All A-series and B-1 tests continue to pass (no regressions).
3. Agent tests in `internal/` package avoid the pre-existing build failures in `migration/pathutils` and `migration/validation` packages.
