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
feat: persist provided registry tokens as hdb_secret refs; resolve on every install
Completes the reference-not-embed story: a provided registry token is no longer a
transient, this-node-only credential — it is ingested into the encrypted, replicated
hdb_secret store and referenced everywhere, so package deploys survive rollback,
reboot, and new peers without the operator re-supplying the token.
- ingestRegistryAuth() (secretOperations): a literal `{ registry, token }` is sealed
into hdb_secret (via set_secret, custody required) under a derived name
(deploy.<component>.<registry>) granted to the component, and returned as a
`{ registry, secret }` reference. Idempotent on rotation. Already-reference entries
and (no-custody) literal tokens pass through untouched.
- deployComponent: ingests up front, then records references in TWO durable places —
the component config (applicationConfig.registryAuth, read on every cold install) and
the hdb_deployment row (registry_auth, the rollback source). req.registryAuth now
replicates as references, never tokens; peers resolve from their own replicated
hdb_secret copy (resolveRegistryAuth gains a bounded waitMs to cover the row arriving
just behind the deploy op). No-custody core stays on the transient #1158 fallback.
- installApplications(): resolves applicationConfig.registryAuth at cold install so a
fresh/wiped node or new peer authenticates from the store (best-effort — logs and
installs without auth if custody isn't up yet, rather than blocking boot).
- assertApplicationConfig + deployment row + config type: registryAuth is references
only; a literal token on disk is rejected.
Fabric NPM_CONFIG_USERCONFIG injection (harper-pro) becomes redundant for auth once
peers resolve from the store — a coordinated harper-pro follow-up removes the token
injection; core keeps userconfig *inheritance* for non-auth npm config (proxy/cafile).
Tests: ingest seal/round-trip/passthrough/no-custody/idempotent, derived-name
sanitization, resolve bounded-wait (times-out-404 + replicates-in-mid-wait),
assertApplicationConfig references-only.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments