CI / Rust checks (push) Waiting to run
CI / Docs and registry checks (push) Waiting to run
CI / Smoke checks (push) Waiting to run
Coverage / Coverage baseline (push) Waiting to run
Dependency hygiene / Unused dependency check (push) Waiting to run
Dependency hygiene / Dependency duplicate report (push) Waiting to run
Dependency hygiene / Dependency security policy (push) Waiting to run
Dependency hygiene / Cargo udeps nightly advisory (push) Waiting to run
Operational maturity / Offline operational maturity (push) Waiting to run
Operational maturity / Live operational contract (push) Waiting to run
Security / Cargo audit (push) Waiting to run
Security / Cargo deny (push) Waiting to run
Security / Secret pattern check (push) Waiting to run
Security / Dependency review (push) Waiting to run
144 lines
5.0 KiB
JSON
144 lines
5.0 KiB
JSON
{
|
|
"version": "2026-07-01.operational-maturity-v1",
|
|
"apiCompatibility": {
|
|
"openapiPath": "adk-rust/crates/detmir-portal/src/contracts/openapi.json",
|
|
"requiredOpenApiPaths": {
|
|
"/contracts": ["get"],
|
|
"/contracts/openapi.json": ["get"],
|
|
"/health": ["get"],
|
|
"/operator": ["get"],
|
|
"/reports": ["get"],
|
|
"/workforce/kpi/explain": ["get"],
|
|
"/ueba": ["get"],
|
|
"/risk/narrative": ["get"],
|
|
"/actions": ["get"],
|
|
"/readiness/latest": ["get"],
|
|
"/telemetry": ["post"]
|
|
},
|
|
"requiredSchemas": [
|
|
"ContractIndex",
|
|
"JsonObject",
|
|
"ActionCenterResponse",
|
|
"RiskNarrative",
|
|
"UebaPayload",
|
|
"WorkforceKpiExplain"
|
|
],
|
|
"runtimeEndpoints": [
|
|
"/healthz",
|
|
"/readyz",
|
|
"/version",
|
|
"/metrics"
|
|
],
|
|
"runtimeSourcePath": "adk-rust/crates/detmir-portal/src/main.rs"
|
|
},
|
|
"integrationFixtures": [
|
|
{
|
|
"path": "/healthz",
|
|
"fixture": "docs/fixtures/operational-maturity/portal-healthz.json",
|
|
"status": 200,
|
|
"contentType": "application/json",
|
|
"requiredFields": ["status", "service", "schema_version"],
|
|
"equals": { "status": "ok", "schema_version": "pilot-v1" }
|
|
},
|
|
{
|
|
"path": "/readyz",
|
|
"fixture": "docs/fixtures/operational-maturity/portal-readyz.json",
|
|
"status": 200,
|
|
"contentType": "application/json",
|
|
"requiredFields": ["status", "checks.portal", "checks.dlp_runtime"],
|
|
"equals": { "status": "ready", "checks.dlp_runtime.status": "skipped" }
|
|
},
|
|
{
|
|
"path": "/version",
|
|
"fixture": "docs/fixtures/operational-maturity/portal-version.json",
|
|
"status": 200,
|
|
"contentType": "application/json",
|
|
"requiredFields": ["app_version", "schema_version", "environment"],
|
|
"equals": { "schema_version": "pilot-v1" }
|
|
},
|
|
{
|
|
"path": "/reports/worktime/management",
|
|
"fixture": "docs/fixtures/operational-maturity/worktime-management-ok.json",
|
|
"status": 200,
|
|
"contentType": "application/json",
|
|
"requiredFields": ["status", "stale", "report_cache_hit", "aw_query_duration_ms"],
|
|
"equals": { "status": "OK", "stale": false }
|
|
},
|
|
{
|
|
"path": "/reports/worktime/management?fault=aw_timeout",
|
|
"fixture": "docs/fixtures/operational-maturity/worktime-management-degraded.json",
|
|
"status": 200,
|
|
"contentType": "application/json",
|
|
"requiredFields": ["status", "reason", "stale", "report_stale_served", "aw_query_timeout_count"],
|
|
"equals": { "status": "DEGRADED", "reason": "report_unavailable", "stale": false }
|
|
},
|
|
{
|
|
"path": "/security/finding-inbox",
|
|
"fixture": "docs/fixtures/operational-maturity/security-finding-inbox-shadow.json",
|
|
"status": 200,
|
|
"contentType": "application/json",
|
|
"requiredFields": ["mode", "auto_apply", "workflow"],
|
|
"equals": { "mode": "shadow", "auto_apply": false }
|
|
}
|
|
],
|
|
"observability": {
|
|
"metricsFixture": "docs/fixtures/operational-maturity/portal-metrics.prom",
|
|
"requiredMetrics": [
|
|
"awatch_http_requests_total",
|
|
"awatch_http_request_duration_seconds_sum",
|
|
"awatch_http_request_duration_seconds_count",
|
|
"awatch_report_requests_total",
|
|
"awatch_report_cache_hits_total",
|
|
"awatch_report_cache_misses_total",
|
|
"awatch_report_cache_stale_hits_total",
|
|
"awatch_reports_generated_total",
|
|
"awatch_ingestion_records_total",
|
|
"awatch_ingestion_rejected_total",
|
|
"awatch_role_denied_total",
|
|
"awatch_readyz_status"
|
|
],
|
|
"sourcePath": "adk-rust/crates/detmir-portal/src/production/metrics.rs",
|
|
"diagnosticHeaders": ["x-request-id", "x-correlation-id"]
|
|
},
|
|
"configValidation": {
|
|
"jsonFiles": [
|
|
"configs/worktime-interpretation-policy.example.json",
|
|
"configs/detmir-workforce-policy.example.json",
|
|
"adk-rust/crates/detmir-portal/src/contracts/openapi.json",
|
|
"docs/fixtures/operational-maturity/portal-healthz.json",
|
|
"docs/fixtures/operational-maturity/portal-readyz.json",
|
|
"docs/fixtures/operational-maturity/portal-version.json",
|
|
"docs/fixtures/operational-maturity/worktime-management-ok.json",
|
|
"docs/fixtures/operational-maturity/worktime-management-degraded.json",
|
|
"docs/fixtures/operational-maturity/security-finding-inbox-shadow.json"
|
|
],
|
|
"systemdDirs": [
|
|
"ops/systemd",
|
|
"clickhouse-1c/ops"
|
|
],
|
|
"clickhouseInitDir": "clickhouse-1c/clickhouse/init",
|
|
"yamlFiles": [
|
|
"configs/detmir-ueba-risk-policy.example.yaml",
|
|
"clickhouse-1c/etl/config.example.yml",
|
|
"clickhouse-1c/grafana/provisioning/datasources/clickhouse.yml",
|
|
"clickhouse-1c/grafana/provisioning/dashboards/dashboards.yml"
|
|
]
|
|
},
|
|
"faultInjection": {
|
|
"clientTimeoutMs": 350,
|
|
"maxFailureClassificationMs": 1200
|
|
},
|
|
"boundedLoad": {
|
|
"requests": 60,
|
|
"concurrency": 8,
|
|
"p95MaxMs": 750,
|
|
"heapGrowthMaxBytes": 20971520,
|
|
"paths": [
|
|
"/healthz",
|
|
"/readyz",
|
|
"/version",
|
|
"/reports/worktime/management"
|
|
]
|
|
}
|
|
}
|