hour берёт L-задачи (t-261002170836): classes S,M,L + мандат; тесты синхронизированы

This commit is contained in:
Simbiot Harness 2026-10-02 16:06:02 +00:00
parent cac1ffaae0
commit e435289e55
2 changed files with 9 additions and 9 deletions

View file

@ -85,9 +85,9 @@ LEVELS = {
), ),
"hour": CycleLevel( "hour": CycleLevel(
name="hour", label="Час · поток", every=HOUR, uses_llm=True, name="hour", label="Час · поток", every=HOUR, uses_llm=True,
model="auto", effort="medium", ctx_tokens=512_000, task_classes=("S", "M"), model="auto", effort="medium", ctx_tokens=512_000, task_classes=("S", "M", "L"),
mandate=("Ты — часовой поток харнеса Simbiot. Дайджест часа: что произошло, " mandate=("Ты — часовой поток харнеса Simbiot. Дайджест часа: что произошло, "
"статусы фоновых задач, батч мелочей (S/M). Консолидируй минутные " "статусы фоновых задач, батч задач (S/M/L). Консолидируй минутные "
"события в выжимку — сырое наверх не поднимай. " "события в выжимку — сырое наверх не поднимай. "
"Эскалации от нижних уровней (секция ЭСКАЛАЦИИ в контексте) — твоя " "Эскалации от нижних уровней (секция ЭСКАЛАЦИИ в контексте) — твоя "
"зона: разберись и закрой cli.py escalation-ack <id> -n \"что сделал\"; " "зона: разберись и закрой cli.py escalation-ack <id> -n \"что сделал\"; "

View file

@ -66,7 +66,7 @@ check("2: порядок — старейшая ПЕРВАЯ", batch[0] == "t-b"
mixed = {"t-s": _task("t-s", size="S"), "t-m": _task("t-m", size="M"), mixed = {"t-s": _task("t-s", size="S"), "t-m": _task("t-m", size="M"),
"t-l": _task("t-l", size="L")} "t-l": _task("t-l", size="L")}
batch = scheduler.select_task_batch(LEVELS["hour"], _model(mixed)) batch = scheduler.select_task_batch(LEVELS["hour"], _model(mixed))
check("3: hour берёт S+M, L не его класс", sorted(batch) == ["t-m", "t-s"], str(batch)) check("3: hour берёт S+M+L (t-261002170836: часовой подъём L)", sorted(batch) == ["t-l", "t-m", "t-s"], str(batch))
check("3: min берёт только S", check("3: min берёт только S",
scheduler.select_task_batch(LEVELS["min"], _model(mixed)) == ["t-s"]) scheduler.select_task_batch(LEVELS["min"], _model(mixed)) == ["t-s"])
@ -130,16 +130,16 @@ three_det = {"t-a": _task("t-a", created="2026-09-30T08:00:00"),
details="шаги: 1) разбор 2) фикс"), details="шаги: 1) разбор 2) фикс"),
"t-c": _task("t-c", created="2026-09-30T09:00:00")} "t-c": _task("t-c", created="2026-09-30T09:00:00")}
fake = _model({**three_det, fake = _model({**three_det,
"t-d": _task("t-d", size="L", created="2026-09-30T10:00:00", "t-e": _task("t-e", size="XL", created="2026-09-30T10:00:00",
details="L-постановка")}) # t-d — L, не часовой details="XL-постановка")}) # t-e — XL, не часовой
ctx = scheduler.build_context(LEVELS["hour"], fake) ctx = scheduler.build_context(LEVELS["hour"], fake)
check("8: секция батча есть (3, без L)", "ТЕКУЩАЯ РАБОТА — БАТЧ из 3" in ctx, check("8: секция батча есть (3, без XL)", "ТЕКУЩАЯ РАБОТА — БАТЧ из 3" in ctx,
ctx.split("ДОСКА ЗАДАЧ")[0][-300:]) ctx.split("ДОСКА ЗАДАЧ")[0][-300:])
check("8: все три id в секции", all(t in ctx for t in ("t-a", "t-b", "t-c"))) check("8: все три id в секции", all(t in ctx for t in ("t-a", "t-b", "t-c")))
check("8: постановка (details) в секции", "разбор" in ctx) check("8: постановка (details) в секции", "разбор" in ctx)
check("8: L-постановка НЕ в батче (в доске — можно)", check("8: XL-постановка НЕ в батче (только day, в доске — можно)",
"L-постановка" not in ctx.split("ДОСКА ЗАДАЧ")[0].split("ТЕКУЩАЯ РАБОТА")[1] "XL-постановка" not in ctx.split("ДОСКА ЗАДАЧ")[0].split("ТЕКУЩАЯ РАБОТА")[1]
if "ТЕКУЩАЯ РАБОТА" in ctx else True, "t-d в батче") if "ТЕКУЩАЯ РАБОТА" in ctx else True, "t-e в батче")
check("8: инструкция закрывать отдельно", check("8: инструкция закрывать отдельно",
'cli.py complete <task_id> -a' in ctx) 'cli.py complete <task_id> -a' in ctx)
check("8: legacy-вызов с одной задачей работает", check("8: legacy-вызов с одной задачей работает",