Adaptively
The plant notebook — release notes, case studies, and worked problems, each pinned to the version or commit it was built against.
worked against pinned versions
Posts here are reproducible against a specific state of plant. Master posts pin to a release version; develop posts pin to a branch and commit, since there’s no tag to point at yet. The table shows both — a blank version with a branch of develop means the result is tied to a commit, not a release.
| Date | Title | branch | version | Reading Time |
|---|---|---|---|---|
| Jun 20, 2026 | Moving cohort refining into C++ | develop | 3 min | |
| Jun 19, 2026 | Making root water uptake fast | develop | 6 min | |
| Jun 19, 2026 | A reference prototype for root water uptake | develop | 22 min | |
| Jun 19, 2026 | Reviewing the TF24 leaf model code | develop | 4 min | |
| Jun 18, 2026 | Optimising the FF16 hot paths | develop | 3 min | |
| Jun 15, 2026 | A soil-water bucket model from AWRA-L | develop | 15 min | |
| Jun 10, 2026 | Hydraulics inner-loop benchmark | develop | 2 min | |
| Jul 29, 2025 | When the Richards equation fights back | 9 min | ||
| May 22, 2024 | Prototyping a soil water-balance bucket model | 19 min | ||
| Feb 23, 2016 | Key technologies used to build the plant package | 8 min |
How posts are pinned
From master (released)
---
title: "Calibrating an early-successional strategy"
date: 2026-05-02
plant-version: "2.1.0"
categories: [calibration, case-study]
---The badge renders plant 2.1.0. Install in CI from the matching tag.
From develop (unreleased)
---
title: "Hydraulics inner-loop benchmark"
date: 2026-06-10
plant-ref: "develop"
plant-sha: "a1b2c3d4e5f6..." # full or short; badge truncates to 7
categories: [hydraulics, performance]
---The badge renders ● plant @develop a1b2c3d in a dashed bark-toned pill, so a reader immediately sees it’s a moving target. Because results are frozen, the figure stays faithful to that commit even after develop moves on — and the SHA tells anyone exactly what to check out to reproduce it.
Why this matters with two branches
freeze: auto means a post is only re-executed when its own source changes. So a develop post built today won’t silently re-run (and possibly break) when develop advances tomorrow. The version/commit stamped on the page is therefore always the one that produced the figures. To genuinely re-run an old develop post, check out its plant-sha, restore its lockfile, and delete its _freeze/ entry.
Pinning the environment per post
For light posts the project-level renv.lock is enough. For an expensive simulation you may want the post pinned to its own snapshot so a later project-wide upgrade can’t change its result even if you do force a re-run. See the hydraulics benchmark for the pattern: a post-local renv profile plus a recorded plant_session_info() footer.