# Operator 12 — Interpolation (Stage-0 template)

**Operator.** Interpolation: given a DAG **subsumption edge** parent P1 → child P3 with a **large
semantic gap**, propose the missing **intermediate** prime P2 such that P1 → P2 → P3 (P2 is a genus
of P3 and a species of P1). N-ary / catalog-internal: it operates on the DAG, not a full sweep.

**Pre-filter (Stage 1, deterministic).** Not a corpus sweep — the candidate set is subsumption edges
whose parent→child embedding cosine is low (a large gap where an intermediate could sit). Worklist:
`workspace/operator_search/op12_worklist.json` (61 edges at cos<0.65, 2026-07-03).

**⚠ EXPECTED SATURATION.** Interpolation was largely exhausted **reactively** during DAG construction
(project-06: "18 abstractions repeatedly needed as the missing parent/sibling"), and op-13
(cluster-without-parent, its sibling) already returned **0 new primes**. Additionally the DAG is
tight — **0** subsumption edges have cos(parent,child) < 0.5 and only 12 < 0.6 — so there is little
room for genuine intermediates. Op-12 is expected to be **saturated** (retire like op-8/13). Its
likely product is **DAG-densification flags** (the intermediate already exists but the two edges
parent→P2→P3 aren't drawn), not new primes — the same byproduct as ops 5 and 13.

**Collapse modes.** (1) **already-exists intermediate** — P2 is a real prime already in the corpus;
the finding is a missing-EDGE flag (P1→P2→P3), not a new prime. (2) **no intermediate** — the gap is
just P3 being a specialized instance of P1 with nothing genuine between; COLLAPSE. (3) **mis-parent**
— the low cosine reflects a questionable edge, not a missing intermediate; flag for edge review.

**Model tier.** Sonnet (judging whether a genuine intermediate genus exists needs the same judgment
as generalization). Small worklist → one/two batches. Doubles as a saturation check.

---

## A. The crank prompt (Stage 2 — sonnet, batched)

> You are applying INTERPOLATION to entries from a catalog of "prime abstractions." Each payload line
> is a **subsumption edge**: a PARENT prime and a CHILD prime, where the child is a special case of
> the parent but the two are semantically far apart. Your job: decide whether a genuine **intermediate**
> prime P2 belongs BETWEEN them — a prime that is a *species of the parent* and a *genus of the child*
> (parent → P2 → child), such that it fills a real conceptual gap.
>
> Output is a real prime only if the intermediate is domain-general, structurally distinct, and NOT
> already in the corpus. It is NOT:
> - an **already-existing** intermediate — if the P2 you'd name is already a corpus prime, this is a
>   missing-EDGE finding (report the slug in NEAREST, VERDICT COLLAPSE), not a new prime.
> - **no genuine intermediate** — the child is just a specialized instance of the parent with nothing
>   real between; COLLAPSE.
> - a mis-parent — if the edge itself looks wrong (child isn't really a species of parent), say so.
>
> INTERMEDIATE RULE: a valid P2 must be a genuine level BETWEEN parent and child — strictly more
> general than the child, strictly more specific than the parent, with its own anatomy. If you can't
> name a level between them, COLLAPSE.
>
> Bias toward COLLAPSE (the DAG is tight; genuine gaps are rare). For EACH edge, output EXACTLY:
>
> ```
> EDGE:      <parent> -> <child>   (copied from the payload)
> CANDIDATE: <one sentence describing the intermediate prime P2 — or NONE>
> LEVEL:     <why P2 sits strictly between parent and child — or NONE>
> NEAREST:   <slug of the closest existing prime to P2 you can name, or NONE>
> VERDICT:   NEW | COLLAPSE
> REASON:    <=12 words (COLLAPSE reasons: "exists:<slug>" | "no intermediate" | "mis-parent")>
> ```
>
> **Payload:** `parent · "parent one_liner" -> child · "child one_liner"`

## B. Collapse test
0. Alias-claim verification on any NEAREST (slug + alias map). If the proposed P2 exists → missing-edge
   flag (byproduct worklist), not a new prime. If absent AND genuinely between → Stage 4.
1. Missing-edge flags → `manifest_op12_interpolation.yaml` (DAG-densification byproduct, like op-13).
2. Deterministic slug check on any Stage-4 proposed slug.
3. §D amendment inherited (proximity to parent/child is expected).

## C. Pilot / run procedure
1. Run the crank over the 61-edge worklist (sonnet, 1-2 batches). This IS the run (small pre-filtered
   set), not a sample — and doubles as the saturation check.
2. Funnel; Stage-4 only genuine-absent-intermediate survivors.
3. SATURATION: if 0 genuine new intermediates → retire (record missing-edge flags as the byproduct).
4. Manifest + SATURATION row + stubs (if any) + runbook/memory/FINDINGS update.

## D. Notes
- Expected byproduct = DAG-densification edges (parent→existing_P2→child), adding to the op-05/op-13
  edge harvest (259 so far). Record these; they are the real value if no new primes appear.
- Mis-parent flags feed the DAG-edge review, not the prime queue.
