Skip to content

TAUSIK 1.4 — ретро Cursor/Composer batch

TL;DR

  • За один batch в Cursor/Composer закрыто 28 v14- задач*, написано ~20 новых файлов (скриптов + EN/RU доки), 70 файлов модифицировано, +2242 / −467 строк.
  • 5 эпиков v14-* перешли в done: brain-snippets, model-prompts, verify-integrity, cost-telemetry, framework-lean.
  • 5 эпиков active с 7 planning задачами (hygiene/test/doc/audit/skill-store).
  • Pytest: 2505 passed / 1 failed (test pollution в test_task_next_model_hint::test_hint_via_config_file) / 7 skipped. Test count 2318 → 2513.
  • Версия 1.3.7 не bumped, CHANGELOG.md для 1.4 не написан, ничего не закоммичено.
  • Главный системный риск: часть done-задач закрыта с WARN: no relevant_files passed — scoped gates SKIPPED — pytest-gate реально не отрабатывал.

1. Что Composer сделал хорошо

1.1 Покрытие master-плана

Из 35 запланированных v14-* задач 28 закрыты ровно по AC из мастер-плана, 7 в planning соответствуют исходным "tail" задачам (audit/hygiene/CLI). Композер не выдумал новых слугов, шёл по списку.

1.2 Документы

18 новых doc-файлов (9 EN + 9 RU mirror) — соответствует конвенции #55:

  • brain-artifact-taxonomy, brain-search-ranking, memory-merge-guidelines,
  • skill-ecosystem, skill-profiles, task-archive-spec,
  • testing-principles, verify-glossary.

Качество выборочной проверки verify-glossary.md: чёткое разведение opt-out / bypass / shim, ровно та проблема, ради которой эпик заведён. Документ содержит таблицы, anti-patterns, doc review checklist.

