Deployment context
The customer portal reads a signed static deployment-config.json before the React application starts. It then reads the live deployment context from GET /v1/deployment/context.
The static file supplies deployment state during startup. The API provides the live deployment record. Check both when investigating setup or routing behavior.
Required fields
The current schema requires:
deploymentIddeploymentModeisSetupCompletedeploymentEnvironmentconfigVersionlastUpdatedsignature
A required schema field is not necessarily included in the signature. The release defines the signed values and their order. Generate the file through the supplied deployment workflow rather than writing a separate signer.
Setup boundary
Deploy the initial context
A new environment uses a signed context with isSetupComplete: false.
Complete authorized setup
The setup route and backend enforce the bootstrap authorization requirements. A frontend value does not grant setup authority.
Record completion
The deployment context changes to isSetupComplete: true through the supported setup workflow.
Publish the current static context
The deployed static file must match the completed environment. The live API and static context should agree on deployment identity, mode, environment, and setup state.
Failure behavior
The portal validates the static context before normal navigation. Missing, malformed, or invalid context must not silently reopen setup.
Test these cases in the target environment:
- valid completed context with a healthy API;
- valid completed context during an API outage;
- missing or malformed static context;
- invalid signature;
- static and live context mismatch; and
- direct navigation to
/setupbefore and after completion.
Check the backend response as well as the visible route. Editing a public setup flag must never grant permission to create an administrator.
deployment-config.json contains public deployment state, not secrets. Its signing key is secret and must remain outside the frontend artifact.