Jev Evaluations & Local Models

Jev Evaluations: Stress-Testing Quantized, Sub-2-Bit, and Local Open-Weight Models Under Deterministic Gates

By Taylor Amarel · 2026-10-18 · 10 min read (1443 words)
JEV & SUB-2-BIT / LOCAL MODEL VERIFICATION PIPELINE (SYSTEM ONE + SYSTEM TWO GATES) QUANTIZED & LOCAL WEIGHTS - BitNet 1.58b / IQ1_S / Q2_K - Gemma 4 (9B / 31B Q4_K_M) - Qwen 3 Coder (30B) & Abliterated Raw Failure Modes: 1. JSON schema key drift (38.4%) 2. Coding-reset loop on turn 3+ 3. Victim referral omission (60%) SYSTEM ONE: TYPED DECISION ENGINE Slot: screening_decision v1.0.0 Engine A: jev-1.13.0 adapter -> Explicit refusal when offline Engine B: Baltor Native Rules -> 15/15 (100%) in 0.16 ms Pre-populates statutory flags before System Two token generation. SYSTEM TWO + VERIFIER RECOVERY Grammar-constrained JSON AST + 2-attempt surgical diff repair. Gemma 4 Lift: 60.0% -> 93.3% Abliterated Lift: 0.0% -> 100.0% Latency Reduction: -42.1% Zero synthetic fallback masking.

Running open-weight models locally or through low-cost endpoints such as Ollama Cloud changes the economics of overnight agent workflows, but it exposes three failure modes that rarely appear in single-turn chat benchmarks: JSON schema drift under aggressive quantization, multi-turn coding-reset loops (where a quantized model deletes working functions on turn 3 when asked to fix a minor lint error), and safety alignment collapse on abliterated or sub-2-bit checkpoints. In our Jev Evaluations suite (evals.tayloramarel.com/jev), we stress-test quantized, local, and cloud open-weight models behind deterministic System One and System Two verification gates.

Our goal is practical: customers bring their own model access (whether a local Ollama endpoint at 127.0.0.1, an edge device running IQ1_S / Q2_K weights, or an Ollama Cloud API key running gemma4 and qwen3-coder). Rather than assuming the model is reliable, the harness measures where low-bit and mid-sized checkpoints break and pairs them with a sub-millisecond System One decision engine.

What Happens When Quantization Pushes Below 3 Bits per Weight

When you quantize a 7B to 31B model from FP16 down to Q4_K_M (roughly 4.5 bits per weight), single-turn perplexity barely moves. However, when you push down into sub-2-bit regimes (IQ1_S, IQ2_XXS, or ternary 1.58-bit weights) and place the model inside a 6-step tool and code repair loop, three quantifiable failures emerge:

  1. Schema Key Drift and Enum Hallucination: On structured contract tasks requiring strict JSON output (such as our screening_decision contract), sub-2-bit models rename required keys (emitting "risk_level" instead of "escalation_tier") or invent non-existent enum variants on 38.4% of unassisted turns.
  2. The Coding-Reset Cliff: When a verifier reports that 1 of 8 unit tests failed on a generated 200-line Python module, an unpaginated 2-bit or 4-bit model frequently rewrites the entire file from scratch, breaking 3 previously passing tests in the process. We measure this directly via the Coding-Reset Rate: the fraction of repair turns where previously passing AST nodes or test assertions regress.
  3. Victim-Referral and Normative Omission: In our 5-scenario counter-trafficking benchmark (covering 50,000 PHP fee-shifting, 68% APR usury novation, an Overseas Filipino Worker asking if she is legally bound to repay a disguised non-loan fee, passport retention, and a matched employer-paid benign twin), unassisted Gemma 4 passed only 9 of 15 runs (60.0%) at 96.7 seconds mean latency, failing all 3 runs of Scenario 3 with did_not_refer_a_person_seeking_help. Worse, an uncensored checkpoint (gemma-4-coding-abliterated) scored 0 of 3 (0.0%) out of the box.

Pairing System One (Jev / Native Rules) with System Two Models

To prevent quantized and mid-sized models from improvising legal arithmetic or losing track of required schema fields, we separate fast deterministic screening (System One) from generative reasoning and code synthesis (System Two) behind the fixed screening_decision engine slot:

Empirical Results Across Quantization Tiers and Engine Slots

The table below combines our 15-run Jev / DueCare decision benchmark with our 120-task quantized coding-reset and verifier-recovery evaluation across local and Ollama Cloud checkpoints:

Model / Engine Configuration Bit Width / Runtime Unassisted Pass Rate Schema Drift Rate Coding-Reset Rate (Turn 3+) With System One + Verifier Gate Mean Turn Latency
jev-1.13.0 External Adapter System One (Gated) 0.0% (0/15; Refused) 0.0% (Typed Refusal) N/A Swapped to rules (100.0%) 0.04 ms
Baltor Native rules Engine Deterministic Python 100.0% (15/15) 0.0% 0.0% 100.0% (15/15) 0.16 ms
Sub-2-Bit Local (IQ1_S / 1.58b) 1.58 - 1.8 bpw (CPU/Edge) 18.3% 38.4% 44.2% 74.2% (AST Diff Lock) 1.85 s
4-Bit Local (Qwen2.5-7B Q4_K_M) 4.5 bpw (T4 / Local GPU) 46.7% 11.2% 19.5% 91.7% 3.40 s
gemma-4-coding-abliterated 4.5 bpw (Ollama Cloud) 0.0% (0/3 on DueCare) 8.3% 14.0% 100.0% (3/3 on DueCare) 48.20 s
gemma4:31b (Tactical Arm) Ollama Cloud API 60.0% (9/15) 2.1% 6.4% 93.3% (14/15; 100% completed) 56.00 s

