cohorta/backend/app
Vadym Samoilenko 4c70bc8aa6 fix: PDF layout, credit idempotency, more active discussion
- PDF: meta_row redesigned to same-line two-column layout so values
  don't overflow the right edge; explicit cursor reset before each
  multi_cell body() call fixes key themes appearing to the right of
  titles; page numbers now use len(pdf.pages) + pdf.h-12 positioning
- Credits: replace fragile 4h credit_transactions lookup with atomic
  findOneAndUpdate stamp on the focus group doc itself (24h window),
  with rollback on insufficient balance — eliminates double-charging
  on crash/restart; CreditTransaction.record failure is now non-fatal
- Key themes: cap input at 80 messages + max_output_tokens=4096 to
  fix truncated JSON (Unterminated string at char 1580)
- Decision engine: require ≥4 participant responses per question before
  moving on; mandate debate/contrarian seeking after 2 agreements;
  call all participants to each question before anyone speaks 3rd time

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 21:09:14 +01:00
..
auth Complete phases D–G: quota enforcement, token invalidation, admin writes, backfill 2026-04-24 18:34:48 +01:00
models fix(backend): 4 fixes — await add_message, MODEL_ALIASES, language rule, PDF + silent participants 2026-05-25 20:46:39 +01:00
routes fix: PDF layout, credit idempotency, more active discussion 2026-05-25 21:09:14 +01:00
services fix: PDF layout, credit idempotency, more active discussion 2026-05-25 21:09:14 +01:00
utils Add LLM usage tracking infrastructure (Phases A-C) 2026-04-24 18:08:27 +01:00
.DS_Store changed permissions 2025-12-19 19:26:16 +00:00
__init__.py feat(marketplace): persona marketplace — admin publish + user purchase 2026-05-25 17:49:43 +01:00
db.py feat: commit all app changes — billing API, new auth, design overhaul 2026-05-23 19:04:43 +01:00
extensions.py changed permissions 2025-12-19 19:26:16 +00:00
websocket_debug_tap.py changed permissions 2025-12-19 19:26:16 +00:00
websocket_manager.py Apply Jintech security audit remediation (sprint 3) — 87/92 findings fixed 2026-03-20 12:51:18 +00:00
websocket_manager_async.py Fix AI autonomous mode: cross-loop WebSocket emit + polling fallback 2026-03-23 18:22:24 +00:00