{
  "schema": "gardenarena.bamboo-discovery/1",
  "title": "L’année de Dry Patience en quatre moments",
  "captured_on": "2026-09-09",
  "simulation": true,
  "not_observation": true,
  "authorship": "pack opérateur humain · protocole non vérifié",
  "engine_version": "garden-bamboo-v0.6",
  "display_name": "Inaugural Dry Patience",
  "program_sha256": "c1096001b08d82788c23c86f7352b7126ac31ea30e249ff5e63a323e5127df7f",
  "scenario_sha256": "45f60bca9e50f8d128a2571b570a6fc683f8799e9cfc3580c77c947ce3d9d275",
  "source_artifact_sha256": "e2407ea3691a919e35011588779fea81f208171ad5bc111e988b8bf674692040",
  "public_replay_sha256": "46c9f67f0d5d702738b71fc2fbbe79a64ff1aff025de4f7e85c11a86e251cf1e",
  "source_url": "/api/bamboo/season-one/replay/winner",
  "horizon_days": 365,
  "outside_intervals": [
    {
      "start": 222,
      "end": 223
    },
    {
      "start": 232,
      "end": 233
    },
    {
      "start": 247,
      "end": 248
    },
    {
      "start": 277,
      "end": 288
    }
  ],
  "outside_days": 18,
  "steps": [
    {
      "day": 130,
      "label": "La réserve",
      "title": "La sécheresse arrive. La réserve est intacte.",
      "text": "À J130, le stress de sécheresse commence. Dry Patience dispose encore de ses 600 mm d’eau. Observer chaque jour a déjà consommé du travail, sans irrigation jusque-là.",
      "question": "Ta stratégie garderait-elle autant de réserve avant l’été ?",
      "facts": [
        {
          "label": "Eau restante",
          "value": 600,
          "unit": "mm",
          "json_pointer": "/entrants/0/replay/129/resources/water_left_mm"
        },
        {
          "label": "Travail restant",
          "value": 2370,
          "unit": "min",
          "json_pointer": "/entrants/0/replay/129/resources/labor_left_min"
        },
        {
          "label": "Pointes extérieures",
          "value": 0,
          "unit": "",
          "json_pointer": "/entrants/0/replay/129/snapshot/rhizomes/outside_active_tips_count"
        }
      ],
      "id": "dry-patience-j130",
      "evidence": [
        {
          "json_pointer": "/entrants/0/replay/129",
          "day": 130,
          "forcing": {
            "active_stress_ids": [
              "summer-drought-01"
            ],
            "rain_mm_day": 0,
            "rain_7d_mm": 0,
            "evaporation_mm_day": 6,
            "wind_gust_kmh": 0,
            "drainage_multiplier_permille": 1000
          },
          "events": [
            {
              "kind": "stress_started",
              "stress_id": "summer-drought-01",
              "stress_kind": "drought"
            },
            {
              "action": "surface_scan",
              "detected_tip_ids": [],
              "kind": "monitoring"
            }
          ],
          "resources": {
            "labor_left_min": 2370,
            "patch_left_count": 6,
            "water_left_mm": 600
          },
          "snapshot": {
            "barrier": {
              "exposed_lip_mm": 150,
              "minimum_depth_mm": 760,
              "worst_joint_integrity_permille": 650
            },
            "canes": {
              "harvested_count": 0,
              "living_count": 10,
              "mature_count": 1,
              "shoots_count": 6
            },
            "rhizomes": {
              "active_tips_count": 8,
              "detected_outside_tips_count": 0,
              "max_depth_mm": 223,
              "max_spread_mm": 971,
              "outside_active_tips_count": 0,
              "segment_count": 260
            },
            "soil_water_pct": 81.4,
            "vitality_pct": 100.0,
            "waterlogging_pct": 0.0
          }
        }
      ]
    },
    {
      "day": 220,
      "label": "La crue",
      "title": "La crue commence. La règle arrose encore.",
      "text": "À J220, la trace enregistre le début de l’inondation et une irrigation de 5 mm le même jour. Le programme applique ses règles ; ce résultat ne prouve pas qu’elles soient optimales dans chaque situation.",
      "question": "Quel signal examinerais-tu avant de modifier cette règle ?",
      "facts": [
        {
          "label": "Irrigation du jour",
          "value": 5,
          "unit": "mm",
          "json_pointer": "/entrants/0/replay/219/events/2/amount_mm"
        },
        {
          "label": "Pluie simulée du jour",
          "value": 37,
          "unit": "mm",
          "json_pointer": "/entrants/0/replay/219/forcing/rain_mm_day"
        },
        {
          "label": "Eau restante",
          "value": 336,
          "unit": "mm",
          "json_pointer": "/entrants/0/replay/219/resources/water_left_mm"
        }
      ],
      "id": "dry-patience-j220",
      "evidence": [
        {
          "json_pointer": "/entrants/0/replay/219",
          "day": 220,
          "forcing": {
            "active_stress_ids": [
              "flash-flood-01"
            ],
            "rain_mm_day": 37,
            "rain_7d_mm": 189,
            "evaporation_mm_day": 3,
            "wind_gust_kmh": 0,
            "drainage_multiplier_permille": 250
          },
          "events": [
            {
              "kind": "stress_started",
              "stress_id": "flash-flood-01",
              "stress_kind": "flood"
            },
            {
              "action": "surface_scan",
              "detected_tip_ids": [],
              "kind": "monitoring"
            },
            {
              "amount_mm": 5,
              "kind": "irrigated"
            },
            {
              "barrier_segment_id": "left-upper",
              "kind": "barrier_contact",
              "tip_id": "tip-0001"
            },
            {
              "barrier_segment_id": "left-upper",
              "kind": "barrier_deflection",
              "tip_id": "tip-0001"
            },
            {
              "barrier_segment_id": "right-upper",
              "kind": "barrier_contact",
              "tip_id": "tip-0002"
            },
            {
              "barrier_segment_id": "right-upper",
              "kind": "barrier_deflection",
              "tip_id": "tip-0002"
            }
          ],
          "resources": {
            "labor_left_min": 2172,
            "patch_left_count": 6,
            "water_left_mm": 336
          },
          "snapshot": {
            "barrier": {
              "exposed_lip_mm": 150,
              "minimum_depth_mm": 760,
              "worst_joint_integrity_permille": 620
            },
            "canes": {
              "harvested_count": 0,
              "living_count": 10,
              "mature_count": 2,
              "shoots_count": 0
            },
            "rhizomes": {
              "active_tips_count": 32,
              "detected_outside_tips_count": 0,
              "max_depth_mm": 223,
              "max_spread_mm": 1497,
              "outside_active_tips_count": 0,
              "segment_count": 2180
            },
            "soil_water_pct": 59.0,
            "vitality_pct": 74.5,
            "waterlogging_pct": 0.0
          }
        }
      ]
    },
    {
      "day": 224,
      "label": "La réparation",
      "title": "Un incident réparé n’est pas un incident effacé.",
      "text": "La veille, deux pointes étaient actives hors zone. À J224, une excavation est enregistrée et le compte extérieur revient à zéro. Ces journées restent pourtant dans le bilan annuel.",
      "question": "Contenir à la fin ou ne jamais laisser sortir : ce n’est pas le même objectif.",
      "facts": [
        {
          "label": "Hors zone la veille · J223",
          "value": 2,
          "unit": "",
          "json_pointer": "/entrants/0/replay/222/snapshot/rhizomes/outside_active_tips_count"
        },
        {
          "label": "Hors zone à J224",
          "value": 0,
          "unit": "",
          "json_pointer": "/entrants/0/replay/223/snapshot/rhizomes/outside_active_tips_count"
        },
        {
          "label": "Travail restant",
          "value": 2040,
          "unit": "min",
          "json_pointer": "/entrants/0/replay/223/resources/labor_left_min"
        }
      ],
      "id": "dry-patience-j224",
      "evidence": [
        {
          "json_pointer": "/entrants/0/replay/222",
          "day": 223,
          "forcing": {
            "active_stress_ids": [
              "flash-flood-01"
            ],
            "rain_mm_day": 37,
            "rain_7d_mm": 84,
            "evaporation_mm_day": 3,
            "wind_gust_kmh": 0,
            "drainage_multiplier_permille": 250
          },
          "events": [
            {
              "action": "full_perimeter",
              "detected_tip_ids": [
                "tip-0025",
                "tip-0026"
              ],
              "kind": "monitoring"
            },
            {
              "barrier_segment_id": "left-upper",
              "kind": "barrier_contact",
              "tip_id": "tip-0001"
            },
            {
              "barrier_segment_id": "left-upper",
              "kind": "barrier_deflection",
              "tip_id": "tip-0001"
            },
            {
              "barrier_segment_id": "right-upper",
              "kind": "barrier_contact",
              "tip_id": "tip-0002"
            },
            {
              "barrier_segment_id": "right-upper",
              "kind": "barrier_deflection",
              "tip_id": "tip-0002"
            }
          ],
          "resources": {
            "labor_left_min": 2150,
            "patch_left_count": 6,
            "water_left_mm": 336
          },
          "snapshot": {
            "barrier": {
              "exposed_lip_mm": 150,
              "minimum_depth_mm": 760,
              "worst_joint_integrity_permille": 590
            },
            "canes": {
              "harvested_count": 0,
              "living_count": 10,
              "mature_count": 2,
              "shoots_count": 0
            },
            "rhizomes": {
              "active_tips_count": 32,
              "detected_outside_tips_count": 2,
              "max_depth_mm": 223,
              "max_spread_mm": 1545,
              "outside_active_tips_count": 2,
              "segment_count": 2276
            },
            "soil_water_pct": 100.0,
            "vitality_pct": 74.8,
            "waterlogging_pct": 37.4
          }
        },
        {
          "json_pointer": "/entrants/0/replay/223",
          "day": 224,
          "forcing": {
            "active_stress_ids": [
              "flash-flood-01"
            ],
            "rain_mm_day": 37,
            "rain_7d_mm": 49,
            "evaporation_mm_day": 3,
            "wind_gust_kmh": 0,
            "drainage_multiplier_permille": 250
          },
          "events": [
            {
              "action": "full_perimeter",
              "detected_tip_ids": [
                "tip-0025",
                "tip-0026"
              ],
              "kind": "monitoring"
            },
            {
              "kind": "sector_excavated",
              "segment_ids": [
                "segment-002237",
                "segment-002238",
                "segment-002269",
                "segment-002270"
              ],
              "tip_ids": [
                "tip-0025",
                "tip-0026"
              ]
            },
            {
              "kind": "waterlogging_stress",
              "stress_id": "flash-flood-01",
              "vitality_loss_permille": 8,
              "waterlogging_permille": 633
            },
            {
              "kind": "stress_ended",
              "stress_id": "flash-flood-01",
              "stress_kind": "flood"
            },
            {
              "barrier_segment_id": "left-upper",
              "kind": "barrier_contact",
              "tip_id": "tip-0001"
            },
            {
              "barrier_segment_id": "left-upper",
              "kind": "barrier_deflection",
              "tip_id": "tip-0001"
            },
            {
              "barrier_segment_id": "right-upper",
              "kind": "barrier_contact",
              "tip_id": "tip-0002"
            },
            {
              "barrier_segment_id": "right-upper",
              "kind": "barrier_deflection",
              "tip_id": "tip-0002"
            }
          ],
          "resources": {
            "labor_left_min": 2040,
            "patch_left_count": 6,
            "water_left_mm": 336
          },
          "snapshot": {
            "barrier": {
              "exposed_lip_mm": 150,
              "minimum_depth_mm": 760,
              "worst_joint_integrity_permille": 590
            },
            "canes": {
              "harvested_count": 0,
              "living_count": 10,
              "mature_count": 2,
              "shoots_count": 0
            },
            "rhizomes": {
              "active_tips_count": 32,
              "detected_outside_tips_count": 0,
              "max_depth_mm": 223,
              "max_spread_mm": 1545,
              "outside_active_tips_count": 0,
              "segment_count": 2306
            },
            "soil_water_pct": 100.0,
            "vitality_pct": 71.6,
            "waterlogging_pct": 63.3
          }
        }
      ]
    },
    {
      "day": 365,
      "label": "Le verdict",
      "title": "Elle gagne cette année. Pas une garantie pour toutes les autres.",
      "text": "Dry Patience termine avec zéro pointe extérieure, après 18 jours sans contention. Elle remporte cette archive sur ce scénario. Ses économies ne compensent pas un critère prioritaire : le classement compare les critères dans l’ordre.",
      "question": "À toi de modifier une règle, tester et comprendre le nouvel écart.",
      "facts": [
        {
          "label": "Pointes extérieures à J365",
          "value": 0,
          "unit": "",
          "json_pointer": "/entrants/0/replay/364/snapshot/rhizomes/outside_active_tips_count"
        },
        {
          "label": "Sans contention sur l’année",
          "value": 18,
          "unit": "jours",
          "json_pointer": "/entrants/0/summary/containment/days_uncontained"
        },
        {
          "label": "Eau consommée sur l’année",
          "value": 264,
          "unit": "mm",
          "json_pointer": "/entrants/0/summary/cost/water_used_mm"
        }
      ],
      "id": "dry-patience-j365",
      "evidence": [
        {
          "json_pointer": "/entrants/0/replay/364",
          "day": 365,
          "forcing": {
            "active_stress_ids": [],
            "rain_mm_day": 4,
            "rain_7d_mm": 28,
            "evaporation_mm_day": 1,
            "wind_gust_kmh": 0,
            "drainage_multiplier_permille": 1000
          },
          "events": [
            {
              "action": "surface_scan",
              "detected_tip_ids": [],
              "kind": "monitoring"
            }
          ],
          "resources": {
            "labor_left_min": 1350,
            "patch_left_count": 3,
            "water_left_mm": 336
          },
          "snapshot": {
            "barrier": {
              "exposed_lip_mm": 150,
              "minimum_depth_mm": 760,
              "worst_joint_integrity_permille": 650
            },
            "canes": {
              "harvested_count": 0,
              "living_count": 6,
              "mature_count": 2,
              "shoots_count": 0
            },
            "rhizomes": {
              "active_tips_count": 32,
              "detected_outside_tips_count": 0,
              "max_depth_mm": 223,
              "max_spread_mm": 1635,
              "outside_active_tips_count": 0,
              "segment_count": 6810
            },
            "soil_water_pct": 100.0,
            "vitality_pct": 75.8,
            "waterlogging_pct": 0.0
          }
        }
      ]
    }
  ]
}
