Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
111 commits
Select commit Hold shift + click to select a range
b243b98
refactor(agentic): REF-001 extract shared auth + session resolution h…
six-ddc Jul 16, 2026
cb33a9a
test
ju1ian0701 Jul 17, 2026
1482cdf
chore(agentic): restore tasks.json with full REF-001..009 backlog
six-ddc Jul 17, 2026
5b17c07
refactor(agentic): REF-002 split bot.py god module into handlers
six-ddc Jul 17, 2026
379395e
refactor(agentic): REF-002 <Split it up bot.py for modules>
six-ddc Jul 17, 2026
4adc3e2
chore: commit uv.lock for reproducible builds
six-ddc Jul 17, 2026
eb70ed8
refactor(agentic): REF-002 split bot.py into modules
six-ddc Jul 17, 2026
132da91
chore(graph): update knowledge-graph after REF-001
six-ddc Jul 17, 2026
4123a8e
feat(agentic): add pipeline scaffold
six-ddc Jul 17, 2026
f4b6753
feat(agentic): merge pipeline scaffold into main
six-ddc Jul 17, 2026
96a7eea
feat(agentic): merge pipeline scaffold into main
six-ddc Jul 17, 2026
433d7fa
refactor(agentic): REF-006 migrate callback_data to typed dataclasses
six-ddc Jul 17, 2026
402d98d
refactor(agentic): REF-006 <Callback data on dataclasses>
six-ddc Jul 17, 2026
8c3051b
chore(agentic): remove generated outputs from version control
six-ddc Jul 17, 2026
757d2ea
refactor(agentic): REF-003 <Specific exceptions>
six-ddc Jul 18, 2026
bd12584
refactor(agentic): REF-008 <Unified MessageFormatter>
six-ddc Jul 18, 2026
eee08b1
refactor(agentic): REF-009 <Fill in the gaps in the tests>
six-ddc Jul 18, 2026
98561cb
refactor(agentic): REF-004 <Simplify session migration>
six-ddc Jul 18, 2026
09adf62
chore(graph): update knowledge-graph after REF-005
six-ddc Jul 18, 2026
3fa76ef
refactor(agentic): REF-005 Encapsulate the global state
six-ddc Jul 18, 2026
0e80a24
Merge branch 'main' into agentic/REF-001-require-session
ju1ian0701 Jul 19, 2026
1e3a9a1
Merge pull request #1 from ju1ian0701/agentic/REF-001-require-session
ju1ian0701 Jul 19, 2026
1f1e64c
Merge pull request #3 from ju1ian0701/agentic/REF-006-data-to-datacla…
ju1ian0701 Jul 19, 2026
e1e8d92
Merge pull request #4 from ju1ian0701/agentic/REF-003-specific-except…
ju1ian0701 Jul 19, 2026
ed459db
Merge branch 'main' into agentic/REF-008-unified-messageFormatter
ju1ian0701 Jul 19, 2026
581238a
style: fix ruff linting errors
six-ddc Jul 19, 2026
db0ab20
style: fix ruff linting errors src/ tests/
six-ddc Jul 19, 2026
d04cd66
Merge pull request #5 from ju1ian0701/agentic/REF-008-unified-message…
ju1ian0701 Jul 19, 2026
f8753b0
Merge pull request #6 from ju1ian0701/agentic/REF-009-tests-gaps
ju1ian0701 Jul 19, 2026
f218474
Merge pull request #7 from ju1ian0701/agentic/REF-004-session-migration
ju1ian0701 Jul 19, 2026
af3400c
Merge origin/main into agentic/REF-005-state-encapsulate
six-ddc Jul 19, 2026
ae96c10
errors
six-ddc Jul 19, 2026
6c7c34f
Merge pull request #8 from ju1ian0701/agentic/REF-005-state-encapsulate
ju1ian0701 Jul 19, 2026
8cb0c4b
chore(agentic): ISS-014 ignore understand-anything trash (trial)
six-ddc Jul 22, 2026
4d6c592
Merge pull request #9 from ju1ian0701/agentic/ISS-014-gitignore-trash…
ju1ian0701 Jul 23, 2026
90e0cdc
refactor(agentic): ISS-002 single SoT auth via session_guard
six-ddc Jul 27, 2026
405ad62
refactor(agentic): update cli.py and add propose.py tasks.json skeleton
six-ddc Jul 23, 2026
a41ccc5
feat(agentic): add HITL reject/approve/request-changes/apply commands
six-ddc Jul 25, 2026
5fa790d
feat(agentic): HITL proposal subsystem — propose, reject, approve, re…
six-ddc Jul 26, 2026
b49eece
docs(agentic): ISS-002 evidence and quality gate results
six-ddc Jul 27, 2026
0bf00d4
chore(backlog): mark ISS-002 done after validate and evidence
six-ddc Jul 27, 2026
bcac323
Merge pull request #10 from ju1ian0701/agentic/ISS-002-canonical-auth
ju1ian0701 Jul 28, 2026
6f17602
refactor(agentic): ISS-006 compose require_session from require_bound…
six-ddc Jul 28, 2026
ab58fa0
chore(backlog): ISS-006 status VALIDATE, ISS-002 done
six-ddc Jul 28, 2026
ee8c0b2
Merge pull request #11 from ju1ian0701/agentic/ISS-006-compose-requir…
ju1ian0701 Jul 28, 2026
a36b018
refactor: ISS-001 remove last manual ladder in kill_command (#12)
ju1ian0701 Jul 28, 2026
6b049d6
docs(agentic): Phase 1 CLOSED — ISS-001/002/006/007 DONE (a36b018)
six-ddc Jul 28, 2026
689abdd
refactor(agentic): ISS-003 encapsulate MessageQueueManager internals …
ju1ian0701 Jul 29, 2026
1fff3af
ISS-008: explicit message_thread_id typed contract (#14)
ju1ian0701 Aug 6, 2026
fe022b6
test: fix Windows WinError 5 pytest flakes via repo-local basetemp (#15)
ju1ian0701 Aug 6, 2026
b9ee257
chore(backlog): mark ISS-008 done, log validate-gate deviation
six-ddc Aug 6, 2026
fc861f4
refactor(handlers): ISS-010 extract bash_capture_tasks into CaptureTa…
ju1ian0701 Aug 6, 2026
703e8a6
chore(backlog): mark ISS-010 done, close Phase 2
six-ddc Aug 6, 2026
1773c43
refactor(handlers): ISS-004 table-driven callback_router dispatch, si…
ju1ian0701 Aug 8, 2026
4894eac
refactor(handlers): split callback_router into sub-handlers (ISS-011)…
ju1ian0701 Aug 9, 2026
2cd062e
chore(backlog): mark ISS-004, ISS-011 done
six-ddc Aug 9, 2026
ab185b4
chore(kg): update knowledge graph after ISS-011
six-ddc Aug 9, 2026
65907e5
refactor(session): public set_window_session, forbid external _save_s…
ju1ian0701 Aug 9, 2026
4932294
chore(backlog): mark ISS-009 done
six-ddc Aug 9, 2026
7bd49d9
chore(backlog): mark ISS-009 done
six-ddc Aug 9, 2026
430571c
chore(handoff): last stage -> ISS-009, next -> ISS-005 4a; step 23 de…
six-ddc Aug 10, 2026
d6bc24a
refactor(session): extract BindingStore for bindings and group chat i…
ju1ian0701 Aug 10, 2026
ac7fb3d
chore(backlog): ISS-005 4a done (PR #20); handoff: next -> 4b WindowS…
six-ddc Aug 10, 2026
4b43cef
refactor(session): extract WindowStateStore for window state and disp…
ju1ian0701 Aug 10, 2026
cf8e2cd
chore(backlog): ISS-005 4b done (PR #21); handoff: next -> 4c Session…
six-ddc Aug 10, 2026
6164989
refactor(session): extract SessionMapRepository for session_map file …
ju1ian0701 Aug 11, 2026
8acd69f
chore(backlog): ISS-005 4c done (PR #22); handoff: next -> 4d thin fa…
six-ddc Aug 11, 2026
b5638d6
refactor(session): extract TranscriptReader for JSONL reads, thin fac…
ju1ian0701 Aug 11, 2026
04a5554
chore(backlog): ISS-005 done, Phase 4 closed (PRs #19-#23)
six-ddc Aug 11, 2026
25966bc
refactor(handlers): remove duplicate IMAGES_DIR initialization (ISS-0…
ju1ian0701 Aug 11, 2026
af01f27
chore(backlog): ISS-012 done (PR #24)
six-ddc Aug 11, 2026
dfaf796
feat(agentic): structural-task evidence checks and done-gate (ISS-013…
ju1ian0701 Aug 11, 2026
674cf47
chore(backlog): ISS-013 + RR-0 done (PR #25)
six-ddc Aug 11, 2026
f1a0fb4
chore(backlog): REF-007 re-scope + structural evidence (R7a/R7b)
six-ddc Aug 11, 2026
f9209fa
refactor: rename wid -> window_id globally (REF-007 R7a) (#26)
ju1ian0701 Aug 11, 2026
7bc04a3
chore(backlog): REF-007 R7a done (PR #26)
six-ddc Aug 11, 2026
9533103
refactor: rename tid -> thread_id globally (REF-007 R7b) (#27)
ju1ian0701 Aug 11, 2026
7bb6e13
chore(backlog): REF-007 done (PRs #26-#27), refactoring backlog complete
six-ddc Aug 11, 2026
8612834
chore(backlog): ISS-015 ready - ruff-format hygiene (12 files, machin…
six-ddc Aug 11, 2026
562c687
style: apply ruff format to scripts/agentic and IMPLEMENTATION_PLAN.m…
ju1ian0701 Aug 11, 2026
5359ea2
chore(backlog): ISS-015 done (PR #28), ruff-format hygiene complete w…
six-ddc Aug 11, 2026
1ed0b19
chore(backlog): ISS-016 ready - binary-safe diff staging in propose.py
six-ddc Aug 12, 2026
8a7b4bf
fix(agentic): binary-safe diff staging in propose.py (ISS-016) (#29)
ju1ian0701 Aug 12, 2026
7cb9640
chore(backlog): ISS-016 done (PR #29); ISS-017 ready - propose.py EOF…
six-ddc Aug 12, 2026
654d042
style: add EOF trailing newline to propose.py (ISS-017) (#30)
ju1ian0701 Aug 12, 2026
bb1b90b
chore(backlog): ISS-017 done (PR #30), hygiene arc closed at 113/113
six-ddc Aug 12, 2026
1d3a13c
chore(backlog): ISS-018 ready (ruff I001 x12), ISS-019 ready (capture…
six-ddc Aug 12, 2026
5374113
style: sort import blocks (ruff I001) across 12 files (ISS-018) (#31)
ju1ian0701 Aug 12, 2026
2726209
chore(backlog): ISS-018 done (PR #31), ISS-019 in progress (capture-r…
six-ddc Aug 12, 2026
f511920
fix: identity-checked discard in CaptureTaskRegistry to prevent stale…
ju1ian0701 Aug 12, 2026
2adfbb5
chore(backlog): ISS-019 done (PR #32 f511920); files path fix; handof…
six-ddc Aug 12, 2026
28494df
chore(kg): refresh fingerprints/graph/meta after analyze
six-ddc Aug 14, 2026
6c8a28a
chore(backlog): ISS-020 in progress (port upstream PR #86 allowed_upd…
six-ddc Aug 14, 2026
3e06992
fix: broaden allowed_updates + edit-guards (ISS-020, port upstream #8…
ju1ian0701 Aug 14, 2026
564e6af
chore(backlog): ISS-020 done (PR #33 3e06992)
six-ddc Aug 14, 2026
b4f68f6
chore(backlog): ISS-020 residual debt (COMMAND edit-guard; smoke bloc…
six-ddc Aug 14, 2026
dcb1959
chore(backlog): point ISS-020 smoke checklist to out/notes; keep smok…
six-ddc Aug 14, 2026
9dd8f91
chore(backlog): ISS-021 in progress (port upstream PR #89 documents h…
six-ddc Aug 14, 2026
8120171
feat: forward Telegram documents to Claude Code (ISS-021, port upstre…
ju1ian0701 Aug 14, 2026
e0f5339
chore(backlog): ISS-021 done (PR #34 8120171); THERMO debt + server s…
six-ddc Aug 14, 2026
801f97b
chore(backlog): ISS-022 in progress (port upstream PR #53 local whisp…
six-ddc Aug 14, 2026
6cff2f4
chore(backlog): ISS-022 acceptance from package 3.4 (handler/config/g…
six-ddc Aug 14, 2026
e877b00
fix(agentic): exempt env template files from blocked path globs
six-ddc Aug 14, 2026
236b13c
feat(voice): port PR #53 local whisper backend + CCBOT_WHISPER_LANGUA…
ju1ian0701 Aug 14, 2026
cae501b
chore(backlog): ISS-022 done (PR #35 236b13c); HANDOFF lessons a/b/c
six-ddc Aug 14, 2026
3dc59dd
chore(backlog): ISS-023 in progress (lazy init cache dirs)
six-ddc Aug 15, 2026
353ce24
refactor(handlers): ISS-023 lazy init cache dirs via ensure_dir (IMAG…
ju1ian0701 Aug 15, 2026
f54e71b
chore(deps): regenerate uv.lock for [voice] extra (ISS-022 debt)
six-ddc Aug 15, 2026
a36138f
chore(handoff): ISS-023 done (PR #36 353ce24); lesson (g) uv run --no…
six-ddc Aug 15, 2026
5cb22a7
fix: smoke 2026-10-12 incidents (session fork, state.json, rename, co…
ju1ian0701 Oct 13, 2026
4c9a098
docs: replace non-existent typecheck.py/run_tests.py with direct comm…
ju1ian0701 Oct 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
399 changes: 399 additions & 0 deletions .agentic/HANDOFF.md

Large diffs are not rendered by default.

135 changes: 135 additions & 0 deletions .agentic/HANDOFF_REF-006.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# HANDOFF: CCBot Agentic Refactoring Pipeline

**Дата:** 2026-07-18
**Ветка:** `agentic/REF-006-data-to-dataclasses`
**Коммит:** `8c3051b`
**Репозиторий:** https://github.com/ju1ian0701/ccbot_ju1ian

## 1. Цель проекта
Автоматизация рефакторинга Telegram-бота для управления Claude Code (`ccbot`) через agentic pipeline.
**Глобальная задача:** Устранить 9 архитектурных проблем (5 HIGH, 4 MEDIUM), выявленных в `ccbot-refactoring-backlog.md`, используя AI-агентов (Grok/Claude) под контролем человека.
**Текущая цель:** Последовательное выполнение задач REF-001…REF-009 с соблюдением quality gates и сохранением обратной совместимости.

## 2. Что уже сделано

### Инфраструктура пайплайна
- ✅ Создан и замержен в `main` каркас agentic pipeline (скрипты, конфиги, workflows).
- ✅ Настроен локальный цикл: `cli.py select/context` → Grok Build → Quality Gates → PR.
- ✅ Решены проблемы аутентификации Git/GitHub (Classic token + `gh auth setup-git`).
- ✅ Исправлены кодировки JSON (UTF-8 без BOM) для кроссплатформенной работы.

### Выполненные задачи рефакторинга
| ID | Задача | Статус | Результат |
|---|---|---|---|
| REF-001 | Extract auth helper | ✅ Done | `require_session()` + `SessionContext`, устранено дублирование в 15+ хендлерах |
| REF-006 | Callback data → dataclasses | 🔄 In Progress | Ветка `agentic/REF-006-data-to-dataclasses` запушена, ожидает review/merge |

### Ключевые достижения REF-006
- Заменён строковый парсинг `data.split(":")` на typed frozen dataclasses.
- Добавлена валидация (`__post_init__`), round-trip сериализация, проверка лимита 64 байта.
- Сохранена модульная архитектура роутера (не создавался единый диспетчер).
- Написаны тесты миграции, иммутабельности и safe serialization.

## 3. Текущее состояние
- **Активная ветка:** `agentic/REF-006-data-to-dataclasses` (запушена, draft PR создан).
- **Следующая задача:** После merge REF-006 → переход к REF-007 (переименование переменных).
- **Блокировки:** Нет. Все quality gates проходят локально.
- **Knowledge Graph:** Актуален после REF-001, требует обновления после merge REF-006.

## 4. Что осталось сделать

### Ближайшие шаги (приоритет)
1. **Замержить REF-006** после human review.
2. **Обновить knowledge graph:** `/understand full` в чате с AI-агентом.
3. **Выполнить REF-007** (Rename wid/tid/skey):
```powershell
git checkout main && git pull
git checkout -b agentic/REF-007-renaming
python scripts/agentic/cli.py select --task REF-007
```
4. **Продолжить по плану:** REF-002 → REF-003 → REF-008 → REF-009 → REF-004 → REF-005.

### Незавершённые элементы пайплайна
- ⬜ Grok-интеграция в CI (`agentic-grok-review.yml`).
- ⬜ Atomic task packs (разбиение эпиков на подзадачи в `tasks.json`).
- ⬜ Context packer из knowledge graph (`build_context_pack.py`).
- ⬜ Секреты `XAI_API_KEY` в GitHub Secrets.

## 5. Ключевые решения и договорённости

### Архитектурные
- **Topic-only режим:** Никогда не переключать бота в non-topic mode.
- **Авторизация:** Не ослаблять `is_user_allowed()`. Все проверки через `require_session()`.
- **Маршрутизация окон:** Только по `@id`, никогда по `window_name`.
- **Callback Data:** Использовать frozen dataclasses + `safe_callback_data()` с проверкой 64 байта.
- **Модульность роутера:** Не объединять парсеры в единую функцию; каждый `parse_*` возвращает свой dataclass.

### Процессные
- **1 PR = 1 REF-***: Не смешивать задачи в одном PR.
- **Human Merge:** AI никогда не мерджит в `main`. Только draft PR.
- **Quality Gates:** Ruff + Pyright + Pytest обязательны перед каждым коммитом.
- **Файл `tasks.json`:** Всегда под версионным контролем. Обновлять статус через `update_backlog_status.py`.

### Технические
- **Кодировка JSON:** Всегда UTF-8 без BOM (использовать Python для записи, не PowerShell).
- **Git Auth:** Использовать `gh auth setup-git` + Classic token с `workflow` scope.
- **`.gitignore`:** `.agentic/out/` игнорируется; `.agentic/backlog/`, `scripts/agentic/`, `.grok/` — в репо.

## 6. Артефакты и файлы

### Конфигурация пайплайна
| Файл | Назначение |
|---|---|
| `.agentic/backlog/tasks.json` | База данных задач REF-001…009 со статусами |
| `.agentic/config.json` | Weights, guardrails, paths |
| `.agentic/policies.json` | Must/Must Not правила для агентов |
| `scripts/agentic/cli.py` | CLI toolkit (analyze/select/context/validate) |
| `.github/workflows/agentic-*.yml` | CI workflows (analyze/plan/implement/orchestrator) |

### Продуктовый код (изменения REF-006)
| Файл | Изменения |
|---|---|
| `src/ccbot/handlers/callback_data.py` | Frozen dataclasses, parsers, safe serialization |
| `src/ccbot/handlers/callback_router.py` | Updated unpacking to use typed callbacks |
| `tests/ccbot/handlers/test_callback_data.py` | Migration, round-trip, immutability, validation tests |

### Документация
| Файл | Назначение |
|---|---|
| `ccbot-refactoring-backlog.md` | Исходный анализ проблем |
| `ccbot-agentic-pipeline-plan.md` | Полный план автоматизации |
| `.agentic/HANDOFF.md` | Этот документ |
| `.agentic/README.md` | Инструкция по использованию пайплайна |

## 7. Контекст для нового агента

### Стек
- **Python 3.12+**, `uv` для управления зависимостями
- **Telegram Bot API** (python-telegram-bot v22.x)
- **tmux** как backend для управления сессиями
- **Grok / Claude** как AI-агенты для кодинга и ревью
- **GitHub Actions** для CI/CD

### Ограничения
- ❌ Не менять `.github/workflows/check.yml`
- ❌ Не модифицировать `.env` и секретные файлы
- ❌ Не использовать `window_name` для маршрутизации
- ❌ Не удалять проверки авторизации
- ❌ Не делать `git add .` (рисковать закоммитить `.agentic/out/`)

### Стиль кода
- Type hints везде (Python 3.10+ синтаксис: `X | Y`, не `Union[X, Y]`)
- Frozen dataclasses для immutable структур
- Specific exceptions вместо `except Exception`
- Structured logging вместо `print`
- Тесты: pytest + parametrize + property-based где применимо

### Как продолжить работу
1. Прочитать `ccbot-agentic-pipeline-plan.md` (§8 Пошаговый план).
2. Проверить статусы в `.agentic/backlog/tasks.json`.
3. Выбрать следующую задачу с `status: ready` и `depends_on: []` (или выполненными зависимостями).
4. Запустить локальный цикл:
```powershell
python scripts/agentic/cli.py select --task REF-XXX
python scripts/agentic/cli.py context --task REF-XXX
# Передать implement-prompt.md + context-pack.json агенту
Loading
Loading