You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Consumption side of the secrets store (#715); phase 1b of the secrets-management plan.
Each component gets a synthetic process.env object materialized at load: real env plus the secrets granted to that component (decrypted via the registered secret decryptor from feat(env): dormant decrypt hook + enc:v1 contract for env-secret encryption #1528). Env-shaped on purpose — the npm ecosystem configures itself from process.env.FOO, so no glue code. Eager decrypt of the granted set (enumeration via Object.keys/spread must work for dotenv-style consumers).
Components declare expected secrets in config (parseable without loading component code):
Load gate: a required declaration that is unsatisfied (undefined or ungranted) stops THAT component from loading with a clear error naming the missing vars — the instance keeps running. Component status exposes the unsatisfied set (names/descriptions) so Studio can render a configure-me flow and deploy responses can print it.
Document loudly: child processes inherit the REAL env, not the synthetic object; secrets need explicit propagation to spawns.
JS-level scoping is a slowdown layer against generic env scrapers, not a hardened boundary — containers/uids remain the tenant boundary. No SES requirement.
Consumption side of the secrets store (#715); phase 1b of the secrets-management plan.
process.envobject materialized at load: real env plus the secrets granted to that component (decrypted via the registered secret decryptor from feat(env): dormant decrypt hook + enc:v1 contract for env-secret encryption #1528). Env-shaped on purpose — the npm ecosystem configures itself fromprocess.env.FOO, so no glue code. Eager decrypt of the granted set (enumeration viaObject.keys/spread must work for dotenv-style consumers).🤖 Drafted by Claude (Fable 5) on Kris's behalf.