Books / Law as Code in Practice: French Family Benefits / Chapter 14
Part V · Chapter 14
Testing a Reform Before It Is Signed

Contents of Law as Code in Practice: French Family Benefits
The draft instruction in this chapter is fictional: no such instruction was signed.
By the end of this chapter you will be able to take a draft change to the rules, check its formalisation, see what it computes and which rules it touches, and measure what it does to three families’ allowances — before anyone signs it.
Lawyer: exactly which rule the draft changes.
Analyst: what it does to families’ amounts, and what the impact report does and does not observe.
Developer: the four steps — check, evaluate, impact, run the cases.
1. The question
Every spring the social security directorate (DSS) publishes an instruction that revalues the BMAF — the monthly base most family benefits are a percentage of. The 2026 instruction (DSS/2B/2026/46) reads:
Au 1er avril 2026, le coefficient de revalorisation de la base mensuelle des allocations familiales (BMAF) … est fixé à 1,008 soit un taux de revalorisation de la BMAF de 0,8 %.
So the BMAF moved from €474.37 to €478.16 on 1 April 2026. Now take a fictional policy experiment: multiply the published coefficient by 1.05, so 1.008 becomes 1.0584. In practice a yearly instruction applies the formula of article L. 161-25 and cannot change it; a departure like this would need its own legal basis. Here it is a teaching device. Before such a draft is signed, a team wants four answers. Is the draft well-formed as a formalisation? What does it compute? Which rules does it touch? And what does it do to families?
Make a prediction: the fictional Bernard household — three children, first resources band, no age supplements — receives €349.06 a month in family allowances before the CRDS deduction. With the draft, roughly how much more?
2. The rule behind the revaluation
The instruction applies article L. 161-25 of the social security code:
La revalorisation annuelle des montants de prestations dont les dispositions renvoient au présent article est effectuée sur la base d’un coefficient égal à l’évolution de la moyenne annuelle des prix à la consommation, hors tabac … Si ce coefficient est inférieur à un, il est porté à cette valeur.
In English: amounts that refer to this article are revalued each year by a coefficient equal to the change in average consumer prices excluding tobacco; if the coefficient is below one, it is raised to one.
In the revaluation canon, three short rules carry this: one raises a coefficient below one to one, one keeps a coefficient from one upward as it is, and one chains the BMAF from the previous year, rounded to the cent. The draft changes the second, by a single expression. The excerpts show the last two:
// in force
rule CoeffNominal(e: Exercice, c: Decimal) strict {
when coefficient_annee(e, c) and c >= 1.0;
then coefficient_retenu(e, c);
}
// draft (fictional): "nominal coefficient increased by five percent"
rule CoeffNominal(e: Exercice, c: Decimal) strict {
when coefficient_annee(e, c) and c >= 1.0;
then coefficient_retenu(e, c * 1.05);
}
rule BmafChaine(e: Exercice, base: Money, c: Decimal) strict {
when bmaf_precedente(e, base) and coefficient_retenu(e, c);
then bmaf_revalorisee(e, round(base * c, 2, "HALF_UP"));
}
These are separate excerpts: the draft CoeffNominal replaces the rule in force; the two are shown together for comparison, not as one file. Labels, dates and source anchors are left out.
3. Step 1 — Is the draft well-formed?
The whole draft package — rules, sources, editions — is checked as an Arxo formalisation, in a sandbox apart from the canon in force. The recorded verdict:
EXPRESSIBLE — check is clean, lowering is complete, schema-valid. … A green check does not mean that the rules derive anything.
Expressible means that Arxo accepts the formalisation and translates it without omissions. It says nothing about legal validity or about who may sign. And the second sentence matters: a draft can be well-formed and still compute nothing useful. So the next step runs it.
4. Step 2 — What does it compute?
With the published inputs for 2026 — last year’s BMAF of €474.37 and the coefficient 1.008 — the draft derives:
| In force | Draft | |
|---|---|---|
| Coefficient retained | 1.008 | 1323/1250 (= 1.008 × 1.05 = 1.0584) |
| BMAF from 1 April 2026 | €478.16 | €502.07 |
The coefficient stays an exact fraction until the rule rounds the BMAF to the cent.
5. Step 3 — Which rules does it touch?
The impact report compares the draft with the canon in force:
- one rule changed —
CoeffNominal; the change is semantic, not cosmetic; - the recorded impact run evaluated no scenarios. It compared the two versions of the package and reports the changed rule as unobserved — and it refuses to read that as “no effect”: in its words, absence of observation, not a conclusion.
This is the line to read first: the report names the changed rule and says what it has not observed. The canon’s own test suite does exercise CoeffNominal; running it against the draft is a separate step. In this chapter, Step 2 executed the changed rule with explicit inputs, and Step 4 brings the resulting BMAF into the families’ files.
6. Step 4 — Run the families
Meet three fictional households from the book’s revaluation cohort: Martin, Bernard and Petit. All are in metropolitan France, in resources band 1 (the full rates), with no age supplements or forfait. Each file is evaluated for 15 April 2026 twice: with the BMAF in force, €478.16, and with the draft’s BMAF, €502.07 — nothing else changes.
| Family | Children | In force | Draft | Difference |
|---|---|---|---|---|
| Martin | 2 | €153.01 | €160.66 | +€7.65 |
| Bernard | 3 | €349.06 | €366.51 | +€17.45 |
| Petit | 4 | €545.10 | €572.36 | +€27.26 |
Each amount is the family allowance due for the month, before the CRDS deduction, computed by the model with its rule and article: 32%, 73% and 114% of the BMAF for two, three and four children, under the reading each case selects by name, ArrondiLignesDss — each row of the scale rounded to the cent, as the yearly instruction publishes its amounts (arrondis au centième d’euro le plus proche), with an exact half-cent rounded up. The differences were computed by the engine too. That answers your prediction: about €17 more for three children.
Recorded on 9 October 2026 in the French Benefits Lab; the six family amounts were run again on 11 October 2026 with law 0.1.11 and came out the same.
7. What this gives the fund
A draft can be tested as a formalised rule before it is signed: is it well-formed, what does it compute, which rules does it touch, and what does it do to family files, one by one. The report also says plainly where the evidence stops: a changed rule it has not observed is flagged, not silently counted as unaffected. Three families are not a budget estimate — that needs representative population data and weights. They show what the draft does to three stated files, with every amount traceable to its rule and article; whether that is what its authors intend is for them to say.
8. Where OpenFisca and Catala stand
France has a rich tradition of reform simulation. OpenFisca has modelled French taxes and benefits since 2011; its reform mechanism changes a copy of the system and keeps the baseline, and LexImpact uses OpenFisca to help Parliament estimate the household and budget effects of amendments. Catala, a pioneering law-as-code project, keeps executable rules beside the legal text, with tests and execution traces.
What this chapter adds is a check of the draft as a package of rules with its pinned sources; an impact report that names the changed rule and says what it has not observed; and a proof graph with source anchors behind every amount, before and after. That helps reviewers see both the change and the evidence still needed. The Catala book treats a change in the law as a change to the program, verified by tests and continuous integration (ch. 3.3); it describes no separate draft check or impact report for Catala 1.3.0.
9. Explore the recorded scene
The scene Before a benefit instruction is signed shows the recorded draft check, the draft BMAF and the three families before and after. The same steps are available to an analyst or an AI assistant through Arxo’s tools for drafts — check, evaluate and impact; the family amounts come from ordinary questions to the cohort’s case files.
Exercise
- What exactly does the draft change in the revaluation rules?
- The impact report finds no changed outcome. Why does that not mean the draft has no effect?
- By how much does the draft raise the Petit family’s allowance, and why is the increase larger than the Martins’?