The Cassandra T1 checkpoint is the file we say it is
The released epoch-5 FP16 checkpoint reassembles to 2,659,500,664 bytes with SHA-256 D70C813C513F5232A25313FA60338F862020BA942ED26D54F62511766FA5F044. The tokenizer is 2,253,607 bytes with SHA-256 376A9537FCE79B7004237845E6B2C9991661E6BAEEA0B76AF9C9A3C1EB405C4D. The architecture is 28 layers at hidden size 2,048, grouped-query attention with 16 query and 4 key-value heads, SwiGLU at intermediate 5,632, RoPE and RMSNorm, vocabulary 32,768, mask token 32,766. Recorded training cross-entropy ran 3.78, 2.89, 2.67, 2.42, 2.2561 across five epochs.
A hash either matches or it does not. There is no tolerance to argue about.
File identity and declared architecture. The hash pins the bytes, the part sizes pin the reassembly, and the configuration file states the shape of the network that consumes them.
- It is not a benchmark. Cassandra T1 publishes no MMLU, HumanEval or GSM8K score, and any percentage attributed to it comes from a draft we withdrew.
- The loss trajectory is a training log, not a held-out evaluation. It shows the run descended. It does not show the model is good.
- Output quality is research-stage. Short factual answers are better at epoch 5 than earlier, long-form generation is still unstable, and the repository says so in its own limitations section.
- The second checkpoint in the repository, the v2 scratch run, is newer by timestamp and worse by inspection. It is published for transparency, not as a baseline.
git lfs install
GIT_LFS_SKIP_SMUDGE=1 git clone --depth 1 \
https://github.com/Chorozion/Casandra-t1-diffusion-edge-model.git cassandra-t1
cd cassandra-t1
# With smudge skipped, each weight file on disk is its LFS pointer:
# the SHA-256 of that part and its exact byte count.
cat weights/cassandra_ep5_fp16.pt.part001 weights/cassandra_ep5_fp16.pt.part002
# The parts must sum to the published reassembled size.
awk '/^size /{s+=$2} END{print s}' weights/cassandra_ep5_fp16.pt.part00*
# The tokenizer is a single object, so its pointer oid IS the published hash.
cat release/tokenizer.json# 2.6 GB for the epoch-5 checkpoint. Add the v2 parts to --include only if # you want the other 16 GB as well. git lfs pull --include="weights/cassandra_ep5_fp16.pt.part*,weights/checksums.sha256,release/tokenizer.json" # Two things about checksums.sha256 that the repository does not mention. # It lists bare filenames, so it only verifies from inside weights/. And it # has CRLF line endings, so sha256sum -c reads a carriage return as part of # every filename and verifies nothing. Strip it, and select the rows whose # files you actually pulled. cd weights tr -d '\r' < checksums.sha256 | grep cassandra_ep5 | sha256sum -c cd .. cat weights/cassandra_ep5_fp16.pt.part00? > cassandra_ep5_fp16.pt sha256sum cassandra_ep5_fp16.pt wc -c < cassandra_ep5_fp16.pt sha256sum release/tokenizer.json
python - <<'PY'
import re, pathlib
src = pathlib.Path("src/model/config.py").read_text(encoding="utf-8")
for k in ("vocab_size", "hidden_size", "num_layers", "num_heads",
"num_kv_heads", "intermediate_size", "mask_token_id"):
m = re.search(rf"^\s*{k}\s*:\s*\w+\s*=\s*([0-9]+)", src, re.M)
print(f"{k:>18} = {m.group(1) if m else 'not found'}")
PYAll three blocks were run here, including the 2.6 GB download, and the transcript below is what they printed. The reassembled file hashed to the published value on the first attempt. Running it is also what found the two problems now written into block 2: checksums.sha256 lists bare filenames, and it has CRLF line endings, so the repository's own documented sha256sum -c command verifies nothing and reports that no file was verified.
# pointer check
oid sha256:8be8d86aa08a0ba37a2252f67e8b8cb55de7ec11007b10b30d76be94e82dcf41
size 1900000000
oid sha256:d469b42bbdd66fc5ba4f20e1869ad668195d0fd163cd8e1b7e1de51144377813
size 759500664
2659500664
oid sha256:376a9537fce79b7004237845e6b2c9991661e6baeea0b76af9c9a3c1eb405c4d
size 2253607
# after download
cassandra_ep5_fp16.pt.part001: OK
cassandra_ep5_fp16.pt.part002: OK
d70c813c513f5232a25313fa60338f862020ba942ed26d54f62511766fa5f044 *cassandra_ep5_fp16.pt
2659500664
376a9537fce79b7004237845e6b2c9991661e6baeea0b76af9c9a3c1eb405c4d *release/tokenizer.json
# architecture
vocab_size = 32768
hidden_size = 2048
num_layers = 28
num_heads = 16
num_kv_heads = 4
intermediate_size = 5632
mask_token_id = 32766None. Hashes are compared as strings and sizes as integers. Two cosmetic differences are expected and neither is a failure: sha256sum prints lowercase where the repository table prints uppercase, and on a system where it opens files in binary mode it prefixes the filename with an asterisk. If one hex character differs, the file you have is not the file we released, and you should say so publicly rather than work around it.
- Pointer check
- Any machine with git and git-lfs. Under a minute, a few hundred kilobytes of traffic.
- Full verification
- 2.6 GB download plus 2.6 GB of free disk for the reassembled file, so 5.3 GB in total while both exist. The download took about twenty minutes on a residential connection here, and reassembling and hashing took a few minutes after that.
- Running the model
- The inference scripts assume CUDA. A 1.3B model in FP16 needs roughly 3 GB of VRAM for weights and more for activations; 8 GB is comfortable. There is no CPU path in the released scripts.
- Known friction
- The released scripts carry path assumptions from the machine they were written on, and the repository says so. Expect to edit a path before an inference run starts.
Any one of these, demonstrated, retires the claim from this site.
- The reassembled file hashes to anything other than D70C813C513F5232A25313FA60338F862020BA942ED26D54F62511766FA5F044.
- The two parts do not sum to 2,659,500,664 bytes.
- src/model/config.py declares a different layer count, hidden size or head configuration than the table above.
- A third party loads the checkpoint and finds a parameter count that cannot be produced by the declared architecture.