work
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Surface.Validation Design (Epic: SURFACE-SHARING)
|
||||
|
||||
> **Status:** Draft v1.0 — aligns with tasks `SURFACE-VAL-01..05`, `LANG-SURFACE-01..03`, `ENTRYTRACE-SURFACE-01..02`, `ZASTAVA-SURFACE-02`, `SCANNER-SECRETS-01..03`.
|
||||
> **Status:** v1.1 (2025-11-23) — aligned to Surface.Secrets schema (`surface-secrets-schema.md`) and Surface.Env release 0.1.0-alpha.20251123; covers tasks `SURFACE-VAL-01..05`, `LANG-SURFACE-01..03`, `ENTRYTRACE-SURFACE-01..02`, `ZASTAVA-SURFACE-02`, `SCANNER-SECRETS-01..03`.
|
||||
>
|
||||
> **Audience:** Engineers integrating Surface Env/FS/Secrets, QA guild, Security guild.
|
||||
|
||||
@@ -52,6 +52,7 @@ public sealed record SurfaceValidationIssue(
|
||||
| `SURFACE_ENV_CACHE_DIR_UNWRITABLE` | Error | Cache root not writable or disk full. |
|
||||
| `SURFACE_SECRET_MISSING` | Error | Secret provider cannot locate required secret type. |
|
||||
| `SURFACE_SECRET_STALE` | Warning | Secret older than rotation window. |
|
||||
| `SURFACE_SECRET_FORMAT_INVALID` | Error | Secret payload fails schema validation per `surface-secrets-schema.md`. |
|
||||
| `SURFACE_FS_ENDPOINT_REACHABILITY` | Error | HEAD request to Surface.FS endpoint failed. |
|
||||
| `SURFACE_FS_BUCKET_MISMATCH` | Error | Provided bucket does not exist / lacks permissions. |
|
||||
| `SURFACE_FEATURE_UNKNOWN` | Warning | Feature flag not recognised. |
|
||||
@@ -71,6 +72,11 @@ services.AddSurfaceValidation(builder =>
|
||||
|
||||
Validators can access DI services (e.g., HttpClient, Authority token provider) through the context. To avoid long-running checks, recommended max validation time is 500ms per validator.
|
||||
|
||||
### Secrets schema binding
|
||||
- Validators must load the secrets configuration into the JSON Schema defined in `surface-secrets-schema.md`; reject when provider/fallback ids are outside the allowed set or when file permissions differ from `0600`.
|
||||
- When `Surface:Secrets:Provider = file`, ensure each required secret exists at `<root>/<tenant>/<component>/<secretType>/<name>.json` with base64 payload matching the secret type contract (see §2 in `surface-secrets-schema.md`).
|
||||
- Inline provider must be disabled in production (`AllowInline=false`); validation emits `SURFACE_SECRET_FORMAT_INVALID` if enabled without an explicit dev/test flag.
|
||||
|
||||
## 5. Reporting & Observability
|
||||
|
||||
- Results exposed via `ISurfaceValidationReporter` (default logs structured JSON to `Validation` category).
|
||||
|
||||
Reference in New Issue
Block a user