embedding-change-two-date

unverified
v0.1.0

Per-patch embedding change between two quarters at one AOI, from one foundation model release. Embed the AOI at t0 and at t1 with the same model, then take the per-patch cosine distance between the two vector sets and render it as a change surface. High distance means the model sees the place differently than it did before; it does not say why, and the recipe makes no claim about the cause.

Map preview and live runs are available in the workbench.

The contract

governed folia/0.1

Read from this recipe's own declarations — parameters:, outputs:, requires:, and the ops its layers name. Not from its style blocks and not from any benchmark: a colour ramp is not a contract, and a measured run is evidence about one AOI rather than a domain.

Parameters

parametertypedomaindefaultwhat it does
aoi_bbox array of number, exactly 4 items [-6.44,36.96,-6.4,37] The AOI bounding box [w, s, e, n] in WGS84 lon/lat. Default is the Donana sub-tile the first conformance slice measured, kept small on purpose (see header). Hard cap at both loci is 50 x 50 km.
model_release string terramind@hf-ibm-esa-geospatial-terramind-v1-base Release identity of the foundation model, spelled <fm>@<fm_version> and pinned in registry/models/<id>.yaml `serving:`. The bare <fm> form resolves to the record's current fm_version. This param is what carries checkpoint identity into the layer key (spec §3.3).
t0 string 2023-Q2 The earlier temporal pin. YYYY-Q[1-4] is the only spelling in v0.
t1 string 2025-Q2 The later temporal pin. Same season as t0 unless you want phenology in your signal.
metric string cosine Per-patch distance metric. cosine | euclidean.
locus string local Where the forward pass runs. A placement decision (ADR-0084), not a change of contract. `local` is the default for development, tests and gates because it costs $0 and needs no GPU vendor account.

Outputs

outputkindlayerwhat it is
change_surface raster compute/change
embeddings_t0 table compute/e0
embeddings_t1 table compute/e1

Capabilities it requires

Declares no requires: block, so it asks nothing of a host beyond the engine itself.

Where it runs

  • Browser preview does not run here compute/change: op "embedding_distance" has no browser kernel; compute/e0: op "embedding_generate" has no browser kernel; compute/e1: op "embedding_generate" has no browser kernel
  • Local CLI (folia run) runs here runs locally through the governed folia/0.1 parser
  • Operated fleet (POST /plan, /run) runs here binds to a canonical digest, so a lock is checked by digest equality
open in Workbench from registry/recipes/embedding-change-two-date/folia.yaml