Configuration and environment precedence
Configuration has an authored declaration, an Application-managed value, a deployment selection, and a final runtime installation. Keep those stages separate.
Authored variables
For each manifest variable:
- current Application-managed value, if set;
- otherwise authored
default, if present; - otherwise missing.
A missing required variable blocks affected work. An explicit empty string is a value and must not be collapsed into missing.
Managed secrets
The manifest names secretId, requiredness, and destination. It never holds
plaintext. The deployment selects a stored encrypted secret version and issues
a job-bound grant. Signed current-job installation is authoritative over stale
ambient values. File secrets are confined below the configured secret base
directory and written with restricted permissions.
Runtime lookup
Before Liskov installation, the SDK looks for a named value in:
- supplied
options.envorprocess.env; - Acurast
_STD_.env; then - Acurast
environment(name).
Signed runtime bootstrap then authenticates the current Application UID,
policy, deployment, job, processor, and runtime instance; installs managed
runtime-env values; obtains secrets; and attaches logging. Application code
must use runtime.env after bootstrap.
Built-ins and reserved names
Liskov supplies identity/bootstrap values. Literal names beginning with
PROOF_SLIPWAY_, PROOF_LOCKBOX_, and BLACKBOX_ remain where compatibility
requires them. They are implementation-facing wire inputs, not names for new
customer variables. Do not declare, override, or copy them between jobs.
New Liskov-owned environment contracts use LISKOV_*.
Change timing
A stored variable or secret version does not mutate a running process.
Publication/configuration update creates a successor according to lifecycle.
Runtime refreshNow() refreshes server-authorized runtime env and eligible
background capabilities; it is not a bypass for successor policy or secret
version selection.
Safe inspection
Inspect names, presence, version/digest, source class, and final non-secret behavior. Never print secret values to verify precedence. When a required value is absent, record the exact name, Application UID, policy/deployment/job IDs, and runtime capability code.