NOTICE
================================================================================
OculusMind.AI — Pico V2 (OculusMind-ToolCall-8B-v2)
Copyright 2026 Andrew Paris LLC
Licensed under the Apache License, Version 2.0. See LICENSE.
--------------------------------------------------------------------------------
ATTRIBUTION (what redistributions and derivative works must carry)
--------------------------------------------------------------------------------
This model is Pico V2 (OculusMind-ToolCall-8B-v2), published by OculusMind.AI
(Andrew Paris LLC) at https://huggingface.co/OculusMindAI/OculusMind-ToolCall-8B-v2.
Under the Apache License, Version 2.0, section 4, anyone who redistributes this
work or a Derivative Work of it — a further fine-tune, a merge, a re-quantisation,
a conversion to another format, or a service built from these weights that ships
them — must (a) give recipients a copy of the License, (b) carry prominent
notices stating which files were changed, (c) retain the copyright, attribution
and trademark notices of this work, and (d) include a readable copy of the
attribution notices in this NOTICE file. The notice to carry is:
This work is derived from Pico V2 (OculusMind-ToolCall-8B-v2) by
OculusMind.AI (Andrew Paris LLC),
https://huggingface.co/OculusMindAI/OculusMind-ToolCall-8B-v2, licensed
under the Apache License, Version 2.0. Pico V2 is itself a derivative work
of mistralai/Ministral-3-8B-Instruct-2512-BF16 (Mistral AI, Apache-2.0).
The base-model attribution below is carried forward from Mistral AI under the
same obligation and must be retained in any derivative of this work.
--------------------------------------------------------------------------------
BASE MODEL ATTRIBUTION
--------------------------------------------------------------------------------
This work is a derivative work of:
Model : Ministral-3-8B-Instruct-2512-BF16
Publisher : Mistral AI
Repository : https://huggingface.co/mistralai/Ministral-3-8B-Instruct-2512-BF16
Revision : f6fae9795746f63c9be8344932f01275f3c63734
Retrieved : 2026-07-26
Licence : Apache License, Version 2.0
Gated : no
LICENCE VERIFICATION. Read live from the Hugging Face model API for THIS exact
repository on 2026-09-29: `cardData.license` is `apache-2.0`, corroborated by
the repository tag `license:apache-2.0`, and `gated` is false. The pinned
revision above still equalled upstream `main` at that moment, so the licence
fact had not decayed since the 2026-07-26 pin. Upstream last modified
2026-07-15.
THE UPSTREAM REPOSITORY CONTAINS NO `LICENSE` FILE. The declaration exists only
in the card metadata and the repository tag. Unlike this project's Qwen locks,
there is therefore no per-file licence sha256 to pin, and that absence is
upstream's shape rather than a gap in our records.
NOTE ON THE MODEL NAME. This is the `-BF16` repository, which is a DIFFERENT
repository from `mistralai/Ministral-3-8B-Instruct-2512`. Within this product
name, releases differ on exactly this question: `Ministral-8B-Instruct-2410`
ships under a research-only licence forbidding commercial use, while
`Ministral-3-8B-Instruct-2512` is Apache-2.0. A licence read for a sibling
would not cover what is shipped here.
Copyright 2026 Mistral AI
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License.
Both the base model and this derivative work are licensed under the Apache
License, Version 2.0.
--------------------------------------------------------------------------------
STATEMENT OF MODIFICATIONS (Apache-2.0 §4(b))
--------------------------------------------------------------------------------
The files in this repository ARE MODIFIED relative to
mistralai/Ministral-3-8B-Instruct-2512-BF16 at the revision named above. Andrew
Paris LLC made the following changes:
1. Supervised fine-tuning by low-rank adaptation (LoRA), rank 8, dropout 0.05,
scale 1.0, applied to the ATTENTION PROJECTIONS ONLY — `self_attn.q_proj`,
`self_attn.k_proj`, `self_attn.v_proj`, `self_attn.o_proj` — of every
transformer layer. The MLP projections are NOT adapted. AdamW, learning
rate 2.0e-05 on a cosine decay schedule, batch size 1 with 8 gradient
accumulation steps, gradient checkpointing on, maximum sequence length
19,904, prompt tokens masked from the loss.
Training data: dataset `l2-3f301662871f`, 1,386 training rows and 50
validation rows. See DATA section below.
Seed: 46. Ten runs were made, seeds 42 through 51, identical in dataset,
recipe, checkpoint, quantisation and scoring population. Seed 46 was chosen
by the loop gate first and by score second: five of the ten seeds exhibited
the tool-call loop defect and were excluded regardless of score, and seed 48
scored identically to seed 46 (96.58 on the selection population) but looped
once. See APPENDIX-looping.md.
2. THIS IS A PARTIAL-TRAINING CHECKPOINT. The run is configured for 1,005
iterations; the published weights are taken at ITERATION 150 and training
was stopped there deliberately. This is not a converged run, and the
checkpoint was selected before the remaining 855 iterations were observed.
3. Merge of the resulting LoRA adapter into the base weights, producing the
modified safetensors distributed here.
4. Conversion and quantisation of the merged weights to GGUF using llama.cpp
at revision c812c543f. ONE quantisation is published:
GGUF Q8_0 model-q8_0.gguf 9,028,871,552 bytes
sha256 fe76fb07e5ca7351171bcd94838129514f8ad9bfc0a4e84ac6d9c247b33e1c56
Also published: the rank-8 LoRA adapter as `adapters.safetensors`
(29,000,642 bytes, sha256
b3e2672fc0781ec8c5c9f604ed09fd0cb6958b75420ed6fe3e8aee0816ee4d94), which
reproduces the merge against the pinned base revision.
Also published: the merged weights of item 3 as BF16 safetensors — the text-only
`Ministral3ForCausalLM` checkpoint (309 tensors; the base's vision tower is
not carried), for engines that cannot load a GGUF:
model-00001-of-00004.safetensors 5,318,535,144 bytes
sha256 627cbaa0706299fd1e695a9151da514ac05dd34bb978137c24fb2aff11e8b990
model-00002-of-00004.safetensors 5,352,157,840 bytes
sha256 97a1d4852fe20c89411cec0610521aa52ae0c2d066f8b6935e45b3429b4d31c1
model-00003-of-00004.safetensors 5,234,708,880 bytes
sha256 da958797386cfdb2281a908d1c0d4caa5938d44a337f31a3e4f70c32a4209c02
model-00004-of-00004.safetensors 1,073,741,952 bytes
sha256 bf02e982fd7a72202ab02eb837a9f7c3cddea4e87db6d0def674689de38fba11
model.safetensors.index.json 25,472 bytes
sha256 047bcb4995569e1d935ad5710cc76a237981987a64e71fdfa2cd17d6856e30ba
config.json 844 bytes
sha256 89573a75764b477492b4a789dc665c36c0125f16c2c1bf0ea7d29f695b2f7f81
These are the same weights that, quantised to a BF16 GGUF and served
through llama.cpp, loop on 1.52 % of the reported tool-turns; served through
`mlx_lm` they returned at most one tool call per response on every turn
measured. The loop-free claim in README is the Q8_0 GGUF's and is not
transferred to this artifact; README §3 and §5 state what was measured for
it, per engine.
BF16 and Q4_K_M GGUFs of the same weights were also built (2026-10-03) and
measured, and are NOT distributed. Measured on report-vera-sealed at cap
4096, temperature 0, each artifact with its own score — a score from one
precision is never quoted for another:
Q8_0 95.45 loops 0.00 % worst 6 calls <- published
BF16 95.45 loops 1.52 % worst 124 calls <- withheld
Q4_K_M 93.94 loops 3.03 % worst 124 calls <- withheld
(loops and worst are over the 66 tool-turns; over all 138
items Q4_K_M's worst response was 226 calls, Q8_0's still 6)
THE LOOP-FREE PROPERTY HOLDS ONLY FOR Q8_0. BF16 scores identically and
loops anyway, so the rule above is not bookkeeping: quoting one precision's
score for another would have presented the two as equivalent while one
exhibits the defect this model was selected for not having. The decision
not to distribute them follows from that measurement.
5. THE TOKENIZER IS UNMODIFIED IN BEHAVIOUR, and byte-identical in the files
that define it. Verified 2026-09-30 against the pinned base revision:
tokenizer.json BYTE-IDENTICAL (sha256 d5f6046775b112f0…)
tokenizer_config.json BYTE-IDENTICAL (sha256 f59f7294e4f26383…)
chat_template.jinja BYTE-IDENTICAL (sha256 74eeb55fd3341286…)
generation_config.json BYTE-IDENTICAL (sha256 e0923390059f84a9…)
special_tokens_map.json DIFFERS IN SERIALISATION ONLY — see below
`special_tokens_map.json` is 147,094 bytes in the base and 21,436 here. That
shrink is the same shape as a defect in a previous OculusMind.AI release,
where this tooling silently dropped 15 special-token registrations, so it
was not accepted as benign on inspection. Both files carry the SAME 1,000
additional special tokens; the base serialises `bos`/`eos`/`unk` as plain
strings and the merge writes them as objects, which is the whole difference.
Behaviour was then measured rather than inferred, by loading both tokenizers
and comparing: vocabulary size 131,072 both; `bos`/`eos`/`pad`/`unk` and
their ids identical; `all_special_tokens` 1,000 with none lost or gained;
1,130 real production strings plus edge cases (empty string, 5,000 `a`s,
unicode, bare control tokens, a tool-call envelope) encoded with ZERO id
mismatches; decoding identical with `skip_special_tokens` both True and
False — the exact behaviour the earlier defect broke; and the chat template
rendering identical.
6. KNOWN UPSTREAM TOKENIZER ISSUE, inherited, not introduced. Loading either
the base or this model with `transformers` emits: "incorrect regex pattern
… This will lead to incorrect tokenization. You should set the
`fix_mistral_regex=True` flag." This is a property of the BASE checkpoint,
affects base and derivative identically, and was not caused by anything done
here. Our own evaluation serves GGUF through llama.cpp rather than
transformers, so the reported scores are not affected by the flag; a user
loading the safetensors with `transformers` should be aware of it.
No other file in this repository derives from the base model. Files not listed
above and not carried over unmodified from the base are original works of
Andrew Paris LLC.
--------------------------------------------------------------------------------
TRAINING DATA ATTRIBUTION
--------------------------------------------------------------------------------
THE TRAINING DATA IS OCULUSMIND.AI PRODUCTION DATA, AND PRODUCTION DATA RE-RUN
THROUGH ADDITIONAL MODELS. No external dataset contributed a single row to this
model.
Source : OculusMind.AI agent captures, corpus
`internal-clean-20260926-v2`
(sha256 bc61c47754451bdfec38839d1723aa925f98da6534fe364d7b46942d2377303c)
Unique rows used : 462 training + 50 validation, each training row repeated
3 times (declared `internalWeight: 3`), giving 1,386
training rows
Agents : `uno` (240 unique turns) and `vera` (222) only. No turn
comes from a conversation in the evaluation populations.
Review : every row carries an independent reviewer verdict
(1,332 approve, 104 edit). No target is used blind; the
data preparation step fails closed without a verdict.
Verified on 2026-09-29 by tests/test_publish_corpus_provenance.py, which
re-computes the corpus sha256 and traces every training and validation row
back to that capture file.
The rows themselves are NOT published. They are recorded production workloads.
Their influence on these weights is published; their content is not.
SCREENED EXTERNAL CORPORA THAT CONTRIBUTED ZERO ROWS. The dataset builder was
configured with, and records the sha256 of, six external corpora. None of them
contributed any row to this model, so no attribution obligation attaches to any
of them here. They are listed because "we screened these and used none" and "we
never looked" must be distinguishable:
Team-ACE/ToolACE
NousResearch/hermes-function-calling-v1
interstellarninja/hermes_reasoning_tool_use
Hermes agent traces
MadeAgents/xlam-irrelevance-7.5k
Nemotron chat
--------------------------------------------------------------------------------
BENCHMARK ATTRIBUTION
--------------------------------------------------------------------------------
BFCL figures reported in README were produced with:
Harness : Berkeley Function Calling Leaderboard (BFCL), from the Gorilla
project, University of California, Berkeley
Repository : https://github.com/ShishirPatil/gorilla
Revision : f7cf7359 (the published leaderboard snapshot)
Licence : Apache License, Version 2.0
Retrieved : 2026-09-30
BFCL DATA WAS USED FOR EVALUATION ONLY. No BFCL item, prompt, schema or answer
contributed to the training data for this model, which consists entirely of
OculusMind.AI data (see TRAINING DATA above). The harness was run against a
served model exactly as a third party would run it; nothing was tuned against
it, and no BFCL category was inspected before training.
Also used for the general-capability figures:
Harness : lm-evaluation-harness (EleutherAI)
Version : 0.4.13 (pinned in vendor/lm-eval/pyproject.toml)
Licence : MIT
Retrieved : 2026-10-01
Tasks : `ifeval`, `gsm8k` — generation tasks only. The multiple-choice
families are not reported; see README for the measured reason.
The internal evaluation suites named in README are OculusMind.AI's own and are
built from production captures. They are not published.
--------------------------------------------------------------------------------
TRADEMARKS
--------------------------------------------------------------------------------
"Mistral" and "Ministral" are marks of Mistral AI. "Hugging Face" is a mark of
Hugging Face, Inc. "Gorilla" and "Berkeley Function Calling Leaderboard" are
projects of the University of California, Berkeley. All are referenced
descriptively. Nothing in this repository implies affiliation with, sponsorship
by, or endorsement from any of them.
"OculusMind.AI" and the OculusMind.AI logo are marks of Andrew Paris LLC. The
Apache-2.0 licence granted over the model weights does not grant any trademark
rights (Apache-2.0 §6).
================================================================================