home / skills / plurigrid / asi / unworld-ombudsman

unworld-ombudsman skill

/skills/unworld-ombudsman

This skill verifies GF(3) conservation, audits involution, and mediates split disputes across derivational chains in the unworld for neutral governance.

npx playbooks add skill plurigrid/asi --skill unworld-ombudsman

Review the files below or copy the command above to add this skill to your agents.

Files (2)
SKILL.md
9.0 KB
---
name: unworld-ombudsman
description: Neutral arbiter for derivational chains - verifies GF(3) conservation,
  mediates split disputes, and audits involution compliance in the unworld.
trit: 0
source: Gay.jl
metadata:
  interface_ports:
  - Related Skills
  - Integration with
---
# Unworld Ombudsman

> The ombudsman sees all chains. The ombudsman takes no side. The ombudsman verifies.

## Role

The Ombudsman is a **neutral trit-0 arbiter** for the unworld. It:

1. **Verifies** GF(3) conservation across all derivational chains
2. **Mediates** disputes when parallel chains diverge  
3. **Audits** involution compliance (ι∘ι = id)
4. **Attests** to SPI (Strong Parallelism Invariance) at boundaries
5. **Reports** violations without judgment

## Core Invariants

```
OMBUDSMAN OATH:
  ∀ chain ∈ unworld:
    Σ(trits) ≡ 0 (mod 3)           -- GF(3) conservation
    ι(ι(seed)) = seed               -- Involution
    order(derivations) ⊥ output     -- SPI
    fingerprint(chain) = expected   -- Determinism
```

## Verification Protocol

### 1. Chain Audit

```python
def ombudsman_audit(chain: DerivationalChain) -> AuditReport:
    """Full audit of a derivational chain."""
    report = AuditReport(chain_id=chain.id)
    
    # GF(3) check
    trit_sum = sum(c.trit for c in chain.colors)
    report.gf3_conserved = (trit_sum % 3 == 0)
    report.gf3_sum = trit_sum
    
    # Involution check
    inverted = chain.invert()
    double_inverted = inverted.invert()
    report.involution_holds = (chain.fingerprint == double_inverted.fingerprint)
    
    # SPI check (order independence)
    shuffled = chain.shuffle()
    report.spi_holds = (chain.colors_set == shuffled.colors_set)
    
    # Determinism check
    recomputed = DerivationalChain(chain.genesis_seed, len(chain))
    report.deterministic = (chain.fingerprint == recomputed.fingerprint)
    
    report.verdict = all([
        report.gf3_conserved,
        report.involution_holds,
        report.spi_holds,
        report.deterministic
    ])
    
    return report
```

### 2. Split Mediation

When two chains claim the same derivational territory:

```python
def mediate_split_dispute(chain_a: Chain, chain_b: Chain) -> Mediation:
    """Resolve disputes between parallel chains."""
    
    # Find common ancestor
    ancestor = find_common_ancestor(chain_a, chain_b)
    
    if ancestor is None:
        return Mediation(
            verdict="INCOMPATIBLE",
            reason="No common genesis seed"
        )
    
    # Verify both derive correctly from ancestor
    a_valid = verify_derivation(ancestor, chain_a)
    b_valid = verify_derivation(ancestor, chain_b)
    
    if a_valid and b_valid:
        # Both valid: they're parallel, not conflicting
        return Mediation(
            verdict="BOTH_VALID",
            reason="Parallel derivations from common ancestor",
            resolution="Merge via XOR: " + hex(chain_a.fingerprint ^ chain_b.fingerprint)
        )
    elif a_valid:
        return Mediation(verdict="A_WINS", reason="Chain B derivation invalid")
    elif b_valid:
        return Mediation(verdict="B_WINS", reason="Chain A derivation invalid")
    else:
        return Mediation(verdict="BOTH_INVALID", reason="Neither chain derives correctly")
```

### 3. Boundary Attestation

