| Safe Haskell | None |
|---|---|
| Language | GHC2021 |
Ecluse.Composition.BootError
Description
The boot-error vocabulary of the composition root: every reason Écluse refuses to start, and its operator-facing rendering.
Each case is a fail-loud boot failure; the composition root aggregates them so a
single run reports every problem an operator must fix (see
docs/architecture/configuration.md → Validation). The sibling composition
modules produce these -- credential resolution
(Ecluse.Composition.Credential), queue-backend selection
(Ecluse.Composition.MirrorQueue), and the mount/publish wiring
(Ecluse.Composition) -- and this module is their shared spine, so it holds no
policy of its own beyond the rendering.
Synopsis
- data BootError
- = PolicyBootError PolicyError
- | MissingAdapter Ecosystem
- | UnresolvedCredential Ecosystem
- | QueueProviderUnavailable Text
- | QueueRegionMissing
- | QueueUrlUnrecognised Text
- | QueueEndpointMalformed Text
- | CodeArtifactMintFailed Text
- | PublishAllowMissing Ecosystem
- | PublishStaticCredentialNeedsEdge Ecosystem
- | MemoryPlanOverrideUnsafe [Text]
- renderBootError :: BootError -> Text
- mountEnvKey :: Ecosystem -> Text -> Text
Documentation
A reason the composition root refuses to start. Every case is a fail-loud boot failure; they are aggregated so a single run reports every problem an operator must fix.
Constructors
| PolicyBootError PolicyError | A rule policy did not resolve (surfaced by |
| MissingAdapter Ecosystem | A configured mount's ecosystem has no adapter wired, so it cannot be served (a loud miss, never a silent drop). Carries the ecosystem. |
| UnresolvedCredential Ecosystem | A mount has no initialised mirror-write provider. The credential is derived from the mirror-target URL and realised for every active mount, so this is a total safety net rather than a reachable operator misconfiguration. Carries the ecosystem of the mount. |
| QueueProviderUnavailable Text | The queue URL names a backend (by its shape) that has no implementation compiled into this binary, so no queue can be built for it. Carries the provider's name. An honest refusal -- never a silent fall-through to a different backend. |
| QueueRegionMissing | An SQS endpoint override ( |
| QueueUrlUnrecognised Text |
|
| QueueEndpointMalformed Text | The configured SQS endpoint override ( |
| CodeArtifactMintFailed Text | The eager boot-time CodeArtifact mint threw -- a transient AWS error (worth a retry) or a permanent one (a bad domain/region or missing permission, to be fixed). Carries the rendered exception so the cause is legible and aggregated. |
| PublishAllowMissing Ecosystem | A publication target was configured ( |
| PublishStaticCredentialNeedsEdge Ecosystem | A static publish credential ( |
| MemoryPlanOverrideUnsafe [Text] | An explicit memory override breaks the combined memory-plan invariant even after every computed tenant shed to its minimum (Ecluse.Composition.MemoryPlan). Carries the solver's per-violation diagnostics. A computed plan never raises this: it degrades gracefully and boots; an override is an operator claim, and a false one is refused. |
renderBootError :: BootError -> Text Source #
Render a BootError as a human-facing line for the aggregated failure block.
mountEnvKey :: Ecosystem -> Text -> Text Source #
The full environment key of a mount-scoped setting
(ECLUSE_MOUNTS{ECOSYSTEM}{KEY}), as the operator must set it: the
Ecosystem-typed wrapper over the shared mountEnvKey, used by the
boot-error renderings above.