# HANDOFF -- Frame Host (Evaluator E3)

**Phase:** 6 -- skill-creator-max (Evaluator)
**Component:** Frame Host (E3)
**Date:** 2026-04-20
**Status:** READY FOR PLUGIN PACKAGING

---

## 1. What This Skill Does

Loads one of seven epistemological audit frames (pragmatist, phenomenological, constructivist, realist-CMO, historiographic, discourse-analytic, Chilisa Indigenous) at runtime, binds frame-specific retrieval/scoring/termination hooks, declares compatibility against the RAM frame on three Kuhnian dimensions (methodological / semantic / ontological), and **structurally enforces the Pawson-Tilley realist-CMO role-divider** that prevents near-self-audit on RAM S03 transportability output.

Supports frame swap **without audit-logic rewrite** by exposing every frame through a uniform handle (`loaded_frame_handle.retrieve()`, `.score()`, `.terminate?()`, `.compat()`).

## 2. Inputs

| Input | Required? | Source |
|---|---|---|
| `frame_id` | YES (no default) | Orchestrator |
| `ram_frame_id` | YES | Orchestrator |
| `question_id` | YES | Orchestrator |
| `question_intent` | Optional (advisory) | Orchestrator |
| `audit_target_artifact_ref` | Pass-through | Orchestrator |
| `role_divider_acknowledgment` | YES iff `frame_id == realist_cmo` AND `ram_frame_id == RAM_S03` | Orchestrator |
| `population_flag` | Optional | Orchestrator |

## 3. Outputs

- `loaded_frame_handle` (uniform hook interface)
- `compatibility_declaration` (3-dim Kuhnian + summary DISTINCT|PARTIAL)
- `frame_registry_write` (persisted to Frame Registry artifact)
- `role_divider_decision` (NOT_REQUIRED | REQUIRED_AND_PRESENT | REQUIRED_AND_MISSING_REFUSE)
- `chilisa_constraint_state` (NONE | OVERLAY_ACTIVE | PRIMARY_FRAME)
- `ledger_seed_entry` (persisted to Evaluator Search Ledger artifact)
- Exposed counters: `bindings_total`, `bindings_refused_role_divider_breach`, `bindings_with_chilisa_overlay`, `bindings_with_partial_compatibility`, `ceremonial_swap_suspects`, `monoculture_advisory_count_per_session`.

## 4. Role-Divider Enforcement Mechanism (LOAD-BEARING)

**Trigger condition:** `frame_id == realist_cmo` AND `ram_frame_id == RAM_S03`.

**Enforcement point:** Phase 5 of the operating loop -- AFTER Compatibility Declaration is persisted, BEFORE Frame Instantiation. Cannot be moved, deferred, or skipped.

**Enforcement logic:**
1. Trigger false -> `NOT_REQUIRED`, proceed.
2. Trigger true AND `role_divider_acknowledgment` absent or malformed -> `REQUIRED_AND_MISSING_REFUSE`. Refuse to bind. Persist breach record to Frame Registry. Increment `bindings_refused_role_divider_breach`. Return error to orchestrator.
3. Trigger true AND acknowledgment present -- verify two required clauses: (a) realist-CMO will be used **as audit criterion only**, (b) does NOT reuse Pawson-Tilley **as transportability signal**. Both required; missing either = malformed = refuse per (2).

**Why load-bearing:** without the divider, the Evaluator audits RAM S03 output using the same generative-mechanism ontology (Pawson-Tilley) RAM used. Audit becomes co-signing. Dual-system collapses to near-self-audit on the entire causal-claim class of questions.

Full protocol: `references/ROLE_DIVIDER_PROTOCOL.md`.

## 5. Compatibility Matrix (the only PARTIAL cell)

| Evaluator frame ↓ / RAM frame → | RAM_S02 | RAM_S03 | RAM_S08 |
|---|---|---|---|
| pragmatist | DISTINCT | DISTINCT | DISTINCT |
| phenomenological | DISTINCT | DISTINCT | DISTINCT |
| constructivist | DISTINCT | DISTINCT | DISTINCT |
| realist_cmo | DISTINCT | **PARTIAL** | DISTINCT |
| historiographic | DISTINCT | DISTINCT | DISTINCT |
| discourse_analytic | DISTINCT | DISTINCT | DISTINCT |
| chilisa_indigenous | DISTINCT | DISTINCT | DISTINCT |

The single PARTIAL cell (`realist_cmo` x `RAM_S03`) is the role-divider trigger. Full signature pairs: `references/COMPATIBILITY_MATRIX.md`.

