# Uni-Wizard v2 — The Three-House Architecture

> *"Ezra reads and orders the pattern. Bezalel builds and unfolds the pattern. Timmy judges and preserves sovereignty."*

## Overview

The Uni-Wizard v2 is a refined architecture that integrates:

- **Timmy's** sovereignty metrics, conscience, and local-first telemetry
- **Ezra's** archivist pattern: read before write, evidence over vibes, citation discipline
- **Bezalel's** artificer pattern: build from plans, proof over speculation, forge discipline

## Core Principles

### 1. Three Distinct Houses

| House | Role | Primary Capability | Motto |
|-------|------|-------------------|-------|
| **Timmy** | Sovereign | Judgment, review, final authority | *Sovereignty and service always* |
| **Ezra** | Archivist | Reading, analysis, synthesis | *Read the pattern. Name the truth.* |
| **Bezalel** | Artificer | Building, testing, proving | *Build the pattern. Prove the result.* |

### 2. Non-Merging Rule

```
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│    EZRA     │     │   BEZALEL   │     │    TIMMY    │
│  (Archivist)│     │ (Artificer) │     │  (Sovereign)│
│   Reads →   │────→│  Builds →   │────→│  Judges     │
│   Shapes    │     │   Proves    │     │  Approves   │
└─────────────┘     └─────────────┘     └─────────────┘
       ↑                                        │
       └────────────────────────────────────────┘
              Artifacts flow one direction
```

No house blends into another. Each maintains distinct identity, telemetry, and provenance.

### 3. Provenance-First Execution

Every tool execution produces a `Provenance` record:

```python
@dataclass
class Provenance:
    house: str              # Which house executed
    tool: str               # Tool name
    started_at: str         # ISO timestamp
    completed_at: str       # ISO timestamp
    input_hash: str         # Content hash of inputs
    output_hash: str        # Content hash of outputs
    sources_read: List[str] # Ezra: what was read
    evidence_level: str     # none, partial, full
    confidence: float       # 0.0 to 1.0
```

## Architecture

### Harness (harness.py)

The `UniWizardHarness` is the core execution engine with house-aware policies:

```python
# Ezra mode — enforces reading before writing
ezra = UniWizardHarness(house="ezra")
result = ezra.execute("git_commit", message="Update")
# → Fails if git_status wasn't called first

# Bezalel mode — enforces proof verification
bezalel = UniWizardHarness(house="bezalel")
result = bezalel.execute("deploy", target="production")
# → Verifies tests passed before deploying

# Timmy mode — full telemetry, sovereign judgment
timmy = UniWizardHarness(house="timmy")
review = timmy.review_for_timmy(results)
# → Generates structured review with recommendation
```

### Router (router.py)

The `HouseRouter` automatically routes tasks to the appropriate house:

```python
router = HouseRouter()

# Auto-routed to Ezra (read operation)
result = router.route("git_status", repo_path="/path")

# Auto-routed to Bezalel (build operation)  
result = router.route("git_commit", repo_path="/path", message="Update")

# Multi-phase workflow
results = router.execute_multi_house_plan([
    {"tool": "git_status", "params": {}, "house": "ezra"},
    {"tool": "git_commit", "params": {"message": "Update"}, "house": "bezalel"}
], require_timmy_approval=True)
```

### Task Router Daemon (task_router_daemon.py)

Polls Gitea and executes the full three-house workflow:

1. **Ezra reads** the issue, analyzes, shapes approach
2. **Bezalel implements** based on Ezra's analysis, generates proof
3. **Timmy reviews** both phases, renders sovereign judgment
4. **Comment posted** to issue with full provenance

## House Policies

### Ezra (Archivist)

```python
{
    "requires_provenance": True,
    "evidence_threshold": 0.8,
    "must_read_before_write": True,
    "citation_required": True
}
```

- Must read git status before git commit
- Must cite sources in outputs
- Evidence level must be "full" for archives
- Confidence threshold: 80%

