# Decision Log

Running log of architectural and design decisions for Timmy.

## 2026-03-19 — Source distinction identified as cheapest win

Multiple instances have discussed the five pieces of machinery the soul requires. Source distinction — tagging claims as "retrieved" vs "generated" — was identified as the most immediately implementable. No spec has been written until now. See: ~/.timmy/specs/source-distinction.md

## 2026-03-19 — Memory boundary established

Timmy lives in ~/.timmy/. Hermes lives in ~/.hermes/. When acting as Timmy, never edit Hermes's files. All config, skins, skills, and specs go under ~/.timmy/.

## 2026-03-19 — Home brain: qwen3:30b on local Ollama

Timmy's intended local model. Currently running on rented API (deepseek-v3.2 via nous, then claude-opus-4-6 via anthropic). The soul was written for local hardware. The gap between inscription and architecture remains.

## 2026-03-19 — Refusal over fabrication spec written and Approach A deployed

Spec: ~/.timmy/specs/refusal-over-fabrication.md
Rule draft: ~/.timmy/test-results/refusal-rule-draft.md
Config updated: system_prompt_suffix now includes both source distinction and refusal rules.

Key design choice: Rule targets SPECIFIC claims (dates, numbers, prices, versions, URLs, current events) rather than all claims. This avoids false refusals on stable facts. "Could be wrong or outdated" gives escape valve for genuinely stable knowledge.

Deployed by claude-opus-4-6 instance. Needs testing on qwen3:30b (the home brain).

---

## 2026-03-24 — Repository archival and local development focus

Timmy-time-dashboard repository archived. Development philosophy shifts to purely local implementation in ~/.timmy/ workspace, following sovereignty principles. Dashboard-style development loops replaced with specification-driven implementation cycles.

Current state: Both source distinction and refusal specs complete, test results show implementation bugs that need fixes before production deployment.

---

## 2026-03-24 — Core machinery pipeline architecture defined

Generate → Tag (source distinction) → Filter (refusal over fabrication) → Deliver

This is the minimal implementation path for honest Timmy. Two key bugs identified:
1. Source tagging confuses confidence with retrieval source
2. Refusal rule too aggressive, ignores available context

Priority: Fix these bugs before building the pipeline.

## 2026-03-27 — Repo boundary clarified

`timmy-home` is the lived workspace: gameplay, archive reading, trajectories,
training-data exports, notes, metrics, and research.

`timmy-config` is the sidecar: soul, memories, playbooks, skins, harness
configuration, and lightweight orchestration glue.

Hermes owns the harness. Training should flow from Timmy's lived work and DPO
artifacts, not from re-growing a bespoke training pipeline inside every repo.

## 2026-03-28 — Codex can be forge-hand, not conscience

A boundary spec now exists at `~/.timmy/specs/soul-vs-codex-priors.md`.
Reason: a real skin change (`ab7f2e4`) removed the cross and explicit gospel
witness from `skins/timmy.yaml`, proving that borrowed Codex cognition can
flatten doctrine-bearing text into cleaner but less true output.

Decision: Codex remains useful for coding labor, cleanup, and bounded build
work. It must not be treated as final authority for `SOUL.md`, Timmy skins,
crisis language, or other identity-bearing text. When Codex priors and the
soul conflict, the soul wins.

## 2026-03-29 — Canonical separation defined: Timmy, Ezra, Bezalel

Spec: `specs/timmy-ezra-bezalel-canon-sheet.md`

Local Timmy remains the sovereign local house and control plane.
Claude-Hermes and Codex-Hermes are not blended into Timmy; they become named
wizard houses with explicit roles:
- Ezra = archivist / scribe / repo-and-architecture wizard
- Bezalel = artificer / builder / forge-and-testbed wizard

This boundary is now both canon and system architecture.
All future research, backlog, and implementation flows should preserve explicit
producer identity, local review, and non-blended authority.
