fastapi-gsap/gsap_broker
Tyler J King 5ac577af19 fix: CR endpoint — greenlet bug + UUID format + missing column
Three bugs in the complete handler:

1. SQLAlchemy greenlet: ORM model attribute access triggers sync
   lazy-loads in async context. Fix: raw SQL via text() for all
   DB operations in the CR handler.

2. UUID format: SQLite stores UUIDs without hyphens (via SQLModel).
   Raw SQL comparisons must strip hyphens: str(uuid).replace("-","")

3. Missing received_at: NOT NULL constraint on completion_receipts.
   Raw INSERT was missing the column. Added received_at=now().

Full AC/CR cycle now verified:
  AC → 200, principal DID resolved from Keycloak token
  CR → 200, receipt ID + Chronicle CID returned
  Session → 200, chain of custody queryable

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-01 18:51:55 -04:00
..
chronicle feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00
connectors feat: governed connector module 2026-03-30 16:42:38 -04:00
drivers feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00
functions feat: governed function runtime + billing drain 2026-03-30 22:12:29 -04:00
models feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00
routers fix: CR endpoint — greenlet bug + UUID format + missing column 2026-04-01 18:51:55 -04:00
__init__.py feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00
app.py feat: governed function runtime + billing drain 2026-03-30 22:12:29 -04:00
db.py feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00
db_models.py feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00
settings.py feat: fastapi-gsap — lightweight GSAP broker PoC 2026-03-30 14:10:21 -04:00