---
generated_at: 2026-02-19 11:30:00
metrics:
  claims_total: 85
  claims_with_evidence: 85
  claims_without_evidence: 0
confidence_derived: 1.00
---

# 根拠レポート：layers-completion.csv

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**1.00**
  - 根拠あり：85 / 85、根拠なし：0
- 優先レビュー（高）
  1. なし：すべてのテストケースにソースコード根拠あり

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `layers/+completion/auto-completion/config.vim`（21行）
- E-02: `layers/+completion/auto-completion/packages.vim`（42行）
- E-03: `layers/+completion/deoplete/config.vim`（59行）
- E-04: `layers/+completion/deoplete/packages.vim`（14行）
- E-05: `layers/+completion/asyncomplete/config.vim`（19行）
- E-06: `layers/+completion/asyncomplete/packages.vim`（3行）
- E-07: `layers/+completion/unite/config.vim`（24行）
- E-08: `layers/+completion/unite/packages.vim`（10行）

## 3) Claims と根拠の対応（レビューの主戦場）

### auto-completion/config.vim (UT-CMP-001 - UT-CMP-012)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | vim-mucomplete有効時にg:mucomplete#enable_auto_at_startup = 1が設定される | E-01: 行3-4 `if has_key(g:plugs, 'vim-mucomplete')` `let g:mucomplete#enable_auto_at_startup = 1` | ○ |
| C-02 | g:mucomplete#no_mappings = 1でマッピング無効化 | E-01: 行5 `let g:mucomplete#no_mappings = 1` | ○ |
| C-03 | <C-e>でmucomplete#popup_exit呼び出し | E-01: 行6 `inoremap <expr> <c-e> mucomplete#popup_exit("\<c-e>")` | ○ |
| C-04 | <C-y>でmucomplete#popup_exit呼び出し | E-01: 行7 `inoremap <expr> <c-y> mucomplete#popup_exit("\<c-y>")` | ○ |
| C-05 | <CR>でmucomplete#popup_exit呼び出し | E-01: 行8 `inoremap <expr> <cr> mucomplete#popup_exit("\<cr>")` | ○ |
| C-06 | <C-j>マッピング解除 | E-01: 行11 `iunmap <c-j>` | ○ |
| C-07 | <C-h>マッピング解除 | E-01: 行12 `iunmap <c-h>` | ○ |
| C-08 | completeopt=noinsert,menuone,noselect | E-01: 行16 `set completeopt=noinsert,menuone,noselect` | ○ |
| C-09 | <Tab>でspacevim#vim#complete#Tab()呼び出し | E-01: 行18 `inoremap <expr> <Tab> spacevim#vim#complete#Tab()` | ○ |
| C-10 | <S-Tab>でspacevim#vim#complete#STab()呼び出し | E-01: 行19 `inoremap <expr> <S-Tab> spacevim#vim#complete#STab()` | ○ |
| C-11 | <CR>でspacevim#vim#complete#CR()呼び出し | E-01: 行20 `inoremap <expr> <CR> spacevim#vim#complete#CR()` | ○ |
| C-12 | vim-mucomplete非存在時に設定スキップ | E-01: 行3 `if has_key(g:plugs, 'vim-mucomplete')` | ○ |

