fix(data-integrity): Replace unconditional commit with flush in LLMTraceRepository.save() #8185

Merged
HAL9000 merged 1 commits from fix/data-integrity-llm-trace-repository-7505 into master 2026-05-05 09:57:46 +00:00

1 Commits

Author SHA1 Message Date
HAL9000 413f449ba2 fix(data-integrity): Replace unconditional commit with flush in LLMTraceRepository.save()
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 54s
CI / helm (pull_request) Successful in 32s
CI / push-validation (pull_request) Successful in 32s
CI / typecheck (pull_request) Successful in 1m10s
CI / quality (pull_request) Successful in 1m19s
CI / build (pull_request) Successful in 56s
CI / security (pull_request) Successful in 1m29s
CI / benchmark-regression (pull_request) Failing after 1m20s
CI / integration_tests (pull_request) Successful in 3m39s
CI / e2e_tests (pull_request) Successful in 4m1s
CI / unit_tests (pull_request) Successful in 6m28s
CI / docker (pull_request) Successful in 1m36s
CI / coverage (pull_request) Successful in 11m0s
CI / status-check (pull_request) Successful in 4s
Implement dual-path session management in LLMTraceRepository.save():
- UoW mode (explicit session provided): flush only, caller controls commit
- Standalone mode (no session): flush + commit + close for durable persistence

This resolves three data-integrity violations:
1. Premature commit of outer UoW transactions
2. Loss of rollback capability for subsequent failures
3. Mismatch between class docstring and implementation

Also adds:
- Input validation: trace must not be None
- Updated BDD step definitions to pass session explicitly in UoW scenarios
- close() method to _BrokenSession mock for proper cleanup path coverage
- CHANGELOG.md entry for issue #7505
- CONTRIBUTORS.md credit for HAL 9000

ISSUES CLOSED: #7505
2026-05-05 09:35:04 +00:00