CoolFace
Modelpublic

flock-io/this-that-model-1.2

sourceHugging Facemitupdated 2d agoView on Hugging Face
5likes171downloads
Model Card

this-that-model-1.2

A typed decision model. One forward pass, no decoding loop, no parser, no retry.

1.1 could apply a policy rule. 1.2 can apply it however the rule happens to be written — which is the difference between a model that works on a benchmark and a model that works on the policy document somebody actually wrote.

What changed from 1.1

Composed decisions: where several rules narrow a choice in sequence, accuracy goes from 0.775 to 0.878 on the public benchmark and from 0.785 to 0.909 on the depth ladder.

Rules written in the negative: 1.1 read a rule such as bays without chilled handling are ineligible as though it named the eligible set — not failing to apply the rule but applying its opposite, at 0.88 mean confidence. 1.2 reads it correctly. The table below measures that across eleven phrasings of one rule, because a rule that changes meaning with its wording is the failure a user meets first.

Reading the rule, however it is written

<picture> <source media="(prefers-color-scheme: dark)" srcset="phrasing-dark.png"> <img alt="Eleven phrasings of one rule, 1.1 against 1.2" src="phrasing-light.png"> </picture>

The same 100 decisions, the same gold answers, eleven ways of writing the same eligibility rule. A model that reads rules should score the same on all eleven.

the rule, written as1.1**1.2**
Only bays with handling of chilled are eligible.0.861.00
A bay is eligible only if its handling is chilled.0.880.99
A bay must have handling of chilled to be used.0.790.99
No bay may be used unless its handling is chilled.0.890.99
Every bay is excluded except those whose handling is chilled.0.871.00
A bay must not be used if its handling is not chilled.0.720.99
A bay whose handling is not chilled is not eligible.0.000.98
A bay whose handling is not chilled is ineligible.0.000.98
Bays without chilled handling are ineligible.0.030.99
Any bay that lacks chilled handling is disqualified.0.051.00
A bay that fails to provide chilled handling is ruled out.0.160.98

Chance is 0.19. 1.1's range is 0.00 to 0.89; 1.2's is 0.98 to 1.00. Measured on states rendered as indented key/value text, over decisions that filter by eligibility and then rank.

Read the 1.1 column carefully: four of those rows are below chance. A model that scores 0.00 where chance is 0.19 is not guessing — it is reliably choosing the option the rule excludes. On a yes/no question (Is bay-b eligible?) under such a rule, 1.1 answered correctly 6% of the time against a chance rate of 50%.

Where 1.2 sits against models that generate tokens

Every system on all 1,710 questions of the public benchmark, scored the same way: one question, declared options, the answer read back, a system that returns nothing counted wrong.

<picture> <source media="(prefers-color-scheme: dark)" srcset="standings-dark.png"> <img alt="Accuracy on 1,710 complex decisions, ten systems" src="standings-light.png"> </picture>

SystemAccuracyGenerated tokensLatency
this-that-model-1.20.878031.4 ms
claude-opus-50.834~200~1000 ms
gpt-5.60.816~200~1200 ms
this-that-model-1.10.775050.3 ms
glm-5.30.652~200~800 ms
kimi-k30.522~200~1000 ms
deepseek-v4.1-flash0.511~4~800 ms
deepseek-v4-pro0.470~4~900 ms
this-that-model-1.00.406050.3 ms
laya-typed-decisions0.310030.4 ms
chance0.258——

The benchmark is public: limberc/this-that-complex-decisions. Please noticed that the performance is tested under NVIDIA RTX 5080 GPU (Laptop).

That table measures decision difficulty, and nothing else. On the phrasing table above, claude-opus-5 and gpt-5.6 both score 1.00 on every row, including the rows where 1.1 scores 0.00 — so the frontier models are not weaker at reading rules, they are weaker at these decisions. Two different axes, and this page reports both.

Composed decisions, by depth

Rules that compose — a filter, then a second filter, then a ranking. 242 questions, held out at both the question and the world-state level.

<picture> <source media="(prefers-color-scheme: dark)" srcset="depth-dark.png"> <img alt="Composed decisions by depth, four systems" src="depth-light.png"> </picture>

depth 1depth 2depth 3overall
this-that-model-1.20.940.890.870.909
this-that-model-1.10.800.800.740.785
gpt-5.60.810.560.580.678
claude-opus-50.800.530.610.669

Depth 2 is the hardest rung for the hosted models and the widest gap: two narrowings with many candidates still live is where a single pass over the state pays off most.

The frozen third-party cohort

68 questions a third party recorded against a hosted commercial decision service, in their wording rather than ours:

accuracyBrier ↓NLL ↓
majority-class baseline0.647——
the hosted service0.7650.1330.403
this-that-model-1.11.0000.0030.023
this-that-model-1.20.9850.0090.047

1.2 misses one of the 68. 1.1 missed none; the cohort is small enough that one question is the whole difference between those two rows, and neither is evidence of much.

Calibration

Where the true answer is a computed probability, so the target follows from the transition rules rather than from anyone's opinion. Lower qL2 is better.

accuracyqL2 ↓constant predictor
sim_event_ood0.7300.02740.0962
sim_local_ood0.9950.01610.4928

1.1 scored 0.0253 and 0.0203. The second improves; the first is a small regression, and a constant predictor is still three times worse than either.

Usage

bash
pip install git+https://github.com/FLock-io/this-that-model
python
from thisthat import TypedDecider, Question

decider = TypedDecider.from_pretrained("flock-io/this-that-model-1.2")

answer = decider.decide(
    '{"bays": {"bay-a": {"free": 7, "distance_m": 40, "handling": "chilled"},'
    '          "bay-b": {"free": 3, "distance_m": 12, "handling": "ambient"}},'
    ' "policy": ["Bays without chilled handling are ineligible.",'
    '            "Among those eligible, take the most free positions."]}',
    Question("Which bay is assigned?", ["bay-a", "bay-b", "hold in transit"]),
)

print(answer.choice)          # bay-a
print(answer.confidence)      # threshold on it; see the calibration section

That is the example 1.1 returned bay-b for, at 0.9998 confidence, and it is the one this release exists to fix. Over 40 freshly generated decisions of exactly that shape — JSON, two candidates, the rule written as an exclusion — 1.1 answers 0.20 and 1.2 answers 0.975. Stated positively, both answer 1.000.

Citation

bibtex
@misc{cheng2026thisthat,
  title  = {A typed decision model that decides in 50 ms, for a millionth of a cent},
  author = {Cheng, Zehua and Dai, Wei and Sun, Jiahao},
  year   = {2026}
}

Licence

MIT. Adapted from decider-2b under Apache-2.0.