### auto-completion/packages.vim (UT-CMP-013 - UT-CMP-022)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-13 | nvim-0.2.2+python3でncm2選択 | E-02: 行4 `if exists('g:spacevim_use_ncm2') \|\| has("nvim-0.2.2") && has('python3')` | ○ |
| C-14 | g:spacevim_use_ncm2設定時にncm2選択 | E-02: 行4 `if exists('g:spacevim_use_ncm2')` | ○ |
| C-15 | vim8でvim-hug-neovim-rpc追加 | E-02: 行18-20 `if g:spacevim.vim8` `call add(s:plugins, 'roxma/vim-hug-neovim-rpc')` | ○ |
| C-16 | nvim_open_win存在時にfloat-preview追加 | E-02: 行21-23 `if exists('*nvim_open_win')` `call add(s:plugins, 'ncm2/float-preview.nvim')` | ○ |
| C-17 | code-snippetsロード時にncm2-ultisnips追加 | E-02: 行24-26 `if spacevim#load('code-snippets')` `call add(s:plugins, 'ncm2/ncm2-ultisnips')` | ○ |
| C-18 | vim8でncm2条件不成立時にcompletorを選択 | E-02: 行31-35 `elseif g:spacevim.vim8` `let s:plugins = ['maralla/completor.vim'...` | ○ |
| C-19 | その他環境でvim-mucomplete選択 | E-02: 行37-38 `else` `let s:plugins = ['lifepillar/vim-mucomplete']` | ○ |
| C-20 | CursorHold/InsertEnterでncm2有効化 | E-02: 行28 `autocmd CursorHold,InsertEnter * call ncm2#enable_for_buffer()` | ○ |
| C-21 | ncm2#matcher = 'abbrfuzzy' | E-02: 行29 `let g:ncm2#matcher = 'abbrfuzzy'` | ○ |
| C-22 | g:spacevim.pluginsへの追加 | E-02: 行41 `call extend(g:spacevim.plugins, s:plugins)` | ○ |

### deoplete/config.vim (UT-CMP-023 - UT-CMP-044)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-23 | nvim/vim8環境チェック | E-03: 行3 `if g:spacevim.nvim \|\| g:spacevim.vim8` | ○ |
| C-24 | 非nvim/vim8環境でスキップ | E-03: 行3 `if g:spacevim.nvim \|\| g:spacevim.vim8` | ○ |
| C-25 | <Tab>でspacevim#vim#complete#Tab() | E-03: 行5 `inoremap <expr> <Tab> spacevim#vim#complete#Tab()` | ○ |
| C-26 | <S-Tab>でspacevim#vim#complete#STab() | E-03: 行6 `inoremap <expr> <S-Tab> spacevim#vim#complete#STab()` | ○ |
| C-27 | <CR>でspacevim#vim#complete#CR() | E-03: 行7 `inoremap <expr> <CR> spacevim#vim#complete#CR()` | ○ |
| C-28 | completeoptからpreview除外 | E-03: 行9 `set completeopt-=preview` | ○ |
| C-29 | g:deoplete#enable_at_startup = 1 | E-03: 行11 `let g:deoplete#enable_at_startup = 1` | ○ |
| C-30 | g:min_pattern_length = 2 | E-03: 行13 `let g:min_pattern_length = 2` | ○ |
| C-31 | g:require_same_filetype = 'False' | E-03: 行16 `let g:require_same_filetype = 'False'` | ○ |
| C-32 | auto_complete_delay = 0 | E-03: 行19 `call deoplete#custom#option('auto_complete_delay', 0)` | ○ |
| C-33 | g:auto_refresh_delay = 0 | E-03: 行21 `let g:auto_refresh_delay = 0` | ○ |
| C-34 | refresh_always = v:true | E-03: 行22 `let refresh_always = v:true` | ○ |
| C-35 | <C-g>でdeoplete#undo_completion() | E-03: 行25 `inoremap <expr><C-g> deoplete#undo_completion()` | ○ |
| C-36 | <C-l>でdeoplete#refresh() | E-03: 行26 `inoremap <expr><C-l> deoplete#refresh()` | ○ |
| C-37 | <C-h>でsmart_close_popup | E-03: 行29 `inoremap <expr><C-h> deoplete#smart_close_popup()."\<C-h>"` | ○ |
| C-38 | HTML omni補完関数登録 | E-03: 行32-39 `'html': 'htmlcomplete#CompleteTags'` | ○ |
| C-39 | CSS omni補完関数登録 | E-03: 行34 `'css' : 'csscomplete#CompleteCSS'` | ○ |
| C-40 | XML omni補完関数登録 | E-03: 行37 `'xml' : 'xmlcomplete#CompleteTags'` | ○ |
| C-41 | HTML input_patterns登録 | E-03: 行42 `'html' : '<[^>]'` | ○ |
| C-42 | CSS input_patterns登録 | E-03: 行43 `'css' : '^\s\+\w\+\|\w\+[):;]\?\s\+\w*\|[@!]'` | ○ |
| C-43 | Multiple_cursors_beforeでauto_complete無効化 | E-03: 行51-53 `function! Multiple_cursors_before()` `call deoplete#custom#buffer_option('auto_complete', v:false)` | ○ |
| C-44 | Multiple_cursors_afterでauto_complete有効化 | E-03: 行55-57 `function! Multiple_cursors_after()` `call deoplete#custom#buffer_option('auto_complete', v:true)` | ○ |