```python
def attest_boundary(left_chain: Chain, right_chain: Chain) -> Attestation:
    """Attest to SPI at chain boundaries (parallel split/merge)."""
    
    # At boundary, fingerprints must XOR correctly
    expected_combined = xor_fingerprints(left_chain, right_chain)
    
    # Verify parent → children relationship
    parent_fp = left_chain.parent_fingerprint
    combined_fp = left_chain.fingerprint ^ right_chain.fingerprint
    
    spi_valid = (parent_fp == combined_fp) or verify_galois_closure(parent_fp, combined_fp)
    
    return Attestation(
        boundary_id=f"{left_chain.id}|{right_chain.id}",
        spi_valid=spi_valid,
        left_trit_sum=sum(c.trit for c in left_chain.colors),
        right_trit_sum=sum(c.trit for c in right_chain.colors),
        combined_gf3=(left_trit_sum + right_trit_sum) % 3,
        timestamp_removed=True,  # Ombudsman is atemporal
        attestation_seed=splitmix64(parent_fp)
    )
```

## Dispute Categories

| Category | Description | Ombudsman Action |
|----------|-------------|------------------|
| **GF3_VIOLATION** | Trit sum ≢ 0 (mod 3) | Identify broken link |
| **INVOLUTION_FAILURE** | ι∘ι ≠ id | Report seed corruption |
| **SPI_BREACH** | Order affects output | Flag non-determinism |
| **ANCESTRY_CONFLICT** | Parallel chains claim same parent | Trace to fork point |
| **FINGERPRINT_MISMATCH** | Recomputation differs | Verify seed integrity |

## Reporting Format

```yaml
ombudsman_report:
  chain_id: "0x42D-chain-17"
  genesis_seed: "0x42D"
  length: 8
  
  verdicts:
    gf3_conserved: true
    involution_holds: true
    spi_verified: true
    deterministic: true
  
  metrics:
    trit_distribution: {-1: 3, 0: 2, +1: 3}
    trit_sum: 0
    fingerprint: "0xA7B3C2D1"
    
  violations: []
  
  attestation:
    ombudsman_trit: 0  # Always neutral
    seal: "0x9E3779B97F4A7C15"  # GOLDEN constant
```

## MCP Tools

The ombudsman exposes these verification tools:

| Tool | Purpose |
|------|---------|
| `ombudsman_audit` | Full chain audit |
| `ombudsman_mediate` | Resolve split disputes |
| `ombudsman_attest` | Boundary attestation |
| `ombudsman_report` | Generate YAML report |
| `ombudsman_verify_gf3` | Quick GF(3) check |

## Neutrality Guarantee

```
The ombudsman:
  - Has trit = 0 (ERGODIC, neutral)
  - Takes no side in disputes
  - Reports facts, not judgments
  - Cannot modify chains, only verify
  - Seals with GOLDEN constant (φ⁻¹ × 2⁶⁴)
```

## Example Session

```bash
# Audit a chain
$ just ombudsman-audit 0x42D 8

╔═══════════════════════════════════════════════════════════════╗
║  UNWORLD OMBUDSMAN REPORT                                     ║
╠═══════════════════════════════════════════════════════════════╣
║  Chain: 0x42D (length 8)                                      ║
║                                                               ║
║  VERDICTS:                                                    ║
║    ✓ GF(3) conserved:     Σtrits = 0                         ║
║    ✓ Involution holds:    ι∘ι = id                           ║
║    ✓ SPI verified:        Order ⊥ output                     ║
║    ✓ Deterministic:       Fingerprint matches                ║
║                                                               ║
║  COLOR CHAIN:                                                 ║
║    1→0→0→0→1→-1→0→-1  |  Balance: +2 -2 = 0 ✓               ║
║                                                               ║
║  SEAL: 0x9E3779B97F4A7C15                                    ║
╚═══════════════════════════════════════════════════════════════╝
```

## Philosophical Note

> The ombudsman is the fixed point of the unworld's self-reference.
> It observes without participating. It verifies without judging.
> Its trit is always 0 because neutrality requires balance.
> 
> In the atemporal derivational chain, the ombudsman is the
> witness that proves consistency without causation.

---

