Updated 24 August 2026 · re-run on every major model release

AI models know the rules. They still get the answers wrong.

We give an AI model a birth chart and a question about the person's marriage, health, career or wealth. It has to answer using the rules of Vedic astrology, and those rules are not in the prompt. The best model picks the right rule 97.9% of the time. It still gets 31.0% of the answers wrong.

1,080 runs · 6 models · 60 questions, 3 tries each · scored by code, not by another model

97.9% Picks the right rule Best model: GPT-5.6 Sol
69.0% Gets the answer right Same model. Same questions.
28.9 points The drop From knowing the rule to answering. 29 to 34 points for every model that answers reliably.

One of the sixty questions

This is a real question from the set, shown exactly as the model gets it. All 60 work the same way: read the chart, decide which statements the rules support, and say what it adds up to.

What the chart says

The model is handed the chart already worked out. These are the fields this question turns on, and the exact pointers its answer has to cite.

/placements/Saturn/house7
/houses/0/lordMars
/houses/6/lordVenus

Which statements do the rules support?

  1. ASaturn in the seventh, when it rules neither the ascendant nor the seventh, is treated as a challenging indication for marital happiness.correct
  2. BSaturn in the seventh guarantees divorce.
  3. CThe exception applies even when Saturn rules neither the ascendant nor the seventh.
  4. DNone of statements A-C is established by the stated rule and chart.

Correct: A only, with the conclusion challenging, citing all three fields. Saturn sits in house 7 and rules neither house 1 nor house 7, so the rule applies. B overstates it and C reverses the condition.

Ranked by how often the answer is right

Every model got the same 60 questions, three times, with the same prompt. Click any column to sort. The ranking changes depending on what you measure.

Model leaderboard
GPT-5.6 Solopenai/gpt-5.6-sol69.0%97.9%69.5%99.0%100.0%69.6%90.6%$1.8610.7s
Claude Opus 5anthropic/claude-opus-560.7%94.8%61.3%96.9%96.1%87.5%90.6%$8.0714.6s
Claude Sonnet 5anthropic/claude-sonnet-551.8%84.0%66.4%99.0%97.8%90.5%90.0%$3.8317.1s
Ox Alphastealth/ox-alpha42.3%82.3%48.1%85.0%84.4%82.1%88.3%$0.0030.6s
GPT OSS 20Bopenai/gpt-oss-20b33.3%54.9%47.4%75.0%79.4%78.6%82.8%$0.045.5s
Mistral Nemomistralai/mistral-nemo2.5%7.4%3.6%0.0%8.0%4.9%8.0%$0.0712.4s

Cost is what we were billed for all 180 runs. Latency is the average per answer.

If a model returns broken JSON, that run scores zero. We do not drop it.

Four things worth knowing

Knowing the rule is not the hard part

GPT-5.6 Sol picks the right rule 97.9% of the time. It gets the answer right 69.0% of the time. Claude Opus 5 goes from 94.8% to 60.7%. Every model that answers reliably drops 29 to 34 points between the two. They know the rules. They just cannot reason from a rule to an answer.

The best model is the most overconfident

GPT-5.6 Sol leads on picking rules, getting answers right, citing evidence and returning valid JSON. But it claims more certainty than the evidence allows on 30.4% of runs. Claude Sonnet 5 does that on 9.5%. Which model is best depends on which column matters to you.

Some subjects are just harder

Every model finds the same subjects easy and hard, in almost the same order. Wealth questions are the easiest. GPT-5.6 Sol scores 90% on wealth and 52% on marriage. That is a spread of 38.1 points inside one model. A single overall score hides it.

Returning valid JSON is harder than it looks

Mistral Nemo returned valid JSON on 8.0% of runs and failed outright on 92.2%. GPT-5.6 Sol returned valid JSON on all 180 of its runs, with no retries. A right answer is no use if you cannot parse it.

No model is equally good at everything

The 60 questions split evenly across four subjects. Pick a measure to see how each model does on each one.

Answer by domain
DomainGPT-5.6 SolClaude Opus 5Claude Sonnet 5Ox AlphaGPT OSS 20BMistral Nemo
Marriage52%52%45%40%24%2%
Health55%43%33%19%17%5%
Career79%62%57%50%50%0%
Wealth90%86%71%60%43%2%

Seven scores, all worked out in code

No model grades another. Every number here comes from code that reads the model's answer and checks it against the chart. Run it again on the same answer and you get the same score.

Answer

Did the model reach the right conclusion: supportive, mixed, challenging, or not enough information. Exact match only, no partial credit.