### Bezalel (Artificer)

```python
{
    "requires_provenance": True,
    "evidence_threshold": 0.6,
    "requires_proof": True,
    "test_before_ship": True
}
```

- Must verify proof before marking complete
- Tests must pass before "shipping"
- Fail-fast on verification failures
- Confidence threshold: 60%

### Timmy (Sovereign)

```python
{
    "requires_provenance": True,
    "evidence_threshold": 0.7,
    "can_override": True,
    "telemetry": True
}
```

- Records all telemetry
- Can override other houses
- Final judgment authority
- Confidence threshold: 70%

## Telemetry & Sovereignty Metrics

Every execution is logged to `~/timmy/logs/uni_wizard_telemetry.jsonl`:

```json
{
  "session_id": "abc123...",
  "timestamp": "2026-03-30T20:00:00Z",
  "house": "ezra",
  "tool": "git_status",
  "success": true,
  "execution_time_ms": 145,
  "evidence_level": "full",
  "confidence": 0.95,
  "sources_count": 3
}
```

Generate sovereignty report:

```python
harness = UniWizardHarness("timmy")
print(harness.get_telemetry_report())
```

## Usage Examples

### Basic Tool Execution

```python
from harness import get_harness

# Ezra analyzes repository
ezra = get_harness("ezra")
result = ezra.execute("git_log", repo_path="/path", max_count=10)
print(f"Evidence: {result.provenance.evidence_level}")
print(f"Confidence: {result.provenance.confidence}")
```

### Cross-House Workflow

```python
from router import HouseRouter

router = HouseRouter()

# Ezra reads issue → Bezalel implements → Timmy reviews
results = router.execute_multi_house_plan([
    {"tool": "gitea_get_issue", "params": {"number": 42}, "house": "ezra"},
    {"tool": "file_write", "params": {"path": "/tmp/fix.py"}, "house": "bezalel"},
    {"tool": "run_tests", "params": {}, "house": "bezalel"}
], require_timmy_approval=True)

# Timmy's judgment available in results["timmy_judgment"]
```

### Running the Daemon

```bash
# Three-house task router
python task_router_daemon.py --repo Timmy_Foundation/timmy-home

# Skip Timmy approval (testing)
python task_router_daemon.py --no-timmy-approval
```

## File Structure

```
uni-wizard/v2/
├── README.md                 # This document
├── harness.py               # Core harness with house policies
├── router.py                # Intelligent task routing
├── task_router_daemon.py    # Gitea polling daemon
└── tests/
    └── test_v2.py          # Test suite
```

## Integration with Canon

This implementation respects the canon from `specs/timmy-ezra-bezalel-canon-sheet.md`:

1. ✅ **Distinct houses** — Each has unique identity, policy, telemetry
2. ✅ **No blending** — Houses communicate via artifacts, not shared state
3. ✅ **Timmy sovereign** — Final review authority, can override
4. ✅ **Ezra reads first** — Must_read_before_write enforced
5. ✅ **Bezalel proves** — Proof verification required
6. ✅ **Provenance** — Every action logged with full traceability
7. ✅ **Telemetry** — Timmy's sovereignty metrics tracked

## Comparison with v1

| Aspect | v1 | v2 |
|--------|-----|-----|
| Houses | Single harness | Three distinct houses |
| Provenance | Basic | Full with hashes, sources |
| Policies | None | House-specific enforcement |
| Telemetry | Limited | Full sovereignty metrics |
| Routing | Manual | Intelligent auto-routing |
| Ezra pattern | Not enforced | Read-before-write enforced |
| Bezalel pattern | Not enforced | Proof-required enforced |

## Future Work

- [ ] LLM integration for Ezra analysis phase
- [ ] Automated implementation in Bezalel phase
- [ ] Multi-issue batch processing
- [ ] Web dashboard for sovereignty metrics
- [ ] Cross-house learning (Ezra learns from Timmy reviews)

---

*Sovereignty and service always.*