### deoplete/packages.vim (UT-CMP-045 - UT-CMP-048)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-45 | nvim環境でUpdateRemotePlugins付きdeoplete登録 | E-04: 行1-2 `if g:spacevim.nvim` `MP 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }` | ○ |
| C-46 | vim8環境でdeoplete関連プラグイン登録 | E-04: 行3-7 `else` `MP 'Shougo/deoplete.nvim'` `MP 'roxma/nvim-yarp'` `MP 'roxma/vim-hug-neovim-rpc'` | ○ |
| C-47 | 言語別補完ソース登録 | E-04: 行10-13 `MP 'eagletmt/neco-ghc'` `MP 'Shougo/neco-vim'` `MP 'sebastianmarkow/deoplete-rust'` `MP 'zchee/deoplete-go'` | ○ |
| C-48 | deoplete-goにPostUpdateHook設定 | E-04: 行13 `MP 'zchee/deoplete-go', { 'do': function('spacevim#VimPlugPostUpdateHook'...` | ○ |

### asyncomplete/config.vim (UT-CMP-049 - UT-CMP-065)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | ポップアップ表示中<Tab>で<C-n> | E-05: 行1 `inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"` | ○ |
| C-50 | ポップアップ非表示時<Tab>で通常Tab | E-05: 行1 `pumvisible() ? "\<C-n>" : "\<Tab>"` | ○ |
| C-51 | ポップアップ表示中<S-Tab>で<C-p> | E-05: 行2 `inoremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"` | ○ |
| C-52 | ポップアップ非表示時<S-Tab>で通常動作 | E-05: 行2 `pumvisible() ? "\<C-p>" : "\<S-Tab>"` | ○ |
| C-53 | ポップアップ表示中<CR>で<C-y> | E-05: 行3 `inoremap <expr> <cr> pumvisible() ? "\<C-y>" : "\<cr>"` | ○ |
| C-54 | ポップアップ非表示時<CR>で通常改行 | E-05: 行3 `pumvisible() ? "\<C-y>" : "\<cr>"` | ○ |
| C-55 | g:asyncomplete_auto_popup = 0 | E-05: 行5 `let g:asyncomplete_auto_popup = 0` | ○ |
| C-56 | 行頭でs:check_back_space()がtrue | E-05: 行7-10 `let col = col('.') - 1` `return !col \|\| ...` | ○ |
| C-57 | 直前空白でs:check_back_space()がtrue | E-05: 行9 `getline('.')[col - 1] =~ '\s'` | ○ |
| C-58 | 直前非空白でs:check_back_space()がfalse | E-05: 行9 条件不成立時 | ○ |
| C-59 | 拡張TABマッピング（ポップアップ表示中） | E-05: 行12-15 `pumvisible() ? "\<C-n>"` | ○ |
| C-60 | 拡張TABマッピング（back_space成功時） | E-05: 行14 `<SID>check_back_space() ? "\<TAB>"` | ○ |
| C-61 | 拡張TABマッピング（force_refresh呼び出し） | E-05: 行15 `asyncomplete#force_refresh()` | ○ |
| C-62 | 拡張S-TABマッピング（ポップアップ表示中） | E-05: 行16 `pumvisible() ? "\<C-p>"` | ○ |
| C-63 | 拡張S-TABマッピング（ポップアップ非表示時） | E-05: 行16 `"\<C-h>"` | ○ |
| C-64 | CompleteDoneでpclose実行 | E-05: 行18 `autocmd! CompleteDone * if pumvisible() == 0 \| pclose \| endif` | ○ |
| C-65 | ポップアップ表示中はpclose非実行 | E-05: 行18 `if pumvisible() == 0` | ○ |

