Операционный handbook для workflow layer, runtime ontology и marketplace-сценариев.
Рендер и UX entrypoint в платформе: **/agent-catalog/handbook**.
Документ для запуска и безопасного эксплуатационного использования:
anti-fingerprint-baselineaccount-lifecycle-orchestratorbrowser-session-runnerfleet-reasoning-routerДля каждого шаблона применяется единый порядок: 1. GET /api/v1/agent-packs/bootstrap (inventory + dry-run context), 2. POST /api/v1/agents/{id}/run с dryRun:true, 3. POST /api/v1/agents/{id}/run с dryRun:false, 4. GET /api/v1/agents/{id}/diff?baseTemplateId={baseTemplateId}, 5. при необходимости POST /api/v1/agent-runs/{runId}/retry.
Фиксировать всегда:
Шаблоны с dry-run/apply, condition/loop/retry и rollback-патчами.
Наборы для device/profile/network/app/files/automation-цепочек.
Пакетирование, bootstrap preview и управляемые стратегии.
context.source, context.phase, context.profileHint, context.regionHint.network.proxy, network.wifi, app.open, automation.adb-shell, automation.script-hook.1. POST /api/v1/agents/{id}/run
fleetSelector{ownerTag,region,model,taskIdRegex,riskClass}, context.source.app.open, app.open-activity, automation.input.tap/swipe, files.push/pull, app.status.1. POST /api/v1/agents/{id}/run 2. {"dryRun":true,"actorRole":"user","context":{"source":"agent-catalog"}}
context.routeUrl, context.source, fleetSelector.app.open, app.open-url, automation.input.tap/swipe, app.force-open, app.kill.1. POST /api/v1/agents/{id}/run 2. {"dryRun":true,"context":{"source":"agent-catalog","routeUrl":"https://example.com"}}
context.errorRate, context.connectivity, context.latency, context.source.http.request, condition, automation.devtools-recovery, device.reconnect, automation.popup-close.1. POST /api/v1/agents/{id}/run
fence-quarantine)network.airplane/wifi/lte isolation lane + incident-mark.bulk-account-rotation)wave with перерыв.anti-drift-sweeper### A) Bootstrap (dry-run/apply) 1. GET /api/v1/agent-packs/bootstrap (preview) 2. POST /api/v1/agents/{id}/run с dry-run для каждого кандидата 3. POST /api/v1/agent-packs/bootstrap { "force": false } — idempotent install 4. POST /api/v1/agent-packs/bootstrap { "force": true } — принудительное обновление blueprint-версий
### B) Исполнение 1. POST /api/v1/agents/{id}/run (apply) 2. GET /api/v1/agent-runs/{runId} для наблюдаемости 3. деградация: POST /api/v1/agent-runs/{runId}/retry с fromNodeId 4. критическая деградация: POST /api/v1/agent-runs/{runId}/cancel
### C) Дифф/rollback discipline 1. До apply: GET /api/v1/agents/{id}/diff?baseTemplateId={baseTemplateId}
idempotencyKey для идемпотентности,tenantId/operatorTag,fleetSelector,dryRun flag,baseTemplateId,subscription entitlement.{"dryRun":true,"context":{"source":"agent-catalog","phase":"fingerprint-audit"}}1. POST /api/v1/agents/{id}/run 2. {"dryRun":false,"requireDestructiveApproval":false,"context":{"source":"agent-catalog","phase":"campaign"}}
GET /api/v1/agents/{id}/diff?baseTemplateId={baseTemplateId}baseTemplateId, запустить dry-run и только после его успеха production apply.fingerprint, timezone, dns1, ip.network.control + automation.control, seed-пакет установлен.1. POST /api/v1/agents/{id}/run 2. {"dryRun":false,"requireDestructiveApproval":true,"fleetSelector":{"riskClass":"incident-recovery"}}
GET /api/v1/agents/{id}/diff?baseTemplateId={baseTemplateId}maxParallelPerSerial до 1, вернуть approved base template.account-lifecycle.txt (или эквивалентный контрактный артефакт), status app.status успешный.files.control + app.control, destructive ветки только с подтверждением.1. POST /api/v1/agents/{id}/run 2. {"dryRun":false,"context":{"source":"agent-catalog","routeUrl":"https://example.com"}}
GET /api/v1/agents/{id}/diff?baseTemplateId={baseTemplateId}app.force-open/app.kill, оставить базовый open/open-url.open -> action -> close -> done, без зависания webview.app.control + automation.control.{"dryRun":true,"context":{"source":"agent-catalog","errorRate":1,"connectivity":"ok"}}1. POST /api/v1/agents/{id}/run 2. {"dryRun":false,"requireDestructiveApproval":true,"context":{"source":"agent-catalog","errorRate":0.8}}
GET /api/v1/agents/{id}/diff?baseTemplateId={baseTemplateId}run.meta.routerDecision, ошибка не перетекает в бесконечный retry.driftSeverity выше порога.changedFields### D) Наблюдаемость и SLO
errorRate > 5% 5m => throttle fanout.queueLagMs > 120000 => снижать maxParallelPerSerial.device.reconnect failure => не допускать destructive узлы без успешной recovery.