applied-quality — Ветки A+ и B: шардинг и частичный анализ
Часть skill'а applied-quality. Условия запуска, развилка по LOC, модель нити, формула и формат вывода — в SKILL.md; оси/ступенчатость/спутанность/рекурсия — в
references/axes.md. Этот файл читается целиком при ветках A+ и B.
Ветка A+ — двухфазный шардинг с реконструкцией графа
Наивно резать граф по LOC нельзя — потеряются cross-shard пересечения и циклы. Пер-нитевые оси шардим и усредняем; граф (спутанность + рекурсия) собираем на швах.
Предложение разбиения
Вывести структуру шардов с LOC и обоснованием границ (естественные швы), проверкой max/min≤3. Дождаться подтверждения (или запустить, оставив возможность сдвинуть швы, если пользователь уже дал «анализируй»).
Фаза 1 — по шардам, параллельно
Agent model=sonnet, run_in_background:true, по одному на шард. Каждый агент читает ТОЛЬКО свою зону и возвращает:
-
Внутренние нити с осями (1/2/3/5) и
S. -
Внутреннюю спутанность и циклы (с вердиктом контролируемо/катастрофа).
-
Манифест границы (критично для сшивки) — все полуребра за пределы зоны:
- экспонированные входы: public API / поднимаемые события / реактив наружу — с идентити;
- выходы наружу: подписки на чужие события, вызовы чужого API/контроллера/хаба,
Setв общий реактив,static/GetServiceв другие зоны — с идентити и каналом. Формат:{идентити, направление, канал, файл:метод}.
Что есть «идентити» (по нему матчатся полуребра на шве):
- событие —
ОбъявляющийТип.ИмяСобытия; - API/метод —
Тип.Метод(сигнатура); - реактив — конкретный тип
ReactiveValue<T>+ владелец/поле (напр.PointerModel.ScreenPosition); - static/глобал — полное
Namespace.Тип.член.
Матч ребра — совпадение идентити с обеих сторон шва. Если идентити не резолвится однозначно (перегрузки, дженерики, доступ через рефлексию/строковый ключ, событие через обёртку) → ребро помечается
unresolvedи трактуется как ветка B для ЭТОГО ребра: в вывод идёт дисклеймер «cross-shard связь по<идентити>не подтверждена», а НЕ молчаливый пропуск. Скрытая cross-shard рекурсия/спутанность не должна теряться тихо.
Промпт агента должен содержать полную модель анализа: модель нити из SKILL.md (раздел 3) + references/axes.md целиком, т.к. у агента нет этого контекста.
Фаза 2 — сборка (основной контекст, не делегируется)
- Сшить полуребра по идентити → cross-shard рёбра и cross-shard нити.
- На пересобранном графе: Ось 4 (включая межшардовые пересечения) + рекурсия (циклы через швы).
- Оси 1/2/3/5 и
S— среднее по шардам, с дедупом маркеров по типу (один тип = 1 единица, но перечислить все проявления).
Сведение
| Величина | Как сводим |
|---|---|
Оси 1/2/3/5, S |
среднее по шардам + обязательно разброс min–max (усреднение маскирует «где болит»: ядро может быть 3, вью 1) |
| Ось 4 спутанность | на пересобранном графе (не усреднять) |
| Рекурсия/катастрофа | на пересобранном графе (цикл может замкнуться через шов) |
Ветка B — частичный (>10000 LOC / деление неестественно)
Вывести предупреждение:
⚠️ Объём превышает порог реконструкции графа. Пер-шардовые оси применимы, но cross-shard спутанность и рекурсия могут быть пропущены. Оценка частичная.
Далее: по-шардовый анализ осей + швы выборочно (только явные пивоты), в выводе маркировать «оценка частичная».