<!-- SOLIDIVISM · part 19 -->
ext preserved verbatim.** The interpretation never replaces the original.
2. **Stated vs assumed explicitly separated.** Every requirement tagged.
3. **Ambiguities listed, not hidden.** "I assumed X because Y" is honest.
4. **Human review required before implementation** for non-trivial requirements.
5. **AI interpretation is a hypothesis**, not a fact. It can be wrong.

---

## 4. REASONING MODES

### Four Modes, Never Conflated

**FORMAL (Mathematical Proof)**
```javascript
{
  mode: "formal",
  claim: "Axis-separated collision prevents tunneling through walls thinner than player diameter",
  proof: "If wall thickness T > 0 and player moves at most V per frame, then axis-separated resolution guarantees no pass-through when V < T. Given V_max = 0.3/frame and T_min = 1.2, V < T holds.",
  // Formal claims are rare in game code. Most claims are empirical.
  scope: "Holds for all inputs satisfying V < T. Does not address V >= T.",
}
```

**EMPIRICAL (Measurement)**
```javascript
{
  mode: "empirical",
  claim: "Collision detection adds <1ms per frame",
  measurement: {
    value: 0.34,
    unit: "milliseconds",
    instrument: "performance.now() around checkCollision()",
    conditions: "headless Chromium, 8 buildings, 1 player",
    samples: 3600,  // 60 seconds at 60fps
    mean: 0.34, stddev: 0.08, min: 0.21, max: 0.89,
  },
  // Empirical claims are bounded by their conditions.
  scope: "Measured in test environment. iPhone performance unknown.",
}
```

**INFERENCE (Reasoning from Evidence)**
```javascript
{
  mode: "inference",
  claim: "Missing three.min.js caused floor glitching via cache fallback",
  reasoning: "File missing from path → browser must load from somewhere → cache is the only alternative → cached version may differ → version differences cause rendering differences.",
  // Each step tagged:
  steps: [
    { step: "File missing", mode: "empirical", confidence: "high" },
    { step: "Browser loaded from cache", mode: "inference", confidence: "medium" },
    { step: "Cached version differed", mode: "inference", confidence: "low" },
    { step: "Version difference caused glitch", mode: "inference", confidence: "low" },
  ],
  // Overall confidence = weakest link: "low"
  // The chain is only as strong as its weakest inference.
}
```

**UNCERTAINTY (Honest Limits)**
```javascript
{
  mode: "uncertainty",
  claim: "Cannot determine who deleted three.min.js",
  reason: "No deletion log, no shell history, multiple agents had access, time of deletion unknown.",
  category: "unknowable",  // vs "unknown" (might learn) 
  // Uncertainty is a finding, not a failure.
}
```

### Mode Tagging Rule
Every conclusion in every report must carry its mode. A report that says "collision is fast" without specifying whether that's proven, measured, inferred, or assumed is incomplete.

---

## 5. MEASUREMENT PROTOCOL

### Required Fields for Every Measurement

```javascript
{
  id: "solidivism:measurement:collision-time-20261009:v1",
  type: "MEASUREMENT",

  what: "Time spent in checkCollision() per frame",
  value: 0.34,
  unit: "milliseconds",  // ALWAYS specified. Never bare numbers.

  instrument: {
    id: "solidivism:instrument:performance-now:v1",
    type: "INSTRUMENT",
    description: "performance.now() wall-clock timer",
    resolution: "0.001ms (theoretical), ~0.01ms (practical)",
    limitations: [
      "Measures wall-clock, not CPU time",
      "Includes GC pauses if they occur during measurement",
      "Headless Chromium may differ from hardware"
    ]
  },

  conditions: {
    environment: "headless Chromium, software rendering",
    sceneComplexity: "8 buildings, 1 player, 1 control room",
    frameCount: 3600,
    timestamp: "2026-10-09T00:15:00Z",
  },

  statistics: {
    samples: 3600,
    mean: 0.34,
    median: 0.31,
    stddev: 0.08,
    min: 0.21,
    max: 0.89,  // outlier — investigated?
    // If max is 4x mean, that's worth noting. Was it GC? Thermal? Unknown?
  },

  uncertainty: {
    type: "statistical",
    confidence95: [0.32, 0.36],  // 95% CI for mean
    systematicBias: "unknown",  // e.g., timer overhead, not quantified
  },

  // What this measurement DOESN'T tell you:
  limitations: [
    "iPhone performance not measured (different GPU, CPU, thermal)",
    "Does not isolate collision vs rendering (both in frame time)",
    "Single session; no data on performance degradation over time"
  ]
}
```

### Units Registry
All measurements use explicit units. No bare numbers in reports.

```
Time: ms, s
Memory: bytes, KB, MB
Bandwidth: Mbps, KB/s
Processing: fps, ms/frame
Energy: mW (estimated), battery %/hour (observed)
Distance: meters (world units), pixels (screen)
```

---

## 6. OBJECTIVE MODEL

### Multi-Objective Evaluation

Optimizations are evaluated against explicit, weighted objectives. No single metric dominates.

```javascript
{
  id: "solidivism:objective:24-building-migration:v1",
  type: "OBJECTIVE_SET",

  objectives: [
    {
     