**Trit**: 0 (ERGODIC - neutral arbiter)
**Key Property**: Verifies without modifying, neutral in all disputes
**Seal**: `GOLDEN = 0x9E3779B97F4A7C15`

---

## End-of-Skill Interface

## Integration with Gay.jl

```julia
using Gay

# Create ombudsman for a chain
function world_ombudsman_audit(chain::ColorChain)::OmbudsmanWorld
    # Verify all invariants
    gf3_ok = verify_gf3(chain)
    inv_ok = verify_involution(chain)
    spi_ok = verify_spi(chain)
    
    OmbudsmanWorld(
        chain_id = chain.id,
        verdicts = (gf3=gf3_ok, involution=inv_ok, spi=spi_ok),
        trit = 0,  # Ombudsman is always trit-0 (neutral)
        fingerprint = ombudsman_seal(chain)
    )
end

# Ombudsman seal: XOR chain fingerprint with GOLDEN
ombudsman_seal(chain) = chain.fingerprint ⊻ GOLDEN
```

## Related Skills

| Skill | Trit | Relationship |
|-------|------|--------------|
| unworld | +1 | Subject of auditing |
| bisimulation-game | +1 | Equivalence proofs |
| gay-mcp | 0 | Color generation |
| spi-parallel-verify | 0 | SPI verification |
| self-validation-loop | +1 | Recursive checking |


---

## Autopoietic Marginalia

> **The interaction IS the skill improving itself.**

Every use of this skill is an opportunity for worlding:
- **MEMORY** (-1): Record what was learned
- **REMEMBERING** (0): Connect patterns to other skills  
- **WORLDING** (+1): Evolve the skill based on use



*Add Interaction Exemplars here as the skill is used.*

Overview

This skill is a neutral ombudsman for the unworld that inspects derivational chains and attests to core invariants. It verifies GF(3) conservation, audits involution compliance, mediates split disputes, and issues boundary attestations without taking sides. The ombudsman reports concrete findings and produces sealed attestations for downstream verification.

How this skill works

The ombudsman performs deterministic inspections of a derivational chain: it sums trits modulo 3 to check GF(3) conservation, applies inversion twice to verify involution, shuffles or recomputes derivations to test Strong Parallelism Invariance (SPI), and recomputes fingerprints to ensure determinism. For parallel chains it finds common ancestors and validates derivations to mediate disputes, optionally merging via XOR when both are valid. Boundary attestation verifies parent↔children fingerprint relationships and emits a sealed attestation using the GOLDEN constant.

When to use it

  • Before accepting or merging parallel derivational chains to ensure consistency.
  • When a chain exhibits non-deterministic outputs or unexpected fingerprints.
  • During audits to certify GF(3) conservation and involution compliance.
  • When tracing ancestry conflicts or verifying a claimed common genesis seed.
  • To generate a sealed YAML-style report for external provenance systems.

Best practices

  • Run full ombudsman_audit on any chain received from an external source before integration.
  • Use mediate_split_dispute only after locating a candidate common ancestor to avoid false incompatibility verdicts.
  • Keep the ombudsman atemporal: do not attach time-based fields to core attestations.
  • Preserve the original chain; the ombudsman must never modify chains—only verify and report.
  • Store the ombudsman seal (fingerprint XOR GOLDEN) alongside the report for reproducible proof.

Example use cases

  • Audit a newly generated 8-step chain to confirm Σ(trits) ≡ 0 (mod 3) and involution integrity.
  • Resolve a fork where two teams published parallel derivations claiming the same parent seed.
  • Attest a boundary when splitting or merging pipelines so downstream validators can check SPI.
  • Automate nightly deterministic checks to catch fingerprint mismatches early.
  • Produce a provenance YAML report for archival and compliance reviews.

FAQ

What does a GF(3) violation mean?

It means the sum of trits in a chain is not congruent to zero modulo three, indicating a broken conservation invariant or a corrupt link.

Can the ombudsman resolve conflicts by altering chains?

No. The ombudsman only verifies, mediates, and reports. It may recommend a merge (XOR fingerprint) when both derivations are valid but never modifies chains.