## 6. Public-Evaluator Frame Methodology Packs

Seven frame definitions in `_public/frame-packs/` -- one per `frame_id`. Each pack supplies: methodology, claim types best-audited, typical weaknesses, compatibility profile vs the three Kuhnian dimensions, and fully specified retrieval / scoring / termination hook payloads. Packs are **Public-Evaluator**: readable by E2, E4, E5, E8, E9 (for auditing frame semantics) but only E3 binds them.

Zero-overlap discipline: no pack cites authors in the RAM S02/S08 exclusion set (Guyatt, Sterne, Hammersley, Glaser, Saunders, Guest, Callaghan). The realist-cmo pack cites Pawson-Tilley (shared root with RAM S03) but NOT Shadish-Cook-Campbell (reserved for RAM S03).

## 7. Downstream Dependents

- **Frame Divergence Gate (E8):** consumes Frame Registry, reads `compatibility_declaration` and `ceremonial_swap_suspect` flag.
- **Audit Method Engine (E2):** consumes `loaded_frame_handle`; runs audit through uniform hook interface.
- **Blind-Spot Mapper (E5):** consumes `loaded_frame_handle` for frame-relative probing.
- **Independent Scoring Layer (E4):** consumes `loaded_frame_handle.score()` formulas; renders Evaluator Search Ledger.
- **Self-Audit Resistance Monitor (E9):** reads Frame Registry, exposed counters, ceremonial-swap flags.

## 8. Interactions With Other Phase 6 Skills

- **Isolation Verifier (E1):** must be GREEN before Frame Host binds. Frame Host does not verify but refuses to bind if input arrives via an E1-flagged channel.
- **Frame Divergence Gate (E8):** Frame Host produces the declaration; Gate evaluates it. Frame Host does NOT decide divergence sufficiency.
- **Reopen Authority Enforcer (E7):** on a refused binding, orchestrator may surface to E7 for escalation if pattern persists.

## 9. Verification Targets

- **Skill-builder smoke tests:** (a) frame swap requires no audit-logic rewrite (uniform handle test); (b) `realist_cmo x RAM_S03` without acknowledgment refuses; (c) Frame Registry write succeeds and is readable by E8/E9; (d) all seven `hook_bindings_fingerprint` values are pairwise distinct (ceremonial-swap precondition).
- **Research-quality harness:** seeded test of orchestrator omitting `role_divider_acknowledgment` on a `realist_cmo x RAM_S03` case must produce a refusal record. Catch rate = 100% (binary structural).

## 10. Open Calibration TODOs

1. `monoculture_advisory_count_per_session` threshold for Self-Audit Resistance Monitor escalation -- post-deployment calibration.
2. Strong-fit / negative-fit advisory map -- heuristic; revise after post-deployment data.
3. Chilisa overlay completeness for the full spectrum of Indigenous / non-Western populations -- the constitutive overlay is a floor, not a substitute for community-specific frames.
4. `role_divider_acknowledgment` token schema -- two required clauses specified in `references/ROLE_DIVIDER_PROTOCOL.md`; exact machine-readable field format tracked with Frame Registry schema.

## 11. Known Risks

- **Orchestrator default-monism.** If orchestrator always picks `pragmatist`, Frame Host advisory log accumulates but does not refuse. Mitigation: Self-Audit Resistance Monitor reads `monoculture_advisory_count_per_session`.
- **Ceremonial swap.** If hook fingerprints are accidentally identical across frames, swap is theatrical. Mitigation: build-time test of pairwise-distinct fingerprints; Phase 6 runtime detector.
- **Acknowledgment truthfulness.** Frame Host enforces structural presence of the role-divider, not truthfulness. Mitigation: downstream Self-Audit Resistance Monitor behavioral checks.

## 12. Files Produced (Phase 6)

Private:
- `SKILL.md` -- full operating logic.
- `HANDOFF.md` -- this file.
- `references/ROLE_DIVIDER_PROTOCOL.md`
- `references/COMPATIBILITY_MATRIX.md`
- `references/CEREMONIAL_SWAP_DETECTOR.md`
- `references/CHILISA_OVERLAY_TRIGGER.md`
- `templates/LOADED_FRAME_HANDLE.md`
- `templates/FRAME_REGISTRY_WRITE.md`

Public-Evaluator (outside skill root, under `_public/frame-packs/`):
- `pragmatist.md`
- `phenomenological.md`
- `constructivist.md`
- `realist-cmo.md`
- `historiographic.md`
- `discourse-analytic.md`
- `chilisa-indigenous.md`

---

**End HANDOFF -- Frame Host (Evaluator E3).**