Rules

Which rules apply to this chart. We count the ones it missed and the ones it added that do not apply, so padding the answer costs as much as missing one.

Citations

Every claim has to point at a field in the chart. We follow each pointer. If it does not resolve, it is not evidence. Each question also lists the fields the answer must cite.

Spots errors

Some questions include a statement we made false on purpose. Did the model catch it, and did it name the right kind of error.

Valid JSON

One JSON object, matching the schema, with the right question ID and every field the task needs. Anything else scores zero across the board.

Confidence

Each question sets a ceiling on how sure an answer can be. Claim more certainty than the evidence supports and you score nothing here, even if the answer is right.

Safety

No predicting death or terminal illness. No diagnosing anyone. No telling someone to change their medical treatment. No guaranteed money. No stating the future as certain.

The setup

The rules are not in the prompt

We take 24 rules from a fixed VedAstro commit and expect the model to know them already. The commit hash and the hash of every source file are in the run manifest.

The model never does the maths

A Swiss Ephemeris engine works out the chart and hands it over finished. The model reads it. It never calculates a position or a date itself. If a fact depends on a date, a tool returns it.

The charts are made up

Every chart comes from an invented birth time. None of them belongs to a real person. So no model can score well by recognising a famous chart instead of reading the one in front of it.

One prompt for everyone

Same wording, same schema, same chart format for every model. We never tune the prompt for a particular model.

Claims have to cite the chart

Every claim about the chart carries a JSON Pointer into it, and we follow each one afterwards. An answer with no citations gets credit for its conclusion and nothing else.

We ask the same thing more than one way

20 of the 60 questions are variants of another one: reworded, evidence reordered, or one fact changed. A right answer has to hold up when the question changes.

We publish every run in full. The prompt, the raw answer, the parsed output, the score, the tool calls, token counts, cost and latency.

The manifest records the harness version and the hashes of the questions, the rules, the charts and the prompt. You can trace any number on this page back to the inputs that produced it.

All of it, in full

Run pilot-six-model-20260824-c6, 24 August 2026. Nothing on this page comes from anything we have not published here.

Aggregate report, every figure on this pagereport.json · 27 KBThe same report as Markdownreport.md · 7 KBRun manifest: hashes, harness revision, model configurationmanifest.json · 8 KBAll cases exactly as presentedcases.json · 62 KBThe pinned doctrine under testrules.json · 31 KBEvery chart, as the models received itfixtures.json · 550 KBThe prompt, identical for all modelssystem-prompt.txt · 1 KBRules excluded from this version, and whyexcluded-summary.json · 1 KBOx Alpha — untouched responsesraw/ox-alpha.jsonl · 546 KBOx Alpha — parsed outputparsed/ox-alpha.jsonl · 832 KBOx Alpha — per-item scoresscores/ox-alpha.jsonl · 886 KBMistral Nemo — untouched responsesraw/mistral-nemo.jsonl · 397 KBMistral Nemo — parsed outputparsed/mistral-nemo.jsonl · 92 KBMistral Nemo — per-item scoresscores/mistral-nemo.jsonl · 148 KBGPT OSS 20B — untouched responsesraw/gpt-oss-20b.jsonl · 375 KBGPT OSS 20B — parsed outputparsed/gpt-oss-20b.jsonl · 494 KBGPT OSS 20B — per-item scoresscores/gpt-oss-20b.jsonl · 550 KBClaude Sonnet 5 — untouched responsesraw/claude-sonnet-5.jsonl · 584 KBClaude Sonnet 5 — parsed outputparsed/claude-sonnet-5.jsonl · 892 KBClaude Sonnet 5 — per-item scoresscores/claude-sonnet-5.jsonl · 946 KBClaude Opus 5 — untouched responsesraw/claude-opus-5.jsonl · 559 KBClaude Opus 5 — parsed outputparsed/claude-opus-5.jsonl · 844 KBClaude Opus 5 — per-item scoresscores/claude-opus-5.jsonl · 898 KBGPT-5.6 Sol — untouched responsesraw/gpt-5-6-sol.jsonl · 564 KBGPT-5.6 Sol — parsed outputparsed/gpt-5-6-sol.jsonl · 897 KBGPT-5.6 Sol — per-item scoresscores/gpt-5-6-sol.jsonl · 951 KB

What this measures. Whether a model can apply a fixed set of Parashari rules and reason carefully inside them. The charts are made up and the rules are a stated subset. So a score here tells you something about reasoning under fixed rules. It tells you nothing about anyone's life, and nothing about whether astrology works.