Open-weight model
RLCD-Qwen3.5-9B-Gated-Decision
by SourceHat Labs SourceHat-Labs/RLCD-Qwen3.5-9B-Gated-Decision
RLCD-Qwen3.5-9B-Gated-Decision is an open-weight model from SourceHat Labs, released under Apache License 2.0. Its published files total 14.1 MB.
SourceHat RLCD is a research model for bounded decisions: commit to one complete object, return alternatives, or abstain. A frozen Qwen3.5-9B text backbone represents context, evidence, and supplied choices in one shared forward pass.
Model Card
By SourceHat Labs, published under apache-2.0, revision 74bad5f6468a.
SourceHat RLCD is a research model for bounded decisions: commit to one complete object, return alternatives, or abstain. A frozen Qwen3.5-9B text backbone represents context, evidence, and supplied choices in one shared forward pass. Small learned heads score the choices and their combinations; a calibrated policy selects an operating mode. This is not a conversational model or an arbitrary JSON generator. It is designed for classification and routing experiments where the caller defines the candidate choices, validates the result, and retains a verifier or human fallback. It executes no external action. On the main synthetic test, 46 of 49 commitments were correct, out of 250 total cases…
Read SourceHat Labs's full model card
SourceHat RLCD: typed decisions with Qwen3.5-9B
Summary
SourceHat RLCD is a research model for bounded decisions: commit to one complete object, return alternatives, or abstain. A frozen Qwen3.5-9B text backbone represents context, evidence, and supplied choices in one shared forward pass. Small learned heads score the choices and their combinations; a calibrated policy selects an operating mode.
This is not a conversational model or an arbitrary JSON generator. It is designed for classification and routing experiments where the caller defines the candidate choices, validates the result, and retains a verifier or human fallback. It executes no external action.
On the main synthetic test, 46 of 49 commitments were correct, out of 250 total cases: 93.9% conditional success at 19.6% coverage. Most requests received alternatives or abstention. That distinction is central to interpreting the results.
SourceHat Research
The forthcoming SourceHat research article on typed decisions and the research context behind this release is available at SourceHat RLCD: Typed Decisions.
Model Details
| Property | Value |
|---|---|
| Artifact | Learned candidate head and whole-object reranker; Qwen weights are separate |
| Frozen base | Qwen/Qwen3.5-9B |
| Base/tokenizer revision | c202236235762e1c871ad0ccb60c8ee5ba337b9a |
| Architecture | Qwen text path with CandidateSlotHead and JointObjectReranker |
| Stored head parameters | 3,461,769, excluding the frozen backbone |
| Artifact size | 13.87 MB / 13.22 MiB, excluding Qwen and its tokenizer |
| Head input / embedding width | 4,096 / 128 |
| Backbone runtime | bitsandbytes NF4 four-bit weights, bfloat16 compute, thinking disabled |
| Compiled input limit | 384 tokens, including context, evidence, fields, and candidates |
| Validated hardware | NVIDIA GeForce RTX 5060 Ti, 16 GiB VRAM |
Oversized compiled inputs are rejected, not silently truncated. The loader also rejects request files over 1 MiB, more than 32 evidence items, oversized text fields, disallowed control characters, and aggregate request text over 32,768 characters. These guards do not expand the 384-token input budget. Artifact loading rejects symlinks, oversized files, non-finite tensors, and out-of-bounds architecture/selector metadata before model execution.
Decision Interface
The decision contract defines the request and response. Supply exactly three categorical fields, each with two or three candidates. The wrapper sorts fields and candidates by description before encoding and maps predictions back to the caller's identifiers. Candidate descriptions provide semantic input; IDs connect the result to application code.
| Mode | Output | Caller responsibility |
|---|---|---|
commit |
One complete selected object | Independently validate the proposal |
return_set |
Up to three complete hypotheses | Resolve the alternatives with a verifier or reviewer |
abstain |
No committed object | Leave the decision unresolved or use a fallback |
The response also includes normalized field_distributions, a fieldwise proposal,
object_set, and p_action_success. A fieldwise proposal remains available even during
abstention; it does not override the operating mode.
Three fields with three candidates each permit 27 combinations. The complete-object beam retains at most 16, and the returned set at most three. Excluded combinations cannot be recovered by the reranker. Include the correct choice or an explicitly validated fallback: this release does not reliably detect that the answer is missing. Rewriting descriptions can change predictions; canonical ordering is not semantic invariance.
Evaluation
Results are self-reported. The aggregate supplement contains counts, denominators, per-label summaries, diagnostic calculations, and source-report fingerprints. Private training records, prompts, training code, and underlying reports are not included. The evaluated decision artifact matches the original public release; some evaluations use historical wrappers or the research path rather than the current wrapper.
Synthetic decision policy
The synthetic-v3 suite has five authored decision families and deterministic reference outcomes. Each variant has 250 evaluations. The main test, resampled-language batch, and held-out wording batch are separately generated; order and description/ID variants transform the original test batch. Six variants are not 1,500 independent cases or six training seeds.
| Variant | Commit coverage | Correct / commits | Commit success | Set coverage | Set success | Abstain |
|---|---|---|---|---|---|---|
| Synthetic test | 19.60% | 46 / 49 | 93.88% | 58.40% | 65.07% | 22.00% |
| Unseen description/ID style | 17.20% | 41 / 43 | 95.35% | 53.60% | 72.39% | 29.20% |
Coverage uses all requests. Success is conditional on the selected mode: the complete committed object must match the reference, or the research policy's returned top-three set must contain it. On the main test, 95 of 146 sets contain the target and 55 cases are abstained. The 46/49 commitment result has a nominal 95% Wilson interval of 83.48-97.90%; that interval does not account for template correlation or checkpoint selection.
These saved evaluations preserve caller ordering in the historical research path. Description/ID transformations alter wording too; they are not ID-only tests of the current canonicalizing wrapper. All six variants and exact counts are in the supplement.
External intent-ranking probes
Banking77 and CLINC-OOS are evaluated as answer-included three-choice problems: the correct intent and two deterministic distractors are supplied on each request. Two unscored filler fields satisfy the three-field interface. CLINC out-of-scope examples receive an explicitly supplied insufficient-evidence candidate.
| Intent-field metric | Banking77 | CLINC-OOS |
|---|---|---|
| Records | 3,080 | 5,500 |
| Correct at rank one | 2,905 / 3,080 | 5,068 / 5,500 |
| Top-one accuracy | 94.32% | 92.15% |
| Top-two inclusion | 99.38% | 98.87% |
| Worst category accuracy | 65.00% | 36.67% |
| Whole-request commitments | 13 / 3,080 | 14 / 5,500 |
These are not full 77-way Banking77 classification, full-taxonomy CLINC classification, missing-answer detection, or complete-object/action correctness results. Unscored filler fields prevent a claim about the correctness of the whole request's operating mode. There is no matched Qwen prompting baseline on these cases. The historical v0.1.0 wrapper uses the identical learned artifact and stored field temperature without task-specific refitting.
The supplement includes all 228 per-category summaries and probability metrics. It also contains ten earlier experiments with different trained heads, including 4B models; those are historical research context, not additional tests of this released checkpoint. Dataset revisions are recorded there: Banking77 and CLINC-OOS. No dataset text records are republished.
Calibration and policy scope
Field distributions use a scalar temperature fitted on held-out synthetic data.
The gate uses action-specific logistic outcome calibration and explicit utility costs.
Field correctness, complete-object correctness, and action success are different quantities.
p_action_success is not p_safe, p_workflow_success, or a guarantee of correctness.
The saved action diagnostics show probability bias even where the gate improves utility.
The object set uses a split-conformal-style threshold fitted on synthetic calibration data, with nominal alpha 0.10 and a three-object cap. The nominal alpha does not establish 90% correctness for future requests. Beam exclusions, set-size caps, population, and distribution shift all matter. Calibration and conformal coverage on actual workflow outcomes remain unestablished; external intent metrics do not validate the action gate.
Loading and Inference
Use Python 3.12, the Hugging Face CLI, and a working CUDA installation. This command pins the original inference release; later documentation revisions do not change its artifact or loader. The requirements specify PyTorch 2.14.0, Transformers 5.17.0, Accelerate 1.15.0, bitsandbytes 0.50.2, and NumPy 2.5.3.
hf download SourceHat-Labs/RLCD-Qwen3.5-9B-Gated-Decision \
--revision 28d1d97a11246cbce2b8fddde1b6cb26b6fdf8f3 \
--local-dir ./sourcehat-rlcd
cd sourcehat-rlcd
python -m pip install -r requirements.txt
python inference.py --artifact decision_head.pt \
--request example_request.json --device cuda:0
The base weights and tokenizer are downloaded separately at the pinned Qwen revision.
When selecting a physical GPU through CUDA_VISIBLE_DEVICES, use cuda:0 inside the
process. For offline use with the pinned base already available:
python inference.py --artifact decision_head.pt \
--request example_request.json --device cuda:0 \
--base-model-path ./models/Qwen3.5-9B --local-files-only
The local base directory must either be named by the pinned revision or contain a
.rlcd_base_revision.json sidecar with matching model_id, revision, and
tokenizer_revision fields. The loader rejects unmarked or mismatched local bases, disables
remote code execution, rejects duplicate JSON object keys, and returns structured input
errors. The sidecar does not verify arbitrary file contents: obtain the base from a trusted
pinned snapshot. This package includes no training code, optimizer state, or base weights.
Local Runtime
Measurements use an RTX 5060 Ti with 16 GiB VRAM, CUDA, NF4 weights, and bfloat16 backbone compute. The direct-loader v0.1.7 run has five warm requests, averaging 128.13 ms; the v0.1.8 service-path smoke test has three, averaging 138.84 ms. Their cold paths take 28.23 s and 41.51 s respectively. These are different measurement paths, not a paired speed comparison. Individual samples are in the aggregate supplement.
The direct run records 7.503 GiB peak PyTorch-allocated and 7.549 GiB reserved memory on the 16-GiB card. This does not establish support for an 8-GiB GPU or account for all device overhead. These small samples establish neither p95/p99 latency, throughput, concurrency, nor a speedup over a baseline. CPU, mobile, and alternate serving runtimes are not supported by this loader. Exact runtime versions are recorded in the manifest.
Intended Use and Limitations
Use for bounded routing, classification, and research on selective decisions. Validate committed objects independently; route alternatives and abstentions to a verifier, queue, or human. The interface requires exactly three fields with two or three candidates each and a short compiled input. Candidate omission and rewritten descriptions can change behavior.
Do not use for autonomous high-impact, medical, legal, employment, credit, safety-critical, security-sensitive, or financial-authorization decisions. Do not execute external actions directly from the model output. No safety certification, workflow-success estimator, clarification-question generator, tool integration, or downstream validator is included. Frequent alternatives or abstention do not by themselves establish reliable uncertainty detection in a new domain.
Attribution and License
The decision artifact and standalone inference wrapper use Apache-2.0. Qwen3.5 is Copyright 2026 Alibaba Cloud and is a separate Apache-2.0 dependency with its own attribution requirements; retain the upstream terms and NOTICE. The Banking77 and CLINC-OOS datasets retain their respective CC BY 4.0 and CC BY 3.0 attribution requirements. This repository supplies aggregate results, not their text records.
Identity and Version
- Repository
- SourceHat-Labs/RLCD-Qwen3.5-9B-Gated-Decision
- Publisher
- SourceHat Labs
- Task
- Not stated by the source
- Modality
- Other
- Library
- Not stated by the source
- Parameters
- Not stated by the source
- Languages
- Not stated by the source
- Revision
- 74bad5f6468a1a21aed190b77f4a62e149b1c85b
- First published
- 2026-09-29
- Last updated
- 2026-10-15
Files and Weights
14 files, 14.1 MB in total. The weights are 1 file totalling 13.9 MB in pt.
Every file
| File | Type | Size | SHA-256 |
|---|---|---|---|
| decision_head.pt | Weights | 13.9 MB | 2d067565dba0 |
| config.json | Configuration | 350 B | — |
| decision_contract.json | Configuration | 9.9 KB | — |
| evaluation/rlcd_evaluation_data.json | Configuration | 170.8 KB | — |
| example_request.json | Configuration | 1.6 KB | — |
| inference.py | Configuration | 44.0 KB | — |
| release_manifest.json | Configuration | 3.0 KB | — |
| LICENSE | Documentation | 11.4 KB | — |
| NOTICE | Documentation | 422 B | — |
| README.md | Documentation | 12.6 KB | — |
| evaluation/rlcd_external_probes.svg | Other | 13.8 KB | — |
| evaluation/rlcd_synthetic_policy.svg | Other | 12.9 KB | — |
| requirements.txt | Other | 88 B | — |
| .gitattributes | Repository | 1.5 KB | — |
License and Download
- License
- apache-2.0
- Access
- Open weights, no gate
- Download size
- 13.9 MB
Released by SourceHat Labs through its official repository on Hugging Face. Read the license.
Built From
- Derived from Qwen/Qwen3.5-9B
Memory Requirements
| Precision | Weights in memory |
|---|---|
| As published | 13.9 MB |
Weights only, from the published parameter count; the key-value cache and runtime add to this.
Questions About RLCD-Qwen3.5-9B-Gated-Decision
Can I use RLCD-Qwen3.5-9B-Gated-Decision commercially?
Yes. RLCD-Qwen3.5-9B-Gated-Decision is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.