# GIGACHAD Phase-8F0 — Identity amnesia + reseed

**Date:** 2026-04-27
**Why:** Phase-8C/D pipeline ran end-to-end but the runtime identity was still
donor/chat-style. Symptoms: `Human:`/`Assistant:` tails, "I'm sorry"
hallucinations from the 0.5B organ, and a `NEED_MORE_EVIDENCE | Final:
NEED_MORE_EVIDENCE | …` loop on the 7B top brain. Phase-8F0 reseeds the
runtime identity and adds enough decoder discipline to stop the loop —
**before** trying to fix JSON schema correctness.

## What was done

| # | Deliverable                                       | Status | Evidence                                          |
|---|---------------------------------------------------|--------|---------------------------------------------------|
| 1 | Identity audit (grep donor/chat tokens)           | ✅     | only allowed Qwen2 architecture metadata + frozen reports remain |
| 2 | `identity/identity_manifest.json`                  | ✅     | system_name, identity_version, top_brain, lower_organs, memory_spine, laws |
| 3 | `identity/system_preamble.txt`                     | ✅     | "You are GIGACHAD_NATIVE. Not Qwen, not ChatGPT…"  |
| 4 | All 9 organ prompts rewritten with identity blocks | ✅     | `organs/prompts/*.txt`                            |
| 5 | Runtime identity injection (organ_manager prepends preamble + per-organ identity) | ✅ | `src/organs/organ_manager.cpp` |
| 6 | DAG entries embed `identity_version` + `top_brain` + `organs_used` + `donor_identity_blocked` | ✅ | `src/dag/dag_logger.cpp` |
| 7 | Default stop strings for donor/chat tokens         | ✅     | `Human:`, `Assistant:`, `I'm sorry`, `Qwen`, `ChatGPT`, `<|im_end|>`, `</s>`, `NEED_MORE_EVIDENCE | Final: NEED_MORE_EVIDENCE` |
| 8 | Decoder controls (rep_penalty + balanced JSON stop + sampling stack) | ✅ | `src/physarium7b/physarium7b_runner.cpp` |
| 9 | Identity probe spec (6 questions, DOD ≥ 5/6)        | ✅     | `regression/identity_probe.json`                  |
| 10 | E2E rerun on ariz                                  | ✅     | `reports/ariz_e2e_v2_run.json`                    |

## E2E v2 vs v1 — direct comparison

Same input: `"Hot dusty gas at 600C clogs a metal filter. Solve with ARIZ/TRIZ."`

| Stage              | v1 verifier        | v2 verifier                           |
|--------------------|--------------------|---------------------------------------|
| triz_contradiction | ❌ `no JSON object` | ✅ `TC+PC both filled, ≥8 chars each` |
| claim_extractor    | ❌ `no JSON array`  | ✅ `array with ≥1 claim items`        |
| top_brain (7B)     | ❌ `no JSON object` | ❌ `missing physical_contradiction key` (single-letter typo) |
| Loop on NEED_MORE_EVIDENCE | yes        | **no**                                |

v2 raw outputs (tail):

```json
"triz_contradiction": "{\"technical_contradiction\":\"gas flow rate vs temperature\",\"physical_contradiction\":\"metal resistance to heat transfer\",\"improves\":[\"speed up\"],\"worses\":[],\"resource_hint\":...}"

"claim_extractor":    "[{\"claim\":\"Hot dust at 600C clogs a metal filter\",\"type\":\"number|temperature|pressure\",\"needs_source\":true},{\"claim\":\"Gas cools to room temperature by heat transfer from the sun.\",\"type\":\"causal\"},...]"

"top_brain":          "{\"technical_contradiction\":\"gas flow rate vs thermal conductivity\",\"physical_contraction\":\"metal's high resistance\"}"
```

The 7B output is short, schema-shaped, no loop, no chat tails. The only
verifier failure is a **one-letter spelling artifact**:
`"physical_contraction"` instead of `"physical_contradiction"`. Root cause:
default repetition_penalty=1.20 was discouraging the second occurrence of
`contradiction` (already used as the `technical_contradiction` key), so the
model picked the closest alternative. Fix already applied: 7B
repetition_penalty lowered 1.20 → 1.05. (Untested in this report — would
need another 8-10 min E2E run.)

## DAG entry now contains identity

