Repository navigation
TinyTitan 5.17
TinyTitan 5.17 — the katcoder install works again
This release fixes the converter defect that made every fresh KAT-Coder-V2.5-Dev install fail (issue
#19), makes an interrupted conversion stop promptly and cleanly instead of ending in a crash report,
and moves the user documentation into the wiki.
What is new
tools/install_models.sh katcoderandkatcoder bothinstall again. KAT is the one
checkpoint in this family that ships its routed experts per tensor, and the fusion that stacks
them guarded against a repeated tensor by the tensor's name alone — while the converter adds one
tensor once per requested width, and this family is always converted with--bits 4 8. The second
width therefore looked like a duplicate, and the conversion stopped on the first routed expert
withduplicate source tensor model.language_model.layers.N.mlp.experts.0.down_proj.weight. The
guard is keyed by(width, name)now. Checked by converting the pinned checkpoint for real:
shardmodel-00000, which carries 2,075 per-expert routed tensors, converts at both widths and
writes the fusedswitch_mlp.{gate,up,down}_projstacks with a 256-expert axis (1.75 GB at 4-bit,
2.82 GB at 8-bit, 27 tensors each), then continues to the next shard with no error. Installs
already undermodels/were never affected: the defect was in conversion, not in the runtime. The
full install and the §4 verification ofdocs/adding-a-model.mdremain open as TT-048.- An interrupted conversion stops when you stop it. Ctrl-C, a
pkillor a dying parent during
the ~69 GB fetch now ends in under a second, with no orphancurland no crash report. Two
defects were involved: the fetcher threads were daemon threads left alive at interpreter
finalization (CPython 3.14 aborts there and files a macOS crash report; 3.13 only printed the
fatal error), and a chunk retry could sit in a wait of up to two minutes without noticing the
stop, so even a pool that was joined took ~20 s to die. Checked by
benchmark/test_prepare_agentworld.py— twelve tests, of which the shutdown test reports three
live fetcher threads against the previous commit — and by interrupting the real download: the
converter is gone in 0 s, nocurlis left, the log carries no fatal error and no crash report is
written. A stopped download keeps its shards and resumes from them. - The user documentation is in the wiki. The README is the front page again: what the repository
delivers, one worked example, the benchmark table, the supported models and the links. The guides
— getting started, cookbook, installation and configuration, runtime controls, the OpenAI-
compatible server, the FAQ — are wiki pages, so each is found in one place instead of two. Wiki
links to repository files are absolute GitHub URLs, because the wiki is a separate repository.
Also in this release
- The Qwen3.5-MoE converter has a test suite for the first time:
benchmark/test_prepare_agentworld.pypins the per-expert naming contract, the both-widths
fusion, expert placement by index rather than by arrival, per-width emission, the incomplete-layer
refusal and the shutdown behaviour. It runs in the converter gate in CI, from a synthetic shard,
with no checkpoint and no network. docs/t6-reply-check-offline.mdrecords the side-engine reply-check task measured on 417 real
recorded replies: 66.7% precision and 38.5% recall against a pre-registered 95%/50% gate, so the
task is not wired. The harness, the hand-audited labels and the tests that pin the label traps
ship with it as the record.- The wiki's install page states the breakage honestly: the
katcodercommand was broken in
5.4–5.16, there is no installer workaround on those builds (convert one width at a time with
prepare_agentworld.py --bits 4), and a fresh full install is tracked as TT-048.
Performance
- No performance change and no new timings.
- This release touches the converter and the documentation, not the runtime; the README's benchmark
table is unchanged and was not re-run.
Verification
tools/lint.sh— all eleven gates clean.swift test --no-parallel— 1,527 tests in 234 suites.- 7 of the 16 stored golden baselines compared byte-identical, then a clean scratch release
build with a clean warning scan. - Not checked, because their install is not under
models/and nothing may be fetched to change
that:ornith-4,ornith-8,qwen38-8,agentworld-4,agentworld-8,katcoder-4,
katcoder-8,qwen35-2b-4,qwen35-2b-8.
Checksum
tinytitan-5.17-macos-arm64.tar.gz sha256: e88102c7767fc91cd387f5340463005bfbda540e80c077368bd446c556180a23
tinytitan-5.17-macos-arm64.tar.gz size: 15877987 bytes
tinytitan-lib-5.17-macos-arm64.tar.gz sha256: b4bf4be5c9839c4070317d4973ed15f5a7c21c34232736046156f88d2ee674d2
tinytitan-lib-5.17-macos-arm64.tar.gz size: 17033554 bytes