Skip to content

docs(passation): record the decisions taken since it was written - #298

Merged
thierryvm merged 3 commits into
mainfrom
docs/passation-maj
Aug 3, 2026
Merged

docs(passation): record the decisions taken since it was written#298
thierryvm merged 3 commits into
mainfrom
docs/passation-maj

Conversation

@thierryvm

@thierryvm thierryvm commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Trois décisions prises depuis la rédaction du document. Toutes changent le cadrage du travail à venir, pas l'état de ce qui est fait — c'est précisément ce que ce fichier doit porter, et la règle du §2 dit qu'on ne le met à jour que dans ce cas.

1. La ventilation de l'épargne passe par une table de mouvements, jamais par une colonne saisie. Un solde saisi ment dès le lendemain ; un mouvement daté reste vrai et se rejoue. Ce choix règle du même coup « investir n'est pas dépenser » : c'est la même table, donc un seul coût pour deux besoins. Les deux chantiers fusionnent — §6 passe de neuf à neuf entrées mais une redondance disparaît.

2. start d'un engagement = sa PREMIÈRE échéance, pas la date de signature ni celle du déblocage des fonds. ADR-021 D3 disait l'inverse, corrigé ici. Toute la dérivation part de cette ancre : s'y tromper décale l'échéancier entier d'une période. Inscrit dans les décisions arrêtées (§5), pas dans la liste des chantiers — c'est une règle, pas une tâche.

3. Date d'échéance et date de paiement sont aujourd'hui confondues. Le pointage écrit la date d'échéance, pas celle du versement réel. Tant qu'elles le restent, un paiement en retard est indiscernable d'un paiement à l'heure et aucun historique de ponctualité n'est possible. Manque identifié, pas encore spécifié — entré dans §6 à sa place de priorité.

Pointeurs remis à jour : la taxonomie des catégories étant appliquée en base, le préalable qu'elle imposait aux graphiques de répartition est levé. Le rapport d'audit de base est désigné comme document hors dépôt, sans chemin.

Contrôle dépôt public repassé sur huit motifs sensibles : zéro occurrence.

🤖 Generated with Claude Code

Summary by Sourcery

Mettre à jour le document PASSATION afin d’y intégrer les nouvelles décisions convenues concernant les engagements, la gestion de l’épargne et la planification des paiements.

Améliorations :

  • Préciser que la date de début d’un engagement est définie par sa première échéance, afin d’aligner la documentation avec ADR-021.
  • Décider que l’allocation de l’épargne est modélisée via une table de mouvements partagée avec les virements, en évitant les champs basés sur les soldes et en fusionnant les chantiers associés.
  • Identifier le besoin de distinguer les dates d’échéance des dates de paiement effectives pour permettre le suivi de la ponctualité.
  • Reprioriser le design system et les graphiques de répartition maintenant que la taxonomie des catégories est persistée dans la base de données.
  • Documenter que le rapport d’audit de la base de données se trouve en dehors du dépôt et mettre à jour les références en conséquence.

Documentation :

  • Actualiser le document de passation PASSATION avec les décisions les plus récentes concernant le produit et le modèle de données autour des engagements, de l’épargne et des paiements.
Original summary in English

Summary by Sourcery

Update the PASSATION document to capture newly agreed decisions on engagements, savings handling, and payment scheduling.

Enhancements:

  • Clarify that an engagement’s start date is defined by its first installment, aligning documentation with ADR-021.
  • Decide that savings allocation is modeled via a movements table shared with transfers, avoiding balance-based fields and merging related workstreams.
  • Identify the need to distinguish due dates from actual payment dates to enable punctuality tracking.
  • Reprioritize design system and distribution charts now that the category taxonomy is persisted in the database.
  • Document that the database audit report lives outside the repository and update references accordingly.

Documentation:

  • Refresh the PASSATION handover document with the latest product and data model decisions around engagements, savings, and payments.

