Рубка
Оболочка над Windows с глубокой интеграцией ИИ. Одно окно = один контур с живой сессией Agent SDK, которая не пересоздаётся. Диалог, задачи, документы, браузер с авторизациями, почта, кроны и таймеры, виджеты, диктовка. Постановка задач из Телеграма и MAX. Цель владельца: пользоваться компьютером только через оболочку. Делается для себя, при успехе выкладывается открытым кодом: оболочка наша, всё остальное (подписка, ключи, ssh, профиль браузера, память, скиллы) приносит пользователь.
готовS1 · С1 · Макет и решения5/5
Цель: Согласовать вид и ключевые развилки ДО кода. Гейт: владелец сказал да на макет.
готовS2 · С2 · Каркас: ядро, окно, слой прав6/6
Цель: Работающий скелет: живая сессия, стрим шагов, гейт безопасности, конфиг отдельно от кода.
В РАБОТЕS3 · С3 · Долгая жизнь: фон, контуры, планировщик3/6
Цель: Задачи переживают закрытие окна. Кроны, таймеры, автозапуск. Контуры со своими сессиями.
готовS4 · С4 · Входы: Телеграм и MAX3/3
Цель: Поставить задачу с телефона и получить отчёт. Тот же гейт и журнал, что в окне.
готовS5 · С5 · Десктоп-руки: Office, превью, браузер, почта3/4
Цель: Правка документа с превью и подтверждением. Браузер на живом профиле.
В РАБОТЕS6 · С6 · Джарвис: виджеты, поиск, диктовка3/5
Цель: Рабочий день без запуска приложений руками.
В РАБОТЕS7 · Проверки по сроку3/5
Цель: Отложенные проверки сработало ли. Команда проверки лежит в detail.
планS8 · С7 · Очередь и парковка: не простаивать0/8
Цель: Ждать должна задача, а не контур. Упёрлись в вопрос — задача в ожидание, контур берёт следующую. Полное ТЗ: docs/TASK-queue-and-parking.md в репозитории.
готовS9 · С9 · Привести вид в порядок6/6
Цель: Показать можно клиенту: без технической кухни, вопросы кнопками, всё по-русски. Делается В КОНЦЕ, когда работа закончена.
ревьюS10 · С10 · Очередь, парковка и пульт7/7
Цель: Ждать должна ЗАДАЧА, а не контур. Упёрлись в вопрос — задача на парковку, контур берёт следующую. Постановка лежит в репозитории: docs/TASK-queue-and-parking.md, ЖДЁТ ПОДТВЕРЖДЕНИЯ владельца перед началом.
готовS11 · С11 · Канбан по проектам4/4
Цель: Владелец кладёт задачи в очередь и СМОТРИТ, как они двигаются. Карточки двигает ассистент: взял в работу, завершил. Разбито по проектам, чтобы не было миллиона карточек в одном слое. Идея владельца 03.09, делать ПОСЛЕ спринта очереди.
ревьюS12 · С12 · Отчёты по соцсетям3/4
Цель: Понедельничный отчёт по соцсетям сам приходит владельцу. Данные считает код, не модель.
ревьюS13 · С13 · Забор задач из AITODO22/22
Цель: Рубка забирает из AITODO задачи с галкой «через ИИ» в свою очередь, ждёт условия «инфа собрана», читает паспорт задачи из базы знаний и возвращает итог в задачу AITODO и в телеграм. Очередь и парковка уже есть (С10, core/src/queue.mjs). Решения владельца 06.09.2026, роадмап скилла в проекте aitodo, спринт С17.
готовS14 · С14 · Ночная выгрузка и связи знаний13/14
Цель: Раз в сутки собирать телеграм и MAX по четырём папкам, раскладывать файлы, аудио и тексты с разметкой кто-от-кого, задачи во Входящие, связывать кто что знает. НЕ НАЧАТО: сначала развилки владельца.
готовS15 · С15 · Спираль связей: темы, паспорта, один поиск14/14
Цель: От любого сообщения раскрутить спираль и собрать весь контекст задачи. Человек, проект и тема становятся метками одного сорта, поэтому от любой можно шагнуть к любой. Две оси и путать их нельзя: связи сужают и говорят чьё это, темы расширяют поперёк проектов и вытаскивают чужие встречи, где обсуждали то же самое.
ревьюS16 · С14 · Рабочее место: параллельные проекты, экран задачи, проверка через окно23/23
Цель: Владелец ставит задачу и уверен в результате как в VS Code: три проекта параллельно, у задачи свой экран с шагами, поправкой и итогом, слово владельца первым, автозабор с согласия, пауза видна, служба живёт без окна, всё проверено мной через настоящее окно до владельца. Спека docs/TASK-workplace.md, критерии С14.1–С14.14.
ревьюS17 · С15 · Пульт управления: лимиты, слово на ходу, модели, замер, контекст, команды21/21
Цель: Рубкой можно управлять как VS Code, но по-русски: видно оба лимита и контекст, слово владельца доходит прямо во время работы, модель выбирается по проекту и виду задачи и меняется на живой сессии, время и расход по задаче считаются и уходят в AITODO, есть русские команды. Спека docs/TASK-control.md, критерии С15.1–С15.14.
ревьюS18 · С16 · Диалоги вместо контуров: своя сессия, свой контекст, управление ходом53/53
Цель: Единица работы — диалог со своей сессией, моделью и контекстом; проект — группа диалогов. Всё, что видно на экране, можно трогать: крошки, модель, усилие, контекст, папка. Плюс управление ходом работы: остановить, продолжить, перезапустить, остановить всё.
В РАБОТЕS19 · Починки 19.10 · одна служба, падения ждущих сессий18/21
Цель: После включения ПК поднимается ровно одна служба; сессия, ждущая ответа владельца, не падает и не теряет вопрос.
Ворклог (места остановки)
19.10: Рубка сама взяла из AITODO 7 задач «через ИИ» (галки поставило планирование недели) и делала каждую ТРИЖДЫ: после включения ПК подняли три службы (бэкап + сторож при входе в одну секунду, через 5 мин сторож не дождался HDD). 9 сессий Клода, 5-часовой лимит 0,7%/мин. Погасил две лишние, снял сделанную 1448. Починка «одна служба» (замок-канал): ОС.1–ОС.17, ОТК 3 круга, экзамены 122/122. Живая служба переведена на новый код (13996). Найдены и заведены: падение ждущих сессий при усыплении (5 из 18 запусков, вопросы владельцу терялись) и контекст 100% «по оценке».
→ 1) Проверка по сроку 20.10: после включения ПК одна служба. 2) Баг «ждущая сессия падает при усыплении» — следующий по важности, экзамен до кода. 3) Мелочи после ОТК. 4) Закоммитить починку (ждёт слова владельца). 5) Окно Рубки перезапустить после смены службы.
Ночная смена 07→08.10: Рубке поставлена задача Р1–Р3 (очередь, парковка, автопродолжение по TASK-queue-and-parking.md). Она написала экзамен core/test/spec/parking.spec.mjs (К2.11–К2.15) и упёрлась в свой гейт «запись экзамена» — ждёт владельца. Вторая её задача (AITODO 1116, контур Свои) ждёт выбора: очередь блога полна. Найдено: служба запущена из C:\Dev (junction на E:), состояние в E:\Рубка, задачи ставятся POST /сказать.
→ Владелец: ответить на два вопроса в окне Рубки. Затем Рубка продолжит Р1–Р3 (код после экзаменов). Отвечать за владельца на её гейт из других сессий нельзя.
Два замечания владельца после первого живого пользования. (1) Дом при открытии пустой и нечем управлять: очередь теперь спрашивается первой, в каждой строке «Сейчас» кнопки Ответить/Открыть/Продолжить/Остановить, Отложить, Убрать; очередь тоже видна; перерисовка только при смене состава (раньше кнопки исчезали из-под курсора на каждом шаге работы). (2) «Контекст 100% (1,9М из 1М)»: наш подсчёт складывал токены хода, а внутри хода кэш читается много раз. Теперь заполнение окна берётся у SDK (getContextUsage), автосжатие на 85% с объявлением словами, в плашке виден порог. Плюс ходьба по ответам: стрелки и «в конец» в пульте, Alt+стрелки, счётчик «ответ N из M».
→ Владельцу перезапустить окно Рубки (служба уже на новом коде). Проверить: кнопки на доме, стрелки по ответам в диалоге, плашку контекста с «сожму на 85%». Дальше — по его замечаниям.
ОТК спринта 16 двумя свежими проверяющими: сверка со спекой и критик на дифе. Найдено 15 настоящих дефектов, все закрыты. Главные: предел живых сессий выселял РАБОТАЮЩУЮ сессию (ход пропадал, задача навсегда «в работе», проект вставал); «Остановить всё» гасило только сессии, и через пять секунд диспетчер брал следующую задачу; опоздавший итог прерванного хода закрывал задачу и хоронил вопрос, уводя наружу ложное «готово»; реплика в ещё не начатую задачу подменяла задание; события без пометки диалога подменяли модель и контекст в чужой шапке; придержанные диалоги пропадали с доски; доска теряла задачу, набранную во время ответа службы; переименование проигрывало гонку потере фокуса. Плюс проход по масштабу нашёл перезапись всей очереди на каждом шаге (800 шагов: 1779 мс → 77 мс).
→ Владельцу: открыть Рубку, пройти дом → проект → диалог, попробовать Остановить / Продолжить / Перезапустить и «Остановить всё» на доске. В «Сейчас» ждёт оборвавшаяся с утра задача и шесть вопросов из кабинета. Не сделано намеренно: перенос диалога между проектами, ветвление диалога с середины, число подагентов в шапке.
Спринт 16 по разбору владельца после первого дня работы в Рубке: вид был неудобным, потому что в приложении жили две несовместимые модели (проект = вечный разговор и задача = единица работы). Теперь единица работы — диалог: своя сессия (лениво, с возобновлением, не больше трёх живых), своя модель, своё усилие, свой контекст, свой замер. Проект — группа диалогов. Дом показывает «Сейчас» с входом прямо в диалог, крошки живые, пульт диалога управляет моделью, усилием, контекстом и папкой. Честные статусы: оборвавшийся после перезапуска диалог ждёт кнопки, а не делает вид, что работает. По ходу спринта владелец попросил управление ходом работы: остановить с придержанием, продолжить, перезапустить с чистого листа, отменить, остановить всё. Живой прогон нашёл три вещи, которых не видела подставная модель (опоздавший итог воскрешал остановленный диалог, слово владельца двоилось, id модели с хвостом [1m]); ОТК по масштабу нашёл перезапись всей очереди на каждом шаге — исправлено, 800 шагов теперь 77 мс вместо 1779 мс.
→ Владельцу: открыть Рубку и пройти путь дом → проект → диалог, проверить кнопки Остановить / Продолжить / Перезапустить. Оборвавшаяся с утра задача ждёт его решения в «Сейчас». Не сделано: перенос диалога между проектами, ветвление диалога с середины, число подагентов в шапке.
Спринт 15 «Пульт управления» по списку владельца после первого теста: оба лимита и сброс в шапке; слово владельца во время работы уходит прямо в живую сессию (как ввод в VS Code), а не новой задачей; правила про браузер (при входе не закрывать, звать владельца и ждать); модели по умолчанию/по проекту/по виду с настоящей сменой на живой сессии через setModel; десять русских команд (/помощь /модель /усилие /лимит /контекст /сжать /стоп /пауза /очередь /время); замер времени, ходов и токенов по задаче со строкой в отчёт AITODO и сводкой по проектам; контекст в процентах с потолком по модели и тревогой на 70 и 85 процентах. Плюс правка забора из кабинета: в Рубку падает только то, что владелец сам пометил галкой, история ждёт кнопки, своё порождение не берётся. Экзамены: ядро 59/59, окно 7/7, живой прогон на настоящей модели прошёл.
→ Владелец открывает Рубку: служба поднимется на новом коде. Проверить руками С15.14 (слово на ходу, /модель, /контекст, /время). Потом вернуться к копилке идей (память jarvis-ideas-backlog): автопаспорт задачи, дневной доклад, сторож и бэкапы.
Служба не подключалась к окну: на холодном HDD (диск E) служба поднялась на 68-й секунде, окно ждало 25 и сдавалось навсегда. Починено: окно ждёт службу по адресу, вторую не запускает, дождавшись, перезагружается; падение службы ловится с кодом выхода (8ed20b3). Диктовка: на холодной модели опоздавший ответ доставался следующей фразе — починено, модель греется при старте службы, сторож 5 мин пока грузится, тест voice-order.test.mjs красный на старом коде и зелёный на новом (c5afe98). Регресс: 58/58, экзамен окна 6/6. Служба перезапущена на новом коде.
→ Владелец просит раздел «Студия» под контент (новостной ролик, монтаж, пост, карусель) как регулярные задачи. План предложен, ждёт ответов по монтажу и деньгам на регулярных задачах; после «ок» завести спринт в роадмапе и критерии.
Спринт 14 «Рабочее место» сделан за одну сессию по словам владельца («в Рубке не уверен, где ждать ответа и что поправить»): контуры по проектам (Фит Лид, Пульс цен, Клиенты, Свои) и параллельные сессии; экран задачи со своим разговором, поправкой и итогом; слово владельца первым в очереди; автозабор из AITODO только с согласия; полоса паузы; in_progress в кабинете при взятии; подставная модель RUBKA_FAKE_MODEL; экзамен окна Playwright+Electron 6/6; живой прогон на настоящей модели прошёл (три захода: сначала папка контура не бралась с доски, потом bash схлопнул слэши в путях контуров). Отчёт со снимками /lab/rubka-proverka/. Правка старого экзамена спринта 13: в стенд добавлен братьВсегда:true, потому что критерий сменил владелец.
→ Владелец открывает Рубку (rubka.cmd), окно подцепится к живой службе; на доске 4 проекта; полоса «В AITODO 6 задач. Брать?» ждёт его. Дальше: ОТК по С14 подагентами, «поправь» с телефона в ту же задачу (спринт Джарвиса), заметки/рисование по плану.
Спринт С15 «Спираль связей» закрыт: 6 задач, 8 критериев приёмки, все зелёные. Склад размечен двумя осями. Связи сужают и говорят, чьё это; темы расширяют поперёк проектов и вытаскивают чужие встречи, где обсуждали то же самое. Доразметка старого бесплатна и без модели: 554 материала. Темы моделью один раз при заносе — 429 материалов за 0,154 доллара при согласованных владельцем 36 центах. kb_ask.py проводит один вопрос через паспорт, синонимы, связи и темы с обходом и затуханием, и на каждый кусок видно, каким шагом и какой меткой его притянуло. Проверка на словах владельца: вопрос «рекламодатели» поднимает паспорт Фит Лида и 142 материала — файл ЦА, скрипты продаж, KPI, разбор про CPA, встречу; вопрос «лендинги» даёт материалы из четырёх разных проектов. Ночь размечает новое сама, шаг 6 в night.sh. Первая настоящая ночь отработала: 8 файлов, 7 знаний, 4 поручения и 3 встречи во Входящие, ошибок ноль, 0,00128 доллара.
→ Найдено и починено по ходу, чтобы не всплыло позже: 75 материалов имели имя автора в cp1251, прочитанной как latin-1, из-за чего Нина была двумя разными узлами графа (108 материалов под верным именем, 72 под сломанным). Спираль сперва взрывалась до 520 материалов из 563 через узлы-концентраторы, потом наоборот ставила дальнее выше ближнего — оба перекоса закрыты потолком узла и жёстким порядком шагов. Пустые материалы переспрашивались у модели каждую ночь, теперь помечаются. Отчёт в телеграм падал по таймауту два раза из трёх, добавлен запасной путь через прокси. Ждёт владельца: сканы PDF (12 файлов без текстового слоя, ставить ли tesseract на cfru). Дальше по роадмапу: выгрузка графа в Обсидиан для просмотра глазами, если владелец захочет; разбивка отчёта по соцсетям на отдельные ролики.
Спринт С14 «Ночная выгрузка и связи знаний» закрыт. Главное решение: расшифровка выведена из платного контура вовсе. GigaAM поставлен на сам cfru (venv-asr, torch 2.6.0+cpu, 1,1 ГБ) и на восьми ядрах AMD EPYC считает вдвое быстрее реального времени — 18,7 минуты речи за 8,8 минуты, с приоритетом nice 19. Видеокарта не нужна. Гейт money.py с потолком доллар за ночь прикрывает единственное оставшееся платное место, разбор расшифровки моделью; экзамен из 16 проверок зелёный. Граф связей links.json собирается из самой структуры телеграма без модели: 4 проекта, 64 человека, 19 групп. Каждой записи проставляются от кого, когда, папка, чат, проект, человек или тема; на живом сборе 48 из 48. Поиск kb_find.py раскрывает запрос в обе стороны: Искра тянет весь Фит Лид. Крон 0 21 * * * это 00:00 по Москве. Холостая ночь целиком за 1 минуту 17 секунд. MAX отменён владельцем.
→ Ночь впервые пишет по-настоящему в 00:00 8 сентября — заведена проверка по сроку. Ждут владельца: сканы PDF (12 файлов без текстового слоя, ставить ли tesseract на cfru), и он не договорил фразу, оборванную на «А ну и». Дальше по роадмапу: разбивка отчёта по соцсетям на отдельные ролики (нужны токены YouTube и Instagram), автозапуск Рубки после ручного теста владельца.
Спринт С13 закрыт кодом: опрос AITODO по расписанию, статус «ждёт условия», паспорт в контексте прогона, отчёт назад. Плюс правки второго круга ОТК (Р5): дословка недоставленных итогов, видимые ошибки связи, папка контура из настроек, отмена снятых галок, разбор ссылок, условие у подзадач, таймаут 30 с и постраничные списки. Экзамены 41 из 41, регресс 58 из 58, живой опрос настоящего кабинета кладёт задачу в очередь.
→ Живой круг целиком (галка → прогон → итог в задаче) ждёт двух вещей: контур FitLead с папкой в настройках Рубки и первую настоящую задачу с галкой от владельца. Служба Рубки сейчас не запущена, новый код подхватится при следующем открытии окна.
Отчёт Альфреду доделан по решению владельца: присылает Лия в телеграм, кроном на cfru, а не из Рубки, потому что cfru работает всегда. Проверено настоящей отправкой, дубль из Рубки убран. НОВАЯ БОЛЬШАЯ ЗАДАЧА про ночную выгрузку разобрана, но НЕ НАЧАТА: владелец сам сказал что надо подумать. Главное открытие: почти весь конвейер У НЕГО УЖЕ ЕСТЬ (tg-collect.py с отбором по папкам, оцифровка файлов, транскрибация, разметка, задачи во Входящие, идемпотентность), строить заново нечего. Не хватает крона, гейта на деньги, решения про MAX и связей кто-что-знает.
→ Три развилки владельцу: MAX юзерботом с риском блокировки или не трогаем; переносить ли читалки файлов на сервер, чтобы выгрузка не зависела от включённого компьютера; согласен ли, что связи живут в складе AITODO, а Обсидиан генерируется из него витриной. Плюс он оборвал сообщение на словах А ну и, надо дослушать.
Альфред опознан ДАННЫМИ, а не расспросами: владелец мебельной фабрики БРЕНДОСС. Цепочка: статистика Контент Завода тянется из Upload-Post по имени профиля, у Оксаны два завода смотрят в один профиль factory_329f630e_divan, поэтому их цифры совпадали до единицы. Через Upload-Post проверено, что подключены ютуб BRENDOSS мебель и инстаграм brendoss1, а пинтерест это личный аккаунт Оксаны. Значит цифры действительно Альфреда, а Диван это раннее рабочее название того же профиля. Отчёт теперь подписывает аккаунты, пинтерест исключён. Расписание переписано под Брендосс, стоит на понедельник 9:00.
→ Один вопрос владельцу: куда отправлять отчёт Альфреду. Сейчас приходит только владельцу в Рубку, наружу без явного да не уходит. Плюс автозапуск Рубки после ручного тестирования: пока Рубка не запущена, расписание в понедельник не сработает.
Заведён спринт С13 «Забор задач из AITODO»: опрос по расписанию задач с галкой «через ИИ», статус «ждёт условия», паспорт задачи в контексте, отчёт назад в задачу AITODO и телеграм. 4 задачи + экзамены, 9 критериев. Очередь и парковка уже есть (С10). Замечено: С7 (спринт 8) дублирует С10 и весь в todo.
→ Начинать после 17.3 в aitodo (галка и сервисный ключ), иначе опрашивать нечего. Спросить владельца, закрыть ли дубль С7 как отменённый.
Сделана иконка Рубки (коммит 0b7ca8c): приборное кольцо со стрелкой, рисуется самим Electron из разметки, ico на десять размеров, стоит на ярлыке рабочего стола и в панели задач. Сделан сборщик недельной статистики соцсетей на cfru и заведено расписание в Рубке на понедельник 9:00. ГЛАВНАЯ НАХОДКА ПО ДАННЫМ: в smm_analytics_daily накопительные значения, а не суточные, и сумма за неделю врёт в сотни раз. Мой первый подсчёт дал 25946 просмотров и 622 лайка, настоящий прирост +182 и +2. Скрипт считает разницу. Разбивки по отдельным роликам в данных нет вовсе.
→ Ждём ответа владельца: кто такой Альфред (нигде не найден) и куда слать отчёт - в Рубку, в Лию в телеге или ему напрямую. Отправка наружу без явного да не делается. Автозапуск Рубки при входе владелец просил после ручного тестирования.
Коммит b1db6db. Доска задач сделана и закрыта. Владелец кладёт задачу с доски, ассистент сам двигает карточку по колонкам, владелец смотрит. Разбито по проектам чипами с числом живых задач. Доска это ВИД на очередь, своего хранилища нет, второй механизм не заводили. Колонки по настоящим статусам, редкие (ждёт лимита, упало) прячутся когда пусты. Вопрос виден прямо на карточке кнопками. Проверено снимком живого окна: две задачи прошли по колонкам до готово. По ходу поймано и починено три огреха вида: поле задачи обрезалось, выбор проекта оставался пустым и нажатие уводило задачу в никуда, в карточках висела служебная приписка переключателей. Проверки: 58 обычных и 25 экзаменов, все зелёные.
→ Владельцу перезапустить окно и посмотреть доску. Остались хвосты: заметки и рисование в виджете, компиляция повторяющихся сценариев, автозапуск при входе в систему (нужен спрос, это правка автозагрузки), перетаскивание виджетов и кнопки в панели превью проверяются только руками. Почта отложена владельцем. Три проверки по сроку: живой бот в телеграме, служба переживает закрытие окна, ночное расписание.
Коммиты 2885ea5 и 3b1a93b. Спринт вида сделан целиком по наказам владельца. ВОПРОСЫ КНОПКАМИ: инструмент ask_owner плюс правила поведения оболочки, потому что проверено — сама модель к инструменту не тянется и зовёт только если назвать прямо. Доказано живым прогоном: ассистент сходил в папку загрузок, посчитал 1306 элементов и 7.11 ГБ и предложил пять вариантов кнопками с числами файлов. По дороге нашёлся разрыв от перехода на парковку: вопрос перестал появляться в РАЗГОВОРЕ и был виден только в сводке решений, для человека беседа обрывалась на полуслове, починено. ЛЕНТА СЛОВАМИ, команда под кнопкой. МЕНЮ ПО-РУССКИ, три раздела вместо английского меню разработчика. ПУТИ из шапки убраны в меню. СОСТОЯНИЕ переведено на E:/Рубка с переносом прежнего, перенеслось три файла. ДОМ объясняет, куда нажимать: раздел Проекты с подписью, стрелкой и счётчиком задач.
→ Владельцу перезапустить окно и посмотреть. Осталось по проекту: канбан по проектам отдельным спринтом, заметки и рисование в виджете, компиляция повторяющихся сценариев. Почта отложена владельцем. Проверки по сроку: живой бот в телеграме, служба переживает закрытие окна, ночное расписание.
По прямой просьбе владельца сделана первая часть вычистки интерфейса, не дожидаясь спринта вида: лента ЧТО Я ДЕЛАЛ говорит человеческими словами, сама команда под кнопкой. Его довод простой и верный: код он всё равно не читает, а в ленте важно что происходило. Проверено снимком живого окна. Попутно на снимке сессии подтвердилось другое его замечание: ассистент задаёт вопросы нумерованным текстом вместо кнопок, это уже лежит первой задачей спринта вида.
→ Остальное по вычистке в спринте вида: путь к настройкам в шапке, меню окна на английском, состояние на диск E, общая вычитка. Плюс главная задача спринта: вопросы кнопками.
Коммит 9c493be. Спринт очереди и парковки сделан целиком, все семь блоков. Порядок соблюдён: сначала 25 экзаменов из 17 критериев, семь падали пока кода не было, потом код. Главное доказано на ЖИВОЙ сессии: задача упёрлась в вопрос гейта, ушла ждать, проект в ту же минуту взялся за следующую, ответ вернул первую и она продолжилась пересказом. Развилка про сессию решена по цене: не форк (31-44 тысячи токенов на подъём, а парковок за день много), а возобновление коротким пересказом за десятки токенов. ДВЕ НАХОДКИ ПРО БЕЗОПАСНОСТЬ, обе поймал живой прогон и обе серьёзные. ПЕРВАЯ: гейт разбирал только Bash, а на Windows у ассистента есть ОТДЕЛЬНЫЙ инструмент PowerShell, и всё необратимое уходило мимо проверки, на живом прогоне остановка контейнера просто выполнилась. Теперь разбираются все выполняющие инструменты плюс правила про Remove-Item, Stop-Process, Stop-Service, Restart-Computer. ВТОРАЯ: в 25 правилах гейта вместо экранирования лежал настоящий символ забоя, правило выглядело верным и молча не срабатывало. Починено, добавлена проверка, которая ловит такое разом. Проверок теперь 58 обычных, 25 экзаменов, 9 живых по парковке.
→ Владельцу перезапустить окно, чтобы увидеть пульт и решения на доме: старая служба этого кода не знает. Осталось по проекту: спринт вида в конце, канбан после него, почта отложена владельцем. Хвосты: заметки и рисование в виджете, компиляция повторяющихся сценариев.
Решения владельца 03.09: почту НЕ ТРОГАТЬ, вернёмся позже, задача отменена с записью всего, что выяснено. Канбан заведён отдельным спринтом на будущее: владелец кладёт задачи в очередь и смотрит, как они двигаются, карточки двигает ассистент, разбито по проектам чтобы не было миллиона карточек в одном слое, делать ПОСЛЕ спринта очереди. Спринт очереди и парковки взят в работу.
→ По постановке проверки пишутся ДО кода и исполнитель не имеет права их править. Сначала экзамены из семнадцати критериев, они обязаны упасть на нынешнем коде, потом реализация Р1 очередь, Р2 парковка, Р3 автопродолжение, Р4 гейт про экзамены, Р5 лимит, Р6 решения пачкой, Р7 пульт.