feat: harden community production foundation through story 1.5

This commit is contained in:
2026-08-14 00:21:59 +03:00
parent c30461cc92
commit f6fc2e5c9b
161 changed files with 16758 additions and 2515 deletions
@@ -0,0 +1,143 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://crank.local/schemas/capability-baseline.schema.json",
"title": "Crank Community Capability Baseline Manifest",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"baseline_version",
"artifacts"
],
"properties": {
"schema_version": {
"const": 1
},
"baseline_version": {
"type": "string",
"pattern": "^[0-9]{4}\\.[0-9]{2}\\.[0-9]{2}\\.[1-9][0-9]*$"
},
"artifacts": {
"type": "array",
"minItems": 5,
"maxItems": 5,
"uniqueItems": true,
"items": {
"$ref": "#/$defs/artifact"
}
}
},
"$defs": {
"artifact": {
"type": "object",
"additionalProperties": false,
"required": [
"kind",
"path",
"sha256"
],
"properties": {
"kind": {
"enum": [
"inventory",
"required_surfaces",
"taxonomy",
"checklist",
"results"
]
},
"path": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^(?!/)(?!.*//)(?!.*(?:^|/)\\.\\.?($|/))(?!.*\\\\).+$"
},
"sha256": {
"type": "string",
"pattern": "^[0-9a-f]{64}$"
}
}
},
"taxonomy": {
"type": "object",
"additionalProperties": false,
"required": ["baseline_version", "implementation_statuses", "execution_verdicts", "evidence_modes", "full_pass"],
"properties": {
"baseline_version": {"type": "string", "pattern": "^[0-9]{4}\\.[0-9]{2}\\.[0-9]{2}\\.[1-9][0-9]*$"},
"implementation_statuses": {"type": "array", "minItems": 4, "maxItems": 4, "uniqueItems": true, "items": {"enum": ["implemented", "planned", "gap", "blocked"]}},
"execution_verdicts": {"type": "array", "minItems": 6, "maxItems": 6, "uniqueItems": true, "items": {"enum": ["pass", "fail", "blocked", "skipped", "flaky", "not_run"]}},
"evidence_modes": {"type": "array", "minItems": 2, "maxItems": 2, "uniqueItems": true, "items": {"enum": ["automated", "manual_only"]}},
"manual_only_rule": {"type": "string", "minLength": 1, "maxLength": 2048},
"non_pass_rule": {"type": "string", "minLength": 1, "maxLength": 2048},
"full_pass": {
"type": "object",
"additionalProperties": false,
"required": ["implementation_status", "execution_verdict", "evidence_mode"],
"properties": {
"implementation_status": {"const": "implemented"},
"execution_verdict": {"const": "pass"},
"evidence_mode": {"const": "automated"}
}
}
}
},
"run": {
"type": "object",
"additionalProperties": false,
"required": ["id", "command_id", "flow_ids", "execution_verdict", "evidence_mode", "accepted", "source_report_sha256", "source_revision", "environment_class", "collector"],
"properties": {
"id": {"type": "string", "minLength": 1, "maxLength": 128},
"command_id": {"type": "string", "minLength": 1, "maxLength": 128},
"flow_ids": {"type": "array", "minItems": 1, "maxItems": 1000, "uniqueItems": true, "items": {"type": "string", "minLength": 1, "maxLength": 128}},
"execution_verdict": {"enum": ["pass", "fail", "blocked", "skipped", "flaky", "not_run"]},
"evidence_mode": {"enum": ["automated", "manual_only"]},
"accepted": {"type": "boolean"},
"source_report_sha256": {"type": "string", "pattern": "^[0-9a-f]{64}$"},
"source_revision": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
"environment_class": {"type": "string", "minLength": 1, "maxLength": 64},
"collector": {"const": "capability-baseline-collector-v1"},
"summary": {"type": "object", "maxProperties": 16},
"safe_outcome": {"type": "object", "maxProperties": 16}
}
},
"defect": {
"type": "object",
"additionalProperties": false,
"required": ["id", "severity", "steps", "contract", "owner", "flow_ids", "next_action"],
"properties": {
"id": {"type": "string", "minLength": 1, "maxLength": 128},
"severity": {"enum": ["Critical", "High", "Medium", "Low"]},
"steps": {"type": "array", "minItems": 1, "maxItems": 20, "items": {"type": "string", "minLength": 1, "maxLength": 1024}},
"contract": {"type": "string", "minLength": 1, "maxLength": 2048},
"owner": {"type": "string", "minLength": 1, "maxLength": 128},
"flow_ids": {"type": "array", "minItems": 1, "maxItems": 1000, "uniqueItems": true, "items": {"type": "string", "minLength": 1, "maxLength": 128}},
"next_action": {"type": "string", "minLength": 1, "maxLength": 2048}
}
},
"manual_result": {
"type": "object",
"additionalProperties": false,
"required": ["check_id", "evidence_mode", "execution_verdict", "flow_ids", "next_evidence"],
"properties": {
"check_id": {"type": "string", "pattern": "^UI-[0-9]{2}$"},
"evidence_mode": {"const": "manual_only"},
"execution_verdict": {"enum": ["pass", "fail", "blocked", "skipped", "flaky", "not_run"]},
"flow_ids": {"type": "array", "minItems": 1, "maxItems": 1000, "uniqueItems": true, "items": {"type": "string", "minLength": 1, "maxLength": 128}},
"next_evidence": {"type": "string", "minLength": 1, "maxLength": 2048}
}
},
"results": {
"type": "object",
"additionalProperties": false,
"required": ["baseline_version", "source_revision", "environment_class", "runs", "manual_results", "defects"],
"properties": {
"baseline_version": {"type": "string", "maxLength": 32},
"source_revision": {"type": "string", "pattern": "^[0-9a-f]{40}$"},
"environment_class": {"type": "string", "minLength": 1, "maxLength": 64},
"runs": {"type": "array", "maxItems": 1000, "items": {"$ref": "#/$defs/run"}},
"manual_results": {"type": "array", "maxItems": 1000, "items": {"$ref": "#/$defs/manual_result"}},
"defects": {"type": "array", "maxItems": 1000, "items": {"$ref": "#/$defs/defect"}}
}
}
}
}
@@ -0,0 +1,141 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://crank.local/schemas/capability-inventory.schema.json",
"title": "Crank Community Capability Inventory",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"product",
"flows"
],
"properties": {
"schema_version": {
"const": 1
},
"product": {
"const": "crank-community"
},
"flows": {
"type": "array",
"minItems": 1,
"maxItems": 10000,
"items": {
"$ref": "#/$defs/flow"
}
}
},
"$defs": {
"flow": {
"type": "object",
"additionalProperties": false,
"required": [
"id",
"type",
"requirements",
"user_outcome",
"owner",
"status",
"capabilities",
"evidence"
],
"properties": {
"id": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
},
"type": {
"enum": [
"ui",
"api",
"mcp"
]
},
"requirements": {
"type": "array",
"minItems": 1,
"maxItems": 64,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 128,
"pattern": "^FR-[1-9][0-9]*$"
}
},
"user_outcome": {
"type": "string",
"minLength": 1,
"maxLength": 4096,
"pattern": "[\\s\\S]*\\S[\\s\\S]*"
},
"owner": {
"type": "string",
"minLength": 1,
"maxLength": 256,
"pattern": "[\\s\\S]*\\S[\\s\\S]*"
},
"status": {
"enum": [
"implemented",
"planned",
"gap",
"blocked"
]
},
"capabilities": {
"type": "array",
"minItems": 1,
"maxItems": 16,
"uniqueItems": true,
"items": {
"enum": [
"tools",
"resources",
"prompts",
"tasks",
"load_runs"
]
}
},
"evidence": {
"$ref": "#/$defs/evidence"
},
"notes": {
"type": "string",
"maxLength": 4096
}
}
},
"evidence": {
"type": "object",
"additionalProperties": false,
"required": [
"automated",
"manual"
],
"properties": {
"automated": {
"$ref": "#/$defs/evidencePaths"
},
"manual": {
"$ref": "#/$defs/evidencePaths"
}
}
},
"evidencePaths": {
"type": "array",
"minItems": 1,
"maxItems": 64,
"uniqueItems": true,
"items": {
"type": "string",
"minLength": 1,
"maxLength": 1024,
"pattern": "^(?!/)(?!.*//)(?!.*(?:^|/)\\.\\.?($|/))(?!.*\\\\).+$"
}
}
}
}
+1
View File
@@ -0,0 +1 @@
{"schema_version":1,"sequence":[{"backfill":{"kind":"none"},"checksum":"crank-community-baseline-v1","compatibility":"legacy-baseline","contract_evidence":null,"name":"community-baseline-v1","owner":"crank-registry","phase":"expand","readable_schema_max":1,"readable_schema_min":1,"source_digest":"eb1656fc5b4b5be9ee390d237d1d58e4b2274ae5ba9b7ba06a2f3f860dfda675","transactional":true,"version":1},{"backfill":{"kind":"none"},"checksum":"1908b97ca7fe8a85d146b0eebf007d5018a9ff406cb099614270f3428ec1db48","compatibility":"n-minus-one-readable","contract_evidence":null,"name":"legacy-consolidation-v2","owner":"crank-registry","phase":"expand","readable_schema_max":2,"readable_schema_min":1,"source_digest":"1908b97ca7fe8a85d146b0eebf007d5018a9ff406cb099614270f3428ec1db48","transactional":true,"version":2},{"backfill":{"kind":"none"},"checksum":"36487625503a8d4d8f18d5771c3c9b6705f845e267acbfcb7244c330f640cd94","compatibility":"n-minus-one-readable","contract_evidence":null,"name":"request-trace-identity-v3","owner":"crank-registry","phase":"expand","readable_schema_max":3,"readable_schema_min":2,"source_digest":"36487625503a8d4d8f18d5771c3c9b6705f845e267acbfcb7244c330f640cd94","transactional":true,"version":3}]}
+898
View File
@@ -0,0 +1,898 @@
{
"schema_version": 1,
"generated_by": "crank-config",
"fields": [
{
"semantic_path": "database.url",
"env_name": "CRANK_DATABASE_URL",
"process": "shared",
"value_type": "url",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": "legacy URL form",
"rules": [
"takes precedence over generated default-valued POSTGRES_HOST/PORT/DB/USER/PASSWORD",
"conflicts with any non-default decomposed database value"
]
},
{
"semantic_path": "database.host",
"env_name": "POSTGRES_HOST",
"process": "shared",
"value_type": "string",
"unit": null,
"default": "postgres",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.port",
"env_name": "POSTGRES_PORT",
"process": "shared",
"value_type": "u16",
"unit": "port",
"default": "5432",
"required": false,
"minimum": 1,
"maximum": 65535,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.name",
"env_name": "POSTGRES_DB",
"process": "shared",
"value_type": "string",
"unit": null,
"default": "crank",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.user",
"env_name": "POSTGRES_USER",
"process": "shared",
"value_type": "string",
"unit": null,
"default": "crank",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.password",
"env_name": "POSTGRES_PASSWORD",
"process": "shared",
"value_type": "secret",
"unit": null,
"default": "configured",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.pool.max_connections",
"env_name": "POSTGRES_MAX_CONNECTIONS",
"process": "shared",
"value_type": "u32",
"unit": "connections",
"default": "20",
"required": false,
"minimum": 1,
"maximum": 1024,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": [
"must be >= min_connections"
]
},
{
"semantic_path": "database.pool.min_connections",
"env_name": "POSTGRES_MIN_CONNECTIONS",
"process": "shared",
"value_type": "u32",
"unit": "connections",
"default": "2",
"required": false,
"minimum": 0,
"maximum": 1024,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": [
"must be <= max_connections"
]
},
{
"semantic_path": "database.pool.acquire_timeout_ms",
"env_name": "POSTGRES_ACQUIRE_TIMEOUT_MS",
"process": "shared",
"value_type": "u64",
"unit": "milliseconds",
"default": "5000",
"required": false,
"minimum": 1,
"maximum": 300000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.pool.idle_timeout_ms",
"env_name": "POSTGRES_IDLE_TIMEOUT_MS",
"process": "shared",
"value_type": "u64",
"unit": "milliseconds",
"default": "600000",
"required": false,
"minimum": 1000,
"maximum": 86400000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "database.pool.max_lifetime_ms",
"env_name": "POSTGRES_MAX_LIFETIME_MS",
"process": "shared",
"value_type": "u64",
"unit": "milliseconds",
"default": "1800000",
"required": false,
"minimum": 1000,
"maximum": 86400000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "runtime.master_key",
"env_name": "CRANK_MASTER_KEY",
"process": "shared",
"value_type": "secret",
"unit": null,
"default": null,
"required": true,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "runtime.base_url",
"env_name": "CRANK_BASE_URL",
"process": "shared",
"value_type": "url",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "runtime.max_concurrent_unary",
"env_name": "CRANK_RUNTIME_MAX_CONCURRENT_UNARY",
"process": "shared",
"value_type": "u32",
"unit": "requests",
"default": "64",
"required": false,
"minimum": 1,
"maximum": 65535,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "cache.backend",
"env_name": "CRANK_CACHE_BACKEND",
"process": "shared",
"value_type": "enum",
"unit": null,
"default": "memory",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": "redis value is deprecated in favor of valkey",
"rules": [
"external backend requires cache.url"
]
},
{
"semantic_path": "cache.url",
"env_name": "CRANK_CACHE_URL",
"process": "shared",
"value_type": "url",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": [
"forbidden with memory backend"
]
},
{
"semantic_path": "cache.default_ttl_ms",
"env_name": "CRANK_CACHE_DEFAULT_TTL_MS",
"process": "shared",
"value_type": "u64",
"unit": "milliseconds",
"default": null,
"required": false,
"minimum": 1,
"maximum": 86400000,
"sensitivity": "public",
"mode": "deprecated_no_effect",
"compatibility": null,
"rules": []
},
{
"semantic_path": "outbound.allowed_hosts",
"env_name": "CRANK_OUTBOUND_ALLOWED_HOSTS",
"process": "shared",
"value_type": "host_list",
"unit": null,
"default": "",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "outbound.denied_hosts",
"env_name": "CRANK_OUTBOUND_DENIED_HOSTS",
"process": "shared",
"value_type": "host_list",
"unit": null,
"default": "",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": [
"deny entries override allow entries"
]
},
{
"semantic_path": "outbound.max_response_bytes",
"env_name": "CRANK_OUTBOUND_MAX_RESPONSE_BYTES",
"process": "shared",
"value_type": "u64",
"unit": "bytes",
"default": "4194304",
"required": false,
"minimum": 1,
"maximum": 67108864,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.environment",
"env_name": "CRANK_ENVIRONMENT",
"process": "shared",
"value_type": "label",
"unit": null,
"default": "development",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.log_filter",
"env_name": "CRANK_LOG_LEVEL",
"process": "shared",
"value_type": "string",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.sentry_dsn",
"env_name": "CRANK_SENTRY_DSN",
"process": "shared",
"value_type": "url",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.metrics.enabled",
"env_name": "CRANK_METRICS_ENABLED",
"process": "shared",
"value_type": "bool",
"unit": null,
"default": "true",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": "yes/no/on/off spellings are deprecated",
"rules": []
},
{
"semantic_path": "observability.metrics.bearer_token",
"env_name": "CRANK_METRICS_BEARER_TOKEN",
"process": "shared",
"value_type": "secret",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": [
"required when an enabled metrics bind is non-loopback"
]
},
{
"semantic_path": "observability.otlp.endpoint",
"env_name": "OTEL_EXPORTER_OTLP_ENDPOINT",
"process": "shared",
"value_type": "url",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.traces_endpoint",
"env_name": "OTEL_EXPORTER_OTLP_TRACES_ENDPOINT",
"process": "shared",
"value_type": "url",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": [
"overrides generic OTLP endpoint"
]
},
{
"semantic_path": "observability.otlp.protocol",
"env_name": "OTEL_EXPORTER_OTLP_PROTOCOL",
"process": "shared",
"value_type": "enum",
"unit": null,
"default": "http/protobuf",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.traces_protocol",
"env_name": "OTEL_EXPORTER_OTLP_TRACES_PROTOCOL",
"process": "shared",
"value_type": "enum",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.timeout",
"env_name": "OTEL_EXPORTER_OTLP_TIMEOUT",
"process": "shared",
"value_type": "duration",
"unit": "milliseconds",
"default": "10000",
"required": false,
"minimum": 1,
"maximum": 300000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.traces_timeout",
"env_name": "OTEL_EXPORTER_OTLP_TRACES_TIMEOUT",
"process": "shared",
"value_type": "duration",
"unit": "milliseconds",
"default": null,
"required": false,
"minimum": 1,
"maximum": 300000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.headers",
"env_name": "OTEL_EXPORTER_OTLP_HEADERS",
"process": "shared",
"value_type": "headers",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.traces_headers",
"env_name": "OTEL_EXPORTER_OTLP_TRACES_HEADERS",
"process": "shared",
"value_type": "headers",
"unit": null,
"default": null,
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.max_queue_size",
"env_name": "OTEL_BSP_MAX_QUEUE_SIZE",
"process": "shared",
"value_type": "u32",
"unit": "spans",
"default": "2048",
"required": false,
"minimum": 1,
"maximum": 65536,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.max_export_batch_size",
"env_name": "OTEL_BSP_MAX_EXPORT_BATCH_SIZE",
"process": "shared",
"value_type": "u32",
"unit": "spans",
"default": "512",
"required": false,
"minimum": 1,
"maximum": 65536,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": [
"must be <= max_queue_size"
]
},
{
"semantic_path": "observability.otlp.schedule_delay",
"env_name": "OTEL_BSP_SCHEDULE_DELAY",
"process": "shared",
"value_type": "duration",
"unit": "milliseconds",
"default": "5000",
"required": false,
"minimum": 1,
"maximum": 300000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "observability.otlp.export_timeout",
"env_name": "OTEL_BSP_EXPORT_TIMEOUT",
"process": "shared",
"value_type": "duration",
"unit": "milliseconds",
"default": "30000",
"required": false,
"minimum": 1,
"maximum": 300000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.bind",
"env_name": "CRANK_ADMIN_BIND",
"process": "admin_api",
"value_type": "socket",
"unit": null,
"default": "0.0.0.0:3001",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.metrics_bind",
"env_name": "CRANK_ADMIN_METRICS_BIND",
"process": "admin_api",
"value_type": "socket",
"unit": null,
"default": "127.0.0.1:9464",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.storage_root",
"env_name": "CRANK_STORAGE_ROOT",
"process": "admin_api",
"value_type": "absolute_path",
"unit": null,
"default": "/var/lib/crank/storage",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.rate_limit.rps",
"env_name": "CRANK_ADMIN_RATE_LIMIT_RPS",
"process": "admin_api",
"value_type": "u32",
"unit": "requests_per_second",
"default": "30",
"required": false,
"minimum": 1,
"maximum": 100000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.rate_limit.burst",
"env_name": "CRANK_ADMIN_RATE_LIMIT_BURST",
"process": "admin_api",
"value_type": "u32",
"unit": "requests",
"default": "60",
"required": false,
"minimum": 1,
"maximum": 1000000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": [
"must be >= admin rate RPS"
]
},
{
"semantic_path": "admin.invocation_log_retention_days",
"env_name": "CRANK_INVOCATION_LOG_RETENTION_DAYS",
"process": "admin_api",
"value_type": "u32",
"unit": "days",
"default": "30",
"required": false,
"minimum": 1,
"maximum": 36500,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.session.secret",
"env_name": "CRANK_SESSION_SECRET",
"process": "admin_api",
"value_type": "secret",
"unit": null,
"default": null,
"required": true,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.password_pepper",
"env_name": "CRANK_PASSWORD_PEPPER",
"process": "admin_api",
"value_type": "secret",
"unit": null,
"default": null,
"required": true,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.session.ttl_hours",
"env_name": "CRANK_SESSION_TTL_HOURS",
"process": "admin_api",
"value_type": "u32",
"unit": "hours",
"default": "24",
"required": false,
"minimum": 1,
"maximum": 8760,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.trust_forwarded_headers",
"env_name": "CRANK_TRUST_FORWARDED_HEADERS",
"process": "admin_api",
"value_type": "bool",
"unit": null,
"default": "false",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": "yes/no/on/off spellings are deprecated",
"rules": []
},
{
"semantic_path": "admin.bootstrap.email",
"env_name": "CRANK_BOOTSTRAP_ADMIN_EMAIL",
"process": "admin_api",
"value_type": "string",
"unit": null,
"default": null,
"required": true,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.bootstrap.password",
"env_name": "CRANK_BOOTSTRAP_ADMIN_PASSWORD",
"process": "admin_api",
"value_type": "secret",
"unit": null,
"default": null,
"required": true,
"minimum": null,
"maximum": null,
"sensitivity": "secret",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.bootstrap.display_name",
"env_name": "CRANK_BOOTSTRAP_ADMIN_DISPLAY_NAME",
"process": "admin_api",
"value_type": "string",
"unit": null,
"default": "Crank Owner",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "admin.demo_seed",
"env_name": "CRANK_DEMO_SEED",
"process": "admin_api",
"value_type": "bool",
"unit": null,
"default": "false",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "public",
"mode": "effective",
"compatibility": "yes/no/on/off spellings are deprecated",
"rules": []
},
{
"semantic_path": "mcp.bind",
"env_name": "CRANK_MCP_BIND",
"process": "mcp_server",
"value_type": "socket",
"unit": null,
"default": "0.0.0.0:3002",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "mcp.metrics_bind",
"env_name": "CRANK_MCP_METRICS_BIND",
"process": "mcp_server",
"value_type": "socket",
"unit": null,
"default": "127.0.0.1:9465",
"required": false,
"minimum": null,
"maximum": null,
"sensitivity": "internal",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "mcp.refresh_ms",
"env_name": "CRANK_MCP_REFRESH_MS",
"process": "mcp_server",
"value_type": "u64",
"unit": "milliseconds",
"default": "5000",
"required": false,
"minimum": 100,
"maximum": 3600000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "mcp.rate_limit.rps",
"env_name": "CRANK_MCP_RATE_LIMIT_RPS",
"process": "mcp_server",
"value_type": "u32",
"unit": "requests_per_second",
"default": "60",
"required": false,
"minimum": 1,
"maximum": 100000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
},
{
"semantic_path": "mcp.rate_limit.burst",
"env_name": "CRANK_MCP_RATE_LIMIT_BURST",
"process": "mcp_server",
"value_type": "u32",
"unit": "requests",
"default": "120",
"required": false,
"minimum": 1,
"maximum": 1000000,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": [
"must be >= MCP rate RPS"
]
},
{
"semantic_path": "runtime.max_concurrent_sessions",
"env_name": "CRANK_RUNTIME_MAX_CONCURRENT_SESSIONS",
"process": "mcp_server",
"value_type": "u32",
"unit": "sessions",
"default": "16",
"required": false,
"minimum": 1,
"maximum": 65535,
"sensitivity": "public",
"mode": "effective",
"compatibility": null,
"rules": []
}
],
"deployment_only_fields": [
"COMPOSE_PROJECT_NAME",
"POSTGRES_PUBLISH_BIND",
"POSTGRES_PUBLISH_PORT",
"CRANK_ADMIN_API_IMAGE",
"CRANK_MCP_SERVER_IMAGE",
"CRANK_UI_IMAGE",
"CRANK_PUBLISH_BIND",
"CRANK_ADMIN_PUBLISH_PORT",
"CRANK_MCP_PUBLISH_PORT",
"CRANK_UI_PUBLISH_PORT",
"VALKEY_PUBLISH_BIND",
"VALKEY_PUBLISH_PORT"
]
}