Negative Space Miner
ASecurityСтроит гипотезу из ОПУБЛИКОВАННЫХ провалов, а не подтверждений: null results, failed replications, противоречащие исследования, эффекты, исчезающие при смене условий. Не атакует уже готовую гипотезу (это /sci-evidence falsify) и не работает с ОСТАТКАМИ своей собственной модели (это narrow-discovery-engines Engine 1/4) — ищет сигнал во внешней литературе неудач, кластеризует конфликты по типу, строит Repair Hypothesis, которая объясняет ОДНОВременно почему эффект иногда есть и почему иногда ис...
- 9 stars
- 0 votes
- 0 copies
- 0 views
- Added September 2, 2026
Works with
Security analysis
100/100Pro scans all 2 files and shows the line behind each finding
npx -y skills add sergeeey/Claude-cod-top-2026 --skill negative-space-miner --agent claude-codeAre you the author of Negative Space Miner?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/sergeeey-negative-space-miner)---
name: negative-space-miner
description: >
Строит гипотезу из ОПУБЛИКОВАННЫХ провалов, а не подтверждений: null results,
failed replications, противоречащие исследования, эффекты, исчезающие при
смене условий. Не атакует уже готовую гипотезу (это /sci-evidence falsify) и
не работает с ОСТАТКАМИ своей собственной модели (это narrow-discovery-engines
Engine 1/4) — ищет сигнал во внешней литературе неудач, кластеризует конфликты
по типу, строит Repair Hypothesis, которая объясняет ОДНОВременно почему
эффект иногда есть и почему иногда исчезает.
Triggers: /negative-space-miner, /negative-space, зона молчания, null results,
failed replications, почему это не сработало, провалившиеся эксперименты,
противоречащие исследования, boundary conditions, negative-space hypothesis,
что скрывает file drawer problem.
---
<!-- BSV — Brief Skill View | поиск: BSV
Скил : negative-space-miner
TL;DR : Опубликованные провалы (null/failed replication/contradiction) → карта конфликтов → кластер → Repair Hypothesis, объясняющая и успех, и провал
Вызов : /negative-space-miner, зона молчания, null results, failed replications
НЕ для : Атаки готовой гипотезы (→ /sci-evidence falsify), своих null_results (→ narrow-discovery-engines Engine 4), выбора между готовыми H (→ /hypothesis-arbiter)
Выход : Baseline теории → карта конфликтов → кластер провалов → Repair Hypotheses (макс 5) → attack → решающий тест → novelty check
-->
# negative-space-miner — гипотезы из опубликованных провалов
## Роль
Data-детектив, который ищет сигнал не там, где его ищут по умолчанию. Обычный
research-промпт спрашивает "что подтверждает гипотезу?". Этот скилл спрашивает
обратное: что из опубликованного НЕ сработало, и какая скрытая структура
объясняет одновременно успехи и провалы?
Мотивация (file drawer problem): отрицательные результаты систематически
недопредставлены в литературе — значит, они содержат сигнал, который никто не
собрал в одну картину, просто потому что каждый провал живёт в отдельной
статье, а не в общем реестре.
## HARD RULES
1. **Источник — внешняя литература, не выдумка.** Null results/failed
replications ищутся через WebSearch/литературные MCP. Ненайденный результат
помечается `SOURCE_NOT_FOUND`, не придумывается для полноты картины.
2. **Проверить СВОИ провалы первым, дёшево.** Прежде чем искать во внешней
литературе — `grep` по `null_results/INDEX.md` и `parked/INDEX.md` текущего
проекта (если это research-проект). Если тема уже там — прочитать
decision.md, не начинать поиск с нуля. Это разграничение с
`narrow-discovery-engines` Engine 4 (Exhaustion Mapping): Engine 4 работает
с УЖЕ известными нам null-результатами этого проекта, этот скилл — с
внешними, ещё не собранными в одну карту.
3. **EstimandOps L0 обязателен для итоговой Repair Hypothesis** — как и для
любой гипотезы в этом каталоге (`rules/estimand-ops.md`): классифицировать
descriptive/predictive/causal, прежде чем формулировать финал.
**Конкретная цена пропуска (найдено 2026-08-31, E-G геномика): гипотеза,
протестированная чисто предсказательным тестом (AUC), была сформулирована
словами "carries real signal", "interaction", "effect" — то есть неявно
выдавала причинную интерпретацию (физический контакт хроматина причинно
опосредует регуляцию), не подкреплённую ни DAG, ни проверкой 4
identifiability-допущений. Независимый делегированный skeptic поймал это
как отдельную находку, не как часть формального вердикта — L0 классификация
должна была отловить это ДО финализации, не постфактум чужой атакой.**
4. **Duhem-Quine qualifier при формулировке репаир-гипотезы** (заимствовано из
`hypothesis-arbiter`): repair-гипотеза объясняет конъюнкцию `наблюдение ∧
измерительный аппарат ∧ препроцессинг ∧ вспомогательные допущения`
КАЖДОГО источника в карте конфликтов — не сам эффект в вакууме. Явно
писать, при каких допущениях каждого исследования гипотеза работает.
5. **Novelty check обязателен перед выдачей финала** — не называть гипотезу
новой только потому, что она сформулирована здесь. Делегировать
`/novelty-assessment` или минимум 3 раунда поиска инлайн.
6. **Каждый вывод — evidence marker** (`[VERIFIED-REAL]` для найденного
источника с URL/DOI, `[INFERRED]` для вывода из подтверждённых фактов,
`[UNKNOWN]` для непроверенного).
## Этап -1 — Фильтр темы (до всякой работы)
Прежде чем запускать Этап 0 — один явный вопрос (найдено 2026-08-31 при
взгляде на всю историю прогонов сразу, не одним прогоном): существует ли
уже АГРЕГИРОВАННАЯ карта провалов по этой теме — registered replication
report (RRR), мета-анализ нулей, названный методологический спор поля?
Если да — основная ценность этого скилла (свести рассеянные по разным
статьям провалы в одну карту) уже создана другими; на выходе в лучшем
случае будет пересказ существующего caveat, не синтез (ровно это дал
2026-08-30 второй прогон на microbiome/obesity — независимый skeptic
назвал результат пересказом существующей оговорки). Не отклонять тему
автоматически, но явно понизить ожидание в Финальном выводе: результат не
может претендовать на новую структуру, только на подтверждение уже
известной.
Признак хорошей темы для этого скилла — обратный: провалы существуют, но
каждый живёт в отдельной статье, и никто их не свёл в реестр (file drawer
problem в буквальном виде, не знаменитая публичная контроверза). Все три
реальных объекта этого скилла на сегодня (ego depletion, microbiome/obesity,
minimum wage) были со стороны уже агрегированной карты — это и объясняет,
почему метод там давал устойчиво более слабые независимые вердикты, чем на
теме без готовой карты.
## Этап 0 — Baseline
Зафиксировать явно, до поиска провалов:
1. Доминирующая теория/объяснение.
2. Предполагаемый механизм.
3. Ключевые ПОДТВЕРЖДАЮЩИЕ наблюдения (то, что обычно приводят как доказательство).
4. Переменные, которые теория считает существенными.
5. Что теория ДОЛЖНА предсказывать, если верна.
## Этап 1 — Поиск негативного пространства
Отдельные (не объединённые через OR) запросы:
- `"[тема]" null result`
- `"[тема]" failed replication`
- `"[тема]" contradictory evidence`
- `"[тема]" no effect`
- `"[тема]" negative result`
- `"[тема]" replication` (без failed — иногда репликация просто слабее оригинала)
- `"[тема]" boundary conditions`
- `"[тема]" criticism`
- `"[тема]" unexpected result`
**Отдельная обязательная категория — методологический спор самого поля**
(найдено при третьем реальном прогоне, 2026-08-30 — minimum wage/employment:
все выше запросы нашли КОНФЛИКТУЮЩИЕ РЕЗУЛЬТАТЫ (Card-Krueger vs
Neumark-Wascher), но ни один не вывел на то, что поле само называет ПРИЧИНОЙ
разногласия — выбор дизайна идентификации (border-pairs vs synthetic control),
а не "источник данных", как я ошибочно предположил без этого поиска;
независимый skeptic-аудит: "a labor economist would name at least [this]
immediately"). В методологически изощрённых областях (причинный вывод,
эконометрика, клинические испытания с конкурирующими дизайнами) конфликт
результатов и спор о МЕТОДЕ — разные вещи, и вторую generic-запросы не ловят:
- `"[тема]" methodological debate` / `"[тема]" методологический спор`
- `"[тема]" identification strategy debate` (для причинных claims)
- `"[тема]" what researchers disagree about` / `"[тема]" ongoing controversy`
Если это возвращает называемый по имени методологический спор (не просто
"есть разногласия", а конкретный назван выбор дизайна/метода) — этот спор
ПЕРВИЧЕН для Этапа 2/3, конфликты из основных запросов выше интерпретируются
через его призму, не параллельно с ним.
Отсутствие публикации по запросу — не доказательство отсутствия эффекта
(file drawer problem работает и здесь, рекурсивно). Помечать `SOURCE_NOT_FOUND`,
не интерпретировать как "эффект точно есть".
## Этап 2 — Карта конфликтов
Таблица на каждый значимый результат:
| Источник | Год | Размер эффекта | Что ожидалось | Что произошло | Метод | Выборка/система | Условия | Возможное объяснение |
|---|---|---|---|---|---|---|---|---|
`Год` и `Размер эффекта` добавлены 2026-08-31 — карта конфликтов до этого
фиксировала метод и условия, но не время и величину, а самый диагностичный
сигнал негативного пространства — decline effect (систематическое затухание
величины эффекта от оригинала к репликациям) — количественный и агрегируемый
именно по этим двум колонкам. Он различает "эффект контекстно-зависим" от
"эффект был артефактом отбора/publication bias" — то, что качественная
кластеризация по методу/условиям одна не различает. Если размер эффекта
неизвестен по источнику — `<unknown>`, не оценивать на глаз.
Классификация конфликта (ровно одна метка на строку, не смешивать):
`methodological` | `measurement` | `population-specific` | `temporal` |
`scale-dependent` | `context-dependent` | `model-dependent` | `causal` | `unexplained`
## Этап 3 — Структура провалов
Не рассматривать отрицательные результаты по одному. Кластеризовать по общей
метке конфликта или по общему условию проведения. Для каждого кластера:
> Какая скрытая переменная могла бы ОДНОВРЕМЕННО объяснить несколько провалов
> в этом кластере?
Кандидаты (проверять по порядку, не исчерпывающий список): масштаб, время,
стадия процесса, скрытая гетерогенность выборки, пороговый эффект,
нелинейность, взаимодействие переменных, обратная причинность, selection
effects, measurement error, feedback loop, adaptation, environmental regime,
**decline effect** (добавлено 2026-08-31 — отдельный от общего "время"
кандидат: систематическое падение `Размер эффекта` из Этапа 2 по мере роста
`Год`/порядка публикации, не просто "эффект со временем меняется". Проверка
— регрессия/визуальный тренд размера эффекта по году; если тренд
монотонно убывающий и начинается с самого сильного оригинального
исследования — сильный кандидат на winner's curse/publication-bias
происхождение, а не на подлинную context-dependence).
Кластер без общей переменной — не структура, а шум. Не форсировать гипотезу
на кластер, который её не даёт (симметрично HARD RULE 5 из `boyko-leverage-map`
про паттерны — здесь та же дисциплина применена к провалам, не к успехам).
**Ruling Theory Trap gate (найдено при втором реальном прогоне, 2026-08-30 —
microbiome/obesity: остановился на "diet confounding" как единственном
кандидате, хотя список выше явно содержал ещё как минимум 2 равноправных
кандидата — measurement error и, отдельно, экстремальность/нерепрезентативность
самой модели; независимый skeptic-аудит поймал это как произвольный выбор из
меню, не обоснованный отбор). Перед тем как перейти к Этапу 4 с одним
кандидатом на скрытую переменную — явно пройтись по ВСЕМ пунктам списка выше
и для каждого НЕ выбранного написать одну фразу, почему он хуже объясняет
именно ЭТОТ кластер (не "не подумал о нём", а "рассмотрел и отклонил, потому
что..."). Если ≥2 кандидата одинаково хорошо объясняют один и тот же кластер —
оба идут в Этап 4 как отдельные H_N, не сливаются в один по принципу "первый
показавшийся правдоподобным". То же самое HARD RULE 3 из `hypothesis-arbiter`
("У меня одна хорошая гипотеза" → Ruling Theory trap → обязательно выдвинуть
конкурентов), применённое здесь к скрытым переменным кластера, а не к
готовым гипотезам.
**Exhaustion Completeness check (найдено при ТРЕТЬЕМ реальном прогоне,
2026-08-30, тот же microbiome-объект после первого фикса — независимый
skeptic поймал Ruling Theory Trap на уровень ВЫШЕ: 5 гипотез структурно
разнообразны, но сам generic-список кандидатов выше НЕ domain-complete — не
покрывает publication bias в положительной литературе — в отличие от Этапа 2,
которая уже проверяет негативное пространство, но не спрашивает "не раздут ли
сам ПОЛОЖИТЕЛЬНЫЙ полюс той же публикационной необъективностью" — не
покрывает провалившиеся человеческие интервенции того же типа что оригинальный
positive-результат, штаммовые/видовые различия, winner's curse конкретно для
оригинального foundational-исследования). Механический проход по generic-
списку выше НЕОБХОДИМ, но НЕ ДОСТАТОЧЕН. После него — один явный вопрос,
позаимствованный из `narrow-discovery-engines` Engine 4 (Exhaustion Mapping),
не переизобретённый здесь:
> Считая retained-кандидатов (H1..H_N) вместе — они правдоподобно ИСЧЕРПЫВАЮТ
> пространство объяснений для ЭТОГО конкретного кластера, или это просто
> список того, что подсказал generic-чек-лист, а не то, что специфично для
> ЭТОГО домена?
Если есть основания подозревать домен-специфичный кандидат вне generic-списка
(например: сам оригинальный положительный результат мог быть раздут тем же
publication bias, что и в Кластере A негативного пространства — симметрия,
которую стоит проверить явно) — искать его отдельным WebSearch-запросом,
прежде чем закрывать Этап 3. Не гарантирует полноты (Popperian regress —
всегда можно найти ещё один уровень), но останавливает механическое закрытие
после первого прохода generic-списка.
## Этап 4 — Repair Hypotheses
Максимум 5, **не минимум** — если карта конфликтов честно даёт 2-3 сильные
гипотезы, а не 5, не растягивать список ради формата (HARD RULE 3). Меньше
гипотез, каждая с реальным Duhem-Quine обоснованием, лучше пяти, из которых
две — вариации одной и той же идеи. **Но "меньше" должно быть результатом
Ruling Theory Trap gate выше, а не пропуском проверки остальных кандидатов —
разница между "честно нашёл только 1" и "остановился на первом
правдоподобном" реальна и её ловит только эта проверка.** Каждая обязана
объяснять ТРИ вещи одновременно:
1. Почему положительные результаты иногда возникают.
2. Почему отрицательные результаты также возникают.
3. Какое конкретное условие переключает систему между ними.
```
### Гипотеза H_N
**Механизм:** ...
**Положительные результаты, которые объясняет:** [источники из Этапа 2]
**Отрицательные результаты, которые объясняет:** [источники из Этапа 2]
**Переключающая переменная (boundary condition):** ...
**Duhem-Quine оговорка:** H_N совместима с [источник A] при допущениях
[измерительный аппарат/препроцессинг этого источника] — если эти допущения
сами под вопросом, H_N не проверена ЭТИМ источником, а не автоматически верна.
```
**Rescue-unfalsifiability check (найдено при втором реальном прогоне,
2026-08-30 — microbiome/obesity: Duhem-Quine оговорка "человеческие
исследования недостаточно проконтролировали диету" покрывала БУКВАЛЬНО ЛЮБОЙ
будущий null-результат — независимый skeptic-аудит верно назвал это
"unfalsifiability-by-confounder-appeal", а не легитимной оговоркой). Для
каждой написанной Duhem-Quine оговорки — задать явный вопрос:
> Покрывает ли это допущение (при котором H_N "не опровергнута" источником)
> ЛЮБОЙ возможный отрицательный результат, или только некоторые?
Если ЛЮБОЙ (нет мыслимого негативного результата, который допущение не может
объяснить задним числом) — H_N нарушает правило Этапа 6 про нефальсифицируемость
ПРЯМО СЕЙЧАС, на этапе формулировки, не только при атаке. Два легитимных
выхода: (а) заранее, ДО следующего теста, указать конкретный порог
"достаточного контроля" (что именно должно быть измерено/зафиксировано, чтобы
допущение считалось закрытым — тот же принцип, что Outcome map в
`hypothesis-arbiter`), или (б) понизить H_N до статуса "одна из нескольких
конкурирующих гипотез, не установленная", а не выдавать её финальным ответом.
**Количественный порог обязателен, не только качественная проверяемость
(найдено 2026-08-31, первый реальный прогон с делегированной атакой —
E-G геномика: обе Repair Hypotheses прошли формальную Rescue-unfalsifiability
check — их оговорки были технически фальсифицируемы — но независимый
делегированный skeptic поймал, что КАЖДАЯ оговорка содержала невыраженный
числом эскейп: H1's "стратифицированный ре-тест на подвыборке" не фиксировал
заранее минимальный n/мощность — при нулевом результате на маленькой
подвыборке защитник гипотезы предсказуемо скажет "недостаточно данных", не
формально нарушая оговорку, но и не подвергая её реальному риску; H2's "малая
доля" не имела числового порога — после реального подсчёта появится соблазн
сдвинуть, что считать "малым", задним числом). Формальная проверка "существует
ли мыслимый негативный результат" — необходима, но НЕ достаточна: она ловит
абсолютную нефальсифицируемость (оговорка покрывает ЛЮБОЙ исход), но не ловит
частичную — оговорку, которая технически фальсифицируема, но её порог
установлен настолько расплывчато, что его можно молча подвинуть после того,
как результат уже известен. Перед тем как считать Rescue-unfalsifiability
check пройденной — для каждой оговорки, ссылающейся на "достаточно",
"малая доля", "хорошо обеспеченная мощностью" и подобные качественные
пороги: зафиксировать КОНКРЕТНОЕ число (минимальный n, процентный порог,
ширина доверительного интервала) ДО того, как результат теста станет
известен. Оговорка без зафиксированного числа остаётся в статусе
"формально фальсифицируема, практически подвижна" — не считается закрытой.**
**Numeric-threshold requirement для механизмов с порогом (найдено при третьем
реальном прогоне, 2026-08-30 — minimum wage: H2 использовала механизм
"эффект есть до определённого порога X", falsifier был "результат ниже
теоретического порога" — сам Rescue check был формально применён, но не
поймал, что "порог" не операционализирован числом, поэтому ЛЮБОЙ негативный
результат можно списать на "порог на самом деле выше/ниже, чем думали";
skeptic верно назвал это "effectively unfalsifiable" несмотря на formally
existing falsifier). Если механизм H_N включает слова "до порога", "выше
определённого уровня", "при достаточной силе X" — вариант (а) выше НЕ
считается выполненным, пока порог не указан как конкретное число или как
независимо измеримая величина (индекс, единица измерения) — "теоретический
порог" без числа это то же самое, что "недостаточный контроль" без критерия:
рескьюит любой результат под видом строгости.
## Этап 5 — Неожиданное предсказание
Для каждой гипотезы — минимум одно наблюдение, которое:
- не пересказывает уже собранные данные;
- маловероятно при стандартной теории;
- ожидается именно при этой repair-гипотезе.
Формат: *"Если H_N верна, то при условиях X должно наблюдаться Y, тогда как
стандартная модель скорее предсказывает Z."*
## Этап 6 — Attack
Для каждой гипотезы: сильнейший контраргумент, альтернативное объяснение,
критическое допущение, наблюдение-опровержение, самый опасный confounder.
Гипотеза, совместимая с ЛЮБЫМ возможным результатом — нефальсифицируема,
отклонить (HARD RULE о запрете нефальсифицируемости, общая для всего каталога).
**Делегирование обязательно, потолок вердикта без делегирования (найдено
2026-08-31 — кросс-прогонный аудит всей истории файла сразу, не одним
прогоном): все пять доработок этого файла на сегодня (Ruling Theory Trap,
Rescue-unfalsifiability, Numeric-threshold, Full-row diagnosticity,
Stratifier-confound) найдены независимым skeptic-агентом ПОСЛЕ прогона —
ни одну не поймал именно этот Этап, хотя он для этого и предназначен: счёт
5 из 5 снаружи, 0 из 5 отсюда. Причина — agreeableness bias: тот же контекст,
который построил Repair Hypothesis (карта конфликтов, отклонённые кандидаты,
почему выбрана именно эта переключающая переменная), атакует её же и
склонен соглашаться со своим же построением. Этап 8 ниже уже решает ту же
проблему для Novelty Check через делегирование `/novelty-assessment` — этот
Этап исторически ссылался на тот же принцип прозой, но не применял его к
себе.**
Если Attack выполнен инлайн, той же сессией, что сформулировала гипотезу —
итоговый статус в Финальном выводе не может подниматься выше `survived weak
attack`, не `survived`. Статус `survived` требует делегированной атаки:
`Agent(skeptic, ...)`, которому передаётся ТОЛЬКО Repair Hypothesis (Этап 4)
+ её Duhem-Quine оговорка + список источников, которые она объясняет — БЕЗ
карты конфликтов целиком, БЕЗ отклонённых на Этапе 3 кандидатов и БЕЗ
рассуждения о том, почему выбрана именно эта переключающая переменная (тот
же Context Asymmetry Rule, что и в `rules/falsification-ladder.md`). Если
делегирование невозможно (нет доступа к отдельному агенту) — зафиксировать
это явно в Финальном выводе, не молчать о потолке.
## Этап 7 — Решающий тест
Не "самый дешёвый", а самый **различающий** — используй Cheapest Differentiating
Test Protocol из `rules/falsification-ladder.md`
(`max(differentiation + kill_power + rescue_power + reuse_value − circularity_risk) / cost`),
не отдельную новую формулу. Для survivor-гипотез после Этапа 6:
- independent variable / dependent variable / controls;
- expected outcome под каждой survivor-гипотезой (не одной);
- главный confounder;
- критерий фальсификации.
Если после Этапа 4 выжила >1 гипотеза одновременно — заполнить
`experiments/_template/ach_matrix.md` (Heuer ACH / Platt Strong Inference)
вместо линейного перебора: это тот же инструмент, что использует
`hypothesis-arbiter` для той же ситуации, не изобретать второй.
**Full-row diagnosticity check (найдено при ТРЕТЬЕМ реальном прогоне,
2026-08-30: тест был назван "самым дешёвым дискриминирующим" для H4, но
проверялся только по столбцу H4 — независимый skeptic показал, что тот же
положительный результат теста ОДИНАКОВО ожидается и под H1, и под H2, то есть
тест на деле НЕ дискриминирует ничего — прямое нарушение уже написанного в
`ach_matrix.md` правила "строка с одинаковым символом под всеми гипотезами —
non-diagnostic", которое было прочитано, но не применено построчно). Перед
тем как объявить тест "самым дешёвым дискриминирующим" — заполнить ЕГО СТРОКУ
целиком, под КАЖДОЙ выжившей гипотезой, не только под той, для которой тест
придуман. Если ≥2 гипотезы дают одинаковый ожидаемый результат в этой строке —
тест НЕ дискриминирующий для этой пары, сколько бы дешёвым он ни был; искать
другой, или явно констатировать, что дешёвого дискриминирующего теста для
этой пары пока нет.
**Stratifier-confound check (найдено при ЧЕТВЁРТОМ реальном прогоне,
2026-08-30 — minimum wage/employment: строка была честно заполнена под каждой
гипотезой по отдельности — H2 и H5 давали РАЗНЫЕ предсказания на бумаге — но
сама переменная стратификации (концентрация рынка труда) коррелирует со
скрытым фактором ДРУГОЙ гипотезы (сельские рынки одновременно более
концентрированы И менее комплаентны) — независимый skeptic: "reversal by HHI
stratum is equally predicted by monopsony threshold and enforcement varies
with market structure". Full-row check ловит совпадение ПРЕДСКАЗАНИЙ, но не
ловит совпадение ПРИЧИН предсказаний через общую скрытую переменную самого
критерия стратификации — это другая ошибка, не устраняется тем же способом).
Перед финализацией любого стратифицированного/квазиэкспериментального
решающего теста — отдельный явный вопрос:
> Коррелирует ли САМА переменная стратификации/сравнения с движущей
> переменной какой-либо ДРУГОЙ выжившей гипотезы (не только с предсказанием
> целевой)?
Если да — тест нужно либо контролировать по этой второй переменной отдельно
(двойная стратификация), либо явно признать его недостаточно чистым для
одной конкретной пары гипотез, даже если он различает остальные.
## Этап 8 — Novelty Check
Делегировать `/novelty-assessment` (multi-round search, harsh critic) на
итоговую repair-гипотезу. Пять статусов, как в исходном шаблоне:
`documented` | `closely related` | `plausible extension` |
`apparently novel but unverified` | `cannot determine novelty`.
**Потолок статуса без делегирования (найдено при первом реальном прогоне,
2026-08-30):** если `/novelty-assessment` не вызван как отдельный процесс, а
Этап 8 сделан урезанно, инлайн, в рамках этого же цикла — статус не может
подниматься выше `closely related`. `apparently novel` требует именно
делегированного, отдельного multi-round поиска — не быстрой прикидки той же
сессией, которая сформулировала гипотезу (тот же принцип context asymmetry,
что и в Attack на Этапе 6).
## Финальный вывод
```markdown
## 1. Главная аномалия
[какой результат существующая теория объясняет хуже всего]
## 2. Самый информативный кластер провалов
[какой кластер даёт наибольший общий сигнал]
## 3. Лучшая Repair Hypothesis
[тезис + механизм + Duhem-Quine оговорка]
## 4. Неожиданное предсказание
[что должны увидеть, если гипотеза верна]
## 5. Решающий тест
[самый различающий, не самый дешёвый — см. Этап 7]
## 6. Novelty status
[из /novelty-assessment, с указанием числа раундов поиска]
## 7. Confidence (раздельно, не одна цифра)
- evidence strength: ...
- novelty: ...
- plausibility: ...
- falsifiability: ...
- experimental tractability: ...
- attack status: `survived` (Этап 6 делегирован отдельному агенту) /
`survived weak attack` (Этап 6 выполнен инлайн той же сессией — потолок,
см. Этап 6)
```
Не оптимизировать под оригинальность звучания. Оптимизировать под способность
объяснить то, что нынешняя модель считает исключением.
## Null Results Protocol
Если ни одна repair-гипотеза не пережила Этап 6 — это тоже результат: карта
конфликтов сама по себе информативна (кластер существует, но объяснения нет).
Сохранить в `null_results/` проекта (если research-проект) или
`~/.claude/memory/raw/`, per Kill Analysis из `falsification-ladder.md`: что
именно убито (repair-гипотезы), что НЕ убито (сама карта конфликтов и
кластеризация остаются валидными для следующей попытки).
## Связанные скилы
- `narrow-discovery-engines` Engine 1 (Orphan Data Miner) / Engine 4
(Exhaustion Mapping) — тот же принцип "провал = сигнал", но на СВОИХ
остатках модели и СВОИХ null_results, не на внешней литературе.
- `sci-evidence` FALSIFY — противоположное направление: атакует гипотезу,
которой уже доверяют, а не строит новую из чужих провалов.
- `hypothesis-arbiter` — если Этап 4 дал >1 survivor-гипотезу, ACH/kill-test
дискриминация между ними — этот скилл сюда не дублирует логику, а передаёт.
- `novelty-assessment` — обязательный Этап 8, не переизобретён здесь.
- `hd-mavp-router` — режим `negative_space` маршрутизирует сюда.
## История валидации
> Перенесено из frontmatter `description:` 2026-09-10. Описание грузится в
> системный промпт КАЖДЫЙ ход; эта история нужна только когда скилл реально
> запускается. Текст ниже — дословно тот, что стоял в описании.
[STATUS: described] [CONFIDENCE: n=1, 2026-08-30 — реальный прогон на ego
depletion / strength model of self-control (Baumeister 1998), с реальным
WebSearch (не по памяти): нашёл RRR 2016 null result, bias-corrected
meta-анализ, критику глюкозного механизма (Kurzban 2013) и хрупкий
moderator (Job/Dweck/Walton 2010 + его собственная 2023 реплика). Все 9
этапов отработали, ACH-матрица (Этап 7) реально нашла дешёвый
дискриминирующий тест. Прогон нашёл 2 доработки, обе применены: (1) "макс 5
гипотез" не означает "минимум 5" — явно разрешено меньше; (2) Novelty Check
без делегирования `/novelty-assessment` не может подниматься выше `closely
related`. Второй прогон (2026-08-30, microbiome/obesity causal claim, тоже
реальный WebSearch) дал репаир-гипотезу, которую НЕЗАВИСИМЫЙ skeptic-агент
(context-asymmetric, только claim+evidence) оценил как WEAKENED, на грани
FALSIFIED-AS-STATED: пересказ существующего caveat, а не синтез, и
unfalsifiable-by-confounder-appeal. Это НЕ провал скилла — это найденный им
же самим (через собственный процесс) реальный сбой исполнения на Этапах 3-4
и 6, приведший к 2 новым gate'ам: Ruling Theory Trap gate (Этап 3, не
останавливаться на первом правдоподобном кандидате без явного отклонения
остальных) и Rescue-unfalsifiability check (Этап 4, Duhem-Quine оговорка не
должна покрывать ЛЮБОЙ мыслимый негативный результат). Честный итог: метод
реально работает на объектах с несколькими конкурирующими объяснениями
(ego depletion), но давал слабый результат на объекте с одним консенсусным
объяснением в поле — само по себе полезная граница применимости, найденная
адверсариальной проверкой, а не самооценкой. Тот же microbiome-объект
прогнан ПОВТОРНО с обоими новыми гейтами (третий реальный прогон,
2026-08-30) — второй независимый skeptic-аудит нашёл РЕАЛЬНОЕ улучшение
(3 из 5 гипотез — NEEDS-REAL-DATA с конкретными, в основном tight
falsifiers, вместо WEAKENED/FALSIFIED у всех), но и НОВУЮ находку на уровень
выше: Ruling Theory Trap воспроизвёлся в списке КАНДИДАТОВ (generic
чек-лист Этапа 3 сам не domain-complete — пропустил publication bias в
ПОЛОЖИТЕЛЬНОЙ мышиной литературе, провалившиеся человеческие FMT-испытания,
host-genotype взаимодействие), и рекомендованный "самый дешёвый тест"
оказался НЕ дискриминирующим (одинаковый ожидаемый результат под 2 разными
гипотезами — нарушение собственного правила ach_matrix.md, прочитанного, но
не применённого построчно). Добавлены Exhaustion Completeness check (Этап 3,
делегирует narrow-discovery-engines Engine 4) и Full-row diagnosticity check
(Этап 7). Третий, независимый объект — minimum wage/employment (Card-Krueger
1994 vs Neumark-Wascher 1996) — дал ТРЕТИЙ skeptic-вердикт хуже двух первых:
"worse than a competent economist reading a review for 20 minutes". Причина
— новый, ещё более тонкий класс сбоя: generic-чек-лист Этапа 1/3 находит
КОНФЛИКТУЮЩИЕ РЕЗУЛЬТАТЫ, но не находит то, что само поле называет причиной
разногласия (выбор дизайна идентификации — border-pairs vs synthetic
control — не "источник данных", как я предположил без явного поиска именно
методологического спора); плюс H2 использовала необнаруженный
unfalsifiable threshold-механизм ("эффект есть до определённого порога", без
числа), и Full-row check не поймал confound самой переменной стратификации
(концентрация рынка коррелирует со скрытым фактором ДРУГОЙ гипотезы).
Добавлены ещё 3 gate'а: обязательный поиск "методологический спор поля"
как отдельная категория в Этапе 1 (не покрывается поиском null result),
numeric-threshold requirement для механизмов "до порога" (Этап 4), и
Stratifier-confound check (Этап 7, отдельно от Full-row check — та же
проблема класса "выглядело диагностичным, не было", но на уровне причины
предсказания, не самого предсказания). ЭТО ТРЕТИЙ ЦИКЛ "прогон → skeptic →
фикс" подряд без чистого LGTM — по Evaluator-Optimizer Guard из CLAUDE.md
здесь остановлена автономная итерация, эскалировано пользователю вместо
тихого 4-го цикла на новом объекте. Паттерн по трём объектам: метод
надёжен на объектах со СТАНДАРТНЫМИ типами конфликта (измерение,
confounding, reverse causation — ego depletion, частично microbiome), но
систематически слаб там, где ключевой спор поля — это выбор МЕТОДА/дизайна
идентификации, а не биологический/поведенческий механизм (современная
причинная эконометрика). Это картированная, не гипотетическая граница.
Собран 2026-08-30 по итогам сравнения внешнего промпта "ЗОНА
МОЛЧАНИЯ" с каталогом: закрывает единственный из трёх выявленных пробелов,
для которого не нашлось существующего скилла (в отличие от Outcome
Interpretation → hypothesis-arbiter и Assumption Taxonomy →
narrow-discovery-engines, обе добавлены как патчи, не новые скиллы).]
НЕ для: атаки гипотезы, которой уже доверяешь (→ /sci-evidence falsify),
работы с остатками СВОЕЙ модели или СВОИМИ null_results (→
narrow-discovery-engines Engine 1/4, /research-audit), выбора между уже
сформулированными конкурирующими гипотезами (→ /hypothesis-arbiter),
генерации гипотез с нуля без опоры на провалы (→ /cross-domain,
narrow-discovery-engines Engine 2).
effort: high
tokens: ~1600
triggers: [/negative-space-miner, /negative-space, "зона молчания", "null results", "failed replications", "почему это не сработало", "провалившиеся эксперименты", "противоречащие исследования", "boundary conditions", "negative-space hypothesis"]
Files in this skill
- SKILL.md
- plugin.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.