pub fn secret_variables<'a>(
bindings: &'a BTreeMap<String, String>,
secrets: &'a BTreeMap<String, String>,
) -> impl Iterator<Item = (&'a str, &'a str)>Expand description
Every engine variable a scenario must inject as a secret, paired with its
value — ScenarioCtx::secret_bindings joined against
ScenarioCtx::secrets. The one place that join is written.
It lives in core, not in each engine, because it is easy to get subtly
wrong: inject under the secret name rather than the variable name and a
renamed binding (ADR-0018) resolves to nothing, so the request goes out with
an unresolved {{…}} and fails far from the cause.
It yields borrows on purpose. Returning an owned variable→value map would put
a second copy of every secret value in memory for each scenario; ADR-0005
keeps values in exactly one place, the run-level secrets map.
A binding whose secret is absent is skipped — the CLI already refuses a run whose secrets it cannot resolve, so that is defence in depth, not a path.