# Chapitre 21 — Reproduction et remplacement : bilan de rédaction (2026-10-31) ## Compteurs - Prose : ≈ 12 750 mots (regex de `tools/check_manuscript.py` sur `manuscript/chapters/ch21.tex`) ; 35 pages compilées (chapitre + solutions + bibliographie du chapitre). - Figures : 4 (3 PDF Matplotlib + 1 schéma TikZ) — `ch21-fig-decomposition-corps.pdf` (synthétique), `ch21-fig-ipcb-montreal.pdf` (réelle, StatCan 18-10-0289-01), `ch21-fig-sensibilite.pdf` (synthétique + variation IPCB réelle), schéma de la méthode (TikZ dans le .tex). - Tableaux : 8 (repro/remplacement, composantes, méthodes, IPCB, devis par corps de métier, coûts unitaires, grille de sensibilité, élasticité). - Équations numérotées : 11 (identité, désuétude par base, C_N multiplicatif/additif, parts, élasticité, élasticité géométrique, composantes, indexation, chaînage, C_N du cas 1) ; 1 définition double + 1 définition, 2 propositions avec démonstration. - Exercices : 7 (niveaux 1, 1, 2, 2, 2, 3, 3) ; solutions détaillées dans `solutions/ch21.tex`, chiffres testés (`TestExercices`). - Encadrés : objectifs, synthetique, exemple intégral, formule, 2 × quebec (cadre de la construction ; coût neuf au rôle), erreurs, limites, synthese. - Citations : 33 clés, toutes dans `references/library.bib` (aucune nouvelle clé citée). ## Contrôles - `tools/compile_chapter.sh 21` → `OK ch21 : 35 pages, 0 references/citations non definies, 0 overfull hbox`. Seul avertissement restant : « Label ch:21 multiply defined », artefact du script de compilation présent aussi dans les logs ch16/ch29/ch30. - `python3 -m pytest -q analysis/python/tests/test_ch21.py` → 21 passed. - Scripts : `analysis/python/cases/ch21_cout_neuf.py` (imprime tous les chiffres cités) ; `analysis/python/figures/ch21_{decomposition,ipcb,sensibilite}.py` (idempotents, `from traite.style import …`). Aucune modification de `traite/*.py` ; le regroupement par corps de métier, la lecture de l'IPCB brut, la grille et la tornade sont des fonctions du script de cas (candidates à `traite.cout` si d'autres chapitres en ont besoin). - PDF relu page par page (planche de contact + pages 3, 14, 21, 23) : aucune figure ni aucun tableau ne déborde. - Convention `\cref` sans article (consigne du 2026-10-31) : toutes les occurrences portent article/préposition écrits à la main (grep vérifié). ## Fichiers livrés `manuscript/chapters/ch21.tex`, `solutions/ch21.tex`, `analysis/python/cases/ch21_cout_neuf.py`, `analysis/python/figures/ch21_*.py`, `analysis/python/tests/test_ch21.py`, `assets/figures/ch21/*.pdf`, `verification/chapters/ch21-{figures,calculations,claims,registry}.csv`, `references/lib-ch21.bib` (1 entrée, non citée), ce bilan. Rien n'a été écrit dans les CSV globaux ni dans `library.bib`. ## Points non vérifiés ou partiellement vérifiés (voir ch21-claims.csv) 1. Fourchette Altus 2026 Montréal 155-215 $/pi² : source secondaire (NerdWallet, SRC-E-043) ; tableaux Altus protégés non consultés (partiellement_verifie). 2. Taux d'incitatif de 10 % : hypothèse pédagogique, déclarée comme telle ; aucune extraction du marché de Gatineau (non_verifie). 3. TPS/TVQ sur habitation neuve : pages Revenu Québec en HTTP 403 le 2026-10-31 ; seuls le seuil fédéral de 450 000 $ et le remboursement « premiers acheteurs » (20 mars 2025 ; 1 M$ / 1,5 M$) ont été lus dans RC4028 Rév. 10/2026 (SRC-21-001). Paramètres TVQ non chiffrés dans le texte (non_verifie). 4. Hausses salariales CCQ 2025-2029 (8/5/5/4 %) : relayées par Altus, page CCQ non reconsultée (partiellement_verifie). 5. Barèmes 3E du MEFQ : non dépouillés ; renvoi sans reproduction ; pied de page « 2022 » dans le PDF 2026 des normes de mesurage. 6. Aire brute des étages du sujet (190 m²) : déduite de l'aire de la dalle (hypothèse de l'exemple, signalée). ## Suggestions pour l'harmonisation - Le ch. 24 doit partir de C_N = 397 567,33 $ (arrondi 398 000 $) et le ch. 25 de la valeur du terrain (620 m²) ; le ch. 45 réconcilie. Le ch. 23 pourra réutiliser `ipcb_montreal()` et la figure IPCB (ne pas dupliquer). - Le ch. 22 (métré, 38 postes) reprend le même devis : le regroupement en 7 blocs (`CORPS` dans `ch21_cout_neuf.py`) devrait y être réutilisé pour la cohérence. - Si `library.bib` intègre `arcRC4028` (lib-ch21.bib), remplacer la mention en toutes lettres du guide RC4028 dans l'encadré « Taxes de vente » par `\parencite{arcRC4028}`. - `codeConstruction` : year=2022 dans library.bib alors que la note parle de 2025 ; voir corrections proposées dans notes-B.md.