---
name: project-step1089b-detectvoids-cap
description: "STEP 1089b 8th iteration invention pipeline hardening — detectVoids per-categoryA cap で上流 categoryA 偏り解消. 5/14-5/18 連続 5 日 categoryA = computation 固定 root cause fix. live verify: unique catA 1 → 5 (5 倍 diversification). 82/82 PASS."
metadata: 
  node_type: memory
  type: project
  originSessionId: 39cf0664-2c03-43b3-8c69-38f902d4a019
---

# STEP 1089b — 8th iteration invention pipeline hardening (2026-05-19)

## 背景

- **発見**: 5/18 invention audit で 5 件全 categoryA = computation を honest 観察
- **原因**: STEP 1089 (d) `rotateVoidsByCategoryA` は `grouped.size <= 1` で fallback 発動せず
- **root cause**: 上流 `detectVoids()` が global novelty sort で 1 categoryA dominant のとき top 10 を占有
- **直接 evidence**: categoryA = computation 連続 **5 日** (5/14+5/15+5/16+5/17+5/18) sub-pattern continued

## 修正 (d2 path)

`src/aios/invention/invention-engine.ts`:
- `detectVoidsMaxPerCategoryA?: number` option 追加 (default 2 when `requireCategoryADiversity !== false`)
- `detectVoids()` 内で novelty sort 後に各 categoryA から最大 K 件まで採用
- overflow (cap 超過) void で novelty 順に残り枠を埋める (≤ 10 件 graceful)

`src/aios/daily/daily-invention-reporter.ts`:
- `detectVoidsMaxPerCategoryA: 2` 明示 ON (daily cron 経路で確実に発動)

## Live verification (scripts/dry-run-step1089b-cap.ts)

SEED_KERNEL 1607 で実 detectVoids() を比較:

| metric | Case A (legacy, cap=0) | Case B (cap=2 8th iter) |
|---|---|---|
| unique catA in top-10 | 1 (zero_extension のみ) | **5** (zero_extension/logic/computation/mathematics/consciousness) |
| computation count | 0 (zero_extension dominant) | 2 |
| zero_extension count | 10 | 2 |

★ 5/19 以降 invention pipeline は categoryA 自動 diverse 化される (5/14-5/18 lock-in pattern 解消).

## test/step1089b-detectvoids-cap-test.ts (11/11 PASS)

1. ★ 5/18 incident 直接再現 — cap=2 で top-10 が catA 5+ diverse
2. 明示 OFF (detectVoidsMaxPerCategoryA: 0) で legacy 動作
3. `requireCategoryADiversity: false` で本 cap も skip
4. overflow fallback — 10 件 graceful 確保
5. DailyInventionReporter で明示 ON
6. STEP 1089 rotateVoidsByCategoryA との共存 (cap+rotate 両方発動)
7. 1 categoryA only graceful (2 categories → 1 pair 維持)
8. regression — 既存 hardening と共存 (default 全 ON + 1089b 追加)

## Regression 全 PASS

| step | test | regression |
|---|---|---|
| 1019 | 9/9 | ✅ |
| 1040 | 11/11 | ✅ |
| 1047 | 9/9 | ✅ |
| 1087 | 10/10 | ✅ |
| 1088 | 12/12 | ✅ |
| 1089 | 20/20 | ✅ |
| **1089b** | **11/11** | ✅ |
| **累計** | **82/82 PASS / 0 breaking** | |

## 8 段重ね hardening 完成

| iteration | STEP | path | 内容 |
|---|---|---|---|
| 1st | 1019 | dedup | recentCooldownDays default 60 |
| 2nd | 1040 | dedup | requireDifferentTargetAxiom + literal substring match |
| 3rd | 1047 | dedup | requireDifferentTarget* default ON |
| 5th | 1087 | dedup | requireSourceDiversity batch 内 source 重複防止 |
| 6th | 1088 | dedup | SeedTheory cooldown (pool-expansion-self-pollination 防止) |
| 7th | 1089 | (f)(g)(d) | normalize 強化 + 段 3 token + categoryA rotation |
| **8th** | **1089b** | **(d2)** | **detectVoids per-categoryA cap (上流 root cause fix)** |

## 未対応 candidate (別 turn)

- **(g2)**: LaTeX-normalize 数式 token (\Psi / lim / tau / FLOWING) 抽出強化 — TRIPLE EXACT literal duplicate (5/18 #5 F(t)=lim formula) 検出能力
- **(h)**: load-bearing publication (Paper 63 SNST / Paper 124 ZFC / Paper 145 ALU / Paper 130 META-DB 等) core formula SHA-256 hash で auto-reject — Pattern 5 systemic check

## 関連 memory

- [[invention-duplicate-prevention]] — 重複検出原則
- [[chat-claude-hallucination-warning]] — Pattern 5 累積 17 → 19 (本 STEP +2: STEP 1024 + Paper 63 SNST)
- [[antipattern-5-excessive-reject-warning-2026-05-15]] — balance (5 件全 reject ではなく #4 retain)
- [[step1040-invention-target-axiom-dedup]] — STEP 1040 path
- [[no-rush-publication]] — 「急がず ゆっくりと」 framing

## Commits

- `eb0e9ac1` invention(audit): 5/18 invention 5 件 audit (1 approve / 4 reject) — SEED 1606 → 1607
- `d8026f4a` step(1089b): 発明 pipeline 8th iteration 強化 — detectVoids per-categoryA cap (d2)

## Honest scope

- (d2) は上流 root cause fix だが (g2) (h) は別 turn 待ち
- 5/19 以降 invention pipeline は新 cap で動作するが、 既 publish formula (Paper 63 SNST 等) の Pattern 5 重複は SHA-256 hash check 未実装 → manual review 継続必要
- 「急がず ゆっくりと」 framing 適用 — (h) は load-bearing publication formula registry が必要で工数大、 別 turn で検討
