Skip to content

Parameter resolution & provenance

bootstrap_session resolves every pipeline parameter deterministically, with a fixed authority order, and records where each value came from. Nothing is ever silently defaulted from thin air.

Authority order

user > scb > profile > data_description > default
(full_sky uses a slightly different order — user > data_description > profile > default — since a survey's sky coverage is a data fact, not a methodology choice.)

  • user — an explicit value in the task text (e.g. nside=512, or a ## probes: block — see Writing TASK.md). Highest priority, never overridden by anything else.
  • scb — the Science Context Block assembled by @literature_scout from its literature search, when the task doesn't pin a value explicitly.
  • profile — a catalogue-type profile applied via survey=<name>.
  • data_description — a value read out of the data directory's DATA_DESCRIPTION.md.
  • default — the pipeline's built-in default. Not every parameter has one: nside in particular has no default — if nothing upstream resolves it, bootstrap_session returns nside_unresolved and the bootstrapper must ask rather than guess.

Provenance

Every resolved value is recorded in session_context.json's pipeline_config_provenance:

{
  "nside": {"source": "user"},
  "lmax":  {"source": "default"}
}

Read it with get_provenance. Source values in general use: user (never override), scb / profile / data_description / default (adjustable for a documented technical reason — log why), derived (never set manually — computed from another resolved value, e.g. lmax from Nyquist).

ℓ-binning

pipeline_config.ell_binning ("linear" | "log") plus an optional bpw_edges override resolve the same way, globally per session: user (ell_binning=log, or an explicit ## ell edges: block) > profile (shear profiles default "log", clustering "linear") > "linear". A per-probe ell_binning inside a ## probes: block is rejected outright — changing it per-probe would change the covariance/SACC block structure mid-session, which isn't a safe partial override.