0099 — Heretic v2 of GPT-OSS 20B is the sovereign default model¶
Status: proposed · Date: 2026-11-04 · Cites: sub-doctrines 8.a, 8.d, 8.j, 10.f, 12.c · Related: ADR-0027, ADR-0038, ADR-0064, ADR-0093
Owes: the advertised ADR count in CLAUDE.md, AGENTS.md, GEMINI.md, README.md
and docs/index.md (tests/meta/test_adr_counts.py), a nav entry in properdocs.yml,
and a fragment in changelog.d/. All are included in the change that carries this record.
Context¶
ADR-0064 established gptossloop on GPT-OSS 20B (gpt-oss:20b) as the sovereign default
engine, on by default and preferred first for BUILD (ADR-0038), and as the default model
behind the sovereign DESIGN and DECOMPOSE providers (ADR-0027).
In an autonomous coding loop, a model must inspect arbitrary source trees, execute shell
commands, analyse security properties, and repair failing checks. Stock gpt-oss:20b
refuses 98 of 100 prompts on the Heretic refusal
benchmark. When a coding prompt or repository text triggers a refusal reflex inside an
unattended DESIGN, DECOMPOSE or BUILD turn, the loop stalls for a reason that has nothing
to do with the operator's authority or the safety of the work. In vibey, safety is
enforced by deterministic bounds — human gates, per-cycle spending and turn caps,
worktree and container isolation, environment scrubbing, and an append-only PostgreSQL
ledger — rather than by a model's alignment reflexes.
The Heretic project publishes two abliterated builds of GPT-OSS 20B:
- v1 (
p-e-w/gpt-oss-20b-heretic): 58/100 test prompts refused, KL divergence 0.96 from the original model. - v2 (
p-e-w/gpt-oss-20b-heretic-v2, built with Heretic v1.1.0): 49/100 test prompts refused (against 98/100 for stock), KL divergence 0.1248 from the original model, under the Apache-2.0 license.
Ollama's Hugging Face GGUF integration serves p-e-w/gpt-oss-20b-heretic-v2 directly via
hf.co/mradermacher/gpt-oss-20b-heretic-v2-GGUF:MXFP4_MOE, which uses the same native
MXFP4 mixture-of-experts quantization and 20B architecture as stock gpt-oss:20b.
Decision¶
- A two-variant sovereign model catalogue (
src/vibey/domain/sovereign_model.py).SovereignModels(declared bySovereignModelsInterface) defines the two sovereign builds ofSOVEREIGN_FAMILY = "gpt-oss:20b": heretic(default):hf.co/mradermacher/gpt-oss-20b-heretic-v2-GGUF:MXFP4_MOE, derived fromp-e-w/gpt-oss-20b-heretic-v2(Apache-2.0 weights; ~12.1 GB download).-
stock:gpt-oss:20bfrom the Ollama library (Apache-2.0 weights; ~14 GB download). -
Why v2 over v1. Heretic v2 reduces refusals further (49/100 vs 58/100) while keeping KL divergence at 0.1248 (nearly an order of magnitude tighter than v1's 0.96), preserving the non-refusal behaviour and coding capability of the base model.
-
License boundary. The Heretic tool itself is licensed under AGPL-3.0 and is not a dependency or runtime component of vibey. vibey consumes only the published Apache-2.0 model weights through Ollama.
-
One resolution precedence everywhere (12.c).
SovereignModels.from_environment()resolves the active model tag in order: - Explicit
--ollama-modelCLI flag; VIBEY_OLLAMA_MODELenvironment variable;VIBEY_SOVEREIGN_MODELenvironment variable (hereticorstock, case-insensitive; an unknown value raisesValueErrornaming the valid keys);DEFAULT_SOVEREIGN_TAG(heretic).
Both --ollama-model and VIBEY_OLLAMA_MODEL also accept the variant keys heretic
and stock and resolve them to their full tags, while passing any other Ollama tag
through unchanged. Empty or whitespace-only values count as unset.
- Single source across conductor and runner.
DEFAULT_SOVEREIGN_TAGis wired intoOllamaChatClient,OllamaResidency,domain/local_stack.py,vibey doctor --sovereign-fit, andqwenloop'sDEFAULT_ENDPOINT_MODELforgptossloop. Because theqwenloopworkspace tenant does not importvibey,tests/meta/test_sovereign_model_agreement.pyasserts that the tenant's constant equalsDEFAULT_SOVEREIGN_TAG.
Evidence and verification status (sub-doctrine 10.f)¶
- Verified:
- The model card metrics for
p-e-w/gpt-oss-20b-heretic-v2(49/100 refusals vs 98/100 original, KL divergence 0.1248, Apache-2.0 license, Heretic v1.1.0). - The Hugging Face Ollama manifest at
https://huggingface.co/v2/mradermacher/gpt-oss-20b-heretic-v2-GGUF/manifests/MXFP4_MOEresolves cleanly to a ~12.1 GBMXFP4_MOEGGUF model layer plus a template layer (Q4_K_Mis ~15.8 GB). - Unit, CLI golden, and cross-tenant agreement tests pass at 100% branch coverage.
- Not yet verified:
hf.co/mradermacher/gpt-oss-20b-heretic-v2-GGUF:MXFP4_MOEhas not yet been pulled withollama pullor run throughvibey doctor --sovereign-fitor an end-to-endgptosslooptool-calling benchmark on the reference host. Existing measured latency, VRAM, and throughput tables indocs/reference/system-requirements.mdanddocs/guides/local-models-ollama.mdremain explicitly attributed to stockgpt-oss:20buntil re-measured against the Heretic v2 tag.
Consequences¶
- Default local installs and
vibey loops --jsonnow reporthf.co/mradermacher/gpt-oss-20b-heretic-v2-GGUF:MXFP4_MOEasgptossloop's model and12.1 GBas its download size. - Operators who want the unmodified OpenAI release can select it with
VIBEY_SOVEREIGN_MODEL=stock,VIBEY_OLLAMA_MODEL=stock, or--ollama-model stock. - Rule status. Choosing which build of the era's default model sits at the top of the catalogue is a mechanism and catalogue update under sub-doctrine 8.d, not a new rule of conduct (ADR-0020).