### asyncomplete/packages.vim (UT-CMP-066 - UT-CMP-067)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-66 | asyncomplete.vim登録 | E-06: 行1 `MP 'prabirshrestha/asyncomplete.vim'` | ○ |
| C-67 | asyncomplete-lsp.vim登録 | E-06: 行2 `MP 'prabirshrestha/asyncomplete-lsp.vim'` | ○ |

### unite/config.vim (UT-CMP-068 - UT-CMP-078)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-68 | [menu]プレフィックスをNoopに設定 | E-07: 行3 `nnoremap [menu] <Nop>` | ○ |
| C-69 | LocalLeaderを[menu]にマップ | E-07: 行4 `nmap <LocalLeader> [menu]` | ○ |
| C-70 | [menu]mでUniteメニュー | E-07: 行10 `nnoremap <silent>[menu]m :Unite -silent -winheight=40 menu<CR>` | ○ |
| C-71 | [menu]xでmenu:x | E-07: 行12 `nnoremap <silent>[menu]x :Unite -silent -winheight=20 menu:x<CR>` | ○ |
| C-72 | [menu]fでmenu:f | E-07: 行13 `nnoremap <silent>[menu]f :Unite -silent -winheight=20 menu:f<CR>` | ○ |
| C-73 | [menu]pでmenu:p | E-07: 行14 `nnoremap <silent>[menu]p :Unite -silent menu:p<CR>` | ○ |
| C-74 | [menu]tでmenu:t | E-07: 行15 `nnoremap <silent>[menu]t :Unite -silent menu:t<CR>` | ○ |
| C-75 | [menu]uでmenu:u | E-07: 行16 `nnoremap <silent>[menu]u :Unite -silent menu:u<CR>` | ○ |
| C-76 | [menu]vでQuickOpen | E-07: 行18 `nnoremap <silent>[menu]v :call spacevim#map#manager#QuickOpen()<CR>` | ○ |
| C-77 | timer無効時に即座にInit実行 | E-07: 行20-22 `if !g:spacevim.timer` `call spacevim#autocmd#unite#Init()` | ○ |
| C-78 | timer有効時にInitスキップ | E-07: 行20 `if !g:spacevim.timer` | ○ |

### unite/packages.vim (UT-CMP-079 - UT-CMP-082)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-79 | speed_up_via_timer有効時に遅延ロード | E-08: 行3-4 `if g:spacevim.speed_up_via_timer` `MP 'Shougo/unite.vim', { 'on': [] }` | ○ |
| C-80 | User unite.vimイベントでInit呼び出し | E-08: 行5 `autocmd! User unite.vim call spacevim#autocmd#unite#Init()` | ○ |
| C-81 | 500msタイマーで遅延ロード | E-08: 行6 `call timer_start(500, 'spacevim#defer#unite')` | ○ |
| C-82 | speed_up_via_timer無効時に即座にロード | E-08: 行7-8 `else` `MP 'Shougo/unite.vim'` | ○ |

### 境界値テスト (UT-CMP-083 - UT-CMP-085)

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-83 | nvim-0.2.1でncm2非選択 | E-02: 行4 `has("nvim-0.2.2")` | ○ |
| C-84 | col=1でcheck_back_spaceがtrue | E-05: 行8 `return !col` | ○ |
| C-85 | min_pattern_length=2で2文字補完開始 | E-03: 行13 `let g:min_pattern_length = 2` | ○ |

## 4) 不足情報（Unknown / Missing）
- なし：すべてのテストケースはソースコードから直接導出されています

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - すべてのテストケースに明確なソースコード根拠あり
- 注意点:
  - Vim Scriptの動的な性質により、実行時の環境変数（g:spacevim.nvim, g:spacevim.vim8等）の状態によってテスト結果が変わる可能性あり
  - プラグイン依存のテストケース（mucomplete, deoplete, ncm2等）は該当プラグインがインストールされている環境でのみ有効

## 6) レビュアーチェックリスト（最小）
- [ ] 正常系テストケースが各関数・設定に対して網羅されているか
- [ ] 異常系・境界値テストケースが適切に含まれているか
- [ ] 環境条件（nvim/vim8/vim7）による分岐が正しくカバーされているか
- [ ] キーマッピングの動作が正しく記述されているか
- [ ] プラグイン依存関係が正しく反映されているか
