Kıyas
Docs

Kıyas Usage Guide

1. When to reach for it

Kıyas is for the moment a line of work stops moving: the obvious experiments are done, the obvious framings are exhausted, and what is left is either “try harder” or “try elsewhere”. It is not a brainstorming toy — it costs more per idea than free association, and that cost is the point.

Reach for it when:

Do not reach for it to fill a slide with ten ideas. It will refuse to fill a quota, and it should.

2. The two modes

Generation. You are stuck. The skill fixes the problem in one sentence, picks at least three different operators, and returns 3–6 candidates in the output contract. Diversity comes from operator choice, not from asking for more analogies.

Distillation. You already have a pile of raw ideas. Each is pushed through the same contract, tiered, flagged, and ordered by criticality × (information value / cost).

3. Hard rules (summary — G1–G15 in the schema)

  1. Illet non-empty. An idea whose illet cannot be named was not generated.
  2. Breaking point present before an idea can be a hypothesis candidate.
  3. A superiority claim without a prior-art search stays speculative, and the strongest relative must be in the comparison set with a discrimination test.
  4. A test that adds capacity carries a matched-budget control arm, or its positive result cannot be attributed to the targeted mechanism.
  5. Every threshold proposal names its arbiter — the judge that returns the verdict (runtime / instrument / third_party / author / none). Self-judged stays capped; unjudged stays speculative.
  6. The AD1–AD6 sweep is recorded, including explicit “clear”. AD1/AD2/AD4 force a tier; AD5/AD6 require a caveat to travel with the seed.
  7. The batch records its discards — what was weighed and refused, and why. Required even when empty, in which case the batch says what it considered. A list of survivors alone cannot show that anything was weighed.
  8. A hypothesis candidate carries the cheapest refutation that would kill it. If no test can be designed, the idea stays speculative.
  9. A hypothesis candidate has had its prior art searched. “Not searched” is honest, but it caps the idea at speculative.

  10. The arbiter block does not contradict itself: a self-judged or unjudged arbiter cannot also be independent of the author.
  11. The batch names the refuted-patterns export it consulted. “Not consulted” is honest; silence makes every AD4 line unverifiable.

  12. The batch records how it was drawn: the seed ("fresh" for an unpinned draw), the host, and optionally an inputs digest. A pinned seed does not make a batch reproducible — the generator is a language model. What the record buys is comparability: two batches carrying the same digest were drawn from the same problem and the same refuted-patterns export, so a difference between them is a difference in the draw and not in the question.

  13. The batch marks every pair of hypothesis candidates: independent, contradicting (then name the experiment that separates them), resting on a shared premise, one depending on the other (say which), or settled by the same test. Every other rule here judges ONE seed, so a property that lives between two of them is invisible by construction — and it is the property that says what the batch is worth. Six seeds on one premise are one bet with six faces. The number that follows is printed with the verdict: N candidates, K independent bets. Batches declaring seed schema 1.5+.

  14. The batch may record what it cost (batch.cost_actual), and if it does, it names the instrument that produced the numbers (“the model estimated it” is not one), the window, the attribution and a baseline kind — none is honest and forbids presenting the batch as evidence that generating this way is cheaper. The ratio it refuses is cost per seed: that pays for quota filling, and the cheapest way to improve it is to generate more and think less. Divide by seeds that survived testing in a Mizan registry instead — a denominator the generator cannot inflate. Seed schema 1.6+.

  15. A warning the batch accepts (batch.accepted_warnings) states why: why the warning is right about what it points at, and why the batch is still correct as written. An acceptance with no reason is indistinguishable from silence. The accepted warning is still printed, marked accepted — an exemption that hid what it exempts would be worse than the halt it replaced.

Seven further checks warn without blocking (--strict makes them fail): a numeric threshold with no judge behind it, a batch where every seed is a hypothesis candidate, a symmetry check naming no seed, a scale transfer with no scope caveat, a pinned seed with no inputs digest, a sweep run against a partial refuted-patterns export (it may say “no match found”, never “clear”), and an accepted warning that no longer fires (an exemption that outlived its condition). Each has legitimate exceptions, so the tool says look, not halt — a single blocking channel teaches you to write around the rules.

4. Reading the tiers

Tag Means What to do with it
[S] Speculative Keep it, do not act on it. Note what is missing.
[H-aday] Hypothesis candidate Paste into a Mizan registry as a preregistration.
[NK] Notation-suspect Run the unit/basis/instrument change before anything else.
[GB] Fed-back A relative of something already refuted. Check kinship deliberately.

Nothing except [H-aday] should enter a registry.

5. Common mistakes

6. Wiring it to Mizan

Kıyas stops at the seed. Mizan locks thresholds, runs the audit, promotes or refutes, and exports refuted patterns back. Concretely:

# before generating: know what is already dead
python ../Mizan/tools/mizan_export_refuted.py registry.yaml -o refuted-patterns.yaml

# after generating: check the batch against those constraints
python tools/kiyas_validate.py --refuted refuted-patterns.yaml seeds.yaml

# after the registry decides: record it, wins and losses
python tools/kiyas_ledger.py ledger/kiyas-ledger.yaml

The ledger is where the project’s own claim gets tested. Until it has entries and a control arm, that claim is speculative and the tooling says so.