cache: define response cache boundaries

This commit is contained in:
a.tolmachev
2026-05-03 22:22:16 +00:00
parent d3b7d246da
commit 851d70ad7a
9 changed files with 234 additions and 19 deletions
+6
View File
@@ -138,6 +138,12 @@
- в `Community` backend принимает только:
- `REST`
- `security_level = standard`
- `execution_config.response_cache` допускается только для:
- `REST`
- `GET`
- операций без `auth_profile_ref`
- `execution_config.response_cache` не означает глобальный shared cache на все вызовы системы:
- response cache должен быть изолирован минимум по `workspace + agent + operation + request fingerprint`
- попытка создать, обновить или импортировать операцию с неподдерживаемым `protocol` или `security_level` должна завершаться `validation_error` еще на стороне `admin-api`, а не только скрываться в UI.
### 5.4. Samples and descriptors
+39 -3
View File
@@ -510,7 +510,43 @@
- `validate_certificate`
- `ws_security_profile`
## 6. XML normalization model
## 6. `ExecutionConfig`
`ExecutionConfig` хранит общие runtime-настройки операции.
Ключевые поля:
- `timeout_ms`
- `retry_policy`
- `response_cache`
- `auth_profile_ref`
- `headers`
- `protocol_options`
- `streaming`
### 6.1. `ResponseCachePolicy`
Первый поддержанный вариант response cache policy:
- `ttl_ms`
Ограничения стартовой реализации:
- policy задается явно на операции;
- response cache допускается только для read-only вызовов;
- в открытой редакции первый поддержанный путь:
- `REST`
- `GET`
- без `auth_profile_ref`
- cache key должен строиться не глобально, а минимум в контексте:
- `workspace`
- `agent`
- `operation`
- `request fingerprint`
Это позволяет избежать неявного кэширования ответов, зависящих от upstream credentials.
## 7. XML normalization model
Для SOAP/XSD-пайплайна `crank-schema` теперь фиксирует XML-origin metadata отдельными code-level types:
@@ -524,7 +560,7 @@
- локальное имя и namespace;
- repeated / nillable semantics.
## 7. `Schema`
## 8. `Schema`
`Schema` - нормализованное описание входа или выхода.
@@ -537,7 +573,7 @@
- nullable-поля;
- `oneof` для protobuf.
## 8. Принцип совместимости
## 9. Принцип совместимости
Если UI требует сущность, которой нет в текущем backend, эта сущность должна быть сначала явно добавлена в эту модель данных, а уже потом в код и БД.
+4
View File
@@ -193,6 +193,10 @@
- Community deployment path умеет поднимать optional `Valkey`;
- Cloud использует shared cache layer как default managed runtime component;
- Enterprise может подключать свой `Valkey/Redis` на уровне single-node или cluster deployment.
- cache namespaces документированы так, чтобы:
- platform / coordination state не смешивался с response cache;
- response cache по умолчанию изолировался по `workspace + agent + operation + request fingerprint`;
- внешний cache backend можно было безопасно шарить между несколькими рабочими областями и агентами.
## 14. Этап 11. Live staging and demo readiness
+36
View File
@@ -166,6 +166,42 @@ Demo/deployment:
- `CRANK_CACHE_BACKEND=valkey` или `redis` при наличии внешнего cache store;
- без этих переменных система должна оставаться полностью работоспособной.
### Cache boundaries
В платформе должны существовать два разных cache-контура:
- `platform / coordination cache`
- `response cache`
Первый контур хранит служебное краткоживущее состояние:
- ingress rate limiting;
- replay guard;
- ephemeral coordination state;
- будущие short-lived / one-time token helpers.
Второй контур хранит только кэшируемые ответы операций.
Эти контуры не должны смешивать ключи друг с другом.
### Cache key isolation
Базовое правило изоляции:
- разные `workspace` не должны делить одни и те же cache keys;
- разные `agent` внутри одного `workspace` тоже не должны делить одни и те же response cache keys по умолчанию;
- разные `operation` внутри одного `agent` не должны попадать в общий response cache namespace.
Стартовая модель namespace для response cache:
- `workspace + agent + operation + request fingerprint`
Стартовая модель namespace для platform / coordination cache:
- `workspace + agent + cache scope + logical key`
Это позволяет безопасно использовать один внешний `Valkey/Redis` сразу для нескольких агентов и рабочих областей без взаимного пересечения данных.
### Auth env
Для app-level auth нужны: