Skip to content

AI асистент (#80) — launch-gate чеклист преди provision/изложение #83

Description

@nedda76

Проследяване на launch-gate слоя за AI асистента (backend integrity core), след security ред-тийма на #80. Целта: ясно кой какво движи и нищо да не изпадне, преди ендпойнтът да се provision-не/изложи.

Owner-и: BE integrity core (apps/web/app/lib/assistant/* + route-а) — @nedda76; consuming lane-овете (renderer на /reports/:id, chat dock, R2 persist + dedup, voice, CI) — екипът на @lyubomir-bozhinov. Контрактите (block-spec/R2/SSE) са замразени в docs/spec/assistant-contracts.md + fixtures.

✅ Затворено в #80 (след ред-тийма)

  • E2 — детерминистична проверка „без едри числа в прозата" (не prompt правило)
  • Санитизация на data-cells, не само на проза (stored-XSS)
  • eop_fetch byte-cap — отказва оразмерения отговор вместо да го парсва (беше no-op)
  • AST table-allowlist + забрана на comma cross-join / WITH RECURSIVE + AST-достоверен LIMIT
  • Per-IP rate-limit на POST /assistant/chat (ASSISTANT_RATE_LIMITER, 10/min/IP)
  • Cap на история/тяло + abortSignal (disconnect → cancel) + явни maxRetries/maxOutputTokens
  • MAX_STEPS clamp към [1, 20]; graceful degradation (stream onError + 503 при setup)
  • entity-link id-та в bound редове + low-ове (encodeURI, embed cap + count-проверка, без raw D1 грешка към модела), rag.test.ts
  • Контракти block-spec / R2 / SSE + fixtures

⏳ Остава преди launch (по тежест)

  • 🔴 Read-only D1 data path за run_sql — отделен binding без write права (§9.4); днес env.DB е read-write, така че AST guard-ът е носещ — @nedda76
  • 🔴 Неотменяем per-query timeout за run_sql (§9.4) — нужен infra вход, pair
  • 🔴 Глобален budget / circuit-breaker пред BgGPT (BGGPT_RATE_LIMIT_RPM) — per-IP лимитът е налице, остава глобалният таван, pair
  • 🟠 HMAC-подпис на сървърните съобщения (§9.3) — @nedda76
  • 🟠 Memoize (sql_hash, freshness) + дедуп на справки (§9.8) — R2 persist lane
  • 🟠 Golden-report CI, вкл. adversarial prompt-injection (§9.9) — CI lane
  • 🟡 Launch gate: Turnstile — pair

🔧 Provisioning gate (трябва да предхожда wrangler deploy, иначе CD пада)

  • BGGPT_API_KEY (secret), Vectorize индекс sigma-assistant, R2 кофа sigma-reports, еднократен indexSchemaCorpus, ratelimit namespace 1003

Реф: коментарите на #80 (ред-тийм на @lyubomir-bozhinov) + apps/web/app/lib/assistant/README.md („Сигурност — затворено по ред-тийма на #80").

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: highВисок приоритетsecurityСигурност и уязвимостиwebОбласт: web

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions