Notes from the work

One email when a tutorial or migration write-up goes live. Nothing else, and an unsubscribe link in every email.

LeanZero

Two people in Romania doing Atlassian migrations, Forge apps and practical AI work for teams that would rather talk to the person doing the job. Most of what we learn ends up on this site.

Services

  • Atlassian Migrations
  • Atlassian FastShift
  • Atlassian Maintenance
  • Forge App Development
  • AI Development Consultation

Topics

  • Jira
  • Jira Service Management
  • Confluence
  • Bitbucket
  • Atlassian Forge
  • Cloud Migration
  • Local AI
  • AI Coding
  • Certifications
  • Atlassian Team
  • All topics

Company

  • Blog
  • Tutorials
  • Contact

Community

  • Join Discord
  • Support this site

© 2026 LeanZero. All rights reserved.

Privacy PolicyTerms of Service24/7 SupportTrust CenterSecurityDPALegal notice
  1. Home
  2. Portfolio
  3. Atlassian Models
Open weights for goose and Apple Silicon

Atlassian v2 goose

Qwen3.8-27B with a fresh adapter for agent work in goose. About level with v1 on Atlassian knowledge (higher multiple choice, lower Forge questions), better on the BFCL tool-calling benchmark and at held-out goose points where v1 slipped, slightly behind v1 at building Forge apps.

Models on Hugging FaceWhat changed
Agent workTool choices, arguments and measured goose resultsTrainingFollow the training process from source dataRelease gatesMeasured checks, failed gates and written waivers
Qwen3.8-27B MLX Q8 · Q6 · Q4 + PEFT adapter goose tool calling Every number measured
What v2 changes, v1 against v2
Manners probe: ticket replies naming a person not in the prompt
v1 20 / 20 →0 / 20
Stopped
Function-calling benchmark (BFCL): right call
v1 85.7% →91.8%
+6.1 pts
Held-out slips: tool not offered
v1 22.5% →12.5%
−10.0 pts
Complete Forge apps, of 35 briefs
v1 30 →27.33
−2.67, below v1

About level on Atlassian knowledge: multiple choice 71.9% → 74.4% (not significant), Forge questions 86.7% → 63.3%. The 8-bit file drifts on long goose contexts; for long sessions the PEFT adapter on the full-precision (bf16) base is the reference build.

Runs on your MacMLX weights for Apple Silicon. Run them with mlx-lm, or serve them to goose behind an OpenAI-compatible endpoint; no prompt leaves the machine.
Nothing private in the weightsEvery training file passed a privacy scan, and every repo is probed for planted canaries on its uploaded files before it is made public.
Every gate shown, failed ones too10 release gates against v1. The ones v2 did not pass ship under a written waiver, printed below with what was measured.

The verdict against v1

About level with v1 on Atlassian knowledge (higher multiple choice, lower Forge questions). Better on the BFCL tool-calling benchmark and at held-out goose points where v1 slipped; in the held-out goose sessions no headline difference is significant and one check is worse. It no longer invents people in the manners probe (0 of 20 ticket replies, v1 20). It answers fewer Forge questions, builds slightly fewer complete Forge apps, loops once more in 160 answers, leaves a name placeholder in more ticket replies, and its 8-bit file drifts from full precision on long goose contexts.
Better than v1
  • Tool calling. BFCL right call 85.7% → 91.8%, no call when none fits 76.7% → 85.8%, both with the 95% bound in v2's favour. At held-out goose points where v1 slipped: tool not offered 22.5% → 12.5%, searching after “just tell me” 57.7% → 45.2%.
  • Stops inventing people in the manners probe. 0 of 20 name someone absent from the prompt (v1 20); 0 of 20 sampled (v1 18); admin and general answers 0 of 80 (v1 7). Not quite zero: one invented person in 160 sampled ticket replies written in the owner's voice, one admin answer flagged in 360 (a code annotation, not a person), one invented date in the organisation answers, and the owner's name once in a goose output with nothing in the task to ground it.
  • Closer to the owner's voice. Style distance 3.069 → 0.65; replies ending on a sign-off 58% → 6%.
