core-framework 2.3.3__tar.gz → 3.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- core_framework-3.1.0/.cursor/rules/constitution.mdc +47 -0
- core_framework-3.1.0/.cursor/skills/code-review/SKILL.md +35 -0
- core_framework-3.1.0/.cursor/skills/sync-host-rules/SKILL.md +52 -0
- core_framework-3.1.0/.github/ci/package-lock.json +6064 -0
- core_framework-3.1.0/.github/ci/package.json +7 -0
- core_framework-3.1.0/.github/workflows/_deploy.yml +233 -0
- core_framework-3.1.0/.github/workflows/dev-ci-cd.yaml +235 -0
- core_framework-3.1.0/.github/workflows/manual-deployment.yaml +52 -0
- core_framework-3.1.0/.github/workflows/manual-observability-deployment.yaml +225 -0
- core_framework-3.1.0/.github/workflows/publish-pypi.yml +38 -0
- core_framework-3.1.0/.github/workflows/test.yaml +187 -0
- core_framework-3.1.0/.gitignore +38 -0
- core_framework-3.1.0/.pre-commit-config.yaml +63 -0
- core_framework-3.1.0/CHANGELOG.md +575 -0
- core_framework-3.1.0/PKG-INFO +144 -0
- core_framework-3.1.0/README.md +99 -0
- core_framework-3.1.0/alembic/notification/alembic/versions/2fdd68777706_notification_read_at_retention_index.py +28 -0
- core_framework-3.1.0/config.toml +139 -0
- core_framework-3.1.0/config.toml.template +123 -0
- core_framework-3.1.0/core_framework/api/admin/cache/schemas.py +91 -0
- core_framework-3.1.0/core_framework/api/admin/moderation/router.py +211 -0
- core_framework-3.1.0/core_framework/api/admin/outbox/router.py +61 -0
- core_framework-3.1.0/core_framework/api/admin/router.py +23 -0
- core_framework-3.1.0/core_framework/api/attachments/router.py +43 -0
- core_framework-3.1.0/core_framework/api/comments/authenticated/router.py +143 -0
- core_framework-3.1.0/core_framework/api/comments/authenticated/schemas.py +79 -0
- core_framework-3.1.0/core_framework/api/dependencies.py +145 -0
- core_framework-3.1.0/core_framework/api/events/schemas.py +21 -0
- core_framework-3.1.0/core_framework/api/posts/authenticated/router.py +111 -0
- core_framework-3.1.0/core_framework/api/posts/authenticated/schemas.py +77 -0
- core_framework-3.1.0/core_framework/api/system/router.py +100 -0
- core_framework-3.1.0/core_framework/api/upload.py +11 -0
- core_framework-3.1.0/core_framework/api/users/authenticated/router.py +542 -0
- core_framework-3.1.0/core_framework/application/analytics/refresh_service.py +54 -0
- core_framework-3.1.0/core_framework/application/analytics/registry.py +35 -0
- core_framework-3.1.0/core_framework/application/auth/auth_service.py +26 -0
- core_framework-3.1.0/core_framework/application/auth/token_verification.py +29 -0
- core_framework-3.1.0/core_framework/application/bootstrap.py +57 -0
- core_framework-3.1.0/core_framework/application/comments/authenticated_service.py +234 -0
- core_framework-3.1.0/core_framework/application/events/event_service.py +148 -0
- core_framework-3.1.0/core_framework/application/media/README.md +19 -0
- core_framework-3.1.0/core_framework/application/media/attachment_read.py +83 -0
- core_framework-3.1.0/core_framework/application/media/attachment_service.py +495 -0
- core_framework-3.1.0/core_framework/application/media/avatar_service.py +168 -0
- core_framework-3.1.0/core_framework/application/moderation/moderator_service.py +42 -0
- core_framework-3.1.0/core_framework/application/moderation/user_service.py +218 -0
- core_framework-3.1.0/core_framework/application/notifications/mute_service.py +34 -0
- core_framework-3.1.0/core_framework/application/notifications/notification_service.py +156 -0
- core_framework-3.1.0/core_framework/application/notifications/prune_service.py +8 -0
- core_framework-3.1.0/core_framework/application/outbox/events.py +122 -0
- core_framework-3.1.0/core_framework/application/outbox/ops_service.py +72 -0
- core_framework-3.1.0/core_framework/application/outbox/polling_service.py +69 -0
- core_framework-3.1.0/core_framework/application/outbox/processing_service.py +94 -0
- core_framework-3.1.0/core_framework/application/posts/aggregation_service.py +51 -0
- core_framework-3.1.0/core_framework/application/posts/authenticated_service.py +130 -0
- core_framework-3.1.0/core_framework/application/shared/worker_jobs.py +62 -0
- core_framework-3.1.0/core_framework/application/users/admin_service.py +308 -0
- core_framework-3.1.0/core_framework/application/users/authenticated_service.py +373 -0
- core_framework-3.1.0/core_framework/constants.py +15 -0
- core_framework-3.1.0/core_framework/core/__init__.py +33 -0
- core_framework-3.1.0/core_framework/core/cache.py +176 -0
- core_framework-3.1.0/core_framework/core/context.py +40 -0
- core_framework-3.1.0/core_framework/core/database.py +114 -0
- core_framework-3.1.0/core_framework/core/exception_handlers/common.py +66 -0
- core_framework-3.1.0/core_framework/core/http_client.py +64 -0
- core_framework-3.1.0/core_framework/core/http_probes.py +4 -0
- core_framework-3.1.0/core_framework/core/logging.py +120 -0
- core_framework-3.1.0/core_framework/core/middleware.py +160 -0
- core_framework-3.1.0/core_framework/core/observability.py +648 -0
- core_framework-3.1.0/core_framework/core/pagination.py +198 -0
- core_framework-3.1.0/core_framework/core/redis.py +61 -0
- core_framework-3.1.0/core_framework/core/settings.py +500 -0
- core_framework-3.1.0/core_framework/domains/analytics/__init__.py +22 -0
- core_framework-3.1.0/core_framework/domains/analytics/dependencies.py +64 -0
- core_framework-3.1.0/core_framework/domains/analytics/service.py +300 -0
- core_framework-3.1.0/core_framework/domains/auth/README.md +68 -0
- core_framework-3.1.0/core_framework/domains/auth/ports/auth.py +54 -0
- core_framework-3.1.0/core_framework/domains/auth/service.py +58 -0
- core_framework-3.1.0/core_framework/domains/comment/__init__.py +51 -0
- core_framework-3.1.0/core_framework/domains/comment/dependencies.py +61 -0
- core_framework-3.1.0/core_framework/domains/comment/repository.py +2394 -0
- core_framework-3.1.0/core_framework/domains/comment/service.py +946 -0
- core_framework-3.1.0/core_framework/domains/media/README.md +30 -0
- core_framework-3.1.0/core_framework/domains/media/__init__.py +59 -0
- core_framework-3.1.0/core_framework/domains/media/attachment/components/finals_publisher.py +46 -0
- core_framework-3.1.0/core_framework/domains/media/attachment/components/staging.py +166 -0
- core_framework-3.1.0/core_framework/domains/media/attachment/ports/staging.py +44 -0
- core_framework-3.1.0/core_framework/domains/media/avatar/components/finals_publisher.py +46 -0
- core_framework-3.1.0/core_framework/domains/media/avatar/ports/staging.py +42 -0
- core_framework-3.1.0/core_framework/domains/media/banner/components/finals_publisher.py +41 -0
- core_framework-3.1.0/core_framework/domains/media/banner/components/staging.py +142 -0
- core_framework-3.1.0/core_framework/domains/media/banner/components/variant_encoder.py +41 -0
- core_framework-3.1.0/core_framework/domains/media/banner/ports/staging.py +42 -0
- core_framework-3.1.0/core_framework/domains/media/banner/service.py +329 -0
- core_framework-3.1.0/core_framework/domains/media/dependencies.py +332 -0
- core_framework-3.1.0/core_framework/domains/media/shared/exceptions.py +14 -0
- core_framework-3.1.0/core_framework/domains/media/shared/utils.py +45 -0
- core_framework-3.1.0/core_framework/domains/moderation/__init__.py +41 -0
- core_framework-3.1.0/core_framework/domains/moderation/dependencies.py +90 -0
- core_framework-3.1.0/core_framework/domains/moderation/repository.py +1304 -0
- core_framework-3.1.0/core_framework/domains/moderation/service.py +884 -0
- core_framework-3.1.0/core_framework/domains/notification/README.md +156 -0
- core_framework-3.1.0/core_framework/domains/notification/__init__.py +16 -0
- core_framework-3.1.0/core_framework/domains/notification/dependencies.py +61 -0
- core_framework-3.1.0/core_framework/domains/notification/repository.py +629 -0
- core_framework-3.1.0/core_framework/domains/notification/service.py +301 -0
- core_framework-3.1.0/core_framework/domains/outbox/README.md +69 -0
- core_framework-3.1.0/core_framework/domains/outbox/__init__.py +19 -0
- core_framework-3.1.0/core_framework/domains/outbox/exceptions.py +10 -0
- core_framework-3.1.0/core_framework/domains/outbox/models.py +82 -0
- core_framework-3.1.0/core_framework/domains/outbox/ports/producer.py +42 -0
- core_framework-3.1.0/core_framework/domains/outbox/service.py +62 -0
- core_framework-3.1.0/core_framework/domains/post/__init__.py +42 -0
- core_framework-3.1.0/core_framework/domains/post/dependencies.py +61 -0
- core_framework-3.1.0/core_framework/domains/post/outcomes.py +12 -0
- core_framework-3.1.0/core_framework/domains/post/repository.py +2248 -0
- core_framework-3.1.0/core_framework/domains/post/service.py +935 -0
- core_framework-3.1.0/core_framework/domains/repository_sql.py +44 -0
- core_framework-3.1.0/core_framework/domains/user/__init__.py +55 -0
- core_framework-3.1.0/core_framework/domains/user/dependencies.py +90 -0
- core_framework-3.1.0/core_framework/domains/user/outcomes.py +26 -0
- core_framework-3.1.0/core_framework/domains/user/repository.py +1710 -0
- core_framework-3.1.0/core_framework/domains/user/service.py +981 -0
- core_framework-3.1.0/core_framework/domains/utils.py +241 -0
- core_framework-3.1.0/core_framework/infrastructure/__init__.py +0 -0
- core_framework-3.1.0/core_framework/infrastructure/firebase/__init__.py +0 -0
- core_framework-3.1.0/core_framework/infrastructure/firebase/firebase_auth_adapter.py +114 -0
- core_framework-3.1.0/core_framework/infrastructure/media/__init__.py +0 -0
- core_framework-3.1.0/core_framework/infrastructure/media/local_attachment_staging_adapter.py +76 -0
- core_framework-3.1.0/core_framework/infrastructure/media/local_avatar_staging_adapter.py +93 -0
- core_framework-3.1.0/core_framework/infrastructure/media/local_banner_staging_adapter.py +93 -0
- core_framework-3.1.0/core_framework/infrastructure/media/pillow_staging_image.py +69 -0
- core_framework-3.1.0/core_framework/infrastructure/media/ssh_attachment_finals_publisher_adapter.py +120 -0
- core_framework-3.1.0/core_framework/infrastructure/media/ssh_banner_finals_publisher_adapter.py +103 -0
- core_framework-3.1.0/core_framework/infrastructure/media/ssh_finals_publisher_adapter.py +123 -0
- core_framework-3.1.0/core_framework/infrastructure/media/staging_paths.py +46 -0
- core_framework-3.1.0/core_framework/infrastructure/outbox/__init__.py +0 -0
- core_framework-3.1.0/core_framework/infrastructure/outbox/outbox_consumer_adapter.py +166 -0
- core_framework-3.1.0/core_framework/infrastructure/outbox/outbox_producer_adapter.py +73 -0
- core_framework-3.1.0/core_framework/main.py +69 -0
- core_framework-3.1.0/core_framework/py.typed +0 -0
- core_framework-3.1.0/core_framework/testing/arq.py +121 -0
- core_framework-3.1.0/core_framework/testing/auth.py +304 -0
- core_framework-3.1.0/core_framework/testing/firebase.py +132 -0
- core_framework-3.1.0/core_framework/testing/httpx_test_client.py +28 -0
- core_framework-3.1.0/core_framework/testing/plugin.py +218 -0
- core_framework-3.1.0/core_framework/worker/__init__.py +0 -0
- core_framework-3.1.0/core_framework/worker/main.py +122 -0
- core_framework-3.1.0/core_framework/worker/schedules/__init__.py +138 -0
- core_framework-3.1.0/core_framework/worker/schedules/analytics_refresh_cron.py +20 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_aggregate_comment_stats.py +45 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_aggregate_post_stats.py +43 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_aggregate_user_stats.py +43 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_expired_account_deletions.py +37 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_expired_mute_lifts.py +34 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_prune_analytics_daily_facts.py +15 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_prune_post_views.py +16 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_prune_read_notifications.py +16 -0
- core_framework-3.1.0/core_framework/worker/schedules/schedule_purge_expired_create_idempotency_keys.py +17 -0
- core_framework-3.1.0/core_framework/worker/tasks/__init__.py +59 -0
- core_framework-3.1.0/core_framework/worker/tasks/process_media_asset_variants.py +32 -0
- core_framework-3.1.0/core_framework/worker/tasks/process_mute_lift.py +15 -0
- core_framework-3.1.0/deploy/README.md +27 -0
- core_framework-3.1.0/deploy/app/dockerfile +74 -0
- core_framework-3.1.0/deploy/observability/.env.example +7 -0
- core_framework-3.1.0/deploy/observability/README.md +11 -0
- core_framework-3.1.0/deploy/observability/docker-compose.yml +153 -0
- core_framework-3.1.0/deploy/observability/grafana/dashboards/application/api-http.json +297 -0
- core_framework-3.1.0/deploy/observability/grafana/dashboards/application/worker-jobs.json +250 -0
- core_framework-3.1.0/deploy/observability/grafana/dashboards/infrastructure/node-exporter.json +23900 -0
- core_framework-3.1.0/deploy/observability/grafana/dashboards/infrastructure/postgres-exporter.json +1453 -0
- core_framework-3.1.0/deploy/observability/grafana/dashboards/infrastructure/redis-exporter.json +1620 -0
- core_framework-3.1.0/deploy/observability/grafana/provisioning/dashboards/dashboards.yml +26 -0
- core_framework-3.1.0/deploy/observability/grafana/provisioning/datasources/datasources.yml +49 -0
- core_framework-3.1.0/deploy/observability/loki.yaml +61 -0
- core_framework-3.1.0/deploy/observability/otel-collector-config.yaml +54 -0
- core_framework-3.1.0/deploy/observability/prometheus.yml +39 -0
- core_framework-3.1.0/deploy/observability/targets/node/.gitkeep +0 -0
- core_framework-3.1.0/deploy/observability/targets/postgres/.gitkeep +0 -0
- core_framework-3.1.0/deploy/observability/targets/redis/.gitkeep +0 -0
- core_framework-3.1.0/deploy/observability/targets.example/README.md +19 -0
- core_framework-3.1.0/deploy/observability/targets.example/node.yml.example +9 -0
- core_framework-3.1.0/deploy/observability/targets.example/postgres.yml.example +5 -0
- core_framework-3.1.0/deploy/observability/targets.example/redis.yml.example +6 -0
- core_framework-3.1.0/deploy/observability/tempo.yaml +30 -0
- core_framework-3.1.0/docs/README.md +48 -0
- core_framework-3.1.0/docs/deployments/README.md +56 -0
- core_framework-3.1.0/docs/deployments/deploy-playbook.md +236 -0
- core_framework-3.1.0/docs/deployments/edge-rate-limits.md +63 -0
- core_framework-3.1.0/docs/deployments/edge-upload-limits.md +70 -0
- core_framework-3.1.0/docs/deployments/examples/Caddyfile.example +69 -0
- core_framework-3.1.0/docs/deployments/examples/Caddyfile.observability.example +13 -0
- core_framework-3.1.0/docs/deployments/guides/playbook/postgres-backup-playbook.md +303 -0
- core_framework-3.1.0/docs/deployments/guides/playbook/py-spy-playbook.md +203 -0
- core_framework-3.1.0/docs/deployments/guides/setup/app-server-deploy-ssh.md +72 -0
- core_framework-3.1.0/docs/deployments/guides/setup/caddy-setup.md +57 -0
- core_framework-3.1.0/docs/deployments/guides/setup/cloudflare-setup.md +129 -0
- core_framework-3.1.0/docs/deployments/guides/setup/image-server-ssh.md +99 -0
- core_framework-3.1.0/docs/deployments/guides/setup/observability-lgtm-setup.md +204 -0
- core_framework-3.1.0/docs/deployments/guides/setup/postgres-backup-setup.md +323 -0
- core_framework-3.1.0/docs/deployments/guides/setup/postgres-setup.md +165 -0
- core_framework-3.1.0/docs/deployments/guides/setup/py-spy-setup.md +42 -0
- core_framework-3.1.0/docs/deployments/guides/setup/redis-setup.md +117 -0
- core_framework-3.1.0/docs/deployments/guides/setup/ubuntu-server-setup.md +179 -0
- core_framework-3.1.0/docs/deployments/postgres-backup-design.md +176 -0
- core_framework-3.1.0/docs/deployments/release-playbook.md +84 -0
- core_framework-3.1.0/docs/design/README.md +31 -0
- core_framework-3.1.0/docs/design/create-idempotency-design.md +282 -0
- core_framework-3.1.0/docs/design/event-outbox-design.md +603 -0
- core_framework-3.1.0/docs/design/events-ingest-design.md +228 -0
- core_framework-3.1.0/docs/design/media-storage-topology.md +141 -0
- core_framework-3.1.0/docs/design/observability-lgtm-design.md +591 -0
- core_framework-3.1.0/docs/design/outbox-admin-ops-design.md +337 -0
- core_framework-3.1.0/docs/domains/README.md +23 -0
- core_framework-3.1.0/docs/domains/auth/access_control.md +70 -0
- core_framework-3.1.0/docs/domains/auth/registration.md +60 -0
- core_framework-3.1.0/docs/domains/comments/create_comment.md +174 -0
- core_framework-3.1.0/docs/domains/comments/edit_comment.md +74 -0
- core_framework-3.1.0/docs/domains/deletion/posts.md +312 -0
- core_framework-3.1.0/docs/domains/events/events.md +245 -0
- core_framework-3.1.0/docs/domains/media/banner-upload-design.md +150 -0
- core_framework-3.1.0/docs/domains/media/post-comment-attachments-design.md +521 -0
- core_framework-3.1.0/docs/domains/media/upload-pipeline-design.md +468 -0
- core_framework-3.1.0/docs/domains/moderation/restrictions.md +250 -0
- core_framework-3.1.0/docs/domains/notifications/notification_inbox.md +384 -0
- core_framework-3.1.0/docs/domains/outbox/admin_outbox_ops.md +187 -0
- core_framework-3.1.0/docs/domains/posts/README.md +34 -0
- core_framework-3.1.0/docs/domains/posts/create_post.md +120 -0
- core_framework-3.1.0/docs/domains/posts/delete_post.md +64 -0
- core_framework-3.1.0/docs/domains/users/account_deletion.md +111 -0
- core_framework-3.1.0/docs/domains/users/admin_users.md +166 -0
- core_framework-3.1.0/docs/domains/users/check_username_exists.md +57 -0
- core_framework-3.1.0/docs/domains/users/user_stats_aggregation.md +80 -0
- core_framework-3.1.0/docs/library/capability-wiring.md +127 -0
- core_framework-3.1.0/docs/library/core-framework-migration.md +253 -0
- core_framework-3.1.0/docs/library/overview.md +55 -0
- core_framework-3.1.0/docs/library/package-api.md +564 -0
- core_framework-3.1.0/docs/library/testing-plugin-design.md +317 -0
- core_framework-3.1.0/docs/library/workers.md +89 -0
- core_framework-3.1.0/docs/platform/architecture-decisions.md +537 -0
- core_framework-3.1.0/docs/platform/client-error-visibility.md +271 -0
- core_framework-3.1.0/docs/platform/conventions.md +100 -0
- core_framework-3.1.0/docs/platform/domain-services-and-adapters.md +60 -0
- core_framework-3.1.0/docs/reviews/README.md +11 -0
- core_framework-3.1.0/docs/reviews/log.md +12 -0
- core_framework-3.1.0/docs/reviews/review-playbook.md +192 -0
- core_framework-3.1.0/docs/reviews/slices.md +301 -0
- core_framework-3.1.0/docs/testing.md +150 -0
- core_framework-3.1.0/docs/todo.md +4 -0
- core_framework-3.1.0/makefile +61 -0
- core_framework-3.1.0/pyproject.toml +154 -0
- core_framework-3.1.0/tach.toml +176 -0
- core_framework-3.1.0/tests/__init__.py +0 -0
- core_framework-3.1.0/tests/e2e/_settings.py +40 -0
- core_framework-3.1.0/tests/e2e/smoke/system_test.py +31 -0
- core_framework-3.1.0/tests/integration/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/analytics/_helpers.py +141 -0
- core_framework-3.1.0/tests/integration/api/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/_destructive_delete_helpers.py +51 -0
- core_framework-3.1.0/tests/integration/api/_http_helpers.py +95 -0
- core_framework-3.1.0/tests/integration/api/_user_deletion_helpers.py +63 -0
- core_framework-3.1.0/tests/integration/api/_user_helpers.py +26 -0
- core_framework-3.1.0/tests/integration/api/admin/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/analytics/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/analytics/router_test.py +263 -0
- core_framework-3.1.0/tests/integration/api/admin/cache/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/cache/router_test.py +307 -0
- core_framework-3.1.0/tests/integration/api/admin/comments/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/comments/router_test.py +735 -0
- core_framework-3.1.0/tests/integration/api/admin/moderation/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/moderation/router_test.py +2545 -0
- core_framework-3.1.0/tests/integration/api/admin/outbox/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/outbox/router_test.py +337 -0
- core_framework-3.1.0/tests/integration/api/admin/posts/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/admin/posts/router_test.py +472 -0
- core_framework-3.1.0/tests/integration/api/admin/users/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/attachments/_helpers.py +210 -0
- core_framework-3.1.0/tests/integration/api/auth/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/comments/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/comments/authenticated/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/comments/authenticated/comment_writes_integration_test.py +663 -0
- core_framework-3.1.0/tests/integration/api/comments/comment_attachments_integration_test.py +576 -0
- core_framework-3.1.0/tests/integration/api/comments/public/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/comments/public/router_test.py +514 -0
- core_framework-3.1.0/tests/integration/api/create_idempotency_integration_test.py +486 -0
- core_framework-3.1.0/tests/integration/api/events/router_test.py +758 -0
- core_framework-3.1.0/tests/integration/api/mentions/mentions_integration_test.py +381 -0
- core_framework-3.1.0/tests/integration/api/notifications/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/notifications/router_test.py +538 -0
- core_framework-3.1.0/tests/integration/api/posts/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/posts/authenticated/post_writes_integration_test.py +311 -0
- core_framework-3.1.0/tests/integration/api/posts/comment_count_aggregation_test.py +140 -0
- core_framework-3.1.0/tests/integration/api/posts/followers_visibility_test.py +144 -0
- core_framework-3.1.0/tests/integration/api/posts/post_attachments_integration_test.py +660 -0
- core_framework-3.1.0/tests/integration/api/posts/post_deletion_integration_test.py +624 -0
- core_framework-3.1.0/tests/integration/api/posts/post_stats_dirty_marking_test.py +212 -0
- core_framework-3.1.0/tests/integration/api/posts/public/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/posts/public/router_test.py +1015 -0
- core_framework-3.1.0/tests/integration/api/system/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/system/router_test.py +56 -0
- core_framework-3.1.0/tests/integration/api/users/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/users/authenticated/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/users/authenticated/router_test.py +1100 -0
- core_framework-3.1.0/tests/integration/api/users/deletion_audit_integration_test.py +187 -0
- core_framework-3.1.0/tests/integration/api/users/public/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/api/users/user_deletion_integration_test.py +371 -0
- core_framework-3.1.0/tests/integration/worker/__init__.py +0 -0
- core_framework-3.1.0/tests/integration/worker/_media_upload_helpers.py +84 -0
- core_framework-3.1.0/tests/integration/worker/account_deletion_test.py +385 -0
- core_framework-3.1.0/tests/integration/worker/aggregate_comment_stats_test.py +354 -0
- core_framework-3.1.0/tests/integration/worker/aggregate_post_stats_test.py +257 -0
- core_framework-3.1.0/tests/integration/worker/aggregate_user_stats_test.py +123 -0
- core_framework-3.1.0/tests/integration/worker/analytics_refresh_test.py +108 -0
- core_framework-3.1.0/tests/integration/worker/avatar_upload_test.py +370 -0
- core_framework-3.1.0/tests/integration/worker/banner_upload_test.py +367 -0
- core_framework-3.1.0/tests/integration/worker/create_idempotency_retention_test.py +280 -0
- core_framework-3.1.0/tests/integration/worker/moderation_outbox_test.py +313 -0
- core_framework-3.1.0/tests/integration/worker/mute_lift_test.py +166 -0
- core_framework-3.1.0/tests/integration/worker/read_notifications_retention_test.py +169 -0
- core_framework-3.1.0/tests/integration/worker/user_outbox_test.py +370 -0
- core_framework-3.1.0/tests/integration/worker/utils_test.py +116 -0
- core_framework-3.1.0/tests/unit/__init__.py +0 -0
- core_framework-3.1.0/tests/unit/application/comments/__init__.py +0 -0
- core_framework-3.1.0/tests/unit/core/bundled_alembic_test.py +27 -0
- core_framework-3.1.0/tests/unit/core/pagination_test.py +582 -0
- core_framework-3.1.0/tests/unit/domains/__init__.py +0 -0
- core_framework-3.1.0/tests/unit/domains/comment/__init__.py +0 -0
- core_framework-3.1.0/tests/unit/infrastructure/__init__.py +0 -0
- core_framework-3.1.0/tests/unit/infrastructure/media/__init__.py +0 -0
- core_framework-3.1.0/tests/unit/infrastructure/media/ssh_finals_publisher_adapter_test.py +282 -0
- core_framework-3.1.0/uv.lock +2587 -0
- core_framework-2.3.3/.cursor/rules/constitution.mdc +0 -42
- core_framework-2.3.3/.cursor/skills/code-review/SKILL.md +0 -34
- core_framework-2.3.3/.cursor/skills/sync-host-rules/SKILL.md +0 -41
- core_framework-2.3.3/.github/workflows/_deploy.yml +0 -201
- core_framework-2.3.3/.github/workflows/dev-ci-cd.yaml +0 -162
- core_framework-2.3.3/.github/workflows/manual-deployment.yaml +0 -36
- core_framework-2.3.3/.github/workflows/publish-pypi.yml +0 -34
- core_framework-2.3.3/.github/workflows/test.yaml +0 -109
- core_framework-2.3.3/.gitignore +0 -34
- core_framework-2.3.3/.pre-commit-config.yaml +0 -51
- core_framework-2.3.3/CHANGELOG.md +0 -466
- core_framework-2.3.3/PKG-INFO +0 -121
- core_framework-2.3.3/README.md +0 -83
- core_framework-2.3.3/config.toml +0 -137
- core_framework-2.3.3/config.toml.template +0 -121
- core_framework-2.3.3/core_framework/api/admin/cache/schemas.py +0 -91
- core_framework-2.3.3/core_framework/api/admin/moderation/router.py +0 -211
- core_framework-2.3.3/core_framework/api/admin/outbox/router.py +0 -71
- core_framework-2.3.3/core_framework/api/admin/router.py +0 -23
- core_framework-2.3.3/core_framework/api/attachments/router.py +0 -51
- core_framework-2.3.3/core_framework/api/comments/authenticated/router.py +0 -140
- core_framework-2.3.3/core_framework/api/comments/authenticated/schemas.py +0 -74
- core_framework-2.3.3/core_framework/api/dependencies.py +0 -145
- core_framework-2.3.3/core_framework/api/events/schemas.py +0 -21
- core_framework-2.3.3/core_framework/api/posts/authenticated/router.py +0 -105
- core_framework-2.3.3/core_framework/api/posts/authenticated/schemas.py +0 -72
- core_framework-2.3.3/core_framework/api/system/router.py +0 -112
- core_framework-2.3.3/core_framework/api/users/authenticated/router.py +0 -558
- core_framework-2.3.3/core_framework/application/analytics/refresh_service.py +0 -52
- core_framework-2.3.3/core_framework/application/analytics/registry.py +0 -36
- core_framework-2.3.3/core_framework/application/auth/auth_service.py +0 -24
- core_framework-2.3.3/core_framework/application/bootstrap.py +0 -43
- core_framework-2.3.3/core_framework/application/comments/authenticated_service.py +0 -226
- core_framework-2.3.3/core_framework/application/events/event_service.py +0 -143
- core_framework-2.3.3/core_framework/application/media/README.md +0 -19
- core_framework-2.3.3/core_framework/application/media/attachment_read.py +0 -78
- core_framework-2.3.3/core_framework/application/media/attachment_service.py +0 -492
- core_framework-2.3.3/core_framework/application/media/avatar_service.py +0 -174
- core_framework-2.3.3/core_framework/application/moderation/moderator_service.py +0 -42
- core_framework-2.3.3/core_framework/application/moderation/user_service.py +0 -196
- core_framework-2.3.3/core_framework/application/notifications/mute_service.py +0 -34
- core_framework-2.3.3/core_framework/application/notifications/notification_service.py +0 -166
- core_framework-2.3.3/core_framework/application/outbox/events.py +0 -118
- core_framework-2.3.3/core_framework/application/outbox/ops_service.py +0 -77
- core_framework-2.3.3/core_framework/application/outbox/polling_service.py +0 -64
- core_framework-2.3.3/core_framework/application/outbox/processing_service.py +0 -69
- core_framework-2.3.3/core_framework/application/posts/aggregation_service.py +0 -54
- core_framework-2.3.3/core_framework/application/posts/authenticated_service.py +0 -104
- core_framework-2.3.3/core_framework/application/shared/worker_jobs.py +0 -19
- core_framework-2.3.3/core_framework/application/users/admin_service.py +0 -305
- core_framework-2.3.3/core_framework/application/users/authenticated_service.py +0 -377
- core_framework-2.3.3/core_framework/constants.py +0 -5
- core_framework-2.3.3/core_framework/core/__init__.py +0 -33
- core_framework-2.3.3/core_framework/core/cache.py +0 -171
- core_framework-2.3.3/core_framework/core/context.py +0 -14
- core_framework-2.3.3/core_framework/core/database.py +0 -116
- core_framework-2.3.3/core_framework/core/exception_handlers/common.py +0 -63
- core_framework-2.3.3/core_framework/core/http_client.py +0 -64
- core_framework-2.3.3/core_framework/core/logging.py +0 -79
- core_framework-2.3.3/core_framework/core/middleware.py +0 -111
- core_framework-2.3.3/core_framework/core/observability.py +0 -31
- core_framework-2.3.3/core_framework/core/pagination.py +0 -200
- core_framework-2.3.3/core_framework/core/redis.py +0 -61
- core_framework-2.3.3/core_framework/core/settings.py +0 -411
- core_framework-2.3.3/core_framework/domains/analytics/__init__.py +0 -22
- core_framework-2.3.3/core_framework/domains/analytics/dependencies.py +0 -64
- core_framework-2.3.3/core_framework/domains/analytics/service.py +0 -300
- core_framework-2.3.3/core_framework/domains/auth/README.md +0 -68
- core_framework-2.3.3/core_framework/domains/auth/ports/auth.py +0 -53
- core_framework-2.3.3/core_framework/domains/auth/service.py +0 -57
- core_framework-2.3.3/core_framework/domains/comment/__init__.py +0 -51
- core_framework-2.3.3/core_framework/domains/comment/dependencies.py +0 -61
- core_framework-2.3.3/core_framework/domains/comment/repository.py +0 -2397
- core_framework-2.3.3/core_framework/domains/comment/service.py +0 -911
- core_framework-2.3.3/core_framework/domains/media/README.md +0 -30
- core_framework-2.3.3/core_framework/domains/media/__init__.py +0 -59
- core_framework-2.3.3/core_framework/domains/media/attachment/components/finals_publisher.py +0 -41
- core_framework-2.3.3/core_framework/domains/media/attachment/components/staging.py +0 -166
- core_framework-2.3.3/core_framework/domains/media/attachment/ports/staging.py +0 -46
- core_framework-2.3.3/core_framework/domains/media/avatar/components/finals_publisher.py +0 -41
- core_framework-2.3.3/core_framework/domains/media/avatar/ports/staging.py +0 -43
- core_framework-2.3.3/core_framework/domains/media/banner/components/finals_publisher.py +0 -27
- core_framework-2.3.3/core_framework/domains/media/banner/components/staging.py +0 -112
- core_framework-2.3.3/core_framework/domains/media/banner/components/variant_encoder.py +0 -34
- core_framework-2.3.3/core_framework/domains/media/banner/ports/staging.py +0 -43
- core_framework-2.3.3/core_framework/domains/media/banner/service.py +0 -335
- core_framework-2.3.3/core_framework/domains/media/dependencies.py +0 -333
- core_framework-2.3.3/core_framework/domains/media/shared/exceptions.py +0 -9
- core_framework-2.3.3/core_framework/domains/media/shared/utils.py +0 -43
- core_framework-2.3.3/core_framework/domains/moderation/__init__.py +0 -41
- core_framework-2.3.3/core_framework/domains/moderation/dependencies.py +0 -90
- core_framework-2.3.3/core_framework/domains/moderation/repository.py +0 -1267
- core_framework-2.3.3/core_framework/domains/moderation/service.py +0 -858
- core_framework-2.3.3/core_framework/domains/notification/README.md +0 -156
- core_framework-2.3.3/core_framework/domains/notification/__init__.py +0 -16
- core_framework-2.3.3/core_framework/domains/notification/dependencies.py +0 -61
- core_framework-2.3.3/core_framework/domains/notification/repository.py +0 -603
- core_framework-2.3.3/core_framework/domains/notification/service.py +0 -281
- core_framework-2.3.3/core_framework/domains/outbox/README.md +0 -65
- core_framework-2.3.3/core_framework/domains/outbox/__init__.py +0 -17
- core_framework-2.3.3/core_framework/domains/outbox/models.py +0 -79
- core_framework-2.3.3/core_framework/domains/outbox/ports/producer.py +0 -42
- core_framework-2.3.3/core_framework/domains/outbox/service.py +0 -66
- core_framework-2.3.3/core_framework/domains/post/__init__.py +0 -41
- core_framework-2.3.3/core_framework/domains/post/dependencies.py +0 -61
- core_framework-2.3.3/core_framework/domains/post/outcomes.py +0 -7
- core_framework-2.3.3/core_framework/domains/post/repository.py +0 -2248
- core_framework-2.3.3/core_framework/domains/post/service.py +0 -908
- core_framework-2.3.3/core_framework/domains/user/__init__.py +0 -55
- core_framework-2.3.3/core_framework/domains/user/dependencies.py +0 -90
- core_framework-2.3.3/core_framework/domains/user/outcomes.py +0 -25
- core_framework-2.3.3/core_framework/domains/user/repository.py +0 -1704
- core_framework-2.3.3/core_framework/domains/user/service.py +0 -961
- core_framework-2.3.3/core_framework/domains/utils.py +0 -281
- core_framework-2.3.3/core_framework/infrastructure/firebase/firebase_auth_adapter.py +0 -110
- core_framework-2.3.3/core_framework/infrastructure/media/local_attachment_staging_adapter.py +0 -75
- core_framework-2.3.3/core_framework/infrastructure/media/local_banner_staging_adapter.py +0 -62
- core_framework-2.3.3/core_framework/infrastructure/media/local_staging_adapter.py +0 -92
- core_framework-2.3.3/core_framework/infrastructure/media/pillow_staging_image.py +0 -72
- core_framework-2.3.3/core_framework/infrastructure/media/ssh_attachment_finals_publisher_adapter.py +0 -114
- core_framework-2.3.3/core_framework/infrastructure/media/ssh_banner_finals_publisher_adapter.py +0 -91
- core_framework-2.3.3/core_framework/infrastructure/media/ssh_finals_publisher_adapter.py +0 -117
- core_framework-2.3.3/core_framework/infrastructure/outbox/outbox_consumer_adapter.py +0 -161
- core_framework-2.3.3/core_framework/infrastructure/outbox/outbox_producer_adapter.py +0 -73
- core_framework-2.3.3/core_framework/main.py +0 -91
- core_framework-2.3.3/core_framework/testing/arq.py +0 -122
- core_framework-2.3.3/core_framework/testing/auth.py +0 -301
- core_framework-2.3.3/core_framework/testing/firebase.py +0 -95
- core_framework-2.3.3/core_framework/testing/httpx_test_client.py +0 -28
- core_framework-2.3.3/core_framework/testing/plugin.py +0 -216
- core_framework-2.3.3/core_framework/worker/main.py +0 -95
- core_framework-2.3.3/core_framework/worker/schedules/__init__.py +0 -125
- core_framework-2.3.3/core_framework/worker/schedules/analytics_refresh_cron.py +0 -20
- core_framework-2.3.3/core_framework/worker/schedules/schedule_aggregate_comment_stats.py +0 -43
- core_framework-2.3.3/core_framework/worker/schedules/schedule_aggregate_post_stats.py +0 -41
- core_framework-2.3.3/core_framework/worker/schedules/schedule_aggregate_user_stats.py +0 -41
- core_framework-2.3.3/core_framework/worker/schedules/schedule_expired_account_deletions.py +0 -35
- core_framework-2.3.3/core_framework/worker/schedules/schedule_expired_mute_lifts.py +0 -32
- core_framework-2.3.3/core_framework/worker/schedules/schedule_prune_analytics_daily_facts.py +0 -16
- core_framework-2.3.3/core_framework/worker/schedules/schedule_prune_post_views.py +0 -17
- core_framework-2.3.3/core_framework/worker/schedules/schedule_purge_expired_create_idempotency_keys.py +0 -23
- core_framework-2.3.3/core_framework/worker/tasks/__init__.py +0 -57
- core_framework-2.3.3/core_framework/worker/tasks/process_media_asset_variants.py +0 -38
- core_framework-2.3.3/core_framework/worker/tasks/process_mute_lift.py +0 -16
- core_framework-2.3.3/dockerfile +0 -70
- core_framework-2.3.3/docs/README.md +0 -46
- core_framework-2.3.3/docs/deployments/README.md +0 -35
- core_framework-2.3.3/docs/deployments/deploy-playbook.md +0 -202
- core_framework-2.3.3/docs/deployments/edge-upload-limits.md +0 -67
- core_framework-2.3.3/docs/deployments/examples/Caddyfile.example +0 -48
- core_framework-2.3.3/docs/deployments/guides/app-server-deploy-ssh.md +0 -78
- core_framework-2.3.3/docs/deployments/guides/image-server-ssh.md +0 -93
- core_framework-2.3.3/docs/deployments/guides/postgres-setup.md +0 -153
- core_framework-2.3.3/docs/deployments/guides/redis-setup.md +0 -109
- core_framework-2.3.3/docs/deployments/guides/ubuntu-server-setup.md +0 -174
- core_framework-2.3.3/docs/deployments/release-playbook.md +0 -84
- core_framework-2.3.3/docs/design/README.md +0 -30
- core_framework-2.3.3/docs/design/create-idempotency-design.md +0 -284
- core_framework-2.3.3/docs/design/event-outbox-design.md +0 -603
- core_framework-2.3.3/docs/design/events-ingest-design.md +0 -226
- core_framework-2.3.3/docs/design/media-storage-topology.md +0 -141
- core_framework-2.3.3/docs/design/outbox-admin-ops-design.md +0 -334
- core_framework-2.3.3/docs/domains/README.md +0 -23
- core_framework-2.3.3/docs/domains/auth/access_control.md +0 -59
- core_framework-2.3.3/docs/domains/auth/registration.md +0 -59
- core_framework-2.3.3/docs/domains/comments/create_comment.md +0 -158
- core_framework-2.3.3/docs/domains/comments/edit_comment.md +0 -73
- core_framework-2.3.3/docs/domains/deletion/posts.md +0 -311
- core_framework-2.3.3/docs/domains/events/events.md +0 -242
- core_framework-2.3.3/docs/domains/media/banner-upload-design.md +0 -150
- core_framework-2.3.3/docs/domains/media/post-comment-attachments-design.md +0 -521
- core_framework-2.3.3/docs/domains/media/upload-pipeline-design.md +0 -467
- core_framework-2.3.3/docs/domains/moderation/restrictions.md +0 -250
- core_framework-2.3.3/docs/domains/notifications/notification_inbox.md +0 -386
- core_framework-2.3.3/docs/domains/outbox/admin_outbox_ops.md +0 -184
- core_framework-2.3.3/docs/domains/posts/README.md +0 -33
- core_framework-2.3.3/docs/domains/posts/create_post.md +0 -112
- core_framework-2.3.3/docs/domains/users/account_deletion.md +0 -110
- core_framework-2.3.3/docs/domains/users/admin_users.md +0 -166
- core_framework-2.3.3/docs/domains/users/check_username_exists.md +0 -57
- core_framework-2.3.3/docs/domains/users/user_stats_aggregation.md +0 -79
- core_framework-2.3.3/docs/library/capability-wiring.md +0 -123
- core_framework-2.3.3/docs/library/core-framework-migration.md +0 -252
- core_framework-2.3.3/docs/library/overview.md +0 -53
- core_framework-2.3.3/docs/library/package-api.md +0 -320
- core_framework-2.3.3/docs/library/testing-plugin-design.md +0 -317
- core_framework-2.3.3/docs/library/workers.md +0 -81
- core_framework-2.3.3/docs/platform/architecture-decisions.md +0 -537
- core_framework-2.3.3/docs/platform/client-error-visibility.md +0 -271
- core_framework-2.3.3/docs/platform/conventions.md +0 -99
- core_framework-2.3.3/docs/platform/domain-services-and-adapters.md +0 -60
- core_framework-2.3.3/docs/testing.md +0 -150
- core_framework-2.3.3/docs/todo.md +0 -75
- core_framework-2.3.3/makefile +0 -68
- core_framework-2.3.3/pyproject.toml +0 -137
- core_framework-2.3.3/tests/e2e/_settings.py +0 -40
- core_framework-2.3.3/tests/e2e/smoke/system_test.py +0 -32
- core_framework-2.3.3/tests/integration/analytics/_helpers.py +0 -140
- core_framework-2.3.3/tests/integration/api/_destructive_delete_helpers.py +0 -51
- core_framework-2.3.3/tests/integration/api/_http_helpers.py +0 -106
- core_framework-2.3.3/tests/integration/api/_user_deletion_helpers.py +0 -63
- core_framework-2.3.3/tests/integration/api/_user_helpers.py +0 -24
- core_framework-2.3.3/tests/integration/api/admin/analytics/router_test.py +0 -265
- core_framework-2.3.3/tests/integration/api/admin/cache/router_test.py +0 -307
- core_framework-2.3.3/tests/integration/api/admin/comments/router_test.py +0 -749
- core_framework-2.3.3/tests/integration/api/admin/moderation/router_test.py +0 -2554
- core_framework-2.3.3/tests/integration/api/admin/outbox/router_test.py +0 -333
- core_framework-2.3.3/tests/integration/api/admin/posts/router_test.py +0 -481
- core_framework-2.3.3/tests/integration/api/attachments/_helpers.py +0 -200
- core_framework-2.3.3/tests/integration/api/comments/authenticated/comment_writes_integration_test.py +0 -667
- core_framework-2.3.3/tests/integration/api/comments/comment_attachments_integration_test.py +0 -588
- core_framework-2.3.3/tests/integration/api/comments/public/router_test.py +0 -528
- core_framework-2.3.3/tests/integration/api/create_idempotency_integration_test.py +0 -482
- core_framework-2.3.3/tests/integration/api/events/router_test.py +0 -759
- core_framework-2.3.3/tests/integration/api/mentions/mentions_integration_test.py +0 -394
- core_framework-2.3.3/tests/integration/api/notifications/router_test.py +0 -545
- core_framework-2.3.3/tests/integration/api/posts/authenticated/post_writes_integration_test.py +0 -320
- core_framework-2.3.3/tests/integration/api/posts/comment_count_aggregation_test.py +0 -144
- core_framework-2.3.3/tests/integration/api/posts/followers_visibility_test.py +0 -150
- core_framework-2.3.3/tests/integration/api/posts/post_attachments_integration_test.py +0 -677
- core_framework-2.3.3/tests/integration/api/posts/post_deletion_integration_test.py +0 -642
- core_framework-2.3.3/tests/integration/api/posts/post_stats_dirty_marking_test.py +0 -219
- core_framework-2.3.3/tests/integration/api/posts/public/router_test.py +0 -1056
- core_framework-2.3.3/tests/integration/api/system/router_test.py +0 -56
- core_framework-2.3.3/tests/integration/api/users/authenticated/router_test.py +0 -1095
- core_framework-2.3.3/tests/integration/api/users/deletion_audit_integration_test.py +0 -185
- core_framework-2.3.3/tests/integration/api/users/user_deletion_integration_test.py +0 -379
- core_framework-2.3.3/tests/integration/worker/_media_upload_helpers.py +0 -77
- core_framework-2.3.3/tests/integration/worker/account_deletion_test.py +0 -386
- core_framework-2.3.3/tests/integration/worker/aggregate_comment_stats_test.py +0 -360
- core_framework-2.3.3/tests/integration/worker/aggregate_post_stats_test.py +0 -264
- core_framework-2.3.3/tests/integration/worker/aggregate_user_stats_test.py +0 -123
- core_framework-2.3.3/tests/integration/worker/analytics_refresh_test.py +0 -109
- core_framework-2.3.3/tests/integration/worker/avatar_upload_test.py +0 -370
- core_framework-2.3.3/tests/integration/worker/banner_upload_test.py +0 -367
- core_framework-2.3.3/tests/integration/worker/create_idempotency_retention_test.py +0 -285
- core_framework-2.3.3/tests/integration/worker/moderation_outbox_test.py +0 -314
- core_framework-2.3.3/tests/integration/worker/mute_lift_test.py +0 -168
- core_framework-2.3.3/tests/integration/worker/user_outbox_test.py +0 -374
- core_framework-2.3.3/tests/integration/worker/utils_test.py +0 -119
- core_framework-2.3.3/tests/unit/core/bundled_alembic_test.py +0 -29
- core_framework-2.3.3/tests/unit/core/pagination_test.py +0 -580
- core_framework-2.3.3/tests/unit/infrastructure/media/ssh_finals_publisher_adapter_test.py +0 -278
- core_framework-2.3.3/uv.lock +0 -2416
- {core_framework-2.3.3 → core_framework-3.1.0}/.agents/skills/fastapi +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.agents/skills/library-skills/.library-skills.json +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.agents/skills/library-skills/SKILL.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/alembic-migrations.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/api-layer.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/api-reference-docs.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/api-validation.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/application-layer.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/constants-final.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/database-triggers.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/docstrings.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/domain-caller-context.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/domain-imports.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/domain-input-guards.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/domain-repository-exceptions.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/domain-services-and-adapters.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/error-boundary.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/flow-documentation.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/inline-raise-messages.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/integration-test-strategy.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/layer-boundaries.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/no-code-in-docs.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/postgres-config-conventions.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/repository-schema-isolation.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/strong-reads.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/rules/structured-logging.mdc +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/skills/add-config/SKILL.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/skills/add-domain/SKILL.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/skills/fastapi +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/skills/implement-feature/SKILL.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/skills/recommend-features/SKILL.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.cursor/skills/write-flow-doc/SKILL.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.dockerignore +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/.python-version +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/LICENSE +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/versions/2d61a5e88d76_analytics_utm_events_add_kind.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/versions/585105e1149e_analytics_add_utm_events.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/versions/5b9ac98bb150_analytics_daily_fact.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic/versions/7f2a9c1d4e8b_analytics_daily_fact_day_index.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/analytics/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/versions/comment_add_comment_attachments.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/versions/comment_add_comment_create_idempotency.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/versions/comment_add_comment_create_idempotency_created_at_index.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/versions/comment_add_comment_mentions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/versions/comment_tombstone_status_model.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic/versions/v1_comment_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/comment/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/extension/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/extension/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/extension/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/extension/alembic/versions/v1_ext_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/extension/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/versions/media_add_attachment_staging_registry.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/versions/media_add_banner_staging_and_lease.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/versions/media_attachment_staging_registry_published_at.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic/versions/v1_media_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/media/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/versions/moderation_add_event_outbox.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/versions/moderation_add_event_outbox_dead_indexes.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/versions/moderation_add_event_outbox_pending_created_at_index.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic/versions/v1_mod_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/moderation/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/notification/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/notification/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/notification/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/notification/alembic/versions/v1_notif_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/notification/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/post_add_post_attachments.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/post_add_post_create_idempotency.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/post_add_post_create_idempotency_created_at_index.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/post_add_post_mentions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/post_post_views_retention_high_water_mark.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/post_tombstone_status_model.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic/versions/v1_post_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/post/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/README +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/env.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/script.py.mako +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/44df70a45ba6_user_add_signup_events.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_add_avatar_ingest_sequences.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_add_banner_ingest_sequences.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_add_date_of_birth_to_profiles.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_add_event_outbox.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_add_event_outbox_dead_indexes.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_add_event_outbox_pending_created_at_index.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/user_reserve_sentinel_user_ids.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic/versions/v1_user_init_baseline.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/alembic/user/alembic.ini +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/__init__.py +0 -0
- {core_framework-2.3.3/core_framework/api/admin/moderation → core_framework-3.1.0/core_framework/api/admin/analytics}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/analytics/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/analytics/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/api/admin/users → core_framework-3.1.0/core_framework/api/admin/cache}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/cache/router.py +0 -0
- {core_framework-2.3.3/core_framework/api/auth → core_framework-3.1.0/core_framework/api/admin/comments}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/comments/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/comments/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/api/system → core_framework-3.1.0/core_framework/api/admin/moderation}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/moderation/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/api/users → core_framework-3.1.0/core_framework/api/admin/outbox}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/outbox/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/api/users/authenticated → core_framework-3.1.0/core_framework/api/admin/posts}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/posts/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/posts/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/api/users/public → core_framework-3.1.0/core_framework/api/admin/users}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/users/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/admin/users/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/application → core_framework-3.1.0/core_framework/api/attachments}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/attachments/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/application → core_framework-3.1.0/core_framework/api}/auth/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/auth/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/auth/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/application/moderation → core_framework-3.1.0/core_framework/api/comments}/__init__.py +0 -0
- {core_framework-2.3.3/core_framework/application/shared → core_framework-3.1.0/core_framework/api/comments/authenticated}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/comments/authenticated/mappers.py +0 -0
- {core_framework-2.3.3/core_framework/application/users → core_framework-3.1.0/core_framework/api/comments/public}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/comments/public/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/comments/public/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/comments/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/comments/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/constants.py +0 -0
- {core_framework-2.3.3/core_framework/domains → core_framework-3.1.0/core_framework/api/events}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/events/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/idempotency/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/idempotency/dependencies.py +0 -0
- {core_framework-2.3.3/core_framework/domains/auth/ports → core_framework-3.1.0/core_framework/api/notifications}/__init__.py +0 -0
- {core_framework-2.3.3/core_framework/domains/media/avatar → core_framework-3.1.0/core_framework/api/notifications/authenticated}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/notifications/authenticated/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/notifications/authenticated/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/notifications/router.py +0 -0
- {core_framework-2.3.3/core_framework/domains/media/avatar/components → core_framework-3.1.0/core_framework/api/posts}/__init__.py +0 -0
- {core_framework-2.3.3/core_framework/domains/media/avatar/ports → core_framework-3.1.0/core_framework/api/posts/authenticated}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/posts/authenticated/mappers.py +0 -0
- {core_framework-2.3.3/core_framework/domains/media/shared → core_framework-3.1.0/core_framework/api/posts/public}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/posts/public/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/posts/public/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/posts/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/posts/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/schemas.py +0 -0
- {core_framework-2.3.3/core_framework/infrastructure → core_framework-3.1.0/core_framework/api/system}/__init__.py +0 -0
- {core_framework-2.3.3/core_framework/infrastructure/firebase → core_framework-3.1.0/core_framework/api/users}/__init__.py +0 -0
- {core_framework-2.3.3/core_framework/infrastructure/media → core_framework-3.1.0/core_framework/api/users/authenticated}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/authenticated/mappers.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/authenticated/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/mappers.py +0 -0
- {core_framework-2.3.3/core_framework/worker → core_framework-3.1.0/core_framework/api/users/public}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/public/router.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/public/schemas.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/router.py +0 -0
- {core_framework-2.3.3/tests → core_framework-3.1.0/core_framework/api/users/shared}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/api/users/shared/schemas.py +0 -0
- {core_framework-2.3.3/tests/integration → core_framework-3.1.0/core_framework/application}/__init__.py +0 -0
- {core_framework-2.3.3/tests/integration/api → core_framework-3.1.0/core_framework/application/analytics}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/bucket_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/prune_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/read_service.py +0 -0
- {core_framework-2.3.3/tests/integration/api/admin → core_framework-3.1.0/core_framework/application/analytics/sources}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/sources/comment_created.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/sources/post_created.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/sources/post_viewed.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/analytics/sources/user_registered.py +0 -0
- {core_framework-2.3.3/tests/integration/api/admin/analytics → core_framework-3.1.0/core_framework/application/auth}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/auth/access_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/auth/models.py +0 -0
- {core_framework-2.3.3/tests/integration/api/admin → core_framework-3.1.0/core_framework/application}/cache/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/cache/invalidate_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/cache/models.py +0 -0
- {core_framework-2.3.3/tests/integration/api/admin → core_framework-3.1.0/core_framework/application}/comments/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/comments/admin_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/comments/aggregation_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/comments/cleanup_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/comments/public_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/events/README.md +0 -0
- {core_framework-2.3.3/tests/integration/api/admin/moderation → core_framework-3.1.0/core_framework/application/events}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/events/event_token.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/events/models.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/events/utm_capture_kinds.py +0 -0
- {core_framework-2.3.3/tests/integration/api/admin/outbox → core_framework-3.1.0/core_framework/application/media}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/media/banner_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/media/ingest_guards.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/media/read_url_config.py +0 -0
- {core_framework-2.3.3/tests/integration/api/admin/posts → core_framework-3.1.0/core_framework/application/moderation}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/moderation/appeal_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/moderation/report_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/moderation/scheduled_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/notifications/README.md +0 -0
- {core_framework-2.3.3/tests/integration/api/admin/users → core_framework-3.1.0/core_framework/application/notifications}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/notifications/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/notifications/inbox_service.py +0 -0
- {core_framework-2.3.3/tests/integration/api/auth → core_framework-3.1.0/core_framework/application/outbox}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/outbox/block_mirrors.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/outbox/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/outbox/follow_mirrors.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/outbox/handlers.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/outbox/restriction_mirrors.py +0 -0
- {core_framework-2.3.3/tests/integration/api/comments → core_framework-3.1.0/core_framework/application/posts}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/posts/admin_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/posts/cleanup_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/posts/public_service.py +0 -0
- {core_framework-2.3.3/tests/integration/api/comments/authenticated → core_framework-3.1.0/core_framework/application/shared}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/shared/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/shared/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/shared/request_context.py +0 -0
- {core_framework-2.3.3/tests/integration/api/comments/public → core_framework-3.1.0/core_framework/application/users}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/users/aggregation_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/users/deletion_audit.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/users/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/users/public_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/users/scheduled_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/application/users/user_deletion_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/asgi.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/bundled_alembic.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/core/exception_handlers/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/core/exception_handlers/application.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/core/exception_handlers/setup.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/core/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/core/firebase.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/core/runtime.py +0 -0
- {core_framework-2.3.3/tests/integration/api/notifications → core_framework-3.1.0/core_framework/domains}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/analytics/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/analytics/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/analytics/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/analytics/models.py +0 -0
- {core_framework-2.3.3/tests/integration/api/posts → core_framework-3.1.0/core_framework/domains/analytics/ports}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/analytics/ports/activity_source.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/analytics/repository.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/auth/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/auth/dependencies.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/auth/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/auth/models.py +0 -0
- {core_framework-2.3.3/tests/integration/api/posts/public → core_framework-3.1.0/core_framework/domains/auth/ports}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/comment/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/comment/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/comment/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/comment/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/comment/models.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/comment/outcomes.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/exceptions.py +0 -0
- {core_framework-2.3.3/tests/integration/api/system → core_framework-3.1.0/core_framework/domains/media/attachment}/__init__.py +0 -0
- {core_framework-2.3.3/tests/integration/api/users → core_framework-3.1.0/core_framework/domains/media/attachment/components}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/components/variant_encoder.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/models.py +0 -0
- {core_framework-2.3.3/tests/integration/api/users/authenticated → core_framework-3.1.0/core_framework/domains/media/attachment/ports}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/ports/finals_publisher.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/ports/variant_encoder.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/attachment/service.py +0 -0
- {core_framework-2.3.3/tests/integration/api/users/public → core_framework-3.1.0/core_framework/domains/media/avatar}/__init__.py +0 -0
- {core_framework-2.3.3/tests/integration/worker → core_framework-3.1.0/core_framework/domains/media/avatar/components}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/components/staging.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/components/variant_encoder.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/models.py +0 -0
- {core_framework-2.3.3/tests/unit → core_framework-3.1.0/core_framework/domains/media/avatar/ports}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/ports/finals_publisher.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/ports/variant_encoder.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/avatar/service.py +0 -0
- {core_framework-2.3.3/tests/unit/application/comments → core_framework-3.1.0/core_framework/domains/media/banner}/__init__.py +0 -0
- {core_framework-2.3.3/tests/unit/domains → core_framework-3.1.0/core_framework/domains/media/banner/components}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/banner/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/banner/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/banner/models.py +0 -0
- {core_framework-2.3.3/tests/unit/domains/comment → core_framework-3.1.0/core_framework/domains/media/banner/ports}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/banner/ports/finals_publisher.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/banner/ports/variant_encoder.py +0 -0
- {core_framework-2.3.3/tests/unit/infrastructure → core_framework-3.1.0/core_framework/domains/media/shared}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/shared/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/shared/outcomes.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/shared/repository.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/media/shared/service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/models.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/outbox_repository.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/outbox_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/moderation/outcomes.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/notification/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/notification/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/notification/models.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/outbox/dependencies.py +0 -0
- {core_framework-2.3.3/tests/unit/infrastructure/media → core_framework-3.1.0/core_framework/domains/outbox/ports}/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/outbox/ports/admin.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/outbox/ports/consumer.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/post/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/post/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/post/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/post/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/post/models.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/constants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/enums.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/exceptions.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/models.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/outbox_repository.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/outbox_service.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/domains/user/utils.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/infrastructure/media/attachment_staging_display_geometry.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/infrastructure/media/pillow_attachment_variant_encoder_adapter.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/infrastructure/media/pillow_avatar_variant_encoder_adapter.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/infrastructure/media/pillow_banner_variant_encoder_adapter.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/migrate_cli.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/__init__.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/config.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/containers.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/firebase_identity_toolkit.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/hookspecs.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/media.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/testing/migrations.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/schedules/schedule_poll_outbox.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/schedules/schedule_refresh_analytics.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/schedules/schedule_sweep_stale_attachment_staging.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/schedules/schedule_sweep_stale_avatar_staging.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/schedules/schedule_sweep_stale_banner_staging.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/delete_attachment_finals.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/delete_superseded_avatar_finals.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/delete_superseded_banner_finals.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_account_deletion.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_admin_user_deletion.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_aggregate_comment_stats.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_aggregate_post_stats.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_aggregate_user_stats.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_attachment_asset_variants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_banner_asset_variants.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_cache_pattern_invalidation.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_destructive_comment_delete.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_destructive_post_delete.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_outbox_row.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_refresh_analytics_bucket.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/tasks/process_user_content_deletion.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/core_framework/worker/worker_context.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0/deploy/app}/docker-compose.dev.yaml +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0/deploy/app}/docker-compose.yml +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/deployments/e2e-smoke-tests-design.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/deployments/examples/image-server-known-hosts.example +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/design/analytics-rollup-design.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/design/cache-invalidation-design.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/design/utm-events-design.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/analytics/admin_analytics_reads.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/cache/admin_cache_invalidation.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/admin_comments.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/comment_like.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/comment_report.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/comment_stats_aggregation.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/delete_comment.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/comments/retrieve_comments.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/deletion/comments.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/deletion/overview.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/deletion/users.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/media/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/media/attachment_upload.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/media/avatar-upload-design.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/media/upload_pipeline.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/mentions/mentions_in_content.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/moderation/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/moderation/appeals.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/moderation/internal_notes.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/moderation/moderator_actions.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/moderation/reports.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/admin_posts.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/author_context.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/edit_post.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/hashtag_discovery.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/post_like.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/post_report.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/post_stats_aggregation.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/post_visibility.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/posts/retrieve_posts.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/account.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/avatar.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/banner.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/blocks.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/change_history.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/follow-system-design.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/follow.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/my_posts_and_comments.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/preferences.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/profile.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/public_profile.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/domains/users/user_removal.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/library/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/library/api.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/platform/README.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/platform/database-triggers.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/platform/layers-and-boundaries.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/docs/platform/patch-update-typed-payload.md +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/firebase_config.example.json +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/conftest.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/_auth.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/_canaries.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/_media.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/_upload_payloads.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/conftest.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/media/pipeline_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/smoke/canary_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/smoke/media_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/e2e/smoke/tls_host_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/_http_error_details.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/_auth_helpers.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/_outbox_helpers.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/admin/_auth_cases.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/admin/moderation/_auth_cases.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/admin/users/router_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/attachments/attachment_upload_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/auth/router_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/media/ingest_contract_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/public_read_by_id_unavailable_detail_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/users/authenticated/avatar_upload_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/users/authenticated/banner_upload_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/api/users/public/router_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/worker/analytics_prune_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/worker/attachment_upload_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/worker/conftest.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/integration/worker/stale_staging_sweep_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/api/comments/authenticated/comment_request_schemas_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/api/dedupe_preserving_order_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/api/posts/authenticated/post_update_mapper_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/api/users/profile_update_mapper_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/application/events/event_service_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/application/notifications/inbox_service_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/application/shared/request_context_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/application/users/deletion_audit_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/core/migrate_cli_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/docs/_api_reference.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/docs/api_routes_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/domains/post/models_test.py +0 -0
- {core_framework-2.3.3 → core_framework-3.1.0}/tests/unit/domains/user/service_test.py +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Core non-negotiables — behavior, tech stack, layer direction, host scope
|
|
3
|
+
alwaysApply: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Constitution
|
|
7
|
+
|
|
8
|
+
## Behavior
|
|
9
|
+
|
|
10
|
+
- State assumptions; ask when unclear. Prefer the simplest correct solution.
|
|
11
|
+
- Touch only what the task requires. Match existing style. Remove orphans your edits create.
|
|
12
|
+
- Define verifiable success criteria for non-trivial work.
|
|
13
|
+
- **Inline small single-use helpers** — do not extract a private function used once and only a few lines (identifier quoting, a short SQL fragment, pass-through wrappers). Extract when the logic is **reused**, **~15+ lines / non-obvious branching**, or a scoped rule requires sharing (e.g. normal + `*_strong` repository reads in **`strong-reads.mdc`**). Do not repo-wide refactor unrelated existing helpers.
|
|
14
|
+
|
|
15
|
+
## Tech stack
|
|
16
|
+
|
|
17
|
+
- Python 3.14, Pydantic v2, PostgreSQL 18, orjson (not stdlib json).
|
|
18
|
+
- Absolute imports only (`from core_framework....`). Comma-style `except A, B:` is intentional.
|
|
19
|
+
- Prefer newer APIs and **current Python syntax** over older equivalents still legal on 3.14, for example:
|
|
20
|
+
- `asyncio.TaskGroup` over `asyncio.gather`
|
|
21
|
+
- PEP 695 type parameters (`def f[T](...)`, `def f[**P, R](...)`) over module-level `TypeVar` / `ParamSpec`
|
|
22
|
+
- Built-in generics (`list[str]`, `dict[str, int]`) over `typing.List` / `typing.Dict`
|
|
23
|
+
- `X | Y` over `Optional[X]` / `Union[X, Y]` unless a library API requires the old form
|
|
24
|
+
- Do **not** add `from __future__ import annotations` — 3.14 deferred annotations are the default (PEP 649)
|
|
25
|
+
|
|
26
|
+
## Layers
|
|
27
|
+
|
|
28
|
+
Dependencies point inward: API/worker → application → domain. Never reverse.
|
|
29
|
+
|
|
30
|
+
- **API/worker** — transport adapters; call application services.
|
|
31
|
+
- **Application** — orchestration shared by API + worker; no FastAPI types.
|
|
32
|
+
- **Domain** — models, repositories (Postgres only), services. No API/worker/application imports except wiring in `dependencies.py`.
|
|
33
|
+
|
|
34
|
+
Path-scoped rules under `.cursor/rules/` add detail (API, domains, docs, etc.). For FastAPI/Pydantic work in `core_framework/api/`, use the **fastapi** skill (`.agents/skills/fastapi/`).
|
|
35
|
+
|
|
36
|
+
## Agent skills
|
|
37
|
+
|
|
38
|
+
- Package skills (for example **fastapi**) are Library Skills-managed symlinks under **`.agents/skills/<name>/`**. Rules and hand-authored skills reference that path, not a copied tree under **`.cursor/skills/`**.
|
|
39
|
+
- **`.cursor/skills/<name>`** may symlink to **`.agents/skills/<name>`** for Cursor; Library Skills repairs **`.agents/skills`** links when packages move. After **`uv sync`** or a dependency upgrade, run **`uvx library-skills --yes`** if symlinks are stale.
|
|
40
|
+
|
|
41
|
+
## Host applications
|
|
42
|
+
|
|
43
|
+
Do not edit consuming host repos in the same task as core-framework work unless the user scopes work to a host or asks to sync/upgrade. See the **sync-host-rules** skill.
|
|
44
|
+
|
|
45
|
+
## Feature implementation
|
|
46
|
+
|
|
47
|
+
Greenfield features (DB → API → repository → service → **documentation** → tests): use the **implement-feature** skill — one layer per response unless the user says otherwise. A feature is **not done** until documentation is updated.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: code-review
|
|
3
|
+
description: Review code for quality, architecture compliance, and best practices. Use when the user asks for a code review, audit, or review.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Code Review
|
|
7
|
+
|
|
8
|
+
## Output format (required)
|
|
9
|
+
|
|
10
|
+
**Actionable findings only:**
|
|
11
|
+
|
|
12
|
+
- Bugs, wrong behavior, improvements, optimizations, doc/code contradictions, parallel implementation drift (sibling flows that diverge without documented reason).
|
|
13
|
+
- Prioritize by severity with file context and fix direction.
|
|
14
|
+
- **Do not** praise, summarize strengths, or pad with checklist pass narratives.
|
|
15
|
+
- One-line scope is fine. If nothing is wrong, say so in one sentence.
|
|
16
|
+
|
|
17
|
+
Do **not** flag documented accepted trade-offs in **`docs/platform/architecture-decisions.md`** unless the implementation violates them.
|
|
18
|
+
|
|
19
|
+
## Workflow
|
|
20
|
+
|
|
21
|
+
1. Read **`docs/platform/layers-and-boundaries.md`**, **`conventions.md`**, and **`architecture-decisions.md`** for the reviewed scope.
|
|
22
|
+
1. Apply **scoped rules** (`.cursor/rules/*.mdc`) matching files under review — especially **`error-boundary`**, **`domain-imports`**, **`api-layer`**, **`application-layer`**, **`strong-reads`**.
|
|
23
|
+
1. Report findings only — no filler.
|
|
24
|
+
|
|
25
|
+
## Quick checks
|
|
26
|
+
|
|
27
|
+
- Application services: no HTTP types, no domain exceptions, no Pydantic return types, one-line docstrings.
|
|
28
|
+
- API: thin routers, validation in schemas, orchestration in application — **fastapi** skill (`.agents/skills/fastapi/`) + **`api-layer`** / **`api-validation`** / **`error-boundary`** rules.
|
|
29
|
+
- Domain: imports only via **`__init__.py`** / **`dependencies`** from outer layers; no caller-context names (**`domain-caller-context`**).
|
|
30
|
+
- Read-after-write refetches use **`*_strong`** where applicable.
|
|
31
|
+
- **Python modernity (constitution):** prefer current 3.14 syntax in reviewed code — PEP 695 type params over module-level `TypeVar`/`ParamSpec`; no unnecessary `from __future__ import annotations`; builtins / `X | Y` over legacy `typing` aliases; `asyncio.TaskGroup` over `gather`.
|
|
32
|
+
|
|
33
|
+
## Parallel drift
|
|
34
|
+
|
|
35
|
+
Flag sibling modules with the same job but different structure (async layout, cleanup order, error/idempotency contracts) when docs do not explain the difference.
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: sync-host-rules
|
|
3
|
+
description: Sync core-framework rules, skills, and platform docs to consuming host applications. Use when the user asks to sync rules to a host, bump core-framework in a host, upgrade a host dependency, or port shared cursor/docs content.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Sync Host Rules and Docs
|
|
7
|
+
|
|
8
|
+
Consuming applications embed **core-framework** as a dependency.
|
|
9
|
+
|
|
10
|
+
## Default (core-framework work)
|
|
11
|
+
|
|
12
|
+
When changing **core-framework** code, migrations, tests, or **`docs/`**:
|
|
13
|
+
|
|
14
|
+
- **Do not** edit host repos in the same task.
|
|
15
|
+
- **Do not** port **`docs/platform/`**, **`docs/design/`**, **`docs/deployments/`**, **`.cursor/rules/`**, or **`.cursor/skills/`** to hosts proactively.
|
|
16
|
+
- Mention that host sync is **deferred until the host bumps its core-framework version** (unless the user asked otherwise).
|
|
17
|
+
|
|
18
|
+
## When host changes are allowed
|
|
19
|
+
|
|
20
|
+
1. User explicitly scopes work to a host repo.
|
|
21
|
+
1. User explicitly asks to sync or upgrade the core dependency in a host.
|
|
22
|
+
1. You are editing a host repo directly — follow that repo's rules.
|
|
23
|
+
|
|
24
|
+
## Sync procedure
|
|
25
|
+
|
|
26
|
+
Diff by **basename** against the host's **`.cursor/`** and applicable **`docs/`** paths. Port shared content and **adapt**:
|
|
27
|
+
|
|
28
|
+
- globs: **`core_framework/**`** → host source tree where applicable
|
|
29
|
+
- imports: **`core_framework....`** → host package prefix
|
|
30
|
+
- strong reads: **`strong-reads`** → host equivalent rule if present
|
|
31
|
+
|
|
32
|
+
**Do not overwrite** host-only rules, skills, or product docs.
|
|
33
|
+
|
|
34
|
+
### `docs/deployments/guides/` layout
|
|
35
|
+
|
|
36
|
+
Core walkthroughs live under **`docs/deployments/guides/setup/`** (one-time install) and **`docs/deployments/guides/playbook/`** (ops / incident runbooks) — not a flat **`guides/`** directory.
|
|
37
|
+
|
|
38
|
+
When syncing **`docs/deployments/`** to a host:
|
|
39
|
+
|
|
40
|
+
1. **Match the directory layout** — create **`guides/setup/`** and **`guides/playbook/`** on the host; move or rewrite files into those paths. Do **not** leave stale flat **`guides/*.md`** copies beside the new tree.
|
|
41
|
+
1. **Basename alone is not enough** — a host may still have **`guides/ubuntu-server-setup.md`** while core has **`guides/setup/ubuntu-server-setup.md`**. Diff by relative path under **`docs/deployments/`**, then port.
|
|
42
|
+
1. **Renames** — e.g. **`postgres-backup-ops.md`** → **`guides/playbook/postgres-backup-playbook.md`**. Delete the old host path after porting.
|
|
43
|
+
1. **Adapt host paths** in playbooks (Compose project dir, image names, **`app_configs/<host>/`**) — keep Henry-specific notes in host **`deploy-playbook.md`** / **`release-playbook.md`**.
|
|
44
|
+
|
|
45
|
+
## Docs boundaries
|
|
46
|
+
|
|
47
|
+
**Core `docs/` must stay host-agnostic** — no references to specific consuming applications.
|
|
48
|
+
|
|
49
|
+
| Core path | Host behavior |
|
|
50
|
+
| ----------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
51
|
+
| **`docs/platform/`**, **`docs/design/`**, **`docs/deployments/`** | Sync on dependency upgrade or explicit sync request |
|
|
52
|
+
| **`docs/domains/`**, **`docs/library/`** | Canonical in core only — do not mirror product trees to hosts |
|