refactor(quotes): hard delete du code Quote (#139, PR 1/2) - #170
Merged
Conversation
Épique #139 : Quote est un modèle parallèle redondant avec Rapport(kind=DISCUSSION), surdimensionné. Retrait complet (hard delete) de tout le code ; les docs/mémoire (#145) suivront en PR 2. Couches retirées : - Modèle Quote/QuoteVisibility/QuoteQuerySet + contrainte/index (#140) ; UserUsageStats.total_quotes (champ mort, découplé du compteur de don). Migrations destructives 0024_delete_quote + 0011_remove_total_quotes. - UI/routes/templates (#141) : vues quote_add/quote_create/quote_delete, page quotes, cartes/formulaires, blocs dans detail/report_detail/home/ stories/list. - API (#143) : QuoteSerializer, quotes_count, endpoints. - Fédération (#142) : sérialisation AP Note + suddenly:quotes, signaux, tâches d'émission. Arrêt silencieux (aucun Delete émis) ; outbox perso → collection vide ; inbound quote-Note ignoré (pas de 500). - Cron (#144) : cleanup_expired_quotes + entrée CELERY_BEAT_SCHEDULE. - Seed + tests (test_citations supprimé, nettoyage AP/models/views). 1222 suppressions / 22 ajouts. Vérif : check, makemigrations --check, ruff, mypy verts ; 978 tests passent (7 échecs = artefact environnemental connu du test de concurrence, passent en isolation). Refs #139 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YBRFVUtmBW3YSP8Yd2uNpB
RebelliousSmile
pushed a commit
that referenced
this pull request
Jul 22, 2026
PR 2 de l'épique #139 (après le hard delete du code, #170). Retrait des mentions Quote de la documentation normative auto-chargée et des user stories, pour qu'aucun doc chargé au contexte ne décrive une capacité disparue. Mémoire : PROJECT_BRIEF, DATABASE (table Quote + total_quotes), CODEBASE_MAP, CODING_ASSERTIONS (EPHEMERAL_QUOTE_TTL_HOURS), VCS (scope quotes), DESIGN (quote_card/quoted), API_DOCS (verbes AP + suddenly: quotes), DEPLOYMENT + alwaysdata (cron cleanup_expired_quotes), architecture (US-30 obsolète), external/seeds (ligne seed citations). Règle : 08-activitypub (Quote=Note). User stories : US-08 « Citations » (Domaine 5) + US-30 retirées, lignes gherkin et tables de priorité nettoyées. Archives laissées (record historique, hors #145) : wireframes, MASTER_PLAN, plans/audits datés, external/bookwyrm-architecture. Doc-only, aucun code touché. Greps #145 verts. Closes #145 Refs #139 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YBRFVUtmBW3YSP8Yd2uNpB
RebelliousSmile
added a commit
that referenced
this pull request
Jul 26, 2026
…171) PR 2 de l'épique #139 (après le hard delete du code, #170). Retrait des mentions Quote de la documentation normative auto-chargée et des user stories, pour qu'aucun doc chargé au contexte ne décrive une capacité disparue. Mémoire : PROJECT_BRIEF, DATABASE (table Quote + total_quotes), CODEBASE_MAP, CODING_ASSERTIONS (EPHEMERAL_QUOTE_TTL_HOURS), VCS (scope quotes), DESIGN (quote_card/quoted), API_DOCS (verbes AP + suddenly: quotes), DEPLOYMENT + alwaysdata (cron cleanup_expired_quotes), architecture (US-30 obsolète), external/seeds (ligne seed citations). Règle : 08-activitypub (Quote=Note). User stories : US-08 « Citations » (Domaine 5) + US-30 retirées, lignes gherkin et tables de priorité nettoyées. Archives laissées (record historique, hors #145) : wireframes, MASTER_PLAN, plans/audits datés, external/bookwyrm-architecture. Doc-only, aucun code touché. Greps #145 verts. Closes #145 Refs #139 Claude-Session: https://claude.ai/code/session_01YBRFVUtmBW3YSP8Yd2uNpB Co-authored-by: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Première PR de l'épique #139 — Retrait complet des Quotes (hard delete). Cette PR retire tout le code ; les docs/mémoire (#145) suivront en PR 2.
Pourquoi
Quoteest un modèle parallèle redondant avecRapport(kind=DISCUSSION)— surdimensionné au regard de sa valeur. L'épique le supprime physiquement (migration destructive, perte de données assumée).Ce qui est retiré (couche par couche)
Quote,QuoteVisibility,QuoteQuerySet, contraintequote_expires_iff_ephemeral, index,EPHEMERAL_QUOTE_TTL_HOURS, etUserUsageStats.total_quotes(champ mort — découplé du compteur de don, qui utilisetotal_posts/posts_since_last_prompt). Migrations destructives0024_delete_quote+0011_remove_userusagestats_total_quotes.quote_add/quote_create/quote_delete, page quotes, cartes & formulaires, blocs danscharacters/detail,games/report_detail,core/home,stories/detail,characters/_list_results.QuoteSerializer,quotes_count, endpoints.Note+ contextesuddenly:quotes, signaux, tâches d'émission. Arrêt silencieux — aucunDeleteémis ; l'outbox d'un personnage renvoie désormais une collection vide ; un inbound quote-Noteretombe dans le drop par défaut (pas de 500).cleanup_expired_quotes+ son entréeCELERY_BEAT_SCHEDULE.tests/games/test_citations.pysupprimé, nettoyage AP/models/views/factories.Empreinte : 1222 suppressions / 22 ajouts sur 40 fichiers.
Vérification
manage.py check·makemigrations --check= No changes ·ruff check .+ruff format --check .·mypy suddenly/— tous verts.Quoterésiduelle hors migrations historiques.pytest: 978 passed. Les 7 « échecs » sont l'artefact environnemental documenté (le test de concurrencetest_parallel_requests_serialize_via_row_locklaisse une session DB ouverte et cascade des ERROR sur les tests suivants du batch local) — le test de concurrence et la classeTestLinkOfferFederationpassent en isolation, et la CI (fresh DB) était verte avec ce test sur les 6 PR précédentes.Suite
Refs #139
🤖 Generated with Claude Code
Generated by Claude Code