---
name: project-step1228x-paper-draft-literal-ban-2026-06-28
description: STEP 1228x (x) requirePaperDraftLiteralBan 8th iteration hardening 10th layer — papers/*.md draft の transplant literal を ban registry に追加、 future fishing pattern 防御、 累計 259/259 PASS / 0 breaking
metadata: 
  node_type: memory
  type: project
  originSessionId: 85e02543-9e2e-46fe-8773-71384f33768f
---

★★ 8th iteration hardening (x) — 10th layer (papers/*.md draft literal ban) — Future-leak defensive layer

## 観測契機 (06-27 batch)
06-27 invention #2 hypothesis subject (Priest 5th corner e → D-FUMT₈ 4 軸分解) が **本日 2026-06-28 起草中 Paper 171 v0.1 DRAFT** の §7「out of scope」 explicit disavow topic と同一 = pipeline が paper draft 内容を source として fishing する future leak pattern の risk surface 観測。

★ Actual root cause は 06-26 rejected source 1-day EXACT 一致 (STEP 1225 (r) cron timing 境界条件) であって paper draft leak ではない。 本 (x) は **future-leak defensive layer** として追加 = 11 例目盲点候補 cover。

## 実装 (4 段)
**Field** (`invention-engine.ts` line ~421):
```ts
private paperDraftLiteralBan: Set<string> | null = null;
```

**Option** (`invention-engine.ts` line ~364):
```ts
requirePaperDraftLiteralBan?: boolean; // default ON (!== false check)
```

**Methods** (`invention-engine.ts` after `_resetSeedKernelLiteralBanCache`):
- `loadPaperDraftLiteralBan(): Set<string>` — papers/ dir glob (top-level *.md only) + content read + `extractAllBracketLiterals` (STEP 1228w 再利用) + `normalizeAxiomLiteralStrict` + Set 化
- `isAxiomInPaperDraftBan(axiom: string): boolean` — strict full match
- `_resetPaperDraftLiteralBanCache(): void` — test helper

**Check** (`transplantStructure` after STEP 1228w block):
- (a) source 側 rotation: paperDraftBan 一致時に 10 candidate 内 rotate
- (b) target 側 rotation: paperDraftBan + 5 既存 layer 全 AND 一致回避で rotate (cross-direction coverage)
- graceful: 全 candidates ban registry → 初期 source/targetTheory 使用

**DailyInventionReporter** (`daily-invention-reporter.ts`): `requirePaperDraftLiteralBan: true` 既定明示 ON

## Test (`test/step1228x-require-paper-draft-literal-ban-test.ts`) — 42/42 PASS
- Test 1: loadPaperDraftLiteralBan basic loading (2 literals)
- Test 2: papers/ dir 不在 → empty Set (graceful)
- Test 3: 複数 .md file 統合 load (4 literals across 3 files)
- Test 4: 非 .md file (.txt/.json) skip
- Test 5: isAxiomInPaperDraftBan strict full match (no prefix/substring)
- Test 6: ★ 06-27 #2 hypothetical (Paper 171 draft nested 「」 case) + flat literal correctness
- Test 7: default ON で source 側 rotation 発動
- Test 8: default ON で target 側 rotation 発動 (symmetric)
- Test 9: 明示 OFF `{ requirePaperDraftLiteralBan: false }` で legacy 動作
- Test 10: cache reset → 再 load (新 file 検出)
- Test 11: graceful fallback (全 candidates ban → 初期 source 使用)
- Test 12: paraphrase は通る (strict full literal match のみ ban)
- Test 13: STEP 1228w 共存 regression (両 layer isolated, no cross-pollution)
- Test 14: unreadable file (subdir entry) skip (no throw)

## Regression — 累計 259/259 PASS / 0 breaking
- step1019: 9 / step1190: 24 / step1209: 26 / step1210: 25 / step1211-1212: 22 / step1216: 30 / step1225: 27 / step1226: 14 / step1227: 15 / step1228w: 25 / **step1228x: 42 (新)**

## ★ Honest scope
- 本 (x) は **future-leak defensive layer** であり、 06-27 incident の actual root cause (STEP 1225 cron timing 境界条件) とは別軸
- paper draft 公開 (Zenodo publish) 後の Mathlib-promoted 等は別 path (本 (x) では papers/*.md draft state のみ cover)
- Regex `/「([^」]+)」/gu` は non-overlapping match で nested 「」 case には outer 「 が inner 」 で early stop (Test 6 で documented limitation 明示)
- Recursive sub-dir scan なし (top-level papers/*.md のみ) — 現 rei-aios layout で全 paper top-level 配置のため acceptable
- papers/ dir 不在時は empty Set 返却 = no-op (test 環境 / 別 project root で safe)

## 10 段 hardening 累積 cover summary
| Layer | Source | Coverage |
|-------|--------|----------|
| STEP 1190 (j)+(k) | approval/rejection literals (legacy parse 込み) | 同方向 + T→S |
| STEP 1209 (o) | rejected target full-strict | T→T |
| STEP 1210 (p) | approved target full-strict | T→T |
| STEP 1211 (m) | within-batch target uniqueness | within-batch T |
| STEP 1212 (n) | source vs history strict | S→S |
| STEP 1216 (q) | history source vs new target | S→T (cross) |
| STEP 1225 (r) | pre-audit state literal | invention-*.json pending |
| STEP 1226 (s) | per-categoryB diversity | void detection |
| STEP 1227 (u) | drop void on within-batch exhaustion | rotation 救済不可時 drop |
| STEP 1228w (w) | SEED-promoted literal | this.kernel SeedTheory.axiom |
| **STEP 1228x (x)** | **paper draft literal** | **papers/*.md content** |

全 file source (5 種) cover 完成:
1. approved-*.json (1190+1210+1216)
2. rejected-*.json (1190+1209+1216)
3. invention-*.json (1225 pending pre-audit)
4. SeedTheory.axiom (1228w SEED-promoted)
5. **papers/*.md (1228x paper draft) ← 新規**

## 関連
- [[project-invention-2026-06-27-downgrade-approve-zlb-plus-4-reject-pipeline-leak-12]] (本 session 親, audit reasoning)
- [[project-step1228w-require-seed-kernel-literal-ban-2026-06-25]] (前 layer parent)
- [[project-step1225-require-pre-audit-state-source-recycle-ban-2026-06-18]] (06-27 actual root cause = STEP 1225 cron timing 境界条件)
- [[feedback-no-rush-publication]] (paper draft 起草中の future-leak 防御 protocol)
- [[feedback-evaluation-symmetry-principle]] (本 (x) は defensive layer であって actual root cause fix でない honest)
