cache: define response cache boundaries
This commit is contained in:
@@ -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
@@ -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, эта сущность должна быть сначала явно добавлена в эту модель данных, а уже потом в код и БД.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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 нужны:
|
||||
|
||||
Reference in New Issue
Block a user