|
1 | 1 | # CHANGELOG |
2 | 2 |
|
3 | 3 |
|
| 4 | +## v0.72.5 (2026-03-28) |
| 5 | + |
| 6 | +### Bug Fixes |
| 7 | + |
| 8 | +- Unbounded regex quantifiers prevent Outlines DFA state explosion |
| 9 | + ([#203](https://github.com/OpenAdaptAI/openadapt-evals/pull/203), |
| 10 | + [`55c3c5d`](https://github.com/OpenAdaptAI/openadapt-evals/commit/55c3c5df6a50422bcfd666ca6721d6337a3a4d34)) |
| 11 | + |
| 12 | +* fix: use outlines v1.2 get_regex_logits_processor API |
| 13 | + |
| 14 | +The outlines v1.2 API requires: 1. Wrapping the HF model+tokenizer in outlines.Transformers 2. |
| 15 | + Calling get_regex_logits_processor(None, wrapped, regex) |
| 16 | + |
| 17 | +Prior code tried to construct OutlinesLogitsProcessor directly with a tokenizer= kwarg that doesn't |
| 18 | + exist in v1.2. The error was caught and silently fell back to unconstrained generation. |
| 19 | + |
| 20 | +Tests now verify the ACTUAL API surface (import paths + factory function signature) instead of just |
| 21 | + checking class names exist. This would have caught all three prior Outlines bugs: - PR #197: wrong |
| 22 | + class name (RegexLogitsProcessor) - PR #201: wrong constructor (tokenizer= kwarg) - This PR: wrong |
| 23 | + API pattern (direct constructor vs factory) |
| 24 | + |
| 25 | +33/33 tests pass with outlines 1.2.12 installed. |
| 26 | + |
| 27 | +Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
| 28 | + |
| 29 | +* fix: use unbounded regex quantifiers to prevent DFA state explosion |
| 30 | + |
| 31 | +Bounded quantifiers like {1,500} create counting DFA states that cross-product with every |
| 32 | + alternative in the regex. The Thought prefix alone created 1,500 states, exceeding Outlines' 2^31 |
| 33 | + limit. |
| 34 | + |
| 35 | +Changes: - [^\n]{1,500} → [^\n]+ (Thought prefix: 1 state vs 1,500) - [^"]{0,200} → [^"]* (TYPE |
| 36 | + text: 1 state vs 200) - \d{1,3} → \d+ (coordinates: 1 state vs 3) |
| 37 | + |
| 38 | +max_new_tokens=512 provides the actual length limit. The DFA doesn't need to count characters. |
| 39 | + |
| 40 | +New test: test_no_bounded_quantifiers_in_regex asserts no quantifier in the regex exceeds {N,10}, |
| 41 | + preventing future regressions. |
| 42 | + |
| 43 | +34/34 tests pass. |
| 44 | + |
| 45 | +--------- |
| 46 | + |
| 47 | +Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com> |
| 48 | + |
| 49 | + |
4 | 50 | ## v0.72.4 (2026-03-28) |
5 | 51 |
|
6 | 52 | ### Bug Fixes |
|
0 commit comments