Repository navigation
fix(db): do not report success when the database did not save the change (AURORA-3) - #20
Merged
Merged
Conversation
ADR 0017 records the fix for success responses on failed commits: commit before the response (dependency scope "function"), a catch-all 500 problem+json handler, and request-scoped transaction hooks so webhooks and booking idempotency act only after the commit. CONTEXT.md gains the terms. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…e booking commit fails Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…uperseded by ADR 0017 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The random-looking hex secret tripped gitleaks generic-api-key. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…leaks Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
evg-g
added a commit
that referenced
this pull request
Oct 6, 2026
The rebase merge of #20 rewrote 52380ec as 103c04e, so the reviewed fake webhook test secret no longer matched its .gitleaksignore fingerprint and the secret scan failed on main (the README's api ci badge read failing). Both fingerprints are now listed. The README's localhost addresses for a locally running API (health, Swagger UI, ReDoc) were clickable links that fail for any reader; they are now code text. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
ADLC proof report — AURORA-3 —
appointments-apiBuilt by
adlc-report.shfrom the proof log, not from agent summaries.Final tree:
725000806498c28fb552d7351fa46d156b8934fe. Proven: 4. Flagged: 0.[api]test_ac1_api_failed_commit_returns_problem_not_success1fec86cbfa76→ green at725000806498; red because: get_session commits after the response is sent (default request scope), so a cancel whose COMMIT fails still returns 200 with a CANCELLED body; there is no catch-all problem+json handler[api]test_ac2_api_failed_commit_frees_the_idempotency_key2accfe521dfe→ green at725000806498; red because: complete() runs before COMMIT, so after a failed commit the retry with K replays a stored 201 for an appointment that was never saved (GET 404)[data]test_ac3_data_failed_commit_saves_nothingb126bfeef938→ green at725000806498; red because: SessionDep made use_cache=False, so each repository gets its own session/transaction: the cancel's audit row commits in a separate transaction even though the cancel's COMMIT is refused (breaks the cancel example: expect 1 audit row instead of 0)[data]test_ac4_data_failed_commit_publishes_no_webhook_event955016c0dbc5→ green at725000806498; red because: _emit still publishes to the Redis event queue during the request, before the COMMIT, so a failed cancel leaves an appointment.cancelled eventProof log:
/home/evgenig/.adlc/home__evgenig__aurora__appointments-api/proof-log.jsonlReview notes — advisory, not confirmed defects
code-review: a catch-all 500 response carries noX-Request-ID, because Starlette'sServerErrorMiddlewaresits outside the request-id middleware.code-review: ifsession.rollback()itself raises inget_session, theon_rollbackhooks do not run, so a booking's idempotency pending marker stays until its TTL.SessionDepwithuse_cache=False), which only the cancel/audit example can show.test-reviewrated it OK.standards-reviewadded theinternal-errorrow todocs/ERROR_CATALOG.mdand marked the timing parts of ADR 0007 and ADR 0010 as superseded by ADR 0017.🤖 Generated with Claude Code