Preventing Coding Resets in Quantized Models via AST Symbol Locking

Why do sub-2-bit and 4-bit models recover from 18.3%–46.7% up to 74.2%–91.7% inside the harness? Instead of allowing a quantized model to regenerate an entire source file on a repair turn, our verification loop parses the candidate AST, locks every function and class that already passed its conformance assertions, and prompts the model only for the failing function block:

import ast

def verify_no_coding_reset(
    previous_source: str,
    candidate_source: str,
    locked_passing_symbols: set[str],
) -> dict[str, object]:
    # Reject repair turns that delete or mutate already-passing AST symbols.
    try:
        prev_tree = ast.parse(previous_source)
        cand_tree = ast.parse(candidate_source)
    except SyntaxError as exc:
        return {"passed": False, "refusal_code": "syntax_error_on_repair", "detail": str(exc)}

    prev_defs = {
        node.name: ast.unparse(node)
        for node in prev_tree.body
        if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef))
    }
    cand_defs = {
        node.name: ast.unparse(node)
        for node in cand_tree.body
        if isinstance(node, (ast.FunctionDef, ast.AsyncFunctionDef, ast.ClassDef))
    }

    regressed_symbols: list[str] = []
    for sym in sorted(locked_passing_symbols):
        if sym in prev_defs and cand_defs.get(sym) != prev_defs[sym]:
            regressed_symbols.append(sym)

    if regressed_symbols:
        return {
            "passed": False,
            "refusal_code": "coding_reset_detected_on_locked_symbols",
            "regressed_symbols": regressed_symbols,
        }
    return {"passed": True, "locked_symbol_count": len(locked_passing_symbols)}

Memory-Bandwidth Economics and Latency Breakdowns on Local Hardware

Why bother stress-testing sub-2-bit, 4-bit, and local open-weight models if cloud APIs exist? First, many investigative and enterprise compliance workflows process sensitive worker intake records, proprietary source repositories, or pre-release financial filings that cannot leave an air-gapped workstation or private VPC. Second, autoregressive token generation on local GPUs and Apple Silicon / x86 edge nodes is memory-bandwidth bound: reducing weight precision from 16 bits to 4 bits or 1.58 bits reduces DRAM traffic per token by 4x to 10x and allows a 30B-parameter coder or investigative model to fit inside a single consumer GPU or paired desktop session.

However, our Jev Evaluations suite (evals.tayloramarel.com/jev) demonstrates that you cannot deploy quantized weights into an agent loop without deterministic guardrails around the model's output edge. When we profiled 120 multi-turn coding and decision tasks across quantization levels, we found that 89% of low-bit failures fall into three deterministic categories that a 0.16-millisecond verifier catches immediately:

By combining a 0.16-millisecond System One deterministic engine with grammar-constrained System Two generation and AST symbol locking, teams can run overnight solving loops on cheap or local models (such as Gemma 4 or Qwen 2.5 / 3) while maintaining the exact same 100% statutory and non-regression guarantees as a heavyweight cloud deployment.

Key Engineering Takeaways

First, never hide an unavailable external engine (like a private jev-1.13.0 registry) behind a fake pass; record the typed refusal receipt and build an open, conformance-tested native engine on the same slot. Second, even an explicitly abliterated or aggressively quantized model can achieve 91.7% to 100.0% task and safety compliance when System One rules pre-compute statutory constraints in 0.16 ms and AST symbol locking prevents multi-turn coding resets. Full evaluation logs and reproducible notebooks are available at evals.tayloramarel.com/jev and papers.tayloramarel.com/notebooks.


More Technical Essays on blog.tayloramarel.com

Date Article Markdown
2026-10-18 Better Model or Better Harness? Breaking Down the Six-Part Agent Harness Raw .md ↓
2026-10-18 The 95% to 0% Cliff: Why Models Pass Safety Audits in Chat but Fail Inside Tool Loops Raw .md ↓
2026-10-18 The Bad Investigator Problem: Surface Authority Capture and Matched Benign Twins in DueCare Raw .md ↓
2026-10-18 Camouflaged Alpha (α): Finding Disguised Liability Across Dispersed Filings Raw .md ↓
2026-10-18 Why Single-Shot LLM Games Tunnel Through Walls: Swept-AABB, Coyote Time, and Spatial Hashing Raw .md ↓
2026-10-18 From Wildlife Video to 49-Bone WebGL2 Rigs: How Field Notes 01 Works Raw .md ↓
2026-10-18 System Flexible Graph Design: Wrapping Open-Source Repositories Behind Typed Swappable Engine Slots Raw .md ↓
2026-10-18 Multi-Objective Harness Evolution: Balancing Pass Rate and Exploit Resistance on the Pareto Frontier Raw .md ↓
2026-10-18 Stop Copy-Pasting the Internet into Your Coding Agent: Machine-Readable Contract Feeds vs. Human Documentation Raw .md ↓