Downloads · 30 days
5
3% of all-time downloads
AltronisSG/judgment-qc-gate-qwen3-4b-lora
judgment-qc-gate-qwen3-4b-lora is a text generation model from AltronisSG. Use it when you need the model to write or continue text. It is set up for peft. The card lists the license as apache-2.0.
v10. This adapter has been retrained daily for two weeks on a growing set of human-approved corrections. The evaluation is still small and self-judged, so treat the numbers as evidence rather than proof. It is a real…
Downloads · 30 days
5
3% of all-time downloads
All-time downloads
175
Public
Repo size
144 MB
Likes
0
Public
Click a slice to open those files.
.safetensors132 MB · 89%
From the Hugging Face model README
v10. This adapter has been retrained daily for two weeks on a growing set of human-approved corrections. The evaluation is still small and self-judged, so treat the numbers as evidence rather than proof. It is a real internal tool (it gates our own agent), not a general-purpose reviewer.
This is a LoRA adapter for Qwen/Qwen3-4B that distills one engineer's quality-control judgment into a small local model. Given a one-line description of a work situation, it returns the verdict that operator would give.
IN : [phase: post] Assistant declared a build 'done / passed QC' on the strength
of 'should work' and 'I made the edit', with no run output shown.
OUT: VERDICT: VERIFY | Show the actual run output, not just the claim.
It is a gate, not a chatbot: the intended deployment is inside tooling (pre-send hooks, CI steps, agent harnesses) where drafts of outbound work are judged before they ship.
The corpus deliberately teaches how to judge and keeps facts out of the weights. Facts belong in retrieval, where they can be updated without retraining. A judgment model that memorises project details is stale in a month; one that learns "verify before claiming done" is not.
647 examples, each a real situation from months of AI-assisted engineering work paired with the correction the operator actually gave at the time. Every example was individually reviewed and approved by that operator before entering the corpus. Examples are generalised: no names, no figures, no project internals, only the shape of the situation and the standard applied. 570 examples train, 63 are held out for evaluation.
The corpus is deliberately balanced. Roughly 40 percent are violations (the gate should block) and 60 percent are compliant work that merely looks risky (the gate should pass). An earlier corpus was violation-heavy, which taught the model to block too readily; the compliant examples exist to correct that.
Format: closed-schema chat-message JSONL. System gives the gate instruction, user gives the situation, assistant returns VERDICT: <TAG> | <correction> or VERDICT: OK, drawn from a fixed vocabulary of about 14 tags.
Two checks gate every release. Neither is a standard benchmark; both are small and internal.
| Run | Base | Train examples | False-positive probe | Violation probe |
|---|---|---|---|---|
| v5 | Qwen3-4B | ~220 | 3/30 blocked | 12/12 caught |
| v7a | Qwen3-4B | ~300 | 6/30 blocked | - |
| v8 | Qwen3-4B | ~360 | 2/30 blocked | - |
| v10 (current) | Qwen3-4B | 570 | 0/30 blocked | 12/12 caught |
The false-positive rate falling to 0/30 is the payoff of the balanced corpus: the model stopped blocking clean work while still catching every planted violation. The set is small, so read it as a direction, not a guarantee.
With transformers + peft:
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
base = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3-4B", torch_dtype="bfloat16", device_map="auto")
model = PeftModel.from_pretrained(base, "AltronisSG/judgment-qc-gate-qwen3-4b-lora")
tok = AutoTokenizer.from_pretrained("AltronisSG/judgment-qc-gate-qwen3-4b-lora")
msgs = [
{"role": "system", "content": "You are the QC gate. Given a work situation, return the verdict."},
{"role": "user", "content": "[phase: post] About to send an answer without re-deriving its numbers."},
]
inp = tok.apply_chat_template(msgs, tokenize=False, add_generation_prompt=True)
out = model.generate(**tok(inp, return_tensors="pt").to(model.device), max_new_tokens=180, do_sample=False)
print(tok.decode(out[0], skip_special_tokens=True))
Note: the fine-tune emits an empty <think></think> block before its verdict (the corpus contains no reasoning traces); strip it in post-processing, or serve with thinking disabled.
For local serving, use the ready-to-run merged build: AltronisSG/judgment-qc-gate-qwen3-4b-GGUF (Q8_0, 4.3GB, single file), the exact artifact we serve, or merge and convert yourself with llama.cpp.
The gate runs as a live Stop-hook on our own agent and is retrained on a daily human-approved loop, so its history is a record of fixing itself in public. The two changes that mattered most:
The eval stays deliberately honest: a judgment model whose own evaluation is not judged honestly would be a contradiction in terms.
Base model: Qwen/Qwen3-4B (Apache-2.0) by the Qwen team. Fine-tuned with Unsloth. Adapter released under Apache-2.0.
Built by Altronis, private LLMs and governed AI delivery, Singapore. The full build story, including the unified-memory crash and the multimodal LoRA gotcha, is on the Altronis blog.