About level with v1
  • Atlassian knowledge. Higher on multiple choice, 71.9% → 74.4% (p = 0.54, not significant), lower on Forge questions (see the right-hand column).
  • The held-out goose suite. Across 294 scenarios, three of the four headline metrics read lower and one is level, none by a significant margin; missing arguments, repeated calls and repeated text are non-inferior and lower.
  • General skills. MMLU 83.0% → 84.3%; GSM8K and HumanEval inside their margins.
Worse than v1
  • Forge questions. 63.3% against 86.7%, 19 against 26 of 30 (p = 0.016). The Forge fix cost it: before, the same model read 22. Shipped under the owner's waiver.
  • Asking the named decider. On the only 2 held-out scenarios where the right move is to ask first, v2 never asked; v1 asked in 25% of its samples.
  • Forge app building, slightly behind. 27.33 complete apps of 35 against v1's 30, 29.33 valid manifests against 31.33 (gate failed, waived). Before the Forge fix the same model built 9.67.
  • Loops. 2 in the 160-answer battery at full precision on the training machine, against v1's 1 on its 8-bit build; on the shipped 8-bit, 2 of 40 greedy answers against v1's 1. Every leg is at or below the base model.
  • A name placeholder in ticket replies. 12 of 20 greedy ticket replies end on a literal “[Your Name]” (v1 5, the untouched base 19).
  • 8-bit on long goose contexts. Against full precision, KL 0.40 and top-1 89.9% on goose contexts up to 16,384 tokens (gate 0.067 / 90%); on general text KL 0.001, top-1 99.5%. For long sessions use the PEFT adapter on the full-precision (bf16) base.
  • Small slips. IFEval 81.52% against 82.44%; thinking-block format 50.33% against 52.33% (failed, waived; measured on the same 300 items, 149 of which errored, so it does not measure what it names); Forge identifiers after thinking 0 of 13 against 2; greets in 31% and asks a question in 15% of replies, under the owner's 35.4–54.2% and 29.2–45.8%; mean sentence length 8.0 words, at the short edge of his 8.0–10.75 range (v1 9.9); inside his range, but it failed the voice gate's no-worse-than-v1 test.
  • Not tested. Loading in LM Studio (the release machine's LM Studio indexes no local models at all), the long end-to-end goose session through the desktop app, the two judged goose checks (answering the literal ask first, surfacing a conflict), and maths accuracy with thinking on (149 of 300 items errored).

Built for agent work in goose

v1 knows Jira, Confluence and Forge. In goose it also has to act: pick a tool, fill its arguments, report only what happened, and stop to ask when the task says so. v2 trained on exactly those moments.

Only the tools goose offers

v1 sometimes called a tool by a name goose never offered, or the same call again and again. v2 trained on goose sessions where those calls were replaced by the right one.

Real paths and every required argument

An edit with no file path or a call missing a required field fails in goose and costs a turn. v2 saw corrected rows at exactly the points where a model left them out.

No claims a tool did not back

A finished file that is not on disk, a count no tool returned, or “let me run the tests” followed by nothing. The same checks goose runs on a reply decided which training rows were kept.

Asks when it should, answers when told

When a task names who decides, v2 should ask instead of deciding. When you say just tell me, it should answer without searching or writing files.

goose tool calling, v1 against v2

Share of decision points with the defect, both models on the same 294 held-out goose scenarios, read once. The headline four had to improve: three read lower for v2 and the same call three times is level, but none of the differences is significant.

Invented a tool

A call names a tool goose did not offer. 270 items, not significant (p = 0.50).

v1
0.19%
v2
0.09%
−0.1 ptsLower is better

Edit without a path

A call to edit or write a file leaves out the path. 43 items, not significant (p = 0.12).

v1
1.74%
v2
0.00%
−1.7 ptsLower is better

Claimed what it never did

A count, a finished file or an action stated as done that no tool output backs. 223 items, not significant (p = 0.50).

v1
0.45%
v2
0.34%
−0.1 ptsLower is better

Same call three times

The identical call made a third time in one turn. 29 items.

v1
6.9%
v2
6.9%
No changeLower is better

Checks that could not get worse

The same read. v2 is non-inferior and lower on missing arguments, repeated calls and repeated text. It failed one: on the only 2 scenarios where the right move is to ask the named decider first, it never asked.

Required argument missing

A required argument of the tool's schema is absent. 270 items, non-inferior (margin 1 pt).

v1
1.57%
v2
0.37%
−1.2 ptsLower is better

Repeated a tool call

The same call made again in one turn. 270 items, non-inferior (margin 2 pts).

v1
4.07%
v2
2.31%
−1.8 ptsLower is better

Repeated its own text

A sentence of 60 or more characters said again within one turn. 223 items, non-inferior (margin 2 pts).

v1
1.23%
v2
0.67%
−0.6 ptsLower is better

Did not ask the named decider

The task names who decides and the reply does not ask them. Only 2 scenarios; failed non-inferiority.

v1
75%
v2
100%
+25.0 ptsLower is better

At the points where v1 slipped

Held-out decision points where v1 made the mistake, asked again of both models eight times. v2 is clearly better on tools that were not offered and on searching after “just tell me”. Missing required arguments read lower but not by a significant margin, and deciding instead of asking is level.

Tool not offered

At a point where v1 slipped: a call to a name the request does not offer. 50 points, lower (p = 0.0004).

v1
22.5%
v2
12.5%
−10.0 ptsLower is better

Ignored “just tell me”

The user said just tell me, no files or don't search, and the reply searched or wrote a file anyway. 13 points, lower (p = 0.028).

v1
57.7%
v2
45.2%
−12.5 ptsLower is better

Required argument missing

At a point where v1 slipped: a required argument of the tool's schema is absent. 20 points, not shown lower (p = 0.17).

v1
9.4%
v2
5.0%
−4.4 ptsLower is better

Decided instead of asking

The task names who decides, and the reply writes the decision or ends the turn without asking. 15 points, not shown lower (p = 0.57).

v1
49.2%
v2
49.2%
No changeLower is better

Atlassian and Forge knowledge: about level with v1

Questions whose text no training slice contains (any test item sharing an 8-word run with a training slice was dropped): multiple choice from our doc-cited certification bank, and free-form Forge questions graded against the page each came from. Both models as the shipped 8-bit files. v2 answers more multiple choice than v1, though not by a significant margin, and clearly fewer Forge questions: the Forge fix that taught it to build apps cost Forge answers. Jira and Jira Service Management read 2 points lower, not significant. On the training machine it got 6 of the 9 Forge questions whose module keys neither the booster nor the Forge fix taught (the fix taught a tenth, answered right), and 12 of the 20 the booster taught; all of those keys still appear in the main training mix. The owner accepted the Forge gap and waived this gate.

Atlassian multiple choice

Jira, Jira Service Management, Confluence, administration and migration. Higher, not significant (p = 0.54).

v1
71.9%
v2
74.4%
+2.5 ptsHigher is better

Forge, free-form

Answers checked against the Forge documentation page each question came from. Lower, significant (p = 0.016).

v1
86.7%
v2
63.3%
−23.3 ptsHigher is better
v1 v2Share answered correctly
Jira · 46 questions−2.2 pts
78.3%
76.1%
Jira Service Management · 45 questions−2.2 pts
73.3%
71.1%
Confluence · 45 questions+8.9 pts
57.8%
66.7%
Administration · 45 questions+2.2 pts
77.8%
80.0%
Migration · 18 questions+11.1 pts
72.2%
83.3%

General skills: held, one format leg waived

The keep suite: the same items for both models, each with a margin v2 must stay inside. BFCL is where v2 is clearly better. IFEval dropped 0.92 points, inside a 1.5-point rule on the point estimate that the release coordinator substituted on 2026-10-02 for the pre-registered one (3 points on the paired bound), which reads 3.62 and fails. The thinking-block format leg missed its 2-point rule and ships under a waiver.

MMLU

General knowledge, multiple choice.

v1
83.0%
v2
84.3%
+1.3 ptsHigher is better

Rule: no more than 2 pts below v1 (paired 95% bound)

GSM8K

Grade-school maths word problems.

v1
95.8%
v2
95.6%
−0.2 ptsHigher is better

Rule: no more than 2.5 pts below v1

IFEval

Following explicit formatting instructions, prompt-level strict.

v1
82.4%
v2
81.5%
−0.9 ptsHigher is better

Rule: point estimate no more than 1.5 pts below v1, a rule the release coordinator substituted for the pre-registered one: passed. The pre-registered rule, 3 pts on the paired bound, reads 3.62 and fails.

Thinking-block format

Maths with thinking on: answers that still write a non-empty think block. 149 of v2's 300 items errored, so this leg is weak evidence.

v1
52.3%
v2
50.3%
−2.0 ptsHigher is better

Rule: within 2 pts of v1: failed, waived

HumanEval

Python functions that pass their unit tests.

v1
95.7%
v2
96.3%
+0.6 ptsHigher is better

Rule: no more than 5 pts below v1

BFCL, right call

Berkeley function-calling: the correct call with the correct arguments.

v1
85.7%
v2
91.8%
+6.1 ptsHigher is better

Rule: at or above v1 (point estimate); the 95% bound of the difference favours v2

BFCL, no call when none fits

Berkeley function-calling: declining when no offered tool fits the request.

v1
76.7%
v2
85.8%
+9.2 ptsHigher is better

Rule: at or above v1 (point estimate); the 95% bound of the difference favours v2

KL from v1

How far v2's predictions sit from v1's on the same text. v2 is not built on v1, so some distance is expected.

v1
0.000
v2
0.068
v1 is the zero point

Rule: at most 0.10

Voice and ticket-reply manners

Replies to held-out tickets measured against the owner's own replies, and a 60-prompt probe of three habits v1 shows in ticket replies: greeting people who are not there, signing a name, and saying work was done that nobody did. v2 is much closer overall and has nearly stopped signing off with a name, but it now greets less and asks far fewer questions than he does, its sentences sit at the short edge of his range, and 12 of 20 greedy ticket replies end on a “[Your Name]” placeholder (v1 5).

Distance to the owner's style

Combined distance of the reply's features from his own replies on the same tickets. Closer, significant.

v1
3.07
v2
0.65
−2.414Lower is better

Style features inside his range

Features whose value lands inside the range his own replies cover. Of 20.

v1
7
v2
10
+3Higher is better

Ends on a sign-off

Replies that close with a sign-off. Still above his own 0–2%.

v1
58.33%
v2
6.25%
−52.1 ptsLower is better

Opens with a greeting

Replies that open on a greeting. v2 now greets less often than he does.

v1
47.92%
v2
31.25%
−16.7 ptsHis own range: 35.4–54.2%

Asks a question

Replies that contain a question. v2 asks far less often than he does.

v1
39.58%
v2
14.58%
−25.0 ptsHis own range: 29.2–45.8%

Uses an exclamation

Replies with an exclamation mark. Just above his range.

v1
4.17%
v2
6.25%
+2.1 ptsHis own range: 0.0–6.1%

Signs off with a name

Ticket replies that end with a person's name. Of 20.

v1
11
v2
0
−11Lower is better

Greets a person by name or handle

Ticket replies that open on a name the prompt never gave. Of 20.

v1
20
v2
0
−20Lower is better

Invents a person

Ticket replies naming anyone absent from the prompt. Of 20.

v1
20
v2
0
−20Lower is better

Claims work nobody did

Ticket replies saying a change was made that the prompt never says was made. Of 20.

v1
5
v2
4
−1Lower is better

The files

Three MLX sizes and the adapter alone, for Qwen3.8-27B. Decode speed is single stream on one Mac Studio (M3 Ultra, 96 GB) at a short context, without and with the multi-token-prediction head, measured on the 8-bit file (v1's 8-bit on the same bench: 22.2 → 32.2). Divergence and top-1 agreement compare each file with base plus adapter.
8-bit (Q8)
32.8 GB
tokens/s
22.2
with MTP
31.2
KLD to base + adapter
0.0368
top-1 agreement
99.47%
Qwen3.8-27B-Atlassian-v2-goose-Q8-mlx
6-bit (Q6)
22.7 GB
tokens/s
not measured
with MTP
not measured
KLD to base + adapter
0.0547
top-1 agreement
98.73%
Qwen3.8-27B-Atlassian-v2-goose-Q6-mlx
4-bit (Q4)
16.0 GB
tokens/s
not measured
with MTP
not measured
KLD to base + adapter
0.0928
top-1 agreement
95.61%
Qwen3.8-27B-Atlassian-v2-goose-Q4-mlx
PEFT adapter
1.6 GB

The LoRA alone, for transformers, PEFT or vLLM on the full-precision (bf16) base: the reference build for long goose sessions, where the 8-bit file drifts. MTP draft acceptance on the 8-bit model: 56% (v1 58%).

Qwen3.8-27B-Atlassian-v2-goose-lora-peft

How it was built

11 steps from the untouched Qwen3.8-27B to the files on Hugging Face.
  1. 1

    Why it starts from the base, not from v1

    A first attempt continued from v1's adapter and was not published: every way it found to keep v1's knowledge also kept v1's habit of greeting and signing as people who are not in the thread, a habit that came from forum threads in v1's own training data. Before starting over, the untouched base model was put through the same manners probe: 0 invented names in 120 replies. So v2 starts from the base.

  2. 2

    A fresh adapter on the untouched model

    v2 is a new low-rank adapter (rank 128, layers 32–63) trained from zero on Qwen3.8-27B. It contains no v1 weights, no pull toward v1 and no text v1 wrote; v1 is only the bar every gate measures it against.

  3. 3

    goose tool calls from synthetic agent sessions

    goose tasks worked with goose's own system prompt and tool list, on a clean synthetic profile. Replies that passed the slip detectors were kept as written; at the points where a model slipped, a corrected reply was written in its place and trained on. goose rows that carried v1's own wording were dropped.

  4. 4

    Atlassian and Forge knowledge from the source

    Knowledge slices built from Atlassian's own documentation and OpenAPI specifications, with the base model writing each answer from the quoted passage, and answers the passage did not support thrown away. Any held-out test question that shared an 8-word run with a training slice was dropped from the test.

  5. 5

    A small voice slice

    Ticket replies the owner typed himself, never text an AI drafted for him, with every person's name, handle and placeholder scrubbed, so the model learns to write plainly without signing as anyone or greeting people who are not in the thread.

  6. 6

    A privacy gate on everything

    Client names, people, ticket keys, hostnames and internal system names are scanned for in every training file. A hit stops the build. The finished model is probed with planted canaries, and each repo is probed again on its uploaded files before it is made public.

  7. 7

    Trained on rented GPUs

    goose rows are long (goose's system prompt and tool list alone run past 30,000 tokens), so this round trained on rented GPUs, with every checkpoint synced home as it landed: the main run on 8× NVIDIA B200, the booster on 8× NVIDIA H200, the Forge fix on 8× NVIDIA H100.

  8. 8

    A short booster after training

    The main run plateaued on Forge, and sampled answers agreed when asked whether they were some other assistant. A booster of 1,268 rows followed: 760 question-and-answer rows from the Forge documentation, 194 Forge rows, 143 rows where the model says what it is, and 171 replayed rows. 10 of the 30 Forge test keys were held out of every booster row; the main training mix still contains them.

  9. 9

    A Forge-app fix, and what it cost

    A late release check (35 Forge app briefs, 3 samples each, every answer run through Forge's manifest linter, its module allowlist and the TypeScript compiler) showed the booster checkpoint built a complete app only 9.67 times in 35, against v1's 30: the main mix had diluted validated Forge app code to about 4%. A further 388-step continuation (2,714 rows: 2,127 validated Forge app, manifest and fix examples, plus 21.6% replay of the admin, organisation, identity, knowledge and voice rows) brought it to 27.33. Rows that taught a held-out Forge question key or matched one of the test briefs were removed first, except for one key whose pattern matches nearly all Forge code. Forge question answering fell (73.33% → 63.33%), multiple choice read lower (77.89% → 74.37%) and the 160-answer battery gained a loop (1 → 2, which fails the loop gate).

  10. 10

    A pick rule written before the run, and where it was overridden

    The rule fixed before training: keep suite inside its margins against v1, fewer goose slips on held-out points, a closer voice, no invented people, no more loops than v1, and Forge within two answers of v1. No checkpoint passed all of it. The Forge fix had its own rule too; after measuring, the release coordinator loosened its admin and organisation limits, took the later of the 2 (of 3) Forge-fix checkpoints that then qualified, and recommended it. The owner chose it over the checkpoint before the fix after reading the trade: complete Forge apps 9.67 → 27.33 of 35, Forge questions 22 → 19 of 30.

  11. 11

    Release gates, and waivers when one fails

    10 gates measure the release against v1. A gate that fails ships only with a written waiver from the owner or the release coordinator (the AI agent that ran the release pipeline), saying what was measured and why. 8 of the 10 carry one, 1 of them the owner's. The list is at the bottom of this page.

The main run trained 7,157 steps on 8.5M trained tokens in 2.6 h of training on 7 of the 8 GPUs of a rented B200 box (the eighth ran the in-training checks), from the untouched base. The published checkpoint is step 7,157 of that run plus 91 booster steps on 8× NVIDIA H200 and 388 Forge-fix steps on 8× NVIDIA H100.

The bar v2 is measured against: v1

The published v1, trained on one Mac Studio (M3 Ultra, 96 GB) to write Forge apps and answer Jira, Confluence and JSM questions. v2 is not built on it, but these are its measured numbers, and every v2 release gate measures v2 against them.
85% · 15%
Atlassian identifiers, facts before and after 2026-04
Untouched base 15% · 23%, thinking on
30.0 / 35
Complete Forge apps that pass the validator and compile
Mean of 3; manifests valid 31.3 / 35. Base 0 / 25
0 · 0 · 1 · 0
Genuine loops, 40 prompts on each of four sampling legs
Base 2 · 1 · 3 · 4; answers cut off 38 · 30 · 35 · 13% (base 60 · 48 · 53 · 25%)
100%
Needle recall
At 4k, 32k, 128k context
99.56%
Merged 8-bit agrees with base plus adapter (top-1)
KLD 0.0339. 6-bit 98.85%, 4-bit 95.74%
1.45×
Faster decode with the MTP head, short context
1.27× at 32,768 tokens; draft acceptance 58% (base 53%)
22.2 → 32.2
Tokens per second, 8-bit, without and with MTP
Single stream, one Mac Studio (M3 Ultra, 96 GB)
23.2 h
Training for this round, 2,600 steps
7.5M tokens; 85 h over every round at 31.7 GB active memory

Earlier versions

v1 stays published as it was; v2 goes into new repositories and touches none of these.

  • Qwen3.8-27B-Atlassian-Q8-mlx · v1, 8-bit MLX with the MTP head, 32.8 GB
  • Qwen3.8-27B-Atlassian-Q6-mlx · v1, 6-bit MLX, 22.7 GB
  • Qwen3.8-27B-Atlassian-Q4-mlx · v1, 4-bit MLX, 16.0 GB
  • Qwen3.8-27B-Atlassian-lora · v1 adapter for mlx-lm, 1.6 GB
  • Qwen3.8-27B-Atlassian-Q8-base-mlx · the untouched 8-bit base v1 trained on, 32.8 GB
  • Qwen3.8-27B-Atlassian-Q8_0-GGUF · v1 GGUF Q8_0 for llama.cpp, LM Studio, Ollama, 29.0 GB
  • Qwen3.8-27B-Atlassian-Q6_K-GGUF · v1 GGUF Q6_K, 22.4 GB
  • Qwen3.5-9B-Atlassian-Q8-mlx · the 9B on the same recipe, 12.8 GB

The release gates

Each measures the release against v1. A gate that fails ships only with a written waiver: who decided, what was measured, and why. 8 of the 10 carry one. One was decided by the owner. The rest were decided by the release coordinator, the AI agent that ran the release pipeline: three after the owner chose the Forge-fix model, four before it, under the owner's order to fix Forge app building and finish that night and his earlier decision to go forward.
Failed, waived

The shipped files are the trained model

Merged 8-bit agrees with base plus adapter, the multi-token-prediction head still drafts, and LM Studio loads it. The 6- and 4-bit members are built and checked after the 8-bit is published.

Measured
not tested in LM Studio: LM Studio 0.4.23 on the release machine indexes no local models at all (its model list shows only remote LM Link peers), unchanged since 2026-10-03 and identical for any model; the fused 8-bit loads and answers under MLX in every other release gate (KLD vs base+adapter 0.0368 / top-1 99.47%, MTP 1.35-1.56x)
Why it ships
an environment fault of the release machine, not of the model
Decided by
release coordinator (AI agent), 2026-10-04, under the owner's go-forward decision and the earlier ruling on the same fault
Failed, waived

8-bit matches the full-precision model

Against full precision with the adapter, on general text and on goose agent contexts up to 16,384 tokens: KL divergence at most 0.067, top-1 agreement at least 90%.

Measured
8-bit vs full-precision MLX with the adapter: general text KL 0.001, top-1 99.5% (pass); long goose contexts KL 0.40, top-1 89.9% (gate 0.067 / 90%); the same pattern measured on the earlier checkpoint, where full-precision MLX itself drifted from the PyTorch reference on the same long contexts
Why it ships
an MLX long-context property the 8-bit build amplifies; the PEFT adapter on the bf16 base is the reference build; stated on the card
Decided by
release coordinator (AI agent), 2026-10-05 02:25 EEST, under the owner's choice of the fix model
Failed, waived

Keep suite holds

MMLU, GSM8K, IFEval, the thinking legs, HumanEval and BFCL inside their margins against v1, KL at most 0.10.

Measured
thinking-block format leg 50.33 vs v1 52.33 (the round's rule fails it); every other general skill holds: MMLU 84.33 vs 83.0, GSM8K 95.60 vs 95.75, IFEval 81.52 vs 82.44, HumanEval 96.34 vs 95.73, BFCL 91.79 vs 85.71 and 85.83 vs 76.67
Why it ships
a format measure of the thinking blocks, 2 points under v1; stated on the card
Decided by
release coordinator (AI agent), 2026-10-04 23:20 EEST, after the owner's Forge fix order
Failed, waived

goose tool calling improves

Better than v1 on every headline metric, or fewer slips on a held-out class, and no other goose metric worse.

Measured
held-out goose set (294 scenarios, read once) vs v1: every metric non-inferior or better except 'did not ask when it should': on the 2 scenarios where the right move is to ask the user first, v2 never asked (v1 asked in 25% of samples); fewer invented tools (0.09% vs 0.19%), no edit without a path (0 vs 1.74%), fewer missing required arguments (0.37% vs 1.57%), fewer repeated calls (2.31% vs 4.07%), less restated text (0.67% vs 1.23%); on the fresh slip set at least one class is lower
Why it ships
one metric on 2 scenarios; stated on the card as a place v2 is worse
Decided by
release coordinator (AI agent), 2026-10-04 23:20 EEST, after the owner's Forge fix order
Failed, waived

Writes closer to the owner's style

Closer than v1 on the combined distance (one-sided 95%), and no style feature worse.

Measured
combined distance to the author's style 0.65 vs v1 3.07 (closer, significant); four features miss the author's range on 48 held-out replies: questions in 15% of replies (author 29-46%), a greeting in 31% (author 35-54%), a sign-off in 6% (author 0-2%; v1 58%), exclamations 6.2% (author up to 6.1%)
Why it ships
far closer to the author than v1 overall; the misses are stated on the card
Decided by
release coordinator (AI agent), 2026-10-05 02:55 EEST, under the owner's choice of the fix model
Failed, waived

Loops, long context, leak and identifiers

No more loops than v1 on the 160-answer battery and no more than the base model on any leg, no long-context loops and full needle recall at 128k, a clean leak probe, and Forge identifiers within one question of v1.

Measured
160-answer loop battery (full precision, training machine): 2 loops vs v1 1 (every leg at or below the base model); the shipped 8-bit build: 2 loops in 40 greedy answers vs the base model 3; long-context loops at 128k 0; needle recall at 128k 100%; leak probe 0 leaks over 112 outputs; Forge identifiers named before thinking 10 of 13 (v1 11), passed
Why it ships
one loop more than v1 in 160 answers; stated on the card
Decided by
release coordinator (AI agent), 2026-10-05 02:25 EEST, under the owner's choice of the fix model
Failed, waived

Builds complete Forge apps

On 35 Forge app briefs, 3 samples each, every answer checked by Forge's manifest linter, its module allowlist and the TypeScript compiler: at least three more complete apps than v1.

Measured
35 Forge app briefs x 3 samples (Forge manifest lint, module allowlist, TypeScript compile): complete apps 27.33 of 35 vs v1 30.0, valid manifests 29.33 vs 31.33; before the Forge fix the same model scored 9.67 complete apps
Why it ships
the fix brought Forge app building close to v1 (2.7 complete apps of 35 below it) but not to the gate bar of v1 plus 3; stated on the card
Decided by
release coordinator (AI agent), 2026-10-04 23:05 EEST, after the owner's Forge fix order
Passed

Ticket-reply manners

Never the owner's name, no invented people in admin or general answers, and every ticket count at or below v1's.

Measuredgreedy ticket replies: named sign-offs 0 vs 11, invented people 0 vs 20, action claims 4 vs 5; sampled instruct ticket replies: invented people 0 vs 18; admin and general replies name nobody (0 of 80, v1 7); the owner's name 0 of 120

Failed, waived

Knows at least what v1 knew

Multiple choice at or above v1, Forge within two items of v1.

Measured
the shipped 8-bit builds on the same sets: Atlassian multiple choice 74.37 vs v1 71.86 (above v1); Forge knowledge questions 19 of 30 (63.3%) vs v1 26 (86.7%); the same model before the Forge fix read 22 of 30 but built a complete Forge app 9.67 times in 35 against 27.33 after it (v1 30)
Why it ships
the owner chose Forge app building over Forge question answering; stated on the card
Decided by
owner 2026-10-05 00:10 EEST, after reading the trade between Forge knowledge and Forge app building
Passed

Nothing private ships

Training mix and treatment scanned clean, extraction probes and planted canaries pass, and every repo is probed again on its uploaded files before it is made public.

Measuredtraining mix 3,069,684 units scanned, 0 hits; treatment audit passed; 309 extraction probes and planted canaries on the release files, 0 hits; repeated on the uploaded files of the 8-bit, 6-bit, 4-bit and PEFT repos before each went public, 0 of 309 each

Run it in goose

Serve the 8-bit folder behind an OpenAI-compatible endpoint that parses Qwen's XML tool calls (the release tests used Rapid-MLX) and point goose at it, or run it directly with mlx-lm.

Models on Hugging Facegoose local edition