---
name: project-step1548-chip-elimination-upgrade-2026-08-29
description: STEP 1548 mystery-reasoning-connector v0.3 — contradiction / timeline chip elimination 昇格 (「記録 > 証言」 dominance + distance matrix)、 test 18/18 PASS + 139/139 backward compat clean
metadata: 
  node_type: memory
  type: project
  originSessionId: c922ed16-8768-46a2-904a-a44edbee09b5
  modified: 2026-08-28T23:16:34.614Z
---

# STEP 1548: v0.3 chip elimination upgrade (contradiction + timeline)

**Date**: 2026-08-29
**Arc**: v0.3 5-step arc (1/5) — user directive 「continue with all 5」
**Files**: `src/mcp/mystery-reasoning-connector.ts` (engine 拡張) / `test/step1548-chip-elimination-upgrade-test.ts` (18 assertion)

## v0.3 chip changes

### contradiction chip: 「記録 > 証言」 dominance
- 新 fact type usage: `testimony` with `claimedTime` + `claimedPlace`
- Rule: testimony が record で contradict されたら liar として catch
- **elimination trigger**: 候補内に caught liar が exactly 1 名 → 他を全消去 (liar = culprit)
- 0 or >1 liars: ambiguous、 narrative only
- v0.1/v0.2 の time+place contradiction narrative は保持 (backward compat)

### timeline chip: distance matrix impossibility
- 新 spec field: `distanceMatrix?: Record<string, Record<string, number>>`
- Rule: 各 suspect の (time, place) 系列で consecutive pair の gap が距離必要時間より小さい → 物理的不可能
- **elimination trigger**: 候補内で impossible timeline が exactly 1 名 → 他を全消去
- 0 or >1 impossible: ambiguous、 narrative only
- distanceMatrix なし = v0.1/v0.2 backward compat (narrative only)

## Type changes

```typescript
// FactValue extended for testimony
{ speaker: string; claim: string; claimedTime?: number; claimedPlace?: string }

// MysterySpec extended
distanceMatrix?: Record<string, Record<string, number>>

// ReasoningChip signature 拡張 (backward compat: spec optional)
(facts: Fact[], candidates: Suspect[], spec?: MysterySpec) => ChipResult
```

## Test 18/18 + backward compat 139/139

- STEP 1538: 43/43 PASS (v0.1 backward compat)
- STEP 1543: 16/16 PASS (v0.1 fixed cases)
- STEP 1545: 80/80 PASS (v0.2 dynamic generator)
- STEP 1548: 18/18 PASS (v0.3 elimination behavior)

7 section: caught liar → culprit / backward compat (no testimony) / distance impossibility → culprit / backward compat (no matrix) / multiple liars ambiguous / zero liars / multiple impossibles ambiguous

## Honest scope

- 「caught liar = culprit」 と 「impossible timeline = culprit」 は pedagogy 前提 (real detective では red herring もある)
- v0.3 では STEP 1543 playable page への chip 昇格 case 追加はまだ (別 STEP defer)
- distance matrix の対称性は enforce しない (spec 記述者責任)
- multiple liars/impossibles の場合の「複数容疑者を候補として絞る」 mode は未実装 (現在は ambiguous なら narrative only)
