# F_Structure_LM audit paper — arXiv submission package

Author: yxpil
Artefact under study: <https://www.modelscope.cn/models/Yxpilow/F_Structure_LM>

## Title

**A Published "Fourier Language Model" Is a Retrieval Index, Not a Model:
Provable Order Blindness and a Held-Out Audit of a 134 MB Chat Artefact**

## Suggested arXiv classification

- Primary: `cs.CL` (Computation and Language) — the object is a claimed chat
  language model and the measurement is next-token accuracy against classical
  $n$-gram baselines.
- Cross-lists: `cs.LG` (Machine Learning, for the kNN/FNet comparison and the
  index-density result), `cs.IR` (Information Retrieval, because the artefact is
  in fact a cosine nearest-neighbour index), `cs.SE` (Software Engineering, for
  the reproducibility findings: the shipped payload does not reproduce the
  outputs printed on its own model card).

`cs.CL` is the right primary. The paper is a measurement audit of a public
model release, not a new architecture, and arXiv's moderation reads that
material as NLP. If a moderator objects that nothing here *is* a model,
`cs.LG` is the natural fallback primary and `cs.CL` the cross-list.

## Abstract (verbatim)

> A public model repository named F_Structure_LM advertises "a Fourier transform
> that replaces the self-attention of a Transformer" and shows a fluent reply to
> a prompt that is not in its training data. We read all 140,569,669 bytes of
> its payload and report what it is: 1,849,576 rows of 17 float32 numbers, each
> paired with one token label, plus three integers — and no learnable parameter
> of any kind. Inference is cosine nearest-neighbour lookup in that table.
> Because each row is the magnitude spectrum of raw byte-level BPE identifiers,
> two failure modes are theorems rather than measurements: the spectrum is
> invariant to time reversal, so reversing a context cannot change what is
> retrieved (99.05% of 4,000 held-out contexts retrieve the identical
> neighbour), and the zeroth bin is the unordered sum of the identifiers,
> carrying 24.0% of a typical key's energy. On the official LCCC valid and test
> splits the published index predicts the next token correctly for 2.90% of
> 4,000 sampled contexts — below its own constant-label baseline (5.48%) and far
> below a unigram over the same corpus (34.48%), against bigram 18.05%, trigram
> 11.63%, exact 12-gram 0.43%. Rebuilding the identical feature recipe on 50,000
> sampled training dialogues, with 92.7 rows per dialogue instead of the
> published 37.0, lifts the same decoder to 21.63%: the artefact's failure sits
> in index density and label coverage, not in order blindness alone. At
> generation time it lands on points of its own table (mean top-1 cosine
> 0.998–1.000 over 896 steps), none of the three replies printed on its model
> card reproduce, and 32.4% of rows carry a label that cannot be decoded without
> an adjacent one. What it does genuinely well is cheap: 139 tokens/s and 841 MB
> resident on a CPU, no GPU. We close by stating what a "Fourier language model"
> claim would have to measure to be checkable.

## BibTeX entry (after announcement)

```bibtex
@misc{yxpil2026fourierlm,
  author = {Yang, Daozhendong},
  title  = {A Published "Fourier Language Model" Is a Retrieval Index, Not a
            Model: Provable Order Blindness and a Held-Out Audit of a 134 MB
            Chat Artefact},
  year   = {2026},
  note   = {arXiv:XXXX.XXXXX [cs.CL]}
}
```

## Files

| path | role |
| --- | --- |
| `main.tex` | the paper, one column-balanced build, 9 pages |
| `common.tex` | shared preamble, byte-identical to `../_shared/common.tex` |
| `refs.bib` | 13 entries, all real and all cited |
| `figures/fig_energy.pdf` | per-bin energy share of the published keys |
| `figures/fig_cone.pdf` | cosine distribution of 199,994 random key pairs |
| `figures/fig_methods.pdf` | the four held-out decoders as a bar chart |
| `figures/fig_samples.pdf` | greedy continuations, rendered with a CJK font |
| `scripts/inspect_ckpt.py` | tensor shapes, dtypes, learnable-parameter count |
| `scripts/headline_facts.py` | structure, DC energy, reversal, scaling, cone |
| `scripts/analyze_index.py` | label frequency, throughput, latency, RSS |
| `scripts/build_replication.py` | rebuilds the index from an LCCC train sample |
| `scripts/eval_heldout.py` | held-out accuracy, band ablations, $n$-gram baselines, leakage |
| `scripts/stratum_eval.py` | the same queries split into clean vs boundary-straddling |
| `scripts/boundary_stat.py` | how many sampled positions cross a dialogue boundary |
| `scripts/generate_samples.py` | reproduces the published greedy decoder on 7 prompts |
| `scripts/token_decodability.py` | which emitted labels cannot be printed alone |
| `scripts/make_figures.py` | draws all four figures from the JSON evidence |
| `scripts/results/*.json` | raw output; every number in the paper traces here |
| `README.md` | this file |

