# Operator 07 — Perspective Inversion (Stage-0 template)

**Operator.** Perspective inversion: take a prime P — which is typically read from ONE seat of a
relation — and **read the same structure from the complementary seat**, asking whether that other
seat's reading is its own distinct prime. Run as a **SINGLE pass** over the corpus (not sub-flavors):
the move is always the same — identify the relation/viewpoint P sits in, swap to the complementary
role, and check whether that role is an unnamed prime. The runbook's "sender/receiver ·
principal/agent · predator/prey" are illustrative relation-types, not separate instruction blocks.

The characteristic non-results are: **already-both-seats-named alias** (the complementary seat is
already its own prime — signaling↔screening, principal↔agent, compellence↔deterrence), a
**self-symmetric fixed point** (P read from the other seat is P itself — a symmetric/mutual
relation), and **non-relational trivial** (P has no seat/viewpoint structure to invert).

**⚠ EXPECTED SATURATION.** Verified at build: the corpus already names BOTH seats of every canonical
relational pair (`signaling` + `screening`; `principal_agent`/`agency_problem`; `moral_hazard`,
`adverse_selection`, `information_asymmetry`; `coercion` covering `compellence`+`deterrence`;
`reciprocity`, `exchange`, `theory_of_mind`) AND the meta-primes for perspective-taking itself
(`perspective`, `frame_of_reference`, `figure_ground`, `duality`, `complementarity`, `inversion`,
`bottom_up_perspectives`/`top_down_perspectives`). Op-07 also overlaps dualization flavor 1b
(opposing-force). So op-07 is **expected to be saturated** (like op-8, op-13). The pilot doubles as a
saturation check; a near-zero yield is the likely — and legitimate — outcome (companion §6: the
relational core is nearly counted).

**What this template is for.** Stage-0 of the pipeline. Inherits op-01 v4.2 / op-02 v1.1 machinery
wholesale (step-0 alias verification, retrieval-grounded cheap check, protection rule, deterministic
slug check, INPUT-line contract + canonical-slug-set reconciliation, articulated-candidate rescue)
and adds the **SEAT rule** (§A), the perspective analog of op-06's MODAL / op-04's EXTENT.

**Model tier (to be confirmed by pilot).** Perspective inversion needs judgment (is P relational?
is the complementary seat already named? is the relation symmetric?) — likely **sonnet** like
op-04/06 (haiku failed the judgment-heavy axes). Pilot runs sonnet Stage 2 + a 15-prime haiku probe.
Per the op-02 keystone the Stage-2 verdict is advisory.

**Status 2026-07-03 (v1 — BUILT, pilot pending).** Given the strong saturation prior, the pilot is
primarily a saturation check: if yield ≈ 0, retire op-07 without a full sweep (like op-8), capturing
any genuine gap it surfaces. Cheapest operator either way (single pass ≈ 1,325 apps, and likely
retired at pilot ≈ 0.16M).

---

## A. The crank prompt (Stage 2 — cheapest capable model, batched; single pass)

