Process Rules
Нормативные правила для всех процессов
Source: process_rules.md — нормативный документ платформы. Все процессы обязаны следовать этим правилам.
1Process = Contract
Каждый процесс обязан иметь Process Contract (в БД + в workflow pack).
Обязательные поля:
- •
process_key— unique identifier - •
version— semver - •
jtbd— Jobs To Be Done - •
input_schema— JSON Schema - •
output_schema— JSON Schema - •
steps_expected— список шагов
SLA и Policy:
- •
sla— p50, p95, max_steps, max_retries - •
fallback_policy— поведение при ошибках - •
kpi— success_rate, fallback_rate, redo_rate - •
visibility— что показываем юзеру - •
safety_policy— SSRF, PII, финансы
Rule: Если нет контракта — это не process template.
2Audit-first Runtime
Ни один run/step не живет только в памяти. Истина в Postgres:
clowbot.process_runsЗапуски процессов
clowbot.process_run_stepsИстория шагов
clowbot.process_artifactsАртефакты
clowbot.automation_eventsTrace events
Минимум для любого run:
{
"requested_by": 123, // кто запустил (user_id)
"chat_id": 456, // где запущено
"template_key": "web_search",
"template_version": "1.0.0",
"current_step_key": "synthesize",
"status": "running" // queued|running|waiting_user|succeeded|degraded|failed|cancelled
}3Unified Status Dictionary
Compatibility: legacy done нормализуется в succeeded.
4Telegram Smart Message
Один run = одна run-панель (process_run_panels), которая редактируется по мере прохождения шага.
Панель содержит:
- • process name/code
- • run_id
- • status + progress
- • current step
- • runtime summary
Inline actions:
- • 📄 details
- • 🧾 logs
- • 🧩 artifacts
- • 🔄 refresh
- • 🙈 hide
Команды:
/process <run_id> → открыть run-панель /run <process_code> <task> → создать run + панель
5n8n Interface Contract
n8n внутри может быть любым, но наружу обязан быть детерминирован:
POST /internal/process/events/runRun events (start, complete, fail)
POST /internal/process/events/stepStep events
POST /internal/process/artifactsArtifacts
Rule: n8n не источник истины. Источник истины — Postgres.
6Fallback as First-class Behavior
Каждый контракт обязан описывать fallback стратегии:
# Пример из process_runner.py
response = {
"model": fallback_model,
"message": {"content": degraded_text},
"degraded": True,
"error": "timeout_fallback_exhausted"
}7Test Matrix (Mandatory)
Для каждого process template обязательны тесты:
Happy Path
Нормальное выполнение
Degraded Path
Выполнение с fallback
Failure Path
Обработка ошибок
Group/Thread Path
Если процесс групповой
Done Criteria:
- ✓ Есть row в
process_runs - ✓ Есть step history
- ✓ Есть user-facing output в Telegram
- ✓ Есть trace в
automation_events
8Prompt-grounded Factual Answers
- Runtime facts in context:Текущее datetime/timezone и другие факты должны передаваться в model context.
- No narrow handlers:Избегать узких hardcoded handlers для conversational intents (date/time/day), если это не требуется policy/safety.
- Deep-redo on feedback:Если
1⭐ + 🔄 redo, regeneration переключается на deep-redo policy:- • Stricter anti-hallucination behavior
- • Explicit use of runtime factual context
- • Auditable trace in DB/runtime events
9Swarm Live Process Test Profile
Для релизной готовности обязателен live swarm-профиль в тестовой группе:
Startup Message
bot поднялся с базовой статусной моделью run/step
Bot-to-bot Chain Scenario
/swarm_test start ... → проверка адресного вызова без fan-out
Full Process Smoke Matrix
/swarm_test processes [all|n8n|local] [limit]
Quality Gate
- • Smoke результат в
process_template_tests - • Проверка через
mart.vw_process_test_gate - • DB trace:
reminders,messages, runtime events