# Детальные шаги ручного поиска (Claude)
## Общий алгоритм
1. **Анализ ключевых слов** в вопросе
2. **Первый широкий grep** по ключевым терминам
3. **Сужение** на основе результатов
4. **Чтение файла** с наибольшим количеством совпадений
5. **Формирование ответа** из найденного
---
## Q1: Django Request/Response Lifecycle
**Вопрос:** "My custom middleware adds a header but sometimes it's missing in the final response..."
### Шаг 1: Анализ ключевых слов
- **middleware** - ключевой термин
- **response** - что именно затрагивается
- **lifecycle** - нужен процесс обработки
**Почему:** Определил что искать нужно механизм middleware chain и как response проходит через него.
### Шаг 2: Первый grep запрос
```bash
grep "middleware.*response|process_response|response.*middleware" django/
```
**Почему:** Искал связь между middleware и response - это должно привести к обработчикам.
**Результат:** Нашёл 19 файлов, включая `django/core/handlers/base.py`
### Шаг 3: Параллельный поиск Handler классов
```bash
grep "class.*Handler|BaseHandler" django/core
```
**Почему:** Handlers обычно координируют request/response lifecycle в веб-фреймворках.
**Результат:** Нашёл `handlers/base.py`, `handlers/wsgi.py`, `handlers/asgi.py`
### Шаг 4: Чтение ключевого файла
```bash
read_file django/core/handlers/base.py
```
**Почему:** `base.py` - базовый класс, должен содержать core logic.
**Результат:** Нашёл:
- `BaseHandler` class
- `load_middleware()` - строит цепочку
- `_middleware_chain` - сама цепочка
- `_get_response()` - внутренняя обработка
### Мой ответ
`django/core/handlers/base.py` - BaseHandler, load_middleware, _middleware_chain
### Ожидаемый ответ
- `django/core/handlers/base.py` ✅
- `django/core/handlers/wsgi.py` ❌ (не искал)
- `django/core/handlers/exception.py` ❌ (не искал)
- `django/utils/deprecation.py` ❌ (не искал)
### Ошибка анализа
Остановился на первом найденном ключевом файле, не продолжил исследование связанных файлов. Нужно было:
- Искать где BaseHandler используется (wsgi.py)
- Искать exception handling (exception.py)
- Искать MiddlewareMixin (deprecation.py)
---
## Q2: Django QuerySet Lazy Evaluation
**Вопрос:** "I have a view that builds up a complex query... page loads instantly... loop takes 5 seconds..."
### Шаг 1: Анализ вопроса
- **QuerySet** - объект запроса Django
- **lazy** - отложенное выполнение
- **loop/iteration** - триггер выполнения
**Почему:** Ясно что нужно найти где QuerySet откладывает выполнение до итерации.
### Шаг 2: Поиск QuerySet и lazy evaluation
```bash
grep "class QuerySet|def __iter__|lazy|_result_cache" django/db/models
```
**Почему:** `__iter__` - метод итерации Python, `_result_cache` - типичное название для кэша результатов.
**Результат:** Нашёл 16 файлов, главный - `django/db/models/query.py`
### Шаг 3: Поиск конкретных методов
```bash
grep "_result_cache|def __iter__|def __len__|_fetch_all" query.py
```
**Почему:** Эти методы должны показать механизм отложенной загрузки.
**Результат:** Нашёл 54 совпадения с контекстом
### Мой ответ
`django/db/models/query.py` - QuerySet, __iter__, _fetch_all, _result_cache ✅
### Ожидаемый ответ
`django/db/models/query.py` ✅ (100% совпадение)
---
## Q3: Gin Route Tree Matching
**Вопрос:** "I registered /users/new before /users/:id but requests to /users/new are hitting the :id handler..."
### Шаг 1: Анализ вопроса
- **route** - маршрутизация
- **/users/new vs /users/:id** - конфликт паттернов
- **registration order** - порядок регистрации
**Почему:** Нужно понять как Gin выбирает между static и wildcard routes.
### Шаг 2: Поиск tree/radix структур
```bash
grep "tree|radix|route.*priority|wildcard|param" gin/ --glob *.go
```
**Почему:** Gin известен использованием radix tree для роутинга.
**Результат:** Нашёл `tree.go`, `gin.go` и другие файлы.
### Шаг 3: Чтение tree.go
Нашёл:
- `type node struct` с `priority`, `wildChild`, `indices`
- `addRoute()` - добавление маршрута
- `getValue()` - поиск маршрута
- Строка 437: "Try all the non-wildcard children first"
### Мой ответ
`tree.go` - node struct, getValue, addRoute, wildChild, priority ✅
### Ожидаемый ответ
- `tree.go` ✅
- `gin.go` ⚠️ (частично нашёл но не отметил)
---
## Q4: Gin Context Pool Reuse
**Вопрос:** "I spawned a goroutine from my handler and passed it the request context, but later the data was corrupted..."
### Шаг 1: Анализ вопроса
- **goroutine** - асинхронность Go
- **context corrupted** - данные повреждены
- **different request** - переиспользование
### Шаг 2: Поиск sync.Pool и Copy
```bash
grep "sync\.Pool|pool|Copy\(\)|goroutine" gin/
```
### Шаг 3: Анализ результатов
В `gin.go`:
- `pool sync.Pool`
- `pool.Get()` / `pool.Put(c)`
В `context.go`:
- `Copy()` с комментарием "This has to be used when the context has to be passed to a goroutine"
### Мой ответ ✅
Полное совпадение с ожидаемым
---
## Q5: CodeQL Dataflow Configuration
**Вопрос:** "I wrote a function that validates and escapes user input but CodeQL still reports it as vulnerable..."
### Шаг 1: Анализ вопроса
- **validates/escapes** - санитизация
- **CodeQL still reports** - не распознаёт sanitizer
- **mark my validation function** - нужно пометить как barrier
### Шаг 2: Поиск isSanitizer/isBarrier
```bash
grep "isSanitizer|isBarrier|sanitizer|DataFlow::Configuration" codeql/
```
### Шаг 3: Поиск в shared dataflow
Искал в `shared/dataflow/` вместо `javascript/ql/lib/.../dataflow/`
### Моя ошибка
Нашёл концепции (`isBarrier`) но не нашёл правильные файлы:
- `Configuration.qll` - не нашёл
- `TaintTracking.qll` - не нашёл
- docs - не искал
### Причина ошибки
Искал в `shared/` - это новая общая библиотека. Ожидаемые файлы в `javascript/ql/lib/.../dataflow/` - специфичные для JavaScript.
---
## Q6: CodeQL Security Query Structure
**Вопрос:** "I want to find places where data from HTTP request parameters ends up being written to the page without encoding..."
### Шаг 1: Анализ вопроса
XSS query - source (HTTP params) -> sink (page write)
### Шаг 2: Поиск XSS queries
```bash
grep "isSource|isSink|TaintTracking" javascript/.../security/dataflow/*Xss*.qll
```
### Мой ответ
- `DomBasedXssQuery.qll` ✅
- `Xss.qll` ✅
- `ReflectedXssCustomizations.qll` ❌
### Результат: 70%
---
## Q7: Infinigen Procedural Materials
**Вопрос:** "I want to create materials that look different each time based on a seed value..."
### Шаг 1: Исследование структуры
```bash
list_dir infinigen/
```
Нашёл `core/nodes/`, `assets/materials/`
### Шаг 2: Поиск в core/nodes
```bash
grep "Nodes|shader|noise|material" infinigen/core/nodes/
```
Нашёл `node_wrangler.py`
### Шаг 3: Чтение node_wrangler.py
Нашёл `NodeWrangler` class
### Мой ответ
- `node_wrangler.py` ✅
- `surface.py` ✅
- `node_utils.py` ❌
### Результат: 70%
---
## Q8: Infinigen Asset Placement
### Шаг 1: Поиск в core/placement
```bash
grep "scatter|placement|density" infinigen/core/placement/
```
### Мой ответ
- `placement.py` ✅
- `density.py` ✅
- `instance_scatter.py` ✅
- `factory.py` ❌
### Результат: 75%
---
## Q9: QGIS Map Rendering Pipeline
### Шаг 1: Поиск MapRenderer
```bash
grep "QgsMapRenderer|render.*thread|progressive" src/core/
```
Искал в .h файлах
### Шаг 2: Чтение qgsmaprendererparalleljob.h
Нашёл:
- `QgsMapRendererParallelJob`
- `QFuture/QFutureWatcher`
- `renderedImage()`
### Моя ошибка
Искал .h вместо .cpp
### Результат: 80% (концептуально верно)
---
## Q10: QGIS Expression Evaluation
### Шаг 1: Исследование expression директории
```bash
list_dir src/core/expression/
```
### Шаг 2: Поиск evaluate
```bash
grep "evaluate|class QgsExpression" src/core/expression/*.h
```
### Мой ответ
- `qgsexpression.h` (вместо .cpp)
- `qgspallabeling.h` (вместо .cpp)
- `qgsexpressioncontext.h` ❌
### Результат: 70%
---
## Q11: Claude-flow Agent Coordination
### Шаг 1: Поиск coordination
```bash
grep "coordination|lock|mutex|conflict" src/
```
### Шаг 2: Чтение coordination.ts
Нашёл `TaskCoordinator`
### Моя ошибка
- Не нашёл `inject-memory-protocol.js`
- `resources.ts` указан неверно в датасете (или изменился)
### Результат: 40%
---
## Q12: Claude-flow Memory System
### Шаг 1: Поиск memory файлов
```bash
glob_file_search "*memory*.ts" src/
```
### Шаг 2: Чтение hive-mind/core/Memory.ts
Нашёл Memory class с DatabaseManager
### Моя ошибка
Нашёл ДРУГУЮ систему памяти (`hive-mind/core/`) вместо указанной (`swarm/memory.ts`)
### Результат: 30%
---
# Общая статистика
| Вопрос | Точность | Причина ошибки |
|--------|----------|----------------|
| Q1 | 25% | Остановился рано |
| Q2 | 100% | - |
| Q3 | 75% | Не отметил gin.go |
| Q4 | 100% | - |
| Q5 | 30% | Искал в wrong directory |
| Q6 | 70% | Пропустил файл |
| Q7 | 70% | Пропустил node_utils.py |
| Q8 | 75% | Пропустил factory.py |
| Q9 | 80% | .h vs .cpp |
| Q10 | 70% | Пропустил context |
| Q11 | 40% | Incomplete search |
| Q12 | 30% | Wrong memory system |
**Средняя точность: 55-60%**
# Паттерны ошибок
1. **Остановка на первом результате** - не продолжаю искать связанные файлы
2. **Wrong directory** - ищу в похожих но не тех директориях
3. **Header vs Implementation** - в C++ ищу .h вместо .cpp
4. **Multiple systems** - в больших проектах могут быть несколько реализаций одного и того же
5. **Incomplete coverage** - нахожу 2-3 файла из 4 ожидаемых