> You are applying a single, precise transformation called **PERSPECTIVE INVERSION** to entries from
> a catalog of "prime abstractions" — domain-general structural patterns of thought. Many primes are
> read from ONE seat of a relation (the sender's, the principal's, the attacker's, the observer's).
> Perspective inversion reads the SAME structure from the COMPLEMENTARY seat and asks whether that
> other seat's reading is a DISTINCT prime.
>
> Steps: (1) identify the relation or viewpoint P sits in and which seat P is read from; (2) swap to
> the complementary seat (receiver ↔ sender, agent ↔ principal, prey ↔ predator, observed ↔
> observer, follower ↔ leader, defender ↔ attacker, buyer ↔ seller); (3) decide whether that
> complementary reading is its own prime.
>
> A valid output is itself a **prime**: domain-general, structurally distinct, with its own anatomy
> from the other seat. It is NOT:
> - a **self-symmetric fixed point** — the relation is symmetric/mutual, so the other seat's reading
>   is P itself (a symmetric game, a mutual exchange, reciprocity). Output `VERDICT: FIXED_POINT`.
>   Real, useful result, NOT a failure.
> - **non-relational trivial** — P has no seat/viewpoint to invert (a pure structural property like
>   symmetry or closure); there is no "other side." (COLLAPSE — trivial_perspective.)
> - a seat the catalog already names under a slug you can name (COLLAPSE — alias; report the slug in
>   NEAREST — VERIFIED downstream; if you cannot name a specific slug, verdict is NEW). The catalog
>   ALREADY HAS both seats of the canonical pairs: signaling + screening, principal_agent/agency_problem,
>   moral_hazard, adverse_selection, information_asymmetry, coercion (compellence+deterrence),
>   reciprocity, exchange, theory_of_mind, plus perspective, frame_of_reference, figure_ground,
>   duality, complementarity. So MOST inputs will alias or be fixed points — **bias HARD toward
>   COLLAPSE/FIXED_POINT.**
> - a narrow domain instance.
>
> **SEAT RULE (load-bearing — the perspective analog of a sibling test): a genuine inverted prime
> must name a DISTINCT complementary seat with its own structure NOT already in the catalog** — the
> other role faces a different problem (the receiver's inference problem vs the sender's signaling
> problem) and that reading is an unnamed prime. Name the seat and its distinct structure in the SEAT
> line. If the complementary seat is already named (screening, agent, deterrence, …) → COLLAPSE
> alias. If the relation is symmetric → FIXED_POINT. If P is not relational → COLLAPSE trivial.
>
> Bias HARD toward COLLAPSE/FIXED_POINT (this region is heavily covered). If you CAN name a genuine
> unnamed complementary seat, write it in CANDIDATE and prefer NEW; a blank CANDIDATE marks a true
> fixed point or trivial. For EACH input below, output EXACTLY this contract and nothing else:
>
> ```
> INPUT:     <slug, copied from the payload line>
> CANDIDATE: <one sentence, domain-stripped, describing the complementary-seat prime — or NONE>
> SEAT:      <the distinct complementary seat + its structure, not already named — or NONE>
> NEAREST:   <slug of the closest existing prime you can name, or NONE>
> VERDICT:   NEW | FIXED_POINT | COLLAPSE
> REASON:    <=12 words>
> ```
>
> **Payload:** `P.slug` · `P.one_liner` · `P.core_idea` (~2 sentences) · `P.structural_signature`

**Batching.** ~44 payloads/batch, INPUT-line contract, single pass, instruction constant. Reconcile
against the canonical slug set. Stage-2: no tools/search — verified downstream.

---

## B. Collapse test (inherits op-02 v1.1 machinery; perspective specifics noted)

0. **Alias-claim verification (run FIRST).** Slug + alias map lookup, then one_liner embedding
   screen. Exists → alias COLLAPSE. Absent AND no prime within alias distance → clean-gap → Stage 4.
1. **Self-symmetric fixed-point collapse — audit signal.** `VERDICT: FIXED_POINT` → append to
   `workspace/operator_search/audit_perspective.jsonl` `{input, operator: "07_perspective_inversion",
   source, reason}`. Maps the corpus's symmetric/non-relational primes.
2. **Alias collapse (complementary seat already in corpus).** As op-02 §B.2: lexical, then
   retrieval-grounded cheap check. Defanged labels: `trivial_perspective` (no seat to invert) /
   `domain_instance`. A genuine complementary-seat prime whose base is the nearest corpus entry is
   NOT `trivial_perspective` just because it references its base — the discriminator is the SEAT line.
3. **Protection rule (v4/v4.1).** No kill retires a candidate's last route if ≥2-convergent or
   manifest-known.
4. **Articulated-candidate rescue (v1.1).** Trust `trivial_perspective` COLLAPSE ONLY when
   `CANDIDATE: NONE` AND `SEAT: NONE`. Substantive CANDIDATE stamped trivial → Stage 4.
5. **Deterministic slug-existence check (v4.2)** on every Stage-4 proposed SLUG.

**Calibration target (pilot, corpus-state-aware). Zero silent deaths.**
- `signaling` → complementary seat is `screening` (PRESENT) → verified alias COLLAPSE (balanced-
  granularity confirmation).