1.3 Новые скрипты (модули)

  • scripts/brain_artifact_card.py, brain_artifact_taxonomy.py, brain_publish_cli.py, brain_publish_flow.py, brain_store_format.py, brain_cli_ops.py — Brain artifact pipeline (эпик 1).
  • scripts/skill_profile.py — multi-model profile resolver (эпик 2).
  • scripts/gen_doc_constants.py + docs/_generated/constants.json — single source of truth для версии/MCP counts (эпик 7).
  • scripts/mcp_tool_counts.py — derive counts from harness/* (эпик 7).
  • scripts/verify_recent_lookup.py — compat helper для verify cache (эпик 3).

1.4 Новая структура

  • harness/schemas/brain-artifact-card.schema.json — JSON Schema (эпик 1).
  • harness/skills/_profile-demo/ — демо мульти-модельного скилла (эпик 2). _ prefix → bootstrap пропускает в реальной генерации (защита от утечки демо).
  • .qwen/ + QWEN.md + изменения в bootstrap_qwen.pyбонус сверх мастер-плана: ещё одна IDE поддержана (Qwen Code agent). Согласуется с философией multi-model.

1.5 Тесты

+10 новых test-файлов: test_bootstrap_model_profile, test_brain_artifact_external_repo, test_context_tier, test_doctor_auto_verify_hint, test_gen_doc_constants, test_llm_pricing_config, test_mcp_doc_tool_counts, test_skill_profile, test_task_next_model_hint, test_metrics_session_usage. Полный suite: 2318 → 2513 (~+195).

2. Что Composer сделал плохо

2.1 Test pollution (release blocker)

tests/test_task_next_model_hint.py::TestTaskNextModelHint::test_hint_via_config_file падает в full suite, проходит в isolation. Диагноз: monkeypatch.chdir(tmp_path) + чтение .tausik/config.json — какой-то предыдущий тест оставляет cwd-state, или load_config кэширует значение на уровне модуля. Defect.

2.2 SKIPPED scoped gates на закрытии задач

Выборочная проверка показала: v14-bootstrap-context-tier, v14-pricing-table-config, v14-doctor-auto-verify-hint закрыты с WARN: no relevant_files passed — scoped gates SKIPPED. Gates прошли только filesize. По нашему правилу dead-end #66 это анти-паттерн — но в этом случае agent проигнорировал warning и закрыл задачу.

Реальный pytest показывает зелёным эти конкретные тесты, поэтому проблема методологическая, а не функциональная. Но мы в правах требовать retro-fix: пройти по списку done-задач и в notes явно указать relevant_files, чтобы аудит был воспроизводим.

2.3 Подозрительно быстрые task_done

v14-task-rollup-cost: started_at: 11:04:58Z, completed_at: 11:05:01Z — 3 секунды. Реально таких задач (схема + service + CLI + 2 IDE MCP + tests) за 3с не сделать. Видимо task_start вызвали уже после написания кода — нарушение SENAR Rule 9.1 ("задача перед кодом"). Но evidence в notes корректное.

2.4 Drift между статусом и реальностью

  • CLAUDE.md строка Tasks: 0/1 done (auto-generated) — устаревшая, в БД 612/620 задач (585+27 v14-done).
  • CLAUDE.md строка pytest tests/ -v # 2318 тестов — устаревшая, реально 2513.
  • Версия 1.3.7 всюду; нет ни записи в CHANGELOG.md о 1.4, ни bump в pyproject.toml.

2.5 Не закоммичено

70 modified + 30+ untracked файлов в одной куче. Без splittinga по эпикам ревью будет невозможным.

3. Покрытие AC по эпикам

ЭпикStatusTasks (done/total)Замечания
v14-brain-snippetsdone5/5Богатый pipeline (taxonomy → schema → publish → search → external_repo). Тесты есть.
v14-model-promptsdone4/4Skill profiles + bootstrap env + AGENTS.md table + task_next hint. Hint-тест flaky.
v14-verify-integritydone3/3Glossary + doctor hint + conftest comment. AC лаконичные, реализация выглядит ровно.
v14-cost-telemetrydone5/5usage_events + pricing config + ingest MVP + rollup + metrics --cost. Подозрительно быстрые close-ы.
v14-framework-leandone3/3context_tier + status compact + AGENTS trim. AC по факту dorабатывался без relevant_files.
v14-project-hygieneactive2/3Осталось v14-hygiene-cli-stub (CLI команда).
v14-test-philosophyactive2/3Осталось v14-pytest-dedupe-audit (отчёт о дублях).
v14-doc-automationactive2/3Осталось v14-ci-doc-check (CI hook).
v14-dead-code-auditactive0/3Все три задачи в planning: vulture/ruff, stale-docs, orphan-files.
v14-skill-storeactive2/3Осталось v14-skill-cli-help-pass (--help review).

4. План до релиза 1.4.0

Фаза A — стабилизация (must-have, до коммита)

#ЗадачаOwnerСтатус
A1Починить test_hint_via_config_file (test pollution)new defectTODO
A2Bump версии 1.3.7 → 1.4.0 (pyproject.toml, __version__, docs/_generated/constants.json)new taskTODO
A3Записать CHANGELOG.md секцию 1.4.0 (EN + RU mirror) с разбивкой по эпикамnew taskTODO
A4Обновить CLAUDE.md Current State (test count 2513, version 1.4, tasks 612/620)auto via tausik update-claudemdTODO
A5Прогнать .tausik/tausik doctor + tausik gates status после bumpsmoke checkTODO
A6Разбить uncommitted diff на ~6 коммитов по эпикамrelease taskTODO

Фаза B — закрыть active эпики (должно влезть в 1.4)

7 planning-задач из мастер-плана. Приоритет внутри фазы (по полезности и зависимости):

#slugЭпикУсилиеКомментарий
B1v14-ci-doc-checkdoc-automationlightПрямая зависимость от gen_doc_constants.py (уже есть). Pre-commit или CI step.
B2v14-skill-cli-help-passskill-storetrivialЧеклист сообщений + snapshot. Снимает hot UX-проблему.
B3v14-hygiene-cli-stubproject-hygienelighttausik hygiene --dry-run. Реализует спеку из task-archive-spec.md.
B4v14-audit-orphan-filesdead-code-auditlightСкрипт-отчёт, не удаление.
B5v14-audit-stale-docsdead-code-auditlightСкрипт-отчёт.
B6v14-audit-unused-pythondead-code-auditmoderatevulture/ruff с белым списком. После B5 (могут пересекаться).
B7v14-pytest-dedupe-audittest-philosophylightОтчёт о дублях — может вытащить дубли пост-Composer (он любит копипасту тестов).

Фаза C — методологический долг (можно отложить в 1.4.x)

#ЗадачаЗачем
C1Retro-fix done-задач без relevant_files (~7-10 штук) — переоткрыть, добавить relevant_files в notes, верифицироватьВосстановить аудитопригодность
C2Тест на регрессию: hook/сервис, который отказывает в task_done если relevant_files пуст и auto_verify=falseЗакрыть процессную дыру окончательно
C3Добавить в audit skill checklist: "проверь, что у done задач есть relevant_files"Правило в SOP

Фаза D — релиз

  1. PR/коммит-серия на main с шапкой feat(v1.4): release batch.
  2. Tag v1.4.0.
  3. Push core + skills repos (+ private mirrors).
  4. Release notes (бilingual) — копия из CHANGELOG в docs/{en,ru}/release-notes/v1.4.md.

5. Решения для записи в DB

  • D-A: Composer-batch не нарушает AC, но методологически закрывал задачи без scoped pytest. Для 1.4 принимаем; в 1.4.1 сделать hook против повтора.
  • D-B: Qwen IDE добавлен сверх плана и принимается как бонус v1.4.
  • D-C: Test pollution (A1) блокирует релиз — фиксим до коммита.

6. Связанные документы

  • Master plan v1.4 — research артефакт удалён перед релизом (см. историю коммитов)
  • Verify glossary EN / RU
  • Testing principles EN / RU
  • Dead end #66 — Закрытие task_done с полным списком relevant_files (исток правила B-A)

Версионирование

ВерсияДатаИзменения
1.02026-05-02Первое ретро после Composer batch (session #42)