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. Blog
Knowledge Base

Atlassian Insights & Tutorials

Real Atlassian solutions to real problems — no fluff, no SEO spam.

Read the latestFollow the tutorials
JiraConfiguration, workflows and fixes from real projectsLocal AIModels and agents running on your hardwareAI codingCoding tools and workflows tested in practice

Articles 84

All topicsAI CodingAtlassian ForgeAtlassian TeamBitbucketCertificationsCloud MigrationCogniRunnerConfluenceJiraJira Service ManagementLeanZero ManagementLocal AISentinel Vaultgoose Local Edition
303 is not an error: how an attachment migration ships zero bytes
ArticleCloud MigrationJira

303 is not an error: how an attachment migration ships zero bytes

Jira Cloud answers 303, Confluence answers 302, and an SSO-fronted Data Center answers with a login page. I measured the two Cloud cases end to end, and the failure that follows passes every audit you are likely to write.

Mihai PerdumAug 18, 202616 min read

More Articles

What 145 MCP Tools Cost Before the Model Reads Your Question
ArticleAI CodingLocal AI

What 145 MCP Tools Cost Before the Model Reads Your Question

MCP went stateless on 2026-07-28. I probed ten real servers: none implement it. Then I measured the thing that actually costs you — 145 tool definitions, 40,784 tokens, and the 30% that is one server repeating itself.

Mihai PerdumAug 17, 202614 min read
One person, two JSM customer accounts: what actually clears the duplicate after an email change
ArticleJiraJira Service Management

One person, two JSM customer accounts: what actually clears the duplicate after an email change

A customer changes email domain and starts appearing twice in the reporter picker. Removing them from the project provably cannot fix it, the query that finds their tickets stays silent when it fails, and the reassign that clears them reports the wrong reason for refusing.

Gabriela PerdumAug 15, 202611 min read
LeanZero Management: the Jira dependency that actually moves dates
ArticleAtlassian ForgeJira

LeanZero Management: the Jira dependency that actually moves dates

A blocks link in Jira records a relationship. On Free and Standard it reschedules nothing. Here's the engine we put behind it, the required-start rule that's easy to get subtly wrong, and what it still can't do.

Gabriela PerdumAug 13, 202612 min read
96 GB is 77.76 GiB: the real memory ceiling on an M3 Ultra
ArticleAI CodingLocal AI

96 GB is 77.76 GiB: the real memory ceiling on an M3 Ultra

Metal will not give you the RAM on the box, and the number it does give is not the 75% everyone repeats. I measured the three ceilings on a 96 GB Mac Studio, then measured what modern hybrid-attention models actually spend against them — including a Gemma 4 cache that quietly holds three times its own sliding window.

Mihai PerdumAug 13, 202613 min read
Your Jira filters survived the migration. That's the bug.
ArticleCloud MigrationJira

Your Jira filters survived the migration. That's the bug.

A saved filter is a string, not a binding. I measured what cf[10042] actually resolves to on a destination site, and where Data Center to Cloud and Cloud to Cloud each fail silently.

Mihai PerdumAug 12, 202613 min read
goose compaction: my 27B re-read the file 95% of the time — quoting it in the summary didn't help
ArticleAI Codinggoose Local Edition

goose compaction: my 27B re-read the file 95% of the time — quoting it in the summary didn't help

Our swarm workers kept re-reading files they had already read. Context compaction was summarising the tool output that held the file. Pasting the file into the summary does not fix it; returning the last turns verbatim does. Measured three ways on the same 27B.

Mihai PerdumAug 11, 202612 min read
llama.cpp vs MLX on Qwen3.6-27B: MTP is 1.04x here, not 1.85x
ArticleAI CodingLocal AI

llama.cpp vs MLX on Qwen3.6-27B: MTP is 1.04x here, not 1.85x

Multi-token prediction is merged in llama.cpp and still an open PR in mlx-lm. I measured both on an M3 Ultra with the same model. Every default MTP setting was slower than no MTP at all, and the runtime that deletes the MTP head outright is still the fastest thing on the box.

Mihai PerdumAug 10, 202615 min read
CHANGE-3222 will not clear itself: git forgets a credential on 401, and Bitbucket answers 410
ArticleBitbucket

CHANGE-3222 will not clear itself: git forgets a credential on 401, and Bitbucket answers 410

You swapped the app password for an API token and Bitbucket still says app passwords are deprecated. The token is not the problem and neither are its scopes. Git is re-sending the dead credential because git only erases a stored credential on a 401, and the status code Bitbucket chose for this is 410. I measured which codes clear a credential and which do not, on git 2.50.1, against both the store helper and the macOS keychain.

Gabriela PerdumAug 7, 202616 min read
Previous
Page7of 10
Next

Found My Advice Helpful?

If I helped you solve something for free, coffee money is always appreciated (but never expected).

Buy Me a Coffee

Join the Community

Join the community to ask questions, share your work, and connect with other professionals.

Join Discord

Recent Writings

View all
Is 25 Rovo credits per user enough? Cost and usage per action, measured
ArticleJira

Is 25 Rovo credits per user enough? Cost and usage per action, measured

Gabriela Perdum13 min read
DeepSeek V4.1 Flash coding benchmark: 0.33 on a Forge app upgrade, Opus 5.5 got 0.67
ArticleAI Coding

DeepSeek V4.1 Flash coding benchmark: 0.33 on a Forge app upgrade, Opus 5.5 got 0.67

Mihai Perdum14 min read
Jira project status report that says when it can't tell: LeanZero Management
ArticleLeanZero Management

Jira project status report that says when it can't tell: LeanZero Management

Gabriela Perdum9 min read
Claude Haiku 5.5 vs GPT-6 Luna on two coding benchmarks: same price, 3.6x the agent bill
ArticleAI Coding

Claude Haiku 5.5 vs GPT-6 Luna on two coding benchmarks: same price, 3.6x the agent bill

Mihai Perdum22 min read
Atlassian license management by prompt: what CogniRunner's Jira AI agents can do now
ArticleCogniRunner

Atlassian license management by prompt: what CogniRunner's Jira AI agents can do now

Mihai Perdum17 min read