Model review audits
Compare · P25 firmware review

Head to head

Same brief, same rubric, same scale. Put up to three models side by side: dimension scores, how many of their claims held up, and which issues each review raised.

From the audits

Same protocol, a different half of the chain

Both clean-room audits find the microphone route and the AT1846S filters, both propose one-layer mode and the M17 tap, and both miss the vocoder CPU wall. Grok 4.6 also finds de-emphasis, the 8 kHz rule and the capture bug. DeepSeek V4.1 Flash runs more code, derives the clock path from the manual and makes fewer errors per claim, but clears de-emphasis. An earlier DeepSeek V4.1 Flash run on the original task delegated work to Muse Spark 1.3 subagents, so its grade does not represent this model; this run replaces it.

From the DeepSeek V4.1 Flash audit, 17 September 2026.

Weighted score

Out of 100, on the grade scale.

Where the points went

Earned and lost, by rubric slot

Each bar is a model’s 100-point grade split into the rubric’s weighted slots; filled is earned, empty is lost. The slots line up, so a gap in one bar against a full slot in another is exactly where the models part ways.

DeepSeek V4.1 Flash
66/ 100
Grok 4.6
70/ 100
  • 1Accuracy & evidence30 pts
  • 2Coverage of decode problems25 pts
  • 3Root cause & prioritisation15 pts
  • 4Fix plan & acceptance gates15 pts
  • 5Originality & attribution10 pts
  • 6Clarity & calibration5 pts
Dimension profile

Scores on each rubric dimension

Each dimension out of 100, then the weighted total, over the grade zones. The compared models are the coloured dots, each joined down the dimensions by a thin line; the other models on this task are the small grey ones. Hover or focus a row for every score and the auditor’s reasoning.

  • ADeepSeek V4.1 Flash
  • BGrok 4.6
  • 2 other models on this task
Accuracy & evidence30%Coverage of decode problems25%Root cause & prioritisation15%Fix plan & acceptance gates15%Originality & attribution10%Clarity & calibration5%Weighted total100%FDCBA050658090100 Accuracy & evidence30%Coverage of decode problems25%Root cause & prioritisation15%Fix plan & acceptance gates15%Originality & attribution10%Clarity & calibration5%Weighted total100%FDCBA
Scores and weighted points
Dimension Weight A · DeepSeek V4.1 FlashB · Grok 4.6Muse Spark 1.3 ContributorGLM 5.3 Flash A − B
Accuracy & evidence 30% 73 · 21.9 pts 74 · 22.2 pts 74 · 22.2 pts 64 · 19.2 pts −1
Coverage of decode problems 25% 49 · 12.3 pts 59 · 14.8 pts 54 · 13.5 pts 34 · 8.5 pts −10
Root cause & prioritisation 15% 66 · 9.9 pts 70 · 10.5 pts 72 · 10.8 pts 62 · 9.3 pts −4
Fix plan & acceptance gates 15% 70 · 10.5 pts 75 · 11.3 pts 71 · 10.7 pts 62 · 9.3 pts −5
Originality & attribution 10% 74 · 7.4 pts 72 · 7.2 pts 70 · 7.0 pts 58 · 5.8 pts +2
Clarity & calibration 5% 74 · 3.7 pts 78 · 3.9 pts 80 · 4.0 pts 68 · 3.4 pts −4
Weighted total 100% 66 · C−70 · C68 · C−56 · D −4
Claim check

Every claim, checked

One cell per claim in each audit’s claim table, checked at the lines it cites. Hover a cell for the claim and the auditor’s note. The reviews made different numbers of claims, so the bar under each grid gives the shares.

DeepSeek V4.1 Flash’s claim table · Grok 4.6’s claim table

  • Holds
  • Qualifiedoverstated, miscounted or doubtful
  • Wrong
DeepSeek V4.1 Flash35 claims checked

28 hold · 4 qualified · 3 wrong · 80% hold

Grok 4.630 claims checked

21 hold · 7 qualified · 2 wrong · 70% hold

Issue coverage

What each review raised

DeepSeek V4.1 Flash found 2 of the 4 decode-critical issues; Grok 4.6 found 3 of the 4 decode-critical issues. Every tracked issue below, with the reviews that were already in the repository for reference.

Issue signatures

Each review as a trace across the tracked issues. Where traces part is where the reviews differ; hover a column for every review’s entry. Column numbers match the table below.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Project docs earlier repo review · in the repository Grok 4.6 model · Sep 17 DeepSeek V4.1 Flash model · Sep 17
  • raised
  • partly
  • absent
  • Decode-critical
Issues raised by each review of P25 voice decoding on the DM-1701
# Issue Project docsEarlier repo review · in the repository Grok 4.6Model · Sep 17 DeepSeek V4.1 FlashModel · Sep 17
1 Capture export stages the wrong I2S halfwords absent raised§1, first code change absentits first experiment uses that capture
2 Capture parser certifies an incomplete stream absent absent absent
3 pcm_starve never increments absentdocumented as working absent absent
4 No static RAM margin partlymargins still to measure absent raisedM6, 0 bytes free
5 The I2S stream is most likely microphone audio Decode-criticalmissed partlyopen, leaning sceptical raised§1, 0x89 versus 0xC9 raisedB1, four-value test
6 HR-C6000 de-emphasis on the capture path Decode-critical absent raised§2, bit 5 of 0x34 absentcalls it benign
7 AT1846S FM filters, low-frequency bit, 25 kHz Decode-critical partly“require characterization” raised§2, register level raisedB2, filter register
8 0x10=0x6E hybrid state; 0x36 dual role partlybring-up clock rules partlymisses 0x6E and the 0x36 clock gate partly“undocumented hybrid state”
9 Manual: I2S frame clock “must be 8KHz” Decode-criticalmissed absent raised§3 absentquotes the paragraph, not the rule
10 One-layer 4FSK test mode as a P25 tap partlystock BER-test block only raisedGate D raisedB5, exact recipe
11 ±10% health gate versus ±1% timing clamp absent absent raisedB3, impact overstated
12 Fail-closed muting at LDU cadence absent absentlate-entry mute only absent
13 Non-standard MFID mutes clear calls absent absent absent
14 Test waveform shares the receiver’s RRC filter partly“synthetic RRC/AWGN” caveat absent partlytested it, says not to fix
15 MCU runs at 72 MHz raised raisedin passing absent
16 Vocoder needs 11–16× the 72 MHz CPU Decode-criticalmissed partlydecode timing unmeasured absent“fine on a 1 ms tick” absent“vocoder question settled”
17 Direct discriminator tap (M17 mod) raised raiseduncredited raisedpins, timer ADC, 48 kS/s
18 Phase 2 architecture and scope partlynot implemented partlymisplaces the AMBE+2 decoder partlyvoice via mbelib AMBE+2
19 Two unverified SPI writes per decoded 20 ms frame absent absent absent
20 Capture sessions lack epochs absent absent partlymeasured=0 only
21 Ring and tick real-time budget partlydeadlines unproven partlycalls it fine absent
22 Clock config 3 assumes 12,288 Hz; the codec formula gives 12,000 absent absent raisedB3, clock model
23 Clock-config writes bypass the verified SPI writer partlySPI retry note absent raisedM1

From the provenance table in the GLM 5.3 Flash audit (17 Sep 2026), the newest audit on this task. Shaded columns are reviews that were already in the repository.