Three, all of which change how future work is scoped rather than what has been
done — the kind of thing this file exists to carry.

Savings breakdown goes through a movements table, never a typed-in column: a
typed balance lies the next day, a dated movement stays true and replays. That
choice also settles "investing is not spending" — same table, so one cost for
two needs. The two items merge.

A commitment `start` is its FIRST instalment, not the signature or the release
of funds. ADR-021 D3 said otherwise and is corrected here; every derived date
hangs off that anchor, so getting it wrong shifts the whole schedule by a period.

Due date and payment date are currently the same field. Until they are split, a
late payment is indistinguishable from an on-time one. Identified, not yet specified.

The remaining-work section keeps only pointers: the category taxonomy is applied,
so the prerequisite it carried is lifted, and the database audit report is named
as an out-of-repo document rather than pointed at a path.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ankora Ready Ready Preview Aug 3, 2026 11:16am

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@github-actions github-actions Bot added status:review-needed Ready for review type:docs Documentation only labels Aug 3, 2026
@sourcery-ai

sourcery-ai Bot commented Aug 3, 2026

Copy link
Copy Markdown
Contributor

Guide du réviseur

Met à jour PASSATION.md pour consigner trois décisions récentes de produit / d’architecture concernant les engagements, la ventilation de l’épargne et les dates d’exigibilité vs de paiement, et réaligne en conséquence le plan de travail futur ainsi que les pointeurs vers les documents externes.

Diagramme de relations d’entités pour la ventilation de l’épargne via la table des mouvements

