{
  "_id": "6af6da16535793c85332b4d2",
  "Package": "phylloptim",
  "Title": "Leaf Gas Exchange with Explicit Plant Hydraulics",
  "Version": "0.36.0",
  "Authors@R": "c(\nperson(\"Isaac\", \"Towers\", , \"\", \"aut\",\ncomment = \"Author of the leaf gas exchange and hydraulics model\"),\nperson(\"Daniel\", \"Falster\", , \"daniel.falster@unsw.edu.au\", c(\"aut\", \"cre\"),\ncomment = c(ORCID = \"0000-0002-9814-092X\")),\nperson(\"Rich\", \"FitzJohn\", , \"\", \"ctb\",\ncomment = \"Root-finding utilities (uniroot.hpp)\")\n)",
  "Maintainer": "Daniel Falster <daniel.falster@unsw.edu.au>",
  "Description": "An implementation of leaf-level gas exchange in which\nstomatal behaviour emerges from hydraulics rather than an\nempirical conductance model. Farquhar-von Caemmerer-Berry\nphotosynthesis is coupled to an explicit soil-root-stem-leaf\nwater transport path, with Weibull vulnerability curves for\nboth xylem and roots, multi-layer soil and gravitational head,\nand the operating point is chosen by Sperry-style gain-risk\nprofit maximisation over the root-collar water potential.\nForward-mode automatic differentiation supplies exact\nderivatives of profit with respect to the collar potential.\nExtracted from the TF24 strategy in the 'plant' package so that\nit can be tested, profiled, extended and embedded\nindependently. The model itself is a set of self-contained C++\nheaders, under inst/include, that use no R and no 'Rcpp' and\ndepend only on Boost and the header-only parts of 'odelia':\nthey compile and run with no R present at all, so the model can\nbe linked directly into a C++ program or bound to another\nlanguage such as Python without going through this package. R\nusers get the same model through an 'RcppR6' layer that sits on\ntop of those headers and is never included by them, and R\npackages get it by naming 'phylloptim' in their LinkingTo\nfield.",
  "Encoding": "UTF-8",
  "License": "AGPL (>= 3)",
  "VignetteBuilder": "knitr",
  "Config/testthat/edition": "3",
  "URL": "https://github.com/traitecoevo/phylloptim,\nhttps://traitecoevo.github.io/phylloptim/",
  "BugReports": "https://github.com/traitecoevo/phylloptim/issues",
  "Roxygen": "list(markdown = TRUE)",
  "Config/roxygen2/version": "8.0.0",
  "Repository": "https://traitecoevo.r-universe.dev",
  "Date/Publication": "2026-11-10 07:34:07 UTC",
  "RemoteUrl": "https://github.com/traitecoevo/phylloptim",
  "RemoteRef": "HEAD",
  "RemoteSha": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
  "NeedsCompilation": "yes",
  "Packaged": {
    "Date": "2026-11-13 08:31:28 UTC",
    "User": "root"
  },
  "Author": "Isaac Towers [aut] (Author of the leaf gas exchange and hydraulics\nmodel),\nDaniel Falster [aut, cre] (ORCID:\n<https://orcid.org/0000-0002-9814-092X>),\nRich FitzJohn [ctb] (Root-finding utilities (uniroot.hpp))",
  "_user": "traitecoevo",
  "_type": "src",
  "_file": "phylloptim_0.36.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/3d59fd6ea07c2242d3c08075362ea936ff81b5a0dc12eb6fbd7f8f29e34879d5",
  "_filesize": 3372703,
  "_sha256": "3d59fd6ea07c2242d3c08075362ea936ff81b5a0dc12eb6fbd7f8f29e34879d5",
  "_expires": "2027-02-21T09:36:20.000Z",
  "_created": "2026-11-13T08:31:28.000Z",
  "_published": "2026-11-13T09:36:22.718Z",
  "_upstream": "https://github.com/traitecoevo/phylloptim",
  "_status": "success",
  "_maintainer": {
    "name": "Daniel Falster",
    "email": "daniel.falster@unsw.edu.au",
    "login": "dfalster",
    "orcid": "0000-0002-9814-092X",
    "twitter": "@adaptive_plant",
    "description": "Associate Professor |  @traitecoevo | @nicercode \n| orcid.org/0000-0002-9814-092X | twitter.com/adaptive_plant",
    "uuid": 3589590
  },
  "_jobs": [
    {
      "job": 131780796133,
      "time": 3760,
      "config": "linux-devel-arm64",
      "r": "4.7.0",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 131780796168,
      "time": 926,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "14022438642"
    },
    {
      "job": 131780796016,
      "time": 3752,
      "config": "linux-release-arm64",
      "r": "4.6.2",
      "check": "FAIL",
      "artifact": ""
    },
    {
      "job": 131780796033,
      "time": 649,
      "config": "linux-release-x86_64",
      "r": "4.6.2",
      "check": "ERROR",
      "artifact": "14021948966"
    },
    {
      "job": 131780796029,
      "time": 168,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "14023150903"
    },
    {
      "job": 131780796090,
      "time": 442,
      "config": "macos-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "14022522656"
    },
    {
      "job": 131780796124,
      "time": 157,
      "config": "macos-release-arm64",
      "r": "4.6.2",
      "check": "ERROR",
      "artifact": "14022812471"
    },
    {
      "job": 131780796122,
      "time": 314,
      "config": "macos-release-x86_64",
      "r": "4.6.2",
      "check": "ERROR",
      "artifact": "14023065439"
    },
    {
      "job": 131778062118,
      "time": 388,
      "config": "source",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "14021219512"
    },
    {
      "job": 131780795993,
      "time": 120,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "14021374469"
    },
    {
      "job": 131780796050,
      "time": 611,
      "config": "windows-devel-arm64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "14022343111"
    },
    {
      "job": 131780796164,
      "time": 1117,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "ERROR",
      "artifact": "14023206442"
    },
    {
      "job": 131780796178,
      "time": 779,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "ERROR",
      "artifact": "14022642139"
    },
    {
      "job": 131780796167,
      "time": 551,
      "config": "windows-release-arm64",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "14022710689"
    },
    {
      "job": 131780796431,
      "time": 731,
      "config": "windows-release-x86_64",
      "r": "4.6.2",
      "check": "ERROR",
      "artifact": "14023350476"
    }
  ],
  "_buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529",
  "_commit": {
    "id": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
    "author": "Daniel Falster <daniel.falster@unsw.edu.au>",
    "committer": "GitHub <noreply@github.com>",
    "message": "Cost table: row for 0.36.0 (#264)\n\n`tools/cost-baseline.tsv` gains the row for 0.36.0 (`e2c9460`), when the\ntrait gradient moved onto the derivative surface (#262, #263). The row\nis keyed by the squash commit, so it could not go in before the merge.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)\n\nCo-authored-by: Claude Opus 5.5 <noreply@anthropic.com>",
    "time": 1794296047
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.2.0",
      "role": "Depends"
    },
    {
      "package": "Rcpp",
      "role": "LinkingTo"
    },
    {
      "package": "BH",
      "role": "LinkingTo"
    },
    {
      "package": "odelia",
      "version": ">= 0.10.0",
      "role": "LinkingTo"
    },
    {
      "package": "graphics",
      "role": "Imports"
    },
    {
      "package": "R6",
      "role": "Imports"
    },
    {
      "package": "Rcpp",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "codetools",
      "role": "Suggests"
    },
    {
      "package": "dplyr",
      "role": "Suggests"
    },
    {
      "package": "ggplot2",
      "role": "Suggests"
    },
    {
      "package": "knitr",
      "role": "Suggests"
    },
    {
      "package": "rmarkdown",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "tibble",
      "role": "Suggests"
    },
    {
      "package": "tidyr",
      "role": "Suggests"
    },
    {
      "package": "xml2",
      "role": "Suggests"
    },
    {
      "package": "yaml",
      "role": "Suggests"
    }
  ],
  "_owner": "traitecoevo",
  "_selfowned": true,
  "_usedby": 3,
  "_updates": [
    {
      "week": "2026-31",
      "n": 19
    },
    {
      "week": "2026-32",
      "n": 50
    },
    {
      "week": "2026-33",
      "n": 4
    },
    {
      "week": "2026-34",
      "n": 20
    },
    {
      "week": "2026-35",
      "n": 6
    },
    {
      "week": "2026-36",
      "n": 1
    },
    {
      "week": "2026-40",
      "n": 2
    },
    {
      "week": "2026-41",
      "n": 3
    },
    {
      "week": "2026-42",
      "n": 3
    },
    {
      "week": "2026-44",
      "n": 40
    },
    {
      "week": "2026-45",
      "n": 10
    },
    {
      "week": "2026-46",
      "n": 16
    }
  ],
  "_tags": [
    {
      "name": "v0.8.1",
      "date": "2026-09-04"
    },
    {
      "name": "v0.10.3",
      "date": "2026-10-14"
    },
    {
      "name": "v0.15.4",
      "date": "2026-10-29"
    },
    {
      "name": "v0.16.0",
      "date": "2026-10-29"
    },
    {
      "name": "v0.26.1",
      "date": "2026-11-01"
    },
    {
      "name": "v0.26.2",
      "date": "2026-11-01"
    }
  ],
  "_stars": 0,
  "_contributors": [
    {
      "user": "dfalster",
      "count": 164,
      "uuid": 3589590
    },
    {
      "user": "aornugent",
      "count": 9,
      "uuid": 20387761
    },
    {
      "user": "itowers1",
      "count": 1,
      "uuid": 39288928
    }
  ],
  "_userbio": {
    "uuid": 11747619,
    "type": "organization",
    "name": "Trait Ecology and Evolution",
    "followers": 41
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/phylloptim"
  },
  "_devurl": "https://github.com/traitecoevo/phylloptim",
  "_searchresults": 12,
  "_topics": [
    "cpp"
  ],
  "_abi": {
    "exports": [
      {
        "key": "phylloptim/include",
        "hash": "ea33a86bd92c42d7"
      }
    ],
    "imports": [
      {
        "key": "Rcpp::Rcpp_precious_preserve()",
        "hash": "33a97ea62b293da6"
      },
      {
        "key": "Rcpp::Rcpp_precious_remove()",
        "hash": "63d26947ba7e1377"
      },
      {
        "key": "Rcpp::dataptr()",
        "hash": "54e69ad2e6668c83"
      },
      {
        "key": "Rcpp::demangle()",
        "hash": "b0cfd6754c5ebc4e"
      },
      {
        "key": "Rcpp::enterRNGScope()",
        "hash": "a04a299137cef947"
      },
      {
        "key": "Rcpp::exitRNGScope()",
        "hash": "a04a299137cef947"
      },
      {
        "key": "Rcpp::rcpp_get_stack_trace()",
        "hash": "c684a9bbe15cdc52"
      },
      {
        "key": "Rcpp::rcpp_set_stack_trace()",
        "hash": "33a97ea62b293da6"
      }
    ]
  },
  "_rbuild": "4.6.2",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/phylloptim.html",
    "extra/readme.html",
    "extra/readme.md"
  ],
  "_cranurl": false,
  "_exports": [
    "align_curves",
    "cost_curve_names",
    "cost_curve_parameters",
    "gradient_output_names",
    "gradient_par_names",
    "Leaf",
    "leaf_batch",
    "leaf_control",
    "leaf_damage_gradient",
    "leaf_damage_trajectory",
    "leaf_gradient",
    "leaf_gradient_batch",
    "leaf_infeasible_codes",
    "leaf_model",
    "leaf_solve",
    "leaf_supply_multilayer",
    "leaf_supply_singlelayer",
    "leaf_traits",
    "model_registry",
    "operating_point",
    "plot_model_overview",
    "plot_solver_convergence",
    "psi_at_plc",
    "registry_locations",
    "registry_resolve",
    "registry_values",
    "root_network_from_carbon",
    "RootNetwork",
    "series_resistance",
    "set_drivers",
    "set_traits",
    "weibull_p50_c",
    "weibull_p50_from_b",
    "weibull_s50",
    "with_phylloptim_conditions"
  ],
  "_help": [
    {
      "page": "phylloptim-package",
      "title": "phylloptim: leaf gas exchange with explicit plant hydraulics",
      "topics": [
        "phylloptim-package",
        "phylloptim"
      ]
    },
    {
      "page": "align_curves",
      "title": "Align the cost curves' level parameters to a common optimum",
      "topics": [
        "align_curves"
      ]
    },
    {
      "page": "cost_curve_names",
      "title": "The cost curves, in the order C++ indexes them",
      "topics": [
        "cost_curve_names"
      ]
    },
    {
      "page": "cost_curve_parameters",
      "title": "Each cost curve's parameters, from its definition",
      "topics": [
        "cost_curve_parameters"
      ]
    },
    {
      "page": "gradient_output_names",
      "title": "The differentiated outputs, in the order C++ indexes them",
      "topics": [
        "gradient_output_names"
      ]
    },
    {
      "page": "gradient_par_names",
      "title": "The differentiable parameters, in the order C++ indexes them",
      "topics": [
        "gradient_par_names"
      ]
    },
    {
      "page": "Leaf",
      "title": "Leaf-level gas exchange with explicit hydraulics.",
      "topics": [
        "Leaf"
      ]
    },
    {
      "page": "leaf_batch",
      "title": "The observations a batch gradient is taken over",
      "topics": [
        "leaf_batch"
      ]
    },
    {
      "page": "leaf_control",
      "title": "Numerical settings for a leaf solve",
      "topics": [
        "leaf_control"
      ]
    },
    {
      "page": "leaf_damage_gradient",
      "title": "Gradient of the leaf's thermal-damage trajectory",
      "topics": [
        "leaf_damage_gradient"
      ]
    },
    {
      "page": "leaf_damage_trajectory",
      "title": "Integrate the leaf's thermal-damage states over a temperature series",
      "topics": [
        "leaf_damage_trajectory"
      ]
    },
    {
      "page": "leaf_gradient",
      "title": "Trait gradients of a solved operating point",
      "topics": [
        "leaf_gradient"
      ]
    },
    {
      "page": "leaf_gradient_batch",
      "title": "Trait gradients over a batch of observations",
      "topics": [
        "leaf_gradient_batch"
      ]
    },
    {
      "page": "leaf_infeasible_codes",
      "title": "Which failures are reported as infeasible",
      "topics": [
        "leaf_infeasible_codes"
      ]
    },
    {
      "page": "leaf_model",
      "title": "Build a leaf",
      "topics": [
        "leaf_model"
      ]
    },
    {
      "page": "leaf_solve",
      "title": "Solve a leaf, in one call",
      "topics": [
        "leaf_solve"
      ]
    },
    {
      "page": "leaf_supply_singlelayer",
      "title": "Choose how water reaches the root collar",
      "topics": [
        "leaf_supply_multilayer",
        "leaf_supply_singlelayer"
      ]
    },
    {
      "page": "leaf_traits",
      "title": "Physiological traits for a leaf",
      "topics": [
        "leaf_traits"
      ]
    },
    {
      "page": "model_registry",
      "title": "The model registry",
      "topics": [
        "model_registry"
      ]
    },
    {
      "page": "operating_point",
      "title": "The solved operating point, as one row",
      "topics": [
        "operating_point"
      ]
    },
    {
      "page": "plot_model_overview",
      "title": "Overview figure: how the parts of the model fit together",
      "topics": [
        "plot_model_overview"
      ]
    },
    {
      "page": "plot_solver_convergence",
      "title": "Convergence of the two ways to locate an optimum",
      "topics": [
        "plot_solver_convergence"
      ]
    },
    {
      "page": "psi_at_plc",
      "title": "The water potential at a given loss of conductivity",
      "topics": [
        "psi_at_plc"
      ]
    },
    {
      "page": "registry_locations",
      "title": "Where every symbol is, from Doxygen's XML",
      "topics": [
        "registry_locations"
      ]
    },
    {
      "page": "registry_resolve",
      "title": "Resolve the registry's symbols against Doxygen's XML",
      "topics": [
        "registry_resolve"
      ]
    },
    {
      "page": "registry_values",
      "title": "The parameters' values, read at render time",
      "topics": [
        "registry_values"
      ]
    },
    {
      "page": "root_network_from_carbon",
      "title": "Root resistances from a root carbon profile",
      "topics": [
        "root_network_from_carbon"
      ]
    },
    {
      "page": "RootNetwork",
      "title": "Root resistance network",
      "topics": [
        "RootNetwork"
      ]
    },
    {
      "page": "series_resistance",
      "title": "A single soil-to-collar series resistance, as a supply driver",
      "topics": [
        "series_resistance"
      ]
    },
    {
      "page": "set_drivers",
      "title": "Set the drivers for a leaf",
      "topics": [
        "set_drivers"
      ]
    },
    {
      "page": "set_traits",
      "title": "Replace the traits on an existing leaf",
      "topics": [
        "set_traits"
      ]
    },
    {
      "page": "weibull_p50_c",
      "title": "Recover (P50, c) from any two published quantities",
      "topics": [
        "weibull_p50_c"
      ]
    },
    {
      "page": "weibull_p50_from_b",
      "title": "Convert a Weibull scale parameter to P50",
      "topics": [
        "weibull_p50_from_b"
      ]
    },
    {
      "page": "weibull_s50",
      "title": "The slope of the vulnerability curve at P50",
      "topics": [
        "weibull_s50"
      ]
    },
    {
      "page": "with_phylloptim_conditions",
      "title": "Run leaf code with classified error conditions",
      "topics": [
        "with_phylloptim_conditions"
      ]
    }
  ],
  "_readme": "https://github.com/traitecoevo/phylloptim/raw/HEAD/README.md",
  "_rundeps": [
    "BH",
    "cli",
    "dplyr",
    "generics",
    "glue",
    "lifecycle",
    "magrittr",
    "odelia",
    "pillar",
    "pkgconfig",
    "R6",
    "Rcpp",
    "rlang",
    "tibble",
    "tidyselect",
    "utf8",
    "vctrs",
    "withr"
  ],
  "_sysdeps": [
    {
      "shlib": "libstdc++",
      "package": "libstdc++6",
      "source": "gcc",
      "version": "16-20260322-1ubuntu1",
      "name": "c++",
      "homepage": "http://gcc.gnu.org/",
      "description": "GNU Standard C++ Library v3"
    }
  ],
  "_vignettes": [
    {
      "source": "derivative-surface.Rmd",
      "filename": "derivative-surface.html",
      "title": "Differentiating the operating point",
      "engine": "knitr::rmarkdown",
      "headings": [
        "One surface, two consumers",
        "Terms",
        "The three calls",
        "The solve path, and the eight kinds",
        "Why the implicit function theorem",
        "Why the kind is recorded, not inferred",
        "Inside the surface",
        "Extending it",
        "What is tested",
        "Deliberately not built"
      ],
      "created": "2026-10-08 06:51:46",
      "modified": "2026-11-10 07:30:26",
      "commits": 19
    },
    {
      "source": "fitting.Rmd",
      "filename": "fitting.html",
      "title": "Fitting traits to data",
      "engine": "knitr::rmarkdown",
      "headings": [
        "Simulated data, so the answer is known",
        "The objective, and the loop that makes it affordable",
        "Using the gradients",
        "Faster or slower depends on which parameter count you mean",
        "What reverses it is more fitted parameters per model parameter",
        "Where the intercept goes",
        "Fitting a different collection of parameters",
        "Cost does not depend on the collection",
        "A stem gradient means something different at a boundary",
        "Not everything is reachable",
        "What a new study actually has to write",
        "Where a gradient-based fit goes wrong",
        "Fitting to real data"
      ],
      "created": "2026-08-05 01:46:00",
      "modified": "2026-11-10 07:30:26",
      "commits": 16
    },
    {
      "source": "phylloptim.Rmd",
      "filename": "phylloptim.html",
      "title": "Leaf gas exchange from R",
      "engine": "knitr::rmarkdown",
      "headings": [
        "What this model does differently",
        "What is on this page",
        "One solve",
        "A drought response",
        "The same sweep on a familiar scale",
        "Light and VPD together",
        "Traits and numerical settings are separate",
        "Water potentials are positive magnitudes",
        "Two supply paths, two routes",
        "Multiple soil layers",
        "The stateful interface",
        "Trait gradients, and where they stop working",
        "Choosing which gradients to compute",
        "A collar potential you supply",
        "A faster method: the closed form",
        "When it applies, and when it refuses",
        "What it costs, and what it buys",
        "Accuracy, and one failure that is not a tolerance",
        "The caveat that would stop you using this in a demographic model",
        "What the model assumes",
        "Where to go next"
      ],
      "created": "2026-08-05 00:38:35",
      "modified": "2026-11-10 07:30:26",
      "commits": 18
    },
    {
      "source": "the-models.Rmd",
      "filename": "the-models.html",
      "title": "The models, and the maths behind them",
      "engine": "knitr::rmarkdown",
      "headings": [
        "How to read this page",
        "A leaf choosing where to operate",
        "The problem being solved",
        "The two supply paths",
        "One problem, several coordinates",
        "Solving for the optimum by its first-order condition",
        "The scan, which does not run by default",
        "When the answer is a bound, not a stationary point",
        "The benefit, and the root-find inside it",
        "The cost curves",
        "The benefit link, and the proof it costs nothing",
        "The wet-end price, and the one curve that has one",
        "Pricing the drop is not pricing the potential",
        "λ is the common currency",
        "λ is not water use efficiency",
        "λ is a common currency only across difference objectives",
        "The two gates",
        "Thermal damage",
        "When the leaf cannot transpire",
        "The variants, under one roof",
        "Comparable at their defaults",
        "The biological components",
        "1. Photosynthetic demand",
        "2. Temperature responses",
        "3. Diffusive supply",
        "4. Closing the loop: supply equals demand",
        "5. Hydraulic supply, and why the problem is non-trivial",
        "6. Optionally, energy balance and thermal damage",
        "What the models disagree about",
        "What the model assumes",
        "Glossary",
        "Where to go next",
        "Appendix A — the (P50, c) parameterisation",
        "Why not (P50, b)",
        "Why c is not a constant",
        "Converting from published numbers",
        "psi_crit is a quantile, not a parameter",
        "Three consequences for gradients",
        "Appendix B — gradients",
        "The implicit function theorem",
        "The link makes one derivative serve every model",
        "The envelope theorem, and where it stops",
        "Prescribed versus optimised",
        "A partial is not always a total",
        "The energy-balance term",
        "Appendix C — numerical practice",
        "The maximum is flat, so its location is the delicate quantity",
        "A finite difference through a solve has a noise floor, so sweep the step",
        "A scan's argmax cannot feed a parameter gradient",
        "References"
      ],
      "created": "2026-08-24 04:11:50",
      "modified": "2026-11-10 07:30:26",
      "commits": 22
    },
    {
      "source": "cpp-interface.Rmd",
      "filename": "cpp-interface.html",
      "title": "Using phylloptim from C++",
      "engine": "knitr::rmarkdown",
      "headings": [
        "The two umbrella headers, and why the extension matters",
        "Building",
        "A solve",
        "Trait gradients from C++",
        "What is fast, and what is not",
        "The golden file is the contract"
      ],
      "created": "2026-08-05 01:46:00",
      "modified": "2026-11-10 07:30:26",
      "commits": 20
    }
  ],
  "_score": 5.811575005870593,
  "_indexed": true,
  "_nocasepkg": "phylloptim",
  "_universes": [
    "traitecoevo",
    "dfalster"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.36.0",
      "date": "2026-11-13T08:35:14.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/65eaffbe190296bb28bc84460edf137fd2f4119802eed161cc63885b714bbf87",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.6.2",
      "os": "linux",
      "version": "0.36.0",
      "date": "2026-11-13T08:35:01.000Z",
      "distro": "resolute",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/c472dd358e8bf87a4356bfe2501512fd55792bc087e1ddaeaa8656bc1d44d45f",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.36.0",
      "date": "2026-11-13T08:46:28.000Z",
      "arch": "aarch64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/77833b5ee1c39a1af5c4e30c89567b4a0ed67511a423f9700deefb42b055b2c3",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.36.0",
      "date": "2026-11-13T08:43:11.000Z",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/b6da27b8e6661c24099d231baa6606ea50f2149c18f1fa85a2bfdcfbbc6e4dfc",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.6.2",
      "os": "mac",
      "version": "0.36.0",
      "date": "2026-11-13T08:49:36.000Z",
      "arch": "aarch64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/67bfbdadb53e7e3fee95ca31433cfaf9db2792f032f3df85cdfd11307da46b97",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.6.2",
      "os": "mac",
      "version": "0.36.0",
      "date": "2026-11-13T08:42:46.000Z",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/a1e636e7617624b2e1da4a86142b210b762e1315cbd3b11b473d579eb74f5123",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.36.0",
      "date": "2026-11-13T08:34:58.000Z",
      "arch": "emscripten",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/b347dca88a4114e327e792c69795ec482d2f34fc11aea4cc153edc33f5f4a24c",
      "status": "success",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.36.0",
      "date": "2026-11-13T08:36:34.000Z",
      "arch": "aarch64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/178d686e2dc611e8a56356024f0b6fad7fc3c3f8f75009c500853757d3a780dc",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.36.0",
      "date": "2026-11-13T08:35:23.000Z",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/f922adedb5852992c9fcddb54707c9b0f6450a571d4d5ebc05dab57b165caeaf",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.36.0",
      "date": "2026-11-13T08:35:03.000Z",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/585401efeb1961f57eb335880f098084477c3458db452c9021b0204ed5fb7032",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.6.2",
      "os": "win",
      "version": "0.36.0",
      "date": "2026-11-13T08:36:13.000Z",
      "arch": "aarch64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/dc724400b9af4f85bdd42cfad7e64d93d20190fd7a7a834077622076e83492a0",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    },
    {
      "r": "4.6.2",
      "os": "win",
      "version": "0.36.0",
      "date": "2026-11-13T08:34:53.000Z",
      "arch": "x86_64",
      "commit": "af31832bb456a19667882ea8ce15b7c98c8ffd55",
      "fileid": "https://r2.ropensci.org/aa3e0115dd7d42332939b32282d8500765120a163186b0f4e2ef23bb98b66b54",
      "status": "failure",
      "check": "ERROR",
      "buildurl": "https://github.com/r-universe/traitecoevo/actions/runs/43343638529"
    }
  ]
}