{
 "generated": "2026-08-19",
 "counts": {
  "functions": 15,
  "subfunctions": 85,
  "io_types": 34,
  "solutions": 197,
  "io_index": 300
 },
 "functions": [
  {
   "id": "FN-01",
   "name": "Structural integrity & safety",
   "summary": "",
   "slug": "structural-integrity-safety",
   "slug_fr": "integrite-structurelle-et-securite",
   "fr": {
    "name": "Intégrité structurelle et sécurité"
   }
  },
  {
   "id": "FN-02",
   "name": "Thermal comfort",
   "summary": "",
   "slug": "thermal-comfort",
   "slug_fr": "confort-thermique",
   "fr": {
    "name": "Confort thermique"
   }
  },
  {
   "id": "FN-03",
   "name": "Air quality & ventilation",
   "summary": "",
   "slug": "air-quality-ventilation",
   "slug_fr": "qualite-de-l-air-et-ventilation",
   "fr": {
    "name": "Qualité de l’air et ventilation"
   }
  },
  {
   "id": "FN-04",
   "name": "Light",
   "summary": "",
   "slug": "light",
   "slug_fr": "lumiere",
   "fr": {
    "name": "Lumière"
   }
  },
  {
   "id": "FN-05",
   "name": "Acoustic comfort",
   "summary": "",
   "slug": "acoustic-comfort",
   "slug_fr": "confort-acoustique",
   "fr": {
    "name": "Confort acoustique"
   }
  },
  {
   "id": "FN-06",
   "name": "Potable water supply",
   "summary": "",
   "slug": "potable-water-supply",
   "slug_fr": "alimentation-en-eau-potable",
   "fr": {
    "name": "Alimentation en eau potable"
   }
  },
  {
   "id": "FN-07",
   "name": "Greywater management",
   "summary": "",
   "slug": "greywater-management",
   "slug_fr": "gestion-des-eaux-grises",
   "fr": {
    "name": "Gestion des eaux grises"
   }
  },
  {
   "id": "FN-08",
   "name": "Blackwater / sewage management",
   "summary": "",
   "slug": "blackwater-sewage-management",
   "slug_fr": "gestion-des-eaux-noires-et-de-l-assainissement",
   "fr": {
    "name": "Gestion des eaux noires et de l’assainissement"
   }
  },
  {
   "id": "FN-09",
   "name": "Power & energy supply",
   "summary": "",
   "slug": "power-energy-supply",
   "slug_fr": "production-et-fourniture-d-energie",
   "fr": {
    "name": "Production et fourniture d’énergie"
   }
  },
  {
   "id": "FN-10",
   "name": "Food storage & preparation infrastructure",
   "summary": "",
   "slug": "food-storage-preparation-infrastructure",
   "slug_fr": "conservation-et-preparation-des-aliments",
   "fr": {
    "name": "Conservation et préparation des aliments"
   }
  },
  {
   "id": "FN-11",
   "name": "Personal hygiene & sanitation",
   "summary": "",
   "slug": "personal-hygiene-sanitation",
   "slug_fr": "hygiene-personnelle-et-sanitaires",
   "fr": {
    "name": "Hygiène personnelle et sanitaires"
   }
  },
  {
   "id": "FN-12",
   "name": "Space & occupancy",
   "summary": "",
   "slug": "space-occupancy",
   "slug_fr": "espace-et-occupation",
   "fr": {
    "name": "Espace et occupation"
   }
  },
  {
   "id": "FN-13",
   "name": "Building durability & maintainability",
   "summary": "",
   "slug": "building-durability-maintainability",
   "slug_fr": "durabilite-et-facilite-d-entretien-du-batiment",
   "fr": {
    "name": "Durabilité et facilité d’entretien du bâtiment"
   }
  },
  {
   "id": "FN-14",
   "name": "Solid waste management",
   "summary": "",
   "slug": "solid-waste-management",
   "slug_fr": "gestion-des-dechets-solides",
   "fr": {
    "name": "Gestion des déchets solides"
   }
  },
  {
   "id": "FN-15",
   "name": "Connectivity & communication",
   "summary": "",
   "slug": "connectivity-communication",
   "slug_fr": "connectivite-et-communication",
   "fr": {
    "name": "Connectivité et communication"
   }
  }
 ],
 "subfunctions": [
  {
   "id": "FN-01.1",
   "name": "Load-bearing structure (foundation, walls, roof)",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "load-bearing-structure",
   "slug_fr": "structure-porteuse",
   "fr": {
    "name": "Structure porteuse (fondations, murs, toiture)"
   }
  },
  {
   "id": "FN-01.2",
   "name": "Foundation design for soil conditions (e.g. clay shrink-swell resistance)",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "foundation-design-for-soil-conditions",
   "slug_fr": "fondations-adaptees-au-sol",
   "fr": {
    "name": "Fondations adaptées au sol (retrait-gonflement des argiles, etc.)"
   }
  },
  {
   "id": "FN-01.3",
   "name": "Wind/storm resistance",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "wind-storm-resistance",
   "slug_fr": "resistance-au-vent-et-aux-tempetes",
   "fr": {
    "name": "Résistance au vent et aux tempêtes"
   }
  },
  {
   "id": "FN-01.4",
   "name": "Fire safety (prevention, compartmentalization, escape)",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "fire-safety",
   "slug_fr": "securite-incendie",
   "fr": {
    "name": "Sécurité incendie (prévention, compartimentage, évacuation)"
   }
  },
  {
   "id": "FN-01.5",
   "name": "Flood mitigation",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "flood-mitigation",
   "slug_fr": "protection-contre-les-inondations",
   "fr": {
    "name": "Protection contre les inondations"
   }
  },
  {
   "id": "FN-01.6",
   "name": "Hail/impact resistance",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "hail-impact-resistance",
   "slug_fr": "resistance-a-la-grele-et-aux-impacts",
   "fr": {
    "name": "Résistance à la grêle et aux impacts"
   }
  },
  {
   "id": "FN-01.7",
   "name": "Structural durability over building life",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "structural-durability-over-building-life",
   "slug_fr": "durabilite-structurelle-sur-la-vie-du-batiment",
   "fr": {
    "name": "Durabilité structurelle sur la vie du bâtiment"
   }
  },
  {
   "id": "FN-01.8",
   "name": "Security / intrusion protection",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "security-intrusion-protection",
   "slug_fr": "securite-et-protection-contre-l-intrusion",
   "fr": {
    "name": "Sécurité et protection contre l’intrusion"
   }
  },
  {
   "id": "FN-01.9",
   "name": "Site drainage & stormwater management (foundation moisture stability)",
   "function_id": "FN-01",
   "summary": "",
   "efficiency_basis": "",
   "slug": "site-drainage-stormwater-management",
   "slug_fr": "drainage-du-terrain-et-gestion-des-eaux-pluviales",
   "fr": {
    "name": "Drainage du terrain et gestion des eaux pluviales (stabilité hydrique des fondations)"
   }
  },
  {
   "id": "FN-02.1",
   "name": "Building form / compactness (surface-to-volume ratio)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "building-form-compactness",
   "slug_fr": "forme-et-compacite-du-batiment",
   "fr": {
    "name": "Forme et compacité du bâtiment (rapport surface/volume)"
   }
  },
  {
   "id": "FN-02.2",
   "name": "Site & building orientation (relative to sun and prevailing wind)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "site-building-orientation",
   "slug_fr": "orientation-du-terrain-et-du-batiment",
   "fr": {
    "name": "Orientation du terrain et du bâtiment (soleil et vents dominants)"
   }
  },
  {
   "id": "FN-02.3",
   "name": "Heat-loss prevention (insulation)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "Ranked by thermal resistance per unit thickness (lambda, W/m.K). Vacuum panels are the ceiling; bio-based boards sit in the middle; loose earth/straw give less R per thickness.",
   "slug": "heat-loss-prevention",
   "slug_fr": "limitation-des-deperditions",
   "fr": {
    "name": "Limitation des déperditions (isolation)",
    "efficiency_basis": "Classement par résistance thermique par unité d’épaisseur (lambda, W/m·K). Les panneaux sous vide constituent le plafond ; les panneaux biosourcés se situent au milieu ; la terre ou la paille en vrac offrent moins de résistance R par épaisseur."
   }
  },
  {
   "id": "FN-02.4",
   "name": "Thermal bridging elimination",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "thermal-bridging-elimination",
   "slug_fr": "traitement-des-ponts-thermiques",
   "fr": {
    "name": "Traitement des ponts thermiques"
   }
  },
  {
   "id": "FN-02.5",
   "name": "Airtightness",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "airtightness",
   "slug_fr": "etancheite-a-l-air",
   "fr": {
    "name": "Étanchéité à l’air"
   }
  },
  {
   "id": "FN-02.6",
   "name": "High-performance openings (windows, doors, glazing)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "Ranked by U-value, how much heat the whole unit loses per square metre for each degree of difference between inside and out, so lower is better. Triple glazing with a low-E coating is the ceiling; each step down adds either a pane or a night-only layer. Note shutters and curtains work only while closed, so they cut night-time loss without improving the window itself.",
   "slug": "high-performance-openings",
   "slug_fr": "menuiseries-performantes",
   "fr": {
    "name": "Menuiseries performantes (fenêtres, portes, vitrages)",
    "efficiency_basis": "Classement par coefficient U, la quantité de chaleur perdue par l’ensemble de la menuiserie, par mètre carré et par degré d’écart entre intérieur et extérieur ; plus c’est bas, mieux c’est. Le triple vitrage à couche faible émissivité constitue le plafond ; chaque niveau en dessous ajoute soit une vitre, soit une couche nocturne seulement. À noter : volets et rideaux ne fonctionnent que fermés, donc ils réduisent les pertes nocturnes sans améliorer la fenêtre elle-même."
   }
  },
  {
   "id": "FN-02.7",
   "name": "Passive solar heat gain (winter)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "passive-solar-heat-gain",
   "slug_fr": "apports-solaires-passifs",
   "fr": {
    "name": "Apports solaires passifs (hiver)"
   }
  },
  {
   "id": "FN-02.8",
   "name": "Solar gain avoidance / shading (summer)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "solar-gain-avoidance-shading",
   "slug_fr": "protection-solaire-et-ombrage",
   "fr": {
    "name": "Protection solaire et ombrage (été)"
   }
  },
  {
   "id": "FN-02.9",
   "name": "Thermal mass (heat storage/release)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "Ranked by volumetric heat capacity, how much heat a given volume of the material stores for each degree it warms. Water holds roughly twice as much per unit volume as masonry, which is why a water wall out-performs an equivalent thickness of stone; the trade-off is that masonry is usually structure you already have, while water needs a sealed vessel.",
   "slug": "thermal-mass",
   "slug_fr": "inertie-thermique",
   "fr": {
    "name": "Inertie thermique (stockage et restitution de chaleur)",
    "efficiency_basis": "Classement par capacité thermique volumique, la quantité de chaleur qu’un volume donné de matériau stocke par degré de réchauffement. L’eau en stocke environ deux fois plus par unité de volume que la maçonnerie, ce qui explique qu’un mur d’eau surpasse une épaisseur équivalente de pierre ; la contrepartie est que la maçonnerie est généralement une structure déjà présente, alors que l’eau nécessite une enceinte étanche."
   }
  },
  {
   "id": "FN-02.10",
   "name": "Active backup heating",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "Ranked by useful heat delivered per unit of energy put in. A heat pump moves existing heat rather than generating it, so it delivers several units of heat per unit of electricity and sits well above anything burning fuel. Among the combustion options, a mass heater extracts more from the same wood than a plain stove by storing a short, hot burn instead of sending it up the flue.",
   "slug": "active-backup-heating",
   "slug_fr": "chauffage-d-appoint-actif",
   "fr": {
    "name": "Chauffage d’appoint actif",
    "efficiency_basis": "Classement par chaleur utile délivrée par unité d’énergie consommée. Une pompe à chaleur déplace de la chaleur existante plutôt que de la produire, elle délivre donc plusieurs unités de chaleur par unité d’électricité et se situe bien au-dessus de tout ce qui brûle un combustible. Parmi les options à combustion, un poêle de masse extrait plus du même bois qu’un poêle simple en stockant une flambée courte et intense au lieu de l’envoyer dans le conduit."
   }
  },
  {
   "id": "FN-02.11",
   "name": "Active cooling",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "active-cooling",
   "slug_fr": "rafraichissement-actif",
   "fr": {
    "name": "Rafraîchissement actif"
   }
  },
  {
   "id": "FN-02.12",
   "name": "Ground-source temperature moderation (earth tubes, buried pipes, earth-sheltering)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "ground-source-temperature-moderation",
   "slug_fr": "regulation-par-le-sol",
   "fr": {
    "name": "Régulation par le sol (puits canadien, tubes enterrés, habitat semi-enterré)"
   }
  },
  {
   "id": "FN-02.13",
   "name": "Entry transition / thermal buffer spaces (unconditioned buffer zones e.g. north-facing utility rooms; solar buffer spaces e.g. south-facing attached sunspace/greenhouse)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "entry-transition-thermal-buffer-spaces",
   "slug_fr": "espaces-tampons-thermiques",
   "fr": {
    "name": "Espaces tampons thermiques (locaux non chauffés au nord ; véranda ou serre solaire au sud)"
   }
  },
  {
   "id": "FN-02.14",
   "name": "Zoned / selective space conditioning (heating/cooling only occupied or active spaces)",
   "function_id": "FN-02",
   "summary": "",
   "efficiency_basis": "",
   "slug": "zoned-selective-space-conditioning",
   "slug_fr": "zonage-du-chauffage-et-du-rafraichissement",
   "fr": {
    "name": "Zonage du chauffage et du rafraîchissement (uniquement les pièces occupées)"
   }
  },
  {
   "id": "FN-03.1",
   "name": "Passive/natural ventilation strategy (cross-ventilation, stack effect, night cooling)",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "",
   "slug": "passive-natural-ventilation-strategy",
   "slug_fr": "ventilation-naturelle",
   "fr": {
    "name": "Ventilation naturelle (traversante, effet de cheminée, rafraîchissement nocturne)"
   }
  },
  {
   "id": "FN-03.2",
   "name": "Mechanical/powered ventilation (incl. heat recovery)",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "Ranked by heat-recovery effectiveness - how much warmth the unit reclaims from outgoing air instead of losing it. A central ducted system recovers 80-90% (Centre for Sustainable Energy, cse.org.uk); per-room units recover measurably less, as each unit sits in an external wall and loses heat to the cold fabric around it (Selfbuild.ie). The direction is well established; the exact decentralised range is not independently sourced here. As with every efficiency figure in this catalogue, these are class-level theoretical ranges - real performance depends on the specific product, the install, and commissioning quality.",
   "slug": "mechanical-powered-ventilation",
   "slug_fr": "ventilation-mecanique",
   "fr": {
    "name": "Ventilation mécanique (y compris double flux)",
    "efficiency_basis": "Classement par efficacité de récupération de chaleur, la quantité de chaleur que l’appareil récupère de l’air extrait au lieu de la perdre. Un système centralisé à gaines récupère 80-90% (Centre for Sustainable Energy, cse.org.uk) ; les unités par pièce en récupèrent nettement moins, chaque unité étant posée dans un mur extérieur et perdant de la chaleur vers la paroi froide environnante (Selfbuild.ie). La tendance est bien établie ; la plage exacte pour le décentralisé n’est pas sourcée indépendamment ici. Comme pour tout chiffre d’efficacité de ce catalogue, ce sont des plages théoriques au niveau de la famille de techniques, la performance réelle dépend du produit précis, de la pose et de la qualité de mise en service."
   }
  },
  {
   "id": "FN-03.3",
   "name": "Humidity/condensation control",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "",
   "slug": "humidity-condensation-control",
   "slug_fr": "maitrise-de-l-humidite-et-de-la-condensation",
   "fr": {
    "name": "Maîtrise de l’humidité et de la condensation"
   }
  },
  {
   "id": "FN-03.4",
   "name": "Pollutant/VOC control",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "",
   "slug": "pollutant-voc-control",
   "slug_fr": "maitrise-des-polluants-et-des-cov",
   "fr": {
    "name": "Maîtrise des polluants et des COV"
   }
  },
  {
   "id": "FN-03.5",
   "name": "CO2 removal",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "",
   "slug": "co2-removal",
   "slug_fr": "evacuation-du-co2",
   "fr": {
    "name": "Évacuation du CO2"
   }
  },
  {
   "id": "FN-03.6",
   "name": "Odor management",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "",
   "slug": "odor-management",
   "slug_fr": "gestion-des-odeurs",
   "fr": {
    "name": "Gestion des odeurs"
   }
  },
  {
   "id": "FN-03.7",
   "name": "Soil gas / radon mitigation",
   "function_id": "FN-03",
   "summary": "",
   "efficiency_basis": "Ranked by how much radon actually gets removed. Active sub-slab depressurisation vents soil gas before it can enter and achieves the larger, more dependable reduction; a sealed barrier is passive and performs only as long as it stays intact, a single service penetration or crack undoes a large part of it.",
   "slug": "soil-gas-radon-mitigation",
   "slug_fr": "traitement-des-gaz-du-sol-et-du-radon",
   "fr": {
    "name": "Traitement des gaz du sol et du radon",
    "efficiency_basis": "Classement par quantité de radon réellement éliminée. La dépressurisation active sous dallage évacue le gaz du sol avant qu’il ne puisse entrer et obtient la réduction la plus importante et la plus fiable ; une barrière scellée est passive et ne fonctionne que tant qu’elle reste intacte, une seule traversée technique ou fissure en annule une grande partie."
   }
  },
  {
   "id": "FN-04.1",
   "name": "Daylighting",
   "function_id": "FN-04",
   "summary": "",
   "efficiency_basis": "",
   "slug": "daylighting",
   "slug_fr": "eclairage-naturel",
   "fr": {
    "name": "Éclairage naturel"
   }
  },
  {
   "id": "FN-04.2",
   "name": "Glare control",
   "function_id": "FN-04",
   "summary": "",
   "efficiency_basis": "",
   "slug": "glare-control",
   "slug_fr": "maitrise-de-l-eblouissement",
   "fr": {
    "name": "Maîtrise de l’éblouissement"
   }
  },
  {
   "id": "FN-04.3",
   "name": "Artificial lighting",
   "function_id": "FN-04",
   "summary": "",
   "efficiency_basis": "Ranked by light delivered per unit of energy. Note these options serve different roles - mains or battery lighting for everyday use versus a human-powered lamp as an emergency fallback - so the comparison shows output, not interchangeability. Class-level theoretical ranges, as everywhere in this catalogue.",
   "slug": "artificial-lighting",
   "slug_fr": "eclairage-artificiel",
   "fr": {
    "name": "Éclairage artificiel",
    "efficiency_basis": "Classement par lumière délivrée par unité d’énergie. À noter que ces options remplissent des rôles différents, éclairage sur secteur ou batterie pour l’usage quotidien, contre une lampe à énergie humaine comme solution de secours, donc la comparaison montre la production, pas l’interchangeabilité. Plages théoriques au niveau de la famille de techniques, comme partout dans ce catalogue."
   }
  },
  {
   "id": "FN-04.4",
   "name": "Winter daylight management",
   "function_id": "FN-04",
   "summary": "",
   "efficiency_basis": "",
   "slug": "winter-daylight-management",
   "slug_fr": "lumiere-naturelle-en-hiver",
   "fr": {
    "name": "Lumière naturelle en hiver"
   }
  },
  {
   "id": "FN-05.1",
   "name": "External noise insulation",
   "function_id": "FN-05",
   "summary": "",
   "efficiency_basis": "",
   "slug": "external-noise-insulation",
   "slug_fr": "isolation-aux-bruits-exterieurs",
   "fr": {
    "name": "Isolation aux bruits extérieurs"
   }
  },
  {
   "id": "FN-05.2",
   "name": "Internal (private/shared) separation",
   "function_id": "FN-05",
   "summary": "",
   "efficiency_basis": "",
   "slug": "internal-separation",
   "slug_fr": "separation-acoustique-interieure",
   "fr": {
    "name": "Séparation acoustique intérieure (espaces privés et partagés)"
   }
  },
  {
   "id": "FN-05.3",
   "name": "Mechanical system noise control",
   "function_id": "FN-05",
   "summary": "",
   "efficiency_basis": "",
   "slug": "mechanical-system-noise-control",
   "slug_fr": "maitrise-du-bruit-des-equipements",
   "fr": {
    "name": "Maîtrise du bruit des équipements"
   }
  },
  {
   "id": "FN-06.1",
   "name": "Sourcing / extraction",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "",
   "slug": "sourcing-extraction",
   "slug_fr": "captage-et-prelevement",
   "fr": {
    "name": "Captage et prélèvement"
   }
  },
  {
   "id": "FN-06.2",
   "name": "Storage",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "",
   "slug": "storage",
   "slug_fr": "stockage",
   "fr": {
    "name": "Stockage"
   }
  },
  {
   "id": "FN-06.3",
   "name": "Treatment / purification",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "Ranked by breadth of contaminant removal: turbidity -> bacteria/viruses -> dissolved solids and chemicals (PFAS, nitrates, salts). Reverse osmosis reaches the highest ceiling; passive filters cover microbial contamination only.",
   "slug": "treatment-purification",
   "slug_fr": "traitement-et-potabilisation",
   "fr": {
    "name": "Traitement et potabilisation",
    "efficiency_basis": "Classement par étendue d’élimination des contaminants : turbidité -> bactéries/virus -> solides dissous et produits chimiques (PFAS, nitrates, sels). L’osmose inverse atteint le plafond le plus élevé ; les filtres passifs ne couvrent que la contamination microbienne."
   }
  },
  {
   "id": "FN-06.4",
   "name": "Distribution",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "",
   "slug": "distribution",
   "slug_fr": "distribution",
   "fr": {
    "name": "Distribution"
   }
  },
  {
   "id": "FN-06.5",
   "name": "Domestic water heating",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "Ranked by how much of the hot-water demand is met without purchased energy. Solar thermosiphon leads because it collects and stores with no pump; the batch heater collects as freely but loses more overnight because the store is the collector. Flue and compost coils are free but only while the stove burns or the pile is hot, and the compost coil pre-heats rather than reaching final temperature. An electric or heat-pump heater is the most dependable and the only one where every unit of heat is bought.",
   "slug": "domestic-water-heating",
   "slug_fr": "production-d-eau-chaude-sanitaire",
   "fr": {
    "name": "Production d’eau chaude sanitaire",
    "efficiency_basis": "Classement par part du besoin en eau chaude couverte sans énergie achetée. Le thermosiphon solaire est en tête car il collecte et stocke sans pompe ; le chauffe-eau monobloc collecte tout aussi librement mais perd davantage la nuit car le réservoir est aussi le capteur. Le serpentin sur conduit et le serpentin dans le compost sont gratuits mais seulement quand le poêle brûle ou le tas est chaud, et le serpentin de compost préchauffe sans atteindre la température finale. Un chauffe-eau électrique ou thermodynamique est le plus fiable et le seul où chaque unité de chaleur est achetée."
   }
  },
  {
   "id": "FN-06.6",
   "name": "Freeze protection",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "",
   "slug": "freeze-protection",
   "slug_fr": "protection-contre-le-gel",
   "fr": {
    "name": "Protection contre le gel"
   }
  },
  {
   "id": "FN-06.7",
   "name": "Leak detection",
   "function_id": "FN-06",
   "summary": "",
   "efficiency_basis": "",
   "slug": "leak-detection",
   "slug_fr": "detection-des-fuites",
   "fr": {
    "name": "Détection des fuites"
   }
  },
  {
   "id": "FN-07.1",
   "name": "Collection",
   "function_id": "FN-07",
   "summary": "",
   "efficiency_basis": "",
   "slug": "collection",
   "slug_fr": "collecte",
   "fr": {
    "name": "Collecte"
   }
  },
  {
   "id": "FN-07.2",
   "name": "Treatment / filtration",
   "function_id": "FN-07",
   "summary": "",
   "efficiency_basis": "Ranked by effluent quality, how clean the water is at the outlet, and how consistently. Membrane filtration is the ceiling and the only option producing water fit for indoor non-potable reuse; the biological beds reach a good standard given enough area and residence time; a sand filter alone is a pretreatment stage, not full treatment. Drain water heat recovery appears in this sub-function but is not ranked. It recovers heat and does not treat the water at all.",
   "slug": "treatment-filtration",
   "slug_fr": "traitement-et-filtration",
   "fr": {
    "name": "Traitement et filtration",
    "efficiency_basis": "Classement par qualité de l’effluent, à quel point l’eau est propre en sortie, et avec quelle constance. La filtration membranaire constitue le plafond et la seule option produisant une eau adaptée à la réutilisation intérieure non potable ; les bassins biologiques atteignent un bon niveau avec assez de surface et de temps de séjour ; un filtre à sable seul n’est qu’un prétraitement, pas un traitement complet. La récupération de chaleur sur eaux grises apparaît dans cette sous-fonction mais n’est pas classée, elle récupère de la chaleur et ne traite pas du tout l’eau."
   }
  },
  {
   "id": "FN-07.3",
   "name": "Reuse",
   "function_id": "FN-07",
   "summary": "",
   "efficiency_basis": "",
   "slug": "reuse",
   "slug_fr": "reutilisation",
   "fr": {
    "name": "Réutilisation"
   }
  },
  {
   "id": "FN-07.4",
   "name": "Safe discharge",
   "function_id": "FN-07",
   "summary": "",
   "efficiency_basis": "",
   "slug": "safe-discharge",
   "slug_fr": "rejet-maitrise",
   "fr": {
    "name": "Rejet maîtrisé"
   }
  },
  {
   "id": "FN-08.1",
   "name": "Collection",
   "function_id": "FN-08",
   "summary": "",
   "efficiency_basis": "",
   "slug": "collection",
   "slug_fr": "collecte",
   "fr": {
    "name": "Collecte"
   }
  },
  {
   "id": "FN-08.2",
   "name": "Treatment",
   "function_id": "FN-08",
   "summary": "",
   "efficiency_basis": "Ranked by effluent quality. The aerated package plant sustains oxygen-loving bacteria and produces the cleanest effluent from the smallest footprint, at the cost of a continuous power draw. A constructed wetland reaches good quality passively but needs real land area. A septic tank settles and digests anaerobically, leaving the drain field to do the final polishing, which is why its site requirements are the strictest.",
   "slug": "treatment",
   "slug_fr": "traitement",
   "fr": {
    "name": "Traitement",
    "efficiency_basis": "Classement par qualité de l’effluent. La micro-station aérée entretient des bactéries aérobies et produit l’effluent le plus propre avec l’emprise la plus faible, au prix d’une consommation électrique continue. Une zone humide reconstituée atteint une bonne qualité passivement mais nécessite une réelle surface de terrain. Une fosse septique décante et digère par voie anaérobie, laissant à l’épandage le soin de finaliser le traitement, ce qui explique ses exigences de terrain particulièrement strictes."
   }
  },
  {
   "id": "FN-08.3",
   "name": "Pathogen / nutrient containment",
   "function_id": "FN-08",
   "summary": "",
   "efficiency_basis": "",
   "slug": "pathogen-nutrient-containment",
   "slug_fr": "confinement-des-pathogenes-et-des-nutriments",
   "fr": {
    "name": "Confinement des pathogènes et des nutriments"
   }
  },
  {
   "id": "FN-08.4",
   "name": "Solids handling",
   "function_id": "FN-08",
   "summary": "",
   "efficiency_basis": "",
   "slug": "solids-handling",
   "slug_fr": "gestion-des-boues",
   "fr": {
    "name": "Gestion des boues"
   }
  },
  {
   "id": "FN-08.5",
   "name": "Odor control",
   "function_id": "FN-08",
   "summary": "",
   "efficiency_basis": "",
   "slug": "odor-control",
   "slug_fr": "maitrise-des-odeurs",
   "fr": {
    "name": "Maîtrise des odeurs"
   }
  },
  {
   "id": "FN-09.1",
   "name": "Generation",
   "function_id": "FN-09",
   "summary": "",
   "efficiency_basis": "",
   "slug": "generation",
   "slug_fr": "production",
   "fr": {
    "name": "Production"
   }
  },
  {
   "id": "FN-09.2",
   "name": "Storage",
   "function_id": "FN-09",
   "summary": "",
   "efficiency_basis": "Ranked by round-trip efficiency, the share of stored energy you get back, together with usable depth of discharge and cycle life, since a battery you can only half-empty stores half of what it nominally holds. Lithium iron phosphate leads on all three. Compressed air loses a large fraction as heat during compression, which is the physical reason it trails despite having no chemistry to degrade.",
   "slug": "storage",
   "slug_fr": "stockage",
   "fr": {
    "name": "Stockage",
    "efficiency_basis": "Classement par rendement aller-retour, la part de l’énergie stockée effectivement récupérée, ainsi que par profondeur de décharge utile et durée de vie en cycles, puisqu’une batterie qu’on ne peut vider qu’à moitié ne stocke effectivement que la moitié de sa capacité nominale. Le lithium fer phosphate est en tête sur les trois critères. L’air comprimé perd une part importante en chaleur lors de la compression, ce qui explique physiquement pourquoi il est en retrait malgré l’absence de chimie qui se dégrade."
   }
  },
  {
   "id": "FN-09.3",
   "name": "Distribution & circuit safety",
   "function_id": "FN-09",
   "summary": "",
   "efficiency_basis": "",
   "slug": "distribution-circuit-safety",
   "slug_fr": "distribution-et-securite-electrique",
   "fr": {
    "name": "Distribution et sécurité électrique"
   }
  },
  {
   "id": "FN-09.4",
   "name": "Backup / redundant supply",
   "function_id": "FN-09",
   "summary": "",
   "efficiency_basis": "",
   "slug": "backup-redundant-supply",
   "slug_fr": "secours-et-redondance",
   "fr": {
    "name": "Secours et redondance"
   }
  },
  {
   "id": "FN-09.5",
   "name": "Fuel storage (combustion systems)",
   "function_id": "FN-09",
   "summary": "",
   "efficiency_basis": "",
   "slug": "fuel-storage",
   "slug_fr": "stockage-de-combustible",
   "fr": {
    "name": "Stockage de combustible (systèmes à combustion)"
   }
  },
  {
   "id": "FN-10.1",
   "name": "Cold storage",
   "function_id": "FN-10",
   "summary": "",
   "efficiency_basis": "Ranked by how cold the store gets and how dependably. A powered refrigerator holds a set temperature whatever the weather. A root cellar is reliably cool from ground contact but tracks the season rather than a setpoint. A zeer pot achieves a useful drop below ambient only while the surrounding air is dry enough for evaporation, a real limitation in Normandy's oceanic climate.",
   "slug": "cold-storage",
   "slug_fr": "conservation-au-froid",
   "fr": {
    "name": "Conservation au froid",
    "efficiency_basis": "Classement par froid atteint et par fiabilité. Un réfrigérateur alimenté maintient une température fixe quelle que soit la météo. Un cellier enterré est fraîchement fiable grâce au contact avec le sol mais suit la saison plutôt qu’une consigne. Un pot zeer n’obtient une baisse utile sous l’ambiante que tant que l’air environnant est assez sec pour permettre l’évaporation, une vraie limite dans le climat océanique normand."
   }
  },
  {
   "id": "FN-10.2",
   "name": "Dry storage",
   "function_id": "FN-10",
   "summary": "",
   "efficiency_basis": "",
   "slug": "dry-storage",
   "slug_fr": "conservation-au-sec",
   "fr": {
    "name": "Conservation au sec"
   }
  },
  {
   "id": "FN-10.3",
   "name": "Preparation space",
   "function_id": "FN-10",
   "summary": "",
   "efficiency_basis": "",
   "slug": "preparation-space",
   "slug_fr": "espace-de-preparation",
   "fr": {
    "name": "Espace de préparation"
   }
  },
  {
   "id": "FN-10.4",
   "name": "Cooking energy supply",
   "function_id": "FN-10",
   "summary": "",
   "efficiency_basis": "Ranked by fuel/energy-to-food efficiency. Induction is highest; rocket and gasifier stoves are high; an open wood fire is lower; a solar cooker is free but weather-limited.",
   "slug": "cooking-energy-supply",
   "slug_fr": "energie-de-cuisson",
   "fr": {
    "name": "Énergie de cuisson",
    "efficiency_basis": "Classement par efficacité combustible/énergie vers aliment. L’induction est la plus efficace ; les fourneaux rocket et gazéificateurs sont élevés ; un feu de bois ouvert est plus faible ; un cuiseur solaire est gratuit mais dépendant de la météo."
   }
  },
  {
   "id": "FN-11.1",
   "name": "Bathing / washing",
   "function_id": "FN-11",
   "summary": "",
   "efficiency_basis": "Ranked by combined water and energy use per wash. Closed-loop recirculation is highest; low-flow / mist next; a conventional pressurised shower lowest.",
   "slug": "bathing-washing",
   "slug_fr": "douche-et-toilette",
   "fr": {
    "name": "Douche et toilette",
    "efficiency_basis": "Classement par consommation combinée d’eau et d’énergie par douche. La recirculation en circuit fermé est la plus performante ; le débit réduit ou la brumisation ensuite ; une douche conventionnelle sous pression la moins performante."
   }
  },
  {
   "id": "FN-11.2",
   "name": "Laundry",
   "function_id": "FN-11",
   "summary": "",
   "efficiency_basis": "",
   "slug": "laundry",
   "slug_fr": "lessive",
   "fr": {
    "name": "Lessive"
   }
  },
  {
   "id": "FN-11.3",
   "name": "Handwashing",
   "function_id": "FN-11",
   "summary": "",
   "efficiency_basis": "",
   "slug": "handwashing",
   "slug_fr": "lavage-des-mains",
   "fr": {
    "name": "Lavage des mains"
   }
  },
  {
   "id": "FN-12.1",
   "name": "Private space (bias smaller)",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "private-space",
   "slug_fr": "espace-prive",
   "fr": {
    "name": "Espace privé (biais vers plus petit)"
   }
  },
  {
   "id": "FN-12.2",
   "name": "Shared / communal space (bias larger, efficient)",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "shared-communal-space",
   "slug_fr": "espace-partage",
   "fr": {
    "name": "Espace partagé (biais vers plus grand et mutualisé)"
   }
  },
  {
   "id": "FN-12.3",
   "name": "Guest / flexible occupancy",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "guest-flexible-occupancy",
   "slug_fr": "accueil-et-occupation-flexible",
   "fr": {
    "name": "Accueil et occupation flexible"
   }
  },
  {
   "id": "FN-12.4",
   "name": "General storage",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "general-storage",
   "slug_fr": "rangement-general",
   "fr": {
    "name": "Rangement général"
   }
  },
  {
   "id": "FN-12.5",
   "name": "Circulation",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "circulation",
   "slug_fr": "circulation",
   "fr": {
    "name": "Circulation"
   }
  },
  {
   "id": "FN-12.6",
   "name": "Tool storage / DIY maintenance & repair space",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "tool-storage-diy-maintenance-repair-space",
   "slug_fr": "rangement-d-outils-et-espace-de-reparation",
   "fr": {
    "name": "Rangement d’outils et espace de réparation"
   }
  },
  {
   "id": "FN-12.7",
   "name": "Outdoor / semi-outdoor living space (covered porch, terrace)",
   "function_id": "FN-12",
   "summary": "",
   "efficiency_basis": "",
   "slug": "outdoor-semi-outdoor-living-space",
   "slug_fr": "espace-de-vie-exterieur-et-semi-exterieur",
   "fr": {
    "name": "Espace de vie extérieur et semi-extérieur (préau, terrasse)"
   }
  },
  {
   "id": "FN-13.1",
   "name": "Bulk water / rain penetration control (envelope watertightness)",
   "function_id": "FN-13",
   "summary": "",
   "efficiency_basis": "",
   "slug": "bulk-water-rain-penetration-control",
   "slug_fr": "protection-contre-la-pluie-et-les-infiltrations",
   "fr": {
    "name": "Protection contre la pluie et les infiltrations (étanchéité de l’enveloppe)"
   }
  },
  {
   "id": "FN-13.2",
   "name": "Accessible, inspectable systems",
   "function_id": "FN-13",
   "summary": "",
   "efficiency_basis": "",
   "slug": "accessible-inspectable-systems",
   "slug_fr": "reseaux-accessibles-et-inspectables",
   "fr": {
    "name": "Réseaux accessibles et inspectables"
   }
  },
  {
   "id": "FN-13.3",
   "name": "UV / rot resistance of materials",
   "function_id": "FN-13",
   "summary": "",
   "efficiency_basis": "",
   "slug": "uv-rot-resistance-of-materials",
   "slug_fr": "resistance-des-materiaux-aux-uv-et-a-la-pourriture",
   "fr": {
    "name": "Résistance des matériaux aux UV et à la pourriture"
   }
  },
  {
   "id": "FN-13.4",
   "name": "Pest / vermin exclusion",
   "function_id": "FN-13",
   "summary": "",
   "efficiency_basis": "",
   "slug": "pest-vermin-exclusion",
   "slug_fr": "protection-contre-les-nuisibles",
   "fr": {
    "name": "Protection contre les nuisibles"
   }
  },
  {
   "id": "FN-13.5",
   "name": "Disassembly / end-of-life potential",
   "function_id": "FN-13",
   "summary": "",
   "efficiency_basis": "",
   "slug": "disassembly-end-of-life-potential",
   "slug_fr": "demontabilite-et-fin-de-vie",
   "fr": {
    "name": "Démontabilité et fin de vie"
   }
  },
  {
   "id": "FN-13.6",
   "name": "Adaptability / extensibility for phased upgrades",
   "function_id": "FN-13",
   "summary": "",
   "efficiency_basis": "",
   "slug": "adaptability-extensibility-for-phased-upgrades",
   "slug_fr": "adaptabilite-et-extension-par-etapes",
   "fr": {
    "name": "Adaptabilité et extension par étapes"
   }
  },
  {
   "id": "FN-14.1",
   "name": "Sorting / separation",
   "function_id": "FN-14",
   "summary": "",
   "efficiency_basis": "",
   "slug": "sorting-separation",
   "slug_fr": "tri-et-separation",
   "fr": {
    "name": "Tri et séparation"
   }
  },
  {
   "id": "FN-14.2",
   "name": "Organic waste processing",
   "function_id": "FN-14",
   "summary": "",
   "efficiency_basis": "",
   "slug": "organic-waste-processing",
   "slug_fr": "traitement-des-dechets-organiques",
   "fr": {
    "name": "Traitement des déchets organiques"
   }
  },
  {
   "id": "FN-14.3",
   "name": "Recyclables handling",
   "function_id": "FN-14",
   "summary": "",
   "efficiency_basis": "",
   "slug": "recyclables-handling",
   "slug_fr": "gestion-des-recyclables",
   "fr": {
    "name": "Gestion des recyclables"
   }
  },
  {
   "id": "FN-14.4",
   "name": "Waste minimization at source",
   "function_id": "FN-14",
   "summary": "",
   "efficiency_basis": "",
   "slug": "waste-minimization-at-source",
   "slug_fr": "reduction-des-dechets-a-la-source",
   "fr": {
    "name": "Réduction des déchets à la source"
   }
  },
  {
   "id": "FN-15.1",
   "name": "Everyday connectivity",
   "function_id": "FN-15",
   "summary": "",
   "efficiency_basis": "",
   "slug": "everyday-connectivity",
   "slug_fr": "connectivite-du-quotidien",
   "fr": {
    "name": "Connectivité du quotidien"
   }
  },
  {
   "id": "FN-15.2",
   "name": "Emergency communication (grid/network-outage resilient)",
   "function_id": "FN-15",
   "summary": "",
   "efficiency_basis": "",
   "slug": "emergency-communication",
   "slug_fr": "communication-d-urgence",
   "fr": {
    "name": "Communication d’urgence (résiliente aux coupures de réseau)"
   }
  },
  {
   "id": "FN-10.5",
   "name": "Preservation processing (drying, fermenting, salting/curing)",
   "function_id": "FN-10",
   "summary": "Distinct from storage: transforms perishable food into a shelf-stable form.",
   "efficiency_basis": "",
   "slug": "preservation-processing",
   "slug_fr": "transformation-de-conservation",
   "fr": {
    "name": "Transformation de conservation (séchage, fermentation, salaison)",
    "description": "À distinguer du stockage : rend l’aliment stable à température ambiante."
   }
  }
 ],
 "io_types": [
  {
   "id": "IO-01",
   "name": "Solar Radiation",
   "summary": "Incoming solar energy (heat and/or light)",
   "category": "Energy",
   "slug": "solar-radiation",
   "slug_fr": "rayonnement-solaire",
   "fr": {
    "name": "Rayonnement solaire",
    "description": "Énergie solaire incidente (chaleur et/ou lumière)"
   }
  },
  {
   "id": "IO-02",
   "name": "Heat",
   "summary": "Thermal energy, any source",
   "category": "Energy",
   "slug": "heat",
   "slug_fr": "chaleur",
   "fr": {
    "name": "Chaleur",
    "description": "Énergie thermique, toute source confondue"
   }
  },
  {
   "id": "IO-03",
   "name": "AC Electricity",
   "summary": "Mains-compatible alternating current, ~230V. Requires an inverter to produce from a DC source.",
   "category": "Energy",
   "slug": "ac-electricity",
   "slug_fr": "electricite-alternatif",
   "fr": {
    "name": "Électricité alternatif (CA)",
    "description": "Courant alternatif compatible réseau, ~230V. Nécessite un onduleur pour être produit à partir d’une source continue."
   }
  },
  {
   "id": "IO-04",
   "name": "Biomass Fuel",
   "summary": "Wood, pellets, or other combustible fuel",
   "category": "Energy",
   "slug": "biomass-fuel",
   "slug_fr": "combustible-biomasse",
   "fr": {
    "name": "Combustible biomasse",
    "description": "Bois, granulés ou autre combustible solide"
   }
  },
  {
   "id": "IO-05",
   "name": "Fresh Air",
   "summary": "Outdoor air suitable for ventilation",
   "category": "Air",
   "slug": "fresh-air",
   "slug_fr": "air-neuf",
   "fr": {
    "name": "Air neuf",
    "description": "Air extérieur adapté à la ventilation"
   }
  },
  {
   "id": "IO-06",
   "name": "Stale/Humid Air",
   "summary": "Indoor air requiring exhaust or treatment",
   "category": "Air",
   "slug": "stale-humid-air",
   "slug_fr": "air-vicie-humide",
   "fr": {
    "name": "Air vicié / humide",
    "description": "Air intérieur à évacuer ou à traiter"
   }
  },
  {
   "id": "IO-07",
   "name": "CO2",
   "summary": "Carbon dioxide (occupant or process byproduct)",
   "category": "Air",
   "slug": "co2",
   "slug_fr": "co2",
   "fr": {
    "name": "CO2",
    "description": "Dioxyde de carbone (sous-produit des occupants ou d’un procédé)"
   }
  },
  {
   "id": "IO-08",
   "name": "Rainwater",
   "summary": "Untreated precipitation runoff",
   "category": "Water",
   "slug": "rainwater",
   "slug_fr": "eau-de-pluie",
   "fr": {
    "name": "Eau de pluie",
    "description": "Ruissellement de précipitations non traité"
   }
  },
  {
   "id": "IO-09",
   "name": "Potable Water",
   "summary": "Treated, drinkable water",
   "category": "Water",
   "slug": "potable-water",
   "slug_fr": "eau-potable",
   "fr": {
    "name": "Eau potable",
    "description": "Eau traitée, potable"
   }
  },
  {
   "id": "IO-10",
   "name": "Greywater",
   "summary": "Wastewater from sinks, showers, laundry",
   "category": "Water",
   "slug": "greywater",
   "slug_fr": "eaux-grises",
   "fr": {
    "name": "Eaux grises",
    "description": "Eaux usées des éviers, douches, lave-linge"
   }
  },
  {
   "id": "IO-11",
   "name": "Blackwater",
   "summary": "Sewage/toilet waste",
   "category": "Water",
   "slug": "blackwater",
   "slug_fr": "eaux-noires",
   "fr": {
    "name": "Eaux noires",
    "description": "Eaux usées des toilettes"
   }
  },
  {
   "id": "IO-12",
   "name": "Compost",
   "summary": "Decomposed organic matter",
   "category": "Material",
   "slug": "compost",
   "slug_fr": "compost",
   "fr": {
    "name": "Compost",
    "description": "Matière organique décomposée"
   }
  },
  {
   "id": "IO-13",
   "name": "Organic Waste",
   "summary": "Food scraps and biodegradable waste, pre-processing",
   "category": "Material",
   "slug": "organic-waste",
   "slug_fr": "dechets-organiques",
   "fr": {
    "name": "Déchets organiques",
    "description": "Déchets alimentaires et biodégradables, avant traitement"
   }
  },
  {
   "id": "IO-14",
   "name": "Recyclables",
   "summary": "Sorted recoverable materials",
   "category": "Material",
   "slug": "recyclables",
   "slug_fr": "recyclables",
   "fr": {
    "name": "Recyclables",
    "description": "Matériaux récupérables triés"
   }
  },
  {
   "id": "IO-15",
   "name": "Nutrients",
   "summary": "Plant-available nutrients (e.g. from compost/blackwater treatment)",
   "category": "Material",
   "slug": "nutrients",
   "slug_fr": "nutriments",
   "fr": {
    "name": "Nutriments",
    "description": "Nutriments assimilables par les plantes (issus par exemple du compost ou du traitement des eaux noires)"
   }
  },
  {
   "id": "IO-16",
   "name": "Unheated Water",
   "summary": "Water at ambient/source temperature, prior to heating",
   "category": "Water",
   "slug": "unheated-water",
   "slug_fr": "eau-froide",
   "fr": {
    "name": "Eau froide",
    "description": "Eau à température ambiante ou de source, avant chauffage"
   }
  },
  {
   "id": "IO-17",
   "name": "Heated Water",
   "summary": "Water after heating, ready for domestic use",
   "category": "Water",
   "slug": "heated-water",
   "slug_fr": "eau-chaude",
   "fr": {
    "name": "Eau chaude",
    "description": "Eau après chauffage, prête à l’usage domestique"
   }
  },
  {
   "id": "IO-18",
   "name": "DC Electricity",
   "summary": "Low-voltage direct current (typically 12V/24V/48V), native to solar panels and batteries. Feeds DC-native appliances directly, avoiding inversion losses and the inverter as a failure point.",
   "category": "Energy",
   "slug": "dc-electricity",
   "slug_fr": "electricite-continu",
   "fr": {
    "name": "Électricité continu (CC)",
    "description": "Courant continu basse tension (généralement 12V/24V/48V), natif des panneaux solaires et des batteries. Alimente directement les appareils compatibles CC, évitant les pertes de conversion et l’onduleur comme point de défaillance."
   }
  },
  {
   "id": "IO-19",
   "name": "Wind",
   "summary": "Kinetic wind energy, input for wind turbines and passive/stack-effect ventilation",
   "category": "Energy",
   "slug": "wind",
   "slug_fr": "vent",
   "fr": {
    "name": "Vent",
    "description": "Énergie cinétique du vent, entrée des éoliennes et de la ventilation passive par effet de cheminée"
   }
  },
  {
   "id": "IO-20",
   "name": "Flowing Water (Hydro Potential)",
   "summary": "Kinetic energy of moving water, input for micro-hydro turbines",
   "category": "Energy",
   "slug": "flowing-water",
   "slug_fr": "eau-courante",
   "fr": {
    "name": "Eau courante (potentiel hydraulique)",
    "description": "Énergie cinétique de l’eau en mouvement, entrée des micro-turbines hydrauliques"
   }
  },
  {
   "id": "IO-21",
   "name": "Mechanical Energy",
   "summary": "Human- or animal-powered kinetic energy (pedal, hand-crank)",
   "category": "Energy",
   "slug": "mechanical-energy",
   "slug_fr": "energie-mecanique",
   "fr": {
    "name": "Énergie mécanique",
    "description": "Énergie cinétique d’origine humaine ou animale (pédalage, manivelle)"
   }
  },
  {
   "id": "IO-22",
   "name": "Soil Gas",
   "summary": "Radon or other gases migrating from soil into a building",
   "category": "Air",
   "slug": "soil-gas",
   "slug_fr": "gaz-du-sol",
   "fr": {
    "name": "Gaz du sol",
    "description": "Radon ou autres gaz migrant du sol vers le bâtiment"
   }
  },
  {
   "id": "IO-23",
   "name": "Daylight",
   "summary": "Usable natural interior illumination, distinct from Solar Radiation as an energy/heat input",
   "category": "Light",
   "slug": "daylight",
   "slug_fr": "lumiere-du-jour",
   "fr": {
    "name": "Lumière du jour",
    "description": "Éclairage naturel intérieur utilisable, distinct du Rayonnement solaire en tant qu’apport énergétique/thermique"
   }
  },
  {
   "id": "IO-24",
   "name": "Cooling",
   "summary": "Removal of heat / reduction of temperature, the inverse of Heat",
   "category": "Energy",
   "slug": "cooling",
   "slug_fr": "rafraichissement",
   "fr": {
    "name": "Rafraîchissement",
    "description": "Évacuation de chaleur / baisse de température, l’inverse de la Chaleur"
   }
  },
  {
   "id": "IO-25",
   "name": "Connectivity Signal",
   "summary": "Internet, phone, or radio signal",
   "category": "Information",
   "slug": "connectivity-signal",
   "slug_fr": "signal-de-connexion",
   "fr": {
    "name": "Signal de connexion",
    "description": "Signal internet, téléphonique ou radio"
   }
  },
  {
   "id": "IO-26",
   "name": "Treated Effluent",
   "summary": "Water discharged after blackwater treatment (septic, wetland), distinct from raw Blackwater and from Greywater",
   "category": "Water",
   "slug": "treated-effluent",
   "slug_fr": "effluent-traite",
   "fr": {
    "name": "Effluent traité",
    "description": "Eau rejetée après traitement des eaux noires (fosse, zone humide), distincte des Eaux noires brutes et des Eaux grises"
   }
  },
  {
   "id": "IO-27",
   "name": "Sludge",
   "summary": "Solid biosolid byproduct of blackwater/septic treatment, requiring periodic removal",
   "category": "Material",
   "slug": "sludge",
   "slug_fr": "boues",
   "fr": {
    "name": "Boues",
    "description": "Sous-produit solide issu du traitement des eaux noires ou de la fosse septique, nécessitant une évacuation périodique"
   }
  },
  {
   "id": "IO-28",
   "name": "Biochar",
   "summary": "Stable, long-lived carbon material from pyrolysis of woody waste; usable as a soil amendment once food production is in scope",
   "category": "Material",
   "slug": "biochar",
   "slug_fr": "biochar",
   "fr": {
    "name": "Biochar",
    "description": "Matière carbonée stable et durable issue de la pyrolyse de déchets ligneux ; utilisable comme amendement du sol une fois la production alimentaire en périmètre"
   }
  },
  {
   "id": "IO-29",
   "name": "Liquid/Bottled Fuel (propane, heating oil)",
   "summary": "Delivered fossil fuel (propane, heating oil) for combustion appliances, distinct from Biomass Fuel (self-sourced wood/pellets) because it depends on an external tanker-delivery supply chain rather than local/on-site sourcing.",
   "category": "Energy",
   "slug": "liquid-bottled-fuel",
   "slug_fr": "combustible-liquide-ou-bouteille",
   "fr": {
    "name": "Combustible liquide ou bouteille (propane, fioul)",
    "description": "Combustible fossile livré (propane, fioul) pour appareils à combustion, distinct du Combustible biomasse (bois/granulés autoproduits) car il dépend d’une chaîne d’approvisionnement externe par livraison plutôt que d’une source locale."
   }
  },
  {
   "id": "IO-30",
   "name": "Biogas (Methane)",
   "summary": "Combustible methane-rich gas from anaerobic digestion of organic waste, distinct from Biomass Fuel (solid, self-fed combustion) and Liquid/Bottled Fuel (delivered, pressurized) because it is produced on-site as a continuous low-pressure biological process and typically piped directly to a burner rather than stored under pressure.",
   "category": "Energy",
   "slug": "biogas",
   "slug_fr": "biogaz",
   "fr": {
    "name": "Biogaz (méthane)",
    "description": "Gaz combustible riche en méthane issu de la digestion anaérobie de déchets organiques, distinct du Combustible biomasse (combustion solide autoalimentée) et du Combustible liquide/bouteille (livré, sous pression) car il est produit sur place en continu à basse pression et généralement acheminé directement vers un brûleur plutôt que stocké sous pression."
   }
  },
  {
   "id": "IO-31",
   "name": "Preserved Food",
   "summary": "Food rendered shelf-stable by drying, fermentation, or salt-curing, distinct from fresh food (not otherwise tracked as an IO-Type in this catalog) and from Organic Waste (IO-13), which is the pre-processing/discard stream.",
   "category": "Material",
   "slug": "preserved-food",
   "slug_fr": "aliments-conserves",
   "fr": {
    "name": "Aliments conservés",
    "description": "Aliment rendu stable à température ambiante par séchage, fermentation ou salaison, distinct de l’aliment frais (non suivi comme type d’E/S dans ce catalogue) et des Déchets organiques (IO-13), qui constituent le flux de rebut en amont."
   }
  },
  {
   "id": "IO-32",
   "name": "Fresh/Perishable Food",
   "summary": "Unprocessed, perishable food, garden produce, purchased groceries, before either storage (which keeps it fresh longer without changing its state) or preservation (which transforms it into a shelf-stable form, IO-31). Distinct from Preserved Food and from Organic Waste (IO-13), which is the discard/pre-processing waste stream, not the edible item itself.",
   "category": "Material",
   "slug": "fresh-perishable-food",
   "slug_fr": "aliments-frais-perissables",
   "fr": {
    "name": "Aliments frais / périssables",
    "description": "Aliment brut et périssable, production du jardin, achats, avant stockage (qui prolonge sa fraîcheur sans en changer l’état) ou transformation de conservation (qui le rend stable à température ambiante, IO-31). Distinct des Aliments conservés et des Déchets organiques (IO-13), qui constituent le flux de déchets, non l’aliment consommable lui-même."
   }
  },
  {
   "id": "IO-33",
   "name": "Atmospheric Moisture (Fog)",
   "summary": "Atmospheric Moisture (Fog)",
   "category": "",
   "slug": "atmospheric-moisture",
   "slug_fr": "humidite-atmospherique",
   "fr": {
    "name": "Humidité atmosphérique (brouillard)"
   }
  },
  {
   "id": "IO-34",
   "name": "Mains Gas (natural gas)",
   "summary": "Fossil natural gas delivered by the public distribution network, burned directly for cooking or heating. Distinct from bottled/liquid fuel (delivered and stored on site) and from biogas (produced on site from organic waste).",
   "category": "Energy",
   "slug": "mains-gas",
   "slug_fr": "gaz-de-reseau",
   "fr": {
    "name": "Gaz de réseau (gaz naturel)",
    "description": "Gaz naturel fossile livré par le réseau public de distribution, brûlé directement pour la cuisson ou le chauffage. Distinct du combustible liquide/bouteille (livré et stocké sur place) et du biogaz (produit sur place à partir de déchets organiques)."
   }
  }
 ],
 "natural_resources": [
  {
   "io": "IO-01",
   "name": "Solar Radiation",
   "label": "Solar Radiation"
  },
  {
   "io": "IO-04",
   "name": "Biomass Fuel",
   "label": "Biomass Fuel"
  },
  {
   "io": "IO-05",
   "name": "Fresh Air",
   "label": "Fresh Air"
  },
  {
   "io": "IO-08",
   "name": "Rainwater",
   "label": "Rainwater"
  },
  {
   "io": "IO-19",
   "name": "Wind",
   "label": "Wind"
  },
  {
   "io": "IO-20",
   "name": "Flowing Water (Hydro Potential)",
   "label": "Flowing Water (Hydro Potential)"
  },
  {
   "io": "IO-21",
   "name": "Mechanical Energy",
   "label": "Human / animal work"
  },
  {
   "io": "IO-22",
   "name": "Soil Gas",
   "label": "Soil Gas"
  },
  {
   "io": "IO-23",
   "name": "Daylight",
   "label": "Daylight"
  },
  {
   "io": "IO-33",
   "name": "Atmospheric Moisture (Fog)",
   "label": "Atmospheric Moisture (Fog)"
  }
 ],
 "solutions": [
  {
   "id": "SOL-001",
   "name": "Light timber frame construction",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Standard stick-framed structure; wide material choice, easy to modify/extend later.",
   "slug": "light-timber-frame-construction",
   "slug_fr": "ossature-bois-legere",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "stud framing, standard carpentry",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "50-100+ years if kept dry (envelope/cladding/services wear out first)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Timber-frame/post-and-beam structural lifespan industry sources (Western Timber Frame; World Construction Today)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Ossature bois légère",
    "description": "Structure à ossature bois classique ; large choix de matériaux, facile à modifier ou agrandir par la suite.",
    "lifespan": "50 à 100 ans ou plus si maintenue au sec (l’enveloppe, le bardage et les réseaux s’usent avant)",
    "build_note": "ossature bois, charpente standard",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-002",
   "name": "Post-and-beam heavy timber frame",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Larger structural members, fewer connections, long service life; often paired with non-structural infill walls.",
   "slug": "post-and-beam-heavy-timber-frame",
   "slug_fr": "ossature-bois-lourde",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "heavy timber joinery",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "50-100+ years, often longer than light frame, fewer, larger connections",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Timber-frame/post-and-beam structural lifespan industry sources (Western Timber Frame; World Construction Today)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Ossature bois lourde (poteaux-poutres)",
    "description": "Éléments porteurs plus massifs, moins d’assemblages, longue durée de vie ; souvent associée à des remplissages non porteurs.",
    "lifespan": "50 à 100 ans ou plus, souvent plus longtemps qu’une ossature légère, moins d’assemblages, plus massifs",
    "build_note": "assemblage en bois massif",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-003",
   "name": "Deep pile / screwed-pile foundation",
   "subfunction_id": "FN-01.2",
   "function_id": "FN-01",
   "summary": "Transfers load below the clay-active zone (min. 0.8-1.2m per exposure); individually adjustable/relevelable.",
   "slug": "deep-pile-screwed-pile-foundation",
   "slug_fr": "fondations-sur-pieux-ou-pieux-visses",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "driven/screwed piles, rig needed",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "50+ years (steel/concrete piles); relevelable rather than replaced on failure",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "Clay-active or unstable soil where a slab/strip footing would need to resist rather than sidestep movement",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Foundation engineering industry consensus (screwed/deep-pile foundation manufacturer and geotechnical guidance)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Fondations sur pieux ou pieux vissés",
    "description": "Transmet la charge sous la zone active argileuse (0,8 à 1,2 m minimum selon l’exposition) ; réglable et renivelable individuellement.",
    "lifespan": "50 ans ou plus (pieux acier/béton) ; réajustable plutôt que remplacé en cas de défaillance",
    "site_prerequisites": "Sol argileux actif ou instable où une semelle filante ou un radier devrait résister au mouvement plutôt que le contourner",
    "build_note": "pieux battus ou vissés, engin nécessaire",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-004",
   "name": "Skid or point-support foundation",
   "subfunction_id": "FN-01.2",
   "function_id": "FN-01",
   "summary": "Structure not rigidly fixed to the ground; sidesteps soil-movement transfer rather than resisting it.",
   "slug": "skid-or-point-support-foundation",
   "slug_fr": "fondations-sur-plots-ou-patins",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "beams on pads, no excavation",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "25-40 years typical for timber skids/posts near grade; longer if steel or concrete point supports used",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "Site tolerant of a raised, non-slab floor",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General light-structure foundation practice (project engineering judgment, not independently sourced)",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Fondations sur plots ou patins",
    "description": "Structure non fixée rigidement au sol ; contourne les mouvements du terrain plutôt que d’y résister.",
    "lifespan": "25 à 40 ans typiquement pour des patins/poteaux bois près du sol ; davantage avec des supports ponctuels acier ou béton",
    "site_prerequisites": "Terrain tolérant un plancher surélevé, sans dalle",
    "build_note": "poutres sur plots, sans excavation",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-005",
   "name": "Earth-sheltered / semi-buried form",
   "subfunction_id": "FN-01.3",
   "function_id": "FN-01",
   "summary": "Also listed under ground-source temperature moderation, the same solution serves both wind/storm resistance and thermal stability. Easier on sloped sites.",
   "slug": "earth-sheltered-form-storm",
   "slug_fr": "forme-semi-enterree-tempete",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 3,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "excavation + retaining/waterproofing",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "high",
   "lifespan": "Matches structure lifespan (earth-sheltering is a form choice, not a separately wearing component); waterproofing membrane itself typically needs renewal every 20-30 years",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "Sloped site strongly preferred (cost-prohibitive to excavate a basin on flat ground); good drainage or a design that assumes eventual damp",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Forme semi-enterrée / abritée par le terrain",
    "description": "Également listée en régulation par le sol, la même solution sert à la fois la résistance au vent et la stabilité thermique. Plus simple sur un terrain en pente.",
    "lifespan": "Correspond à la durée de vie de la structure (l’habitat semi-enterré est un choix de forme, pas un composant qui s’use séparément) ; la membrane d’étanchéité elle-même nécessite généralement un renouvellement tous les 20-30 ans",
    "site_prerequisites": "Terrain en pente fortement préférable (excaver un bassin sur terrain plat est coûteux) ; bon drainage ou conception qui suppose une humidité durable",
    "build_note": "excavation + soutènement/étanchéité",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-006",
   "name": "Reinforced roof-to-wall strapping (hurricane ties)",
   "subfunction_id": "FN-01.3",
   "function_id": "FN-01",
   "summary": "Mechanical connectors resisting wind uplift at the roof-wall junction.",
   "slug": "reinforced-roof-to-wall-strapping",
   "slug_fr": "fixations-renforcees-toiture-mur",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "bolt-on metal connectors",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Galvanized steel connectors: 50+ years if kept dry; stainless in coastal/humid exposure lasts longer than mild steel",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Structural hardware manufacturer durability data (general galvanized-steel-fastener industry consensus)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Fixations renforcées toiture-mur (équerres anticyclone)",
    "description": "Connecteurs mécaniques résistant au soulèvement au vent à la jonction toiture-mur.",
    "lifespan": "Connecteurs en acier galvanisé : 50 ans ou plus au sec ; l’inox dure plus longtemps que l’acier doux en exposition côtière ou humide",
    "build_note": "connecteurs métalliques boulonnés"
   }
  },
  {
   "id": "SOL-007",
   "name": "Fire-rated compartmentalization",
   "subfunction_id": "FN-01.4",
   "function_id": "FN-01",
   "summary": "Fire-rated internal walls/doors slowing spread and preserving an escape route.",
   "slug": "fire-rated-compartmentalization",
   "slug_fr": "compartimentage-coupe-feu",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "rated walls/doors, standard trades",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches wall/door assembly lifespan (fire rating is a material/assembly property, not a wearing part); fire-rated door seals/intumescent strips typically need inspection every 1-5 years",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Compartimentage coupe-feu",
    "description": "Murs et portes coupe-feu intérieurs ralentissant la propagation et préservant une voie d’évacuation.",
    "lifespan": "Correspond à la durée de vie de l’assemblage mur/porte (le classement coupe-feu est une propriété du matériau/assemblage, pas une pièce d’usure) ; les joints coupe-feu ou bandes intumescentes nécessitent généralement une inspection tous les 1 à 5 ans",
    "build_note": "murs/portes classés, corps de métier standards"
   }
  },
  {
   "id": "SOL-008",
   "name": "Elevated finished floor level",
   "subfunction_id": "FN-01.5",
   "function_id": "FN-01",
   "summary": "Floor set above expected flood/water-table levels.",
   "slug": "elevated-finished-floor-level",
   "slug_fr": "plancher-fini-sureleve",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Matches structure lifespan (a design choice, not a wearing component)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "Site with a known or projected flood/high-water-table risk",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Plancher fini surélevé",
    "description": "Plancher fixé au-dessus des niveaux de crue ou de nappe attendus.",
    "lifespan": "Correspond à la durée de vie de la structure (un choix de conception, pas un composant qui s’use)",
    "site_prerequisites": "Terrain à risque connu ou prévisible de crue ou de nappe haute",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-009",
   "name": "Impact-resistant roofing",
   "subfunction_id": "FN-01.6",
   "function_id": "FN-01",
   "summary": "Metal or fibre-cement roofing rated for hail impact.",
   "slug": "impact-resistant-roofing",
   "slug_fr": "toiture-resistante-aux-impacts",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Metal roofing: 40-70 years; fibre-cement: 30-50 years",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Roofing material industry durability consensus (general metal/fibre-cement roofing lifespan data)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Toiture résistante aux impacts",
    "description": "Toiture métallique ou en fibre-ciment classée résistante à la grêle.",
    "lifespan": "Toiture métallique : 40 à 70 ans ; fibre-ciment : 30 à 50 ans"
   }
  },
  {
   "id": "SOL-010",
   "name": "Passive-surveillance site layout",
   "subfunction_id": "FN-01.8",
   "function_id": "FN-01",
   "summary": "Sightlines and entrance placement that make the property naturally overlooked rather than hidden.",
   "slug": "passive-surveillance-site-layout",
   "slug_fr": "amenagement-surveillance-naturelle",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "site planning, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches site layout lifespan (a design/layout choice, not a wearing component)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Aménagement du site favorisant la surveillance naturelle",
    "description": "Lignes de vue et emplacement des accès qui rendent la propriété naturellement visible plutôt que dissimulée.",
    "lifespan": "Correspond à la durée de vie de l’aménagement du site (un choix de conception/disposition, pas un composant qui s’use)",
    "build_note": "aménagement du site, aucune construction"
   }
  },
  {
   "id": "SOL-011",
   "name": "Mechanical locking hardware + shutters",
   "subfunction_id": "FN-01.8",
   "function_id": "FN-01",
   "summary": "Physical security at doors/windows; shutters double as storm and thermal protection, and double again as summer shading.",
   "slug": "mechanical-locking-hardware-shutters",
   "slug_fr": "serrurerie-et-volets-mecaniques",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "fit locks and shutters",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Locking hardware: 20-30 years with occasional lubrication/adjustment; shutters follow the insulated operable shutters figure if that variant, otherwise 30-50 years for solid timber/metal shutters",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General door/window hardware industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Serrurerie et volets mécaniques",
    "description": "Sécurité physique aux portes et fenêtres ; les volets protègent aussi contre les intempéries et le froid, et servent également d’ombrage en été.",
    "lifespan": "Serrurerie : 20 à 30 ans avec lubrification/réglage occasionnel ; les volets suivent le chiffre des volets isolants manœuvrables selon la variante, sinon 30-50 ans pour des volets bois ou métal massifs",
    "build_note": "pose de serrures et volets"
   }
  },
  {
   "id": "SOL-012",
   "name": "Swales / site grading",
   "subfunction_id": "FN-01.9",
   "function_id": "FN-01",
   "summary": "Shapes the land to direct rainwater away from the foundation.",
   "slug": "swales-site-grading",
   "slug_fr": "noues-et-modele-du-terrain",
   "inputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "outputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "earthmoving, shape the land",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Effectively indefinite as landform (grading doesn't wear out); revegetation/erosion control may need renewal every 5-10 years",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Site with enough grade/area to shape without disturbing neighbouring drainage",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Noues et modelé du terrain",
    "description": "Façonne le terrain pour éloigner les eaux de pluie des fondations.",
    "lifespan": "Pratiquement indéfini en tant que modelé du terrain (le terrassement ne s’use pas) ; la revégétalisation ou le contrôle de l’érosion peut nécessiter un renouvellement tous les 5-10 ans",
    "site_prerequisites": "Terrain avec assez de pente ou de surface pour être façonné sans perturber le drainage voisin",
    "build_note": "terrassement, façonnage du terrain"
   }
  },
  {
   "id": "SOL-013",
   "name": "French drain around foundation",
   "subfunction_id": "FN-01.9",
   "function_id": "FN-01",
   "summary": "Perforated buried pipe collecting and redirecting water from the foundation perimeter.",
   "slug": "french-drain-around-foundation",
   "slug_fr": "drain-francais-autour-des-fondations",
   "inputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "outputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "trench + perforated pipe + gravel",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-40 years before the perforated pipe silts up and needs replacement/flushing",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Foundation drainage industry consensus (general French-drain lifespan data)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Drain français autour des fondations",
    "description": "Tuyau perforé enterré qui collecte et redirige l’eau autour des fondations.",
    "lifespan": "20 à 40 ans avant que le tuyau perforé ne s’envase et nécessite un remplacement ou un curage",
    "build_note": "tranchée + tuyau perforé + gravier"
   }
  },
  {
   "id": "SOL-014",
   "name": "Compact rectangular footprint",
   "subfunction_id": "FN-02.1",
   "function_id": "FN-02",
   "summary": "Minimises surface-to-volume ratio, reducing heat-loss area for a given floor area.",
   "slug": "compact-rectangular-footprint",
   "slug_fr": "emprise-au-sol-compacte-et-rectangulaire",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Matches structure lifespan (a form/massing choice, not a wearing component)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Emprise au sol compacte et rectangulaire",
    "description": "Minimise le rapport surface/volume, réduisant la surface de déperdition pour une surface habitable donnée.",
    "lifespan": "Correspond à la durée de vie de la structure (un choix de forme/volumétrie, pas un composant qui s’use)",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-015",
   "name": "South-glazed / north-buffered orientation",
   "subfunction_id": "FN-02.2",
   "function_id": "FN-02",
   "summary": "Main living glazing faces south for winter gain; service/buffer rooms sit north.",
   "slug": "south-glazed-north-buffered-orientation",
   "slug_fr": "orientation-vitree-au-sud-tampon-au-nord",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Matches structure lifespan (an orientation/design choice, not a wearing component)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "A site/plot orientation allowing a genuine south-facing aspect for main glazing",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Orientation vitrée au sud / tampon au nord",
    "description": "Les vitrages du séjour principal font face au sud pour les apports d’hiver ; les pièces de service ou tampons sont au nord.",
    "lifespan": "Correspond à la durée de vie de la structure (un choix d’orientation/conception, pas un composant qui s’use)",
    "site_prerequisites": "Orientation du terrain ou de la parcelle permettant une véritable exposition sud pour le vitrage principal"
   }
  },
  {
   "id": "SOL-016",
   "name": "Wood wool insulation board",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Rigid/semi-rigid boards of mineralised wood fibre; good thermal and acoustic performance.",
   "slug": "wood-wool-insulation-board",
   "slug_fr": "panneau-isolant-en-laine-de-bois",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "cut-and-fit boards",
    "efficiency_note": "low bio-based lambda, good R per thickness"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "50+ years if kept dry, similar to other rigid fibre insulation boards",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Natural-fibre insulation lifespan sources (SheepWool Insulation FAQ; Engineer Fix; ResearchGate natural-fibre insulation LCA review)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Panneau isolant en laine de bois",
    "description": "Panneaux rigides ou semi-rigides en fibre de bois minéralisée ; bonnes performances thermiques et acoustiques.",
    "lifespan": "50 ans ou plus au sec, similaire aux autres panneaux isolants rigides en fibres",
    "build_note": "panneaux découpés et posés",
    "efficiency_note": "faible lambda biosourcé, bonne résistance R par épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-017",
   "name": "Straw or hay-based insulation blocks",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Compressed straw/hay panels or bales; very low embodied energy, locally sourceable.",
   "slug": "straw-or-hay-based-insulation-blocks",
   "slug_fr": "blocs-isolants-en-paille-ou-en-foin",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 4,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "stacked bales, technique-heavy",
    "efficiency_note": "highest lambda, needs the most thickness"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "50-100 years if kept dry and pest-free (moisture above ~20% causes rapid fungal breakdown within weeks)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "Reliable moisture management (vapour-open assembly, roof/wall detailing that keeps bales dry), straw's main failure mode is water ingress, not age",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Natural-fibre insulation lifespan sources (SheepWool Insulation FAQ; Engineer Fix; ResearchGate natural-fibre insulation LCA review)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Blocs isolants en paille ou en foin",
    "description": "Panneaux ou bottes de paille ou de foin compressés ; très faible énergie grise, approvisionnement local possible.",
    "lifespan": "50 à 100 ans au sec et à l’abri des nuisibles (une humidité au-dessus d’environ 20% provoque une dégradation fongique rapide en quelques semaines)",
    "site_prerequisites": "Gestion fiable de l’humidité (assemblage perméable à la vapeur, détails de toiture/mur maintenant les bottes au sec), le principal mode de défaillance de la paille est l’infiltration d’eau, pas l’âge",
    "build_note": "bottes empilées, technique exigeante",
    "efficiency_note": "lambda le plus élevé, nécessite le plus d’épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-018",
   "name": "Sheep's wool insulation",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Natural fibre batt insulation; manages humidity well, non-irritant to install.",
   "slug": "sheep-s-wool-insulation",
   "slug_fr": "isolation-en-laine-de-mouton",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "friction-fit batts",
    "efficiency_note": "low bio-based lambda, good R per thickness"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "50-60+ years, among the longest-lived natural fibre insulations per manufacturer/practitioner sources",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Natural-fibre insulation lifespan sources (SheepWool Insulation FAQ; Engineer Fix; ResearchGate natural-fibre insulation LCA review)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Isolation en laine de mouton",
    "description": "Isolant en laine naturelle ; régule bien l’humidité, pose non irritante.",
    "lifespan": "50 à 60 ans ou plus, parmi les isolants en fibres naturelles les plus durables selon les sources fabricants/praticiens",
    "build_note": "isolant en rouleaux ajusté par friction",
    "efficiency_note": "faible lambda biosourcé, bonne résistance R par épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-019",
   "name": "Hemp-lime (hempcrete) wall infill",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Hemp shiv + lime binder cast around a frame; breathable, good thermal mass and insulation combined.",
   "slug": "hemp-lime-wall-infill",
   "slug_fr": "remplissage-de-mur-en-beton-de-chanvre",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Intermediate",
    "burden": 1,
    "build_note": "mixed + cast in place",
    "efficiency_note": "moderate lambda, more thickness for same R"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "100+ years, lime-bound hempcrete is commonly cited alongside cob/rammed earth for multi-generational durability if kept from standing water",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Hempcrete durability literature (Encyclopedia MDPI hempcrete properties entry)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Remplissage de mur en béton de chanvre",
    "description": "Chènevotte et liant chaux coulés autour d’une ossature ; respirant, associe inertie thermique et isolation.",
    "lifespan": "100 ans ou plus, le béton de chanvre lié à la chaux est couramment cité aux côtés de la bauge et du pisé pour sa durabilité pluri-générationnelle s’il est tenu à l’écart de l’eau stagnante",
    "build_note": "mélangé et coulé sur place",
    "efficiency_note": "lambda modéré, plus d’épaisseur pour une même résistance R",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-020",
   "name": "Cellulose (blown-in) insulation",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Recycled paper fibre, blown into cavities; good fit around irregular framing.",
   "slug": "cellulose-insulation",
   "slug_fr": "isolation-en-ouate-de-cellulose-soufflee",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "blown into cavities",
    "efficiency_note": "low bio-based lambda, good R per thickness"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30 years typical before settling/moisture uptake reduces performance; can be topped up rather than fully replaced",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Natural-fibre insulation lifespan sources (SheepWool Insulation FAQ; Engineer Fix; ResearchGate natural-fibre insulation LCA review)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Isolation en ouate de cellulose soufflée",
    "description": "Fibre de papier recyclé, soufflée dans les cavités ; s’adapte bien aux ossatures irrégulières.",
    "lifespan": "20 à 30 ans typiquement avant que le tassement ou la prise d’humidité ne réduise la performance ; peut être complété plutôt qu’entièrement remplacé",
    "build_note": "soufflé dans les cavités",
    "efficiency_note": "faible lambda biosourcé, bonne résistance R par épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-021",
   "name": "Continuous exterior insulation detailing",
   "subfunction_id": "FN-02.4",
   "function_id": "FN-02",
   "summary": "Insulation wraps the frame without interruption, avoiding thermal bridges at structural members.",
   "slug": "continuous-exterior-insulation-detailing",
   "slug_fr": "isolation-exterieure-continue-soignee",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "careful detailing, standard trades",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches the insulation material used (this is a detailing practice, not a separate material)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Isolation extérieure continue soignée",
    "description": "L’isolant enveloppe l’ossature sans interruption, évitant les ponts thermiques au niveau des éléments porteurs.",
    "lifespan": "Correspond au matériau isolant utilisé (ceci est une pratique de mise en œuvre, pas un matériau séparé)",
    "build_note": "détails soignés, corps de métier standards",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-022",
   "name": "Airtight membrane with taped/sealed joints",
   "subfunction_id": "FN-02.5",
   "function_id": "FN-02",
   "summary": "Continuous air barrier layer, critical when paired with mechanical ventilation.",
   "slug": "airtight-membrane-with-taped-sealed-joints",
   "slug_fr": "membrane-d-etancheite-a-l-air-avec-joints-scotches",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Membrane itself: 30-50+ years if undisturbed and UV-protected; taped seams are the actual weak point and should be checked at any later penetration/renovation",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.fiabitat.com/etancheite-a-lair-a-la-loupe/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Fiabitat (SCOP), 'L'etancheite a l'air a la loupe' (incl. Q4/n50 test norms)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Membrane d’étanchéité à l’air avec joints scotchés",
    "description": "Couche d’étanchéité à l’air continue, essentielle lorsqu’elle est associée à une ventilation mécanique.",
    "lifespan": "La membrane elle-même : 30-50 ans ou plus si non perturbée et protégée des UV ; les joints scotchés sont le vrai point faible et doivent être vérifiés à toute traversée ou rénovation ultérieure"
   }
  },
  {
   "id": "SOL-023",
   "name": "Triple-glazed, low-E windows",
   "subfunction_id": "FN-02.6",
   "function_id": "FN-02",
   "summary": "Highest thermal performance glazing; heavier and costlier than double glazing.",
   "slug": "triple-glazed-low-e-windows",
   "slug_fr": "vitrage-triple-faible-emissivite",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 1,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "factory units, fitted",
    "efficiency_note": "lowest U-value of the glazing options (~0.8 W/m2K triple, low-E)"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "high",
   "lifespan": "20-35 years (sealed-unit failure, not glass wear, is the limiting factor)",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Glazing industry lifespan sources (Glass & Glazing Federation guidance via Everest/Gowercroft consumer glazing sites)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Vitrage triple, faible émissivité",
    "description": "Vitrage aux meilleures performances thermiques ; plus lourd et plus coûteux que le double vitrage.",
    "lifespan": "20 à 35 ans (la défaillance du double vitrage scellé, pas l’usure du verre, est le facteur limitant)",
    "build_note": "unités d’usine, posées",
    "efficiency_note": "coefficient U le plus bas des options de vitrage (~0,8 W/m²K triple, faible émissivité)",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-024",
   "name": "Double-glazed windows, insulated frames",
   "subfunction_id": "FN-02.6",
   "function_id": "FN-02",
   "summary": "Lower cost/embodied-energy alternative to triple glazing; still a large step above single glazing.",
   "slug": "double-glazed-windows-insulated-frames",
   "slug_fr": "double-vitrage-menuiseries-isolantes",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "factory units, fitted",
    "efficiency_note": "roughly half the heat loss of single glazing (~1.4 W/m2K)"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "20-35 years, same sealed-unit failure mode as triple glazing",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Glazing industry lifespan sources (Glass & Glazing Federation guidance via Everest/Gowercroft consumer glazing sites)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Double vitrage, menuiseries isolantes",
    "description": "Alternative moins coûteuse et moins gourmande en énergie grise que le triple vitrage ; encore un grand progrès par rapport au simple vitrage.",
    "lifespan": "20 à 35 ans, même mode de défaillance du vitrage scellé que le triple vitrage",
    "build_note": "unités d’usine, posées",
    "efficiency_note": "environ moitié moins de pertes de chaleur que le simple vitrage (~1,4 W/m²K)",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-025",
   "name": "South-facing glazing sized for winter gain",
   "subfunction_id": "FN-02.7",
   "function_id": "FN-02",
   "summary": "Glazing area and placement calculated to capture low-angle winter sun.",
   "slug": "south-facing-glazing-sized-for-winter-gain",
   "slug_fr": "vitrage-sud-dimensionne-pour-les-apports-d-hiver",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "design/sizing, no special build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches glazing lifespan (a sizing/placement choice, not a separate material)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A genuine south-facing aspect available on site",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Vitrage sud dimensionné pour les apports d’hiver",
    "description": "Surface et emplacement du vitrage calculés pour capter le soleil bas de l’hiver.",
    "lifespan": "Correspond à la durée de vie du vitrage (un choix de dimensionnement/placement, pas un matériau séparé)",
    "site_prerequisites": "Une véritable exposition sud disponible sur le terrain",
    "build_note": "conception/dimensionnement, aucune construction spéciale"
   }
  },
  {
   "id": "SOL-026",
   "name": "Fixed horizontal overhangs (south)",
   "subfunction_id": "FN-02.8",
   "function_id": "FN-02",
   "summary": "Blocks high summer sun while admitting low winter sun; no moving parts.",
   "slug": "fixed-horizontal-overhangs",
   "slug_fr": "debords-de-toit-horizontaux-fixes",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "framing detail at the eaves",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches structure/roof lifespan if built as part of the roof structure (a fixed geometry choice, not a separately wearing component)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Débords de toit horizontaux fixes (sud)",
    "description": "Bloque le soleil haut de l’été tout en laissant entrer le soleil bas de l’hiver ; aucune pièce mobile.",
    "lifespan": "Correspond à la durée de vie de la structure/toiture s’il est construit avec la charpente (un choix de géométrie fixe, pas un composant qui s’use séparément)",
    "build_note": "détail de charpente aux avant-toits"
   }
  },
  {
   "id": "SOL-027",
   "name": "Adjustable brise-soleil / shutters (east-west)",
   "subfunction_id": "FN-02.8",
   "function_id": "FN-02",
   "summary": "Movable shading for low-angle morning/evening sun that fixed overhangs can't block.",
   "slug": "adjustable-brise-soleil-shutters",
   "slug_fr": "brise-soleil-ou-volets-orientables",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 4,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "louvres + operating mechanism",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "20-30 years for the moving hardware (hinges, tracks, motors if motorised); the shading material itself may need earlier renewal",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.fiabitat.com/le-brise-soleil/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General exterior shading-hardware industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Brise-soleil ou volets orientables (est-ouest)",
    "description": "Ombrage mobile pour le soleil rasant du matin et du soir qu’un débord fixe ne peut pas bloquer.",
    "lifespan": "20 à 30 ans pour la quincaillerie mobile (charnières, rails, moteurs le cas échéant) ; le matériau d’ombrage lui-même peut nécessiter un renouvellement plus précoce",
    "build_note": "lames + mécanisme de manœuvre",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-028",
   "name": "Deciduous vegetation shading",
   "subfunction_id": "FN-02.8",
   "function_id": "FN-02",
   "summary": "Trees shade in summer leaf and admit sun once bare in winter; slow to establish, zero embodied carbon.",
   "slug": "deciduous-vegetation-shading",
   "slug_fr": "ombrage-par-vegetation-caduque",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "planting, slow to establish",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-40+ years to full canopy size depending on species; the trees themselves can live far longer than the building",
   "embodied_carbon": "None",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Space for mature canopy spread without shading winter-gain glazing or damaging foundations with roots",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Ombrage par végétation caduque",
    "description": "Les arbres ombragent en été avec leur feuillage et laissent passer le soleil une fois dénudés en hiver ; croissance lente, carbone incorporé nul.",
    "lifespan": "20 à 40 ans ou plus pour atteindre la pleine taille de la frondaison selon l’espèce ; les arbres eux-mêmes peuvent vivre bien plus longtemps que le bâtiment",
    "site_prerequisites": "Espace pour l’étalement d’une frondaison mature sans ombrager le vitrage d’apport hivernal ni endommager les fondations avec les racines",
    "build_note": "plantation, croissance lente"
   }
  },
  {
   "id": "SOL-029",
   "name": "Exposed thermal mass (masonry, rammed earth, slab)",
   "subfunction_id": "FN-02.9",
   "function_id": "FN-02",
   "summary": "Absorbs daytime heat and releases it as temperatures drop, smoothing daily swings.",
   "slug": "exposed-thermal-mass",
   "slug_fr": "inertie-thermique-apparente",
   "inputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "None",
    "burden": 0,
    "build_note": "material/finish choice, no add-on",
    "efficiency_note": "lower heat capacity per volume, but structural, no separate vessel needed"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (masonry/rammed-earth/slab mass doesn't wear out under normal thermal cycling)",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Inertie thermique apparente (maçonnerie, terre, dalle)",
    "description": "Absorbe la chaleur en journée et la restitue quand la température baisse, lissant les écarts quotidiens.",
    "lifespan": "Correspond à la durée de vie de la structure (la masse de maçonnerie, pisé ou dalle ne s’use pas sous cycle thermique normal)",
    "build_note": "choix de matériau/finition, aucun ajout",
    "efficiency_note": "capacité thermique par volume plus faible, mais structurel, aucune enceinte séparée nécessaire"
   }
  },
  {
   "id": "SOL-030",
   "name": "Wood stove / mass heater",
   "subfunction_id": "FN-02.10",
   "function_id": "FN-02",
   "summary": "Biomass-fuelled backup heat; mass heaters store and slow-release heat from a short, hot burn.",
   "slug": "wood-stove-mass-heater",
   "slug_fr": "poele-a-bois-poele-de-masse",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 5,
    "build_note": "fit stove + flue",
    "efficiency_note": "direct combustion; a plain stove loses more up the flue than a mass heater"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "15-25 years well-built and maintained; firebox/baffle components may need earlier replacement",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Poêle_de_masse_-_Uzume",
     "lang": null
    },
    {
     "url": "https://www.youtube.com/watch?v=mmSr_eUJfdg",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Wood stove lifespan industry/practitioner sources (Hearth.com forums; permies.com heater-lifespan wiki; Fireplace Universe)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Poêle à bois / poêle de masse",
    "description": "Chauffage d’appoint à biomasse ; les poêles de masse stockent et restituent lentement la chaleur d’une flambée courte et intense.",
    "lifespan": "15 à 25 ans bien construit et entretenu ; les composants de foyer/chicane peuvent nécessiter un remplacement plus précoce",
    "build_note": "pose du poêle + conduit",
    "efficiency_note": "combustion directe ; un poêle simple perd plus dans le conduit qu’un poêle de masse",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-031",
   "name": "Heat pump (air- or ground-source)",
   "subfunction_id": "FN-02.10",
   "function_id": "FN-02",
   "summary": "Electric backup heating; efficient but adds a powered, less-repairable component (cross-ref power dependency).",
   "slug": "heat-pump",
   "slug_fr": "pompe-a-chaleur",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 2,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "refrigerant + electrical, specialist",
    "efficiency_note": "moves heat rather than making it, delivers several units of heat per unit of electricity"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "10-15 years typical, up to 20 for well-maintained units; ground-source loops themselves can last 30+ years even as the heat-pump unit is replaced",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Heat pump lifespan industry sources (permies.com heater-lifespan wiki; general HVAC industry consensus)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Pompe à chaleur (air ou géothermique)",
    "description": "Chauffage d’appoint électrique ; efficace mais ajoute un composant alimenté, moins réparable (cf. dépendance à l’électricité).",
    "lifespan": "10 à 15 ans typiquement, jusqu’à 20 pour des unités bien entretenues ; les boucles géothermiques elles-mêmes peuvent durer 30 ans ou plus même quand l’unité de pompe à chaleur est remplacée",
    "build_note": "fluide frigorigène + électricité, spécialiste",
    "efficiency_note": "déplace la chaleur au lieu de la produire, délivre plusieurs unités de chaleur par unité d’électricité"
   }
  },
  {
   "id": "SOL-032",
   "name": "Night-flush cooling",
   "subfunction_id": "FN-02.11",
   "function_id": "FN-02",
   "summary": "Opens the building to cool night air, pre-cooling thermal mass for the next day (relies on passive/natural ventilation).",
   "slug": "night-flush-cooling",
   "slug_fr": "rafraichissement-nocturne-par-ventilation",
   "inputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-24",
     "name": "Cooling"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "operable openings, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches building operable-opening lifespan (a strategy/operating practice, not a separate physical component)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A climate with a real day/night temperature swing and openings that can be safely left open overnight",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Rafraîchissement nocturne par ventilation",
    "description": "Ouvre le bâtiment à l’air frais nocturne, prérefroidissant l’inertie thermique pour le lendemain (repose sur la ventilation naturelle/passive).",
    "lifespan": "Correspond à la durée de vie des ouvertures manœuvrables du bâtiment (une stratégie/pratique d’exploitation, pas un composant physique séparé)",
    "site_prerequisites": "Un climat avec un vrai écart de température jour/nuit et des ouvertures pouvant être laissées ouvertes la nuit en sécurité",
    "build_note": "ouvertures manœuvrables, aucune construction"
   }
  },
  {
   "id": "SOL-033",
   "name": "Earth tube / ground-coupled air pre-conditioning",
   "subfunction_id": "FN-02.12",
   "function_id": "FN-02",
   "summary": "Buries intake ductwork to pre-temper incoming air using stable ground temperature.",
   "slug": "earth-tube-ground-coupled-air-pre-conditioning",
   "slug_fr": "puits-canadien",
   "inputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "buried ductwork, careful grading",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "30-50 years for the buried duct itself if corrosion-resistant material used; the fan (if any) needs earlier replacement on its own cycle",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Ground area available for a buried intake duct run",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.fiabitat.com/dimensionner-un-puits-canadien/",
     "lang": null
    },
    {
     "url": "https://www.fiabitat.com/le-principe-du-puits-canadien/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "xpair.com (Tier B) / US DOE energy.gov (Tier A)",
     "tier": "A/B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Puits canadien (préconditionnement de l’air par le sol)",
    "description": "Enterre le conduit d’amenée d’air pour le préconditionner grâce à la température stable du sol.",
    "lifespan": "30 à 50 ans pour le conduit enterré lui-même si un matériau résistant à la corrosion est utilisé ; le ventilateur (le cas échéant) nécessite un remplacement plus précoce selon son propre cycle",
    "site_prerequisites": "Surface de terrain disponible pour le tracé enterré du conduit d’amenée d’air",
    "build_note": "conduit enterré, terrassement soigné"
   }
  },
  {
   "id": "SOL-034",
   "name": "Earth-sheltered / semi-buried form",
   "subfunction_id": "FN-02.12",
   "function_id": "FN-02",
   "summary": "Ground contact stabilises indoor temperature year-round; easier and cheaper on a sloped site, it also serves wind/storm resistance.",
   "slug": "earth-sheltered-form-thermal",
   "slug_fr": "forme-semi-enterree-thermique",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "excavation + retaining/waterproofing",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "high",
   "lifespan": "Matches structure lifespan, identical form choice, listed under the two functions it serves",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "Sloped site strongly preferred",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Forme semi-enterrée / abritée par le terrain",
    "description": "Le contact avec le sol stabilise la température intérieure toute l’année ; plus simple et moins coûteux sur un terrain en pente, sert aussi la résistance au vent et aux tempêtes.",
    "lifespan": "Correspond à la durée de vie de la structure, choix de forme identique, listé sous les deux fonctions qu’elle sert",
    "site_prerequisites": "Terrain en pente fortement préférable",
    "build_note": "excavation + soutènement/étanchéité",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-035",
   "name": "South-facing attached sunspace / solar greenhouse",
   "subfunction_id": "FN-02.13",
   "function_id": "FN-02",
   "summary": "Glazed buffer capturing solar heat, distinct from a north buffer, can offset a large share of heating demand.",
   "slug": "south-facing-attached-sunspace-solar-greenhouse",
   "slug_fr": "veranda-ou-serre-solaire-accolee-au-sud",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "glazed lean-to structure",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches glazing/structure lifespan of the attached space (a form choice using standard glazed-structure components)",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A genuine south-facing aspect and space for an attached structure",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Véranda ou serre solaire accolée au sud",
    "description": "Espace tampon vitré captant la chaleur solaire, distinct du tampon nord, peut compenser une part importante du besoin de chauffage.",
    "lifespan": "Correspond à la durée de vie du vitrage/structure de l’espace accolé (un choix de forme utilisant des composants vitrés standards)",
    "site_prerequisites": "Une véritable exposition sud et l’espace pour une structure accolée",
    "build_note": "structure vitrée accolée"
   }
  },
  {
   "id": "SOL-036",
   "name": "North-facing unheated utility buffer room",
   "subfunction_id": "FN-02.13",
   "function_id": "FN-02",
   "summary": "Unglazed garage/pantry/hallway acting as an insulating layer against the cold side, not a solar collector.",
   "slug": "north-facing-unheated-utility-buffer-room",
   "slug_fr": "local-tampon-non-chauffe-au-nord",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "layout choice, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (an unheated room is a layout choice, not a separate material)",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "A north-facing aspect available in the plan",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Local tampon non chauffé au nord",
    "description": "Garage, cellier ou couloir non vitré agissant comme couche isolante côté froid, et non comme capteur solaire.",
    "lifespan": "Correspond à la durée de vie de la structure (une pièce non chauffée est un choix de plan, pas un matériau séparé)",
    "site_prerequisites": "Une orientation nord disponible dans le plan",
    "build_note": "choix de plan, aucune construction"
   }
  },
  {
   "id": "SOL-037",
   "name": "Zoned radiant or convective heating circuits",
   "subfunction_id": "FN-02.14",
   "function_id": "FN-02",
   "summary": "Separate circuits/thermostatic control per zone so unused rooms aren't conditioned.",
   "slug": "zoned-radiant-or-convective-heating-circuits",
   "slug_fr": "circuits-de-chauffage-zones",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Radiant/convective distribution piping: 30-50+ years; zone valves/thermostats: 10-15 years, replaceable independently",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://solar.lowtechmagazine.com/2015/03/radiant-conductive-heating-systems/",
     "lang": "en"
    }
   ],
   "sources": [
    {
     "name": "HVAC zoning-hardware industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Circuits de chauffage zonés (rayonnant ou convectif)",
    "description": "Circuits séparés avec régulation thermostatique par zone, pour ne pas chauffer ou refroidir les pièces inoccupées.",
    "lifespan": "Canalisations de distribution rayonnante/convective : 30-50 ans ou plus ; vannes de zone/thermostats : 10-15 ans, remplaçables indépendamment"
   }
  },
  {
   "id": "SOL-038",
   "name": "Cross-ventilation (opposed openings)",
   "subfunction_id": "FN-03.1",
   "function_id": "FN-03",
   "summary": "Openings on opposite facades let prevailing wind drive airflow with no power input.",
   "slug": "cross-ventilation",
   "slug_fr": "ventilation-traversante",
   "inputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "opening placement, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches opening/window lifespan (a strategy using standard operable windows, not a separate component)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Openings on at least two opposing or near-opposing facades",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Ventilation traversante (ouvertures opposées)",
    "description": "Des ouvertures sur des façades opposées laissent le vent dominant faire circuler l’air sans apport d’énergie.",
    "lifespan": "Correspond à la durée de vie des ouvertures/fenêtres (une stratégie utilisant des fenêtres manœuvrables standards, pas un composant séparé)",
    "site_prerequisites": "Des ouvertures sur au moins deux façades opposées ou quasi opposées",
    "build_note": "emplacement des ouvertures, aucune construction"
   }
  },
  {
   "id": "SOL-039",
   "name": "Stack-effect / solar chimney ventilation",
   "subfunction_id": "FN-03.1",
   "function_id": "FN-03",
   "summary": "Warm air rises and exits high, drawing fresh air in low, works even with no wind.",
   "slug": "stack-effect-solar-chimney-ventilation",
   "slug_fr": "ventilation-par-effet-de-cheminee-solaire",
   "inputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "vertical duct / chimney",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches structure lifespan (the chimney/stack is typically integrated into the building fabric)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A design allowing a real vertical stack height and low-to-high opening separation",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Ventilation par effet de cheminée solaire",
    "description": "L’air chaud monte et s’évacue en hauteur, aspirant de l’air frais en partie basse, fonctionne même sans vent.",
    "lifespan": "Correspond à la durée de vie de la structure (la cheminée ou le conduit est généralement intégré au bâti)",
    "site_prerequisites": "Une conception permettant une réelle hauteur de tirage verticale et un écart entre ouvertures basses et hautes",
    "build_note": "conduit vertical ou cheminée"
   }
  },
  {
   "id": "SOL-040",
   "name": "Mechanical ventilation with heat recovery (MVHR)",
   "subfunction_id": "FN-03.2",
   "function_id": "FN-03",
   "summary": "Powered ventilation that recovers heat from outgoing air; standard Passivhaus pairing with airtightness.",
   "slug": "mechanical-ventilation-with-heat-recovery",
   "slug_fr": "ventilation-mecanique-double-flux",
   "inputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    },
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    },
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "ducted unit, commissioning",
    "efficiency_note": "central core recovers ~85-90% of exhaust heat"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "15-30 years for the core unit; filters need replacement every 3-6 months, fans/motors are the usual mid-life failure point",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "An airtight envelope, MVHR loses most of its value without it",
   "new_build_only": false,
   "regulation_fr": "Dwellings must have general and permanent ventilation (arrete du 24 mars 1982, modifie). Mechanical ventilation is the usual way of meeting it in an airtight building.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.fiabitat.com/introduction-a-la-vmc-double-flux/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Fiabitat (SCOP), 'La VMC double flux a la loupe', 11-part technical dossier",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Ventilation mécanique double flux",
    "description": "Ventilation motorisée qui récupère la chaleur de l’air extrait ; association classique Passivhaus avec l’étanchéité à l’air.",
    "lifespan": "15 à 30 ans pour l’unité centrale ; les filtres nécessitent un remplacement tous les 3-6 mois, les ventilateurs/moteurs sont le point de défaillance habituel à mi-vie",
    "site_prerequisites": "Une enveloppe étanche à l’air, la VMC double flux perd l’essentiel de son intérêt sans cela",
    "build_note": "unité à gaines, mise en service",
    "efficiency_note": "le cœur centralisé récupère environ 85-90% de la chaleur extraite",
    "regulation_fr": "Les logements doivent disposer d’une ventilation générale et permanente (arrêté du 24 mars 1982 modifié). La ventilation mécanique est le moyen habituel d’y répondre dans un bâtiment étanche à l’air."
   }
  },
  {
   "id": "SOL-041",
   "name": "Hygroscopic natural finishes (clay plaster, exposed wood)",
   "subfunction_id": "FN-03.3",
   "function_id": "FN-03",
   "summary": "Materials that absorb and release moisture, buffering indoor humidity swings passively.",
   "slug": "hygroscopic-natural-finishes",
   "slug_fr": "enduits-naturels-hygroscopiques",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Matches wall finish lifespan; clay plaster commonly lasts decades and can be repaired/re-plastered locally rather than replaced wholesale",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General natural-plaster industry/practitioner durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Enduits naturels hygroscopiques (terre, bois apparent)",
    "description": "Matériaux qui absorbent et relâchent l’humidité, tamponnant passivement les variations d’humidité intérieure.",
    "lifespan": "Correspond à la durée de vie de la finition murale ; l’enduit d’argile dure généralement des décennies et peut être réparé ou refait localement plutôt que remplacé entièrement"
   }
  },
  {
   "id": "SOL-042",
   "name": "Low-VOC / natural material selection",
   "subfunction_id": "FN-03.4",
   "function_id": "FN-03",
   "summary": "Choosing finishes and materials that don't off-gas, addressing pollutant control at the source rather than by filtration.",
   "slug": "low-voc-natural-material-selection",
   "slug_fr": "choix-de-materiaux-naturels-a-faibles-emissions-de-cov",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "material choice, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Not applicable in the usual sense, a material-selection criterion applied across all finishes, not a discrete product",
   "embodied_carbon": "low",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Choix de matériaux naturels à faibles émissions de COV",
    "description": "Choix de finitions et de matériaux qui n’émettent pas de composés volatils, traitant la pollution à la source plutôt que par filtration.",
    "lifespan": "Non applicable au sens habituel, un critère de sélection de matériau appliqué à toutes les finitions, pas un produit distinct",
    "build_note": "choix de matériau, aucune construction"
   }
  },
  {
   "id": "SOL-043",
   "name": "Localised extraction at odor sources (kitchen, bathroom)",
   "subfunction_id": "FN-03.6",
   "function_id": "FN-03",
   "summary": "Targeted ventilation removing odor/moisture at the point of generation rather than diluting it building-wide.",
   "slug": "localised-extraction-at-odor-sources",
   "slug_fr": "extraction-localisee-aux-sources-d-odeurs",
   "inputs": [
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    }
   ],
   "ratings": null,
   "benchmark": false,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Extraction fan itself: 10-15 years typical bathroom/kitchen extractor fan life; ducting far longer",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General residential extractor-fan industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Extraction localisée aux sources d’odeurs (cuisine, sanitaires)",
    "description": "Ventilation ciblée qui évacue odeurs et humidité au point de production plutôt que de les diluer dans tout le bâtiment.",
    "lifespan": "L’extracteur lui-même : durée de vie typique 10-15 ans pour un extracteur de salle de bains ou de cuisine ; la gaine dure bien plus longtemps"
   }
  },
  {
   "id": "SOL-044",
   "name": "Sub-slab depressurisation / radon sump",
   "subfunction_id": "FN-03.7",
   "function_id": "FN-03",
   "summary": "Vents soil gas from beneath the foundation to the exterior before it can enter the building.",
   "slug": "sub-slab-depressurisation-radon-sump",
   "slug_fr": "puisard-de-depressurisation-sous-dallage",
   "inputs": [
    {
     "io": "IO-22",
     "name": "Soil Gas"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-22",
     "name": "Soil Gas"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 1,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "sub-slab pipe + fan",
    "efficiency_note": "actively extracts soil gas before it enters, the higher-reduction method"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Fan: 10-15 years; the sub-slab piping/sump itself is effectively permanent once installed",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "A site with elevated radon risk (a genuine, site-specific measurement, not assumed)",
   "new_build_only": false,
   "regulation_fr": "Radon risk information is compulsory for buildings in category-3 radon-potential communes. Mitigation is not itself permit-bound, but is expected where measured levels are high.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "US EPA / general radon-mitigation industry durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Puisard de dépressurisation sous dallage (radon)",
    "description": "Évacue le gaz du sol depuis sous les fondations vers l’extérieur avant qu’il ne pénètre dans le bâtiment.",
    "lifespan": "Ventilateur : 10-15 ans ; le réseau de tuyaux/puisard sous dallage est pratiquement permanent une fois posé",
    "site_prerequisites": "Un terrain à risque radon élevé (une mesure réelle et spécifique au site, pas supposée)",
    "build_note": "tuyau sous dallage + ventilateur",
    "efficiency_note": "extrait activement le gaz du sol avant qu’il n’entre, la méthode à réduction la plus élevée",
    "regulation_fr": "L’information sur le risque radon est obligatoire pour les bâtiments situés dans une commune à potentiel radon de catégorie 3. La mitigation elle-même n’est pas soumise à autorisation, mais est attendue lorsque les niveaux mesurés sont élevés."
   }
  },
  {
   "id": "SOL-045",
   "name": "Sealed slab and vapour barrier",
   "subfunction_id": "FN-03.7",
   "function_id": "FN-03",
   "summary": "Physical barrier at the foundation blocking soil gas entry; simpler but less robust than active depressurisation.",
   "slug": "sealed-slab-and-vapour-barrier",
   "slug_fr": "dalle-etanche-et-pare-vapeur",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "membrane + sealing at the pour",
    "efficiency_note": "a passive barrier; effective only as long as it stays unbroken"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Vapour barrier membrane: 30-50+ years if undisturbed, similar failure mode to the airtight membrane",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Radon risk information is compulsory for buildings in category-3 radon-potential communes. Mitigation is not itself permit-bound, but is expected where measured levels are high.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General vapour-barrier industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Dalle étanche et pare-vapeur",
    "description": "Barrière physique au niveau des fondations bloquant l’entrée des gaz du sol ; plus simple mais moins robuste qu’une dépressurisation active.",
    "lifespan": "Membrane pare-vapeur : 30-50 ans ou plus si non perturbée, même mode de défaillance que la membrane d’étanchéité à l’air",
    "build_note": "membrane + étanchéité au coulage",
    "efficiency_note": "une barrière passive ; efficace seulement tant qu’elle reste intacte",
    "regulation_fr": "L’information sur le risque radon est obligatoire pour les bâtiments situés dans une commune à potentiel radon de catégorie 3. La mitigation elle-même n’est pas soumise à autorisation, mais est attendue lorsque les niveaux mesurés sont élevés."
   }
  },
  {
   "id": "SOL-046",
   "name": "Daylight-factor window sizing and placement",
   "subfunction_id": "FN-04.1",
   "function_id": "FN-04",
   "summary": "Windows sized and positioned by daylight calculation rather than habit, reducing reliance on artificial light.",
   "slug": "daylight-factor-window-sizing-and-placement",
   "slug_fr": "dimensionnement-fenetres-facteur-lumiere",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-23",
     "name": "Daylight"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "design/calculation, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches glazing lifespan (a sizing/placement calculation, not a separate material)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Dimensionnement des fenêtres selon le facteur de lumière du jour",
    "description": "Fenêtres dimensionnées et positionnées par calcul de lumière naturelle plutôt que par habitude, réduisant le recours à l’éclairage artificiel.",
    "lifespan": "Correspond à la durée de vie du vitrage (un calcul de dimensionnement/placement, pas un matériau séparé)",
    "build_note": "conception/calcul, aucune construction"
   }
  },
  {
   "id": "SOL-047",
   "name": "LED lighting",
   "subfunction_id": "FN-04.3",
   "function_id": "FN-04",
   "summary": "Low-power artificial lighting; can run on either AC or DC bus.",
   "slug": "led-lighting",
   "slug_fr": "eclairage-led",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-23",
     "name": "Daylight"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 1,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "screw-in / wire fixtures",
    "efficiency_note": "highest luminous efficacy (lm/W)"
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "15,000-50,000 hours (roughly 15-25 years at typical residential use) per fixture; individual bulbs/drivers are the field-replaceable part",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General LED lighting industry lifespan consensus (manufacturer-published L70 ratings)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Éclairage LED",
    "description": "Éclairage artificiel basse consommation ; peut fonctionner sur bus alternatif ou continu.",
    "lifespan": "15 000 à 50 000 heures (environ 15-25 ans en usage résidentiel typique) par luminaire ; les ampoules/drivers individuels sont la pièce remplaçable sur site",
    "build_note": "douilles / appareils à visser",
    "efficiency_note": "efficacité lumineuse la plus élevée (lm/W)"
   }
  },
  {
   "id": "SOL-048",
   "name": "Clerestory windows / light shelves",
   "subfunction_id": "FN-04.4",
   "function_id": "FN-04",
   "summary": "Brings daylight deeper into a room than a standard wall window, without added solar heat gain at eye level.",
   "slug": "clerestory-windows-light-shelves",
   "slug_fr": "fenetres-hautes-etageres-reflechissantes",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-23",
     "name": "Daylight"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "high glazing + reflector shelf",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches glazing/roof-penetration lifespan (a design element using standard glazing units)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A design allowing a raised roof section or elevated window band",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Fenêtres hautes / étagères réfléchissantes",
    "description": "Apporte la lumière du jour plus profondément dans une pièce qu’une fenêtre de mur classique, sans apport solaire supplémentaire au niveau des yeux.",
    "lifespan": "Correspond à la durée de vie du vitrage/de la traversée de toiture (un élément de conception utilisant des unités vitrées standards)",
    "site_prerequisites": "Une conception permettant une section de toiture surélevée ou une bande de fenêtres en hauteur",
    "build_note": "vitrage haut + étagère réfléchissante"
   }
  },
  {
   "id": "SOL-049",
   "name": "Dense/heavy envelope construction",
   "subfunction_id": "FN-05.1",
   "function_id": "FN-05",
   "summary": "Mass-based sound insulation from outside noise, a side benefit of thermal-mass wall choices.",
   "slug": "dense-heavy-envelope-construction",
   "slug_fr": "enveloppe-dense-et-lourde",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (mass is a permanent material property, not a wearing component)",
   "embodied_carbon": "medium",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Enveloppe dense et lourde",
    "description": "Isolation acoustique par la masse contre le bruit extérieur, un bénéfice secondaire des choix de murs à forte inertie thermique.",
    "lifespan": "Correspond à la durée de vie de la structure (la masse est une propriété permanente du matériau, pas un composant qui s’use)",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-050",
   "name": "Room layout separating noisy and quiet zones",
   "subfunction_id": "FN-05.2",
   "function_id": "FN-05",
   "summary": "Placing shared/active spaces away from sleeping areas in the plan, rather than relying on wall construction alone.",
   "slug": "room-layout-separating-noisy-and-quiet-zones",
   "slug_fr": "plan-separant-zones-bruyantes-et-zones-calmes",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "plan choice, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches structure lifespan (a layout/planning choice, not a physical component)",
   "embodied_carbon": "None",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Plan séparant zones bruyantes et zones calmes",
    "description": "Éloigne dans le plan les espaces partagés ou actifs des zones de sommeil, plutôt que de compter uniquement sur la construction des murs.",
    "lifespan": "Correspond à la durée de vie de la structure (un choix de plan/conception, pas un composant physique)",
    "build_note": "choix de plan, aucune construction"
   }
  },
  {
   "id": "SOL-051",
   "name": "Vibration-isolated mounting for pumps and fans",
   "subfunction_id": "FN-05.3",
   "function_id": "FN-05",
   "summary": "Rubber/spring mounts preventing mechanical equipment noise from transmitting into the structure.",
   "slug": "vibration-isolated-mounting-for-pumps-and-fans",
   "slug_fr": "montage-antivibratoire-des-pompes-et-ventilateurs",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "10-20 years for rubber/spring isolation mounts before the elastomer hardens and needs replacement",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General mechanical-equipment vibration-isolation industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Montage antivibratoire des pompes et ventilateurs",
    "description": "Supports en caoutchouc ou à ressorts empêchant le bruit des équipements mécaniques de se transmettre à la structure.",
    "lifespan": "10 à 20 ans pour des supports antivibratoires en caoutchouc ou à ressorts avant que l’élastomère ne durcisse et nécessite un remplacement"
   }
  },
  {
   "id": "SOL-052",
   "name": "Drilled well",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "Groundwater extraction; independent of rainfall timing but depends on local aquifer access.",
   "slug": "drilled-well",
   "slug_fr": "forage",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "borehole rig, contractor",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "30-50+ years for the well/casing itself; the submersible pump inside typically needs replacement every 10-15 years",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "A confirmed, accessible aquifer at the site (a hydrogeological survey, not assumed)",
   "new_build_only": false,
   "regulation_fr": "A domestic borehole or well must be declared to the mairie (art. L2224-9 CGCT). Water intended for domestic use must be tested, and the installation kept separate from the public network.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Water well/tank lifespan industry sources (Inspectapedia; Spring Creek Drilling; Poly Processing)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Forage",
    "description": "Captage d’eau souterraine ; indépendant du rythme des pluies mais dépend de l’accès à une nappe locale.",
    "lifespan": "30-50 ans ou plus pour le forage/tubage lui-même ; la pompe immergée à l’intérieur nécessite généralement un remplacement tous les 10-15 ans",
    "site_prerequisites": "Une nappe confirmée et accessible sur le terrain (une étude hydrogéologique, pas une supposition)",
    "build_note": "engin de forage, entreprise",
    "regulation_fr": "Un forage ou puits domestique doit être déclaré en mairie (art. L2224-9 CGCT). L’eau destinée à un usage domestique doit être analysée, et l’installation maintenue séparée du réseau public."
   }
  },
  {
   "id": "SOL-053",
   "name": "Rainwater harvesting and storage",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "Collects roof runoff; simple and low-tech, but supply varies with rainfall and needs treatment before drinking. Roof surface accumulates dust, pollen, and bird droppings between rain events, concentrated in the first flush of each storm; a first-flush diverter (discarding roughly the first 1-2mm of roof runoff) is the standard, low-tech mitigation and should be assumed as part of this solution, not a separate add-on.",
   "slug": "rainwater-harvesting-and-storage",
   "slug_fr": "recuperation-et-stockage-de-l-eau-de-pluie",
   "inputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "gutters + tank + first-flush",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Roof/gutter collection surface: matches roofing material lifespan; the tank itself per the elevated cistern/tank storage figure",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "A roof area and material suitable for potable-adjacent collection (avoid lead flashing, treated shakes)",
   "new_build_only": false,
   "regulation_fr": "Non-potable water indoors is governed by decret 2024-796 and the arrete of 12 July 2024 (in force 1 September 2024, replacing the arrete of 21 August 2008). Permitted uses include toilet flushing, indoor floor washing and garden watering at building scale. Drinking, cooking and bathing are not permitted. A declaration to the mairie is required where the building is also connected to the public network.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Récupérateur_d'eau_de_pluie",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Dimensionner_la_récupération_d'eau_de_pluie_pour_être_autonome",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "First-flush diverter mechanism source already cited (Sources-and-References #21)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Récupération et stockage de l’eau de pluie",
    "description": "Collecte le ruissellement de toiture ; simple et low-tech, mais l’approvisionnement varie avec la pluie et nécessite un traitement avant consommation. La surface de toiture accumule poussière, pollen et fientes entre les épisodes de pluie, concentrés dans le premier flux de chaque averse ; un déviateur de premières eaux (rejetant environ les 1 à 2 premiers millimètres de ruissellement) est la mitigation low-tech standard et doit être considéré comme faisant partie de cette solution, pas comme un ajout séparé.",
    "lifespan": "Surface de collecte toiture/gouttière : correspond à la durée de vie du matériau de toiture ; le réservoir lui-même suit le chiffre du réservoir surélevé",
    "site_prerequisites": "Une surface et un matériau de toiture adaptés à une collecte quasi potable (éviter les solins en plomb, les bardeaux traités)",
    "build_note": "gouttières + réservoir + déviateur de premières eaux",
    "regulation_fr": "L’usage intérieur d’eau non potable est encadré par le décret 2024-796 et l’arrêté du 12 juillet 2024 (en vigueur depuis le 1er septembre 2024, remplaçant l’arrêté du 21 août 2008). Les usages autorisés incluent les chasses d’eau, le lavage des sols intérieurs et l’arrosage du jardin à l’échelle du bâtiment. La boisson, la cuisson et la toilette ne sont pas autorisées. Une déclaration en mairie est requise lorsque le bâtiment est également raccordé au réseau public."
   }
  },
  {
   "id": "SOL-054",
   "name": "Spring capture",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "Where a natural spring exists on-site; often gravity-fed with no pumping required.",
   "slug": "spring-capture",
   "slug_fr": "captage-de-source",
   "inputs": [
    {
     "io": "IO-20",
     "name": "Flowing Water (Hydro Potential)"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "spring box + gravity line",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Effectively indefinite as a natural feature; the capture structure (spring box, piping) needs the same 30-50 year renewal as other buried infrastructure",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "A natural spring physically present on or adjacent to the site, not creatable, only usable if it exists",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Captage de source",
    "description": "Lorsqu’une source naturelle existe sur le terrain ; souvent gravitaire, sans pompage nécessaire.",
    "lifespan": "Pratiquement indéfinie en tant qu’élément naturel ; l’ouvrage de captage (regard de source, canalisations) nécessite le même renouvellement à 30-50 ans que les autres infrastructures enterrées",
    "site_prerequisites": "Une source naturelle physiquement présente sur ou à proximité du terrain, impossible à créer, seulement utilisable si elle existe",
    "build_note": "regard de source + conduite gravitaire"
   }
  },
  {
   "id": "SOL-055",
   "name": "Elevated cistern/tank storage",
   "subfunction_id": "FN-06.2",
   "function_id": "FN-06",
   "summary": "Buffers supply against interruption; elevation can also enable gravity-fed distribution. Note the asymmetry: distributing from an elevated tank is passive, but filling one is not unless the source is higher still, a roof catchment or uphill spring feeds it by gravity, whereas a well or a ground-level tank needs a pump to lift the water up.",
   "slug": "elevated-cistern-tank-storage",
   "slug_fr": "reservoir-sureleve",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Polyethylene tank: 10-20 years typical, up to 25-30 in favourable conditions; concrete cistern: 100+ years if the concrete mix and construction are sound",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Structural support for a full tank at height (water is roughly 1 tonne per m3), and either a source above tank level or a means of lifting water into it",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Water well/tank lifespan industry sources (Inspectapedia; Spring Creek Drilling; Poly Processing)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Réservoir surélevé",
    "description": "Tamponne l’approvisionnement contre les interruptions ; l’élévation permet aussi une distribution gravitaire. À noter l’asymétrie : distribuer depuis un réservoir surélevé est passif, mais le remplir ne l’est pas à moins que la source ne soit plus haute encore, un captage de toiture ou une source en amont l’alimente par gravité, alors qu’un puits ou un réservoir au sol nécessite une pompe pour faire monter l’eau.",
    "lifespan": "Réservoir en polyéthylène : 10-20 ans typiquement, jusqu’à 25-30 en conditions favorables ; citerne en béton : 100 ans ou plus si le mélange et la construction sont sains",
    "site_prerequisites": "Un support structurel pour un réservoir plein en hauteur (l’eau pèse environ 1 tonne par m³), et soit une source au-dessus du niveau du réservoir, soit un moyen d’y faire monter l’eau"
   }
  },
  {
   "id": "SOL-056",
   "name": "Multi-stage filtration + UV disinfection",
   "subfunction_id": "FN-06.3",
   "function_id": "FN-06",
   "summary": "Sediment/carbon filtration followed by UV to make raw or rain water safe to drink.",
   "slug": "multi-stage-filtration-uv-disinfection",
   "slug_fr": "filtration-multi-etages-desinfection-uv",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 7,
    "build_note": "plumbing + electrical",
    "efficiency_note": "broad microbial incl. viruses; some chemical via carbon"
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Significant",
   "cost": "medium",
   "lifespan": "Filtration housing/media: 10-15 years; UV lamp itself needs replacement roughly annually (8,000-12,000 hours rated life)",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Water filtration component lifespan industry sources (CleanWaterStore; SimplePure RO guide; ESP Water Products UV guide)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtration multi-étages + désinfection UV",
    "description": "Filtration sur sédiments et charbon suivie d’une désinfection UV pour rendre l’eau brute ou de pluie potable.",
    "lifespan": "Boîtier/media de filtration : 10-15 ans ; la lampe UV elle-même nécessite un remplacement environ annuel (durée de vie nominale 8 000-12 000 heures)",
    "build_note": "plomberie + électricité",
    "efficiency_note": "large spectre microbien y compris les virus ; une part chimique via le charbon"
   }
  },
  {
   "id": "SOL-057",
   "name": "Gravity-fed distribution from elevated storage",
   "subfunction_id": "FN-06.4",
   "function_id": "FN-06",
   "summary": "No pump needed if storage sits above point of use; low pressure but passive and resilient.",
   "slug": "gravity-fed-distribution-from-elevated-storage",
   "slug_fr": "distribution-gravitaire-depuis-un-stockage-sureleve",
   "inputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "elevated tank + pipe run",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Piping: 30-50+ years; no pump or powered component to wear out, the main advantage of this approach",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Elevated storage genuinely above the point of use",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Distribution gravitaire depuis un stockage surélevé",
    "description": "Aucune pompe nécessaire si le stockage est au-dessus du point d’usage ; basse pression mais passif et résilient.",
    "lifespan": "Canalisations : 30-50 ans ou plus ; aucune pompe ni composant motorisé à user, l’avantage principal de cette approche",
    "site_prerequisites": "Un stockage surélevé véritablement au-dessus du point d’usage",
    "build_note": "réservoir surélevé + tracé de tuyau"
   }
  },
  {
   "id": "SOL-058",
   "name": "Pressurised pump distribution",
   "subfunction_id": "FN-06.4",
   "function_id": "FN-06",
   "summary": "Delivers mains-equivalent pressure to standard fixtures; depends on power (cross-ref power dependency).",
   "slug": "pressurised-pump-distribution",
   "slug_fr": "distribution-par-pompe-sous-pression",
   "inputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 6,
    "build_note": "pump + pressure tank + wiring",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Pump itself: 10-15 years typical for a residential pressure pump",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": true,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General water-pump industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Distribution par pompe sous pression",
    "description": "Fournit une pression équivalente au réseau vers les équipements standards ; dépend de l’électricité (cf. dépendance à l’énergie).",
    "lifespan": "La pompe elle-même : 10-15 ans typiquement pour une pompe de surpression résidentielle",
    "build_note": "pompe + réservoir sous pression + câblage"
   }
  },
  {
   "id": "SOL-059",
   "name": "Thermosiphon solar water heater",
   "subfunction_id": "FN-06.5",
   "function_id": "FN-06",
   "summary": "Passive convective loop between a collector and an elevated tank; no pump or electricity needed.",
   "slug": "thermosiphon-solar-water-heater",
   "slug_fr": "chauffe-eau-solaire-a-thermosiphon",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 1,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "collector + elevated tank loop",
    "efficiency_note": "pumped-free solar loop with an insulated store, the largest free share"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "20-25 years for the collector and tank; the glazing cover may need earlier replacement",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A south-facing roof or wall area for the collector, and a tank position above or level with it for thermosiphon flow",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Chauffe-eau_solaire_%C3%A0_thermosiphon/en",
     "lang": "en"
    },
    {
     "url": "https://www.youtube.com/watch?v=DHW392drALI",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Solar thermal water heater industry durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Chauffe-eau solaire à thermosiphon",
    "description": "Boucle convective passive entre un capteur et un réservoir surélevé ; aucune pompe ni électricité nécessaire.",
    "lifespan": "20 à 25 ans pour le capteur et le réservoir ; la couverture vitrée peut nécessiter un remplacement plus précoce",
    "site_prerequisites": "Une surface de toiture ou de mur orientée sud pour le capteur, et un réservoir positionné au-dessus ou au niveau pour l’écoulement par thermosiphon",
    "build_note": "capteur + boucle vers réservoir surélevé",
    "efficiency_note": "boucle solaire sans pompe avec réservoir isolé, la plus grande part gratuite"
   }
  },
  {
   "id": "SOL-060",
   "name": "Compost-coil water pre-heater",
   "subfunction_id": "FN-06.5",
   "function_id": "FN-06",
   "summary": "Pipe coil through an active compost pile pre-heats water before the main heater. Passive where the loop can thermosiphon or sits on an existing pressurised feed; a separate circulating pump is needed if the geometry does not allow either.",
   "slug": "compost-coil-water-pre-heater",
   "slug_fr": "prechauffeur-d-eau-par-serpentin-dans-le-compost",
   "inputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "coil pipe through compost pile",
    "efficiency_note": "genuinely free, low-grade, pre-heats rather than reaching final temperature"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Copper coil itself: 15-25 years buried in an active compost pile (corrosion from the compost environment is the limiting factor, not the pipe wearing out)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "An active compost pile large enough to maintain thermophilic temperatures",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Préchauffeur d’eau par serpentin dans le compost",
    "description": "Un serpentin dans un tas de compost actif préchauffe l’eau avant le chauffe-eau principal. Passif lorsque la boucle peut fonctionner en thermosiphon ou est déjà sur une alimentation sous pression ; une pompe de circulation séparée est nécessaire si la géométrie ne le permet pas.",
    "lifespan": "Le serpentin de cuivre lui-même : 15-25 ans enterré dans un tas de compost actif (la corrosion due à l’environnement du compost est le facteur limitant, pas l’usure du tuyau)",
    "site_prerequisites": "Un tas de compost actif assez grand pour maintenir des températures thermophiles",
    "build_note": "serpentin dans le tas de compost",
    "efficiency_note": "réellement gratuit, basse température, préchauffe sans atteindre la température finale"
   }
  },
  {
   "id": "SOL-061",
   "name": "Electric or heat-pump water heater",
   "subfunction_id": "FN-06.5",
   "function_id": "FN-06",
   "summary": "Conventional powered backup/primary water heating.",
   "slug": "electric-or-heat-pump-water-heater",
   "slug_fr": "chauffe-eau-electrique-ou-thermodynamique",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "outputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 3,
    "efficiency": 4,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "appliance install, electrical",
    "efficiency_note": "reliable and on demand, but every unit of heat is purchased"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "10-15 years for a conventional electric tank; heat-pump water heaters follow the same 10-15 year range as the heat pump",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Heat pump lifespan industry sources (permies.com heater-lifespan wiki; general HVAC industry consensus)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Chauffe-eau électrique ou thermodynamique",
    "description": "Chauffage d’eau conventionnel, alimenté, en appoint ou en solution principale.",
    "lifespan": "10-15 ans pour un ballon électrique conventionnel ; les chauffe-eaux thermodynamiques suivent la même plage de 10-15 ans que la pompe à chaleur",
    "build_note": "pose d’appareil, électricité",
    "efficiency_note": "fiable et à la demande, mais chaque unité de chaleur est achetée"
   }
  },
  {
   "id": "SOL-062",
   "name": "Buried/insulated pipe runs below frost line",
   "subfunction_id": "FN-06.6",
   "function_id": "FN-06",
   "summary": "Prevents freeze damage to distribution piping in hard winters.",
   "slug": "buried-insulated-pipe-runs-below-frost-line",
   "slug_fr": "canalisations-enterrees-et-isolees-hors-gel",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "30-50+ years for buried, insulated piping if installation quality (bedding, depth) is sound",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "Ground depth below the local frost line available for burial",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General buried-pipe industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Canalisations enterrées et isolées hors gel",
    "description": "Évite les dégâts liés au gel sur les canalisations de distribution lors des hivers rigoureux.",
    "lifespan": "30-50 ans ou plus pour des canalisations enterrées et isolées si la qualité de pose (lit de pose, profondeur) est bonne",
    "site_prerequisites": "Une profondeur de sol sous la ligne de gel locale disponible pour l’enfouissement"
   }
  },
  {
   "id": "SOL-063",
   "name": "Manual isolation valves at key points",
   "subfunction_id": "FN-06.7",
   "function_id": "FN-06",
   "summary": "Lets a leak or failure be isolated to one section rather than shutting off the whole system.",
   "slug": "manual-isolation-valves-at-key-points",
   "slug_fr": "vannes-d-isolement-manuelles-aux-points-cles",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "fit isolation valves",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30 years for quality brass/bronze valves before seals need replacement; cheaper plastic valves fail sooner",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General plumbing-valve industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Vannes d’isolement manuelles aux points clés",
    "description": "Permet d’isoler une fuite ou une défaillance à une seule section plutôt que de couper tout le système.",
    "lifespan": "20 à 30 ans pour des vannes en laiton ou bronze de qualité avant que les joints ne nécessitent un remplacement ; les vannes plastique bon marché tombent en panne plus tôt",
    "build_note": "pose de vannes d’isolement"
   }
  },
  {
   "id": "SOL-064",
   "name": "Separate greywater plumbing from blackwater",
   "subfunction_id": "FN-07.1",
   "function_id": "FN-07",
   "summary": "Keeps sink/shower/laundry water in its own line so it can be treated and reused independently.",
   "slug": "separate-greywater-plumbing-from-blackwater",
   "slug_fr": "separation-des-reseaux-eaux-grises-eaux-noires",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Matches plumbing pipe lifespan (30-50+ years); this is a routing/design choice, not a separate material",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Phyto%C3%A9puration_des_eaux_grises/fr",
     "lang": "fr"
    }
   ],
   "sources": [],
   "fr": {
    "name": "Séparation des réseaux eaux grises / eaux noires",
    "description": "Garde l’eau des éviers, douches et lave-linge dans son propre réseau afin qu’elle puisse être traitée et réutilisée indépendamment.",
    "lifespan": "Correspond à la durée de vie de la canalisation (30-50 ans ou plus) ; ceci est un choix de tracé/conception, pas un matériau séparé",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-065",
   "name": "Constructed wetland / reed bed filtration",
   "subfunction_id": "FN-07.2",
   "function_id": "FN-07",
   "summary": "Plants and gravel media biologically filter greywater; low-tech, no powered parts in the bed itself. Gravity-fed and genuinely passive where the site gives enough fall; on flat ground or where flow has to rise, a pump is needed and it is no longer passive.",
   "slug": "constructed-wetland-reed-bed-filtration",
   "slug_fr": "filtration-par-zone-humide-reconstituee",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    },
    {
     "io": "IO-15",
     "name": "Nutrients"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "lined bed + gravel + plants",
    "efficiency_note": "biological treatment to a good standard, given enough bed area and residence time"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "15-25 years before media/gravel bed needs partial renewal; the basin structure itself can last far longer",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Land area available for the wetland bed (a real footprint cost, cross-ref Relative Space/Material Footprint), and enough fall from the source to the bed to run on gravity",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Phytoépuration_des_eaux_grises",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Phytoépuration_eaux_usées",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Constructed-wetland treatment performance literature (NCBI vertical-flow constructed wetland studies)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtration par zone humide reconstituée (roselière)",
    "description": "Plantes et media graveleux filtrent biologiquement les eaux grises ; low-tech, aucune pièce motorisée dans le bassin lui-même. Gravitaire et réellement passive lorsque le terrain offre assez de pente ; sur terrain plat ou si le flux doit remonter, une pompe est nécessaire et la solution n’est plus passive.",
    "lifespan": "15 à 25 ans avant que le bassin de media/gravier ne nécessite un renouvellement partiel ; la structure du bassin elle-même peut durer bien plus longtemps",
    "site_prerequisites": "Surface de terrain disponible pour le bassin de la zone humide (un vrai coût d’emprise, cf. Emprise matière/espace relative), et assez de pente entre la source et le bassin pour fonctionner par gravité",
    "build_note": "bassin étanché + gravier + plantes",
    "efficiency_note": "traitement biologique de bon niveau, avec assez de surface de bassin et de temps de séjour",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-066",
   "name": "Sand filter",
   "subfunction_id": "FN-07.2",
   "function_id": "FN-07",
   "summary": "Simple mechanical filtration stage, often paired with a wetland or as a standalone pretreatment. Gravity-fed and genuinely passive where the site gives enough fall; on flat ground or where flow has to rise, a pump is needed and it is no longer passive.",
   "slug": "sand-filter",
   "slug_fr": "filtre-a-sable",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "layered sand/gravel bed",
    "efficiency_note": "mechanical filtration only, a pretreatment stage rather than full treatment"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "10-20 years before media needs replacement (depends heavily on loading and pre-filtration upstream)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Enough fall from the source through the filter bed to run on gravity, otherwise a feed pump",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Water filtration component lifespan industry sources (CleanWaterStore; SimplePure RO guide; ESP Water Products UV guide)",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtre à sable",
    "description": "Étage de filtration mécanique simple, souvent associé à une zone humide ou utilisé comme prétraitement autonome. Gravitaire et réellement passif lorsque le terrain offre assez de pente ; sur terrain plat ou si le flux doit remonter, une pompe est nécessaire et la solution n’est plus passive.",
    "lifespan": "10 à 20 ans avant que le media ne nécessite un remplacement (dépend fortement de la charge et du prétraitement en amont)",
    "site_prerequisites": "Assez de pente entre la source et le lit filtrant pour fonctionner par gravité, sinon une pompe d’alimentation",
    "build_note": "lit de sable/gravier en couches",
    "efficiency_note": "filtration mécanique seule, un prétraitement, pas un traitement complet",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-067",
   "name": "Subsurface irrigation reuse",
   "subfunction_id": "FN-07.3",
   "function_id": "FN-07",
   "summary": "Treated greywater applied below grade to landscaping; avoids surface contact. Passive only where the irrigation area lies below the treatment outlet, watering ground above it requires a pump.",
   "slug": "subsurface-irrigation-reuse",
   "slug_fr": "reutilisation-par-irrigation-souterraine",
   "inputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    }
   ],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "buried drip / irrigation lines",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Distribution piping/emitters: 15-25 years (subsurface drip emitters clog and need periodic flushing or replacement)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Landscaping/soil area suitable for subsurface application, and food-production reuse reactivated (currently deferred per Charter §3)",
   "new_build_only": false,
   "regulation_fr": "Greywater reuse is permitted under decret 2024-796 and the arrete of 12 July 2024, on an experimental basis until 31 December 2034, for laundry, indoor floor washing and vegetable-garden watering. Not permitted for drinking, cooking or bathing.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Réutilisation par irrigation souterraine",
    "description": "Eaux grises traitées épandues en profondeur pour l’arrosage ; évite tout contact de surface. Passif uniquement si la zone d’irrigation est en contrebas de la sortie de traitement, arroser un terrain plus haut nécessite une pompe.",
    "lifespan": "Canalisations/goutteurs de distribution : 15-25 ans (les goutteurs souterrains s’encrassent et nécessitent un rinçage ou remplacement périodique)",
    "site_prerequisites": "Surface de terrain ou de paysage adaptée à l’application souterraine, et réutilisation pour production alimentaire réactivée (actuellement différée selon la Charte §3)",
    "build_note": "lignes d’irrigation enterrées",
    "regulation_fr": "La réutilisation des eaux grises est autorisée par le décret 2024-796 et l’arrêté du 12 juillet 2024, à titre expérimental jusqu’au 31 décembre 2034, pour le lavage du linge, le lavage des sols intérieurs et l’arrosage du potager. Non autorisée pour la boisson, la cuisson ou la toilette."
   }
  },
  {
   "id": "SOL-068",
   "name": "Permitted discharge to soil/drainage field",
   "subfunction_id": "FN-07.4",
   "function_id": "FN-07",
   "summary": "Where reuse isn't practical, treated greywater is released to a code-compliant drainage field. Gravity-fed and genuinely passive where the site gives enough fall; on flat ground or where flow has to rise, a pump is needed and it is no longer passive.",
   "slug": "permitted-discharge-to-soil-drainage-field",
   "slug_fr": "rejet-autorise-vers-un-epandage",
   "inputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    }
   ],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Drainage field: 20-30 years before soil clogging (\"biomat\") reduces infiltration and the field needs rest or replacement",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Soil percolation rate and area sufficient for a code-compliant drainage field, plus enough fall from the outlet to the field to avoid a lift pump",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Septic/wastewater system lifespan industry consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Rejet autorisé vers un épandage",
    "description": "Lorsque la réutilisation n’est pas envisageable, les eaux grises traitées sont rejetées vers un épandage conforme à la réglementation. Gravitaire et réellement passif lorsque le terrain offre assez de pente ; sur terrain plat ou si le flux doit remonter, une pompe est nécessaire et la solution n’est plus passive.",
    "lifespan": "Épandage : 20-30 ans avant que le colmatage du sol (« biomat ») ne réduise l’infiltration et que l’épandage nécessite un repos ou un remplacement",
    "site_prerequisites": "Taux de percolation du sol et surface suffisants pour un épandage conforme à la réglementation, plus assez de pente entre la sortie et l’épandage pour éviter une pompe de relevage",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-069",
   "name": "Composting toilet (dry)",
   "subfunction_id": "FN-08.1",
   "function_id": "FN-08",
   "summary": "Also called a dry toilet: no water use at all (a scoop of sawdust or similar carbon material after each use instead of a flush), so it produces no blackwater stream to collect or treat, blackwater treatment and solids handling are both bypassed entirely, not just simplified. The raw output is not yet safe to use, though, see the extended pathogen-safe curing entry for the required step before it's treated as finished compost.",
   "slug": "composting-toilet",
   "slug_fr": "toilette-seche-a-compost",
   "inputs": [],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    },
    {
     "io": "IO-07",
     "name": "CO2"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "build seat/bin + venting",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Unit/chamber: 15-20 years for a well-built wood or durable-plastic composting toilet body",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Dry toilets are explicitly permitted (arrete du 7 septembre 2009 modifie) but must be declared to the SPANC, and byproducts must be composted on the property without any discharge or nuisance to neighbours.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Toilettes_s%C3%A8ches_familiales/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Toilettes_s%C3%A8ches_familiales/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General composting-toilet industry/practitioner durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Toilette sèche à compost",
    "description": "Aussi appelée toilette sèche : aucune eau utilisée (une pelletée de sciure ou matière carbonée similaire après chaque usage à la place d’une chasse), donc aucun flux d’eaux noires à collecter ou traiter, le traitement des eaux noires et la gestion des boues sont tous deux entièrement contournés, pas seulement simplifiés. La matière brute n’est cependant pas encore sûre à utiliser, voir l’entrée sur la maturation sanitaire prolongée pour l’étape requise avant qu’elle ne devienne un compost fini.",
    "lifespan": "Unité/chambre : 15-20 ans pour un corps de toilette sèche à compost bien construit en bois ou plastique durable",
    "build_note": "construction du siège/bac + ventilation",
    "regulation_fr": "Les toilettes sèches sont explicitement autorisées (arrêté du 7 septembre 2009 modifié) mais doivent être déclarées au SPANC, et les sous-produits doivent être compostés sur la propriété sans aucun rejet ni nuisance pour le voisinage."
   }
  },
  {
   "id": "SOL-070",
   "name": "Low-flush toilet to septic",
   "subfunction_id": "FN-08.1",
   "function_id": "FN-08",
   "summary": "Conventional fixture, minimises water use per flush while still relying on a wet treatment system.",
   "slug": "low-flush-toilet-to-septic",
   "slug_fr": "wc-a-faible-chasse-vers-fosse-septique",
   "inputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    },
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    }
   ],
   "outputs": [
    {
     "io": "IO-11",
     "name": "Blackwater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "standard fixture install",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Fixture itself: 25-50 years (vitreous china rarely wears out; flush valve/fill mechanism needs replacement every 5-10 years)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General toilet-fixture industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "WC à faible chasse vers fosse septique",
    "description": "Équipement conventionnel, minimise la consommation d’eau par chasse tout en s’appuyant sur un système de traitement humide.",
    "lifespan": "L’équipement lui-même : 25-50 ans (la céramique vitrifiée s’use rarement ; le mécanisme de chasse/remplissage nécessite un remplacement tous les 5-10 ans)",
    "build_note": "pose d’équipement standard",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-071",
   "name": "Septic tank + drain field",
   "subfunction_id": "FN-08.2",
   "function_id": "FN-08",
   "summary": "Standard on-site treatment; anaerobic digestion in the tank, dispersal through the field. The classic design is entirely gravity-fed, no pump, no power, which is what makes it resilient to an outage. That holds only where the site allows the drain field to sit below the tank outlet: on flat ground, a high water table, or where the field must go uphill, a lift-station pump is required, and the system stops being passive. Check the fall available on your site before assuming the passive version applies.",
   "slug": "septic-tank-drain-field",
   "slug_fr": "fosse-septique-et-epandage",
   "inputs": [
    {
     "io": "IO-11",
     "name": "Blackwater"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    },
    {
     "io": "IO-27",
     "name": "Sludge"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 3,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "tank set + drain field, contractor",
    "efficiency_note": "settlement and anaerobic digestion only; the drain field does the polishing"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "30-50 years for a concrete or fibreglass tank; drain field per the permitted soil/drainage-field figure. Where site levels force a lift-station pump, that pump follows the usual 10-15 year residential pump cycle and becomes the shortest-lived part of the system.",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Soil percolation rate and area sufficient for a code-compliant drain field; enough fall between tank outlet and field to run on gravity, otherwise a powered lift station is needed",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Septic/wastewater system lifespan industry consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Fosse septique et épandage",
    "description": "Traitement conventionnel sur site ; digestion anaérobie dans la fosse, dispersion par l’épandage. La conception classique est entièrement gravitaire, aucune pompe, aucune électricité, ce qui la rend résiliente en cas de coupure. Cela ne vaut que si le terrain permet à l’épandage d’être en contrebas de la sortie de fosse : sur terrain plat, en présence d’une nappe haute, ou si l’épandage doit être en amont, une pompe de relevage est nécessaire et le système cesse d’être passif. Vérifiez la pente disponible sur votre terrain avant de supposer que la version passive s’applique.",
    "lifespan": "30-50 ans pour une fosse en béton ou fibre de verre ; épandage selon le chiffre d’épandage réglementaire. Lorsque le niveau du terrain impose une pompe de relevage, cette pompe suit le cycle résidentiel habituel de 10-15 ans et devient la pièce la moins durable du système.",
    "site_prerequisites": "Taux de percolation du sol et surface suffisants pour un épandage conforme à la réglementation ; assez de pente entre la sortie de fosse et l’épandage pour fonctionner par gravité, sinon une station de relevage motorisée est nécessaire",
    "build_note": "pose de fosse + épandage, entreprise",
    "efficiency_note": "décantation et digestion anaérobie seules ; l’épandage assure la finition",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-072",
   "name": "Constructed wetland blackwater treatment",
   "subfunction_id": "FN-08.2",
   "function_id": "FN-08",
   "summary": "Extends the greywater wetland concept to blackwater with a longer/more robust treatment train. Gravity-fed and genuinely passive where the site gives enough fall; on flat ground or where flow has to rise, a pump is needed and it is no longer passive.",
   "slug": "constructed-wetland-blackwater-treatment",
   "slug_fr": "zone-humide-reconstituee-pour-eaux-noires",
   "inputs": [
    {
     "io": "IO-11",
     "name": "Blackwater"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    },
    {
     "io": "IO-15",
     "name": "Nutrients"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "lined bed + longer treatment train",
    "efficiency_note": "good effluent quality from a longer biological train, no powered parts"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "15-25 years before media/gravel bed needs partial renewal, same as the greywater constructed wetland",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Land area available for a larger blackwater-rated wetland bed, and enough fall through the treatment train to run on gravity",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Constructed-wetland treatment performance literature (NCBI vertical-flow constructed wetland studies)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Zone humide reconstituée pour eaux noires",
    "description": "Étend le concept de zone humide pour eaux grises aux eaux noires, avec une filière de traitement plus longue et plus robuste. Gravitaire et réellement passive lorsque le terrain offre assez de pente ; sur terrain plat ou si le flux doit remonter, une pompe est nécessaire et la solution n’est plus passive.",
    "lifespan": "15 à 25 ans avant que le bassin de media/gravier ne nécessite un renouvellement partiel, comme pour la zone humide pour eaux grises",
    "site_prerequisites": "Surface de terrain disponible pour un bassin de zone humide plus grand, dimensionné pour les eaux noires, et assez de pente sur toute la filière de traitement pour fonctionner par gravité",
    "build_note": "bassin étanché + filière de traitement plus longue",
    "efficiency_note": "bonne qualité d’effluent grâce à une filière biologique plus longue, aucune pièce motorisée",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-073",
   "name": "Periodic sludge pump-out",
   "subfunction_id": "FN-08.4",
   "function_id": "FN-08",
   "summary": "Routine removal of accumulated solids from a septic tank.",
   "slug": "periodic-sludge-pump-out",
   "slug_fr": "vidange-periodique-des-boues",
   "inputs": [
    {
     "io": "IO-27",
     "name": "Sludge"
    }
   ],
   "outputs": [
    {
     "io": "IO-27",
     "name": "Sludge"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 5,
    "build_note": "service task, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Not applicable, a recurring service action (pump-out), not a physical component with its own lifespan",
   "embodied_carbon": "None",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Vidange périodique des boues",
    "description": "Évacuation périodique des boues accumulées dans une fosse septique.",
    "lifespan": "Non applicable, une action d’entretien récurrente (vidange), pas un composant physique avec sa propre durée de vie",
    "build_note": "tâche d’entretien, aucune construction",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-074",
   "name": "Managed thermophilic humanure composting",
   "subfunction_id": "FN-08.4",
   "function_id": "FN-08",
   "summary": "Active, monitored composting of solids to pathogen-safe compost rather than pump-out disposal.",
   "slug": "managed-thermophilic-humanure-composting",
   "slug_fr": "compostage-thermophile-encadre-des-matieres-fecales",
   "inputs": [
    {
     "io": "IO-27",
     "name": "Sludge"
    }
   ],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "managed bins + monitoring",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Composting bin/structure: 15-25 years depending on material (timber vs. block)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Dry toilets are explicitly permitted (arrete du 7 septembre 2009 modifie) but must be declared to the SPANC, and byproducts must be composted on the property without any discharge or nuisance to neighbours.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General composting-infrastructure durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Compostage thermophile encadré des matières fécales",
    "description": "Compostage actif et surveillé des matières solides jusqu’à obtention d’un compost sûr, plutôt qu’une évacuation par vidange.",
    "lifespan": "Bac ou structure de compostage : 15-25 ans selon le matériau (bois ou parpaing)",
    "build_note": "bacs gérés + suivi",
    "regulation_fr": "Les toilettes sèches sont explicitement autorisées (arrêté du 7 septembre 2009 modifié) mais doivent être déclarées au SPANC, et les sous-produits doivent être compostés sur la propriété sans aucun rejet ni nuisance pour le voisinage."
   }
  },
  {
   "id": "SOL-075",
   "name": "Vented stack and trap plumbing",
   "subfunction_id": "FN-08.5",
   "function_id": "FN-08",
   "summary": "Standard odor/gas control via vent stacks and water traps at each fixture.",
   "slug": "vented-stack-and-trap-plumbing",
   "slug_fr": "ventilation-primaire-et-siphons",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "30-50+ years for PVC/cast-iron vent stack and trap plumbing",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General plumbing-fixture industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Ventilation primaire et siphons",
    "description": "Contrôle standard des odeurs et des gaz via des colonnes de ventilation et des siphons à chaque appareil.",
    "lifespan": "30-50 ans ou plus pour une colonne de ventilation et une plomberie à siphons en PVC ou fonte"
   }
  },
  {
   "id": "SOL-076",
   "name": "Solar PV array",
   "subfunction_id": "FN-09.1",
   "function_id": "FN-09",
   "summary": "Native DC output; can feed a DC bus directly or via inverter to AC.",
   "slug": "solar-pv-array",
   "slug_fr": "champ-photovoltaique",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "mount panels + DC wiring",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "25-35 years; manufacturers commonly warrant 80% output retention at 25 years",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Unobstructed south-facing roof or ground-mount area",
   "new_build_only": false,
   "regulation_fr": "Roof-mounted panels on an existing building require a prior declaration (declaration prealable) at the mairie; stricter rules apply within a protected or heritage perimeter. Grid connection additionally requires an Enedis agreement and Consuel certification.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Dimensionner_une_installation_photovolta%C3%AFque_autonome/en",
     "lang": "en"
    },
    {
     "url": "https://solar.lowtechmagazine.com/2023/12/how-to-build-a-small-solar-power-system/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "NREL PV Lifetime Project; DOE End-of-Life Management for Solar Photovoltaics",
     "tier": "A",
     "lang": null
    }
   ],
   "fr": {
    "name": "Champ photovoltaïque",
    "description": "Sortie native en courant continu ; peut alimenter directement un bus CC ou un bus CA via un onduleur.",
    "lifespan": "25 à 35 ans ; les fabricants garantissent généralement 80% de rendement conservé à 25 ans",
    "site_prerequisites": "Surface de toiture orientée sud ou zone au sol dégagée",
    "build_note": "pose de panneaux + câblage CC",
    "regulation_fr": "Des panneaux posés sur un bâtiment existant nécessitent une déclaration préalable en mairie ; des règles plus strictes s’appliquent dans un périmètre protégé ou patrimonial. Le raccordement au réseau nécessite en outre une convention Enedis et une attestation Consuel."
   }
  },
  {
   "id": "SOL-077",
   "name": "Small wind turbine",
   "subfunction_id": "FN-09.1",
   "function_id": "FN-09",
   "summary": "Site-dependent on adequate, consistent wind exposure.",
   "slug": "small-wind-turbine",
   "slug_fr": "petite-eolienne",
   "inputs": [
    {
     "io": "IO-19",
     "name": "Wind"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "tower + turbine + wiring",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "20-25 years for a well-built small turbine with durable components and proper controller protection",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Site-dependent on adequate, consistent wind exposure, open terrain, away from trees/buildings; a real constraint for a bocage-normand hedgerow landscape",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://opensourcelowtech.org/wind_turbine.html",
     "lang": null
    },
    {
     "url": "https://outils-autonomie.fr/eolienne-piggott/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "MVHR and small-wind-turbine lifespan industry sources (Envirovent, Ventsolve, Automaxx, RenewableEnergyHub)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Petite éolienne",
    "description": "Dépend du site : nécessite une exposition au vent suffisante et régulière.",
    "lifespan": "20 à 25 ans pour une petite éolienne bien construite avec des composants durables et une protection de régulateur adéquate",
    "site_prerequisites": "Dépendant du site : exposition au vent adéquate et régulière, terrain dégagé, loin des arbres et bâtiments ; une vraie contrainte pour un paysage de bocage normand",
    "build_note": "mât + éolienne + câblage"
   }
  },
  {
   "id": "SOL-078",
   "name": "Micro-hydro turbine",
   "subfunction_id": "FN-09.1",
   "function_id": "FN-09",
   "summary": "Only feasible with year-round flowing water on or adjacent to the property.",
   "slug": "micro-hydro-turbine",
   "slug_fr": "micro-turbine-hydraulique",
   "inputs": [
    {
     "io": "IO-20",
     "name": "Flowing Water (Hydro Potential)"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "intake + penstock + turbine",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "20-30+ years for the turbine itself with proper maintenance; civil works (intake, penstock) can last much longer",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Year-round flowing water on or adjacent to the property with sufficient head/flow",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://opensourcelowtech.org/water_turbine.html",
     "lang": null
    },
    {
     "url": "https://www.youtube.com/watch?v=PmuW1i20K3c",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "General micro-hydro industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Micro-turbine hydraulique",
    "description": "Réalisable seulement avec de l’eau courante disponible toute l’année sur ou à proximité de la propriété.",
    "lifespan": "20 ans ou plus pour la turbine elle-même avec un entretien correct ; le génie civil (prise d’eau, conduite forcée) peut durer bien plus longtemps",
    "site_prerequisites": "Eau courante disponible toute l’année sur ou à proximité de la propriété, avec assez de hauteur de chute ou de débit",
    "build_note": "prise d’eau + conduite forcée + turbine"
   }
  },
  {
   "id": "SOL-079",
   "name": "Grid connection",
   "subfunction_id": "FN-09.1",
   "function_id": "FN-09",
   "summary": "Conventional AC supply; highest reliability under normal conditions, but the one most exposed to the 2050s disruption assumption (Charter §2).",
   "slug": "grid-connection",
   "slug_fr": "raccordement-au-reseau-electrique",
   "inputs": [],
   "outputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 4,
    "build_note": "utility connection, licensed",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Not applicable, a service connection, not a physical component owned/replaced by the household (meter/service line maintained by the utility)",
   "embodied_carbon": "None",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Grid infrastructure reaching the site",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Raccordement au réseau électrique",
    "description": "Alimentation CA conventionnelle ; la plus fiable en conditions normales, mais la plus exposée à l’hypothèse de rupture des années 2050 (Charte §2).",
    "lifespan": "Non applicable, un raccordement de service, pas un composant physique possédé ou remplacé par le foyer (compteur/ligne de service entretenus par le fournisseur)",
    "site_prerequisites": "Infrastructure du réseau électrique desservant le terrain",
    "build_note": "raccordement au réseau, professionnel agréé",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-080",
   "name": "Battery bank (low-voltage DC)",
   "subfunction_id": "FN-09.2",
   "function_id": "FN-09",
   "summary": "Stores DC generation for use when the sun/wind/water isn't available.",
   "slug": "battery-bank",
   "slug_fr": "parc-de-batteries-basse-tension",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "wire cells + basic controller",
    "efficiency_note": "lower round-trip efficiency, roughly half the usable depth, far fewer cycles"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "Lead-acid: 3-7 years (500-1,500 cycles); see the lithium (LiFePO4) battery bank for the alternative already in the catalog",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Lead-acid/LiFePO4 battery lifespan industry sources (Renogy, EcoFlow solar battery guides)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Parc de batteries basse tension (CC)",
    "description": "Stocke la production continue pour l’utiliser quand le soleil, le vent ou l’eau ne sont pas disponibles.",
    "lifespan": "Plomb-acide : 3-7 ans (500-1 500 cycles) ; voir le parc de batteries lithium (LiFePO4) pour l’alternative déjà présente au catalogue",
    "build_note": "câblage des cellules + régulateur simple",
    "efficiency_note": "rendement aller-retour plus faible, profondeur utile environ deux fois moindre, bien moins de cycles",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-081",
   "name": "Dual-bus wiring (DC essentials + AC general)",
   "subfunction_id": "FN-09.3",
   "function_id": "FN-09",
   "summary": "Keeps resilience-critical loads on a simple DC circuit, separate from an inverter-dependent AC circuit for everything else.",
   "slug": "dual-bus-wiring",
   "slug_fr": "cablage-double-bus",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "two circuits, careful wiring",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Wiring itself: 30-50+ years; breakers/switches at bus junctions follow standard electrical-hardware cycles (20-30 years)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General electrical-wiring industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Câblage double bus (essentiels CC + réseau CA)",
    "description": "Maintient les charges critiques pour la résilience sur un circuit continu simple, séparé du circuit alternatif dépendant de l’onduleur pour tout le reste.",
    "lifespan": "Le câblage lui-même : 30-50 ans ou plus ; disjoncteurs/interrupteurs aux jonctions de bus suivent les cycles standards du matériel électrique (20-30 ans)",
    "build_note": "deux circuits, câblage soigné",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-082",
   "name": "Inverter (DC to AC)",
   "subfunction_id": "FN-09.3",
   "function_id": "FN-09",
   "summary": "Converts battery/panel DC to mains-compatible AC; the fragile, harder-to-repair link in the chain (cross-ref power/delivery dependency).",
   "slug": "inverter",
   "slug_fr": "onduleur",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 6,
    "build_note": "inverter install, electrical",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "10-15 years typical for a residential inverter; the single most failure-prone link in a PV system per general industry experience",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General solar-inverter industry durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Onduleur (CC vers CA)",
    "description": "Convertit le courant continu de la batterie ou des panneaux en courant alternatif compatible réseau ; le maillon fragile et le plus difficile à réparer de la chaîne (cf. dépendance à l’énergie).",
    "lifespan": "10 à 15 ans typiquement pour un onduleur résidentiel ; le maillon le plus sujet aux pannes d’un système photovoltaïque selon l’expérience générale du secteur",
    "build_note": "pose d’onduleur, électricité",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-083",
   "name": "Backup generator",
   "subfunction_id": "FN-09.4",
   "function_id": "FN-09",
   "summary": "Fuel-based backup for extended low-generation periods.",
   "slug": "backup-generator",
   "slug_fr": "groupe-electrogene-de-secours",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "genset + transfer switch",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "15-25 years for the engine/alternator with regular maintenance and periodic exercise-running",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General backup-generator industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Groupe électrogène de secours",
    "description": "Secours à combustible pour les périodes prolongées de faible production.",
    "lifespan": "15 à 25 ans pour le moteur/alternateur avec un entretien régulier et des cycles d’exercice périodiques",
    "build_note": "groupe électrogène + inverseur de source",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-084",
   "name": "Oversized battery bank for extended autonomy",
   "subfunction_id": "FN-09.4",
   "function_id": "FN-09",
   "summary": "Buys more time through storage rather than backup generation; no combustion, higher upfront material cost.",
   "slug": "oversized-battery-bank-for-extended-autonomy",
   "slug_fr": "parc-batteries-surdimensionne",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "add cells to the bank",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "Same as the lead-acid or lithium battery bank depending on chemistry chosen, sizing changes, the wear mechanism doesn't",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Parc de batteries surdimensionné pour autonomie prolongée",
    "description": "Gagne du temps par le stockage plutôt que par une production de secours ; pas de combustion, coût matière initial plus élevé.",
    "lifespan": "Identique au parc de batteries plomb-acide ou lithium selon la chimie choisie, le dimensionnement change, pas le mécanisme d’usure",
    "build_note": "ajout de cellules au parc"
   }
  },
  {
   "id": "SOL-085",
   "name": "Dry, ventilated firewood storage",
   "subfunction_id": "FN-09.5",
   "function_id": "FN-09",
   "summary": "Seasoning/storage so fuel is usable when needed, for both heating and cooking.",
   "slug": "dry-ventilated-firewood-storage",
   "slug_fr": "stockage-de-bois-de-chauffage-sec-et-ventile",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "build a ventilated woodshed",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Structure (roof/walls of the store): 20-40 years for a simple timber lean-to; the stored wood itself is consumed, not a wearing asset",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Stockage de bois de chauffage sec et ventilé",
    "description": "Séchage et stockage pour que le combustible soit utilisable au besoin, à la fois pour le chauffage et la cuisson.",
    "lifespan": "Structure (toit/murs de l’abri) : 20-40 ans pour un simple appentis bois ; le bois stocké lui-même est consommé, pas un bien qui s’use",
    "build_note": "construction d’un bûcher ventilé",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-086",
   "name": "Root cellar (passive cool storage)",
   "subfunction_id": "FN-10.1",
   "function_id": "FN-10",
   "summary": "Uses ground-coupled stable temperature for cool storage with no power input.",
   "slug": "root-cellar",
   "slug_fr": "cellier-enterre",
   "inputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "outputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "buried / insulated cool room",
    "efficiency_note": "reliably cool from ground contact, but follows the season rather than a setpoint"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches structure lifespan if integrated into the building (a ground-coupled space, not a separate wearing product)",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Ground contact/burial or a north-facing below-grade space available in the design",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Cellier_en_sous_sol/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Cellier_en_sous_sol/fr",
     "lang": "fr"
    }
   ],
   "sources": [],
   "fr": {
    "name": "Cellier enterré (conservation passive au frais)",
    "description": "Utilise la température stable du sol pour une conservation au frais sans apport d’énergie.",
    "lifespan": "Correspond à la durée de vie de la structure si intégré au bâtiment (un espace géocouplé, pas un produit séparé qui s’use)",
    "site_prerequisites": "Contact avec le sol, enfouissement ou espace en sous-sol orienté nord disponible dans la conception",
    "build_note": "local frais enterré ou isolé",
    "efficiency_note": "fraîcheur fiable par contact avec le sol, mais suit la saison plutôt qu’une consigne"
   }
  },
  {
   "id": "SOL-087",
   "name": "Electric refrigerator",
   "subfunction_id": "FN-10.1",
   "function_id": "FN-10",
   "summary": "Conventional powered cold storage; can be sized to run on the DC bus.",
   "slug": "electric-refrigerator",
   "slug_fr": "refrigerateur-electrique",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    },
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "outputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 3,
    "efficiency": 1,
    "build_skill": "Basic",
    "burden": 6,
    "build_note": "appliance, plug-in",
    "efficiency_note": "holds a set temperature year-round regardless of weather"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "specialist",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "10-15 years typical for a residential compressor-based refrigerator",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General refrigerator-appliance industry durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Réfrigérateur électrique",
    "description": "Conservation au froid conventionnelle et alimentée ; peut être dimensionnée pour fonctionner sur bus continu.",
    "lifespan": "10 à 15 ans typiquement pour un réfrigérateur résidentiel à compresseur",
    "build_note": "appareil, branchement direct",
    "efficiency_note": "maintient une température fixe toute l’année quelle que soit la météo"
   }
  },
  {
   "id": "SOL-088",
   "name": "Ventilated dry pantry",
   "subfunction_id": "FN-10.2",
   "function_id": "FN-10",
   "summary": "Passive dry storage relying on airflow rather than powered dehumidification.",
   "slug": "ventilated-dry-pantry",
   "slug_fr": "garde-manger-sec-ventile",
   "inputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "outputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "ventilated shelving / cabinet",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches structure/cabinetry lifespan (shelving and ventilation, not a wearing product)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Garde-manger sec ventilé",
    "description": "Stockage sec passif reposant sur la circulation d’air plutôt que sur une déshumidification motorisée.",
    "lifespan": "Correspond à la durée de vie de la structure/du mobilier (étagères et ventilation, pas un produit qui s’use)",
    "build_note": "étagères ou meuble ventilé"
   }
  },
  {
   "id": "SOL-089",
   "name": "Wood cookstove",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Doubles as space heating in cold periods; ties fuel storage to two functions at once.",
   "slug": "wood-cookstove",
   "slug_fr": "cuisiniere-a-bois",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 4,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 5,
    "build_note": "metal / masonry build",
    "efficiency_note": "moderate, direct wood burn"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "15-25 years, similar range to the wood stove given similar firebox/materials",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://outils-autonomie.fr/cuisiniere-de-masse-evolution/",
     "lang": null
    },
    {
     "url": "https://outils-autonomie.fr/cuisiniere-de-masse/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Wood stove lifespan industry/practitioner sources (Hearth.com forums; permies.com heater-lifespan wiki; Fireplace Universe)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Cuisinière à bois",
    "description": "Sert aussi de chauffage d’appoint en période froide ; relie le stockage de combustible à deux fonctions à la fois.",
    "lifespan": "15 à 25 ans, plage similaire au poêle à bois vu la similarité du foyer et des matériaux",
    "build_note": "construction métallique ou maçonnée",
    "efficiency_note": "modéré, combustion directe du bois",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-090",
   "name": "Solar cooker",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Zero-fuel cooking on sunny days; output timing depends entirely on weather.",
   "slug": "solar-cooker",
   "slug_fr": "cuiseur-solaire",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 3,
    "efficiency": 4,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "reflector / box build",
    "efficiency_note": "free but weather-limited and slow"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "10-20 years for a well-built reflective-panel cooker (reflective surface needs earlier renewal, every 3-5 years, to keep efficiency)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Unobstructed sun exposure at cooking times",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://outils-autonomie.fr/cuisiniere-solaire/",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Cuiseur_solaire_parabolique/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Outils de l'Autonomie, cuisiniere solaire (Dolios, dual-parabola)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Cuiseur solaire",
    "description": "Cuisson sans combustible les jours ensoleillés ; le moment de disponibilité dépend entièrement de la météo.",
    "lifespan": "10 à 20 ans pour un cuiseur à panneaux réfléchissants bien construit (la surface réfléchissante nécessite un renouvellement plus précoce, tous les 3-5 ans, pour maintenir l’efficacité)",
    "site_prerequisites": "Exposition au soleil dégagée aux heures de cuisson",
    "build_note": "construction réflecteur/caisson",
    "efficiency_note": "gratuit mais dépendant de la météo et lent"
   }
  },
  {
   "id": "SOL-091",
   "name": "Gravity-fed shower",
   "subfunction_id": "FN-11.1",
   "function_id": "FN-11",
   "summary": "Low pressure but passive, resilient to pump/power failure.",
   "slug": "gravity-fed-shower",
   "slug_fr": "douche-gravitaire",
   "inputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    },
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "tank + gravity feed",
    "efficiency_note": "low flow, modest water + energy"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Fixture/plumbing: 20-30 years, no pump to wear out",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Elevated storage above the shower for adequate gravity pressure",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Douche_solaire_à_partir_de_2_radiateurs",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Douche_solaire_%C3%A0_partir_de_2_radiateurs",
     "lang": "fr"
    }
   ],
   "sources": [],
   "fr": {
    "name": "Douche gravitaire",
    "description": "Basse pression mais passive, résiliente à une panne de pompe ou de courant.",
    "lifespan": "Équipement/plomberie : 20-30 ans, aucune pompe à user",
    "site_prerequisites": "Un stockage surélevé au-dessus de la douche pour une pression gravitaire suffisante",
    "build_note": "réservoir + alimentation gravitaire",
    "efficiency_note": "faible débit, eau et énergie modestes"
   }
  },
  {
   "id": "SOL-092",
   "name": "Pressurised mains-fed shower/bath",
   "subfunction_id": "FN-11.1",
   "function_id": "FN-11",
   "summary": "Standard fixture performance, fed from a pressurised supply. The fixture itself is just plumbing, it draws no power. The pressure it depends on is produced upstream, either by a mains connection, where the utility supplies it and the shower keeps working through a power cut, or by a pump, where the shower inherits that pump's power dependency and fails with it. Both feeds must be potable-quality: non-potable water is not permitted for bathing. A gravity-fed shower is the passive alternative, at lower flow.",
   "slug": "pressurised-mains-fed-shower-bath",
   "slug_fr": "douche-ou-bain-sous-pression-sur-reseau",
   "inputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    },
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 3,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "standard mains plumbing",
    "efficiency_note": "highest water + energy per wash"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Fixture: 20-30 years; depends on the pressurised pump distribution system's own lifespan",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": true,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Douche ou bain sous pression sur réseau",
    "description": "Performance standard d’un équipement alimenté par un réseau sous pression. L’équipement lui-même n’est que de la plomberie, il ne consomme aucune électricité. La pression dont il dépend est produite en amont, soit par un raccordement au réseau, auquel cas c’est le fournisseur qui la produit et la douche continue de fonctionner en cas de coupure de courant, soit par une pompe, auquel cas la douche hérite de la dépendance électrique de cette pompe et tombe en panne avec elle. Les deux alimentations doivent être de qualité potable : l’eau non potable n’est pas autorisée pour la toilette. Une douche gravitaire est l’alternative passive, à débit plus faible.",
    "lifespan": "Équipement : 20-30 ans ; dépend de la durée de vie propre du système de distribution par pompe sous pression",
    "build_note": "plomberie standard sur réseau",
    "efficiency_note": "eau et énergie les plus élevées par douche"
   }
  },
  {
   "id": "SOL-093",
   "name": "Pedal-powered washing machine",
   "subfunction_id": "FN-11.2",
   "function_id": "FN-11",
   "summary": "No electricity needed; requires physical effort and time per load.",
   "slug": "pedal-powered-washing-machine",
   "slug_fr": "machine-a-laver-a-pedale",
   "inputs": [
    {
     "io": "IO-21",
     "name": "Mechanical Energy"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "pedal drive + drum",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "15-25 years for a simple mechanical pedal-drive mechanism with few electronic parts to fail",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://outils-autonomie.fr/lave-linge-a-pedales/",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Machine_%C3%A0_laver_%C3%A0_p%C3%A9dales/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General manual-appliance durability consensus (Outils de l'Autonomie practitioner build reports)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Machine à laver à pédale",
    "description": "Aucune électricité nécessaire ; demande un effort physique et du temps par lessive.",
    "lifespan": "15 à 25 ans pour un mécanisme mécanique simple à pédale avec peu de pièces électroniques susceptibles de tomber en panne",
    "build_note": "entraînement à pédale + tambour"
   }
  },
  {
   "id": "SOL-094",
   "name": "Electric washing machine",
   "subfunction_id": "FN-11.2",
   "function_id": "FN-11",
   "summary": "Standard convenience appliance; adds an AC or DC electrical load. Its inlet valve is designed for a pressurised supply, so it needs either a mains connection or an on-site pump upstream. A gravity feed alone will not fill it reliably.",
   "slug": "electric-washing-machine",
   "slug_fr": "machine-a-laver-electrique",
   "inputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 5,
    "build_note": "appliance, plumbing + power",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "10-13 years typical for a residential washing machine",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": true,
   "tutorials": [],
   "sources": [
    {
     "name": "General washing-machine appliance industry durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Machine à laver électrique",
    "description": "Équipement de confort standard ; ajoute une charge électrique alternative ou continue. Sa vanne d’arrivée est conçue pour une alimentation sous pression : elle nécessite donc un raccordement au réseau ou une pompe sur site en amont, une simple alimentation gravitaire ne la remplira pas de façon fiable.",
    "lifespan": "10 à 13 ans typiquement pour un lave-linge résidentiel",
    "build_note": "appareil, plomberie + électricité"
   }
  },
  {
   "id": "SOL-095",
   "name": "Open-plan shared living/kitchen/dining",
   "subfunction_id": "FN-12.2",
   "function_id": "FN-12",
   "summary": "Maximises shared-space efficiency per the size-bias value; less acoustic/visual separation.",
   "slug": "open-plan-shared-living-kitchen-dining",
   "slug_fr": "sejour-cuisine-partage-et-ouvert",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (a layout choice, not a physical component)",
   "embodied_carbon": "low",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Séjour-cuisine partagé et ouvert",
    "description": "Maximise l’efficacité des espaces partagés selon le biais de taille retenu ; moins de séparation acoustique et visuelle.",
    "lifespan": "Correspond à la durée de vie de la structure (un choix de plan, pas un composant physique)"
   }
  },
  {
   "id": "SOL-096",
   "name": "Convertible/multi-use guest space",
   "subfunction_id": "FN-12.3",
   "function_id": "FN-12",
   "summary": "Fold-away bedding or a sofa-bed keeps guest capacity from requiring a dedicated permanent room.",
   "slug": "convertible-multi-use-guest-space",
   "slug_fr": "chambre-d-amis-convertible-et-polyvalente",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Furniture (sofa-bed, fold-away bedding): 10-20 years typical for the mechanism",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General furniture-hardware industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Chambre d’amis convertible et polyvalente",
    "description": "Une literie escamotable ou un canapé-lit évite qu’accueillir des invités nécessite une pièce dédiée permanente.",
    "lifespan": "Mobilier (canapé-lit, literie escamotable) : 10-20 ans typiquement pour le mécanisme"
   }
  },
  {
   "id": "SOL-097",
   "name": "Built-in and loft storage",
   "subfunction_id": "FN-12.4",
   "function_id": "FN-12",
   "summary": "Uses volume that would otherwise be unused rather than adding floor area.",
   "slug": "built-in-and-loft-storage",
   "slug_fr": "rangements-integres-et-sous-combles",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Matches structure/cabinetry lifespan (built-in joinery, not a separately wearing product)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Rangements intégrés et sous combles",
    "description": "Utilise un volume qui serait autrement inexploité plutôt que d’ajouter de la surface au sol.",
    "lifespan": "Correspond à la durée de vie de la structure/du mobilier (menuiserie intégrée, pas un produit qui s’use séparément)"
   }
  },
  {
   "id": "SOL-098",
   "name": "Dedicated workshop/tool bay",
   "subfunction_id": "FN-12.6",
   "function_id": "FN-12",
   "summary": "A defined space for the maintenance/repair work the repairability value depends on.",
   "slug": "dedicated-workshop-tool-bay",
   "slug_fr": "atelier-dedie",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (a dedicated room, not a physical component)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Atelier dédié",
    "description": "Un espace dédié aux travaux d’entretien et de réparation dont dépend la valeur de réparabilité.",
    "lifespan": "Correspond à la durée de vie de la structure (une pièce dédiée, pas un composant physique)"
   }
  },
  {
   "id": "SOL-099",
   "name": "South-facing covered porch/terrace",
   "subfunction_id": "FN-12.7",
   "function_id": "FN-12",
   "summary": "Cheap, low-embodied-carbon extension of usable space; also functions as summer shading.",
   "slug": "south-facing-covered-porch-terrace",
   "slug_fr": "preau-ou-terrasse-couverte-au-sud",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "20-40 years for a simple timber-framed porch roof structure",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "A south-facing aspect for the shading benefit to apply",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Préau ou terrasse couverte au sud",
    "description": "Extension d’espace utile peu coûteuse et à faible carbone incorporé ; sert aussi d’ombrage en été.",
    "lifespan": "20 à 40 ans pour une simple structure de toit de préau à ossature bois",
    "site_prerequisites": "Une exposition sud pour que le bénéfice d’ombrage s’applique"
   }
  },
  {
   "id": "SOL-100",
   "name": "Rainscreen cladding with drainage gap",
   "subfunction_id": "FN-13.1",
   "function_id": "FN-13",
   "summary": "Ventilated gap behind cladding lets any water that gets past the surface drain and dry rather than sit against the structure.",
   "slug": "rainscreen-cladding-with-drainage-gap",
   "slug_fr": "bardage-a-lame-d-air-ventilee",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "battens + ventilated cladding",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Cladding material-dependent (see naturally durable or treated cladding); the drainage-gap detailing itself doesn't wear out separately",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Bardage à lame d’air ventilée",
    "description": "La lame d’air ventilée derrière le bardage permet à toute eau ayant traversé la surface de s’écouler et de sécher plutôt que de stagner contre la structure.",
    "lifespan": "Dépend du matériau de bardage (voir bardage naturellement durable ou traité) ; le détail de la lame d’air ne s’use pas séparément",
    "build_note": "tasseaux + bardage ventilé",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-101",
   "name": "Generous roof overhangs",
   "subfunction_id": "FN-13.1",
   "function_id": "FN-13",
   "summary": "Keeps wind-driven rain off the walls in the first place, the cheapest form of rain control.",
   "slug": "generous-roof-overhangs",
   "slug_fr": "larges-debords-de-toit",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "extend rafters at design stage",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches roof structure lifespan (an overhang is a geometry choice, not a separate material)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Larges débords de toit",
    "description": "Éloigne d’emblée la pluie battante des murs, la forme de protection contre la pluie la plus économique.",
    "lifespan": "Correspond à la durée de vie de la charpente (un débord est un choix de géométrie, pas un matériau séparé)",
    "build_note": "prolongement des chevrons dès la conception"
   }
  },
  {
   "id": "SOL-102",
   "name": "Accessible service chases",
   "subfunction_id": "FN-13.2",
   "function_id": "FN-13",
   "summary": "Wiring/plumbing run in reachable conduits rather than buried in the structure, so a repair doesn't mean opening a wall.",
   "slug": "accessible-service-chases",
   "slug_fr": "gaines-techniques-accessibles",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Not applicable, an access/detailing practice; the services inside follow their own individual lifespans",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Gaines techniques accessibles",
    "description": "Câblages et canalisations passés dans des gaines accessibles plutôt qu’enfouis dans la structure, pour qu’une réparation n’implique pas d’ouvrir un mur.",
    "lifespan": "Non applicable, une pratique d’accès/de mise en œuvre ; les réseaux à l’intérieur suivent leurs propres durées de vie individuelles"
   }
  },
  {
   "id": "SOL-103",
   "name": "Naturally durable or treated cladding (larch, charred timber)",
   "subfunction_id": "FN-13.3",
   "function_id": "FN-13",
   "summary": "Weather/rot resistance from material choice rather than a maintained coating.",
   "slug": "naturally-durable-or-treated-cladding",
   "slug_fr": "bardage-naturellement-durable-ou-traite",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Charred timber: 50-80 years correctly installed (some sources: 25-35 years for a zero-maintenance service life); untreated larch: 30-40 years",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Timber cladding/charred-wood lifespan industry sources (The Larch Cladding Company, Timber Cladding Specialists)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Bardage naturellement durable ou traité (mélèze, bois brûlé)",
    "description": "Résistance aux intempéries et à la pourriture par le choix du matériau plutôt que par un revêtement à entretenir.",
    "lifespan": "Bois brûlé : 50-80 ans correctement posé (certaines sources : 25-35 ans pour une durée de service sans entretien) ; mélèze non traité : 30-40 ans",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-104",
   "name": "Rodent-proof foundation detailing",
   "subfunction_id": "FN-13.4",
   "function_id": "FN-13",
   "summary": "Mesh barriers at vents and gaps close off the entry points rodents actually use.",
   "slug": "rodent-proof-foundation-detailing",
   "slug_fr": "details-de-fondation-anti-rongeurs",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Matches foundation lifespan (mesh screening at vents, not a separately wearing product). Corrosion-resistant mesh should match the building's design life",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Détails de fondation anti-rongeurs",
    "description": "Des grilles aux aérations et aux interstices ferment les points d’entrée réellement utilisés par les rongeurs.",
    "lifespan": "Correspond à la durée de vie des fondations (grilles aux aérations, pas un produit qui s’use séparément), une grille résistante à la corrosion doit correspondre à la durée de vie de conception du bâtiment"
   }
  },
  {
   "id": "SOL-105",
   "name": "Mechanically fastened, non-glued assemblies",
   "subfunction_id": "FN-13.5",
   "function_id": "FN-13",
   "summary": "Bolted/screwed rather than adhesive-bonded construction, so components can be separated at end of life.",
   "slug": "mechanically-fastened-non-glued-assemblies",
   "slug_fr": "assemblages-mecaniques-demontables-sans-colle",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "bolt/screw, avoid adhesives",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Not applicable, a fastening-method choice; individual assemblies follow their own material's lifespan",
   "embodied_carbon": "low",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Assemblages mécaniques démontables, sans colle",
    "description": "Construction boulonnée ou vissée plutôt que collée, pour que les éléments puissent être séparés en fin de vie.",
    "lifespan": "Non applicable, un choix de méthode de fixation ; chaque assemblage suit la durée de vie de son propre matériau",
    "build_note": "boulonné/vissé, sans colle"
   }
  },
  {
   "id": "SOL-106",
   "name": "Non-load-bearing internal partitions",
   "subfunction_id": "FN-13.6",
   "function_id": "FN-13",
   "summary": "Interior walls that can be moved without touching the structure.",
   "slug": "non-load-bearing-internal-partitions",
   "slug_fr": "cloisons-interieures-non-porteuses",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "light stud partitions",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches structure lifespan if standard stud/board construction (a design choice enabling future changes, not a separate material)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Cloisons intérieures non porteuses",
    "description": "Cloisons intérieures déplaçables sans toucher à la structure.",
    "lifespan": "Correspond à la durée de vie de la structure si construction standard en ossature/panneaux (un choix de conception permettant des évolutions futures, pas un matériau séparé)",
    "build_note": "cloisons légères à ossature"
   }
  },
  {
   "id": "SOL-107",
   "name": "Structural bays sized for future extension",
   "subfunction_id": "FN-13.6",
   "function_id": "FN-13",
   "summary": "Frame spacing and foundation planned so a later addition doesn't require rebuilding what exists.",
   "slug": "structural-bays-sized-for-future-extension",
   "slug_fr": "trame-structurelle-prevue-pour-extension-future",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "planning at design stage",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (a planning/sizing choice, not a physical component)",
   "embodied_carbon": "low",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Trame structurelle prévue pour extension future",
    "description": "Trame de l’ossature et fondations prévues pour qu’une extension future ne nécessite pas de reconstruire l’existant.",
    "lifespan": "Correspond à la durée de vie de la structure (un choix de planification/dimensionnement, pas un composant physique)",
    "build_note": "planification dès la conception",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-108",
   "name": "Multi-bin sorting station",
   "subfunction_id": "FN-14.1",
   "function_id": "FN-14",
   "summary": "Physical infrastructure for separating waste streams at the point of disposal.",
   "slug": "multi-bin-sorting-station",
   "slug_fr": "station-de-tri-multi-bacs",
   "inputs": [],
   "outputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    },
    {
     "io": "IO-14",
     "name": "Recyclables"
    }
   ],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Bins/containers: 10-20 years depending on material (plastic vs. timber)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General waste-bin/container industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Station de tri multi-bacs",
    "description": "Infrastructure physique pour séparer les flux de déchets au point de dépôt.",
    "lifespan": "Bacs/contenants : 10-20 ans selon le matériau (plastique ou bois)"
   }
  },
  {
   "id": "SOL-109",
   "name": "Active compost pile",
   "subfunction_id": "FN-14.2",
   "function_id": "FN-14",
   "summary": "Aerobic composting of organic waste; outputs feed greywater/blackwater nutrient reuse and thermal-comfort heat capture.",
   "slug": "active-compost-pile",
   "slug_fr": "compost-actif-en-tas",
   "inputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    }
   ],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    },
    {
     "io": "IO-07",
     "name": "CO2"
    },
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "build a bin / heap",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Bin/enclosure structure: 10-20 years for timber pallet-style bins; the composting process itself is continuous, not a wearing asset",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Compost actif en tas",
    "description": "Compostage aérobie des déchets organiques ; les extrants alimentent la réutilisation des nutriments (eaux grises/noires) et la récupération de chaleur pour le confort thermique.",
    "lifespan": "Structure du bac/enclos : 10-20 ans pour des bacs de type palette en bois ; le processus de compostage lui-même est continu, pas un bien qui s’use",
    "build_note": "construction d’un bac ou d’un tas"
   }
  },
  {
   "id": "SOL-110",
   "name": "Bokashi fermentation composting",
   "subfunction_id": "FN-14.2",
   "function_id": "FN-14",
   "summary": "Anaerobic fermentation in a sealed bin; handles cooked food/meat scraps that open composting struggles with.",
   "slug": "bokashi-fermentation-composting",
   "slug_fr": "compostage-par-fermentation-bokashi",
   "inputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    }
   ],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "sealed bucket + bran",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Sealed bin: 10-15 years for a durable plastic bokashi bucket with an intact seal/tap",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Compost_Bokashi_de_cuisine/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Compost_Bokashi_de_cuisine/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General bokashi-composting practitioner/manufacturer durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Compostage par fermentation Bokashi",
    "description": "Fermentation anaérobie dans un bac étanche ; traite les restes de cuisine cuits ou de viande que le compostage à l’air libre gère mal.",
    "lifespan": "Bac étanche : 10-15 ans pour un seau bokashi en plastique durable avec joint/robinet intact",
    "build_note": "seau étanche + son"
   }
  },
  {
   "id": "SOL-111",
   "name": "Dedicated recyclables storage pending collection",
   "subfunction_id": "FN-14.3",
   "function_id": "FN-14",
   "summary": "Simple holding infrastructure, not a processing technique.",
   "slug": "dedicated-recyclables-storage-pending-collection",
   "slug_fr": "stockage-dedie-des-recyclables-avant-collecte",
   "inputs": [
    {
     "io": "IO-14",
     "name": "Recyclables"
    }
   ],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Bins/containers: 10-20 years, same as the multi-bin sorting station",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Stockage dédié des recyclables avant collecte",
    "description": "Infrastructure de stockage simple, pas une technique de traitement.",
    "lifespan": "Bacs/contenants : 10-20 ans, comme la station de tri multi-bacs"
   }
  },
  {
   "id": "SOL-112",
   "name": "Fixed broadband / fibre connection",
   "subfunction_id": "FN-15.1",
   "function_id": "FN-15",
   "summary": "Highest bandwidth where available; depends on external infrastructure reaching the site.",
   "slug": "fixed-broadband-fibre-connection",
   "slug_fr": "raccordement-fibre-ou-haut-debit-fixe",
   "inputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 5,
    "build_note": "provider install",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Fibre cabling itself: 35+ years and no known expiration date per industry research; the ONT/router terminal equipment needs replacement every 5-10 years",
   "embodied_carbon": "None",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Fibre or broadband infrastructure reaching the site",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Fiber Broadband Association longevity research (Businesswire coverage)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Raccordement fibre ou haut débit fixe",
    "description": "Le débit le plus élevé là où il est disponible ; dépend d’une infrastructure externe desservant le terrain.",
    "lifespan": "Le câblage fibre lui-même : 35 ans ou plus et aucune date d’expiration connue selon les études du secteur ; l’équipement terminal (ONT/routeur) nécessite un remplacement tous les 5-10 ans",
    "site_prerequisites": "Infrastructure fibre ou haut débit desservant le terrain",
    "build_note": "installation par le fournisseur"
   }
  },
  {
   "id": "SOL-113",
   "name": "Cellular router",
   "subfunction_id": "FN-15.1",
   "function_id": "FN-15",
   "summary": "Works where fibre doesn't reach; depends on mobile network coverage at the site.",
   "slug": "cellular-router",
   "slug_fr": "routeur-cellulaire",
   "inputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "plug-in + antenna",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "5-10 years for the router hardware itself (fast-moving cellular standards drive replacement faster than hardware failure)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Mobile network coverage at the site",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General cellular-router industry lifecycle consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Routeur cellulaire",
    "description": "Fonctionne là où la fibre n’arrive pas ; dépend de la couverture du réseau mobile sur le site.",
    "lifespan": "5 à 10 ans pour le matériel du routeur lui-même (l’évolution rapide des normes mobiles entraîne un remplacement plus rapide que la panne matérielle)",
    "site_prerequisites": "Couverture du réseau mobile sur le terrain",
    "build_note": "branchement + antenne"
   }
  },
  {
   "id": "SOL-114",
   "name": "Battery/solar-backed radio or satellite communicator",
   "subfunction_id": "FN-15.2",
   "function_id": "FN-15",
   "summary": "Keeps emergency communication working through a grid or network outage (cross-ref power storage and distribution).",
   "slug": "battery-solar-backed-radio-or-satellite-communicator",
   "slug_fr": "radio-ou-communicateur-satellite-sur-batterie-solaire",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "radio + solar / battery",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Radio unit: 10-15 years; satellite communicator hardware (e.g. handheld units): 5-10 years; battery/solar backup per the battery bank entries",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General emergency-radio/satellite-communicator industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Radio ou communicateur satellite sur batterie/solaire",
    "description": "Maintient la communication d’urgence en cas de coupure du réseau électrique ou de communication (cf. stockage et distribution d’énergie).",
    "lifespan": "Unité radio : 10-15 ans ; matériel de communicateur satellite (par exemple unités portables) : 5-10 ans ; secours batterie/solaire selon les entrées de parc de batteries",
    "build_note": "radio + solaire/batterie"
   }
  },
  {
   "id": "SOL-115",
   "name": "Cob / monolithic earthen wall construction",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Thick, load-bearing wall of clay/sand/fibre mix; high thermal mass, minimal purchased material, slow to build and needs weather protection during construction.",
   "slug": "cob-monolithic-earthen-wall-construction",
   "slug_fr": "mur-porteur-en-terre-monolithique",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "hand-built earthen walls, slow",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Several hundred years if roof, foundation, and plaster are kept in good condition (documented cob buildings in Devon, UK date from the 14th-19th centuries)",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.thiscobhouse.com/how-to-build-cob-walls-for-beginners/",
     "lang": "en"
    },
    {
     "url": "https://amaco.org/bauge/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Rammed earth/cob/CEB/adobe durability literature (ScienceDirect 20-yr rammed-earth weathering study; This Cob House; Colorado Earth FAQ)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Mur porteur en terre monolithique (bauge)",
    "description": "Mur porteur épais en mélange terre/sable/fibres ; forte inertie thermique, très peu de matière achetée, construction lente nécessitant une protection contre les intempéries pendant le chantier.",
    "lifespan": "Plusieurs siècles si la toiture, les fondations et l’enduit sont maintenus en bon état (des bâtiments en bauge documentés dans le Devon, Royaume-Uni, datent du 14e au 19e siècle)",
    "build_note": "murs en terre montés à la main, lent",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-116",
   "name": "Compressed earth block (CEB) walls",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Machine- or hand-pressed earth blocks laid like masonry; faster to build than cob, similarly low embodied energy.",
   "slug": "compressed-earth-block-walls",
   "slug_fr": "murs-en-blocs-de-terre-comprimee",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 1,
    "build_note": "pressed blocks, laid like masonry",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Centuries with a well-designed mix, per manufacturer/practitioner durability claims",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Rammed earth/cob/CEB/adobe durability literature (ScienceDirect 20-yr rammed-earth weathering study; This Cob House; Colorado Earth FAQ)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Murs en blocs de terre comprimée (BTC)",
    "description": "Blocs de terre pressés à la machine ou à la main, montés comme de la maçonnerie ; plus rapide à construire que la bauge, énergie grise tout aussi faible.",
    "lifespan": "Des siècles avec un mélange bien conçu, selon les affirmations de durabilité des fabricants et praticiens",
    "build_note": "blocs pressés, montés comme de la maçonnerie",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-117",
   "name": "Low-profile hip roof form",
   "subfunction_id": "FN-01.3",
   "function_id": "FN-01",
   "summary": "Four sloped sides rather than a gable reduce the surface area directly exposed to wind uplift.",
   "slug": "low-profile-hip-roof-form",
   "slug_fr": "toiture-en-croupe-a-faible-pente",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "roof geometry, no added parts",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches roof structure lifespan (a form choice, not a separate material)",
   "embodied_carbon": "low",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Toiture en croupe à faible pente",
    "description": "Quatre pans inclinés plutôt qu’un pignon réduisent la surface directement exposée au soulèvement par le vent.",
    "lifespan": "Correspond à la durée de vie de la charpente (un choix de forme, pas un matériau séparé)",
    "build_note": "géométrie de toiture, aucune pièce ajoutée",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-118",
   "name": "Defensible space / vegetation management",
   "subfunction_id": "FN-01.4",
   "function_id": "FN-01",
   "summary": "Clearing and managing a vegetation buffer around the structure to slow fire spread, distinct from internal compartmentalisation.",
   "slug": "defensible-space-vegetation-management",
   "slug_fr": "espace-defendable-et-gestion-de-la-vegetation",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "clearing + planting, no build",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Not applicable, an ongoing vegetation-management practice (seasonal), not a physical component",
   "embodied_carbon": "low",
   "footprint": "None",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Espace défendable et gestion de la végétation",
    "description": "Débroussaillage et gestion d’une zone tampon végétale autour de la structure pour ralentir la propagation d’un feu, distinct du compartimentage intérieur.",
    "lifespan": "Non applicable, une pratique continue de gestion de la végétation (saisonnière), pas un composant physique",
    "build_note": "débroussaillage + plantation, aucune construction"
   }
  },
  {
   "id": "SOL-119",
   "name": "Motion-activated exterior lighting",
   "subfunction_id": "FN-01.8",
   "function_id": "FN-01",
   "summary": "Low-power trigger lighting as a deterrent and for safe approach at night.",
   "slug": "motion-activated-exterior-lighting",
   "slug_fr": "eclairage-exterieur-a-detection-de-mouvement",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "wire a sensor fixture",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "LED fixture + motion sensor: 10-15 years typical",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General motion-lighting industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Éclairage extérieur à détection de mouvement",
    "description": "Éclairage à déclenchement basse consommation, dissuasif et utile pour une approche sûre de nuit.",
    "lifespan": "Luminaire LED + détecteur de mouvement : 10-15 ans typiquement",
    "build_note": "câblage d’un détecteur"
   }
  },
  {
   "id": "SOL-120",
   "name": "Vegetated buffer strips / rain garden",
   "subfunction_id": "FN-01.9",
   "function_id": "FN-01",
   "summary": "Planted depressions that slow and infiltrate runoff rather than just channel it away, complementing swales and drains.",
   "slug": "vegetated-buffer-strips-rain-garden",
   "slug_fr": "bandes-vegetalisees-et-jardin-de-pluie",
   "inputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "outputs": [
    {
     "io": "IO-08",
     "name": "Rainwater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "dig a basin + plant",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Effectively indefinite as landform/planting; specific plants need normal garden-scale renewal over 10-20 year cycles",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Site area available for the buffer strip/rain garden depression",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Bandes végétalisées et jardin de pluie",
    "description": "Dépressions plantées qui ralentissent et infiltrent le ruissellement plutôt que de simplement le canaliser, en complément des noues et drains.",
    "lifespan": "Pratiquement indéfini en tant que modelé/plantation ; certaines plantes nécessitent un renouvellement normal à l’échelle du jardin sur des cycles de 10-20 ans",
    "site_prerequisites": "Surface de terrain disponible pour la dépression de la bande végétalisée ou du jardin de pluie",
    "build_note": "creusement d’un bassin + plantation"
   }
  },
  {
   "id": "SOL-121",
   "name": "Cork insulation",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Expanded cork board; naturally rot- and pest-resistant and renewable, but higher embodied energy/cost than straw or wool options.",
   "slug": "cork-insulation",
   "slug_fr": "isolation-en-liege",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "cut-and-fit boards",
    "efficiency_note": "low bio-based lambda, good R per thickness"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "40-50+ years, naturally rot- and pest-resistant",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Natural-fibre insulation lifespan sources (SheepWool Insulation FAQ; Engineer Fix; ResearchGate natural-fibre insulation LCA review)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Isolation en liège",
    "description": "Panneau de liège expansé ; naturellement résistant à la pourriture et aux nuisibles, renouvelable, mais énergie grise et coût plus élevés que la paille ou la laine.",
    "lifespan": "40 ans ou plus, naturellement résistant à la pourriture et aux nuisibles",
    "build_note": "panneaux découpés et posés",
    "efficiency_note": "faible lambda biosourcé, bonne résistance R par épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-122",
   "name": "Light straw-clay infill (torchis leger)",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Straw coated in a clay slip, packed around a frame; combines insulation with some thermal mass and vapour permeability.",
   "slug": "light-straw-clay-infill",
   "slug_fr": "remplissage-en-torchis-leger",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 4,
    "build_skill": "Intermediate",
    "burden": 1,
    "build_note": "packed into forms",
    "efficiency_note": "highest lambda, needs the most thickness"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "50-100 years if kept dry, similar moisture-dependency to straw bale",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "Reliable moisture management, same caveat as straw bale",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://theyearofmud.com/2016/09/28/light-clay-straw-wall-building/",
     "lang": "en"
    },
    {
     "url": "https://faisons-le-mur.com/terre-paille/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Natural-fibre insulation lifespan sources (SheepWool Insulation FAQ; Engineer Fix; ResearchGate natural-fibre insulation LCA review)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Remplissage en torchis léger (terre-paille)",
    "description": "Paille enrobée d’une barbotine d’argile, tassée autour d’une ossature ; combine isolation, une part d’inertie thermique et perméabilité à la vapeur d’eau.",
    "lifespan": "50 à 100 ans au sec, même dépendance à l’humidité que la botte de paille",
    "site_prerequisites": "Gestion fiable de l’humidité, même réserve que la botte de paille",
    "build_note": "tassé dans des coffrages",
    "efficiency_note": "lambda le plus élevé, nécessite le plus d’épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-123",
   "name": "Secondary glazing (retrofit inner pane)",
   "subfunction_id": "FN-02.6",
   "function_id": "FN-02",
   "summary": "Adds a second pane inside an existing window rather than replacing it; relevant if starting from an existing building.",
   "slug": "secondary-glazing",
   "slug_fr": "survitrage",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "add an inner pane to existing",
    "efficiency_note": "adds a second pane to an existing window, better than single, short of a new unit"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30 years, same sealed/hardware failure modes as primary glazing",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "An existing window to retrofit (relevant only if starting from an existing building)",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Glazing industry lifespan sources (Glass & Glazing Federation guidance via Everest/Gowercroft consumer glazing sites)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Survitrage (vitre intérieure ajoutée)",
    "description": "Ajoute une seconde vitre à l’intérieur d’une fenêtre existante plutôt que de la remplacer ; pertinent en rénovation sur bâti existant.",
    "lifespan": "20 à 30 ans, mêmes modes de défaillance (joint, quincaillerie) que le vitrage principal",
    "site_prerequisites": "Une fenêtre existante à équiper (pertinent seulement en partant d’un bâtiment existant)",
    "build_note": "ajout d’une vitre intérieure à l’existant",
    "efficiency_note": "ajoute une seconde vitre à une fenêtre existante, mieux que le simple vitrage, en deçà d’une unité neuve",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-124",
   "name": "Insulated operable shutters",
   "subfunction_id": "FN-02.6",
   "function_id": "FN-02",
   "summary": "Removable or foldable insulated panels over glazing at night, cutting heat loss when the sun isn't providing gain anyway.",
   "slug": "insulated-operable-shutters",
   "slug_fr": "volets-isolants-man-uvrables",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 4,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "build/fit insulated panels",
    "efficiency_note": "night-only: cuts loss when closed, nothing when open"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30 years for hardware/hinges; insulation core inside the panel matches the insulation material used",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General exterior shutter-hardware industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Volets isolants manœuvrables",
    "description": "Panneaux isolants amovibles ou pliables posés devant le vitrage la nuit, réduisant les pertes de chaleur quand le soleil n’apporte de toute façon rien.",
    "lifespan": "20 à 30 ans pour la quincaillerie/charnières ; l’âme isolante dans le panneau correspond au matériau isolant utilisé",
    "build_note": "fabrication/pose de panneaux isolants",
    "efficiency_note": "nocturne seulement : réduit les pertes fermé, aucun effet ouvert",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-125",
   "name": "Water-based thermal mass (drum / water wall)",
   "subfunction_id": "FN-02.9",
   "function_id": "FN-02",
   "summary": "Water-filled containers as thermal mass; higher heat capacity per volume than masonry, but needs a sealed, leak-proof enclosure.",
   "slug": "water-based-thermal-mass",
   "slug_fr": "inertie-thermique-par-l-eau",
   "inputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 1,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "sealed water containers",
    "efficiency_note": "water stores roughly twice the heat of masonry per unit volume"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30 years for the containment (drums/tanks) before corrosion or UV degradation of plastic components; water itself doesn't wear out",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "Continuous process",
   "site_prerequisites": "A sealed, leak-proof, structurally adequate location (water thermal mass is heavy)",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General water-wall/thermal-mass container industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Inertie thermique par l’eau (fûts / mur d’eau)",
    "description": "Récipients remplis d’eau servant d’inertie thermique ; capacité thermique par volume supérieure à la maçonnerie, mais nécessite une enceinte étanche et sans fuite.",
    "lifespan": "20 à 30 ans pour le contenant (fûts/réservoirs) avant corrosion ou dégradation UV des composants plastiques ; l’eau elle-même ne s’use pas",
    "site_prerequisites": "Un emplacement étanche, sans fuite et structurellement adapté (l’inertie thermique par l’eau est lourde)",
    "build_note": "récipients d’eau étanches",
    "efficiency_note": "l’eau stocke environ deux fois plus de chaleur que la maçonnerie par volume"
   }
  },
  {
   "id": "SOL-126",
   "name": "Rocket mass heater",
   "subfunction_id": "FN-02.10",
   "function_id": "FN-02",
   "summary": "High-efficiency biomass combustion chamber feeding a large thermal-mass bench that slow-releases heat over many hours from a short, hot burn.",
   "slug": "rocket-mass-heater",
   "slug_fr": "poele-de-masse",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "firebrick core + cob bench",
    "efficiency_note": "high combustion efficiency, and the mass stores the burn for slow release"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "20-30+ years for the combustion core and thermal-mass bench if built to a proven design; firebrick/refractory components may need earlier replacement",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://outils-autonomie.fr/poele-de-masse/",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Rocket_Stove_Plancha_/_Po%C3%AAle_de_masse",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Wood stove lifespan industry/practitioner sources (Hearth.com forums; permies.com heater-lifespan wiki; Fireplace Universe)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Poêle de masse (rocket)",
    "description": "Chambre de combustion biomasse à haut rendement alimentant un long banc à forte inertie qui restitue lentement la chaleur sur plusieurs heures à partir d’une flambée courte et intense.",
    "lifespan": "20 ans ou plus pour le cœur de combustion et le banc à inertie thermique si construit selon une conception éprouvée ; les composants réfractaires peuvent nécessiter un remplacement plus précoce",
    "build_note": "cœur en briques réfractaires + banc en bauge",
    "efficiency_note": "haute efficacité de combustion, et la masse stocke la flambée pour une restitution lente",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-127",
   "name": "Evaporative cooling",
   "subfunction_id": "FN-02.11",
   "function_id": "FN-02",
   "summary": "Cools air via water evaporation; effectiveness depends on low ambient humidity, a real limitation in Normandy's oceanic climate, flagged rather than assumed to work well here.",
   "slug": "evaporative-cooling",
   "slug_fr": "rafraichissement-evaporatif",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-24",
     "name": "Cooling"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "wetted pad + fan",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "10-20 years for a mechanical evaporative cooler unit (pads need replacement every 1-3 years)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Low-humidity climate for real effectiveness, flagged elsewhere as a limitation for Normandy's oceanic climate",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General evaporative-cooler industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Rafraîchissement évaporatif",
    "description": "Rafraîchit l’air par évaporation d’eau ; l’efficacité dépend d’une faible humidité ambiante, une vraie limite dans le climat océanique normand, signalée plutôt que supposée efficace ici.",
    "lifespan": "10 à 20 ans pour une unité mécanique de rafraîchissement évaporatif (les tampons nécessitent un remplacement tous les 1-3 ans)",
    "site_prerequisites": "Climat à faible humidité pour une réelle efficacité, signalé ailleurs comme une limite pour le climat océanique normand",
    "build_note": "tampon humidifié + ventilateur"
   }
  },
  {
   "id": "SOL-128",
   "name": "Decentralised single-room heat-recovery ventilators",
   "subfunction_id": "FN-03.2",
   "function_id": "FN-03",
   "summary": "One small unit per room instead of a central ducted system; easier to repair or replace individually if one fails.",
   "slug": "decentralised-single-room-heat-recovery-ventilators",
   "slug_fr": "vmc-double-flux-decentralisee-par-piece",
   "inputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    },
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    },
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 7,
    "build_note": "wall-through units, plug-in",
    "efficiency_note": "per-room cores recover ~70-80%, less than central"
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Significant",
   "cost": "medium",
   "lifespan": "15-25 years for the core unit; filters need replacement every 3-6 months, same profile as central MVHR",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Dwellings must have general and permanent ventilation (arrete du 24 mars 1982, modifie). Mechanical ventilation is the usual way of meeting it in an airtight building.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "MVHR and small-wind-turbine lifespan industry sources (Envirovent, Ventsolve, Automaxx, RenewableEnergyHub)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "VMC double flux décentralisée par pièce",
    "description": "Une petite unité par pièce plutôt qu’un système centralisé à gaines ; plus facile à réparer ou remplacer individuellement en cas de panne.",
    "lifespan": "15 à 25 ans pour l’unité centrale ; les filtres nécessitent un remplacement tous les 3-6 mois, même profil que la VMC double flux centralisée",
    "build_note": "unités traversant le mur, branchement direct",
    "efficiency_note": "les cœurs par pièce récupèrent environ 70-80%, moins que le centralisé",
    "regulation_fr": "Les logements doivent disposer d’une ventilation générale et permanente (arrêté du 24 mars 1982 modifié). La ventilation mécanique est le moyen habituel d’y répondre dans un bâtiment étanche à l’air."
   }
  },
  {
   "id": "SOL-129",
   "name": "Solar / light tubes",
   "subfunction_id": "FN-04.4",
   "function_id": "FN-04",
   "summary": "Reflective tube channels daylight from a roof-mounted dome into a room with no exterior wall access.",
   "slug": "solar-light-tubes",
   "slug_fr": "puits-ou-tubes-de-lumiere",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    }
   ],
   "outputs": [
    {
     "io": "IO-23",
     "name": "Daylight"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "roof dome + reflective tube",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "20-30 years for the reflective tube and dome (UV degradation of the dome plastic is the main failure mode)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Roof access for the collector dome, and a vertical run to the ceiling penetration below",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General solar/light-tube manufacturer durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Puits ou tubes de lumière",
    "description": "Un tube réfléchissant achemine la lumière du jour depuis un dôme en toiture vers une pièce sans accès à un mur extérieur.",
    "lifespan": "20 à 30 ans pour le tube réfléchissant et le dôme (la dégradation UV du plastique du dôme est le principal mode de défaillance)",
    "site_prerequisites": "Accès à la toiture pour le dôme du capteur, et un tracé vertical jusqu’à la traversée de plafond en dessous",
    "build_note": "dôme de toiture + tube réfléchissant"
   }
  },
  {
   "id": "SOL-130",
   "name": "Absorptive interior finishes (textiles, wood-fibre panels)",
   "subfunction_id": "FN-05.2",
   "function_id": "FN-05",
   "summary": "Reduces reverberation and internal noise transmission, complementing mass-based approaches rather than replacing them.",
   "slug": "absorptive-interior-finishes",
   "slug_fr": "finitions-interieures-absorbantes",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "fit panels / textiles",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "15-25 years for textile/wood-fibre acoustic panels before recovering or replacement is needed",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General acoustic-treatment industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Finitions intérieures absorbantes (textiles, panneaux fibre de bois)",
    "description": "Réduit la réverbération et la transmission de bruit intérieur, en complément des approches par la masse plutôt qu’en remplacement.",
    "lifespan": "15 à 25 ans pour des panneaux acoustiques en textile ou fibre de bois avant qu’un recouvrement ou remplacement ne soit nécessaire",
    "build_note": "pose de panneaux ou textiles"
   }
  },
  {
   "id": "SOL-131",
   "name": "Bio-sand filter",
   "subfunction_id": "FN-06.3",
   "function_id": "FN-06",
   "summary": "Slow sand filtration with a living biological layer at the surface; effective and needs no electricity, but requires a maturation period and careful maintenance.",
   "slug": "bio-sand-filter",
   "slug_fr": "filtre-a-sable-biologique",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "media grading + concrete",
    "efficiency_note": "microbial only, no chemical"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "10-20+ years for the tank/media structure; the biological (schmutzdecke) layer needs weeks to re-mature if disturbed, not replaced on a schedule",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Water_-_Biosand_Filter/en",
     "lang": "en"
    },
    {
     "url": "https://outils-autonomie.fr/filtre-a-eau-a-gravite/",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "General bio-sand-filter practitioner/NGO durability consensus (CAWST design manuals)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtre à sable biologique",
    "description": "Filtration lente sur sable avec une couche biologique vivante en surface ; efficace et ne nécessite aucune électricité, mais requiert une période de maturation et un entretien soigneux.",
    "lifespan": "10 à 20 ans ou plus pour la structure du réservoir/media ; la couche biologique (schmutzdecke) nécessite des semaines pour se re-maturer si perturbée, elle n’est pas remplacée sur un calendrier",
    "build_note": "granulométrie du media + béton",
    "efficiency_note": "microbien uniquement, aucun chimique"
   }
  },
  {
   "id": "SOL-132",
   "name": "Batch solar water heater (integrated collector-storage)",
   "subfunction_id": "FN-06.5",
   "function_id": "FN-06",
   "summary": "A dark tank inside a glazed, insulated box; simpler than a thermosiphon system, at some cost in overnight heat retention.",
   "slug": "batch-solar-water-heater",
   "slug_fr": "chauffe-eau-solaire-monobloc",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "dark tank in a glazed box",
    "efficiency_note": "solar, but the store is the exposed collector, so overnight losses are higher"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "15-20 years, somewhat shorter than a thermosiphon system since the tank itself is the exposed collector",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A south-facing roof or ground area for the integrated tank/box",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Solar thermal water heater industry durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Chauffe-eau solaire monobloc (capteur-stockage intégré)",
    "description": "Un réservoir sombre dans un caisson vitré isolé ; plus simple qu’un système à thermosiphon, au prix d’une moins bonne rétention de chaleur la nuit.",
    "lifespan": "15 à 20 ans, un peu plus court qu’un système à thermosiphon puisque le réservoir lui-même est le capteur exposé",
    "site_prerequisites": "Une surface de toiture ou de terrain orientée sud pour le réservoir/caisson intégré",
    "build_note": "réservoir sombre dans un caisson vitré",
    "efficiency_note": "solaire, mais le réservoir est aussi le capteur exposé, donc pertes nocturnes plus élevées"
   }
  },
  {
   "id": "SOL-133",
   "name": "Greywater heat recovery (drain water heat exchanger)",
   "subfunction_id": "FN-07.2",
   "function_id": "FN-07",
   "summary": "Passive heat exchanger around a shower/sink drain preheats incoming cold water using outgoing warm greywater, no pump, feeds directly into domestic water heating.",
   "slug": "greywater-heat-recovery",
   "slug_fr": "recuperation-de-chaleur-sur-eaux-grises",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    },
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "drain heat-exchanger, plumbing",
    "efficiency_note": "recovers heat rather than treating water, not on the treatment scale"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "20-30+ years, a passive copper/stainless heat exchanger with no moving parts, one of the longer-lived items in the water-heating cluster",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "A vertical drain run accessible for the exchanger to wrap or replace a section of pipe",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General drain-water-heat-recovery manufacturer durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Récupération de chaleur sur eaux grises (échangeur de vidange)",
    "description": "Échangeur de chaleur passif autour d’une évacuation de douche ou d’évier qui préchauffe l’eau froide entrante grâce aux eaux grises chaudes sortantes, aucune pompe, alimente directement la production d’eau chaude sanitaire.",
    "lifespan": "20 ans ou plus, un échangeur passif en cuivre ou inox sans pièce mobile, l’un des éléments les plus durables du groupe des solutions de chauffage d’eau",
    "site_prerequisites": "Une évacuation verticale accessible permettant à l’échangeur d’envelopper ou de remplacer une section de tuyau",
    "build_note": "échangeur sur évacuation, plomberie",
    "efficiency_note": "récupère de la chaleur plutôt que de traiter l’eau, hors échelle de traitement"
   }
  },
  {
   "id": "SOL-134",
   "name": "Urine-diverting dry toilet (UDDT)",
   "subfunction_id": "FN-08.1",
   "function_id": "FN-08",
   "summary": "A dry toilet variant: still no water use and no blackwater stream, with urine separated from solids at the source to reduce odor and moisture and let each stream be handled separately (urine is a fast-acting, near-pathogen-free fertilizer once diluted; solids still need the full extended pathogen-safe curing step before use).",
   "slug": "urine-diverting-dry-toilet",
   "slug_fr": "toilette-seche-a-separation-d-urine",
   "inputs": [],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    },
    {
     "io": "IO-15",
     "name": "Nutrients"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "diverting seat + two containers",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "15-20 years for the unit body, same range as the composting toilet; the urine-diverting insert is a smaller, earlier-replaced part",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Dry toilets are explicitly permitted (arrete du 7 septembre 2009 modifie) but must be declared to the SPANC, and byproducts must be composted on the property without any discharge or nuisance to neighbours.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Toilettes_s%C3%A8ches_%C3%A0_s%C3%A9paration_d%27urine/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Toilettes_s%C3%A8ches_%C3%A0_s%C3%A9paration_d%27urine/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General composting-toilet industry/practitioner durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Toilette sèche à séparation d’urine",
    "description": "Une variante de toilette sèche : toujours aucune eau utilisée et aucun flux d’eaux noires, avec séparation de l’urine à la source pour réduire odeur et humidité et permettre de traiter chaque flux séparément (l’urine est un engrais rapide et quasi sans pathogènes une fois diluée ; les matières solides nécessitent toujours l’étape complète de maturation sanitaire prolongée avant usage).",
    "lifespan": "15 à 20 ans pour le corps de l’unité, même plage que la toilette sèche à compost ; l’insert de séparation d’urine est une pièce plus petite, remplacée plus tôt",
    "build_note": "siège à séparation + deux contenants",
    "regulation_fr": "Les toilettes sèches sont explicitement autorisées (arrêté du 7 septembre 2009 modifié) mais doivent être déclarées au SPANC, et les sous-produits doivent être compostés sur la propriété sans aucun rejet ni nuisance pour le voisinage."
   }
  },
  {
   "id": "SOL-135",
   "name": "Pedal / hand-crank generator",
   "subfunction_id": "FN-09.1",
   "function_id": "FN-09",
   "summary": "Very low output, but a genuinely zero-fuel, zero-sun/wind-dependent backup for small emergency loads.",
   "slug": "pedal-hand-crank-generator",
   "slug_fr": "generateur-a-pedale-ou-a-manivelle",
   "inputs": [
    {
     "io": "IO-21",
     "name": "Mechanical Energy"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "pedal rig + small generator",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "15-25 years for a simple mechanical hand-crank generator with minimal electronics",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Chargeur_solaire_pour_un_accumulateur_LiFePO4",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General manual-generator practitioner durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Générateur à pédale ou à manivelle",
    "description": "Rendement très faible, mais un secours véritablement sans combustible et indépendant du soleil ou du vent pour de petites charges d’urgence.",
    "lifespan": "15 à 25 ans pour un générateur mécanique simple à manivelle avec une électronique minimale",
    "build_note": "bâti à pédale + petit générateur"
   }
  },
  {
   "id": "SOL-136",
   "name": "Rocket stove cooker",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Small-batch, high-efficiency wood-fuelled cooking stove; sized for cooking rather than space heating, distinct from a rocket mass heater.",
   "slug": "rocket-stove-cooker",
   "slug_fr": "fourneau-rocket",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 4,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 5,
    "build_note": "firebrick / metal build",
    "efficiency_note": "high combustion efficiency, little fuel"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "10-20 years for a well-built metal rocket stove cooker, shorter than a full rocket mass heater given lighter-gauge materials typical of a portable cooker",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.youtube.com/watch?v=ywljr9RKExQ",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Rocket_stove",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Outils de l'Autonomie / Low-tech Lab practitioner build reports",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Fourneau rocket",
    "description": "Fourneau à bois à haut rendement pour petites quantités ; dimensionné pour la cuisson plutôt que le chauffage, distinct d’un poêle de masse rocket.",
    "lifespan": "10 à 20 ans pour un fourneau rocket métallique bien construit, plus court qu’un poêle de masse rocket complet vu les matériaux généralement plus légers d’un fourneau portable",
    "build_note": "construction en briques réfractaires ou métal",
    "efficiency_note": "haute efficacité de combustion, peu de combustible",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-137",
   "name": "Loft / mezzanine sleeping space",
   "subfunction_id": "FN-12.1",
   "function_id": "FN-12",
   "summary": "Raises the sleeping platform to free floor area below, a concrete spatial technique for the smaller-private-space bias, flagged as a reconsideration of this sub-function (previously left untreated as a pure sizing parameter).",
   "slug": "loft-mezzanine-sleeping-space",
   "slug_fr": "espace-de-sommeil-en-mezzanine",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "medium",
   "lifespan": "Matches structure lifespan (a spatial/layout technique using standard framing, not a separate material)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "Ceiling height sufficient for a mezzanine level",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Espace de sommeil en mezzanine",
    "description": "Surélève la surface de couchage pour libérer la surface au sol en dessous, une technique spatiale concrète pour le biais vers un espace privé plus petit, signalée comme un réexamen de cette sous-fonction (auparavant laissée de côté comme simple paramètre de dimensionnement).",
    "lifespan": "Correspond à la durée de vie de la structure (une technique spatiale/de plan utilisant une ossature standard, pas un matériau séparé)",
    "site_prerequisites": "Hauteur sous plafond suffisante pour un niveau en mezzanine"
   }
  },
  {
   "id": "SOL-138",
   "name": "Sacrificial / replaceable wear components",
   "subfunction_id": "FN-13.5",
   "function_id": "FN-13",
   "summary": "Designing the cheapest, most exposed part (sill boards, splash boards at grade) to be the one that wears and gets replaced, rather than the structure behind it.",
   "slug": "sacrificial-replaceable-wear-components",
   "slug_fr": "pieces-d-usure-sacrificielles-et-remplacables",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "detail replaceable wear parts",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Deliberately short and variable by design, the point is these parts are meant to wear out and be replaced (5-15 years typical for exposed sill/splash boards) so the structure behind them doesn't have to",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Pièces d’usure sacrificielles et remplaçables",
    "description": "Conçoit la pièce la moins chère et la plus exposée (bardage d’allège, plinthes basses) pour qu’elle soit celle qui s’use et se remplace, plutôt que la structure derrière elle.",
    "lifespan": "Délibérément courte et variable par conception, l’idée est que ces pièces sont destinées à s’user et à être remplacées (5-15 ans typiquement pour des bardages d’allège ou plinthes exposés) pour que la structure derrière elles n’ait pas à le faire",
    "build_note": "détail des pièces d’usure remplaçables"
   }
  },
  {
   "id": "SOL-139",
   "name": "Biochar production (pyrolysis of woody waste)",
   "subfunction_id": "FN-14.2",
   "function_id": "FN-14",
   "summary": "Charring woody waste in a low-oxygen process yields a stable, long-lived carbon material; production is in scope now even though its main use (soil amendment) waits on food production.",
   "slug": "biochar-production",
   "slug_fr": "production-de-biochar",
   "inputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    }
   ],
   "outputs": [
    {
     "io": "IO-28",
     "name": "Biochar"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "build a retort / kiln",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Not applicable, a production process; the kiln/retort structure itself lasts 10-20 years depending on construction",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Four_à_Biochar",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/L'amendement_au_Biocharbon",
     "lang": null
    }
   ],
   "sources": [],
   "fr": {
    "name": "Production de biochar (pyrolyse de déchets ligneux)",
    "description": "La carbonisation de déchets ligneux en atmosphère pauvre en oxygène produit une matière carbonée stable et durable ; la production est dans le périmètre dès maintenant même si son usage principal (amendement du sol) attend le retour de la production alimentaire.",
    "lifespan": "Non applicable, un procédé de production ; la structure du four/de la cornue elle-même dure 10-20 ans selon la construction",
    "build_note": "construction d’une cornue ou d’un four"
   }
  },
  {
   "id": "SOL-140",
   "name": "Local mesh / long-range radio network (LoRa)",
   "subfunction_id": "FN-15.2",
   "function_id": "FN-15",
   "summary": "Short-range, low-power off-grid data links between buildings or sensors on the property; not an internet substitute, but resilient to a wider network outage.",
   "slug": "local-mesh-long-range-radio-network",
   "slug_fr": "reseau-radio-maille-longue-portee",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "nodes + antennas + config",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "10-15 years for LoRa radio hardware (low-power, few moving parts, but electronics still age out)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Line-of-sight or acceptable signal path between nodes on the property",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General LoRa/mesh-radio hardware industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Réseau radio maillé longue portée (LoRa)",
    "description": "Liaisons de données courte portée et basse consommation, hors réseau, entre bâtiments ou capteurs de la propriété ; ne remplace pas internet, mais résiste à une coupure de réseau plus large.",
    "lifespan": "10 à 15 ans pour le matériel radio LoRa (basse consommation, peu de pièces mobiles, mais l’électronique vieillit tout de même)",
    "site_prerequisites": "Ligne de vue ou trajet de signal acceptable entre les nœuds sur la propriété",
    "build_note": "nœuds + antennes + configuration"
   }
  },
  {
   "id": "SOL-141",
   "name": "Rammed earth (pise) wall construction",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Moist subsoil compacted in temporary formwork, layer by layer, into a dense monolithic wall. Excellent thermal mass (a 30cm wall delays heat transfer by 8-9 hours) but genuinely poor insulation value on its own, needs supplementary insulation, ideally on the interior face, to perform thermally rather than just thermally-massively.",
   "slug": "rammed-earth-wall-construction",
   "slug_fr": "mur-en-pise",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "formwork + tamping, labour-heavy",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "60->200 years, unstabilised rammed earth has a documented extrapolated lifetime beyond 60 years, with examples over 200 years old",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://www.zestarchitecture.com/learning-to-design-and-build-a-rammed-earth-wall/",
     "lang": "en"
    },
    {
     "url": "https://www.architectureterrebois.fr/comment-monter-un-mur-en-pise/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Rammed earth durability literature (ScienceDirect 20-yr rammed-earth weathering study)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Mur en pisé",
    "description": "Sous-sol humide compacté par couches successives dans un coffrage temporaire pour former un mur monolithique dense. Excellente inertie thermique (un mur de 30cm retarde le transfert de chaleur de 8 à 9 heures) mais valeur isolante réellement faible seule, nécessite une isolation complémentaire, idéalement en face intérieure, pour être performante thermiquement et pas seulement massive.",
    "lifespan": "60 à plus de 200 ans, le pisé non stabilisé a une durée de vie documentée extrapolée au-delà de 60 ans, avec des exemples de plus de 200 ans",
    "build_note": "coffrage + damage, main-d’œuvre importante",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-142",
   "name": "Adobe / mudbrick walls",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Pre-formed, sun-dried earth blocks assembled with earth mortar, distinct from cob (built up directly, no blocks or forms) and from CEB (mechanically compressed rather than simply sun-dried).",
   "slug": "adobe-mudbrick-walls",
   "slug_fr": "murs-en-adobe",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "sun-dried blocks, earth mortar",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Centuries with proper roof/foundation protection from moisture, per practitioner and heritage-building sources",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://pubs.nmsu.edu/_g/G521/index.html",
     "lang": "en"
    },
    {
     "url": "https://blog.geomaterio.fr/pratiquer/tutoriel-realiser-des-briques-de-terre-crue-adobes/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Cob/adobe durability literature (This Cob House; Colorado Earth FAQ)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Murs en adobe (brique de terre crue)",
    "description": "Blocs de terre préformés et séchés au soleil, assemblés au mortier de terre, distincts de la bauge (montée directement, sans blocs ni moules) et du BTC (compressé mécaniquement plutôt que simplement séché au soleil).",
    "lifespan": "Des siècles avec une protection adéquate de la toiture et des fondations contre l’humidité, selon les sources praticiens et bâtiments patrimoniaux",
    "build_note": "blocs séchés au soleil, mortier de terre",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-143",
   "name": "Compressed hemp block (dry-molded, distinct from cast hempcrete)",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Dry-molded, air-dried hemp shiv and lime block laid like masonry as infill between a post-and-beam frame, distinct from cast/sprayed hempcrete infill already in this catalog. Roughly a quarter the production energy of fired brick or cellular concrete; thermal conductivity around 0.067 W/mK.",
   "slug": "compressed-hemp-block",
   "slug_fr": "bloc-de-chanvre-comprime",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Intermediate",
    "burden": 1,
    "build_note": "laid like blocks",
    "efficiency_note": "moderate lambda, more thickness for same R"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Similar range to cast hempcrete, 100+ years if kept dry, same binder chemistry, different forming method",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Hempcrete durability literature (Encyclopedia MDPI hempcrete properties entry)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Bloc de chanvre comprimé (moulé à sec)",
    "description": "Bloc de chènevotte et chaux moulé à sec et séché à l’air, posé comme de la maçonnerie en remplissage entre une ossature poteaux-poutres, distinct du remplissage en béton de chanvre coulé ou projeté déjà présent dans ce catalogue. Environ un quart de l’énergie de production de la brique cuite ou du béton cellulaire ; conductivité thermique autour de 0,067 W/mK.",
    "lifespan": "Plage similaire au béton de chanvre coulé, 100 ans ou plus au sec, même chimie de liant, méthode de mise en forme différente",
    "build_note": "posé comme des blocs",
    "efficiency_note": "lambda modéré, plus d’épaisseur pour une même résistance R",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-144",
   "name": "Superadobe (earthbag construction)",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "Sandbags or long tubes filled with tamped earth, coiled course by course into a monolithic wall or dome. Distinct from adobe brick, cob, rammed earth, and CEB, minimal formwork, associated with Cal-Earth/Nader Khalili's work.",
   "slug": "superadobe",
   "slug_fr": "superadobe",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "earth-filled bags, coiled courses",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "50-100+ years for a well-built earthbag structure with adequate plaster protection, per Cal-Earth/practitioner sources",
   "embodied_carbon": "low",
   "footprint": "high",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Superadobe",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General earthbag/superadobe practitioner durability consensus (Cal-Earth published guidance)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Superadobe (construction en sacs de terre)",
    "description": "Sacs de sable ou longs boudins remplis de terre damée, enroulés couche par couche en un mur ou un dôme monolithique. Distinct de l’adobe, de la bauge, du pisé et du BTC, coffrage minimal, associé aux travaux de Cal-Earth et Nader Khalili.",
    "lifespan": "50 ans ou plus pour une structure en sacs de terre bien construite avec une protection d’enduit adéquate, selon les sources Cal-Earth et praticiens",
    "build_note": "sacs remplis de terre, montés en spirale",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-145",
   "name": "GREB straw wall technique",
   "subfunction_id": "FN-01.1",
   "function_id": "FN-01",
   "summary": "A double timber frame filled with loose straw and coated in a light clay-lime slurry ('mezcla'), poured/packed in place rather than built from blocks or bales. Named technique (Canadian origin, adopted in France via the APPROCHE-Paille association) combining structure, insulation, and finish in one wall system.",
   "slug": "greb-straw-wall-technique",
   "slug_fr": "technique-de-mur-en-paille-greb",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 1,
    "build_note": "double frame + straw + slurry",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches straw-bale-equivalent lifespan, 50-100 years if kept dry, same moisture-dependency",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "Reliable moisture management, same caveat as other straw techniques",
   "new_build_only": true,
   "regulation_fr": "Part of the structure or footprint: covered by the building permit (permis de construire) for a new dwelling. Rural sites are additionally constrained by the commune's PLU zoning, outside a constructible zone, a new dwelling is generally refused.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Mur_en_paille_solide_et_facile/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "APPROCHE-Paille / GREB practitioner durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Technique de mur en paille GREB",
    "description": "Une double ossature bois remplie de paille en vrac et enduite d’une barbotine légère chaux-argile (« mezcla »), coulée ou tassée en place plutôt que montée en blocs ou en bottes. Technique nommée (d’origine canadienne, adoptée en France via l’association APPROCHE-Paille) combinant structure, isolation et finition en un seul système de mur.",
    "lifespan": "Correspond à la durée de vie équivalente de la botte de paille, 50-100 ans au sec, même dépendance à l’humidité",
    "site_prerequisites": "Gestion fiable de l’humidité, même réserve que les autres techniques en paille",
    "build_note": "double ossature + paille + barbotine",
    "regulation_fr": "Élément de structure ou d’emprise au sol : soumis au permis de construire pour un logement neuf. Les terrains ruraux sont en outre contraints par le zonage PLU de la commune, hors zone constructible, un logement neuf est généralement refusé."
   }
  },
  {
   "id": "SOL-146",
   "name": "Strapped straw external insulation (ITE paille sanglee)",
   "subfunction_id": "FN-02.4",
   "function_id": "FN-02",
   "summary": "Straw bales strapped directly to an existing wall face as external insulation, with minimal supporting framework, a specific low-tech retrofit method, distinct from the generic continuous-exterior-insulation entry.",
   "slug": "strapped-straw-external-insulation",
   "slug_fr": "isolation-exterieure-en-paille-sanglee",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "strap bales to the wall face",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches strapped straw-bale lifespan; as an external, more exposed application, real-world lifespan likely toward the lower end of that range without a well-detailed rain screen over it",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "An existing wall face to retrofit, and a weather-protective render/cladding over the strapped bales",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/ITE_paille_sangl%C3%A9e",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "General ITE paille sanglee practitioner durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Isolation extérieure en paille sanglée (ITE paille)",
    "description": "Bottes de paille sanglées directement sur un mur existant en isolation extérieure, avec une ossature de support minimale, une méthode de rénovation low-tech spécifique, distincte de l’entrée générique d’isolation extérieure continue.",
    "lifespan": "Correspond à la durée de vie de la paille sanglée ; en application extérieure plus exposée, la durée de vie réelle se situe probablement vers le bas de cette plage sans un écran pare-pluie bien conçu par-dessus",
    "site_prerequisites": "Un mur existant à équiper, et un enduit ou bardage de protection contre les intempéries par-dessus les bottes sanglées",
    "build_note": "sanglage des bottes sur le mur",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-147",
   "name": "Manual/hand-operated well pump",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "Hand-operated lift or force pump drawing from a well or borehole without electricity, lower flow rate and more physical effort than a powered pump, but keeps water access working through a power outage. A documented Low-tech Lab build (Pompe manuelle verticale).",
   "slug": "manual-hand-operated-well-pump",
   "slug_fr": "pompe-a-main-pour-puits-ou-forage",
   "inputs": [
    {
     "io": "IO-21",
     "name": "Mechanical Energy"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "install pump on well/borehole",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30 years for a well-maintained mechanical hand pump; leathers/seals need periodic replacement every few years",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "An accessible well or borehole",
   "new_build_only": false,
   "regulation_fr": "A domestic borehole or well must be declared to the mairie (art. L2224-9 CGCT). Water intended for domestic use must be tested, and the installation kept separate from the public network.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Pompe_manuelle_%28verticale%29/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Pompe_manuelle_%28verticale%29/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, hand pump tutorial",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Pompe à main pour puits ou forage",
    "description": "Pompe manuelle à levier ou à piston puisant dans un puits ou un forage sans électricité, débit plus faible et effort physique plus important qu’une pompe motorisée, mais maintient l’accès à l’eau pendant une coupure de courant. Un montage documenté par Low-tech Lab (Pompe manuelle verticale).",
    "lifespan": "20 à 30 ans pour une pompe à main mécanique bien entretenue ; les cuirs/joints nécessitent un remplacement périodique tous les quelques années",
    "site_prerequisites": "Un puits ou un forage accessible",
    "build_note": "pose de la pompe sur puits/forage",
    "regulation_fr": "Un forage ou puits domestique doit être déclaré en mairie (art. L2224-9 CGCT). L’eau destinée à un usage domestique doit être analysée, et l’installation maintenue séparée du réseau public."
   }
  },
  {
   "id": "SOL-148",
   "name": "Ceramic candle filter (silver-impregnated)",
   "subfunction_id": "FN-06.3",
   "function_id": "FN-06",
   "summary": "Silver-impregnated ceramic candle or pot filter (e.g. the Filtron design developed with Potters for Peace) removing particulates and the large majority of bacteria by gravity flow alone, no power or pump needed. Slow, roughly 1-2 L/hour per candle, and doesn't address dissolved chemical contaminants, but keeps working during a power or pump outage and can be produced/repaired locally.",
   "slug": "ceramic-candle-filter",
   "slug_fr": "filtre-bougie-ceramique",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "trivial cartridge assembly",
    "efficiency_note": "microbial only"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Ceramic candle itself: 1-2 years before pores clog and flow drops below useful rate; the housing/reservoir lasts far longer",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Low-tech Lab wiki, Filtron ceramic candle filter design",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtre bougie céramique (argentée)",
    "description": "Filtre bougie ou pot en céramique argentée (comme le modèle Filtron développé avec Potters for Peace) éliminant les particules et la grande majorité des bactéries par simple gravité, sans électricité ni pompe. Lent, environ 1 à 2 L/heure par bougie, et ne traite pas les contaminants chimiques dissous, mais continue de fonctionner en cas de coupure de courant ou de pompe et peut être produit et réparé localement.",
    "lifespan": "La bougie céramique elle-même : 1 à 2 ans avant que les pores ne se colmatent et que le débit ne chute sous le seuil utile ; le boîtier/réservoir dure bien plus longtemps",
    "build_note": "assemblage simple de la cartouche",
    "efficiency_note": "microbien uniquement"
   }
  },
  {
   "id": "SOL-149",
   "name": "Reverse osmosis (RO) filtration",
   "subfunction_id": "FN-06.3",
   "function_id": "FN-06",
   "summary": "Semi-permeable membrane forces water through under pressure, rejecting dissolved solids, salts, and contaminants (PFAS, nitrates, heavy metals) that filtration and UV alone don't remove, the highest achievable water-quality ceiling of any option in this catalog. Trade-off: significant electricity draw, a reject-water stream (often 3-4x the product volume), and a membrane needing periodic professional-grade replacement rather than a field repair.",
   "slug": "reverse-osmosis-filtration",
   "slug_fr": "filtration-par-osmose-inverse",
   "inputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 3,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "pressure vessel + specialist",
    "efficiency_note": "also removes dissolved solids, PFAS, nitrates, salts"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "System/housing: 10-15 years; the membrane itself needs replacement every 2-5 years",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Water treatment industry comparison sites (APEC Water, Culligan, et al.)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtration par osmose inverse",
    "description": "Une membrane semi-perméable force le passage de l’eau sous pression, rejetant les solides dissous, sels et contaminants (PFAS, nitrates, métaux lourds) que la filtration et l’UV seuls n’éliminent pas, le plafond de qualité d’eau le plus élevé de toutes les options de ce catalogue. Contrepartie : consommation électrique importante, un flux d’eau rejetée (souvent 3 à 4 fois le volume produit), et une membrane nécessitant un remplacement périodique de niveau professionnel plutôt qu’une réparation sur site.",
    "lifespan": "Système/boîtier : 10-15 ans ; la membrane elle-même nécessite un remplacement tous les 2-5 ans",
    "build_note": "cuve sous pression, spécialiste",
    "efficiency_note": "élimine aussi les solides dissous, PFAS, nitrates, sels"
   }
  },
  {
   "id": "SOL-150",
   "name": "Automatic smart leak-detection shut-off valve",
   "subfunction_id": "FN-06.7",
   "function_id": "FN-06",
   "summary": "Motorized main-line valve paired with a flow/pressure sensor, learning normal household use and auto-shutting off on anomalous flow (burst pipe, freeze, continuous drip), catches and stops leaks in real time, including ones too slow or remote to notice manually. Depends on continuous power and, for most commercial products, a network connection for alerts; sealed electronics aren't field-repairable.",
   "slug": "automatic-smart-leak-detection-shut-off-valve",
   "slug_fr": "vanne-arret-detection-fuite",
   "inputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 6,
    "build_note": "motorised valve + sensor + setup",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "10-15 years for the motorized valve and electronics, a sealed, non-field-repairable unit per its own description",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Smart leak-detection valve industry sites (StreamLabs, Phyn, FloLogic, Moen Flo)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Vanne d’arrêt automatique à détection de fuite intelligente",
    "description": "Vanne motorisée sur l’arrivée principale associée à un capteur de débit/pression, apprenant l’usage normal du foyer et se coupant automatiquement en cas de débit anormal (rupture de canalisation, gel, fuite continue), détecte et arrête les fuites en temps réel, y compris celles trop lentes ou trop éloignées pour être remarquées manuellement. Dépend d’une alimentation électrique continue et, pour la plupart des produits du commerce, d’une connexion réseau pour les alertes ; l’électronique scellée n’est pas réparable sur site.",
    "lifespan": "10 à 15 ans pour la vanne motorisée et l’électronique, une unité scellée, non réparable sur site selon sa propre description",
    "build_note": "vanne motorisée + capteur + paramétrage"
   }
  },
  {
   "id": "SOL-151",
   "name": "Membrane bioreactor (MBR) greywater recycling package unit",
   "subfunction_id": "FN-07.2",
   "function_id": "FN-07",
   "summary": "Combines biological treatment with membrane filtration in one packaged unit, producing consistently high-quality reclaimed water suitable for indoor non-potable reuse (toilet flushing) rather than only irrigation/soil discharge, a materially higher performance ceiling than a wetland or sand filter for the same greywater stream. Requires continuous power for aeration/pumping and specialist servicing; membrane fouling is the main failure mode.",
   "slug": "membrane-bioreactor-greywater-recycling-package-unit",
   "slug_fr": "bioreacteur-a-membranes-pour-recyclage-des-eaux-grises",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 3,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "packaged plant, specialist install",
    "efficiency_note": "membrane filtration, the highest and most consistent effluent quality"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "15-20 years for the package unit; membranes need periodic replacement (fouling is the main failure mode, per its own description)",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General MBR package-plant manufacturer durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Bioréacteur à membranes pour recyclage des eaux grises",
    "description": "Combine traitement biologique et filtration membranaire dans une unité compacte, produisant une eau recyclée de qualité constamment élevée, adaptée à la réutilisation intérieure non potable (chasse d’eau) et pas seulement à l’irrigation ou au rejet au sol, un plafond de performance nettement supérieur à une zone humide ou un filtre à sable pour le même flux d’eaux grises. Nécessite une alimentation électrique continue pour l’aération et le pompage, ainsi qu’un entretien spécialisé ; l’encrassement de la membrane est le principal mode de défaillance.",
    "lifespan": "15 à 20 ans pour l’unité compacte ; les membranes nécessitent un remplacement périodique (l’encrassement est le principal mode de défaillance, selon sa propre description)",
    "build_note": "unité compacte, pose spécialisée",
    "efficiency_note": "filtration membranaire, la qualité d’effluent la plus élevée et la plus constante",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-152",
   "name": "Wood-chip filter (Filtres a Broyat de Bois, FBB)",
   "subfunction_id": "FN-07.2",
   "function_id": "FN-07",
   "summary": "Biological filter bed of wood chips, developed and tested specifically for treating greywater alone (as distinct from constructed wetlands typically sized for combined or blackwater flows) by INRAE and the Reseau Assainissement Ecologique. Passive, gravity-fed, no power needed; chips need periodic renewal as they break down.",
   "slug": "wood-chip-filter",
   "slug_fr": "filtre-a-broyat-de-bois",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "chip-filled filter bed",
    "efficiency_note": "biological bed developed and tested specifically for greywater"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Structure/basin: 20-30 years; the wood-chip media itself needs periodic renewal as it breaks down (INRAE guidance doesn't specify an exact interval)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Land area for the filter bed",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Filtres_a_Broyat_de_Bois_%28FBB%29",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki + INRAE / Reseau Assainissement Ecologique research",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtre à broyat de bois (FBB)",
    "description": "Bassin filtrant biologique en broyat de bois, développé et testé spécifiquement pour le traitement des eaux grises seules (à la différence des zones humides reconstituées, généralement dimensionnées pour des flux combinés ou d’eaux noires) par l’INRAE et le Réseau Assainissement Écologique. Passif, gravitaire, sans électricité ; le broyat doit être renouvelé périodiquement à mesure qu’il se décompose.",
    "lifespan": "Structure/bassin : 20-30 ans ; le broyat de bois lui-même nécessite un renouvellement périodique à mesure qu’il se décompose (les recommandations de l’INRAE ne précisent pas d’intervalle exact)",
    "site_prerequisites": "Surface de terrain pour le lit filtrant",
    "build_note": "lit filtrant garni de broyat",
    "efficiency_note": "bassin biologique développé et testé spécifiquement pour les eaux grises",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-153",
   "name": "Direct greywater diversion to toilet flushing",
   "subfunction_id": "FN-07.3",
   "function_id": "FN-07",
   "summary": "Shower or bath water diverted straight to the toilet cistern or bowl by gravity or a simple bucket, with no treatment beyond settling, the lowest-tech greywater reuse technique in this catalog. Same-day use only, since untreated greywater develops odor and bacterial growth within hours to a day or two of storage.",
   "slug": "direct-greywater-diversion-to-toilet-flushing",
   "slug_fr": "detournement-eaux-grises-chasse",
   "inputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "None",
    "burden": 0,
    "build_note": "simple diverter / bucket, no treatment",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "none",
   "build_skill": "None",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Matches plumbing/diversion-valve lifespan, 20-30 years for simple gravity diversion hardware",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Greywater reuse is permitted under decret 2024-796 and the arrete of 12 July 2024, on an experimental basis until 31 December 2034, for laundry, indoor floor washing and vegetable-garden watering. Not permitted for drinking, cooking or bathing.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Low-tech Lab wiki, direct greywater-to-toilet diversion tutorial",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Détournement direct des eaux grises vers la chasse d’eau",
    "description": "Eau de douche ou de bain détournée directement vers le réservoir ou la cuvette des toilettes par gravité ou avec un simple seau, sans traitement autre que la décantation, la technique de réutilisation des eaux grises la plus rudimentaire de ce catalogue. Usage le jour même uniquement, car les eaux grises non traitées développent odeurs et prolifération bactérienne en quelques heures à un ou deux jours de stockage.",
    "lifespan": "Correspond à la durée de vie de la plomberie/vanne de déviation, 20-30 ans pour une quincaillerie de déviation gravitaire simple",
    "build_note": "simple déviateur ou seau, aucun traitement",
    "regulation_fr": "La réutilisation des eaux grises est autorisée par le décret 2024-796 et l’arrêté du 12 juillet 2024, à titre expérimental jusqu’au 31 décembre 2034, pour le lavage du linge, le lavage des sols intérieurs et l’arrosage du potager. Non autorisée pour la boisson, la cuisson ou la toilette."
   }
  },
  {
   "id": "SOL-154",
   "name": "Aerobic treatment unit / micro-station d'epuration (package plant)",
   "subfunction_id": "FN-08.2",
   "function_id": "FN-08",
   "summary": "Aerated package plant using mechanically pumped oxygen to sustain aerobic (rather than septic tank's anaerobic) digestion, cleaner effluent, a smaller footprint, and viable on sites with poor drainage or a high water table where a conventional drain field would fail. Trade-off: needs continuous power for the aeration blower and more frequent, more specialist servicing than a septic tank.",
   "slug": "aerobic-treatment-unit-micro-station-d-epuration",
   "slug_fr": "micro-station-d-epuration",
   "inputs": [
    {
     "io": "IO-11",
     "name": "Blackwater"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-26",
     "name": "Treated Effluent"
    },
    {
     "io": "IO-27",
     "name": "Sludge"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 9,
    "build_note": "packaged plant + blower, specialist",
    "efficiency_note": "forced aeration gives the cleanest effluent and the smallest footprint"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "frequent",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "15-20 years for the package plant; the aeration blower is the usual mid-life replacement item",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "On-site sanitation (assainissement non collectif): the installation must be declared to and approved by the local SPANC before work starts, and is subject to periodic inspection. Arrete du 7 septembre 2009 modifie.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Aquatiris / BioMicrobics (commercial) + Environmental Finance Center Network",
     "tier": "B/C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Micro-station d’épuration (unité de traitement aérobie)",
    "description": "Micro-station compacte utilisant de l’oxygène insufflé mécaniquement pour maintenir une digestion aérobie (plutôt qu’anaérobie comme la fosse septique), effluent plus propre, emprise au sol réduite, et viable sur des terrains à drainage médiocre ou nappe haute où un épandage classique échouerait. Contrepartie : nécessite une alimentation électrique continue pour le surpresseur d’aération et un entretien plus fréquent et plus spécialisé qu’une fosse septique.",
    "lifespan": "15 à 20 ans pour la micro-station ; le surpresseur d’aération est la pièce de remplacement habituelle à mi-vie",
    "build_note": "unité compacte + surpresseur, spécialiste",
    "efficiency_note": "l’aération forcée donne l’effluent le plus propre et l’emprise la plus faible",
    "regulation_fr": "Assainissement non collectif : l’installation doit être déclarée et approuvée par le SPANC local avant le début des travaux, et fait l’objet d’un contrôle périodique. Arrêté du 7 septembre 2009 modifié."
   }
  },
  {
   "id": "SOL-155",
   "name": "Lithium (LiFePO4) battery bank with integrated BMS",
   "subfunction_id": "FN-09.2",
   "function_id": "FN-09",
   "summary": "LiFePO4 cells with an integrated battery management system, usable to roughly 80-100% depth of discharge and rated for 3,000-6,000 cycles, versus roughly 50% DoD and 300-500 cycles for a comparable lead-acid bank, several times the usable capacity and lifespan from the same physical footprint. Trade-off: the sealed BMS electronics are the highest-performance component among this catalog's power-storage entries and also one of the least field-repairable, a BMS fault typically means a specialist callout or a full module swap, not a field fix.",
   "slug": "lithium-battery-bank-with-integrated-bms",
   "slug_fr": "parc-de-batteries-lithium-avec-bms-integre",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 5,
    "build_note": "cells + integrated BMS, specialist",
    "efficiency_note": "highest round-trip efficiency, deepest usable discharge, most cycles"
   },
   "benchmark": true,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "10-15+ years, rated for 3,000-6,000 cycles at 80-100% depth of discharge",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Battery industry comparison sites (RELiON, SolaxPower, Anern)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Parc de batteries lithium (LiFePO4) avec BMS intégré",
    "description": "Cellules LiFePO4 avec système de gestion de batterie (BMS) intégré, utilisables jusqu’à environ 80-100% de profondeur de décharge et garanties pour 3 000 à 6 000 cycles, contre environ 50% de profondeur de décharge et 300 à 500 cycles pour un parc plomb-acide comparable, plusieurs fois la capacité utile et la durée de vie pour un encombrement physique identique. Contrepartie : l’électronique scellée du BMS est le composant le plus performant parmi les solutions de stockage d’énergie de ce catalogue, mais aussi l’un des moins réparables sur site, une panne de BMS implique généralement l’intervention d’un spécialiste ou le remplacement complet du module, pas une réparation de terrain.",
    "lifespan": "10 à 15 ans ou plus, garantie pour 3 000-6 000 cycles à 80-100% de profondeur de décharge",
    "build_note": "cellules + BMS intégré, spécialiste",
    "efficiency_note": "rendement aller-retour le plus élevé, décharge utile la plus profonde, le plus de cycles",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-156",
   "name": "Bulk propane or heating-oil storage tank",
   "subfunction_id": "FN-09.5",
   "function_id": "FN-09",
   "summary": "Above-ground or buried tank storing propane or heating oil, refilled by tanker delivery, far higher energy density and no manual processing (splitting, stacking, seasoning) compared to firewood, and burns on demand at a steady, controllable rate. Trade-off: depends entirely on an external delivery supply chain and combustion appliance, is a non-renewable fossil fuel, and the tank/fittings need periodic professional inspection.",
   "slug": "bulk-propane-or-heating-oil-storage-tank",
   "slug_fr": "cuve-de-stockage-de-propane-ou-de-fioul",
   "inputs": [
    {
     "io": "IO-29",
     "name": "Liquid/Bottled Fuel (propane, heating oil)"
    }
   ],
   "outputs": [
    {
     "io": "IO-29",
     "name": "Liquid/Bottled Fuel (propane, heating oil)"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 3,
    "build_note": "tank set + regulator, permitted",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "20-30+ years for the tank itself (steel tanks need periodic corrosion inspection); fittings/regulators need earlier replacement every 10-15 years",
   "embodied_carbon": "high",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Space for tank siting meeting fire-code setback distances, and access for tanker delivery",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "General propane/heating-oil tank industry durability consensus",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Cuve de stockage de propane ou de fioul",
    "description": "Cuve enterrée ou en surface stockant du propane ou du fioul, réapprovisionnée par livraison en camion-citerne, densité énergétique bien supérieure et aucune manipulation manuelle (fendre, empiler, faire sécher) comparé au bois de chauffage, avec une combustion à la demande, régulière et contrôlable. Contrepartie : dépend entièrement d’une chaîne d’approvisionnement externe et d’un appareil à combustion, s’agit d’un combustible fossile non renouvelable, et la cuve et ses raccords nécessitent une inspection professionnelle périodique.",
    "lifespan": "20 ans ou plus pour la cuve elle-même (les cuves en acier nécessitent une inspection périodique de corrosion) ; raccords/détendeurs nécessitent un remplacement plus précoce tous les 10-15 ans",
    "site_prerequisites": "Espace pour l’implantation de la cuve respectant les distances réglementaires incendie, et accès pour la livraison par camion-citerne",
    "build_note": "pose de cuve + détendeur, soumis à autorisation"
   }
  },
  {
   "id": "SOL-157",
   "name": "Electric kitchen food waste composter/digester",
   "subfunction_id": "FN-14.2",
   "function_id": "FN-14",
   "summary": "Sealed countertop or under-sink appliance that grinds and either dehydrates or aerobically digests food waste, including cooked food, meat, and dairy that an open compost pile can't handle without attracting pests and odor. Dehydration-type units produce a dried, volume-reduced material needing further composting; sealed aerobic digester types can fully break it down. Odor-contained, fast (hours, not weeks), and low-effort, at the cost of continuous power draw, a proprietary sealed mechanism, and an ongoing filter/consumable cost.",
   "slug": "electric-kitchen-food-waste-composter-digester",
   "slug_fr": "composteur-electrique-dechets-cuisine",
   "inputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 5,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 7,
    "build_note": "appliance, plug-in",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "specialist",
   "build_skill": "Basic",
   "consumables": "Significant",
   "cost": "medium",
   "lifespan": "5-10 years for the appliance, brushless-motor units claim 2-3x the life of standard units, but exact figures aren't independently published",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "BioCycle trade journalism + Reencle manufacturer content",
     "tier": "B/C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Composteur ou digesteur électrique de déchets de cuisine",
    "description": "Appareil scellé de comptoir ou sous évier qui broie puis déshydrate ou digère aérobiquement les déchets alimentaires, y compris les aliments cuits, la viande et les produits laitiers qu’un tas de compost à l’air libre gère mal sans attirer nuisibles et odeurs. Les modèles à déshydratation produisent une matière séchée et réduite en volume nécessitant un compostage ultérieur ; les modèles à digestion aérobie scellée peuvent la décomposer entièrement. Odeurs contenues, rapide (heures, pas semaines) et peu contraignant, au prix d’une consommation électrique continue, d’un mécanisme scellé propriétaire et d’un coût récurrent de filtres ou consommables.",
    "lifespan": "5 à 10 ans pour l’appareil, les unités à moteur sans balais revendiquent 2 à 3 fois la durée de vie des unités standards, mais les chiffres exacts ne sont pas publiés indépendamment",
    "build_note": "appareil, branchement direct"
   }
  },
  {
   "id": "SOL-158",
   "name": "Vacuum insulated panel (VIP)",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Factory-sealed rigid panel with a fumed-silica or open-cell foam core evacuated below 1 mbar, faced with a gas-barrier film. Center-of-panel thermal conductivity is roughly 4 mW/(m*K) new, about 8-10x better than EPS or mineral wool (~35-40 mW/(m*K)) for the same thickness, degrading to roughly 7-8 mW/(m*K) over 25 years as the vacuum slowly leaks down. A puncture is a real failure mode: conductivity jumps to around 22 mW/(m*K) at the puncture site, and panels can't be cut, drilled, or trimmed on site. They're ordered to exact factory dimensions and simply discarded if damaged. The least field-repairable and least adaptable insulation material in this catalog, despite needing no power to function.",
   "slug": "vacuum-insulated-panel",
   "slug_fr": "panneau-isolant-sous-vide",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 3,
    "maintain": 3,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 3,
    "build_note": "factory panels, specialist detailing",
    "efficiency_note": "lowest lambda, most R per unit thickness"
   },
   "benchmark": true,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "high",
   "lifespan": "15-25 years design life before degradation and puncture risk make it a discard-on-damage material, per its own description; cannot be repaired once compromised",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "ScienceDirect peer-reviewed VIP conductivity aging study",
     "tier": "A",
     "lang": null
    }
   ],
   "fr": {
    "name": "Panneau isolant sous vide (PIV)",
    "description": "Panneau rigide scellé en usine, à âme de silice pyrogénée ou de mousse à cellules ouvertes, mis sous vide en dessous de 1 mbar, avec un film barrière aux gaz. Conductivité thermique au centre du panneau d’environ 4 mW/(m·K) à l’état neuf, environ 8 à 10 fois meilleure que le PSE ou la laine minérale (~35-40 mW/(m·K)) à épaisseur égale, se dégradant à environ 7-8 mW/(m·K) sur 25 ans à mesure que le vide se relâche lentement. Une perforation est un mode de défaillance réel : la conductivité bondit à environ 22 mW/(m·K) au point de perforation, et les panneaux ne peuvent être ni découpés, ni percés, ni ajustés sur site. Ils sont commandés aux dimensions exactes d’usine et simplement mis au rebut s’ils sont endommagés. Le matériau isolant le moins réparable sur site et le moins adaptable de ce catalogue, bien qu’il ne nécessite aucune électricité pour fonctionner.",
    "lifespan": "Durée de vie de conception 15-25 ans avant que la dégradation et le risque de perforation n’en fassent un matériau à jeter en cas de dommage, selon sa propre description ; irréparable une fois compromis",
    "build_note": "panneaux d’usine, pose spécialisée",
    "efficiency_note": "lambda le plus bas, résistance R maximale par épaisseur",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-159",
   "name": "Electrochromic (smart) glazing",
   "subfunction_id": "FN-02.6",
   "function_id": "FN-02",
   "summary": "Low-voltage electrochromic coating between glass panes lets tint and solar heat gain be adjusted electronically rather than fixed at installation, unlike any static glazing in this catalog, it responds to actual conditions (summer sun, glare, winter gain) instead of being a single year-round compromise. Combined with a triple-pane build it can reach an R-value on par with the best static triple glazing (R 7 or higher) while cutting cooling-load energy roughly 15-26% versus a standard double-pane low-E unit. Trade-off: roughly 2-3x the cost of conventional glazing ($50-150/sqft), a payback period commonly quoted at 20-30 years, and a coating/control system that's proprietary and unrepairable outside a factory, a failed electrochromic pane is a full-unit replacement, not a field fix.",
   "slug": "electrochromic-glazing",
   "slug_fr": "vitrage-electrochrome",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [],
   "ratings": {
    "build": 3,
    "maintain": 2,
    "efficiency": 2,
    "build_skill": "Specialist",
    "burden": 4,
    "build_note": "specialist glazing + wiring",
    "efficiency_note": "double-glazing U-value, with switchable solar gain on top"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "high",
   "lifespan": "20-30 years commonly quoted payback/service horizon; the coating/control system is proprietary and unrepairable outside a factory per its own description",
   "embodied_carbon": "high",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "HomeAdvisor / SageGlass / architect trade press",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Vitrage électrochrome (intelligent)",
    "description": "Un revêtement électrochrome basse tension entre les vitres permet d’ajuster électroniquement la teinte et les apports solaires plutôt que de les fixer à l’installation, contrairement à tout vitrage statique de ce catalogue, il répond aux conditions réelles (soleil d’été, éblouissement, apports d’hiver) au lieu d’être un compromis unique valable toute l’année. Associé à un triple vitrage, il peut atteindre une résistance thermique comparable au meilleur triple vitrage statique (R 7 ou plus) tout en réduisant la charge de climatisation d’environ 15 à 26% par rapport à un double vitrage standard à faible émissivité. Contrepartie : environ 2 à 3 fois le coût d’un vitrage conventionnel, un temps de retour souvent estimé à 20-30 ans, et un revêtement/système de commande propriétaire et non réparable hors usine, une vitre électrochrome défaillante implique le remplacement complet de l’unité, pas une réparation de terrain.",
    "lifespan": "Horizon de service/retour sur investissement couramment cité de 20-30 ans ; le revêtement/système de commande est propriétaire et non réparable hors usine selon sa propre description",
    "build_note": "vitrage spécialisé + câblage",
    "efficiency_note": "coefficient U du double vitrage, avec apport solaire commutable en plus"
   }
  },
  {
   "id": "SOL-160",
   "name": "Heat pump (air- or ground-source), reversible mode",
   "subfunction_id": "FN-02.11",
   "function_id": "FN-02",
   "summary": "The same physical unit as the backup-heating entry, run in reverse to actively cool instead of heat, one appliance doing both jobs rather than needing a second, dedicated air-conditioning unit. Worth being precise about the efficiency claim: in cooling mode, a reversible heat pump and a cooling-only air conditioner of the same SEER rating perform essentially identically, both use the same vapor-compression refrigeration cycle, so reversibility doesn't make the cooling itself more efficient. The real gain is avoiding the embodied footprint, cost, and space of a second, cooling-only machine on top of the heating one.",
   "slug": "heat-pump-reversible-mode",
   "slug_fr": "pompe-a-chaleur-reversible",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-24",
     "name": "Cooling"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "refrigerant + electrical, specialist",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "Same physical unit as the heat pump: 10-15 years typical, up to 20 for well-maintained units",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Heat pump lifespan industry sources (permies.com heater-lifespan wiki; general HVAC industry consensus)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Pompe à chaleur réversible (air ou géothermique)",
    "description": "Le même appareil physique que l’entrée de chauffage d’appoint, fonctionnant en sens inverse pour rafraîchir activement au lieu de chauffer, un seul appareil assurant les deux fonctions plutôt que de nécessiter une seconde machine de climatisation dédiée. Il convient d’être précis sur l’affirmation de performance : en mode rafraîchissement, une pompe à chaleur réversible et un climatiseur dédié de même coefficient SEER ont des performances essentiellement identiques, les deux utilisent le même cycle frigorifique à compression de vapeur, donc la réversibilité ne rend pas le rafraîchissement lui-même plus efficace. Le vrai gain est d’éviter l’empreinte, le coût et l’espace d’une seconde machine dédiée au rafraîchissement en plus de celle de chauffage.",
    "lifespan": "Même appareil physique que la pompe à chaleur : 10-15 ans typiquement, jusqu’à 20 pour des unités bien entretenues",
    "build_note": "fluide frigorigène + électricité, spécialiste"
   }
  },
  {
   "id": "SOL-161",
   "name": "Household anaerobic biodigester (biogas + digestate)",
   "subfunction_id": "FN-14.2",
   "function_id": "FN-14",
   "summary": "Sealed, oxygen-free (anaerobic) digestion of food scraps, and optionally manure or dry-toilet residue, by methane-producing bacteria, yielding two outputs at once: biogas (mostly methane, usable directly at a stove burner) and digestate, a nutrient-rich liquid fertilizer, distinct from the aerobic compost pile's dry compost output. Real constraint for this climate: the bacteria work best in a 30-40C mesophilic range, and food-waste-only digesters need a weekly average above roughly 18C to keep working, a Normandy installation likely needs supplemental insulation or heating to perform through winter, or accepts a seasonal biogas yield drop of 10-30% rather than constant output. Digestate's main use as fertilizer waits on food production being back in scope, same treatment as the biochar entry logged 2026-08-08.",
   "slug": "household-biodigester-biogas-digestate",
   "slug_fr": "biodigesteur-domestique-biogaz-digestat",
   "inputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    }
   ],
   "outputs": [
    {
     "io": "IO-30",
     "name": "Biogas (Methane)"
    },
    {
     "io": "IO-15",
     "name": "Nutrients"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 4,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "sealed digester + gas plumbing",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "15-20 years for a well-built fixed-dome or flexible-bladder digester vessel; the bladder/membrane component (if flexible-bladder type) needs earlier replacement",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Supplemental insulation or heating likely needed to sustain mesophilic temperatures through a Normandy winter (per its own description)",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Biodigesteur_domestique/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Biodigesteur_domestique/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "PMC/Springer peer-reviewed anaerobic digestion studies",
     "tier": "A",
     "lang": null
    }
   ],
   "fr": {
    "name": "Biodigesteur domestique anaérobie (biogaz + digestat)",
    "description": "Digestion anaérobie (sans oxygène) et étanche des restes alimentaires, et éventuellement du fumier ou des résidus de toilette sèche, par des bactéries méthanogènes, produisant deux extrants à la fois : le biogaz (majoritairement du méthane, utilisable directement sur un brûleur) et le digestat, un engrais liquide riche en nutriments, distinct du compost sec issu du tas de compost aérobie. Contrainte réelle pour ce climat : les bactéries travaillent au mieux dans une plage mésophile de 30-40°C, et les digesteurs alimentés uniquement en déchets alimentaires nécessitent une moyenne hebdomadaire supérieure à environ 18°C pour continuer à fonctionner, une installation en Normandie nécessitera probablement une isolation ou un chauffage complémentaire pour fonctionner en hiver, ou acceptera une baisse saisonnière de rendement en biogaz de 10 à 30% plutôt qu’une production constante. L’usage principal du digestat comme engrais attend le retour de la production alimentaire dans le périmètre, même traitement que l’entrée biochar consignée le 08/08/2026.",
    "lifespan": "15 à 20 ans pour une cuve de digesteur à dôme fixe ou à poche souple bien construite ; le composant poche/membrane (si type à poche souple) nécessite un remplacement plus précoce",
    "site_prerequisites": "Isolation ou chauffage complémentaire probablement nécessaire pour maintenir des températures mésophiles pendant l’hiver normand (selon sa propre description)",
    "build_note": "digesteur étanche + plomberie gaz"
   }
  },
  {
   "id": "SOL-162",
   "name": "Household anaerobic biodigester (biogas cooking fuel)",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Also listed under organic waste processing, the same digester's biogas output burned directly at a stove burner or gas lamp in place of firewood or bottled propane, via a gas-appropriate burner (different jet sizing than propane). Given Normandy's climate, realistically needs the digester kept warm or insulated to sustain output through winter, see that entry for the temperature constraint. Once gas reaches the storage bladder it's available on demand like any bottled gas; it's the underlying production rate that varies seasonally, not moment-to-moment control.",
   "slug": "household-biodigester-cooking-fuel",
   "slug_fr": "biodigesteur-domestique-biogaz-cuisson",
   "inputs": [
    {
     "io": "IO-30",
     "name": "Biogas (Methane)"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 3,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "tank + gas plumbing",
    "efficiency_note": "moderate, cooking gas from waste"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Matches the digester vessel's own lifespan; the gas burner/jet hardware follows standard appliance cycles (10-15 years)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Same winter-performance caveat as the household biodigester",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Biodigesteur_domestique/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Biodigesteur_domestique/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "PMC/Springer peer-reviewed anaerobic digestion studies",
     "tier": "A",
     "lang": null
    }
   ],
   "fr": {
    "name": "Biodigesteur domestique anaérobie (biogaz de cuisson)",
    "description": "Également listée sous traitement des déchets organiques, le biogaz du même digesteur brûlé directement sur un brûleur de cuisinière ou une lampe à gaz à la place du bois ou du propane en bouteille, via un brûleur adapté au gaz (gicleur différent du propane). Compte tenu du climat normand, nécessite en pratique de maintenir le digesteur au chaud ou isolé pour soutenir la production en hiver, voir cette entrée pour la contrainte de température. Une fois le gaz arrivé dans la poche de stockage, il est disponible à la demande comme tout gaz en bouteille ; c’est le taux de production sous-jacent qui varie selon la saison, pas le contrôle instantané.",
    "lifespan": "Correspond à la durée de vie propre de la cuve du digesteur ; le brûleur/gicleur suit les cycles standards d’appareil (10-15 ans)",
    "site_prerequisites": "Même réserve de performance hivernale que le biodigesteur domestique",
    "build_note": "cuve + plomberie gaz",
    "efficiency_note": "modéré, gaz de cuisson issu des déchets"
   }
  },
  {
   "id": "SOL-163",
   "name": "Induction cooktop",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Direct electromagnetic transfer from the coil to the ferrous cookware itself, with no intermediate flame or resistive element losing heat to the surrounding air, roughly 84-90% of drawn energy reaches the food, versus roughly 65-74% for a resistive electric coil and only 32-40% for a gas burner. The clear efficiency benchmark for cooking energy in this catalog. Trade-off: needs compatible ferrous cookware (cast iron, steel, some stainless), draws a genuinely large instantaneous current, a real load-sizing factor for an off-grid system, and the induction electronics are sealed, specialist-repair only.",
   "slug": "induction-cooktop",
   "slug_fr": "plaque-a-induction",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 4,
    "efficiency": 1,
    "build_skill": "Basic",
    "burden": 5,
    "build_note": "plug-in appliance",
    "efficiency_note": "highest energy-to-food efficiency"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "10-11 years typical, roughly 10,000 working hours per manufacturer/industry figures",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "ACEEE conference paper (nonprofit efficiency research)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Plaque à induction",
    "description": "Transfert électromagnétique direct de la bobine vers le récipient ferreux lui-même, sans flamme ni résistance intermédiaire perdant de la chaleur dans l’air environnant, environ 84-90% de l’énergie consommée atteint l’aliment, contre environ 65-74% pour une plaque électrique à résistance et seulement 32-40% pour un brûleur à gaz. La référence claire de performance énergétique pour la cuisson dans ce catalogue. Contrepartie : nécessite des récipients ferreux compatibles (fonte, acier, certains inox), consomme un courant instantané réellement élevé, un vrai facteur de dimensionnement pour un système hors réseau, et l’électronique d’induction est scellée, réparable uniquement par un spécialiste.",
    "lifespan": "10 à 11 ans typiquement, environ 10 000 heures de fonctionnement selon les chiffres du secteur et des fabricants",
    "build_note": "appareil à brancher",
    "efficiency_note": "efficacité énergie-vers-aliment la plus élevée"
   }
  },
  {
   "id": "SOL-164",
   "name": "Extended pathogen-safe curing (secondary bin)",
   "subfunction_id": "FN-08.3",
   "function_id": "FN-08",
   "summary": "A composting toilet's fresh output is not yet safe to use as soil amendment, pathogen die-off needs sustained thermophilic temperatures (above 55C) for days to weeks, followed by an undisturbed curing period of at least one to two years, during which the material is kept in a dedicated secondary bin, physically separate from kitchen/garden compost to avoid cross-contaminating a food-safe compost stream with human pathogens. This is the missing safety step between the composting and urine-diverting toilets' fresh output and any use of that output, not an optional refinement.",
   "slug": "extended-pathogen-safe-curing",
   "slug_fr": "maturation-sanitaire-prolongee",
   "inputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    }
   ],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    }
   ],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "",
   "consumables": "",
   "cost": "low",
   "lifespan": "Not applicable, a process/holding period (1-2 years curing), not a physical component; the secondary bin structure itself matches the managed humanure composting figure",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Dry toilets are explicitly permitted (arrete du 7 septembre 2009 modifie) but must be declared to the SPANC, and byproducts must be composted on the property without any discharge or nuisance to neighbours.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Maturation sanitaire prolongée (bac secondaire)",
    "description": "La matière fraîche d’une toilette sèche à compost n’est pas encore sûre à utiliser comme amendement du sol, l’élimination des pathogènes nécessite des températures thermophiles soutenues (au-dessus de 55°C) pendant des jours à des semaines, suivies d’une période de maturation non perturbée d’au moins un à deux ans, durant laquelle la matière est conservée dans un bac secondaire dédié, physiquement séparé du compost de cuisine ou de jardin pour éviter de contaminer un flux de compost alimentaire sûr avec des pathogènes humains. C’est l’étape de sécurité manquante entre la matière fraîche des toilettes à compost et à séparation d’urine et tout usage de cette matière, pas un raffinement optionnel.",
    "lifespan": "Non applicable, une période de processus/maturation (1-2 ans), pas un composant physique ; la structure du bac secondaire elle-même correspond au chiffre du compostage thermophile encadré",
    "regulation_fr": "Les toilettes sèches sont explicitement autorisées (arrêté du 7 septembre 2009 modifié) mais doivent être déclarées au SPANC, et les sous-produits doivent être compostés sur la propriété sans aucun rejet ni nuisance pour le voisinage."
   }
  },
  {
   "id": "SOL-165",
   "name": "Sand-box root vegetable storage",
   "subfunction_id": "FN-10.2",
   "function_id": "FN-10",
   "summary": "Root vegetables (carrots, beetroot, potatoes) layered in boxes of dry or lightly damp sand, kept cool and dark, prevents individual vegetables from touching, sprouting, or rotting each other, extending usable storage by months without refrigeration. Distinct from the general ventilated dry pantry: a specific technique for a specific food category, documented on Low-tech Lab (a distinct evaporative-cooling variant, the Zeer pot, now its own entry: the zeer pot).",
   "slug": "sand-box-root-vegetable-storage",
   "slug_fr": "conservation-des-legumes-racines-en-caisse-de-sable",
   "inputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "outputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "boxes + sand layering",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Not applicable, a storage technique using simple boxes/sand, renewed each harvest season rather than having a multi-year product lifespan",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "None",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [],
   "fr": {
    "name": "Conservation des légumes-racines en caisse de sable",
    "description": "Légumes-racines (carottes, betteraves, pommes de terre) disposés en couches dans des caisses de sable sec ou légèrement humide, conservés au frais et à l’obscurité, empêche les légumes de se toucher, de germer ou de pourrir entre eux, prolongeant leur conservation utile de plusieurs mois sans réfrigération. Distincte du garde-manger sec ventilé général : une technique spécifique pour une catégorie d’aliments spécifique, documentée sur Low-tech Lab (une variante à rafraîchissement évaporatif distincte, le pot zeer, désormais sa propre entrée).",
    "lifespan": "Non applicable, une technique de stockage utilisant de simples caisses et du sable, renouvelée à chaque récolte plutôt que d’avoir une durée de vie produit pluriannuelle",
    "build_note": "caisses + couches de sable"
   }
  },
  {
   "id": "SOL-166",
   "name": "Solar dryer (dehydration)",
   "subfunction_id": "FN-10.5",
   "function_id": "FN-10",
   "summary": "Direct or indirect solar dehydration of fruit, vegetables, and herbs, removes enough moisture to halt microbial growth, extending shelf life from days to months without refrigeration or added energy. An indirect design (air heated in a separate solar collector, then drawn over the food) avoids the direct-sun designs' dust/insect exposure and UV degradation of the food. Zero running cost; fully weather-dependent, and needs several consecutive dry days for a full batch.",
   "slug": "solar-dryer",
   "slug_fr": "sechoir-solaire",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    },
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "outputs": [
    {
     "io": "IO-31",
     "name": "Preserved Food"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "glazed box + trays + airflow",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "10-20 years for the collector/frame structure; glazing cover follows standard glazing lifespan if glazed",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Sun-exposed siting with several consecutive dry days achievable in-season",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Conception_et_réalisation_d'un_séchoir_solaire_autonome",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Séchoir_solaire_indirect",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "General solar-dryer practitioner/NGO durability consensus",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Séchoir solaire (déshydratation)",
    "description": "Déshydratation solaire directe ou indirecte de fruits, légumes et herbes, retire assez d’humidité pour stopper le développement microbien, prolongeant la conservation de quelques jours à plusieurs mois sans réfrigération ni énergie ajoutée. Une conception indirecte (air chauffé dans un capteur solaire séparé, puis amené sur l’aliment) évite l’exposition à la poussière, aux insectes et la dégradation par UV que subissent les modèles à exposition directe. Coût de fonctionnement nul ; entièrement dépendant de la météo, nécessite plusieurs jours secs consécutifs pour un lot complet.",
    "lifespan": "10 à 20 ans pour la structure du capteur/cadre ; la couverture vitrée suit la durée de vie standard du vitrage si vitrée",
    "site_prerequisites": "Emplacement bien exposé au soleil avec plusieurs jours secs consécutifs atteignables en saison",
    "build_note": "caisson vitré + clayettes + circulation d’air"
   }
  },
  {
   "id": "SOL-169",
   "name": "Haybox / retained-heat cooker (fireless cooker)",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Food is brought to a full boil on any heat source, then transferred, still in its pot, into a heavily insulated box (traditionally hay-packed, now often reflective foam) where residual heat finishes the cooking by slow simmer with no further fuel input. Cuts fuel use for simmered/slow-cooked dishes by roughly 20-80% depending on the dish, since none of the heat that would normally escape to reheat a stovetop pot is wasted. Complementary to, not a replacement for, the wood cookstove/rocket stove/solar cooker entries. It's what happens after the initial boil, not an alternative heat source.",
   "slug": "haybox-retained-heat-cooker",
   "slug_fr": "marmite-norvegienne",
   "inputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "insulated box",
    "efficiency_note": "heat-retention complement, not a heat source"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "10-20+ years for a well-made insulated box; reflective foam liner may need earlier replacement than a hay-packed original",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Marmite_norv%C3%A9gienne/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Marmite_Norvégienne_Tissu_Super_Efficace",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "Lowimpact.org / Aprovecho",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Marmite norvégienne (cuisson à chaleur retenue)",
    "description": "L’aliment est porté à pleine ébullition sur n’importe quelle source de chaleur, puis transféré, toujours dans sa marmite, dans une caisse fortement isolée (traditionnellement garnie de foin, aujourd’hui souvent de mousse réfléchissante) où la chaleur résiduelle termine la cuisson par mijotage lent sans apport de combustible supplémentaire. Réduit la consommation de combustible pour les plats mijotés ou à cuisson lente d’environ 20 à 80% selon le plat, puisqu’aucune chaleur qui s’échapperait normalement pour réchauffer une marmite sur la cuisinière n’est gaspillée. Complémentaire, et non substitut, des entrées cuisinière à bois, fourneau rocket ou cuiseur solaire, c’est ce qui se passe après l’ébullition initiale, pas une source de chaleur alternative.",
    "lifespan": "10 ans ou plus pour un caisson isolé bien fait ; la doublure en mousse réfléchissante peut nécessiter un remplacement plus précoce qu’un modèle d’origine garni de foin",
    "build_note": "caisson isolé",
    "efficiency_note": "complément de rétention de chaleur, pas une source de chaleur"
   }
  },
  {
   "id": "SOL-170",
   "name": "Closed-loop recirculating shower",
   "subfunction_id": "FN-11.1",
   "function_id": "FN-11",
   "summary": "Draining shower water is caught, filtered, and UV-disinfected in real time (multiple times per minute) and immediately recirculated through the showerhead, topped up with only a small trickle of fresh water, roughly 90% less water and 80% less energy than a standard shower of the same length, per the manufacturer's own published figures (independent verification not yet checked), since most of the recirculated water is already hot. The clear performance benchmark for this sub-function, ahead of the plain pressurised shower. Trade-off: a real-time filtration/UV/pump/control system is exactly the kind of proprietary, specialist-repair-only mechanism this catalog flags elsewhere, a failure here means no shower at all, not just a less efficient one.",
   "slug": "closed-loop-recirculating-shower",
   "slug_fr": "douche-a-recirculation-en-circuit-ferme",
   "inputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    },
    {
     "io": "IO-09",
     "name": "Potable Water"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 3,
    "efficiency": 1,
    "build_skill": "Specialist",
    "burden": 8,
    "build_note": "pump + filtration loop, specialist",
    "efficiency_note": "recirculates, lowest water + energy per wash"
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "seasonal",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "high",
   "lifespan": "10-15 years for the pump/filtration/UV/control system, a proprietary, specialist-repair-only mechanism per its own description, likely toward the shorter end of comparable appliance lifespans",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Green Lodging News / Smithsonian / BuildWithRise, reporting Orbital Systems (manufacturer) figures",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Douche à recirculation en circuit fermé",
    "description": "L’eau de douche évacuée est captée, filtrée et désinfectée aux UV en temps réel (plusieurs fois par minute) puis immédiatement recirculée vers la pomme de douche, complétée seulement par un mince filet d’eau neuve, environ 90% d’eau et 80% d’énergie en moins qu’une douche standard de même durée, selon les chiffres publiés par le fabricant lui-même (vérification indépendante non encore effectuée), car la majeure partie de l’eau recirculée est déjà chaude. La référence de performance claire pour cette sous-fonction, devant la simple douche sous pression. Contrepartie : un système de filtration/UV/pompe/contrôle en temps réel est exactement le type de mécanisme propriétaire et réparable uniquement par un spécialiste que ce catalogue signale ailleurs, une panne ici signifie plus de douche du tout, pas seulement une douche moins efficace.",
    "lifespan": "10 à 15 ans pour le système pompe/filtration/UV/commande, un mécanisme propriétaire, réparable uniquement par un spécialiste selon sa propre description, probablement vers le bas de la fourchette des appareils comparables",
    "build_note": "boucle pompe + filtration, spécialiste",
    "efficiency_note": "recircule, eau et énergie les plus faibles par douche"
   }
  },
  {
   "id": "SOL-171",
   "name": "Gravity-powered lamp",
   "subfunction_id": "FN-04.3",
   "function_id": "FN-04",
   "summary": "A slowly descending weight drives a small generator through a gear train, powering an LED for roughly 20-30 minutes per lift (a few seconds of lifting effort) at a modest 5-15 lumens, no battery, no grid, no sunlight needed, so it works identically at 3pm or 3am, indoors or out. Roughly five times brighter than an open-wick kerosene lamp, with none of the indoor air pollution. Genuinely closes the passive-lighting gap flagged 2026-08-08 (`02-Decisions-and-Tradeoffs-Log.md`), but honestly scoped: 5-15 lumens is task/emergency lighting, not a room's primary light source. Positioned as a backup alongside LED, not a replacement for it.",
   "slug": "gravity-powered-lamp",
   "slug_fr": "lampe-a-gravite",
   "inputs": [
    {
     "io": "IO-21",
     "name": "Mechanical Energy"
    }
   ],
   "outputs": [
    {
     "io": "IO-23",
     "name": "Daylight"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "weight + gear + generator build",
    "efficiency_note": "a few lumens for minutes per lift, emergency only"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "10-15 years for the gear train and LED; a mechanical device with no battery to degrade, one of the more durable lighting entries",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Wikipedia (GravityLight/Deciwatt) + Al Jazeera coverage",
     "tier": "B/C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Lampe à gravité",
    "description": "Un poids qui descend lentement entraîne un petit générateur via un train d’engrenages, alimentant une LED pendant environ 20 à 30 minutes par levée (quelques secondes d’effort) pour un modeste 5 à 15 lumens, aucune batterie, aucun réseau, aucun soleil nécessaire, donc fonctionne identiquement à 15h ou à 3h du matin, en intérieur ou en extérieur. Environ cinq fois plus lumineux qu’une lampe à mèche au kérosène, sans aucune pollution de l’air intérieur. Comble réellement le manque d’éclairage passif signalé le 08/08/2026 (`02-Decisions-and-Tradeoffs-Log.md`), mais avec un périmètre honnête : 5 à 15 lumens correspond à un éclairage de tâche ou d’urgence, pas à la source de lumière principale d’une pièce. Positionnée comme un secours aux côtés du LED, pas comme un remplacement.",
    "lifespan": "10 à 15 ans pour le train d’engrenages et la LED ; un dispositif mécanique sans batterie à dégrader, l’une des entrées d’éclairage les plus durables",
    "build_note": "construction poids + engrenage + générateur",
    "efficiency_note": "quelques lumens pendant quelques minutes par levée, urgence uniquement"
   }
  },
  {
   "id": "SOL-172",
   "name": "Satellite internet terminal",
   "subfunction_id": "FN-15.1",
   "function_id": "FN-15",
   "summary": "Low-earth-orbit satellite internet (e.g. Starlink-type terminal), roughly 99.1% measured uptime (about 13-34 minutes of daily downtime from handoffs/weather), independent of local fixed-line or cellular tower infrastructure, making it a genuinely different failure domain from either. Not bulletproof on its own, weather-sensitive, congestion at peak hours, weaker uploads, which is why it's best paired with, not substituted for, fixed broadband and cellular rather than relied on alone. Needs continuous power for the terminal itself, a clear sky view, and is fully proprietary hardware/subscription.",
   "slug": "satellite-internet-terminal",
   "slug_fr": "terminal-internet-satellite",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-25",
     "name": "Connectivity Signal"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 3,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 6,
    "build_note": "dish + mount + setup",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Minor",
   "cost": "high",
   "lifespan": "Terminal hardware: 5-10 years typical consumer-electronics cycle; the underlying satellite constellation itself has individual satellites with a 5-7 year design life, replaced by the operator, not the household",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Clear sky view (no dense tree canopy or structure overhead)",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "BroadbandNow / US Mobile Starlink reviews",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Terminal internet satellite",
    "description": "Internet par satellite en orbite basse (type terminal Starlink), environ 99,1% de disponibilité mesurée (environ 13 à 34 minutes d’indisponibilité quotidienne liées aux transferts de satellite ou à la météo), indépendant de l’infrastructure filaire locale ou des antennes-relais mobiles, ce qui en fait un domaine de défaillance réellement différent des deux autres. Pas infaillible en soi, sensible à la météo, congestion aux heures de pointe, débit montant plus faible, d’où l’intérêt de l’associer, plutôt que de le substituer, à la fibre fixe et au mobile plutôt que d’en dépendre seul. Nécessite une alimentation électrique continue pour le terminal lui-même, une vue dégagée sur le ciel, et repose entièrement sur du matériel et un abonnement propriétaires.",
    "lifespan": "Matériel du terminal : cycle typique de l’électronique grand public, 5-10 ans ; la constellation satellite sous-jacente elle-même comporte des satellites individuels d’une durée de vie de conception de 5-7 ans, remplacés par l’opérateur, pas par le foyer",
    "site_prerequisites": "Vue dégagée sur le ciel (pas de canopée dense ni de structure en surplomb)",
    "build_note": "antenne + support + paramétrage"
   }
  },
  {
   "id": "SOL-173",
   "name": "Mycelium (fungal) insulation panel",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Grows Pleurotus ostreatus (oyster mushroom) mycelium through a pasteurized cardboard substrate in a mold to bind it into a rigid insulation panel, then kills the mycelium and cures the panel by baking (~80C, 1hr). Fire-resistant and partially water-resistant after baking; sensitive to humidity if it were ever left uncooked, so keep out of wet rooms regardless. A genuinely bio-based, home-growable insulation material distinct from purchased wood-wool or straw board.",
   "slug": "mycelium-insulation-panel",
   "slug_fr": "panneau-isolant-en-mycelium",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 1,
    "build_note": "grown / molded panels",
    "efficiency_note": "moderate lambda, more thickness for same R"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Building-lifetime once baked/cured (fire-resistant, partially water-resistant per its own description); a genuinely new material with limited long-term field data, so treat this as a plausible estimate rather than a verified figure",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Keep out of consistently wet rooms regardless of curing, per its own description",
   "new_build_only": false,
   "regulation_fr": "New construction falls under RE2020, which sets thermal and carbon performance thresholds for the building as a whole rather than approving individual materials.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Panneau_isolant_au_Myc%C3%A9lium_de_champignon/fr",
     "lang": "fr"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Panneau_isolant_au_Myc%C3%A9lium_de_champignon/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, mycelium insulation panel tutorial (developed with Critical Concrete, Porto)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Panneau isolant en mycélium",
    "description": "Fait pousser le mycélium de Pleurotus ostreatus (pleurote) à travers un substrat de carton pasteurisé dans un moule pour le lier en un panneau isolant rigide, puis tue le mycélium et fait durcir le panneau au four (~80°C, 1h). Résistant au feu et partiellement résistant à l’eau après cuisson ; sensible à l’humidité s’il restait non cuit, donc à tenir hors des pièces humides dans tous les cas. Un matériau isolant réellement biosourcé et cultivable à domicile, distinct des panneaux de laine de bois ou de paille achetés.",
    "lifespan": "Durée de vie du bâtiment une fois cuit/durci (résistant au feu, partiellement résistant à l’eau selon sa propre description) ; un matériau réellement nouveau avec des données de terrain à long terme limitées, à considérer donc comme une estimation plausible plutôt qu’un chiffre vérifié",
    "site_prerequisites": "À tenir hors des pièces durablement humides quelle que soit la cuisson, selon sa propre description",
    "build_note": "panneaux cultivés et moulés",
    "efficiency_note": "lambda modéré, plus d’épaisseur pour une même résistance R",
    "regulation_fr": "La construction neuve relève de la RE2020, qui fixe des seuils de performance thermique et carbone pour le bâtiment dans son ensemble plutôt que d’approuver des matériaux individuels."
   }
  },
  {
   "id": "SOL-174",
   "name": "DIY shade-sail window screen",
   "subfunction_id": "FN-02.8",
   "function_id": "FN-02",
   "summary": "Exterior shade cloth (voile d'ombrage) cut and hemmed to size, hung on hooks over windows/skylights/glazed doors, removable, reusable, far cheaper and structurally simpler than a mounted brise-soleil: sewing skill only, no structural fixing. Field-tested by its author over a full summer with a clearly noted result.",
   "slug": "diy-shade-sail-window-screen",
   "slug_fr": "pare-soleil-textile-amovible",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "cut and hem cloth, hang",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "3-5 years for outdoor UV-exposed shade cloth before it needs replacement; hardware (hooks, hems) lasts longer",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Pare-soleil_pour_fen%C3%AAtres,_velux,_baies_vitr%C3%A9es",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Pare-soleil_pour_fen%C3%AAtres%2C_velux%2C_baies_vitr%C3%A9es",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, shade-sail window screen tutorial",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Pare-soleil textile amovible (fait maison)",
    "description": "Voile d’ombrage extérieur découpé et ourlé sur mesure, suspendu à des crochets au-dessus des fenêtres, velux ou baies vitrées, amovible, réutilisable, bien plus économique et structurellement plus simple qu’un brise-soleil monté : seule une compétence en couture est nécessaire, aucune fixation structurelle. Testé sur le terrain par son auteur pendant un été complet, avec un résultat clairement noté.",
    "lifespan": "3 à 5 ans pour un voile d’ombrage extérieur exposé aux UV avant qu’il ne nécessite un remplacement ; la quincaillerie (crochets, ourlets) dure plus longtemps",
    "build_note": "découpe et ourlet du tissu, suspension"
   }
  },
  {
   "id": "SOL-175",
   "name": "DIY activated-charcoal air filter",
   "subfunction_id": "FN-03.4",
   "function_id": "FN-03",
   "summary": "A bottle or box packed with activated charcoal, run passively (no fan) to adsorb airborne particulates and some VOCs from indoor air, a cheap complement to ventilation, not a substitute for it. Caveat, not smoothed over: the source tutorial gives no airflow or performance figures, and a passive (unpowered) filter has limited real throughput without forced air movement through the media, treat the mechanism as plausible but unverified until corroborated.",
   "slug": "diy-activated-charcoal-air-filter",
   "slug_fr": "filtre-a-air-maison-au-charbon-actif",
   "inputs": [
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "pack charcoal into a housing",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Activated charcoal media: 3-6 months before adsorption capacity saturates and needs replacing (same order as the source's own lack of performance data, flagged Tier D already)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Purificateur_d'air_DIY",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Purificateur_d%27air_DIY",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, DIY activated-charcoal air filter tutorial",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Filtre à air maison au charbon actif",
    "description": "Une bouteille ou une boîte remplie de charbon actif, fonctionnant passivement (sans ventilateur) pour adsorber les particules en suspension et certains COV de l’air intérieur, un complément économique à la ventilation, pas un substitut. Réserve, non dissimulée : le tutoriel source ne donne aucun chiffre de débit d’air ni de performance, et un filtre passif (non motorisé) a un débit réel limité sans mouvement d’air forcé à travers le média, considérer le mécanisme comme plausible mais non vérifié tant qu’il n’est pas corroboré.",
    "lifespan": "Media en charbon actif : 3 à 6 mois avant que la capacité d’adsorption ne sature et ne nécessite un remplacement (même ordre de grandeur que le manque de données de performance de la source, déjà signalée niveau D)",
    "build_note": "charbon tassé dans un boîtier"
   }
  },
  {
   "id": "SOL-176",
   "name": "Rope pump (manual, low-cost well pump)",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "A loop of rope threaded with rubber/plastic washers, pulled up through a length of pipe by a hand crank, lifting water to the surface, cheaper and more field-repairable with local materials than a piston-based hand pump. Documented and refined for low-resource contexts by the SMART Centre (Malawi), typically paired with manual well-drilling methods (Mzuzu, Shipo) for a fully self-built water access point where a drilling rig isn't available or affordable.",
   "slug": "rope-pump",
   "slug_fr": "pompe-a-corde",
   "inputs": [
    {
     "io": "IO-21",
     "name": "Mechanical Energy"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "rope + washers + pipe + crank",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "10-15 years for the rope/washer mechanism; rope itself needs periodic replacement as it wears (a cheaper, more frequent renewal than a piston pump's seals, per its own description)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Requires an accessible shallow well or borehole",
   "new_build_only": false,
   "regulation_fr": "A domestic borehole or well must be declared to the mairie (art. L2224-9 CGCT). Water intended for domestic use must be tested, and the installation kept separate from the public network.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Acc%C3%A8s_%C3%A0_l'Eau_Forage_et_Pompe",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Acc%C3%A8s_%C3%A0_l%27Eau_Forage_et_Pompe",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, citing SMART Centre Malawi well-drilling and rope-pump tutorials",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Pompe à corde (pompe de puits manuelle low-cost)",
    "description": "Une boucle de corde enfilée de rondelles en caoutchouc ou plastique, remontée à travers une longueur de tuyau par une manivelle, faisant remonter l’eau en surface, plus économique et plus réparable sur place avec des matériaux locaux qu’une pompe à main à piston. Documentée et perfectionnée pour les contextes à faibles ressources par le SMART Centre (Malawi), généralement associée à des méthodes de forage manuel (Mzuzu, Shipo) pour un point d’accès à l’eau entièrement autoconstruit là où une foreuse n’est pas disponible ou abordable.",
    "lifespan": "10 à 15 ans pour le mécanisme corde/rondelles ; la corde elle-même nécessite un remplacement périodique à mesure qu’elle s’use (un renouvellement moins coûteux et plus fréquent que les joints d’une pompe à piston, selon sa propre description)",
    "site_prerequisites": "Nécessite un puits ou un forage peu profond et accessible",
    "build_note": "corde + rondelles + tuyau + manivelle",
    "regulation_fr": "Un forage ou puits domestique doit être déclaré en mairie (art. L2224-9 CGCT). L’eau destinée à un usage domestique doit être analysée, et l’installation maintenue séparée du réseau public."
   }
  },
  {
   "id": "SOL-177",
   "name": "Hydraulic ram pump (belier hydraulique)",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "Uses the kinetic energy and water-hammer effect of a continuously flowing source (stream, river, spring with sufficient fall) to lift a fraction of that flow to a higher point, entirely without electricity, fuel, or lubrication, some documented installations have run continuously for decades. Genuinely site-dependent: needs a reliable flowing water source with roughly 10%+ slope and a real fall height between source and pump; not usable without one.",
   "slug": "hydraulic-ram-pump",
   "slug_fr": "belier-hydraulique",
   "inputs": [
    {
     "io": "IO-20",
     "name": "Flowing Water (Hydro Potential)"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "valves + pressure chamber, plumbing",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "20-30+ years, some documented ram-pump installations have run continuously for decades per its own description, with periodic valve/seal servicing",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Flowing water source (stream/river/spring) with sufficient fall/slope on site",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/B%C3%A9lier_hydraulique/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/B%C3%A9lier_hydraulique/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, ram pump tutorial (invented 1797, patented 1857, long production history)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Bélier hydraulique",
    "description": "Utilise l’énergie cinétique et l’effet de coup de bélier d’une source en écoulement continu (ruisseau, rivière, source avec assez de chute) pour élever une fraction de ce débit vers un point plus haut, entièrement sans électricité, combustible ni lubrification, certaines installations documentées fonctionnent en continu depuis des décennies. Réellement dépendant du site : nécessite une source d’eau courante fiable avec environ 10% de pente ou plus et une réelle hauteur de chute entre la source et la pompe ; inutilisable sans cela.",
    "lifespan": "20 ans ou plus, certaines installations de bélier hydraulique documentées fonctionnent en continu depuis des décennies selon sa propre description, avec un entretien périodique des clapets/joints",
    "site_prerequisites": "Source d’eau courante (ruisseau, rivière, source) avec assez de chute ou de pente sur le terrain",
    "build_note": "vannes + chambre de pression, plomberie"
   }
  },
  {
   "id": "SOL-178",
   "name": "Wood-stove flue water heater (thermosiphon coil)",
   "subfunction_id": "FN-06.5",
   "function_id": "FN-06",
   "summary": "A copper coil wrapped around a wood stove's flue pipe, thermosiphon-fed to a water heater tank, captures waste heat from a stove already burning for space heating to also heat domestic water, at no extra fuel cost. A distinct mechanism from both the solar thermosiphon heater and the compost-coil preheater: the heat source is flue gas, most productive exactly when solar gain is lowest, winter, when the stove runs most.",
   "slug": "wood-stove-flue-water-heater",
   "slug_fr": "chauffe-eau-sur-conduit-de-poele",
   "inputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 2,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "coil around the stove flue, plumbing",
    "efficiency_note": "free heat, but only while the stove is already burning"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "15-25 years for the copper coil before flue-gas corrosion or soot fouling degrades performance",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Requires an existing wood stove with an accessible flue pipe; soldering competence to install",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Chauffe_eau_sans_electricit%C3%A9/es",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Chauffe_eau_sans_electricit%C3%A9/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, wood-stove flue water heater tutorial",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Chauffe-eau sur conduit de poêle (serpentin à thermosiphon)",
    "description": "Un serpentin de cuivre enroulé autour du conduit d’un poêle à bois, alimenté par thermosiphon vers un ballon d’eau chaude, capte la chaleur perdue d’un poêle déjà en fonctionnement pour le chauffage pour chauffer aussi l’eau sanitaire, sans coût de combustible supplémentaire. Un mécanisme distinct à la fois du chauffe-eau solaire à thermosiphon et du préchauffeur à serpentin dans le compost : la source de chaleur est le gaz de fumée, le plus productif précisément quand l’apport solaire est le plus faible, l’hiver, quand le poêle fonctionne le plus.",
    "lifespan": "15 à 25 ans pour le serpentin de cuivre avant que la corrosion par les gaz de fumée ou l’encrassement par la suie ne dégrade la performance",
    "site_prerequisites": "Nécessite un poêle à bois existant avec un conduit de fumée accessible ; compétence en soudure pour l’installation",
    "build_note": "serpentin autour du conduit du poêle, plomberie",
    "efficiency_note": "chaleur gratuite, mais seulement tant que le poêle brûle déjà",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-179",
   "name": "Pressure canning / autoclave sterilization",
   "subfunction_id": "FN-10.5",
   "function_id": "FN-10",
   "summary": "Sterilizes filled, sealed jars under pressure and heat (following standard time/temperature tables) for genuinely shelf-stable, room-temperature food preservation, a distinct mechanism from drying, fermentation, or salt-curing, suited to cooked dishes, vegetables, and low-acid foods those methods don't handle. Two build variants documented: a wood/pellet-fired chamber piped into an existing chimney flue (the source's own primary, cheaper-to-run build, flagged by its own author as still semi-experimental), or a simply-insulated electric version usable off a small PV system for sites without a chimney or sunny space for a solar-thermal build.",
   "slug": "pressure-canning-autoclave-sterilization",
   "slug_fr": "sterilisation-par-autoclave",
   "inputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    },
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-31",
     "name": "Preserved Food"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "no build; canner + jars, procedure",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Wood-fired chamber structure: 15-20 years; the electric variant follows standard insulated-appliance cycles (10-15 years)",
   "embodied_carbon": "low-medium",
   "footprint": "medium",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Wood-fired variant needs an existing chimney flue connection",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Autoclave_a_pellets",
     "lang": "fr"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Autoclave_a_pellets",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, pellet-fired and electric autoclave tutorials",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Stérilisation par autoclave (mise en conserve sous pression)",
    "description": "Stérilise des bocaux remplis et fermés sous pression et chaleur (selon des tables temps/température standard) pour une conservation alimentaire réellement stable à température ambiante, un mécanisme distinct du séchage, de la fermentation ou de la salaison, adapté aux plats cuisinés, légumes et aliments peu acides que ces méthodes ne traitent pas. Deux variantes de construction documentées : une chambre chauffée au bois ou aux granulés raccordée à un conduit de cheminée existant (la construction principale et la moins coûteuse à faire fonctionner selon la source, signalée par son propre auteur comme encore semi-expérimentale), ou une version électrique simplement isolée utilisable sur un petit système photovoltaïque pour les sites sans cheminée ni espace ensoleillé pour un montage solaire thermique.",
    "lifespan": "Structure de la chambre chauffée au bois : 15-20 ans ; la variante électrique suit les cycles standards d’appareil isolé (10-15 ans)",
    "site_prerequisites": "La variante à bois nécessite un raccordement à un conduit de cheminée existant",
    "build_note": "aucune construction ; autoclave + bocaux, procédure"
   }
  },
  {
   "id": "SOL-180",
   "name": "Micro-gasifier (TLUD) cookstove",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "Top-lit updraft gasifier: pyrolyzes wood or pellets in a low-oxygen chamber to release combustible syngas, then burns that gas in a secondary combustion zone above, roughly 30-45% thermal efficiency well-built, against 10-15% for an open three-stone fire, per the source's own comparative figures (citing a specialist, Dr. Paul Anderson, and a third-party comparative cookstove report). Produces reusable char as a byproduct, a direct input to the biochar entry. Buildable from tin cans for near-zero cost, though a tin-can build has a short working life; a stainless-steel version lasts longer.",
   "slug": "micro-gasifier-cookstove",
   "slug_fr": "fourneau-micro-gazeificateur",
   "inputs": [
    {
     "io": "IO-04",
     "name": "Biomass Fuel"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    },
    {
     "io": "IO-28",
     "name": "Biochar"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 3,
    "efficiency": 2,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "metal canister build",
    "efficiency_note": "high combustion efficiency, little fuel"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "low",
   "lifespan": "Tin-can build: under 1 year (short working life per its own description); stainless-steel version: 10-15 years",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "Flue installation follows DTU 24.1. Chimney sweeping is compulsory (typically once or twice a year) under the departmental sanitary regulation, and insurers generally require proof. Some communes restrict wood burning under an air-quality plan.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Cuiseur_micro_gaz%C3%A9ificateur/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Cuiseur_micro_gaz%C3%A9ificateur/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, micro-gasifier stove tutorial, citing Dr. Paul Anderson and Planete Bois comparative report",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Fourneau micro-gazéificateur (TLUD)",
    "description": "Gazéificateur à tirage ascendant allumé par le haut : pyrolyse le bois ou les granulés dans une chambre pauvre en oxygène pour libérer un gaz de synthèse combustible, puis brûle ce gaz dans une zone de combustion secondaire au-dessus, environ 30-45% de rendement thermique bien construit, contre 10-15% pour un feu ouvert à trois pierres, selon les chiffres comparatifs de la source elle-même (citant un spécialiste, le Dr Paul Anderson, et un rapport comparatif tiers sur les cuisinières). Produit du charbon réutilisable comme sous-produit, un intrant direct pour l’entrée biochar. Réalisable à partir de boîtes de conserve pour un coût quasi nul, bien qu’une version en boîte de conserve ait une durée de vie courte ; une version en acier inoxydable dure plus longtemps.",
    "lifespan": "Version boîte de conserve : moins d’1 an (durée de vie courte selon sa propre description) ; version en acier inoxydable : 10-15 ans",
    "build_note": "construction en boîtier métallique",
    "efficiency_note": "haute efficacité de combustion, peu de combustible",
    "regulation_fr": "L’installation du conduit suit le DTU 24.1. Le ramonage est obligatoire (généralement une à deux fois par an) selon le règlement sanitaire départemental, et les assureurs en exigent généralement la preuve. Certaines communes restreignent le chauffage au bois dans le cadre d’un plan de qualité de l’air."
   }
  },
  {
   "id": "SOL-181",
   "name": "Hand-agitated bucket washing machine (manual plunger type)",
   "subfunction_id": "FN-11.2",
   "function_id": "FN-11",
   "summary": "A two-bucket system: an inner perforated bucket holds the laundry, a plunger sealed with a bicycle inner tube forces water through it by hand-pumping, cheaper and mechanically simpler than the pedal-powered washing machine (no drivetrain or pedal mechanism at all), at the cost of more direct manual effort per load. Works with potable or non-potable water.",
   "slug": "hand-agitated-bucket-washing-machine",
   "slug_fr": "machine-a-laver-manuelle-a-seaux",
   "inputs": [
    {
     "io": "IO-21",
     "name": "Mechanical Energy"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "two buckets + plunger seal",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "10-15 years for the bucket/plunger mechanism; the inner-tube seal needs earlier periodic replacement",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Machine_%C3%A0_laver_%C3%A0_main",
     "lang": "fr"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Machine_%C3%A0_laver_%C3%A0_main",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, hand-agitated bucket washing machine tutorial",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Machine à laver manuelle à seaux (type piston)",
    "description": "Un système à deux seaux : un seau intérieur perforé contient le linge, un piston scellé avec une chambre à air de vélo force l’eau à le traverser par pompage manuel, plus économique et mécaniquement plus simple que la machine à laver à pédale (aucune transmission ni mécanisme de pédalier), au prix d’un effort manuel direct plus important par lessive. Fonctionne avec de l’eau potable ou non potable.",
    "lifespan": "10 à 15 ans pour le mécanisme seau/piston ; le joint en chambre à air nécessite un remplacement périodique plus précoce",
    "build_note": "deux seaux + joint de piston"
   }
  },
  {
   "id": "SOL-182",
   "name": "Vermicomposting (worm bin)",
   "subfunction_id": "FN-14.2",
   "function_id": "FN-14",
   "summary": "Earthworms (typically Eisenia fetida, 'red wigglers') digest organic waste in a ventilated bin at ambient temperature, producing both finished compost and a separate liquid leachate ('worm tea') drawn off through a tap, a distinct mechanism from the hot compost pile (thermophilic, needs real volume and turning) and bokashi (anaerobic fermentation). Suits small, continuous kitchen-scraps volumes and can be sited indoors or in a sheltered spot rather than needing an outdoor pile. Build cost scales with size, the source's own example is a 300L farm-scale unit; a household bin is far smaller and cheaper.",
   "slug": "vermicomposting",
   "slug_fr": "lombricompostage",
   "inputs": [
    {
     "io": "IO-13",
     "name": "Organic Waste"
    }
   ],
   "outputs": [
    {
     "io": "IO-12",
     "name": "Compost"
    },
    {
     "io": "IO-15",
     "name": "Nutrients"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "simple worm bin",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Bin structure: 10-20 years; the worm colony itself is self-sustaining indefinitely with proper care, not a wearing asset",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Lombricomposteur",
     "lang": "fr"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Lombricomposteur",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, cross-referenced against Ontario Ministry of Agriculture vermicomposting guide and Fritz et al. 2012 (Canadian Journal of Microbiology)",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Lombricompostage (bac à vers)",
    "description": "Des vers de terre (généralement Eisenia fetida, « vers rouges ») digèrent les déchets organiques dans un bac ventilé à température ambiante, produisant à la fois un compost fini et un lixiviat liquide séparé (« thé de compost ») récupéré via un robinet, un mécanisme distinct du tas de compost chaud (thermophile, nécessite un vrai volume et un retournement) et du bokashi (fermentation anaérobie). Convient à de petits volumes continus d’épluchures de cuisine et peut être installé en intérieur ou dans un endroit abrité plutôt que de nécessiter un tas extérieur. Le coût de construction augmente avec la taille, l’exemple de la source est une unité de 300L à échelle agricole ; un bac domestique est bien plus petit et moins coûteux.",
    "lifespan": "Structure du bac : 10-20 ans ; la colonie de vers elle-même est indéfiniment autonome avec un entretien correct, pas un bien qui s’use",
    "build_note": "bac à vers simple"
   }
  },
  {
   "id": "SOL-183",
   "name": "Motorized heliostat mirror (north-facing daylighting)",
   "subfunction_id": "FN-04.1",
   "function_id": "FN-04",
   "summary": "A sun-tracking, two-axis motorized mirror redirects daylight (and a modest amount of heat) into a north-facing window that would otherwise receive none, claimed roughly equivalent gain to a same-sized south-facing window, per the source, not independently verified. Genuinely more complex and fragile than anything else in this catalog's daylighting entries: custom electronics (photoresistor sensor board, H-bridge motor driver, hand-soldered), two motorized axes, implied ongoing calibration. Flagged honestly as a poor fit for this project's repairability bar, catalogued as an available option for a specific site condition (a useful north-facing room with no other daylighting fix), not a general recommendation.",
   "slug": "motorized-heliostat-mirror",
   "slug_fr": "miroir-heliostat-motorise",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-23",
     "name": "Daylight"
    },
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 9,
    "build_note": "tracking mirror + motors + control",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "frequent",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "Significant",
   "cost": "medium",
   "lifespan": "5-10 years for the custom electronics (photoresistor, H-bridge driver) and motorized axes, explicitly flagged elsewhere as fragile and needing ongoing calibration",
   "embodied_carbon": "medium",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "A north-facing window/room lacking other daylighting options, with space for the mirror assembly",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Miroir_pilot%C3%A9_-_Heliostat_-_Lumi%C3%A8re_(et_chauffage)_c%C3%B4t%C3%A9_Nord_!",
     "lang": null
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Miroir_pilot%C3%A9_-_Heliostat_-_Lumi%C3%A8re_%28et_chauffage%29_c%C3%B4t%C3%A9_Nord_%21",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, heliostat tutorial",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Miroir héliostat motorisé (éclairage nord)",
    "description": "Un miroir motorisé à deux axes suivant le soleil redirige la lumière du jour (et une quantité modeste de chaleur) vers une fenêtre orientée au nord qui n’en recevrait autrement aucune, un gain revendiqué à peu près équivalent à une fenêtre orientée au sud de même taille, selon la source, non vérifié indépendamment. Réellement plus complexe et plus fragile que toute autre entrée d’éclairage naturel de ce catalogue : électronique sur mesure (carte à photorésistance, pont en H pour le moteur, soudée à la main), deux axes motorisés, calibration continue implicite. Signalée honnêtement comme peu adaptée à l’exigence de réparabilité de ce projet, cataloguée comme une option disponible pour une condition de site spécifique (une pièce orientée au nord utile sans autre solution d’éclairage naturel), pas une recommandation générale.",
    "lifespan": "5 à 10 ans pour l’électronique sur mesure (photorésistance, driver en pont H) et les axes motorisés, explicitement signalée ailleurs comme fragile et nécessitant une calibration continue",
    "site_prerequisites": "Une fenêtre ou pièce orientée nord sans autre option d’éclairage naturel, avec l’espace pour l’ensemble du miroir",
    "build_note": "miroir suiveur + moteurs + commande"
   }
  },
  {
   "id": "SOL-184",
   "name": "Zeer pot (evaporative pot-in-pot cooler)",
   "subfunction_id": "FN-10.1",
   "function_id": "FN-10",
   "summary": "Two nested unglazed terracotta pots with a roughly 4cm layer of wet sand packed between them; evaporation of the sand's moisture draws heat out of the inner pot, dropping its internal temperature about 10C below ambient under good conditions (dry air, shade, airflow, sand kept moist ~2x/day), extends most vegetables' usable life by 15-20 days over open air, per the source. This is the active-evaporative mechanism that sand-box root storage explicitly does not use (that method separates and buffers produce but claims no cooling effect). Shares evaporative cooling's core limitation: effectiveness drops in humid air, a real caveat for Normandy's oceanic climate, so this is scoped as a supplementary short-term buffer rather than a primary cold-storage solution here.",
   "slug": "zeer-pot",
   "slug_fr": "pot-zeer",
   "inputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    },
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 4,
    "build_note": "nested pots + wet sand",
    "efficiency_note": "a modest drop below ambient, and only while the air stays dry"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "frequent",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Terracotta pots: 10-20+ years if handled carefully (fired clay doesn't wear out, breakage is the failure mode, not age)",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Shaded, ventilated siting; a dry-air location improves performance, flagged as reduced effectiveness in humid climates",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Frigo_du_d%C3%A9sert/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Frigo_du_d%C3%A9sert/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, Zeer pot tutorial, cross-referenced against Practical Action's evaporative cooling guide",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Pot zeer (rafraîchissement évaporatif pot-dans-pot)",
    "description": "Deux pots en terre cuite non émaillée imbriqués avec une couche d’environ 4cm de sable humide tassée entre eux ; l’évaporation de l’humidité du sable extrait la chaleur du pot intérieur, faisant chuter sa température interne d’environ 10°C sous l’ambiante dans de bonnes conditions (air sec, ombre, circulation d’air, sable maintenu humide ~2 fois par jour), prolonge la durée de conservation utile de la plupart des légumes de 15 à 20 jours par rapport à l’air libre, selon la source. C’est le mécanisme actif par évaporation que la conservation en caisse de sable n’utilise justement pas (cette méthode sépare et tamponne les produits mais ne revendique aucun effet de refroidissement). Partage la limite fondamentale du rafraîchissement évaporatif : l’efficacité chute en air humide, une vraie réserve pour le climat océanique normand, donc ceci est cadré comme un tampon complémentaire à court terme plutôt qu’une solution principale de conservation au froid ici.",
    "lifespan": "Pots en terre cuite : 10 ans ou plus manipulés avec soin (l’argile cuite ne s’use pas, la casse est le mode de défaillance, pas l’âge)",
    "site_prerequisites": "Emplacement ombragé et ventilé ; un lieu à air sec améliore la performance, signalé comme moins efficace en climat humide",
    "build_note": "pots imbriqués + sable humide",
    "efficiency_note": "baisse modeste sous l’ambiante, et seulement tant que l’air reste sec"
   }
  },
  {
   "id": "SOL-185",
   "name": "Ground-coupled hydronic cooling loop (buried pipe + radiator)",
   "subfunction_id": "FN-02.12",
   "function_id": "FN-02",
   "summary": "A closed water loop buried roughly 1.5m deep (where ground temperature stabilizes near 12-15C) circulates through a salvaged car radiator and fan indoors via a small pump, a hydronic variant of ground-coupling, distinct from the air-duct earth tube and earth-sheltered form: it retrofits onto an existing structure with a radiator/fan-coil rather than requiring integrated ductwork. Source claims up to roughly 30kWh of cooling delivered per 1kWh of pump/fan electricity, i.e. a COP far above a compressor heat pump since it moves existing heat rather than creating a temperature difference from scratch, self-reported by a single builder, not independently measured.",
   "slug": "ground-coupled-hydronic-cooling-loop",
   "slug_fr": "boucle-hydronique-geocouplee",
   "inputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    },
    {
     "io": "IO-03",
     "name": "AC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-24",
     "name": "Cooling"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 4,
    "build_note": "buried loop + radiator + pump",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Active",
   "maintenance": "occasional",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Buried pipe loop: 30-50 years if a durable material (PE/PEX) is used; the radiator/fan/pump follow standard mechanical-equipment cycles (10-15 years)",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "Ground area available for a buried pipe trench/loop at roughly 1.5m depth; workable (non-rocky) soil",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Clim%27_G%C3%A9othermique",
     "lang": "fr"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Clim%27_G%C3%A9othermique",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, ground-coupled cooling loop tutorial",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Boucle hydronique géocouplée (tube enterré + radiateur)",
    "description": "Une boucle d’eau fermée enterrée à environ 1,5m de profondeur (où la température du sol se stabilise autour de 12-15°C) circule à travers un radiateur de voiture récupéré et un ventilateur intérieur via une petite pompe, une variante hydronique du géocouplage, distincte du puits canadien à air et de la forme semi-enterrée : elle se greffe sur une structure existante avec un radiateur/ventiloconvecteur plutôt que de nécessiter des gaines intégrées. La source revendique jusqu’à environ 30kWh de rafraîchissement livré par kWh d’électricité consommée par la pompe et le ventilateur, soit un COP bien supérieur à une pompe à chaleur à compresseur puisqu’elle déplace de la chaleur existante plutôt que de créer un écart de température à partir de rien, autodéclaré par un seul constructeur, non mesuré indépendamment.",
    "lifespan": "Boucle de tuyau enterrée : 30-50 ans si un matériau durable (PE/PEX) est utilisé ; le radiateur/ventilateur/pompe suivent les cycles standards d’équipement mécanique (10-15 ans)",
    "site_prerequisites": "Surface de terrain disponible pour une tranchée ou boucle de tuyau enterrée à environ 1,5m de profondeur ; sol maniable (non rocheux)",
    "build_note": "boucle enterrée + radiateur + pompe"
   }
  },
  {
   "id": "SOL-186",
   "name": "Insulated draft-blocking curtains",
   "subfunction_id": "FN-02.6",
   "function_id": "FN-02",
   "summary": "DIY window curtains built from an outer fabric layer and an inner reflective/insulating layer (e.g. mylar or foam-backed material), sealed to the window frame with velcro to cut air infiltration and radiative loss, a soft-goods, easily-retrofit alternative to the rigid insulated shutters: faster to make and hang, no structural fixing, but less airtight and less insulating per unit thickness than a solid panel.",
   "slug": "insulated-draft-blocking-curtains",
   "slug_fr": "rideaux-isolants-coupe-froid",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 5,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "sew layered curtains",
    "efficiency_note": "night-only and softer-sealing than a rigid panel"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "5-10 years for the fabric/reflective layer under regular use and washing",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Rideaux_coupe-froid/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Rideaux_coupe-froid/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, insulated curtain tutorial",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Rideaux isolants coupe-froid",
    "description": "Rideaux de fenêtre faits maison composés d’une couche de tissu extérieure et d’une couche intérieure réfléchissante ou isolante (par exemple mylar ou matériau doublé de mousse), scellés au cadre de la fenêtre avec du velcro pour réduire les infiltrations d’air et les pertes radiatives, une alternative souple, facile à installer en rénovation, aux volets isolants rigides : plus rapide à fabriquer et à poser, aucune fixation structurelle, mais moins étanche et moins isolante à épaisseur égale qu’un panneau plein.",
    "lifespan": "5 à 10 ans pour la couche tissu/réfléchissante en usage régulier et avec lavage",
    "build_note": "couture de rideaux multicouches",
    "efficiency_note": "nocturne seulement, isolation plus souple qu’un panneau rigide"
   }
  },
  {
   "id": "SOL-187",
   "name": "Fog collector (cloud net)",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "A vertical mesh net (UV-resistant agricultural shade cloth) strung taut between two posts intercepts suspended fog droplets, which run down the mesh into a gutter and gravity-feed a storage tank sited downhill, genuinely site- and climate-dependent. The reference installation (an Atacama desert fog-oasis research station) averages roughly 8L/m2/day, but yield depends entirely on local fog frequency and wind, which would need to be measured on-site over time before this is relied on as more than an opportunistic supplementary source. Normandy's oceanic climate does produce coastal/valley fog, but at nowhere near desert-fog-belt frequency, and no site-specific data exists yet, flagged honestly rather than assumed viable. Same non-potable-until-treated status as rain/surface water (cross-ref the water-potability spectrum discussion, Process Journal 2026-08-09).",
   "slug": "fog-collector",
   "slug_fr": "capteur-de-brouillard",
   "inputs": [
    {
     "io": "IO-33",
     "name": "Atmospheric Moisture (Fog)"
    },
    {
     "io": "IO-19",
     "name": "Wind"
    }
   ],
   "outputs": [
    {
     "io": "IO-16",
     "name": "Unheated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "mesh net between posts + gutter",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "10-15 years for UV-resistant mesh netting before it needs replacement; posts/structure last longer",
   "embodied_carbon": "medium",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Elevated, wind-exposed siting with regular fog incidence, verify local fog frequency before relying on this as a primary source",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Attrape_Nuages/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Attrape_Nuages/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, fog collector tutorial, citing FogQuest (Canadian NGO) field data",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Capteur de brouillard (filet à nuages)",
    "description": "Un filet vertical tendu (toile d’ombrage agricole résistante aux UV) entre deux poteaux intercepte les gouttelettes de brouillard en suspension, qui ruissellent le long du filet vers une gouttière et alimentent par gravité un réservoir de stockage situé en contrebas, réellement dépendant du site et du climat. L’installation de référence (une station de recherche en oasis de brouillard du désert d’Atacama) produit en moyenne environ 8L/m²/jour, mais le rendement dépend entièrement de la fréquence locale du brouillard et du vent, qui devrait être mesurée sur site dans la durée avant de s’y fier comme plus qu’une source d’appoint opportuniste. Le climat océanique normand produit bien du brouillard côtier ou de vallée, mais loin de la fréquence des ceintures de brouillard désertiques, et aucune donnée spécifique au site n’existe encore, signalé honnêtement plutôt que supposé viable. Même statut de non-potabilité avant traitement que l’eau de pluie ou de surface (cf. la discussion sur le spectre de potabilité de l’eau, Journal de processus du 09/08/2026).",
    "lifespan": "10 à 15 ans pour le filet résistant aux UV avant qu’il ne nécessite un remplacement ; poteaux/structure durent plus longtemps",
    "site_prerequisites": "Emplacement surélevé et exposé au vent avec une incidence régulière de brouillard, vérifier la fréquence locale du brouillard avant d’en faire une source principale",
    "build_note": "filet tendu entre poteaux + gouttière"
   }
  },
  {
   "id": "SOL-188",
   "name": "Passive multi-zone pantry storage system",
   "subfunction_id": "FN-10.2",
   "function_id": "FN-10",
   "summary": "Built-in ventilated storage cabinetry split into up to four distinct passive micro-climates by food type: dry+ventilated+lit (fruit-bowl-type produce), dry+ventilated+dark (tubers/alliums, prevents sprouting), dark+cold+humid (root vegetables, via a north-facing exterior vent box in new construction, or a zeer-pot unit in an existing one), and a reduced-size refrigerator for the remainder, plus separating ethylene-producing produce from ethylene-sensitive produce to reduce spoilage. The cold/humid zone specifically requires a building-design provision (a north-facing wall opening or vent box) that a freestanding pantry cupboard can't provide, which is what puts this in scope rather than a portable storage technique.",
   "slug": "passive-multi-zone-pantry-storage-system",
   "slug_fr": "systeme-de-garde-manger-passif-multi-zones",
   "inputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    },
    {
     "io": "IO-05",
     "name": "Fresh Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-32",
     "name": "Fresh/Perishable Food"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 3,
    "build_note": "built-in multi-climate cabinetry",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Matches structure/cabinetry lifespan (built-in joinery and vent detailing, not a separately wearing product)",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Continuous process",
   "site_prerequisites": "North-facing exterior wall access for the cold/humid zone's vent box (new construction) or floor space for a zeer-pot unit (retrofit)",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Garde-Manger/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Garde-Manger/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, pantry storage tutorial, citing ADEME food-waste figures",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Système de garde-manger passif multi-zones",
    "description": "Meuble de rangement ventilé intégré, divisé en jusqu’à quatre micro-climats passifs distincts selon le type d’aliment : sec+ventilé+éclairé (fruits de type corbeille), sec+ventilé+sombre (tubercules/alliacées, évite la germination), sombre+frais+humide (légumes-racines, via un caisson de ventilation extérieur orienté nord en construction neuve, ou une unité de pot zeer sur bâti existant), et un réfrigérateur de taille réduite pour le reste, avec en plus la séparation des produits émetteurs d’éthylène de ceux sensibles à l’éthylène pour réduire le gâchis. La zone froide et humide nécessite spécifiquement une disposition prévue dès la conception du bâtiment (une ouverture de mur nord ou un caisson de ventilation) qu’une armoire de garde-manger autonome ne peut pas fournir, ce qui la place dans ce périmètre plutôt que comme technique de stockage portable.",
    "lifespan": "Correspond à la durée de vie de la structure/du mobilier (menuiserie intégrée et détails de ventilation, pas un produit qui s’use séparément)",
    "site_prerequisites": "Accès à un mur extérieur orienté nord pour le caisson de ventilation de la zone froide et humide (construction neuve), ou surface au sol pour une unité de pot zeer (rénovation)",
    "build_note": "meuble intégré multi-climats"
   }
  },
  {
   "id": "SOL-189",
   "name": "Slate-clad solar air heater (wall-mounted thermosiphon collector)",
   "subfunction_id": "FN-02.7",
   "function_id": "FN-02",
   "summary": "A south-facing wall-mounted box (tested at 2m2) with a black-slate absorber behind glazing; convective baffles route room air drawn in low, heated by the sun, and returned high by thermosiphon, no fan, no electricity. Source-tested performance: a 5-7C room-temperature rise for a 10-15m2 room in French winter conditions. A wax-thermostat-driven damper opens the circulation automatically only once the collector exceeds 25C and closes it below that, entirely passively. A summer vent ('trappe ete') repurposes the same unit as passive stack ventilation, exhausting warm room air outward instead of returning it. Complements rather than duplicates the window-based passive solar gain entries: those capture gain through glazing directly into the room, this is a dedicated, adjustable-output collector that can be sized and placed independent of window layout.",
   "slug": "slate-clad-solar-air-heater",
   "slug_fr": "capteur-solaire-a-ardoise",
   "inputs": [
    {
     "io": "IO-01",
     "name": "Solar Radiation"
    },
    {
     "io": "IO-06",
     "name": "Stale/Humid Air"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "glazed box + slate absorber + baffles",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low-medium",
   "lifespan": "20-25 years for the collector box (glazing and slate absorber are the longest-lived parts); the wax-thermostat damper mechanism may need earlier replacement",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "South-facing wall area with two through-wall penetrations (low intake, high return) into the conditioned space",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://wiki.lowtechlab.org/wiki/Chauffage_solaire_version_ardoise/en",
     "lang": "en"
    },
    {
     "url": "https://wiki.lowtechlab.org/wiki/Chauffage_solaire_version_ardoise/fr",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Lab wiki, solar air heater tutorial, based on Guy Isabel's 'Les capteurs solaires a air' (Eyrolles); field report from three independent builds",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Capteur solaire à ardoise (thermosiphon mural)",
    "description": "Un caisson mural orienté au sud (testé à 2m²) avec un absorbeur en ardoise noire derrière un vitrage ; des chicanes convectives font circuler l’air de la pièce aspiré en bas, chauffé par le soleil, et renvoyé en haut par thermosiphon, aucun ventilateur, aucune électricité. Performance testée par la source : une hausse de température ambiante de 5 à 7°C pour une pièce de 10-15m² en conditions hivernales françaises. Un clapet piloté par thermostat à cire ouvre automatiquement la circulation seulement une fois le capteur au-dessus de 25°C et la ferme en dessous, entièrement de façon passive. Une trappe d’été réaffecte la même unité en ventilation par tirage passif, évacuant l’air chaud de la pièce vers l’extérieur au lieu de le renvoyer. Complète plutôt que ne duplique les entrées d’apport solaire passif par les fenêtres : celles-ci captent l’apport à travers le vitrage directement dans la pièce, celui-ci est un capteur dédié à sortie réglable, dimensionnable et positionnable indépendamment de la disposition des fenêtres.",
    "lifespan": "20 à 25 ans pour le caisson capteur (le vitrage et l’absorbeur en ardoise sont les pièces les plus durables) ; le mécanisme de clapet à thermostat à cire peut nécessiter un remplacement plus précoce",
    "site_prerequisites": "Surface de mur orientée sud avec deux traversées de mur (entrée basse, retour haut) vers l’espace chauffé",
    "build_note": "caisson vitré + absorbeur en ardoise + chicanes"
   }
  },
  {
   "id": "SOL-190",
   "name": "Direct solar power (battery-free direct-PV supply)",
   "subfunction_id": "FN-09.3",
   "function_id": "FN-09",
   "summary": "Powers DC loads directly from a PV array with no battery or inverter in between: appliances run when the sun shines, and consumption is scheduled to match generation rather than buffered in storage. Trades round-the-clock availability for the embodied cost, losses, and complexity of a battery+inverter stage. Best for deferrable loads (pumping, water heating, charging). Pairs with a PV array; complements rather than replaces a battery bank where night loads are essential.",
   "slug": "direct-solar-power",
   "slug_fr": "alimentation-solaire-directe",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "array to DC loads, no battery",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Wiring and controllers 20-50 years; no battery to replace, which is the approach's central advantage.",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "None (pairs with a PV array).",
   "new_build_only": false,
   "regulation_fr": "Roof-mounted panels on an existing building require a prior declaration (declaration prealable) at the mairie; stricter rules apply within a protected or heritage perimeter. Grid connection additionally requires an Enedis agreement and Consuel certification.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://solar.lowtechmagazine.com/2023/08/direct-solar-power-off-grid-without-batteries/",
     "lang": "en"
    },
    {
     "url": "https://solar.lowtechmagazine.com/fr/2024/01/direct-solar-power-off-grid-without-batteries/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Magazine, 'Direct Solar Power: Off-Grid Without Batteries'",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Alimentation solaire directe (PV sans batterie)",
    "description": "Alimente des charges continues directement depuis un champ photovoltaïque sans batterie ni onduleur intermédiaire : les appareils fonctionnent quand le soleil brille, et la consommation est programmée pour suivre la production plutôt que tamponnée dans un stockage. Échange la disponibilité permanente contre le coût de production, les pertes et la complexité d’un étage batterie+onduleur. Idéal pour les charges différables (pompage, chauffage de l’eau, recharge). S’associe à un champ photovoltaïque ; complète plutôt que ne remplace un parc de batteries là où les charges nocturnes sont essentielles.",
    "lifespan": "Câblage et régulateurs 20-50 ans ; aucune batterie à remplacer, ce qui est l’avantage central de cette approche.",
    "site_prerequisites": "Aucun (s’associe à un champ photovoltaïque).",
    "build_note": "champ photovoltaïque vers charges CC, sans batterie",
    "regulation_fr": "Des panneaux posés sur un bâtiment existant nécessitent une déclaration préalable en mairie ; des règles plus strictes s’appliquent dans un périmètre protégé ou patrimonial. Le raccordement au réseau nécessite en outre une convention Enedis et une attestation Consuel."
   }
  },
  {
   "id": "SOL-191",
   "name": "Solar-powered insulated electric oven",
   "subfunction_id": "FN-10.4",
   "function_id": "FN-10",
   "summary": "A heavily insulated cooking box (tile/cork/mortar heat store) heated by a self-made electric resistance element run directly off PV. Unlike the reflective solar cooker, it converts solar electricity to heat and retains it, so cooking does not need direct sun on the food and continues on stored heat. Battery-free; pairs with direct-solar supply. DIY build manual documented step by step.",
   "slug": "solar-powered-insulated-electric-oven",
   "slug_fr": "four-electrique-isole-alimente-par-le-solaire",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-02",
     "name": "Heat"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 2,
    "efficiency": 3,
    "build_skill": "Basic",
    "burden": 2,
    "build_note": "insulated box + PV",
    "efficiency_note": "moderate, weather-dependent"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "None",
   "cost": "low",
   "lifespan": "Insulated body 10-20 years; the resistance element is a low-cost self-made consumable replaced periodically.",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "None (pairs with a PV array).",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://solar.lowtechmagazine.com/2025/10/how-to-build-a-solar-powered-electric-oven/",
     "lang": "en"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Magazine, 'How to Build a Solar Powered Electric Oven'",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Four électrique isolé alimenté par le solaire",
    "description": "Un caisson de cuisson fortement isolé (accumulateur de chaleur en carrelage, liège ou mortier) chauffé par un élément chauffant électrique fait maison alimenté directement par le photovoltaïque. Contrairement au cuiseur solaire réfléchissant, il convertit l’électricité solaire en chaleur et la retient, donc la cuisson n’a pas besoin de soleil direct sur l’aliment et se poursuit sur la chaleur stockée. Sans batterie ; s’associe à l’alimentation solaire directe. Manuel de construction DIY documenté étape par étape.",
    "lifespan": "Caisson isolé 10-20 ans ; l’élément résistant est un consommable fait maison à faible coût, remplacé périodiquement.",
    "site_prerequisites": "Aucun (s’associe à un champ photovoltaïque).",
    "build_note": "caisson isolé + photovoltaïque",
    "efficiency_note": "modéré, dépendant de la météo"
   }
  },
  {
   "id": "SOL-192",
   "name": "Small-scale compressed-air energy storage (CAES)",
   "subfunction_id": "FN-09.2",
   "function_id": "FN-09",
   "summary": "Stores surplus electricity by compressing air into a pressure vessel and recovers it later through an expander/air motor driving a generator. A non-electrochemical alternative to battery storage: longer service life, simpler and more repairable components, no lithium/rare-earth content. The open challenge at household scale is round-trip efficiency versus tank size (the source argues small high-efficiency designs are achievable but this is not yet a common, proven household product). Treat as low-maturity/experimental.",
   "slug": "small-scale-compressed-air-energy-storage",
   "slug_fr": "stockage-d-energie-par-air-comprime-a-petite-echelle",
   "inputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": 3,
    "build_skill": "Intermediate",
    "burden": 5,
    "build_note": "compressor + vessel + expander",
    "efficiency_note": "compression and expansion lose a large share of the stored energy as heat"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "seasonal",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "Minor",
   "cost": "medium",
   "lifespan": "Pressure vessel 20+ years; compressor/expander are serviceable moving parts on a shorter cycle. Longer expected life than electrochemical batteries per the source.",
   "embodied_carbon": "medium",
   "footprint": "high",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "Space for a pressure vessel/tank; pairs with a generation source such as a PV array.",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://solar.lowtechmagazine.com/2018/05/ditch-the-batteries-off-grid-compressed-air-energy-storage/",
     "lang": "en"
    },
    {
     "url": "https://solar.lowtechmagazine.com/fr/2018/05/ditch-the-batteries-off-grid-compressed-air-energy-storage/",
     "lang": "fr"
    }
   ],
   "sources": [
    {
     "name": "Low-tech Magazine, 'Ditch the Batteries: Off-Grid Compressed Air Energy Storage'",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Stockage d’énergie par air comprimé à petite échelle (CAES)",
    "description": "Stocke l’électricité excédentaire en comprimant de l’air dans une cuve sous pression et la récupère ensuite via un détendeur ou moteur pneumatique entraînant un générateur. Une alternative non électrochimique au stockage par batterie : durée de vie plus longue, composants plus simples et plus réparables, aucun contenu en lithium ou terres rares. Le défi ouvert à l’échelle domestique est le rendement aller-retour par rapport à la taille de la cuve (la source soutient que des designs compacts à haut rendement sont réalisables, mais ce n’est pas encore un produit domestique courant et éprouvé). À considérer comme peu mature ou expérimental.",
    "lifespan": "Cuve sous pression 20 ans ou plus ; le compresseur/détendeur sont des pièces mobiles réparables sur un cycle plus court. Durée de vie attendue plus longue que les batteries électrochimiques selon la source.",
    "site_prerequisites": "Espace pour une cuve sous pression ; s’associe à une source de production comme un champ photovoltaïque.",
    "build_note": "compresseur + cuve + détendeur",
    "efficiency_note": "la compression et la détente perdent une grande part de l’énergie stockée en chaleur"
   }
  },
  {
   "id": "SOL-193",
   "name": "Solar power diverter / router (surplus-PV to resistive load)",
   "subfunction_id": "FN-09.3",
   "function_id": "FN-09",
   "summary": "Monitors PV export at the meter and diverts surplus (otherwise-exported) PV power to a resistive dump load, typically an immersion water heater, also underfloor heating or a pool pump, to maximise self-consumption without a battery. Well-documented open-source builds exist (Robin Emley's Mk2 PV Router; Andre Buhart's F1ATB 'routeur solaire'). Complements a PV array and direct-solar supply; an alternative to battery storage for time-shifting surplus into hot water.",
   "slug": "solar-power-diverter-router",
   "slug_fr": "routeur-ou-delesteur-solaire",
   "inputs": [
    {
     "io": "IO-03",
     "name": "AC Electricity"
    },
    {
     "io": "IO-18",
     "name": "DC Electricity"
    }
   ],
   "outputs": [
    {
     "io": "IO-17",
     "name": "Heated Water"
    }
   ],
   "ratings": {
    "build": 1,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "diverter + CT sensor + wiring",
    "efficiency_note": ""
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "intermediate",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low-medium",
   "lifespan": "10-15 years (power electronics); the resistive load (immersion element) follows its own longer cycle.",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Weather/time-dependent",
   "site_prerequisites": "Pairs with a PV array and a resistive load such as an immersion tank; works grid-tied or off-grid.",
   "new_build_only": false,
   "regulation_fr": "Fixed electrical installations must meet NF C 15-100, and a Consuel certificate is required before a new connection is energised. Grid-connected generation requires an Enedis connection agreement.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://docs.openenergymonitor.org/pv-diversion/mk2/index.html",
     "lang": "en"
    },
    {
     "url": "https://www.youtube.com/watch?v=jieIqrAOqo8",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "pv-magazine (open-source PV surplus routers) + OpenEnergyMonitor Mk2 PV Router documentation",
     "tier": "B",
     "lang": null
    }
   ],
   "fr": {
    "name": "Routeur ou délesteur solaire (surplus PV vers charge résistive)",
    "description": "Surveille l’export photovoltaïque au compteur et détourne le surplus (qui serait sinon exporté) vers une charge résistive de délestage, typiquement un chauffe-eau à immersion, ou un plancher chauffant ou une pompe de piscine, pour maximiser l’autoconsommation sans batterie. Des montages open-source bien documentés existent (le routeur Mk2 de Robin Emley ; le F1ATB « routeur solaire » d’André Buhart). Complète un champ photovoltaïque et l’alimentation solaire directe ; une alternative au stockage par batterie pour décaler le surplus vers l’eau chaude.",
    "lifespan": "10 à 15 ans (électronique de puissance) ; la charge résistive (élément à immersion) suit son propre cycle plus long.",
    "site_prerequisites": "S’associe à un champ photovoltaïque et à une charge résistive comme un chauffe-eau à immersion ; fonctionne raccordé au réseau ou hors réseau.",
    "build_note": "délesteur + capteur de courant + câblage",
    "regulation_fr": "Les installations électriques fixes doivent respecter la norme NF C 15-100, et une attestation Consuel est requise avant la mise sous tension d’un nouveau raccordement. La production raccordée au réseau nécessite une convention de raccordement Enedis."
   }
  },
  {
   "id": "SOL-194",
   "name": "Lime-hemp (chaux-chanvre) insulating render",
   "subfunction_id": "FN-02.3",
   "function_id": "FN-02",
   "summary": "Natural hydraulic lime (NHL) + hemp shiv (chenevotte) applied as a breathable insulating render coat to existing masonry, roughly 4-6cm for thermal correction, 8-10cm for real insulation, sprayed or hand-applied, with a lambda around 0.07-0.12 W/m.K and a ~100-year life well applied. Distinct from hempcrete infill (same materials, but a monolithic structural infill cast in a frame): this is the render/coating form used to insulate and finish old walls in renovation, respecting the existing structure. Vapour-permeable; excels in felt comfort and humidity regulation more than in raw R-value.",
   "slug": "lime-hemp-insulating-render",
   "slug_fr": "enduit-isolant-chaux-chanvre",
   "inputs": [],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 2,
    "efficiency": 4,
    "build_skill": "Intermediate",
    "burden": 2,
    "build_note": "trowel-applied render",
    "efficiency_note": "a finish coat, not a full insulator"
   },
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Intermediate",
   "consumables": "None",
   "cost": "low-medium",
   "lifespan": "~100 years when well-dosed, thick enough, and correctly applied.",
   "embodied_carbon": "low",
   "footprint": "medium",
   "dispatchability": "None",
   "site_prerequisites": "Existing masonry wall to coat (renovation context); slow even drying needed after application.",
   "new_build_only": false,
   "regulation_fr": "Changing the external appearance of an existing building normally requires a prior declaration (declaration prealable) at the mairie; stricter rules and an architect consultation apply within a protected or heritage perimeter.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [
    {
     "url": "https://alternative-ecologique.fr/enduit-chaux-chanvre/",
     "lang": "fr"
    },
    {
     "url": "https://www.youtube.com/watch?v=4oRgLcuGO74",
     "lang": null
    }
   ],
   "sources": [
    {
     "name": "expertise-renovation.com / alternative-ecologique.fr, enduit chaux-chanvre (lambda 0.07-0.12 W/m.K)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Enduit isolant chaux-chanvre",
    "description": "Chaux naturelle hydraulique (NHL) et chènevotte appliquées en enduit isolant respirant sur une maçonnerie existante, environ 4-6cm pour une correction thermique, 8-10cm pour une réelle isolation, projeté ou appliqué à la main, avec un lambda autour de 0,07-0,12 W/m·K et une durée de vie d’environ 100 ans bien appliqué. Distinct du remplissage en béton de chanvre (mêmes matériaux, mais un remplissage structurel monolithique coulé dans une ossature) : c’est la forme enduit ou revêtement utilisée pour isoler et finir de vieux murs en rénovation, en respectant la structure existante. Perméable à la vapeur d’eau ; excelle dans le confort ressenti et la régulation de l’humidité plus que dans la résistance thermique brute.",
    "lifespan": "Environ 100 ans si bien dosé, assez épais, et correctement appliqué.",
    "site_prerequisites": "Mur maçonné existant à enduire (contexte de rénovation) ; séchage lent et régulier nécessaire après application.",
    "build_note": "enduit appliqué à la taloche",
    "efficiency_note": "une couche de finition, pas un isolant à part entière",
    "regulation_fr": "Modifier l’aspect extérieur d’un bâtiment existant nécessite normalement une déclaration préalable en mairie ; des règles plus strictes et une consultation d’architecte s’appliquent dans un périmètre protégé ou patrimonial."
   }
  },
  {
   "id": "SOL-195",
   "name": "Mains water connection",
   "subfunction_id": "FN-06.1",
   "function_id": "FN-06",
   "summary": "Potable water supplied by the public network, arriving already pressurised and already treated to drinking standard. Needs no on-site energy, storage or treatment, and no pump: the pressure is produced by the utility, which is why a mains-fed fixture keeps working during a power cut. The trade-off is total dependence on that network staying up and on continued ability to pay for it, the single most exposed option here under the disruption assumption, and the reason every other entry in this sub-function exists.",
   "slug": "mains-water-connection",
   "slug_fr": "raccordement-au-reseau-d-eau",
   "inputs": [],
   "outputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 2,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 3,
    "build_note": "utility connects it; no build on your side",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Connection and buried service pipe: 50+ years, effectively the life of the network rather than of anything you own; the meter is replaced by the utility on its own cycle",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "A public water main reaching the property, and a connection permitted by the utility",
   "new_build_only": false,
   "regulation_fr": "Connection is requested from the local water utility and is generally compulsory where a main passes the property in a served zone. Billing includes a sanitation charge where the property is also on the public sewer.",
   "provides_pressure": true,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "French public water service connection practice (mains supply, metering and billing)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Raccordement au réseau d’eau",
    "description": "Eau potable fournie par le réseau public, déjà sous pression et déjà traitée aux normes de potabilité. Ne nécessite aucune énergie, stockage ou traitement sur site, ni aucune pompe : la pression est produite par le fournisseur, ce qui explique pourquoi un équipement raccordé au réseau continue de fonctionner pendant une coupure de courant. La contrepartie est une dépendance totale au maintien de ce réseau et à la capacité continue de le payer, l’option la plus exposée de toutes ici selon l’hypothèse de rupture, et la raison d’être de toutes les autres entrées de cette sous-fonction.",
    "lifespan": "Raccordement et canalisation enterrée : 50 ans ou plus, essentiellement la durée de vie du réseau plutôt que d’un bien possédé ; le compteur est remplacé par le fournisseur selon son propre cycle",
    "site_prerequisites": "Une conduite d’eau publique desservant la propriété, et un raccordement autorisé par le fournisseur",
    "build_note": "raccordé par le fournisseur ; aucune construction de votre côté",
    "regulation_fr": "Le raccordement est demandé auprès du fournisseur d’eau local et est généralement obligatoire lorsqu’une conduite dessert la propriété en zone desservie. La facturation inclut une redevance d’assainissement si la propriété est aussi raccordée au réseau public d’assainissement."
   }
  },
  {
   "id": "SOL-196",
   "name": "Mains sewer connection",
   "subfunction_id": "FN-08.2",
   "function_id": "FN-08",
   "summary": "Blackwater and greywater discharged to the public sewer, with all treatment happening off-site at the municipal works. No tank, no drain field, no land take, and nothing to maintain on the property. In exchange there is no on-site resilience whatsoever: if the network backs up or stops, the household has no fallback, and the nutrients leave the site entirely rather than being recovered.",
   "slug": "mains-sewer-connection",
   "slug_fr": "raccordement-au-reseau-d-assainissement-collectif",
   "inputs": [
    {
     "io": "IO-11",
     "name": "Blackwater"
    },
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "outputs": [],
   "ratings": {
    "build": 2,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 3,
    "build_note": "utility connects it; no build on your side",
    "efficiency_note": "off-site municipal treatment - the highest and most consistent effluent quality of any option here"
   },
   "benchmark": true,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Connection and buried lateral: 50+ years; the public network beyond the boundary is the utility's responsibility, not the householder's",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "Continuous process",
   "site_prerequisites": "A public sewer reaching the property, and a connection permitted by the commune",
   "new_build_only": false,
   "regulation_fr": "Where a public sewer is available, connection is compulsory within two years of it being commissioned (art. L1331-1 code de la sante publique), and a connection charge applies. On-site sanitation is only permitted where no public sewer serves the property.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "French public sanitation (assainissement collectif) connection practice",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Raccordement au réseau d’assainissement collectif",
    "description": "Eaux noires et eaux grises évacuées vers le réseau public d’assainissement, avec tout le traitement effectué hors site à la station municipale. Aucune fosse, aucun épandage, aucune emprise au sol, rien à entretenir sur la propriété. En contrepartie, aucune résilience sur site : si le réseau se bouche ou s’arrête, le foyer n’a aucune solution de repli, et les nutriments quittent entièrement le site au lieu d’être valorisés.",
    "lifespan": "Raccordement et branchement enterré : 50 ans ou plus ; le réseau public au-delà de la limite de propriété est la responsabilité du fournisseur, pas du foyer",
    "site_prerequisites": "Un réseau d’assainissement public desservant la propriété, et un raccordement autorisé par la commune",
    "build_note": "raccordé par le fournisseur ; aucune construction de votre côté",
    "efficiency_note": "traitement municipal hors site, la qualité d’effluent la plus élevée et la plus constante de toutes les options ici",
    "regulation_fr": "Lorsqu’un réseau public d’assainissement est disponible, le raccordement est obligatoire dans les deux ans suivant sa mise en service (art. L1331-1 code de la santé publique), et une redevance de raccordement s’applique. L’assainissement non collectif n’est autorisé que si aucun réseau public ne dessert la propriété."
   }
  },
  {
   "id": "SOL-197",
   "name": "Mains gas connection",
   "subfunction_id": "FN-09.5",
   "function_id": "FN-09",
   "summary": "Natural gas supplied continuously by the public network, burned directly for cooking or heating. No storage, no deliveries to schedule, no fuel to handle, the practical opposite of seasoning and stacking firewood. Fossil-sourced and network-dependent, so it scores badly on both the ecological and resilience axes, but it is the default in most connected French dwellings and belongs here as the comparator.",
   "slug": "mains-gas-connection",
   "slug_fr": "raccordement-au-reseau-de-gaz",
   "inputs": [],
   "outputs": [
    {
     "io": "IO-34",
     "name": "Mains Gas (natural gas)"
    }
   ],
   "ratings": {
    "build": 3,
    "maintain": 1,
    "efficiency": null,
    "build_skill": "Specialist",
    "burden": 3,
    "build_note": "operator connects it; no build on your side",
    "efficiency_note": ""
   },
   "benchmark": true,
   "power": "Passive",
   "maintenance": "none",
   "repair_skill": "specialist",
   "build_skill": "Specialist",
   "consumables": "None",
   "cost": "medium",
   "lifespan": "Connection and buried service pipe: 40+ years; the meter and any regulator are replaced by the operator on its own cycle",
   "embodied_carbon": "high",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "A gas distribution main reaching the property (much of rural Normandy is not served)",
   "new_build_only": false,
   "regulation_fr": "Connection is arranged with the network operator; the internal installation must be certified before commissioning, and periodic inspection of the domestic installation is required. Many rural communes have no gas main at all.",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "French gas distribution connection practice (GRDF network connection and metering)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Raccordement au réseau de gaz",
    "description": "Gaz naturel fourni en continu par le réseau public, brûlé directement pour la cuisson ou le chauffage. Aucun stockage, aucune livraison à planifier, aucun combustible à manipuler, l’opposé pratique du séchage et de l’empilage du bois de chauffage. D’origine fossile et dépendant du réseau, il obtient donc un mauvais score sur les axes écologique et de résilience, mais c’est le choix par défaut dans la plupart des logements français raccordés, et il figure ici comme comparateur.",
    "lifespan": "Raccordement et canalisation enterrée : 40 ans ou plus ; le compteur et un éventuel détendeur sont remplacés par l’opérateur selon son propre cycle",
    "site_prerequisites": "Une conduite de distribution de gaz desservant la propriété (une grande partie de la Normandie rurale n’est pas desservie)",
    "build_note": "raccordé par l’opérateur ; aucune construction de votre côté",
    "regulation_fr": "Le raccordement s’organise avec le gestionnaire du réseau ; l’installation intérieure doit être certifiée avant la mise en service, et une inspection périodique de l’installation domestique est requise. De nombreuses communes rurales ne sont pas desservies par le gaz."
   }
  },
  {
   "id": "SOL-198",
   "name": "Interior adjustable louvre blind (glare control)",
   "subfunction_id": "FN-04.2",
   "function_id": "FN-04",
   "summary": "Horizontal or vertical slats mounted inside the glazing, tilted to cut direct sun out of the line of sight while keeping the room daylit. This is glare control, not heat control, and the distinction matters: the sun has already passed through the glass before interior slats intercept it, so the heat is already in the room. For summer solar gain the device has to be on the outside (see the fixed overhangs, brise-soleil and shade-sail entries under solar gain avoidance). What this solves is the case where glare itself is the problem, a screen or work surface facing a window, or a low evening sun on a west elevation, and it doubles as privacy control. Cheap, universally available, and retrofits to any window without touching the structure.",
   "slug": "interior-adjustable-louvre-blind",
   "slug_fr": "store-a-lamelles-orientables-interieur",
   "inputs": [],
   "outputs": [],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "",
   "cost": "low",
   "lifespan": "10-15 years for the slat stack and tilt mechanism; the tilt cord or wand is the usual first failure and is replaceable on its own",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "",
   "new_build_only": false,
   "regulation_fr": "",
   "provides_pressure": false,
   "needs_pressure": false,
   "tutorials": [],
   "sources": [
    {
     "name": "Designing Buildings wiki, Glare (establishes the discomfort/disability glare distinction this solution addresses; the article defines glare but prescribes no control measures, so it supports the need, not the technique)",
     "tier": "C",
     "lang": null
    }
   ],
   "fr": {
    "name": "Store à lamelles orientables intérieur (contrôle de l’éblouissement)",
    "description": "Des lamelles horizontales ou verticales montées à l’intérieur du vitrage, orientables pour couper le soleil direct du champ de vision tout en gardant la pièce éclairée en lumière naturelle. Il s’agit de contrôler l’éblouissement, pas la chaleur, et la distinction compte : le soleil a déjà traversé le vitrage avant que les lamelles intérieures ne l’interceptent, la chaleur est donc déjà dans la pièce. Pour les apports solaires d’été, le dispositif doit se trouver à l’extérieur (voir les débords fixes, le brise-soleil et le voile d’ombrage dans la sous-fonction protection solaire). Ce que cette solution résout, c’est le cas où l’éblouissement est lui-même le problème, un écran ou un plan de travail face à une fenêtre, ou un soleil rasant de fin de journée sur une façade ouest, et elle assure aussi l’intimité. Peu coûteux, disponible partout, et se pose en rénovation sur n’importe quelle fenêtre sans toucher au bâti.",
    "lifespan": "10 à 15 ans pour l’empilement de lamelles et le mécanisme d’orientation ; la cordelette ou la tringle d’orientation est la première pièce à lâcher et se remplace séparément",
    "build_note": "fixer le rail, poser les lamelles"
   }
  },
  {
   "id": "SOL-199",
   "name": "Cistern-lid handwash basin (handwash water reused for flushing)",
   "subfunction_id": "FN-11.3",
   "function_id": "FN-11",
   "summary": "A small basin sits on the WC cistern lid and is fed from the cistern's own fill valve: you wash your hands in fresh potable water, and that water drains through a coarse strainer into the cistern below to become the next flush. Because it borrows the supply and the drain the cistern already has, it needs no second water pipe and no waste connection, which is what makes it a genuine retrofit to an existing cistern WC rather than a plumbing job. Saves roughly 1.5 litres of potable water per handwash, on the order of 6.5 cubic metres a year for a household of three, by making one volume of water do two jobs. Worth being precise about the water quality: what reaches your hands is fresh potable water, never recycled; only the already-used water is reused, and only for flushing. Distinct from the separate greywater-diversion entry, which is a building-scale plumbing diversion and provides no handwash point of its own; this is a self-contained appliance whose primary purpose is the handwash point.",
   "slug": "cistern-lid-handwash-basin",
   "slug_fr": "lave-mains-sur-reservoir-de-wc",
   "inputs": [
    {
     "io": "IO-09",
     "name": "Potable Water"
    }
   ],
   "outputs": [
    {
     "io": "IO-10",
     "name": "Greywater"
    }
   ],
   "ratings": null,
   "benchmark": false,
   "power": "Passive",
   "maintenance": "occasional",
   "repair_skill": "basic",
   "build_skill": "Basic",
   "consumables": "",
   "cost": "low",
   "lifespan": "15-25 years for the basin and fittings, matching standard sanitaryware; the fill-valve diverter and the strainer are the earlier-wearing parts",
   "embodied_carbon": "low",
   "footprint": "low",
   "dispatchability": "On-demand/controllable",
   "site_prerequisites": "An existing cistern-type WC whose lid the unit can replace or sit on, and a pressurised cold supply already feeding that cistern",
   "new_build_only": false,
   "regulation_fr": "Sold in France as an off-the-shelf sanitary fitting. The reuse happens inside a single appliance rather than through a building-scale greywater network, which is the case French greywater-reuse rules are written around, but treat that as the practical position rather than a verified legal reading, and confirm locally before relying on it.",
   "provides_pressure": false,
   "needs_pressure": true,
   "tutorials": [],
   "sources": [
    {
     "name": "Reutilisation Eau, lave-mains integre aux WC (independent explainer, gives the per-wash and annual savings figures)",
     "tier": "C",
     "lang": null
    },
    {
     "name": "WiCi Concept, kit lave-mains adaptable sur WC (French manufacturer of the adaptable kit; commercial source, product detail only)",
     "tier": "D",
     "lang": null
    }
   ],
   "fr": {
    "name": "Lave-mains sur réservoir de WC (eau de lavage réutilisée pour la chasse)",
    "description": "Une petite vasque posée sur le couvercle du réservoir de WC, alimentée par le robinet flotteur du réservoir lui-même : on se lave les mains à l’eau potable fraîche, et cette eau s’écoule à travers une crépine grossière dans le réservoir en dessous pour devenir la chasse suivante. Comme elle emprunte l’arrivée et l’évacuation que le réservoir possède déjà, elle ne demande ni seconde arrivée d’eau ni raccordement aux eaux usées, ce qui en fait une véritable solution de rénovation sur un WC à réservoir existant plutôt qu’un chantier de plomberie. Économise environ 1,5 litre d’eau potable par lavage de mains, de l’ordre de 6,5 mètres cubes par an pour un foyer de trois personnes, en faisant faire deux usages au même volume d’eau. Il faut être précis sur la qualité de l’eau : ce qui arrive sur les mains est de l’eau potable fraîche, jamais recyclée ; seule l’eau déjà utilisée est réemployée, et uniquement pour la chasse. À distinguer de la solution de dérivation des eaux grises vers la chasse, qui est une dérivation de plomberie à l’échelle du bâtiment et n’offre aucun point de lavage des mains ; il s’agit ici d’un appareil autonome dont la fonction première est justement ce point de lavage.",
    "lifespan": "15 à 25 ans pour la vasque et la robinetterie, comme un appareil sanitaire standard ; le dispositif de dérivation du robinet flotteur et la crépine s’usent plus tôt",
    "site_prerequisites": "Un WC à réservoir existant dont le couvercle peut être remplacé ou supporter l’unité, et une arrivée d’eau froide sous pression alimentant déjà ce réservoir",
    "build_note": "remplacer le couvercle du réservoir, raccorder au robinet flotteur",
    "regulation_fr": "Vendu en France comme un équipement sanitaire courant. Le réemploi se fait à l’intérieur d’un seul appareil et non via un réseau d’eaux grises à l’échelle du bâtiment, cas autour duquel la réglementation française sur la réutilisation des eaux grises est écrite, mais à considérer comme la position pratique plutôt qu’une lecture juridique vérifiée ; à confirmer localement avant de s’y fier."
   }
  }
 ],
 "io_index": [
  {
   "sol": "SOL-012",
   "io": "IO-08",
   "role": "consumes"
  },
  {
   "sol": "SOL-012",
   "io": "IO-08",
   "role": "produces"
  },
  {
   "sol": "SOL-013",
   "io": "IO-08",
   "role": "consumes"
  },
  {
   "sol": "SOL-013",
   "io": "IO-08",
   "role": "produces"
  },
  {
   "sol": "SOL-025",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-025",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-029",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-029",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-030",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-030",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-031",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-031",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-031",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-032",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-032",
   "io": "IO-24",
   "role": "produces"
  },
  {
   "sol": "SOL-033",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-033",
   "io": "IO-05",
   "role": "produces"
  },
  {
   "sol": "SOL-035",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-035",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-038",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-038",
   "io": "IO-06",
   "role": "produces"
  },
  {
   "sol": "SOL-039",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-039",
   "io": "IO-06",
   "role": "produces"
  },
  {
   "sol": "SOL-040",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-040",
   "io": "IO-06",
   "role": "consumes"
  },
  {
   "sol": "SOL-040",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-040",
   "io": "IO-05",
   "role": "produces"
  },
  {
   "sol": "SOL-040",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-043",
   "io": "IO-06",
   "role": "consumes"
  },
  {
   "sol": "SOL-043",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-043",
   "io": "IO-06",
   "role": "produces"
  },
  {
   "sol": "SOL-044",
   "io": "IO-22",
   "role": "consumes"
  },
  {
   "sol": "SOL-044",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-044",
   "io": "IO-22",
   "role": "produces"
  },
  {
   "sol": "SOL-046",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-046",
   "io": "IO-23",
   "role": "produces"
  },
  {
   "sol": "SOL-047",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-047",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-047",
   "io": "IO-23",
   "role": "produces"
  },
  {
   "sol": "SOL-048",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-048",
   "io": "IO-23",
   "role": "produces"
  },
  {
   "sol": "SOL-052",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-052",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-053",
   "io": "IO-08",
   "role": "consumes"
  },
  {
   "sol": "SOL-053",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-054",
   "io": "IO-20",
   "role": "consumes"
  },
  {
   "sol": "SOL-054",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-055",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-055",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-056",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-056",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-056",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-057",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-057",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-058",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-058",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-058",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-059",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-059",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-059",
   "io": "IO-17",
   "role": "produces"
  },
  {
   "sol": "SOL-060",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-060",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-060",
   "io": "IO-17",
   "role": "produces"
  },
  {
   "sol": "SOL-061",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-061",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-061",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-061",
   "io": "IO-17",
   "role": "produces"
  },
  {
   "sol": "SOL-064",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-064",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-065",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-065",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-065",
   "io": "IO-15",
   "role": "produces"
  },
  {
   "sol": "SOL-066",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-066",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-067",
   "io": "IO-26",
   "role": "consumes"
  },
  {
   "sol": "SOL-068",
   "io": "IO-26",
   "role": "consumes"
  },
  {
   "sol": "SOL-069",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-069",
   "io": "IO-07",
   "role": "produces"
  },
  {
   "sol": "SOL-070",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-070",
   "io": "IO-26",
   "role": "consumes"
  },
  {
   "sol": "SOL-070",
   "io": "IO-11",
   "role": "produces"
  },
  {
   "sol": "SOL-071",
   "io": "IO-11",
   "role": "consumes"
  },
  {
   "sol": "SOL-071",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-071",
   "io": "IO-27",
   "role": "produces"
  },
  {
   "sol": "SOL-072",
   "io": "IO-11",
   "role": "consumes"
  },
  {
   "sol": "SOL-072",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-072",
   "io": "IO-15",
   "role": "produces"
  },
  {
   "sol": "SOL-073",
   "io": "IO-27",
   "role": "consumes"
  },
  {
   "sol": "SOL-073",
   "io": "IO-27",
   "role": "produces"
  },
  {
   "sol": "SOL-074",
   "io": "IO-27",
   "role": "consumes"
  },
  {
   "sol": "SOL-074",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-076",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-076",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-077",
   "io": "IO-19",
   "role": "consumes"
  },
  {
   "sol": "SOL-077",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-078",
   "io": "IO-20",
   "role": "consumes"
  },
  {
   "sol": "SOL-078",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-079",
   "io": "IO-03",
   "role": "produces"
  },
  {
   "sol": "SOL-080",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-080",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-081",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-081",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-081",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-081",
   "io": "IO-03",
   "role": "produces"
  },
  {
   "sol": "SOL-082",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-082",
   "io": "IO-03",
   "role": "produces"
  },
  {
   "sol": "SOL-083",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-083",
   "io": "IO-03",
   "role": "produces"
  },
  {
   "sol": "SOL-084",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-084",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-085",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-085",
   "io": "IO-04",
   "role": "produces"
  },
  {
   "sol": "SOL-086",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-086",
   "io": "IO-32",
   "role": "produces"
  },
  {
   "sol": "SOL-087",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-087",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-087",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-087",
   "io": "IO-32",
   "role": "produces"
  },
  {
   "sol": "SOL-088",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-088",
   "io": "IO-32",
   "role": "produces"
  },
  {
   "sol": "SOL-089",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-089",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-090",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-090",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-091",
   "io": "IO-17",
   "role": "consumes"
  },
  {
   "sol": "SOL-091",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-091",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-092",
   "io": "IO-17",
   "role": "consumes"
  },
  {
   "sol": "SOL-092",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-092",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-093",
   "io": "IO-21",
   "role": "consumes"
  },
  {
   "sol": "SOL-093",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-093",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-094",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-094",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-094",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-108",
   "io": "IO-13",
   "role": "produces"
  },
  {
   "sol": "SOL-108",
   "io": "IO-14",
   "role": "produces"
  },
  {
   "sol": "SOL-109",
   "io": "IO-13",
   "role": "consumes"
  },
  {
   "sol": "SOL-109",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-109",
   "io": "IO-07",
   "role": "produces"
  },
  {
   "sol": "SOL-109",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-110",
   "io": "IO-13",
   "role": "consumes"
  },
  {
   "sol": "SOL-110",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-111",
   "io": "IO-14",
   "role": "consumes"
  },
  {
   "sol": "SOL-112",
   "io": "IO-25",
   "role": "consumes"
  },
  {
   "sol": "SOL-112",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-112",
   "io": "IO-25",
   "role": "produces"
  },
  {
   "sol": "SOL-113",
   "io": "IO-25",
   "role": "consumes"
  },
  {
   "sol": "SOL-113",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-113",
   "io": "IO-25",
   "role": "produces"
  },
  {
   "sol": "SOL-114",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-114",
   "io": "IO-25",
   "role": "produces"
  },
  {
   "sol": "SOL-119",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-120",
   "io": "IO-08",
   "role": "consumes"
  },
  {
   "sol": "SOL-120",
   "io": "IO-08",
   "role": "produces"
  },
  {
   "sol": "SOL-125",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-125",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-126",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-126",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-127",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-127",
   "io": "IO-24",
   "role": "produces"
  },
  {
   "sol": "SOL-128",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-128",
   "io": "IO-06",
   "role": "consumes"
  },
  {
   "sol": "SOL-128",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-128",
   "io": "IO-05",
   "role": "produces"
  },
  {
   "sol": "SOL-128",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-129",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-129",
   "io": "IO-23",
   "role": "produces"
  },
  {
   "sol": "SOL-131",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-131",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-132",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-132",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-132",
   "io": "IO-17",
   "role": "produces"
  },
  {
   "sol": "SOL-133",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-133",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-133",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-133",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-134",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-134",
   "io": "IO-15",
   "role": "produces"
  },
  {
   "sol": "SOL-135",
   "io": "IO-21",
   "role": "consumes"
  },
  {
   "sol": "SOL-135",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-136",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-136",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-139",
   "io": "IO-13",
   "role": "consumes"
  },
  {
   "sol": "SOL-139",
   "io": "IO-28",
   "role": "produces"
  },
  {
   "sol": "SOL-140",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-140",
   "io": "IO-25",
   "role": "produces"
  },
  {
   "sol": "SOL-147",
   "io": "IO-21",
   "role": "consumes"
  },
  {
   "sol": "SOL-147",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-148",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-148",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-149",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-149",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-149",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-150",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-150",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-151",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-151",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-151",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-152",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-152",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-153",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-154",
   "io": "IO-11",
   "role": "consumes"
  },
  {
   "sol": "SOL-154",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-154",
   "io": "IO-26",
   "role": "produces"
  },
  {
   "sol": "SOL-154",
   "io": "IO-27",
   "role": "produces"
  },
  {
   "sol": "SOL-155",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-155",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-156",
   "io": "IO-29",
   "role": "consumes"
  },
  {
   "sol": "SOL-156",
   "io": "IO-29",
   "role": "produces"
  },
  {
   "sol": "SOL-157",
   "io": "IO-13",
   "role": "consumes"
  },
  {
   "sol": "SOL-157",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-157",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-159",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-160",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-160",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-160",
   "io": "IO-24",
   "role": "produces"
  },
  {
   "sol": "SOL-161",
   "io": "IO-13",
   "role": "consumes"
  },
  {
   "sol": "SOL-161",
   "io": "IO-30",
   "role": "produces"
  },
  {
   "sol": "SOL-161",
   "io": "IO-15",
   "role": "produces"
  },
  {
   "sol": "SOL-162",
   "io": "IO-30",
   "role": "consumes"
  },
  {
   "sol": "SOL-162",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-163",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-163",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-163",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-164",
   "io": "IO-12",
   "role": "consumes"
  },
  {
   "sol": "SOL-164",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-165",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-165",
   "io": "IO-32",
   "role": "produces"
  },
  {
   "sol": "SOL-166",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-166",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-166",
   "io": "IO-31",
   "role": "produces"
  },
  {
   "sol": "SOL-169",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-169",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-170",
   "io": "IO-17",
   "role": "consumes"
  },
  {
   "sol": "SOL-170",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-170",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-170",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-171",
   "io": "IO-21",
   "role": "consumes"
  },
  {
   "sol": "SOL-171",
   "io": "IO-23",
   "role": "produces"
  },
  {
   "sol": "SOL-172",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-172",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-172",
   "io": "IO-25",
   "role": "produces"
  },
  {
   "sol": "SOL-175",
   "io": "IO-06",
   "role": "consumes"
  },
  {
   "sol": "SOL-175",
   "io": "IO-05",
   "role": "produces"
  },
  {
   "sol": "SOL-176",
   "io": "IO-21",
   "role": "consumes"
  },
  {
   "sol": "SOL-176",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-177",
   "io": "IO-20",
   "role": "consumes"
  },
  {
   "sol": "SOL-177",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-178",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-178",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-178",
   "io": "IO-17",
   "role": "produces"
  },
  {
   "sol": "SOL-179",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-179",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-179",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-179",
   "io": "IO-31",
   "role": "produces"
  },
  {
   "sol": "SOL-180",
   "io": "IO-04",
   "role": "consumes"
  },
  {
   "sol": "SOL-180",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-180",
   "io": "IO-28",
   "role": "produces"
  },
  {
   "sol": "SOL-181",
   "io": "IO-21",
   "role": "consumes"
  },
  {
   "sol": "SOL-181",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-181",
   "io": "IO-10",
   "role": "produces"
  },
  {
   "sol": "SOL-182",
   "io": "IO-13",
   "role": "consumes"
  },
  {
   "sol": "SOL-182",
   "io": "IO-12",
   "role": "produces"
  },
  {
   "sol": "SOL-182",
   "io": "IO-15",
   "role": "produces"
  },
  {
   "sol": "SOL-183",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-183",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-183",
   "io": "IO-23",
   "role": "produces"
  },
  {
   "sol": "SOL-183",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-184",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-184",
   "io": "IO-16",
   "role": "consumes"
  },
  {
   "sol": "SOL-184",
   "io": "IO-32",
   "role": "produces"
  },
  {
   "sol": "SOL-185",
   "io": "IO-02",
   "role": "consumes"
  },
  {
   "sol": "SOL-185",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-185",
   "io": "IO-24",
   "role": "produces"
  },
  {
   "sol": "SOL-187",
   "io": "IO-33",
   "role": "consumes"
  },
  {
   "sol": "SOL-187",
   "io": "IO-19",
   "role": "consumes"
  },
  {
   "sol": "SOL-187",
   "io": "IO-16",
   "role": "produces"
  },
  {
   "sol": "SOL-188",
   "io": "IO-32",
   "role": "consumes"
  },
  {
   "sol": "SOL-188",
   "io": "IO-05",
   "role": "consumes"
  },
  {
   "sol": "SOL-188",
   "io": "IO-32",
   "role": "produces"
  },
  {
   "sol": "SOL-189",
   "io": "IO-01",
   "role": "consumes"
  },
  {
   "sol": "SOL-189",
   "io": "IO-06",
   "role": "consumes"
  },
  {
   "sol": "SOL-189",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-190",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-190",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-191",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-191",
   "io": "IO-02",
   "role": "produces"
  },
  {
   "sol": "SOL-192",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-192",
   "io": "IO-18",
   "role": "produces"
  },
  {
   "sol": "SOL-193",
   "io": "IO-03",
   "role": "consumes"
  },
  {
   "sol": "SOL-193",
   "io": "IO-18",
   "role": "consumes"
  },
  {
   "sol": "SOL-193",
   "io": "IO-17",
   "role": "produces"
  },
  {
   "sol": "SOL-195",
   "io": "IO-09",
   "role": "produces"
  },
  {
   "sol": "SOL-196",
   "io": "IO-11",
   "role": "consumes"
  },
  {
   "sol": "SOL-196",
   "io": "IO-10",
   "role": "consumes"
  },
  {
   "sol": "SOL-197",
   "io": "IO-34",
   "role": "produces"
  },
  {
   "sol": "SOL-199",
   "io": "IO-09",
   "role": "consumes"
  },
  {
   "sol": "SOL-199",
   "io": "IO-10",
   "role": "produces"
  }
 ]
}