erDiagram
    SavingsAccount ||--o{ Transfer : has

    SavingsAccount {
      int id
    }

    Transfer {
      int id
      date movement_date
      decimal amount
      enum purpose
    }

    Engine ||--o{ Transfer : derives_provisions_from
Loading

Diagramme de relations d’entités pour la date de début des engagements et les dates d’exigibilité vs de paiement

erDiagram
    Engagement ||--o{ Installment : schedules
    Installment ||--o{ Payment : settled_by

    Engagement {
      int id
      date start
    }

    Installment {
      int id
      date due_date
      decimal amount
    }

    Payment {
      int id
      date payment_date
      decimal amount
    }
Loading

Modifications au niveau des fichiers

Changement Détails Fichiers
Documenter les nouvelles règles pour la date de début des engagements et la ventilation de l’épargne dans la section des décisions.
  • Ajouter une règle explicite indiquant que le start d’un engagement est la première date d’exigibilité, et non la date de signature ni la date de décaissement des fonds, remplaçant ADR-021 D3.
  • Indiquer que la ventilation de l’épargne doit être implémentée via une table de mouvements plutôt que via une colonne de solde saisie manuellement, en faisant référence à transfers.
docs/PASSATION.md
Reformuler le chantier de décomposabilité du compte d’épargne pour utiliser la table de transferts/mouvements partagée et clarifier les non-objectifs.
  • Mettre à jour l’item de décomposabilité du compte d’épargne pour qu’il soit fusionné avec transfers, en mettant l’accent sur une table unique de mouvements servant à la fois les cas d’usage épargne et investissement.
  • Préciser que les provisions restent dérivables par le moteur et qu’il n’y a toujours pas de composante portefeuille / patrimoine en raison des contraintes de la FSMA.
docs/PASSATION.md
Ajuster les éléments de la feuille de route pour refléter les nouvelles priorités sur la séparation des dates, les prérequis du design system et l’emplacement non versionné du rapport d’audit.
  • Introduire un nouvel élément de travail pour séparer la date d’exigibilité et la date de paiement, en expliquant les limites actuelles et le besoin d’un historique de ponctualité.
  • Mettre à jour l’item sur le design system et les graphiques pour supprimer la dépendance précédente aux catégories renseignées maintenant que la taxonomie est dans la base de données.
  • Modifier l’item du plan de nettoyage de la base de données pour qu’il pointe vers un rapport d’audit non versionné, traité comme un document hors dépôt, avec des indications sur la manière de l’obtenir.
docs/PASSATION.md

Conseils et commandes

Interaction avec Sourcery

  • Déclencher une nouvelle revue : Commentez @sourcery-ai review sur la pull request.
  • Poursuivre les discussions : Répondez directement aux commentaires de revue de Sourcery.
  • Générer un ticket GitHub à partir d’un commentaire de revue : Demandez à Sourcery de créer un
    ticket à partir d’un commentaire de revue en y répondant. Vous pouvez également répondre à un
    commentaire de revue avec @sourcery-ai issue pour créer un ticket à partir de celui-ci.
  • Générer un titre de pull request : Écrivez @sourcery-ai n’importe où dans le titre de la pull
    request pour générer un titre à tout moment. Vous pouvez aussi commenter
    @sourcery-ai title sur la pull request pour (re)générer le titre à tout moment.
  • Générer un résumé de pull request : Écrivez @sourcery-ai summary n’importe où dans
    le corps de la pull request pour générer un résumé de PR à tout moment exactement à
    l’endroit souhaité. Vous pouvez aussi commenter @sourcery-ai summary sur la pull request pour
    (re)générer le résumé à tout moment.
  • Générer un guide du réviseur : Commentez @sourcery-ai guide sur la pull
    request pour (re)générer le guide du réviseur à tout moment.
  • Résoudre tous les commentaires Sourcery : Commentez @sourcery-ai resolve sur la pull
    request pour résoudre tous les commentaires Sourcery. Utile si vous avez déjà
    traité tous les commentaires et ne souhaitez plus les voir.
  • Rejeter toutes les revues Sourcery : Commentez @sourcery-ai dismiss sur la pull
    request pour rejeter toutes les revues Sourcery existantes. Particulièrement utile si vous
    voulez repartir de zéro avec une nouvelle revue – n’oubliez pas de commenter
    @sourcery-ai review pour déclencher une nouvelle revue !

Personnaliser votre expérience

Accédez à votre dashboard pour :

  • Activer ou désactiver des fonctionnalités de revue telles que le résumé de pull request
    généré par Sourcery, le guide du réviseur, et d’autres.
  • Changer la langue de revue.
  • Ajouter, supprimer ou modifier des instructions de revue personnalisées.
  • Ajuster d’autres paramètres de revue.

Obtenir de l’aide

Original review guide in English

Reviewer's Guide

Updates PASSATION.md to record three recently made product/architecture decisions about engagements, savings ventilation, and due vs. payment dates, and re-aligns the future work plan and external document pointers accordingly.

Entity relationship diagram for savings ventilation via movements table

erDiagram
    SavingsAccount ||--o{ Transfer : has

    SavingsAccount {
      int id
    }

    Transfer {
      int id
      date movement_date
      decimal amount
      enum purpose
    }

    Engine ||--o{ Transfer : derives_provisions_from
Loading

Entity relationship diagram for engagements start date and due vs payment dates

erDiagram
    Engagement ||--o{ Installment : schedules
    Installment ||--o{ Payment : settled_by

    Engagement {
      int id
      date start
    }

    Installment {
      int id
      date due_date
      decimal amount
    }

    Payment {
      int id
      date payment_date
      decimal amount
    }
Loading

File-Level Changes

Change Details Files
Document the new rules for engagements start date and savings ventilation in the decisions section.
  • Add an explicit rule that an engagement start is the first due date, not signature or funds disbursement date, superseding ADR-021 D3.
  • State that savings ventilation must be implemented via a movements table rather than a manually entered balance column, referencing transfers.
docs/PASSATION.md
Reframe the savings account decomposability workstream to use the shared transfers/movements table and clarify non-goals.
  • Update the savings account decomposability item to be merged with transfers, emphasizing a single movements table serving both savings and investment use cases.
  • Clarify that provisions remain engine-derivable and that there is still no portfolio/wealth component due to FSMA constraints.
docs/PASSATION.md
Adjust roadmap items to reflect new priorities on date separation, design system prerequisites, and non-versioned audit report location.
  • Introduce a new work item to separate due date and payment date, explaining current limitations and the need for punctuality history.
  • Update the design system and charts item to remove the previous dependency on populated categories now that taxonomy is in the database.
  • Change the database clean-up plan item to point to an unversioned audit report treated as an out-of-repo document, with guidance on how to obtain it.
docs/PASSATION.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Salut – j’ai trouvé un point à corriger et j’ai laissé quelques retours de haut niveau :

  • La nouvelle règle selon laquelle start est la première échéance, en contradiction avec ADR-021 D3, n’est mentionnée qu’ici ; envisage de mettre à jour ADR-021 lui‑même ou d’ajouter une référence croisée explicite afin que les lecteurs futurs n’aient pas à concilier des sources divergentes.
  • L’explication sur la ventilation de l’épargne via une table de mouvements apparaît à la fois dans la section principes et dans la description du chantier ; tu pourrais réduire la duplication en ne gardant qu’une explication détaillée et en faisant que l’autre emplacement y renvoie (ou y fasse référence).
  • La note « demande‑le à Thierry » rend le processus dépendant d’une personne ; envisage de clarifier un moyen plus pérenne et impersonnel de retrouver le rapport d’audit (par ex. emplacement de stockage ou rôle responsable) afin que le document reste utilisable même si les personnes changent.
Prompt pour agents IA
Please address the comments from this code review:

## Overall Comments
- The new rule about `start` being the first échéance contradicting ADR-021 D3 is only noted here; consider updating ADR-021 itself or adding a direct cross-reference so future readers don’t have to reconcile divergent sources.
- The explanation about ventilation de l’épargne via a mouvements table appears both in the principles section and in the chantier description; you might reduce duplication by keeping one detailed explanation and having the other location link or refer to it.
- The note "demande-le à Thierry" makes the process person-dependent; consider clarifying a more durable, impersonal way to locate the audit report (e.g., storage location or ownership role) so the document remains usable if people change.

## Individual Comments

### Comment 1
<location path="docs/PASSATION.md" line_range="200-203" />
<code_context>
+   fera par une **table de mouvements**, pas par une colonne saisie — un solde saisi ment dès
+   le lendemain, un mouvement daté reste vrai et se rejoue. Ce choix règle du même coup
+   « investir n'est pas dépenser » : c'est la même table, donc **un seul coût pour deux
+   besoins**. La part provisions reste **dérivable** du moteur — rien à étiqueter à la main. Et
+   chaque virement proposé doit dire **pour quelles échéances**.
+   Toujours sans partie patrimoine — valorisations et rendements sont une ligne rouge FSMA (§5).
</code_context>
<issue_to_address>
**suggestion (typo):** Envisager « La part de provisions » pour une tournure plus grammaticale.

La phrase actuelle « La part provisions reste dérivable » sonne un peu bancale en français. Je recommande « La part de provisions reste dérivable » (ou éventuellement « La part "provisions" reste dérivable ») pour une tournure plus naturelle tout en conservant le sens.

```suggestion
   le lendemain, un mouvement daté reste vrai et se rejoue. Ce choix règle du même coup
   « investir n'est pas dépenser » : c'est la même table, donc **un seul coût pour deux
   besoins**. La part de provisions reste **dérivable** du moteur — rien à étiqueter à la main. Et
   chaque virement proposé doit dire **pour quelles échéances**.
```
</issue_to_address>

Sourcery est gratuit pour l’open source – si vous appréciez nos revues, pensez à les partager ✨
Aidez‑moi à être plus utile ! Merci de cliquer sur 👍 ou 👎 sur chaque commentaire ; j’utiliserai vos retours pour améliorer vos prochaines revues.
Original comment in English

Hey - I've found 1 issue, and left some high level feedback:

  • The new rule about start being the first échéance contradicting ADR-021 D3 is only noted here; consider updating ADR-021 itself or adding a direct cross-reference so future readers don’t have to reconcile divergent sources.
  • The explanation about ventilation de l’épargne via a mouvements table appears both in the principles section and in the chantier description; you might reduce duplication by keeping one detailed explanation and having the other location link or refer to it.
  • The note "demande-le à Thierry" makes the process person-dependent; consider clarifying a more durable, impersonal way to locate the audit report (e.g., storage location or ownership role) so the document remains usable if people change.
Prompt for AI Agents
Please address the comments from this code review:

## Overall Comments
- The new rule about `start` being the first échéance contradicting ADR-021 D3 is only noted here; consider updating ADR-021 itself or adding a direct cross-reference so future readers don’t have to reconcile divergent sources.
- The explanation about ventilation de l’épargne via a mouvements table appears both in the principles section and in the chantier description; you might reduce duplication by keeping one detailed explanation and having the other location link or refer to it.
- The note "demande-le à Thierry" makes the process person-dependent; consider clarifying a more durable, impersonal way to locate the audit report (e.g., storage location or ownership role) so the document remains usable if people change.

## Individual Comments

### Comment 1
<location path="docs/PASSATION.md" line_range="200-203" />
<code_context>
+   fera par une **table de mouvements**, pas par une colonne saisie — un solde saisi ment dès
+   le lendemain, un mouvement daté reste vrai et se rejoue. Ce choix règle du même coup
+   « investir n'est pas dépenser » : c'est la même table, donc **un seul coût pour deux
+   besoins**. La part provisions reste **dérivable** du moteur — rien à étiqueter à la main. Et
+   chaque virement proposé doit dire **pour quelles échéances**.
+   Toujours sans partie patrimoine — valorisations et rendements sont une ligne rouge FSMA (§5).
</code_context>
<issue_to_address>
**suggestion (typo):** Envisager « La part de provisions » pour une tournure plus grammaticale.

La phrase actuelle « La part provisions reste dérivable » sonne un peu bancale en français. Je recommande « La part de provisions reste dérivable » (ou éventuellement « La part "provisions" reste dérivable ») pour une tournure plus naturelle tout en conservant le sens.

```suggestion
   le lendemain, un mouvement daté reste vrai et se rejoue. Ce choix règle du même coup
   « investir n'est pas dépenser » : c'est la même table, donc **un seul coût pour deux
   besoins**. La part de provisions reste **dérivable** du moteur — rien à étiqueter à la main. Et
   chaque virement proposé doit dire **pour quelles échéances**.
```
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread docs/PASSATION.md
…#298

Founded: the elided form read as a compound noun rather than a partitive.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Three decisions from a live test session, all of which constrain the movements
table before it is built.

An expense carries its source account. The model knows only one, implicitly. A
household spreads spending across several accounts, and an expense without a
source account cannot yield a balance: you know an amount left, never from where.

A movement goes from one account to another; it is not an entry or an exit. Some
accounts cannot pay directly — their money must transit through a current account
first. So the model is source → destination, and a two-step path must still read
as a single economic gesture, or totals double.

Drill-down moves from structuring principle to non-negotiable, because it now has
measured justification: a transfer computed by hand deducted twice a provision
already withheld upstream. That is the charges ↔ commitments double count this
project is already fixing, reproduced mentally, for the same reason — an amount
appearing twice with no way to see it was already deducted. An aggregate that
does not unfold hides what has already been subtracted.

Written in model terms: no account names, no amounts, no personal data. Public
repository.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@thierryvm
thierryvm merged commit 654b0e6 into main Aug 3, 2026
15 checks passed
@thierryvm
thierryvm deleted the docs/passation-maj branch August 3, 2026 14:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:review-needed Ready for review type:docs Documentation only

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant