Skip to content

Decisions

Each page records one decision about canVODpy that is hard to reverse, would surprise a reader of the code, and was a real choice between alternatives: what was decided and why. Read the ones about your change before you start; if your change contradicts one, say so in the issue or pull request rather than working around it.

New decisions are added while a change is designed (/mattpocock-skills:grill-with-docs, see Developing with coding agents), numbered in order. A decision that is reversed is not deleted: it gets a status that names the decision replacing it.

Decision
0001 Data live in versioned Icechunk stores: one GNSS store and one VOD store per site
0002 All stored epochs are GPS time
0003 The canopy and the reference receiver record the same file format
0004 Explicit over implicit: fail loudly, no hidden defaults
0005 Superseded public code is deprecated, and removed only with the next major version
0006 Preprocessing runs only when the settings ask for it
0007 What was done to stored data is recorded in the stores' log books
0008 Runs find files by their names, in any folder layout
0009 Readers and VOD calculators from other packages are plugins
0010 Each package has its own version; canvodpy pins the exact mix
0011 Only free tools
0012 Contributors develop with agents through one shared workflow
0013 Agents open pull requests; people merge
0014 A store's description lives in its repository metadata; each snapshot carries a checked copy
0015 The STAC catalog sits beside the stores; a release is a tag in each store plus a pinned catalog
0016 Each receiver-day is a day block at its own cadence; workers write forks, one commit per day
0017 The demo notebooks use only the public interface and fetch demo data by file type from Hugging Face
0018 Every run records itself in a run history, one SQLite file per machine
0019 One set of content settings per store, set by its creator; several runs may write one store
0020 A run lists the folders of the days it processes
0021 A run works in units of days, keeps its stores' state in memory, and computes VOD in a phase of its own (proposed)
0022 canvodpy stores no secrets; credentials come from the environment (proposed)