Repository navigation
Description
Boris, 2026-10-07: "We will do flagship later AFTER CODE IS clean ... for now just put a
placeholder somehow ... and a TODO gh issue."
This is that issue. It replaces #17, which proposed a specific flagship (a NobsMed graph IR in,
competing report projections out) and was dropped.
The gap, stated plainly
There is no example in this repo that a stranger would be convinced by. Measured:
greeting.py 2 steps, trims whitespace. Its OWN docstring says you would never
need this library for it.
contestable.py the right SHAPE — 4 judgement-call stages, 2 strategies differing in
one — and deliberately has no score, by a test.
parallel / counter / subgraph / ladder/* teaching rungs, one concept each.
So the README's argument — a stage worth declaring is a stage worth arguing about — is made
entirely by examples that are not worth arguing about. That is the single biggest credibility gap
in the repo, and it is not a code defect.
Blocked on, deliberately
#9 (GraphImplementation + about carrying a path), #10 (GraphSpec.problem), #11
(run_count), #1 item 3 (object silently disabling a check). A flagship written on top of a
vocabulary that is about to be renamed gets rewritten; a flagship is also the worst place to
discover that about is unusable across a nesting boundary.
The criteria any candidate must satisfy
Carried over from #17, because this is the part of it worth keeping:
- the input is already a public artifact — no API key, no service, no secrets. A reader drops
a file in and runs it. - no domain to learn. An example whose domain costs 500 lines to understand teaches the
domain, not the library. - contestable in the SELECTION, not the rendering — two competent people would choose
differently and you cannot assert which is right, only measure which does better. - evaluable offline. Arm A needs no LLM; an LLM arm is optional and comes second.
What "done" looks like
One example, importable by name, shipping a Dataset and ≥2 strategies differing in exactly one
stage, whose diff_diagram() highlights that stage, and whose eval_battle(..., run_count=3)
prints three numbers per arm. Linked from the README in place of the placeholder that now sits
there.
Activity
README: say there is no flagship example, and open #24 for it (#25)
borisdev commentedon Oct 7, 2026
⭐ LEADING CANDIDATE — a workflow that finds incoherence in other workflows
Boris, 2026-10-07: "could be an AI workflow for doing a coherence check on other AI workflows
......... so super dog fooding ... sort of like instead of a coherence check we are doing a llm as
judge grader for coherence quality" — and "other developers can have option to turn on this
funny coherence checker idea anyways."
⛔ The strongest objection first, because the framing decides everything
A rubric-scored "coherence quality: 7/10" is the exact thing this library forbids. #12 says it
about this shape:
examples/contestable.pycarries a test forbidding a score for that reason, andcoherence_check()'s whole position is that every finding is a provable defect. An LLM ratingcoherence is a verdict the reader cannot check — which is what we accuse others of.
⭐ The framing that works:
coherence_check()IS the oracle, and defects are INJECTEDnot the judge of record
declaration to a model so it spots a crossed wire? Two competent people write that differently.
And it attacks something
coherence_check()has ALREADY admitted it cannot reach#1 item 1, closed as a documented boundary:
An LLM judge is the right tool for exactly that boundary. So this does not duplicate the 13 rules
— it goes after what the rules documented as out of scope. That is a far better story than
"we grade coherence."
Against this issue's own criteria
GraphSpec— data, in-repoTwo dependencies, and one is not optional
potential_incoherenceenumerated first. You cannot score "did the LLM find thedefect" without a machine-comparable name for the defect. The 30-member enum is the scoring
key, not a side quest.
rubricrefusal, usefully. That was ruled out because "a rubric belongswhere something can run it, and there is no step-level runner." This gives rubrics a home — a
graph boundary, which is where GraphSpec.problem — and who owns a brief across a boundary #10 said they would belong.
Opt-in, per Boris
The LLM arm is off by default: it needs a model, and every other example in this repo runs
with no API key. Arm A is the deterministic checker, which is also the oracle; the LLM arm is a
flag a developer turns on. That keeps the quickstart keyless and makes the comparison honest —
you are measuring the LLM against a known answer, not against another opinion.
The risk to watch
Hall of mirrors. A stranger asking "why would I want this?" does not want "to check
workflows like itself." The injected-defect framing survives that — it is a measurable claim
about finding real bugs. A rubric grader does not.
Say who this is for, in line 5 (#31)