why-not: add a first-class 'ambiguity blocking' explanation type #12

Closed
opened 2026-07-16 04:09:38 +00:00 by hugooconnor · 0 comments
hugooconnor commented 2026-07-16 04:09:38 +00:00 (Migrated from codeberg.org)

Summary

why-not has no first-class explanation for ambiguity blocking (a literal that is -D because supported rules and their opposers mutually block). It returns type: "undetermined" and self-describes the gap.

Repro

Symmetric mutual attack (lab-origin⇒¬zoonotic, zoonotic⇒¬lab), both supported, no prefer — both -D:

$ elephant why-not lab-origin -t rootclaim --json
"blocked_by": [
  { "rule": "r-eng-lab", "blocking_rule": null, "missing": [],
    "type": "undetermined",
    "explanation": "Body satisfied but no explicit blocker was identified in the current reasoning results; this usually means ambiguity blocking or a gap in why-not diagnostics" }
  ...],
"would_derive": "r-noprog-lab"

Expected

A dedicated type, e.g. type: "ambiguity", that names the opposing rule(s)/literal responsible for the block (here: the (not lab-origin) support via r-zoo-not-lab, and vice-versa). Ambiguity blocking is the intended honest state for an un-adjudicated conflict, so it deserves a precise explanation rather than an "undetermined / diagnostics gap" fallthrough.

Impact

The most interesting case for this tool (why is a contested hypothesis blocked?) yields the least informative answer.

Env

elephant v0.1.2 (HEAD 4d58f06), macOS. FLF two-agent Rootclaim run.

### Summary `why-not` has no first-class explanation for **ambiguity blocking** (a literal that is `-D` because supported rules and their opposers mutually block). It returns `type: "undetermined"` and self-describes the gap. ### Repro Symmetric mutual attack (`lab-origin`⇒¬`zoonotic`, `zoonotic`⇒¬`lab`), both supported, no `prefer` — both `-D`: ``` $ elephant why-not lab-origin -t rootclaim --json "blocked_by": [ { "rule": "r-eng-lab", "blocking_rule": null, "missing": [], "type": "undetermined", "explanation": "Body satisfied but no explicit blocker was identified in the current reasoning results; this usually means ambiguity blocking or a gap in why-not diagnostics" } ...], "would_derive": "r-noprog-lab" ``` ### Expected A dedicated type, e.g. `type: "ambiguity"`, that names the opposing rule(s)/literal responsible for the block (here: the `(not lab-origin)` support via `r-zoo-not-lab`, and vice-versa). Ambiguity blocking is the *intended* honest state for an un-adjudicated conflict, so it deserves a precise explanation rather than an "undetermined / diagnostics gap" fallthrough. ### Impact The most interesting case for this tool (why is a contested hypothesis blocked?) yields the least informative answer. ### Env elephant v0.1.2 (HEAD 4d58f06), macOS. FLF two-agent Rootclaim run.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
anuna-research/elephant#12
No description provided.