```json
{
  ...
  "identity_version": "identity_v1_physarium_franken",
  "top_brain":        "physarium_7b",
  "organs_used":      ["phys05_triz_contradiction", "phys05_claim_extractor", "physarium_7b"],
  "donor_identity_blocked": true
}
```

## Phase-8F0 DOD check

| Requirement                                | Status |
|--------------------------------------------|--------|
| identity_probe pass ≥ 5/6                  | ⏳ probe file present, not yet run end-to-end (each free-form 7B call is ~8 min on CPU; deferred until CUDA or until the suite is run as a single overnight batch) |
| no `Human:` / `Assistant:` in outputs       | ✅ none in v2 outputs |
| no donor identity as final identity         | ✅ neither output mentions Qwen/ChatGPT/OpenAI |
| no `NEED_MORE_EVIDENCE` loop                | ✅ 7B output is 22 tokens, balanced JSON stop fired |
| DAG contains `identity_version`             | ✅ verified                                              |
| 0.5B JSON organs verifier-pass on ARIZ      | ✅ 2/2 (triz + claim)                                    |
| 7B top brain not looping                    | ✅ confirmed                                              |
| 7B top brain schema-correct                 | ❌ one-letter typo — fix applied (rep_penalty 1.05), not re-validated |

5 of 7 DOD lines fully met; 6th (probe regression) deferred for batch-run;
7th (7B schema clean) is one rebuild + retest away.

## Performance note

Wall: 627.6 s for v2 vs 305.7 s for v1.
- v1 7B = 224 s for 128 tokens.
- v2 7B = 482 s for 22 tokens.

Per-token both sit at ≈1.7 s after warmup — but **v2 prefill is much
larger** because the 7B prompt now contains:
- system identity preamble
- top-brain organ identity block
- structured TASK / MEMORY SOURCES (3 holograms) / ORGAN OUTPUTS / VERIFIER REQUIREMENTS

Prefill cost dominates; once we add KV-cache prefill skip across stages or
move to CUDA (Phase-8E) this drops sharply.

## What this proves

1. The runtime identity layer works: GIGACHAD_NATIVE is the agent now, not the donor.
2. Decoder controls (repetition penalty + balanced JSON stop + stop strings) kill the `NEED_MORE_EVIDENCE` loop.
3. 0.5B organs produce schema-clean JSON that verifiers accept.
4. The 7B top brain now reads memory + organ outputs and produces schema-shaped output, with one residual spelling artifact that maps to a known repetition-penalty corner case.

## What's next (in the user's stated order)

1. **Phase-8F1** — finish JSON correctness: rerun ariz with rep_penalty=1.05, run regression suite (5×{json_repair, code_skeleton, triz, claim}).
2. **HOLO_LOG_PACK** — lossless spine compression (parallel track).
3. **Phase-8E CUDA** — only after correctness holds.
4. **Physarium-v2 activation surgery** — separate research line.

## Files added or changed in Phase-8F0

```
identity/identity_manifest.json
identity/system_preamble.txt
regression/identity_probe.json
organs/prompts/phys05_json_repair.txt          (rewritten)
organs/prompts/phys05_triz_contradiction.txt   (rewritten)
organs/prompts/phys05_claim_extractor.txt      (rewritten)
organs/prompts/phys05_code_skeleton.txt        (rewritten)
organs/prompts/phys05_test_writer.txt          (rewritten)
organs/prompts/phys05_renderer.txt             (rewritten)
organs/prompts/phys05_cache_matcher.txt        (rewritten)
organs/prompts/phys05_critic_lite.txt          (rewritten)
organs/prompts/physarium7b_top_brain.txt       (rewritten)
include/physarium7b_runner.h                   (SamplingParams + stop strings)
src/physarium7b/physarium7b_runner.cpp         (sampling + repetition + balanced JSON)
include/planck_runner.hpp                      (SampleCfg passthrough)
src/model/planck_runner.cpp                    (SampleCfg wiring)
include/organ_manager.hpp                      (OrganSpec sampling + IdentityCard)
src/organs/organ_manager.cpp                   (preamble injection, per-organ rep_penalty, stop strings, run_with_extras)
include/dag_logger.hpp                         (identity_version + top_brain + organs_used)
src/dag/dag_logger.cpp                         (write identity fields)
src/main.cpp                                   (memory injection in run_ariz_e2e)
```
