simbiot-harness/scripts/compact-store.sh
Simbiot Harness 2b266caab5 сжатие стора с подписью + «сначала ответ, потом работа» на мин-уровне
harness/compact.py + cli.py compact [--dry-run|--vacuum|--verify-archives]:
шум сек-уровня (CycleTicked sec, ReflexObserved без алерта/команд/каналов)
старше часа → архив jsonl.gz (0600, строки целиком со sig) → мост цепочки
(подписи унесённых строк, на которые ссылаются остающиеся, + маркеры
boundary:<id> для legacy-границ) → подписанный StoreCompacted с sha256
архива/строк/моста → удаление пачками. audit.verify_events принимает мост
только при совпадении хеша с подписанным событием; проекции подгружают
мост лениво, если хвост перекрыл сжатый диапазон (rebuild с нуля).
Репетиция на копии прода: 1389 → 200 МБ, verify 484 с/3.4 ГБ → 29 с/420 МБ,
архив 246 МБ — все 2.47 млн подписей проверены; rebuild_projections OK.
Найдено репетицией: legacy-граница (id 466633) и коллизия id сжатия в
одну секунду — оба покрыты тестом. scripts/compact-store.sh — процедура
с VACUUM под остановленными писателями.

мин-уровень: если до ответа нужна работа >30 с — сначала короткий
tg-reply, итог — cli.py tg-reply <id> --followup (в чат входящего:
группа → группа; идемпотентно по тексту). p90 «старт LLM → ответ» был 223 с.

hour: лимит 300 вызовов оставлен — реальный пик 205 (p90 169), 100
оборвал бы 8 из 19 тиков.
Тесты: test_compact 25 PASS, test_followup 10 PASS; полный набор — без регрессий.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 20:10:26 +00:00

19 lines
1.1 KiB
Bash
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
# Сжатие боевого стора с подписью (harness/compact.py, аудит 2026-10-16):
# 1) шум сек-уровня → подписанный архив + мост цепочки, удаление пачками (демоны живы);
# 2) VACUUM — под остановленными писателями: ждём тихое окно (нет LLM-воркера),
# стоп лестницы и TG-поллера (Telegram копит апдейты — ничего не теряется), старт.
# Использование: scripts/compact-store.sh [older_than_hours=1]
set -euo pipefail
cd "$(dirname "$0")/.."
export SIMBIOT_HOME="${SIMBIOT_HOME:-/var/lib/simbiot-harness}"
PY=./venv/bin/python
$PY cli.py compact --older-than-hours "${1:-1}"
for i in $(seq 1 180); do
pgrep -f '/harness/_llm_worker\.py$' >/dev/null || { sleep 3; pgrep -f '/harness/_llm_worker\.py$' >/dev/null || break; }
sleep 10
done
systemctl stop simbiot-harness simbiot-harness-tg
trap 'systemctl start simbiot-harness simbiot-harness-tg' EXIT
$PY cli.py compact --vacuum
$PY cli.py verify | tail -2