## Build

```bash
tectonic -X compile main.tex --keep-logs
```

or classically:

```bash
pdflatex main && bibtex main && pdflatex main && pdflatex main
```

The build is clean: no undefined references, no overfull boxes, 9 pages.

## Packaging for arXiv

```bash
bash ../make_package.sh fourier-lm            # paper-only tarball
```

The artifact tarball additionally ships `scripts/` and `scripts/results/`, so a
reader can re-run every number. The published payload
(`fourier_50K.pt`, 140,569,669 B) is **not** shipped in either tarball; it is
downloaded from the ModelScope repository named in the paper.

## Reproduction

Requirements: Python 3.11+, `torch` (2.14.1+cpu measured), `numpy` 2.5,
`tokenizers` 0.20, `matplotlib`, and network access to ModelScope for two
downloads: the model repository and the LCCC-base mirror
(`train` 932,644,005 B, `valid`, `test`). Point the scripts at them with
`FSLM_DIR` and `LCCC_DIR`.

```bash
export FSLM_DIR=$HOME/cache/fslm LCCC_DIR=$HOME/cache/lccc
python -X utf8 scripts/inspect_ckpt.py
python -X utf8 scripts/headline_facts.py
python -X utf8 scripts/analyze_index.py
python -X utf8 scripts/build_replication.py      # ~32 s, writes a 300 MB cache
python -X utf8 scripts/eval_heldout.py           # ~6 min
python -X utf8 scripts/stratum_eval.py           # ~1 min
python -X utf8 scripts/boundary_stat.py
python -X utf8 scripts/generate_samples.py       # ~2 min
python -X utf8 scripts/token_decodability.py
python -X utf8 scripts/make_figures.py
```

Total wall time on the measured machine is about 15 minutes, dominated by the
two full-index searches. Peak RSS is ~3.5 GB during `eval_heldout.py` (both
indices are float32-normalised in RAM at once); nothing needs a GPU.

## Submission steps

1. New submission at <https://arxiv.org/submit/>.
2. Primary `cs.CL`, cross-lists `cs.LG`, `cs.IR`, `cs.SE`.
3. Paste the title and the abstract above; author `Daozhendong Yang`, with the
   same identity used in the paper and here.
4. Upload the tarball; arXiv detects `main.tex` and runs `pdflatex` + `bibtex`.
5. Inspect the auto-built PDF against the local one (9 pages, 4 figures,
   6 tables).
6. Choose a license and submit.

## Provenance and limits of the claims

This is an audit of a third-party artefact that happens to be authored by the
same person who submitted the paper. Two consequences are handled explicitly in
the text rather than hidden:

- **No reconstruction claim.** The paper never asserts that the published index
  was built from a specific corpus or split. LCCC-base is used because the
  sibling project names it and because the released tokenizer matches its
  preprocessing; the replication is a like-for-like control, and Section 4 says
  so.
- **Negative results about the author's own artefact are kept, not softened**:
  the 2.90% figure, the fact that it is below the artefact's own constant-label
  floor, and the non-reproduction of the three model-card showcase replies are
  reported as measured, with the caveat that the card's decoding settings are
  unknown.
- **The replication's advantage is reported against itself.** 2.5% of held-out
  queries match the *replication* index exactly (0.0% for the published index),
  so the control's 21.63% is if anything inflated; Section 6.3 states this.
- **`index_analysis.json` contains three fields that are not cited anywhere** —
  `highpass`, `mean_proxy`, `duplicates`. They were produced by querying the
  index with rows drawn from that same index, which makes their top-1 cosine
  exactly 1.0 and their accuracy meaningless. They are kept in the shipped
  evidence for transparency and are deliberately excluded from the paper.
- **Timing is CPU-only** (14 threads, PyTorch 2.14.1+cpu). The card's memory
  claim is about VRAM, which was not available; the paper reports the measured
  CPU resident set and says plainly which claim it could not test.

## What the paper does not claim

- It does not claim retrieval-based chat is worthless. kNN-LM and REALM are
  cited as the legitimate version of the idea, and the artefact's throughput and
  determinism are reported as genuine properties.
- It does not claim the published index was built from LCCC.
- It does not claim the model-card screenshots were fabricated; it claims they
  do not reproduce from the shipped payload under the shipped decoder, and lists
  the two possible explanations.
- It does not report perplexity or cross-entropy, because the sampler has no
  distribution over the vocabulary to score — that absence is itself a finding,
  discussed in Section 8.
