Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
134 commits
Select commit Hold shift + click to select a range
1b7f288
Update README.md
VEZY Mar 18, 2026
e7c861c
Merge branch 'main' into multi-plants
VEZY May 3, 2026
75954d1
Add domain simulations with hard-domain targets and microclimate support
VEZY Jun 3, 2026
62b7878
Update docstrings and doc
VEZY Jun 3, 2026
2e274c3
Remove backward compatibility
VEZY Jun 3, 2026
236534e
Another large cleanup
VEZY Jun 4, 2026
06c909d
Use true PlantBiophysics models in the examples
VEZY Jun 4, 2026
287187c
Use two layers for the soil in maespa example
VEZY Jun 4, 2026
38eef0b
Update maespa_domain_example.jl
VEZY Jun 4, 2026
ef8d5d1
MAESPA example: make the model a bit more process-based + scene LAI a…
VEZY Jun 4, 2026
6f7663e
Auto-detect mapped variables between domains (not required in the use…
VEZY Jun 4, 2026
89f0971
Update maespa_domain_example.jl
VEZY Jun 4, 2026
26df6a5
Split Route types and route materialization into different scripts
VEZY Jun 4, 2026
82d881c
Remove all references to ModelList
VEZY Jun 5, 2026
b377c9c
Starting implementing the new scene API
VEZY Jun 5, 2026
c460928
Add producer application metadata and selector validation in Inputs.
VEZY Jun 6, 2026
0b4e5f4
Better error catching for Inputs
VEZY Jun 6, 2026
df679dc
Implements default scope inference for compiled scene/object dependen…
VEZY Jun 6, 2026
07e958a
Implements the remaining "Phase 5" mechanics
VEZY Jun 6, 2026
42106a3
Implements the goal of multi-plants and spatial (mutable) microclimate
VEZY Jun 13, 2026
6f52c7e
Remove Domain, SimulationMapping, Route, AllDomains, HardDomains, and…
VEZY Jun 13, 2026
4286cf1
First end-to-end implementation of the new API
VEZY Jun 18, 2026
21a1cd6
Add `add_organ!` again for an easier high-level function
VEZY Jun 18, 2026
2144f5e
Adapt past tests and doc to the new API
VEZY Jun 19, 2026
f168992
Adapt the graph editor to the new API
VEZY Jun 20, 2026
9c3ffad
Simplify examples in docs -> use defaults when possible
VEZY Jun 20, 2026
b8fde7d
Harden a bit more the API
VEZY Jun 20, 2026
26250d0
Fix benchmarks
VEZY Jun 21, 2026
8a3c52b
Delete runtests.jl
VEZY Jun 21, 2026
e8a0cc9
Simplify examples in docs -> use ModelList equivalent whenever possible
VEZY Jun 22, 2026
4e17d3b
Rename Scene into CompositeModel
VEZY Jun 22, 2026
18705b8
Remove `call_target` and only use `call_targets` so we always expect …
VEZY Jun 25, 2026
69b80cb
Avoiding manual updates of statuses in Maespa
VEZY Jun 25, 2026
846e31b
Make variables use mapping instead of being called by their their sta…
VEZY Jun 25, 2026
2584e21
Add and use `with_environment!`
VEZY Jul 28, 2026
583559d
Stabilize CompositeModel runtime contracts
VEZY Jul 29, 2026
7e38354
Support explicit live status bindings
VEZY Jul 29, 2026
ce1bb0a
docs: add API and performance implementation goal
VEZY Jul 29, 2026
d3828d4
perf: add runtime metrics and incremental execution paths
VEZY Jul 29, 2026
7348cb5
fix: handle empty execution plans in runtime metrics
VEZY Jul 29, 2026
aefba2e
fix: execute staged performance benchmark callbacks
VEZY Jul 29, 2026
710da45
perf: warm and persist short XPalm profiles
VEZY Jul 29, 2026
4875ab3
perf: refresh execution plans by application delta
VEZY Jul 29, 2026
195a346
perf: preserve call bindings and streamline hot loops
VEZY Jul 29, 2026
aacbd25
perf: bound temporal dependency storage
VEZY Jul 29, 2026
844646d
perf: compile direct temporal source cells
VEZY Jul 29, 2026
b82c79a
perf: reuse scheduled run contexts
VEZY Jul 29, 2026
c1b8cc2
perf: precompile dependency output cells
VEZY Jul 29, 2026
ed08dd8
docs: record performance restoration progress
VEZY Jul 29, 2026
5964566
perf: index meteorology rows directly
VEZY Jul 29, 2026
4bf7575
perf: reuse current environment bindings
VEZY Jul 29, 2026
bb619c4
perf: defer targeted lifecycle call refreshes
VEZY Jul 29, 2026
70b0100
perf: persist lifecycle dependency deltas
VEZY Jul 29, 2026
96d9ed5
perf: compile XPalm full cycle under gate
VEZY Jul 29, 2026
52ab05c
fix: preserve lifecycle application completion
VEZY Jul 29, 2026
ea1b11a
docs: record corrected XPalm milestone
VEZY Jul 29, 2026
274666b
perf: cache compiled hard-call targets
VEZY Jul 29, 2026
b995f5f
docs: record hard-call cache milestone
VEZY Jul 29, 2026
9a00104
fix: preserve typed call environment overrides
VEZY Jul 29, 2026
5776044
perf: accumulate subtree selectors in place
VEZY Jul 29, 2026
43f08bd
perf: preallocate lifecycle input bindings
VEZY Jul 29, 2026
08b7132
perf: cache object ancestor paths
VEZY Jul 29, 2026
d60bac4
perf: synchronize hard-call views lazily
VEZY Jul 29, 2026
f7a7e12
docs: record XPalm lifecycle performance milestone
VEZY Jul 29, 2026
ebf76bc
perf: avoid full-scene lifecycle copies
VEZY Jul 29, 2026
95ec6ee
perf: cache dirty-topology call compilation
VEZY Jul 29, 2026
510e2d2
perf: update lifecycle indexes in place
VEZY Jul 29, 2026
e14c82d
perf: avoid routine status-view index copies
VEZY Jul 29, 2026
64ef6a6
perf: index lifecycle call-bundle propagation
VEZY Jul 29, 2026
19802a0
docs: record sub-ten-second XPalm milestone
VEZY Jul 29, 2026
3ad16d2
api: adopt five-argument model kernels
VEZY Jul 29, 2026
5db2f67
perf: remove obsolete model bundle cache
VEZY Jul 29, 2026
b7e5665
api: unify model environment vocabulary
VEZY Jul 29, 2026
1aa794f
docs: record downstream kernel migration
VEZY Jul 29, 2026
757649e
api: distinguish required inputs from defaults
VEZY Jul 30, 2026
143f07d
docs: explain explicit input initialization
VEZY Jul 30, 2026
03e0a5f
perf: keep input schema validation allocation free
VEZY Jul 30, 2026
5a2a2a4
docs: complete explicit input schema milestone
VEZY Jul 30, 2026
e00febd
api: collapse model specs onto direct keywords
VEZY Jul 30, 2026
2fcc3b1
docs: complete direct scenario configuration milestone
VEZY Jul 30, 2026
75a00b8
api: make selector criteria context aware
VEZY Jul 30, 2026
f22eddf
docs: complete selector API milestone
VEZY Jul 30, 2026
ef464b3
api: split focused public namespaces
VEZY Jul 30, 2026
98aa790
docs: complete public namespace milestone
VEZY Jul 30, 2026
e48cc3a
api: improve simulation result ergonomics
VEZY Jul 30, 2026
a794876
test: cover multi-object final state
VEZY Jul 30, 2026
9057c96
docs: complete simulation results milestone
VEZY Jul 30, 2026
11e1a86
api: remove compatibility aliases
VEZY Jul 30, 2026
781a744
perf: make benchmark evidence reproducible
VEZY Jul 30, 2026
9d6bcac
perf: complete runtime benchmark matrix
VEZY Jul 30, 2026
f5be409
docs: harden reusable example contracts
VEZY Jul 30, 2026
5e9a489
docs: add progressive start-here journey
VEZY Jul 30, 2026
cb6bac4
docs: add one-plant composition journey
VEZY Jul 30, 2026
54a6651
docs: add template and instance journey
VEZY Jul 30, 2026
68ad6b4
docs: add global and spatial environment journey
VEZY Jul 30, 2026
5bca336
docs: add multirate cadence journey
VEZY Jul 30, 2026
1269252
docs: add structural lifecycle journey
VEZY Jul 30, 2026
dfcbbb8
docs: add mutable environment journey
VEZY Jul 30, 2026
f9c84ae
docs: add advanced execution journey
VEZY Jul 30, 2026
e23fd1b
docs: add MAESPA synthesis journey
VEZY Jul 30, 2026
53c1c6d
docs: add progressive model-author journey
VEZY Jul 30, 2026
41ddaae
docs: enforce progressive journey contracts
VEZY Jul 30, 2026
29882d1
perf: make structural lifecycle refresh incremental
VEZY Jul 30, 2026
5e2e31a
ci: persist full XPalm performance runs
VEZY Jul 30, 2026
5187f80
fix: prefer scheduled output publishers
VEZY Jul 30, 2026
8b4068a
fix: preserve private output coupling
VEZY Jul 30, 2026
32d2189
docs: record final local validation matrix
VEZY Jul 30, 2026
346e616
perf: make structural lifecycle refresh delta-based
VEZY Jul 30, 2026
b0ee8e3
docs: record lifecycle performance restoration
VEZY Jul 30, 2026
a71f891
docs: fix whitespace validation
VEZY Jul 30, 2026
b9f399c
ci: repair benchmark workflow environments
VEZY Jul 30, 2026
0146646
ci: bootstrap full performance dispatch
VEZY Jul 30, 2026
d13d427
ci: prepare path-based performance environment
VEZY Jul 30, 2026
c73a7d2
ci: qualify benchmark object fixtures
VEZY Jul 30, 2026
f4d1bfa
ci: support legacy benchmark baselines
VEZY Jul 30, 2026
a715e2b
ci: pin PlantGeom for full performance runs
VEZY Jul 31, 2026
6abda6e
docs: record completed downstream performance gate
VEZY Jul 31, 2026
4dc257b
Merge origin/main into multi-plants
VEZY Jul 31, 2026
fc02a0a
fix: qualify graph editor E2E entry point
VEZY Jul 31, 2026
5c7e980
test: initialize Beer in graph editor E2E
VEZY Jul 31, 2026
87fb97c
fix: stabilize merged release validation
VEZY Jul 31, 2026
df0f074
fix: include environment ports in graph layout
VEZY Jul 31, 2026
adcaf83
fix: serialize empty graph ports as arrays
VEZY Jul 31, 2026
485f61d
fix: match parametric models in graph editor
VEZY Jul 31, 2026
e36ad62
test: target graph editor timestep controls
VEZY Jul 31, 2026
b0f335c
test: scope graph cycle edges by projection
VEZY Jul 31, 2026
71972fc
fix: serialize graph update rules as arrays
VEZY Jul 31, 2026
809094f
test: scope graph editor save action
VEZY Jul 31, 2026
375fdef
fix: stabilize Julia 1.10 validation
VEZY Jul 31, 2026
6f5543a
perf: specialize input schema validation
VEZY Jul 31, 2026
9830993
test: account for Julia 1.10 allocation floor
VEZY Jul 31, 2026
3b1cfc2
Update SKILL.md
VEZY Aug 6, 2026
16822f2
Merge branch 'main' into multi-plants
VEZY Aug 6, 2026
d9edff7
Add `model_object` for AMAPSim
VEZY Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# Generated bundles may preserve whitespace inside dependency template literals.
frontend/dist/assets/*.js -whitespace
26 changes: 23 additions & 3 deletions .github/workflows/Benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,43 @@ on:
pull_request_target:
branches: [ main ]
workflow_dispatch:
inputs:
full_performance:
description: Run the complete XPalm performance workflow
required: false
default: false
type: boolean
permissions:
pull-requests: write
contents: read
jobs:
bench:
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ github.event_name }}
if: ${{ github.event_name != 'workflow_dispatch' || !inputs.full_performance }}
name: Julia ${{ matrix.version }} - ${{ matrix.os }} - ${{ matrix.arch }} - ${{
github.event_name }}
runs-on: ${{ matrix.os }}
timeout-minutes: 60
env:
PSE_BENCHMARK_INCLUDE_DOWNSTREAM: "false"
strategy:
fail-fast: false
matrix:
version:
- "1"
- "1.12.1"
os:
- ubuntu-latest
arch:
- x64
steps:
- uses: MilesCranmer/AirspeedVelocity.jl@action-v1
with:
julia-version: ${{ matrix.version }}
bench-on: ${{ github.event.pull_request.head.sha }}
extra-pkgs: https://github.com/PalmStudio/XPalm.jl,https://github.com/VEZY/PlantBiophysics.jl

full-performance:
if: ${{ github.event_name == 'workflow_dispatch' && inputs.full_performance }}
uses: ./.github/workflows/FullPerformance.yml
with:
xpalm_ref: codex/xpalm-release-regression
plantbiophysics_ref: multi-plant
plantgeom_ref: plantsimengine-multi-plant
129 changes: 129 additions & 0 deletions .github/workflows/FullPerformance.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
name: Full XPalm performance

on:
schedule:
- cron: "17 2 * * *"
push:
tags:
- "v*"
workflow_dispatch:
inputs:
xpalm_ref:
description: XPalm branch, tag, or commit
required: true
default: main
type: string
plantbiophysics_ref:
description: PlantBiophysics branch, tag, or commit
required: true
default: master
type: string
plantgeom_ref:
description: PlantGeom branch, tag, or commit
required: true
default: plantsimengine-multi-plant
type: string
workflow_call:
inputs:
xpalm_ref:
description: XPalm branch, tag, or commit
required: false
default: main
type: string
plantbiophysics_ref:
description: PlantBiophysics branch, tag, or commit
required: false
default: master
type: string
plantgeom_ref:
description: PlantGeom branch, tag, or commit
required: false
default: plantsimengine-multi-plant
type: string

permissions:
contents: read

concurrency:
group: full-xpalm-performance-${{ github.ref }}
cancel-in-progress: false

jobs:
full-xpalm-performance:
name: XPalm full cycle
runs-on: ubuntu-24.04
timeout-minutes: 45
env:
JULIA_NUM_THREADS: "1"
JULIA_PKG_PRECOMPILE_AUTO: "0"
PSE_BENCHMARK_INCLUDE_DOWNSTREAM: "true"
steps:
- name: Check out PlantSimEngine
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.ref }}

- name: Check out XPalm
uses: actions/checkout@v6
with:
repository: PalmStudio/XPalm.jl
ref: ${{ inputs.xpalm_ref || 'main' }}
path: downstream/XPalm

- name: Check out PlantBiophysics
uses: actions/checkout@v6
with:
repository: VEZY/PlantBiophysics.jl
ref: ${{ inputs.plantbiophysics_ref || 'master' }}
path: downstream/PlantBiophysics

- name: Check out PlantGeom
uses: actions/checkout@v6
with:
repository: VEZY/PlantGeom.jl
ref: ${{ inputs.plantgeom_ref || 'plantsimengine-multi-plant' }}
path: downstream/PlantGeom

- name: Set up Julia
uses: julia-actions/setup-julia@v3
with:
version: "1.12.1"

- name: Cache Julia packages
uses: julia-actions/cache@v3

- name: Resolve and instantiate the benchmark environment
shell: julia --project=benchmark --color=yes {0}
run: |
using Pkg

benchmark_project = joinpath(pwd(), "benchmark", "Project.toml")
include(joinpath(pwd(), "benchmark", "prepare_full_performance_project.jl"))
prepare_full_performance_project!(benchmark_project)
Pkg.activate(joinpath(pwd(), "benchmark"))
Pkg.develop([
PackageSpec(path=pwd()),
PackageSpec(path=joinpath(pwd(), "downstream", "XPalm")),
PackageSpec(path=joinpath(pwd(), "downstream", "PlantBiophysics")),
PackageSpec(path=joinpath(pwd(), "downstream", "PlantGeom")),
])
Pkg.resolve()
Pkg.instantiate()
Pkg.precompile()

- name: Run the complete XPalm performance and correctness matrix
run: >-
julia --project=benchmark --color=yes
benchmark/test/runtests.jl
"XPalm staged performance profile full"

- name: Persist measurements and the resolved environment
if: always()
uses: actions/upload-artifact@v4
with:
name: xpalm-full-performance-${{ github.run_id }}-${{ github.run_attempt }}
path: |
benchmark/results/xpalm-full-latest.csv
benchmark/Manifest.toml
if-no-files-found: warn
retention-days: 90
7 changes: 5 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,5 +7,8 @@ docs/Manifest.toml
test/Manifest.toml
docs/build/
benchmark/Manifest.toml
frontend/node_modules/
docs/src/www/simple_dependency_graph.html
benchmark/results/
/frontend/node_modules/
/frontend/.vite/
/frontend/test-results/
/frontend/playwright-report/
Loading
Loading