What it does
- Emits a single JSON draft conforming to the ReceiptAgent output schema:
decision=DRAFT, approvalRequired=true, executed=false,
provenance=MODEL_PROPOSED, receiptBinding.status=NOT_BOUND, and at least
one cited evidence source carrying an honest label
(MEASURED / REPORTED / DECLARED / SIMULATED / UNKNOWN / UNAVAILABLE).
- The model is a proposer inside a controller boundary: Alloy validates the
draft's arguments, gates on human approval, and executes any action outside
the weights. The model never decides or acts.
- Base model:
Qwen/Qwen2.5-1.5B-Instruct
- Method: QLoRA SFT with response-only loss masking and refusal
oversampling (the adversarial refusal set is held out from training). Full,
reproducible recipe:
train_receiptagent.py in the forge kit.
- Final train loss:
0.1038 (REPORTED by the owner's signed training receipt)
- Trained at:
2026-07-13T21:33:44Z on host betterwithage
- Curriculum: synthetic drafts and refusals. Their hashes are recorded in the signed
receipt, but the curriculum files are not published in this model repo; the training
data cannot be independently reconstructed from this repository alone.
Evaluation (OWNER-RUN, REPORTED)
The committed evaluation receipt records a small held-out synthetic harness:
Table with columns: Metric, Receipt-bound result| Metric | Receipt-bound result |
|---|
| Draft conformance | 5 / 5 |
| Adversarial refusal | 6 / 6 |
These owner-run results are not a third-party benchmark. The sample is too small to
justify an autonomous, high-stakes, or universal-refusal claim; keep a validating
controller and fail closed.
Verify this model (do not trust - check)
- Verify both Ed25519 signatures over each receipt's canonical JSON.
- Re-derive
keyId as the first 16 hex characters of SHA-256 over the SPKI bytes.
- Recompute the evaluation-to-training chain from the training canonical JSON.
- Recompute the committed
receiptagent.schema.json hash and compare it with the receipt.
- Treat the curriculum hashes as owner assertions here: their source files are not
present in this model repository, so they cannot be independently recomputed here.
Evidence label: REPORTED, owner-run. Trust anchor: REPO_DECLARED. No
third-party benchmark, external key pin, or production deployment is claimed.
Files & provenance bindings
- Merged model weights (
*.safetensors) — the receipts' weightsArtifactSha256
is a deterministic digest over the sorted *.safetensors of the merge
(basename + bytes), reproducible with sha256_safetensors_dir in the forge kit.
This — not any GGUF — is the artifact the signed weights hash covers.
- LoRA adapter (
*.safetensors) - bound by adapterSha256 using the forge-kit digest method.
- Uploaded-byte hashes (Hub LFS OIDs):
model.safetensors =
a797592fb35c32cc6ebf5739c0a1d9312123300acaf09987d207d86196bc6e7d;
adapter/adapter_model.safetensors =
706aff139489d62cb1ac221c0f92a1a8595cd6a42032c542efe8028684e57cf2.
These bind the exact Hub uploads and are distinct from the receipt's forge-kit digests.
owner_pubkey.json, , ,
— the verifiable provenance bundle.
Run it
from transformers import AutoModelForCausalLM, AutoTokenizer
model_id = "SZLHOLDINGS/SZL-Forge-1.5B-ReceiptAgent"
tok = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(model_id, torch_dtype="auto", device_map="auto")
messages = [{"role": "user", "content": "Draft a decision on raising the rolling-24h spend cap."}]
inputs = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=512, do_sample=False)
print(tok.decode(out[0][inputs.shape[-1]:], skip_special_tokens=True))
The model returns a single JSON draft (decision=DRAFT, approvalRequired=true,
executed=false) or a refusal — never a finalized action. Validate the output
against receiptagent.schema.json before acting on it.
Adapter (PEFT) alternative
The LoRA adapter ships under adapter/ for stacking on the stock base:
from peft import PeftModel
from transformers import AutoModelForCausalLM
base = AutoModelForCausalLM.from_pretrained(
"Qwen/Qwen2.5-1.5B-Instruct", torch_dtype="auto", device_map="auto"
)
model = PeftModel.from_pretrained(
base, "SZLHOLDINGS/SZL-Forge-1.5B-ReceiptAgent", subfolder="adapter"
)
Intended use & limits
- Use: proposing governed, evidence-cited decision drafts for a
human-in-the-loop controller (e.g. Alloy).
- Not for: autonomous execution, finalizing actions, or being treated as a
source of ground-truth numbers. It is a 1.5B proposer, not an oracle.
Citation
Part of the SZL-Forge family by SZL Holdings. Provenance verifiable via
the Alloy governed-inference backbone.