feat: complete Epic 1 production foundation
This commit is contained in:
+38
-3
@@ -318,6 +318,17 @@ Crank сохраняет в PostgreSQL данные о тестовых запу
|
||||
опубликованных MCP-инструментов. Это отдельная прикладная история, а не
|
||||
копия stdout.
|
||||
|
||||
Новые записи сохраняют точную Operation version и закрытую классификацию
|
||||
`execution_stage`, `execution_error_code`, `retryability` и
|
||||
`outcome_certainty`. Admin Draft Test и MCP используют одну taxonomy; transport
|
||||
может отличаться, но не смысл результата. Legacy-записи до migration v5 имеют
|
||||
`NULL` в этих полях — Crank не выдумывает исторические исходы.
|
||||
|
||||
`outcome_unknown` означает, что внешний side effect мог произойти до timeout
|
||||
или transport failure. Такой исход требует ручной сверки и никогда не является
|
||||
сигналом для автоматического повтора. Request ID и Trace ID остаются полями
|
||||
корреляции и не используются как Prometheus labels.
|
||||
|
||||
Если внешнее действие завершилось, но PostgreSQL отклонил запись истории,
|
||||
Crank не меняет фактический результат и не повторяет действие. Вместо
|
||||
синтетической записи создаётся эксплуатационный инцидент `DC-08`:
|
||||
@@ -337,12 +348,25 @@ Crank не меняет фактический результат и не пов
|
||||
|
||||
- операция;
|
||||
- агент, если вызов пришел через MCP;
|
||||
- request id;
|
||||
- Request ID и Trace ID;
|
||||
- статус;
|
||||
- HTTP status code внешнего API;
|
||||
- время выполнения;
|
||||
- краткий preview запроса и ответа;
|
||||
- категория ошибки, если вызов завершился ошибкой.
|
||||
- execution stage, error code, retryability и certainty, если вызов завершился
|
||||
ошибкой.
|
||||
|
||||
Previews проходят единый redaction/size limit до записи в PostgreSQL, Admin API
|
||||
и CSV. Raw credentials, arbitrary headers/body и неограниченный текст ошибки не
|
||||
являются частью Invocation History. Legacy-записи могут иметь пустые typed
|
||||
execution fields; новые записи должны содержать Request ID и Trace ID.
|
||||
|
||||
Admin Logs API поддерживает workspace-scoped фильтры `period`, `level`,
|
||||
`status`, `source`, `operation_id`, `agent_id`, `search` и deterministic opaque
|
||||
cursor pagination. Detail view показывает те же безопасные поля и не раскрывает
|
||||
foreign-scope metadata через counts или разные формы ошибок. CSV export
|
||||
использует те же filters/auth/redaction и дополнительно экранирует
|
||||
spreadsheet-formula cells.
|
||||
|
||||
При обновлении опубликованного MCP-каталога событие `mcp.catalog.analyzed`
|
||||
содержит `tool_count`, `serialized_bytes`, `estimated_context_tokens`,
|
||||
@@ -359,7 +383,18 @@ Crank не меняет фактический результат и не пов
|
||||
- успешные и ошибочные вызовы;
|
||||
- долю ошибок;
|
||||
- задержки p50, p95 и p99;
|
||||
- распределение вызовов по операциям.
|
||||
- распределение вызовов по операциям;
|
||||
- распределение по Agent;
|
||||
- outcome groups `success`, `upstream`, `client`, `schema`, `crank`.
|
||||
|
||||
Периоды считаются в UTC как half-open interval `[start, end)`, поэтому запись
|
||||
на правой границе периода не дублируется в соседнем окне. Retention удаляет
|
||||
только старые Invocation History rows по typed observable outcome. Cleanup
|
||||
сохраняет публичный usage horizon последних 90 дней даже при более агрессивном
|
||||
requested cutoff и возвращает typed policy/outcome (`requested_cutoff`,
|
||||
`effective_cutoff`, deleted count, preserved window). Published Version audit,
|
||||
Agent snapshots и immutable release evidence не являются объектами retention
|
||||
cleanup.
|
||||
|
||||
## Для чего это нужно
|
||||
|
||||
|
||||
Reference in New Issue
Block a user