- `reciprocity`, `exchange`, `coordination` → symmetric → FIXED_POINT (audit rows).
- `symmetry`, `closure` → non-relational → COLLAPSE trivial_perspective.

---

## C. Few-shot calibration set (v1)

**Exemplar A — alias (both seats named) — SOLVED:**
```
INPUT:     signaling · "a costly action that credibly reveals hidden quality to an observer" · [sender emits costly signal]
CANDIDATE: NONE
SEAT:      NONE
NEAREST:   screening
VERDICT:   COLLAPSE
REASON:    the receiver's seat (eliciting hidden info) is already named screening (alias)
```

**Exemplar B — FIXED_POINT (symmetric relation) — SOLVED:**
```
INPUT:     reciprocity · "returning like for like in an ongoing relationship" · [mutual, symmetric exchange]
CANDIDATE: NONE
SEAT:      NONE
NEAREST:   reciprocity
VERDICT:   FIXED_POINT
REASON:    symmetric relation — the other seat reads identically (self-symmetric)
```

**Exemplar C — trivial (non-relational) — SOLVED:**
```
INPUT:     symmetry · "invariance under a transformation" · [group action]
CANDIDATE: NONE
SEAT:      NONE
NEAREST:   NONE
VERDICT:   COLLAPSE
REASON:    no seat/viewpoint to invert — not a relation, trivial_perspective
```

**Exemplar D — NEW (genuine unnamed complementary seat) — SOLVED (illustrative shape):**
```
INPUT:     a prime read from the acting seat of an asymmetric relation whose OTHER seat has its own unnamed problem-structure (illustrative)
CANDIDATE: The complementary role's distinct problem — reading, anticipating, or responding to the first role's move — with its own anatomy the catalog does not name.
SEAT:      the passive/receiving seat, facing an inference/response problem structurally unlike the acting seat's
NEAREST:   NONE
VERDICT:   NEW
REASON:    complementary seat is a distinct unnamed prime
```
(Do not force this — verified at build that the canonical pairs are ALL already both-seats-named;
genuine NEWs will be rare.)

---

## D. Pilot procedure (v1) — DOUBLES AS A SATURATION CHECK

1. **Sample.** Frozen `../pilot_sample.jsonl` (53 rows). Contains relational statics: cooperation,
   coupling, top_down_perspectives, layered_coordination_oversight, auction_theory, externality,
   decision.
2. **Stage 2 on sonnet** (single pass over the sample) + a **15-prime haiku probe**.
3. **Stage 3–4** with the §B machinery; sonnet Stage-4 STRONG-only (§D amendment), frontier shortlist.
4. **Fixed-point handling:** every FIXED_POINT → audit row. Report the count.
5. **SATURATION CHECK:** if Stage-4 yields ≈0 genuine domain-general holds → **retire op-07 without a
   full sweep** (record as saturated, like op-8/op-13), capturing any genuine gap surfaced. If ≥1
   genuine hold, run the single-pass full sweep (~1,325 apps).
6. **Decision gate (inherits op-01 v4):** zero silent deaths + acceptable cost. Report to owner with
   the saturation finding.

**§D AMENDMENT (mandatory for op-07 Stage 4 — inherited).** When the complementary seat is absent,
the input is the nearest corpus entry — NOT evidence of trivial. Discriminator is the SEAT line.

---

## E. Notes & watch-items

- **Op-07 is expected to be saturated** — the relational/perspective core is nearly counted (both
  seats of the canonical pairs already named). Treat primarily as an AUDIT + saturation checkpoint.
- **Overlap with dualization 1b (opposing-force).** Perspective inversion of an adversarial relation
  (attacker↔defender) borders 1b's opposing-force. Convergence is signal; log the overlap.
- **The likely genuine gaps, if any:** asymmetric relations where only the acting seat is named and
  the receiving seat faces a genuinely distinct, unnamed problem. Verify hard at Stage 4 — most will
  turn out to be already named (screening, agent, deterrence) or symmetric.
- **Domain-specific finds get stubs too** (standing convention) — but expect few/none.
- **Second op-02 keystone:** rank Stage-4 survivors by convergence + canonical-name; auto-Tier-B the
  single-route "other-side-of-P" coinages.
