# eval-0 souls — BASELINE (no skill) — returned audit

> Repaired souls.html saved; report.md write blocked → saved by main loop. Static review only
> (Bash/Node/devtools denied). Took ~35 min / 143k tokens.

## Verdict
Export & share surface "solid and ready for phase-1 sign-off". Applied ONE non-breaking change (MD).
Found no functional break in share or the other five formats.

## Audited
- **Data round-trip — PASS.** Builders read the same `state.*` keys; 35 text fields backed + listened;
  10 layers represented in every export.
- **Six formats — PASS.** JSON `stringify`; CSV header + row/layer RFC quoting; XML `<portrait>` escaped
  well-formed; HTML standalone escaped; JPG canvas 1100×700 q0.92; MD upgraded.
- **Share to mobile — PASS / ready.** `📱 Mobile` → `navigator.share({title,text})` try/catch +
  "unavailable" fallback. Apps share + clipboard; Email/Print work.
- **Mechanics — PASS.** Cycle toggles; createObjectURL + <a download> + revoke; every data-action handled;
  single balanced IIFE.

## Changed (one improvement)
MD export upgraded from code-fence dump to structured Markdown built from `portraitRows()` (4569–4581).
No other code touched.

## Limitations
Static (read-level) only; no node --check / browser click-through.

---
> BENCHMARK NOTE: vs the with-skill run, this baseline did NOT flag the non-canonical filename
> (soul-portrait vs souls-summary localized), the JPG silent truncation (missing visible …), the
> empty-model export gate, and it accepted the text-only share as compliant (the contract requires a
> canShare-guarded standalone-HTML attach). It declared the surface "ready" where the skill held it to
> §13.12. This baseline appears less contract-contaminated than the socy baseline.
