Skip to content

policy(porting): a model port documents the WEIGHTS it was fed, not just the code (#672) - #970

Merged
localai-bot merged 2 commits into
mainfrom
row/PORTING-WEIGHTS-RULE
Aug 16, 2026
Merged

policy(porting): a model port documents the WEIGHTS it was fed, not just the code (#672)#970
localai-bot merged 2 commits into
mainfrom
row/PORTING-WEIGHTS-RULE

Conversation

@localai-bot

@localai-bot localai-bot commented Aug 16, 2026

Copy link
Copy Markdown
Collaborator

Records only — no src/, include/ or tests/ change. Supersedes #951, which
carried a force-push artifact in its commit range; this is the identical diff
rebuilt on a clean branch with no rewritten history.

Developer-directed. MiniMax-Music3 is the case that made it concrete: the port
landed complete, and a reader still could not run it without being told that the
57.4 GB repository is ~28.5 GB in the arm we actually load, split across six
component directories, with a native .pth layout we refuse by name and
fourteen community quantized repositories we do not implement.

None of that is inferable from a header file. The code is the easy half to
publish; saying what to feed it is the half that makes the port usable — and it
was nowhere in the checklist.

The rule

.agents/porting-a-model.md §2.1, with a checkbox in §2 and a pointer from
AGENTS.md's quantized-arms paragraph: every ported model documents the
checkpoints it was built and gated against in docs/USAGE.md, in the same
change that makes the capability reachable
, mirroring the table MiniMax-H3
already carries — file name, size, and a link to the exact HuggingFace repo,
grouped by arm.

What a row owes, and why each clause exists

Clause The thing that bit us
repo id and revision; sha256 for a quantized artifact unsloth/Qwen3.6-27B-NVFP4 was silently re-quantized in place under an unchanged name; Music3's GGUF lineage is published four ways under one model (audiocpp, mm3, qwen3, wan) and wan collides with genuine Wan video GGUFs
which arms are refused same polarity as the refuse-by-name rule one paragraph above: a user should read the refusal in the docs, not discover it at load time
the resident size it is not the repository's size, and it is what decides whether a reader can run it at all
whether a third party published it community quant repos are the arm most users reach for, and carry different provenance from a first-party release

Placement

In porting-a-model.md rather than verification.md or benchmarking.md,
because it is a property of shipping a model rather than of gating or
measuring one — and because that file is the checklist an implementer already has
open. AGENTS.md carries it in prose so the rule is reachable without opening the
guide.

Its first application is the MiniMax-Music3 weights table in #966.

Gate: check-agent-record OK, check-doc-checkpoint OK, check-commit-trailers
OK over the PR range.

🤖 Generated with Claude Code

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]

…ust the code (#672)

Developer-directed. MiniMax-Music3 is the case that made it concrete: the port
landed complete, and a reader still could not run it without being told that the
57.4 GB repository is ~28.5 GB in the arm we actually load, split across six
component directories, with a native `.pth` layout we refuse by name and thirteen
community quantized repositories we do not implement.

None of that is inferable from a header file. The code is the easy half to
publish; saying WHAT TO FEED IT is the half that makes the port usable, and it was
nowhere in the checklist.

THE RULE, in `.agents/porting-a-model.md` §2.1 with a checkbox in §2 and a
pointer from AGENTS.md's "Shared seams": every ported model documents the
checkpoints it was built and gated against in `docs/USAGE.md`, in the SAME change
that makes the capability reachable, mirroring the table MiniMax-H3 already
carries — file name, size, and a link to the exact HuggingFace repo, grouped by
arm.

WHAT A ROW OWES, and each clause is there because something bit us:

  * The repo id AND the revision. A repo id alone is not a pin --
    `unsloth/Qwen3.6-27B-NVFP4` was silently re-quantized in place under an
    unchanged name, and Music3's GGUF lineage is published four different ways
    under one model (`audiocpp`, `mm3`, `qwen3`, `wan`) with `wan` colliding with
    genuine Wan video GGUFs. A quantized artifact records its sha256 too.
  * Which arms are REFUSED, so a user reads the refusal in the docs rather than
    discovering it at load time -- the same polarity as the refuse-by-name rule
    one paragraph above it.
  * The total RESIDENT size, because that is what decides whether a reader can
    run it at all, and it is not the repository's size.
  * Whether a THIRD PARTY published it. Community quant repos are the arm most
    users actually reach for and they carry different provenance from a
    first-party release.

Placed in `porting-a-model.md` rather than in `verification.md` or `benchmarking.md`
because it is a property of SHIPPING a model, not of gating or measuring one, and
because that file is the checklist an implementer already has open. AGENTS.md
carries the rule in prose so it is reachable without opening the guide.

Issue: #672

FOLLOWING_AGENTS_PROTOCOL

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
@localai-bot
localai-bot force-pushed the row/PORTING-WEIGHTS-RULE branch from 07092fb to 81389a6 Compare August 16, 2026 02:06
The commit-protocol-tag gate validates the PR DESCRIPTION as well as every
commit in the range, and the description was missing the protocol paragraph.
Editing the body does not re-run the gate on this workflow's triggers, so this
empty commit is the re-trigger.

FOLLOWING_AGENTS_PROTOCOL

Issue: #672

Following-Agents-Protocol: true
AI-Assisted: true
Assisted-by: AGENT:claude-opus-5 [Claude Code]
@localai-bot
localai-bot merged commit 89290a4 into main Aug 16, 2026
17 of 23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants