Block a user
Add core/ports.py - Storage interfaces
Addressed all feedback:
1. PersonalStorage removed
You are right - PersonalStorage was redundant. RoomStorage handles both group and personal bounties via room_id:
- Negative room_id =…
Add core/ports.py - Storage interfaces
feat(core): implement domain dataclasses for issue #5
[Phase 1] Task 1: Create core/models.py — Domain dataclasses
feat(core): implement domain dataclasses for issue #5
Addressed latest feedback:
-
TrackingData.group_id renamed to room_id - now works for both group (negative) and DM (positive) contexts
-
Removed room_id from TrackedBounty - it is now…
feat(core): implement domain dataclasses for issue #5
Addressed remaining feedback:
-
Bounty.created_by_user_id is now non-optional - always required, indicates who created the bounty (not group vs personal)
-
**RoomData no longer has…
feat(core): implement domain dataclasses for issue #5
Addressed all review feedback:
- Removed GroupBounty/PersonalBounty subclasses - now using Bounty with optional
created_by_user_idfield. If set, it is a group bounty; if None, it is a…
feat(config): implement configuration management
[Phase 1] Task 3: Create config.py — Configuration management
feat(core): implement domain dataclasses for issue #5
Test results for feat/issue-5-core-models:
============================= test session starts ==============================
platform linux -- Python 3.14.3, pytest-8.3.5, pluggy-1.6.0
plugins:…
feat(config): implement configuration management
Test results for feat/issue-7-config:
============================= test session starts ==============================
platform linux -- Python 3.14.3, pytest-8.3.5, pluggy-1.6.0
plugins:…
feat(core): implement domain dataclasses for issue #5