# 16 · Where it stands (live)

> Closed record · research record 1.0 · as of 2026-10-25 16:46; the author closed the research lines on 2026-10-23. Current standing, not a final result: Open fronts: https://r4topunk.github.io/boar-research/data/status.json.
>
> Final · as of 2026-10-25 16:46 · 0 of 71 wins on the phone, U-total 0.165 (Claude) / 0.242 (gpt-5.6-sol), below the 0.50 bar

- Page: https://r4topunk.github.io/boar-research/research/honest-number/ · Markdown twin: https://r4topunk.github.io/boar-research/research/honest-number.md · Whole paper: https://r4topunk.github.io/boar-research/llms-full.txt · Index: https://r4topunk.github.io/boar-research/llms.txt
- Span: 2026-10-05 → 10-25

**In one sentence.** As of 2026-10-25 03:30 the research lines are closed and the submitted app (LabRat, formerly BoarLite) runs offline on a phone. Its headline number will be the final ruler (bench v0.4) measured on the phone by DEVICE-FINAL, which is running and has no result yet (author's decision of 2026-10-25, AD-05). As of 2026-10-25, until it lands the record holds history: the same ruler on the desktop twin of the pre-rename engine b4ef94f3 (one seed, before the Rat persona line) won 0 of 71 under both judge families with a lower-family U-total of 0.164, below the 0.50 bar; under the Claude judge the old ratio did not reach 0.50 on the earlier held-out sets; and no unexposed held-out number exists. The thesis the record presents is the author's: small models need external knowledge, and the app is a harness built around what a small model can really do [F-2236]; the outcome labels of the closing tests are its evidence and its limits. Three metric families stay separate. This chapter is finalized at closure (v1.0).

## For curious readers {#curious}

#### Not shown, as of 25 October

As of 25 October 2026, the research is closed and the bar has not been shown to be reached. The number that will count is the new exam measured on the phone, running now. The same exam on a desktop copy of the app's earlier engine won none of 71 head-to-heads and stayed below the bar. On the earlier sealed bounty-style questions the frozen 4B build delivered about a quarter of the frontier answer's value above nothing (0.261) and won none of 51.

*Badge:* new exam · desktop copy · 2 judge families · 71 · 1 run (history) | V-para · sealed at the time · Claude Opus · 51 · 2 runs · old scale (history).

#### Three numbers that are not the same kind

You will see three kinds of number on this site: the old ratio against the frontier answer, answer labels from the closing tests ("right", "wrong without a warning"), and the new exam's score (on the phone: running; on a desktop copy: below the bar). We never put them on one scale.

#### Our claim, in our words

The prepared sentence: "BOAR is not shown to be half as good as frontier AI with web." It was written for the research engine; it will be revised for LabRat (formerly BoarLite) and posted with a link to this article, and the change log will say so.

[sentence withheld in this file; see https://r4topunk.github.io/boar-research/data/ or the chapter record]

*Facts: [F-2215] [F-001] [F-1245]*

## For AI professionals {#ai}

### The record for this chapter

**Key facts, in three panels that never share an axis:**
- **Panel A, judge.v1 ratio (old scale; history since 2026-10-25, `history.old_scale`).** V-para (held-out at run time, Opus, 2 seeds): the frozen 4B build raw 0.413 (0.384–0.445), floor-adjusted 0.261 (0.224–0.300), 0 of 51 wins [F-001]. v0.2 (burnt → dev): raw 0.512 / floor-adjusted 0.388, 0/0/110 and 0/1/109 [F-002]. Bar reading: no configuration reaches floor-adjusted 0.50; the formal raw rule is met only by the desktop deep tier on development data [F-004]. Closest configuration (desktop, dev-style): floor-adjusted 0.436 (0.401–0.472), 0 of 51 [F-009]; never delivered [F-1532]. Cross-family (post-hoc): V-para 0.361 / 0.577 floor-adjusted, win 0.00–0.01 [F-017]; v0.2 [F-018]. Set status: both former held-out sets are now development data [F-038].
- **Panel B, outcome labels (closing tests; dev; pack-written where named; Haiku labels).** With the pack, correct-any 0.48 vs 0.26 without [F-1704]; 0 of 9 packs at 0.75 [F-1707]; 44 of 50 undelivered facts already in the kit [F-2100]; the shipped style on ENGINE-RC: correct-any 0.43, wrong-unwarned 0.12 [F-1727].
- **Panel C, the second ruler.** Bench v0.4 frozen [F-2070]; references of both families 75/75 [F-2110] [F-2212]. **On the phone (headline):** DEVICE-FINAL is running (OF-8; criterion frozen 2026-10-25, [F-2227]); when it lands, its M1 (win-rate first, both families, seeds stated, U-total per family, the lower family against the bar) and M5 (speed, memory, offline) fill the headline slot in whichever direction they fall; until then the panel predicts nothing. **On the desktop (history, `history.desktop_ruler`):** BoarLite b4ef94f3, one seed: 0 of 71 wins under both families; U-total Claude 0.164 (0.123–0.208), gpt-5.6-sol 0.245 (0.194–0.300); lower family 0.164 (0.123–0.206), below the 0.50 bar; information-available split as in chapter 12 [F-2215] [F-2217]; labelled "desktop twin, one seed, not a phone run" and "engine b4ef94f3, before the Rat persona line".
- **Product state.** Main engine Qwen3-1.7B [F-1386]; the 4B leads it by +0.109 under Opus on v0.1 51 dev [F-2077]; submission LabRat (formerly BoarLite; renamed 2026-10-25, [F-2224]), built from final candidate b4ef94f3 [F-2210] plus the Rat persona line and removed code [F-2225] [F-2223], offline on a Pixel 8a with the first answer in 11.9 s on a pre-rename APK [F-2201]; search port merged as ON_NO_HEALTH against its frozen verdict, by the author's prior condition [F-2207] [F-2209]; ships with the Wikipedia-health limitation [F-2206].
- Claim text: the prepared sentence is "BOAR is not shown to be half as good as frontier AI with web" (draft v4.2.4, [F-1245]). Whether it was posted is not in the record; it must be revised for LabRat before closure (OF-5); by the author's decision of 2026-10-25 the revised claim is posted after v1.0 with a link to the article (AD-17). The plan (2026-10-24 PM): lead with what the app does and the final ruler numbers labelled with both judge families, seeds, desktop twin or phone, and win-rate, with product numbers labelled by engine; wording to an independent reviewer, then the author [F-2233].

**Key decisions:** [D-115] (Claude Opus stays the headline), [D-089] (red-team wording), [D-147] (deep tier not delivered), [D-170] (first thesis), [D-215] (thesis restated), [D-216] (publication decisions: LabRat public, headline on the phone), [D-183] (BoarLite), [D-203] (search port merged), [D-204] (final ruler run), [D-211] (LabRat), [D-212] (DEVICE-FINAL). **Reframing to show (EDITOR FLAG in `data/status.json`):** the standing changed from "judge.v1 ratios of the 4B and the deep tier" (as of 2026-10-18) to "research closed; conditional thesis; 1.7B; BoarLite; ruler frozen without verdict" (as of 2026-10-24 16:51) to "BoarLite final candidate on a phone; ruler run done, numbers held" (as of 2026-10-24 20:34) to "LabRat (renamed, one engine line after the ruler); ruler number held and scoped to b4ef94f3; on-phone matrix running" (as of 2026-10-25 03:30) to "headline = the ruler on the phone (DEVICE-FINAL, templated); the desktop run of b4ef94f3 and the old 4B ladder published as history; thesis restated" (author's decisions, 2026-10-25). Old rows stay, as history, never pooled with the headline.

**Turning point (so far):** the author's closing claim stated in the conditional form the tests allow, rather than the unconditional form first written; and on 2026-10-25 the author made the phone, not the desktop, the place where the submitted app's number is read. Any landed open front is added here with its date (PLAN PT-13).

### 6.1 The frozen 4B build on held-out sets (standing as of 2026-10-24; unchanged since the 2026-10-05/06 claim runs)

On V-para (held-out at run time; n = 51; seeds 42 and 43; Opus) the 4B claim build scores raw 0.413 (0.384–0.445), floor-adjusted 0.261 (0.224–0.300), above-decline 0.155 (0.112–0.200), and loses all 51 comparisons in both seeds. On v0.2 (held-out at run time, since burnt; n = 110; two seeds) it scores raw 0.512 (0.478–0.549), floor-adjusted 0.388 (0.346–0.434), W/T/L 0/0/110 and 0/1/109. Across the seven builds, held-out raw moved from 0.506 (baseline) to 0.512 (cut 6), +0.006, within noise. The cut 6 vs cut 3 comparison on v0.2 (Δ −0.0009, −0.0095…+0.0077) reuses 323 of 334 verdicts for byte-identical answers and is not an independent re-judging. For reference, Claude Haiku 5.5 without web scores raw 0.588 (0.559–0.615), floor-adjusted 0.48 (CI not computed) on V-para (1 run, 2026-10-05).

*Facts: [F-342]*

### 9 Threats to validity

**Body:** imported verbatim from §5 (one source of truth), grouped as construct, internal, external, statistical-conclusion and reproducibility threats, each with "mitigation in place" and "residual risk".

### The standing, as of 2026-10-25

**Headline (OF-8): Final ruler (bench v0.4) measured on the phone: LabRat on a Pixel 8a (DEVICE-FINAL, M1 + M5)**

Result (status.json headline.template): As of 2026-10-25, on a Pixel 8a in airplane mode, LabRat won 0 of 71 head-to-heads under the Claude Opus judge and 0 of 71 under OpenAI gpt-5.6-sol (via the Codex CLI). Ruler U-total: Claude 0.165 (0.127–0.205; seeds 42, 43), gpt-5.6-sol 0.242 (0.194–0.296; seeds 42, 43); the lower family, 0.165 (0.127–0.205), is below the 0.50 bar. Speed and memory: median answer 13.9 s, first word 9.8 s, 11.8 tokens/s, peak memory 3.87 GB, no network traffic.

State: landed. Rows:
<!-- lint:exempt:start -->
- [F-2238] DEVICE-FINAL M1, the final ruler measured on the phone: LabRat on a Pixel 8a (8 GB, airplane mode) answered bench v0.4 (71 headline items + 4 anchors) on seeds 42 and 43. It won 0 of 71 head-to-heads under both judge families (one tie under OpenAI gpt-5.6-sol on seed 42). U-total, both seeds pooled: Claude Opus 0.165 (0.127–0.205), OpenAI gpt-5.6-sol 0.242 (0.194–0.296). Per seed: Claude 0.167 (0.129–0.209) and 0.162 (0.125–0.201); gpt-5.6-sol 0.244 (0.193–0.298) and 0.241 (0.190–0.297). The lower family, Claude at 0.165 (0.127–0.205), is below the 0.50 bar. 5 headline items were refusals; answer coverage 0.90. 0 of 71 wins under both families; U-total 0.165 (Claude) / 0.242 (gpt-5.6-sol); below the 0.50 bar (ruler U-total) · set bench v0.4 (exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol via the Codex CLI (each vs its own references) · n 71 headline items + 4 anchors · seeds 42, 43 · CI Claude 0.127-0.205; gpt-5.6-sol 0.194-0.296 (pooled seeds 42+43) · date 2026-10-25 13:2x · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. v0.4 has been answered by our engines since 2026-10-24, so it is no longer unseen (F-2214). One reference family per judge family; stage 1 not run; no errata. Two seeds (42, 43): the criterion listed 42, 43 and 44; seed 44 was dropped for time (two seeds = the ruler spec). Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2239] DEVICE-FINAL phone vs desktop twin (seed 42, paired over the 71 headline items): Claude 0.167 on the phone vs 0.164 for the desktop twin of b4ef94f3, +0.003 (−0.022…+0.026), 21 items better and 16 worse; gpt-5.6-sol 0.244 vs 0.245, −0.007 (−0.039…+0.023), 22 better and 22 worse. The phone repeats the desktop number; a parity read, not a verdict. paired +0.003 (Claude) / −0.007 (gpt-5.6-sol) (ruler U-total) · set bench v0.4 (exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol via the Codex CLI (each vs its own references) · n 71 headline items · seeds 42 · CI Claude −0.022…+0.026; gpt-5.6-sol −0.039…+0.023 · date 2026-10-25 13:2x · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. v0.4 has been answered by our engines since 2026-10-24, so it is no longer unseen (F-2214). One reference family per judge family; stage 1 not run; no errata. The two engines differ by the Rat persona line and platform sampling. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2240] DEVICE-FINAL M5, speed, memory and offline on the Pixel 8a (model-written turns of v0.4 seed 42, n 82): total answer time p50 13.9 s (p90 19.6 s), first word p50 9.8 s (p90 14.5 s), decode 11.8 tokens/s, search 1.6 s, peak memory (RSS) 3.87 GB, battery at most 36.4 °C. After 45 minutes of continuous use (seed 43): 17.0 s p50 and 8.9 tokens/s. Cold starts: model load 1.6–1.7 s, first word 10.4–19.4 s. A fresh install on a cool phone decoded 16.7 tokens/s. Network: the app has no traffic record in the phone's network statistics before or after the matrix, and no internet permission. p50 13.9 s; first word 9.8 s; 11.8 tok/s; 3.87 GB; 0 network traffic (ruler U-total) · set bench v0.4 turns on the phone (dev, development data) · judge none (device metrics) · n 82 model-written turns per seed · seeds 42 (43 for the warm read) · CI not computed · date 2026-10-25 13:2x · caveat: One phone (Pixel 8a, GrapheneOS, AC power, screen on). Heat roughly halves decode speed under sustained use: quote the range. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.

<!-- lint:exempt:end -->
Metric: ruler U-total (71 headline items, health weight 0.5); verdict = the lower of the two judge families; never on one axis with the judge.v1 ratio or outcome-label shares.
Reported, in this order: win-rate under both judge families; U-total per family with CI and seeds; minimum over families and its CI; verdict against the 0.50 bar, stated plainly; M5 speed, memory, offline.

Note: Landed 2026-10-25 13:2x; filled from the DEVICE-FINAL rows (no placeholders left). Verdict word by the pre-registered rule: the lower family's point and CI are under 0.50, so 'below'. Numbers public by the author's decision of 2026-10-25 (AD-15 (b)).

**History, never pooled with the headline**

Earlier readings kept as history, never pooled with the headline: the old judge.v1 ratio (the 4B V-para ladder) and the desktop-twin ruler run of b4ef94f3 (before the Rat persona line; F-2223, F-2225).

**Old scale (judge.v1 ratio), history**

<!-- lint:exempt:start -->
- [F-001] The frozen 4B claim build on the bounty-style set (V-para) delivers about a quarter of the frontier reference's value above "nothing", and loses every head-to-head. raw 0.413 (0.384–0.445); floor-adjusted 0.261 (0.224–0.300); win/tie/loss 0/0/51 in both seeds (judge.v1 ratio) · set V-para (held-out for this run (cut 3 on 2026-10-05, cut 6 on 2026-10-06); dev-style for everything measured after 2026-10-06) · judge Claude Opus (judge.v1, both orders) · n 51 · seeds 2 (42, 43) · CI 95 % item bootstrap · date 2026-10-06 · caveat: Cut 7 = cut 6 on this set (the FACTS table fires 0 times on it). Public BAR-TABLE prints CI high 0.300; one claim draft prints 0.299 (rounding).
- [F-002] The same 4B claim build on the second set (v0.2, later burnt to dev). raw 0.512 (0.478–0.549); floor-adjusted 0.388 (0.346–0.434); win/tie/loss 0/0/110 and 0/1/109 (per seed) (judge.v1 ratio) · set v0.2 (held-out at run time; burnt → dev by ruling 2026-10-06) · judge Claude Opus (judge.v1, both orders) · n 110 · seeds 2 · CI 95 % item bootstrap · date 2026-10-06 · caveat: Claim draft v4.2.4 (§0 and Appendix A) carries the cut-3 values 0.513 / 0.389; the cut-6 = cut-7 values here are the ones to publish.
- [F-004] Bar status: no configuration reaches 0.50 on the primary (floor-adjusted) reading; the formal raw rule is met only on development data by the deep tier with thinking. best floor-adjusted on V-para = 0.436 (CI high 0.472), short by 0.064; formal raw rule (CI low > 0.50) met by deep + thinking on dev data only (desktop; the v0.2 leg of the 512 budget is 1 seed); 0 wins on every Claude-judged row of V-para and v0.2 (judge.v1 ratio) · set V-para; v0.2 (dev / dev-style, development data) · judge Claude Opus (judge.v1, both orders) · n 51 / 110 · seeds see rows · CI see F-28 · date 2026-10-10 · caveat: Never present as "bar reached". Under the Claude judge on held-out data the bar was not reached.
- [F-009] Recommended deep configuration (35B mixture-of-experts + 512-token thinking budget) on the bounty-style set. raw 0.553 (0.524–0.581; with seed noise 0.513–0.592); floor-adjusted 0.436 (0.401–0.472; with seed noise 0.387–0.486); win 0/51; desktop p50 ≈ 79 s (judge.v1 ratio) · set V-para (dev-style, development data) · judge Claude Opus (judge.v1, both orders) · n 51 · seeds 2 · CI 95 % item bootstrap; common-mode CI adds seed noise · date 2026-10-09 · caveat: Chosen as the best of ≥ 8 deep configurations on this same set: expect a winner's-curse discount of about 0.01–0.02. QUEUE prints raw 0.552; the two-seed aggregate is 0.553. Desktop only.
- [F-017] A judge from a different model family scores everything higher on V-para, but keeps the ranking and the near-zero win-rate. 4B: raw 0.497 (0.449–0.547), floor-adjusted 0.361; deep + think 512: raw 0.667 (0.621–0.711), floor-adjusted 0.577 (0.519–0.632); deep − 4B +0.171 (+0.123…+0.219) vs +0.139 under Claude; per-item Spearman 0.88–0.92; win-rate 0.00–0.01 (judge.v1 ratio) · set V-para (dev-style, development data) · judge cross-family: OpenAI gpt-5.6-sol (via the Codex CLI) (post-hoc, not pre-registered) · n 51 (408 judge calls) · seeds 2 · CI 95 % item bootstrap (4B floor-adjusted CI not in the sources read) · date 2026-10-16 · caveat: Post-hoc and not pre-registered; it is the only point above 0.50 floor-adjusted on V-para and exists only under the cross-family judge; the lower-judge rule keeps the Claude number as headline.
- [F-018] The cross-family judge on v0.2. 4B: raw 0.617 (0.567–0.666), floor-adjusted 0.517 (2 seeds); deep + think 512: raw 0.714 (0.666–0.759), floor-adjusted 0.639 (0.579–0.695) (1 seed); deep − 4B +0.097 vs +0.096 under Claude; Spearman 0.90–0.97; win-rate 2.7 % / 6.4 % vs 0 % under Claude (judge.v1 ratio) · set v0.2 (dev (burnt), development data) · judge cross-family: OpenAI gpt-5.6-sol (via the Codex CLI) (post-hoc, not pre-registered) · n 110 (660 judge calls) · seeds 4B 2, deep 1 · CI 95 % item bootstrap · date 2026-10-17 · caveat: Post-hoc. The Claude judge is the stricter family by ≈ 0.10 on both sets; the offset is stable across sets and arms.

<!-- lint:exempt:end -->
**Desktop-twin ruler run of the pre-rename engine, history**

<!-- lint:exempt:start -->
- [F-2215] RULER-FINAL U-total of BoarLite b4ef94f3 on v0.4: Claude family 0.164 (0.123-0.208), OpenAI gpt-5.6-sol family 0.245 (0.194-0.300); minimum over families 0.164 (0.123-0.206); win-rate 0 of 71 (Claude) and 0 of 71 with 1 tie (gpt-5.6-sol); fixed-text refusals on 3 items. Claude 0.164; gpt-5.6-sol 0.245; min 0.164; win-rate 0 (ruler U-total) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol (each vs its own references) · n 71 headline items · seeds 1 (42) · CI Claude 0.123-0.208; gpt-5.6-sol 0.194-0.300; min 0.123-0.206 · date 2026-10-24 20:34 · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. Desktop twin, one seed. Published by the author's decision of 2026-10-25 (AD-15 (b)): BoarLite/LabRat is the author's own submission. History, not the headline: desktop twin of engine b4ef94f3, one seed, before the Rat persona line and the cleanup (F-2223, F-2225); not a measurement of LabRat 7788924a. The headline is the on-phone run DEVICE-FINAL (OF-8).
- [F-2217] RULER-FINAL information-available split: Claude family U-total 0.164 where the installed packs hold the answer (n 19), 0.174 partly (n 25), 0.155 not at all (n 27); gpt-5.6-sol family 0.272 / 0.238 / 0.233: with the information present, the 1.7B does not deliver it. AVAILABLE 0.164 vs NONE 0.155 (Claude) (ruler U-total) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol · n 19 / 25 / 27 headline items · seeds 1 (42) · CI not computed · date 2026-10-24 20:34 · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. Pre-registered stratifier (spec r4). Published by the author's decision of 2026-10-25 (AD-15 (b)): BoarLite/LabRat is the author's own submission. History, not the headline: desktop twin of engine b4ef94f3, one seed, before the Rat persona line and the cleanup (F-2223, F-2225); not a measurement of LabRat 7788924a. The headline is the on-phone run DEVICE-FINAL (OF-8).
- [F-2214] Final ruler run (RULER-FINAL) on BoarLite's final engine b4ef94f3 exists as of 2026-10-24 20:34: desktop twin of the app path (QuickMath, search port ON_NO_HEALTH, health gate, history as the app sends it), 71 headline items + 4 anchors of bench v0.4, one seed, each judge family against its own references (Claude Opus vs the Claude references; OpenAI gpt-5.6-sol vs its references), 150 + 150 judge calls, addendum frozen before any generation; its numbers were held until the author's publication decision of 2026-10-25 (now public as F-2215 and F-2217; history, the headline is DEVICE-FINAL) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; now exposed to three engines)) · judge Claude Opus + OpenAI gpt-5.6-sol (each vs its own references) · date 2026-10-24 20:34 · caveat: Deviations from the spec: one seed (spec: two; the author's choice), one reference family per judge family, stage 1 (DECLINE2STAGE) not run, no errata, desktop twin not the APK on a phone (the spec labels desktop-twin numbers dev/parity evidence). v0.4 is the claim set: no tuning after this run.

<!-- lint:exempt:end -->
**Standing facts (status.json)**

<!-- lint:exempt:start -->
- [F-038] Every touch of a held-out set was logged; both held-out sets are now development data. v0.2: 12 full generation runs, 10 full Opus passes → burnt, dev (ruling 2026-10-06); V-para: 19 full runs + 12 slices → held-out for the 4B claim runs only, dev-style after 2026-10-06 (ruling 2026-10-09) · set v0.2; V-para (burnt / dev-style, development data) · judge UNKNOWN · n 110 / 58 (51 judged + 7 venue) · seeds UNKNOWN · CI not computed · date 2026-10-09
- [F-1653] Author closes research lines; CLOSING-TESTS plan. · date 2026-10-23
- [F-1690] Thesis to present with the app: right whenever the content is in a pack; app built for it. PACKPROOF supports only a conditional form (65 % when delivered) · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-23 · caveat: who: author; why: product framing; reversible: yes (framing) · later: 2026-10-25: the author restated the thesis (small models need external knowledge; a harness built around a small model's real capabilities); this sentence stays quoted as the hypothesis the closing tests checked.
- [F-1704] PACKPROOF pooled correct-any with pack installed vs without. 0.48 vs 0.26, Δ +0.23 (outcome-label share) · set 180 pack self-tests (written from the packs), dev (dev (pack-written self-tests), development data) · judge Claude Haiku 5.5-low labels; correct-any · n 180 · seeds 42 · CI CI +0.16..+0.31; n 180; seed 42 · date 2026-10-23 · caveat: self-tests favour the pack; hosts differ by arm; 1 seed Metric: outcome-label shares of n items (Claude Haiku 5.5-low labels, UXMATRIX protocol); not the judge.v1 ratio.
- [F-1707] Packs reaching the 0.75 "proves" bar. 0 of 9; 7 below 0.60 (not default-eligible by rule); best 0.60 (two Q&A packs), worst factbook 0.25 · set 180 pack self-tests (written from the packs), dev (development data) · judge Claude Haiku · n 20 · seeds UNKNOWN · CI n 20 per pack · date 2026-10-23 · caveat: health packs AI-reviewed, not clinically reviewed AI-reviewed, not clinically reviewed.
- [F-2100] Undelivered facts are a search problem. 44 of 50 already in the K13 kit · set dev (dev, development data) · judge 0 LLM · n UNKNOWN · seeds UNKNOWN · CI 50 items · date 2026-10-23
- [F-1727] Succinct on ENGINE-RC (page numbers) ON CWS 0.30, correct-any 0.43, WU 0.12; OFF correct-any 0.22, WU 0.10 (outcome-label share) · set UXMATRIX 60, dev (dev, development data) · judge Claude Haiku labels · n 60 · seeds 42 · CI n 60; seed 42 · date 2026-10-24 · caveat: PASS vs frozen CWS ≥0.28, WU OFF ≤0.10 Metric: outcome-label shares of n items (Claude Haiku 5.5-low labels, UXMATRIX protocol); not the judge.v1 ratio.
- [F-2077] Tier ladder under Opus. 4B−1.7B +0.109 (+0.063..+0.160); 4B−Gemma +0.098 (+0.054..+0.146); 1.7B−closed-book 1.5B +0.090 (+0.009..+0.170) · set v0.1 (dev) (dev, development data) · judge Claude Opus judge.v1 · n UNKNOWN · seeds UNKNOWN · CI v0.1 51, 1 seed per rung · date 2026-10-21 · caveat: Haiku: 1.7B−1.5B +0.038 (−0.023..+0.098), so judge-dependent
- [F-1386] Qwen3-1.7B = main 8 GB engine; 4B = optional "more complete" tier. adopted; confirmed at 19:07 grill · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-20 ~11:50 · caveat: who decided: author; why: Pixel 8a: 1.7B 13-16 tok/s, answers 13-16 s; 4B 3.6-6 tok/s, 29-46 s, one LMK kill; alternatives: keep 4B default; Qwen2.5-1.5B (faster but weaker); reversible: yes
- [F-2070] Bench v0.4 frozen. 75 items (71 headline + 4 anchors); 329 checklist points supported on the open web (at least one family, none contradicting; the 32 balance-round points by both families); sha f9ad2f2f (ruler U-total) · set v0.4 (held-out ruler) (held-out ruler (v0.4; exposed to two engines 2026-10-24)) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-20 · caveat: written by Claude + OpenAI gpt-5.6-sol (the judge families)
- [F-1532] 35B deep mode not delivered; deep tier appears only as roadmap with desktop numbers. stood · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-21 · caveat: who decided: author (GRILL); why: focus on 8 GB UX; no Android expert-streaming build; alternatives: 12 GB deep tier; reversible: yes
- [F-2210] BoarLite final candidate b4ef94f3 (search port ON_NO_HEALTH): 0-LLM gate on the 65 probes with history searched as the app does gives 41 fixed text, 1 exposure answer and 23 model answers, identical with the port off (the port changes no health path); the invented-dose and blood-pressure probes stay fixed; the health predicate is byte-identical (0 new false fires); release APK 3,044,169,517 B with no INTERNET permission. 41 fixed / 1 exposure / 23 model of 65; APK 3,044,169,517 B · set 65 F3-SAFETY probes (dev) (dev, development data) · judge none (0 LLM) · n 65 probes · seeds UNKNOWN · CI not computed · date 2026-10-24 19:40 · caveat: Engine tests, device-test compile and debug build pass. Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2201] Device run of the candidate APK (5b457fc7: onboarding + an exposure rule) on the Pixel 8a: tour at 12 s after launch (unpack done), model ready at 18 s, first answer 11.9 s at 14.9 tok/s (the earlier ~2 min first answer is gone); "40 C in F" computed with the formula and no sources; 0 bytes over the network; 0 crashes. tour 12 s; model ready 18 s; first answer 11.9 s at 14.9 tok/s · set device smoke (hand questions, Pixel 8a, airplane mode) (dev, development data) · judge none (hand check) · n hand run (4 checks) · seeds UNKNOWN · CI not computed · date 2026-10-24 19:12 · caveat: One device, hand run. A cold-exposure question (stranded in a car at -20 °C) got the right Fahrenheit value with a wrongly stated formula and no cold-safety advice (medium finding); the last tour button wraps to two lines (low). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2207] SEARCHPORT Addendum 2, ON_NO_HEALTH (the port on except on turns the health predicate reads as health): delivery MAIN 26 → 40, own fact chunk 38 → 62, 0 health losses, context 1.07×; S1 (65 probes with follow-up history): the port is off on 53, no probe changes its final path (41 fixed text, 23 model, 1 exposure both ways), 10 kept lists change, and ungrounded dose figures rise from 4 to 6 (a temperature on a carbon-monoxide probe, a duration that changed from hours to days, one repeated temperature): S1 FAIL; S2 (UXMATRIX 60, pack on) passed its frozen usefulness bar; frozen verdict: not WORTH-IT. MAIN 26 → 40; ST 38 → 62; ungrounded 6 vs 4 (grounded 9 vs 5); S2 bar passed · set MAIN 92 keyed; 180 pack self-tests; 65 F3-SAFETY probes (dev); UXMATRIX 60 (dev, development data) · judge replay (0 LLM); grounded-dose scorer; Claude Haiku labels for S2 (168 calls) · n 92 keyed MAIN; 180 self-tests; 65 probes; UXMATRIX 60 · seeds 1 (42) · CI not computed · date 2026-10-24 19:34 · caveat: S2 bar (frozen): correct-with-source +3 items or more, correct-any not lower by more than 1, wrong-unwarned not higher by more than 1. The S2 counts are BoarLite answer-quality numbers, published by the author's decision of 2026-10-25 (AD-15 (b); F-2208). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2209] The search port was merged into BoarLite as ON_NO_HEALTH although its frozen criterion failed by the letter (S1: 6 vs 4 ungrounded figures): before the run the author had set a standing condition ('I accept the health loss if it is worth it for the rest'), which the S2 result met. merged (mode ON_NO_HEALTH) · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-24 19:35 · caveat: who: coordinator under the author's prior condition; frozen verdict: not WORTH-IT; reversible: yes (one switch). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2214] Final ruler run (RULER-FINAL) on BoarLite's final engine b4ef94f3 exists as of 2026-10-24 20:34: desktop twin of the app path (QuickMath, search port ON_NO_HEALTH, health gate, history as the app sends it), 71 headline items + 4 anchors of bench v0.4, one seed, each judge family against its own references (Claude Opus vs the Claude references; OpenAI gpt-5.6-sol vs its references), 150 + 150 judge calls, addendum frozen before any generation; its numbers were held until the author's publication decision of 2026-10-25 (now public as F-2215 and F-2217; history, the headline is DEVICE-FINAL) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; now exposed to three engines)) · judge Claude Opus + OpenAI gpt-5.6-sol (each vs its own references) · date 2026-10-24 20:34 · caveat: Deviations from the spec: one seed (spec: two; the author's choice), one reference family per judge family, stage 1 (DECLINE2STAGE) not run, no errata, desktop twin not the APK on a phone (the spec labels desktop-twin numbers dev/parity evidence). v0.4 is the claim set: no tuning after this run.
- [F-2212] REFS-V2, OpenAI gpt-5.6-sol half complete: 75 of 75 v0.4 references written with live web search under the frozen protocol, 0 hard failures, 97 calls (two items completed on a resumed run); references of both judge families now exist. 75 / 75; 0 hard failures · set v0.4 (held-out ruler) (held-out ruler (exposed)) · judge UNKNOWN · n 75 items (88 turns) · seeds UNKNOWN · CI not computed · date 2026-10-24 20:05 · caveat: Protocol frozen 2026-10-21 before any call (prompt 5e41177d, generator eb2fd7e2). Reference text not read by the coordinator.
- [F-2224] BoarLite renamed LabRat at the app maintainer's request (commit 7788924a): the name changes in the UI, docs and assets; the assistant is called Rat (answer byline, notification, and the grounding prompt's identity line); a new rat mark in the app, launcher and splash. Unchanged: the package id, the code packages, the bundled knowledge catalogue and the About credit "Based on BOAR (MIT)". Phone smoke 6/6: titles, health gate and conversion match the baseline; "Who are you?" answers "I am Rat…" BoarLite → LabRat; assistant Rat; smoke 6/6 · set device smoke (dev) (dev, development data) · judge none (smoke checks) · n 6 smoke questions · seeds UNKNOWN · CI not computed · date 2026-10-25 02:20 · caveat: A rename plus one prompt line; a smoke test, not a quality measurement. The final ruler number (RULER-FINAL) measures engine b4ef94f3 on its desktop twin; LabRat 7788924a adds the Rat persona line to the grounding prompt after that run, so the ruler number is not a measurement of LabRat 7788924a.
- [F-2225] Engine change after the ruler run: in LabRat 7788924a the grounding prompt's identity line changed from "You are BOAR, an offline AI research app running on this phone…" to "You are Rat, the assistant in LabRat, an offline AI research app running on this phone…". The final ruler run (RULER-FINAL, 2026-10-24 20:34) was on b4ef94f3, before this change: its number is for b4ef94f3 (desktop twin), and DEVICE-FINAL measures LabRat 7788924a on the phone. persona line changed after RULER-FINAL · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 02:20 · caveat: The final ruler number (RULER-FINAL) measures engine b4ef94f3 on its desktop twin; LabRat 7788924a adds the Rat persona line to the grounding prompt after that run, so the ruler number is not a measurement of LabRat 7788924a.
- [F-2235] Latest LabRat APK (0ad476ca, bundled, same signing identity, no INTERNET permission) installed on the Pixel 8a after the rename and logo: smoke 6/6 matching the baseline (retrieved titles, health gate and conversion); the earlier cleanup build ff50c5ff is 3.04 GB. The APK built from b4ef94f3, the ruler engine, is kept. smoke 6/6 · set device smoke (dev) (dev, development data) · judge none (smoke checks) · n 6 smoke questions · seeds UNKNOWN · CI not computed · date 2026-10-25 11:24 · caveat: A smoke test, not a quality measurement. The final ruler number (RULER-FINAL) measures engine b4ef94f3 on its desktop twin; LabRat 7788924a adds the Rat persona line to the grounding prompt after that run, so the ruler number is not a measurement of LabRat 7788924a.
- [F-2227] DEVICE-FINAL criterion frozen (sha256 recorded) on 2026-10-25 03:3x, before any matrix generation: LabRat 7788924a answers on a Pixel 8a 8 GB in airplane mode on AC power. Matrix: M1 ruler v0.4 (75 items, 88 turns) on seeds 42, 43 and 44, judged as in RULER-FINAL (Claude Opus vs Claude references on all three seeds; OpenAI gpt-5.6-sol vs its references on seed 42, further seeds optional), reporting per family the U-total, CI, win-rate, refusals, the minimum over families, the three-seed mean and a phone-vs-desktop parity read against the b4ef94f3 desktop twin (not a verdict); M2 the 65 safety probes (0 LLM); M3 the 140 on-K13 pack self-tests and M4 the 60 UXMATRIX items (Claude Haiku labels); M5 latency, time to first token, decode speed, memory, battery temperature, three cold starts and the app's network counters over the night. Claim numbers = M1 (both families named, seeds stated, win-rate first) and M5 (speed, memory, offline); M2-M4 are product numbers. No tuning, no engine change. matrix M1-M5; claim numbers = M1 + M5 (ruler U-total) · set bench v0.4 (exposed); 65 safety probes; 140 on-K13 self-tests; UXMATRIX 60 (dev, development data) · judge Claude Opus + OpenAI gpt-5.6-sol (M1); Claude Haiku 5.5-low labels (M3, M4); none (M2, M5) · n 75 items × 3 seeds + 265 product items · seeds 42, 43, 44 (M1); 42 (M2-M4) · CI not computed · date 2026-10-25 03:3x · caveat: No DEVICE-FINAL result is in this record; the matrix was running as of this update.
- [F-2236] The author restated the thesis on 2026-10-25: small models need external knowledge; the project learned that and built a harness around a small model's real capabilities, tuned for the app user's experience (health gate, QuickMath, pack search and delivery, the Succinct persona, a fixed check-the-source line, refusal behaviour). It replaces the 2026-10-23 sentence "right whenever the content is in a pack" as the thesis statement; the conditional closing-test numbers are its evidence and its limits. thesis statement (author, 2026-10-25) · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 · caveat: who: author; a framing statement, not a measurement. Evidence: with the matching pack the 1.7B is right on 48 % vs 26 % of pack-written self-tests (F-1704); 65 % when the item's own article reaches the model vs 28 % (F-1705). Limits: the article is delivered on 54 % (F-1706); no pack reached the 0.75 bar (F-1707); no gain on real development items (F-2080). Never "the harness makes it half as good".
- [F-2237] Author publication decisions of 2026-10-25: numbers of the author's own submission (BoarLite, renamed LabRat) are publishable, numbers of the app maintainer's app stay internal; the headline is the final v0.4 ruler measured on the phone (DEVICE-FINAL); the desktop ruler run of b4ef94f3 is history with its code-difference note; the citation-support gap (Citations.applyShown) is documented as a known limitation and not fixed before the measurement. LabRat numbers public; headline = DEVICE-FINAL; applyShown not fixed · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 · caveat: who: author. Not fixing applyShown keeps the measured engine identical to the app judges install; the app maintainer's app numbers need his consent.
- [F-2238] DEVICE-FINAL M1, the final ruler measured on the phone: LabRat on a Pixel 8a (8 GB, airplane mode) answered bench v0.4 (71 headline items + 4 anchors) on seeds 42 and 43. It won 0 of 71 head-to-heads under both judge families (one tie under OpenAI gpt-5.6-sol on seed 42). U-total, both seeds pooled: Claude Opus 0.165 (0.127–0.205), OpenAI gpt-5.6-sol 0.242 (0.194–0.296). Per seed: Claude 0.167 (0.129–0.209) and 0.162 (0.125–0.201); gpt-5.6-sol 0.244 (0.193–0.298) and 0.241 (0.190–0.297). The lower family, Claude at 0.165 (0.127–0.205), is below the 0.50 bar. 5 headline items were refusals; answer coverage 0.90. 0 of 71 wins under both families; U-total 0.165 (Claude) / 0.242 (gpt-5.6-sol); below the 0.50 bar (ruler U-total) · set bench v0.4 (exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol via the Codex CLI (each vs its own references) · n 71 headline items + 4 anchors · seeds 42, 43 · CI Claude 0.127-0.205; gpt-5.6-sol 0.194-0.296 (pooled seeds 42+43) · date 2026-10-25 13:2x · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. v0.4 has been answered by our engines since 2026-10-24, so it is no longer unseen (F-2214). One reference family per judge family; stage 1 not run; no errata. Two seeds (42, 43): the criterion listed 42, 43 and 44; seed 44 was dropped for time (two seeds = the ruler spec). Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2239] DEVICE-FINAL phone vs desktop twin (seed 42, paired over the 71 headline items): Claude 0.167 on the phone vs 0.164 for the desktop twin of b4ef94f3, +0.003 (−0.022…+0.026), 21 items better and 16 worse; gpt-5.6-sol 0.244 vs 0.245, −0.007 (−0.039…+0.023), 22 better and 22 worse. The phone repeats the desktop number; a parity read, not a verdict. paired +0.003 (Claude) / −0.007 (gpt-5.6-sol) (ruler U-total) · set bench v0.4 (exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol via the Codex CLI (each vs its own references) · n 71 headline items · seeds 42 · CI Claude −0.022…+0.026; gpt-5.6-sol −0.039…+0.023 · date 2026-10-25 13:2x · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. v0.4 has been answered by our engines since 2026-10-24, so it is no longer unseen (F-2214). One reference family per judge family; stage 1 not run; no errata. The two engines differ by the Rat persona line and platform sampling. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2240] DEVICE-FINAL M5, speed, memory and offline on the Pixel 8a (model-written turns of v0.4 seed 42, n 82): total answer time p50 13.9 s (p90 19.6 s), first word p50 9.8 s (p90 14.5 s), decode 11.8 tokens/s, search 1.6 s, peak memory (RSS) 3.87 GB, battery at most 36.4 °C. After 45 minutes of continuous use (seed 43): 17.0 s p50 and 8.9 tokens/s. Cold starts: model load 1.6–1.7 s, first word 10.4–19.4 s. A fresh install on a cool phone decoded 16.7 tokens/s. Network: the app has no traffic record in the phone's network statistics before or after the matrix, and no internet permission. p50 13.9 s; first word 9.8 s; 11.8 tok/s; 3.87 GB; 0 network traffic (ruler U-total) · set bench v0.4 turns on the phone (dev, development data) · judge none (device metrics) · n 82 model-written turns per seed · seeds 42 (43 for the warm read) · CI not computed · date 2026-10-25 13:2x · caveat: One phone (Pixel 8a, GrapheneOS, AC power, screen on). Heat roughly halves decode speed under sustained use: quote the range. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2241] DEVICE-FINAL M2, the 65 written health and safety probes on the phone (0 LLM scoring): 53 got the fixed safe health text and 12 went to the model (the desktop twin of b4ef94f3: 41 fixed, 1 exposure answer, 23 model); 2 model answers added a dose figure the question did not ask for. One of them (a carbon-monoxide reading of 200 ppm at home) calls the level unsafe but understates an emergency; the author kept it as a known limitation. 53 of 65 fixed text; 2 new dose figures · set 65 written safety probes (dev; the gate's rules were tuned on them) (dev, development data) · judge none (0 LLM scorer) · n 65 probes · seeds 42 · CI not computed · date 2026-10-25 13:2x · caveat: Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2242] DEVICE-FINAL M3, 140 pack-written self-tests of the 7 tested packs that LabRat ships (20 each) on the phone: correct-any 0.400 (0.314–0.479); 0.476 when the question's own article was kept (n 82) vs 0.293 when it was not (n 58); wrong-any 0.436. correct 0.40 of 140 (outcome-label share) · set pack-written self-tests (dev) (dev (pack-written self-tests), development data) · judge Claude Haiku 5.5-low labels (UXMATRIX protocol) · n 140 · seeds 42 · CI 0.314-0.479 · date 2026-10-25 13:2x · caveat: Outcome-label shares, not the ruler scale. Self-tests favour the packs. Correct-with-source is a lower bound (phone rows hold source titles only). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2246] LabRat 1.0.0 released: APK dcc515fc, 3,041,570,902 bytes, sha256 d2e00ba4a9adff6f903eab7d34759fd4f4db9cd721303dc7c38ae280b465dae8, hosted on Hugging Face at huggingface.co/r4topunk/labrat and installed on the Pixel 8a. The bundle was rebuilt from public pinned URLs only (16 of 16 inputs fetched and checked by sha256) 1.0.0 hosted; sha256 d2e00ba4… · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 15:3x · caveat: Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2247] The LabRat source is public at github.com/r4topunk/labrat-boar-fork (MIT, a fork of BOAR), with README, results, pack provenance and licence; made public with the author's OK. public repository · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 15:4x
- [F-2248] Knowledge-pack counts, one meaning each: LabRat ships 13 packs (the K13 kit), and every one of the 13 exact files is downloadable from the boar-packs dataset on Hugging Face (7 of them under labrat-k13/: 6 earlier packs with added chunk vectors and 1 new pack). The 2026-10-23 self-tests covered 9 packs (180 questions), 7 of them in the app; DEVICE-FINAL tested those 7 on the phone (140 questions) 13 shipped; 9 self-tested; 7 tested on the phone · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25

<!-- lint:exempt:end -->
## Facts cited {#facts}

Resolve every [F-…] marker in https://r4topunk.github.io/boar-research/data/facts.json. Each line gives the claim, the number with its metric family, set and status, judge, n, seeds, CI, date and caveat.

<!-- lint:exempt:start -->
- [F-001] The frozen 4B claim build on the bounty-style set (V-para) delivers about a quarter of the frontier reference's value above "nothing", and loses every head-to-head. raw 0.413 (0.384–0.445); floor-adjusted 0.261 (0.224–0.300); win/tie/loss 0/0/51 in both seeds (judge.v1 ratio) · set V-para (held-out for this run (cut 3 on 2026-10-05, cut 6 on 2026-10-06); dev-style for everything measured after 2026-10-06) · judge Claude Opus (judge.v1, both orders) · n 51 · seeds 2 (42, 43) · CI 95 % item bootstrap · date 2026-10-06 · caveat: Cut 7 = cut 6 on this set (the FACTS table fires 0 times on it). Public BAR-TABLE prints CI high 0.300; one claim draft prints 0.299 (rounding).
- [F-002] The same 4B claim build on the second set (v0.2, later burnt to dev). raw 0.512 (0.478–0.549); floor-adjusted 0.388 (0.346–0.434); win/tie/loss 0/0/110 and 0/1/109 (per seed) (judge.v1 ratio) · set v0.2 (held-out at run time; burnt → dev by ruling 2026-10-06) · judge Claude Opus (judge.v1, both orders) · n 110 · seeds 2 · CI 95 % item bootstrap · date 2026-10-06 · caveat: Claim draft v4.2.4 (§0 and Appendix A) carries the cut-3 values 0.513 / 0.389; the cut-6 = cut-7 values here are the ones to publish.
- [F-004] Bar status: no configuration reaches 0.50 on the primary (floor-adjusted) reading; the formal raw rule is met only on development data by the deep tier with thinking. best floor-adjusted on V-para = 0.436 (CI high 0.472), short by 0.064; formal raw rule (CI low > 0.50) met by deep + thinking on dev data only (desktop; the v0.2 leg of the 512 budget is 1 seed); 0 wins on every Claude-judged row of V-para and v0.2 (judge.v1 ratio) · set V-para; v0.2 (dev / dev-style, development data) · judge Claude Opus (judge.v1, both orders) · n 51 / 110 · seeds see rows · CI see F-28 · date 2026-10-10 · caveat: Never present as "bar reached". Under the Claude judge on held-out data the bar was not reached.
- [F-009] Recommended deep configuration (35B mixture-of-experts + 512-token thinking budget) on the bounty-style set. raw 0.553 (0.524–0.581; with seed noise 0.513–0.592); floor-adjusted 0.436 (0.401–0.472; with seed noise 0.387–0.486); win 0/51; desktop p50 ≈ 79 s (judge.v1 ratio) · set V-para (dev-style, development data) · judge Claude Opus (judge.v1, both orders) · n 51 · seeds 2 · CI 95 % item bootstrap; common-mode CI adds seed noise · date 2026-10-09 · caveat: Chosen as the best of ≥ 8 deep configurations on this same set: expect a winner's-curse discount of about 0.01–0.02. QUEUE prints raw 0.552; the two-seed aggregate is 0.553. Desktop only.
- [F-017] A judge from a different model family scores everything higher on V-para, but keeps the ranking and the near-zero win-rate. 4B: raw 0.497 (0.449–0.547), floor-adjusted 0.361; deep + think 512: raw 0.667 (0.621–0.711), floor-adjusted 0.577 (0.519–0.632); deep − 4B +0.171 (+0.123…+0.219) vs +0.139 under Claude; per-item Spearman 0.88–0.92; win-rate 0.00–0.01 (judge.v1 ratio) · set V-para (dev-style, development data) · judge cross-family: OpenAI gpt-5.6-sol (via the Codex CLI) (post-hoc, not pre-registered) · n 51 (408 judge calls) · seeds 2 · CI 95 % item bootstrap (4B floor-adjusted CI not in the sources read) · date 2026-10-16 · caveat: Post-hoc and not pre-registered; it is the only point above 0.50 floor-adjusted on V-para and exists only under the cross-family judge; the lower-judge rule keeps the Claude number as headline.
- [F-018] The cross-family judge on v0.2. 4B: raw 0.617 (0.567–0.666), floor-adjusted 0.517 (2 seeds); deep + think 512: raw 0.714 (0.666–0.759), floor-adjusted 0.639 (0.579–0.695) (1 seed); deep − 4B +0.097 vs +0.096 under Claude; Spearman 0.90–0.97; win-rate 2.7 % / 6.4 % vs 0 % under Claude (judge.v1 ratio) · set v0.2 (dev (burnt), development data) · judge cross-family: OpenAI gpt-5.6-sol (via the Codex CLI) (post-hoc, not pre-registered) · n 110 (660 judge calls) · seeds 4B 2, deep 1 · CI 95 % item bootstrap · date 2026-10-17 · caveat: Post-hoc. The Claude judge is the stricter family by ≈ 0.10 on both sets; the offset is stable across sets and arms.
- [F-038] Every touch of a held-out set was logged; both held-out sets are now development data. v0.2: 12 full generation runs, 10 full Opus passes → burnt, dev (ruling 2026-10-06); V-para: 19 full runs + 12 slices → held-out for the 4B claim runs only, dev-style after 2026-10-06 (ruling 2026-10-09) · set v0.2; V-para (burnt / dev-style, development data) · judge UNKNOWN · n 110 / 58 (51 judged + 7 venue) · seeds UNKNOWN · CI not computed · date 2026-10-09
- [F-342] Cut 6 vs cut 3 on v0.2 is no change. Δ −0.0009 · set v0.2 held-out at time (held-out at run time) · judge Opus · n 110 · seeds UNKNOWN · CI −0.0095…+0.0077; n 110 · date 2026-10-06 · caveat: citation fix (l.48 is a separator). 323 of 334 verdicts were copied from cut 3 for byte-identical answers, so the narrow Δ reflects reuse, not an independent re-judging
- [F-1245] Claim text sentence (draft v4.2.4, as of 2026-10-17) "BOAR is not shown to be half as good as frontier AI with web." · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-17 · caveat: draft, not published at time of reading
- [F-1386] Qwen3-1.7B = main 8 GB engine; 4B = optional "more complete" tier. adopted; confirmed at 19:07 grill · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-20 ~11:50 · caveat: who decided: author; why: Pixel 8a: 1.7B 13-16 tok/s, answers 13-16 s; 4B 3.6-6 tok/s, 29-46 s, one LMK kill; alternatives: keep 4B default; Qwen2.5-1.5B (faster but weaker); reversible: yes
- [F-1532] 35B deep mode not delivered; deep tier appears only as roadmap with desktop numbers. stood · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-21 · caveat: who decided: author (GRILL); why: focus on 8 GB UX; no Android expert-streaming build; alternatives: 12 GB deep tier; reversible: yes
- [F-1653] Author closes research lines; CLOSING-TESTS plan. · date 2026-10-23
- [F-1690] Thesis to present with the app: right whenever the content is in a pack; app built for it. PACKPROOF supports only a conditional form (65 % when delivered) · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-23 · caveat: who: author; why: product framing; reversible: yes (framing) · later: 2026-10-25: the author restated the thesis (small models need external knowledge; a harness built around a small model's real capabilities); this sentence stays quoted as the hypothesis the closing tests checked.
- [F-1704] PACKPROOF pooled correct-any with pack installed vs without. 0.48 vs 0.26, Δ +0.23 (outcome-label share) · set 180 pack self-tests (written from the packs), dev (dev (pack-written self-tests), development data) · judge Claude Haiku 5.5-low labels; correct-any · n 180 · seeds 42 · CI CI +0.16..+0.31; n 180; seed 42 · date 2026-10-23 · caveat: self-tests favour the pack; hosts differ by arm; 1 seed Metric: outcome-label shares of n items (Claude Haiku 5.5-low labels, UXMATRIX protocol); not the judge.v1 ratio.
- [F-1707] Packs reaching the 0.75 "proves" bar. 0 of 9; 7 below 0.60 (not default-eligible by rule); best 0.60 (two Q&A packs), worst factbook 0.25 · set 180 pack self-tests (written from the packs), dev (development data) · judge Claude Haiku · n 20 · seeds UNKNOWN · CI n 20 per pack · date 2026-10-23 · caveat: health packs AI-reviewed, not clinically reviewed AI-reviewed, not clinically reviewed.
- [F-1727] Succinct on ENGINE-RC (page numbers) ON CWS 0.30, correct-any 0.43, WU 0.12; OFF correct-any 0.22, WU 0.10 (outcome-label share) · set UXMATRIX 60, dev (dev, development data) · judge Claude Haiku labels · n 60 · seeds 42 · CI n 60; seed 42 · date 2026-10-24 · caveat: PASS vs frozen CWS ≥0.28, WU OFF ≤0.10 Metric: outcome-label shares of n items (Claude Haiku 5.5-low labels, UXMATRIX protocol); not the judge.v1 ratio.
- [F-2070] Bench v0.4 frozen. 75 items (71 headline + 4 anchors); 329 checklist points supported on the open web (at least one family, none contradicting; the 32 balance-round points by both families); sha f9ad2f2f (ruler U-total) · set v0.4 (held-out ruler) (held-out ruler (v0.4; exposed to two engines 2026-10-24)) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-20 · caveat: written by Claude + OpenAI gpt-5.6-sol (the judge families)
- [F-2077] Tier ladder under Opus. 4B−1.7B +0.109 (+0.063..+0.160); 4B−Gemma +0.098 (+0.054..+0.146); 1.7B−closed-book 1.5B +0.090 (+0.009..+0.170) · set v0.1 (dev) (dev, development data) · judge Claude Opus judge.v1 · n UNKNOWN · seeds UNKNOWN · CI v0.1 51, 1 seed per rung · date 2026-10-21 · caveat: Haiku: 1.7B−1.5B +0.038 (−0.023..+0.098), so judge-dependent
- [F-2100] Undelivered facts are a search problem. 44 of 50 already in the K13 kit · set dev (dev, development data) · judge 0 LLM · n UNKNOWN · seeds UNKNOWN · CI 50 items · date 2026-10-23
- [F-2110] Claude references for v0.4 frozen before any app answer. 75/75 items, 88 turns, uncapped, median 703 words, median 6 sources · set v0.4 (held-out ruler (v0.4; exposed to two engines 2026-10-24)) · judge Claude Opus + web · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-21 · caveat: OpenAI gpt-5.6-sol half 15/75 by 10-24
- [F-2201] Device run of the candidate APK (5b457fc7: onboarding + an exposure rule) on the Pixel 8a: tour at 12 s after launch (unpack done), model ready at 18 s, first answer 11.9 s at 14.9 tok/s (the earlier ~2 min first answer is gone); "40 C in F" computed with the formula and no sources; 0 bytes over the network; 0 crashes. tour 12 s; model ready 18 s; first answer 11.9 s at 14.9 tok/s · set device smoke (hand questions, Pixel 8a, airplane mode) (dev, development data) · judge none (hand check) · n hand run (4 checks) · seeds UNKNOWN · CI not computed · date 2026-10-24 19:12 · caveat: One device, hand run. A cold-exposure question (stranded in a car at -20 °C) got the right Fahrenheit value with a wrongly stated formula and no cold-safety advice (medium finding); the last tour button wraps to two lines (low). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2206] BoarLite ships with the Wikipedia-health limitation: the Wikipedia packs stay in the kit (dropping them cost delivered facts 42 → 33 and topics 25 → 11), and the gate counts only the first-aid, MedlinePlus and health Q&A packs as health sources, so 12 of 60 health self-tests whose article is only in a Wikipedia pack get the fixed text; a curated list of medical Wikipedia titles is a post-submission item, re-gated on the 60 self-tests and 65 probes with the grounded-dose rule plus a check that toxic thresholds are not presented as doses. ship as is; medical Wikipedia titles after the submission · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-24 19:32 · caveat: who: coordinator, delegated by the author; reversible: yes. Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2207] SEARCHPORT Addendum 2, ON_NO_HEALTH (the port on except on turns the health predicate reads as health): delivery MAIN 26 → 40, own fact chunk 38 → 62, 0 health losses, context 1.07×; S1 (65 probes with follow-up history): the port is off on 53, no probe changes its final path (41 fixed text, 23 model, 1 exposure both ways), 10 kept lists change, and ungrounded dose figures rise from 4 to 6 (a temperature on a carbon-monoxide probe, a duration that changed from hours to days, one repeated temperature): S1 FAIL; S2 (UXMATRIX 60, pack on) passed its frozen usefulness bar; frozen verdict: not WORTH-IT. MAIN 26 → 40; ST 38 → 62; ungrounded 6 vs 4 (grounded 9 vs 5); S2 bar passed · set MAIN 92 keyed; 180 pack self-tests; 65 F3-SAFETY probes (dev); UXMATRIX 60 (dev, development data) · judge replay (0 LLM); grounded-dose scorer; Claude Haiku labels for S2 (168 calls) · n 92 keyed MAIN; 180 self-tests; 65 probes; UXMATRIX 60 · seeds 1 (42) · CI not computed · date 2026-10-24 19:34 · caveat: S2 bar (frozen): correct-with-source +3 items or more, correct-any not lower by more than 1, wrong-unwarned not higher by more than 1. The S2 counts are BoarLite answer-quality numbers, published by the author's decision of 2026-10-25 (AD-15 (b); F-2208). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2209] The search port was merged into BoarLite as ON_NO_HEALTH although its frozen criterion failed by the letter (S1: 6 vs 4 ungrounded figures): before the run the author had set a standing condition ('I accept the health loss if it is worth it for the rest'), which the S2 result met. merged (mode ON_NO_HEALTH) · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-24 19:35 · caveat: who: coordinator under the author's prior condition; frozen verdict: not WORTH-IT; reversible: yes (one switch). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2210] BoarLite final candidate b4ef94f3 (search port ON_NO_HEALTH): 0-LLM gate on the 65 probes with history searched as the app does gives 41 fixed text, 1 exposure answer and 23 model answers, identical with the port off (the port changes no health path); the invented-dose and blood-pressure probes stay fixed; the health predicate is byte-identical (0 new false fires); release APK 3,044,169,517 B with no INTERNET permission. 41 fixed / 1 exposure / 23 model of 65; APK 3,044,169,517 B · set 65 F3-SAFETY probes (dev) (dev, development data) · judge none (0 LLM) · n 65 probes · seeds UNKNOWN · CI not computed · date 2026-10-24 19:40 · caveat: Engine tests, device-test compile and debug build pass. Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2212] REFS-V2, OpenAI gpt-5.6-sol half complete: 75 of 75 v0.4 references written with live web search under the frozen protocol, 0 hard failures, 97 calls (two items completed on a resumed run); references of both judge families now exist. 75 / 75; 0 hard failures · set v0.4 (held-out ruler) (held-out ruler (exposed)) · judge UNKNOWN · n 75 items (88 turns) · seeds UNKNOWN · CI not computed · date 2026-10-24 20:05 · caveat: Protocol frozen 2026-10-21 before any call (prompt 5e41177d, generator eb2fd7e2). Reference text not read by the coordinator.
- [F-2214] Final ruler run (RULER-FINAL) on BoarLite's final engine b4ef94f3 exists as of 2026-10-24 20:34: desktop twin of the app path (QuickMath, search port ON_NO_HEALTH, health gate, history as the app sends it), 71 headline items + 4 anchors of bench v0.4, one seed, each judge family against its own references (Claude Opus vs the Claude references; OpenAI gpt-5.6-sol vs its references), 150 + 150 judge calls, addendum frozen before any generation; its numbers were held until the author's publication decision of 2026-10-25 (now public as F-2215 and F-2217; history, the headline is DEVICE-FINAL) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; now exposed to three engines)) · judge Claude Opus + OpenAI gpt-5.6-sol (each vs its own references) · date 2026-10-24 20:34 · caveat: Deviations from the spec: one seed (spec: two; the author's choice), one reference family per judge family, stage 1 (DECLINE2STAGE) not run, no errata, desktop twin not the APK on a phone (the spec labels desktop-twin numbers dev/parity evidence). v0.4 is the claim set: no tuning after this run.
- [F-2215] RULER-FINAL U-total of BoarLite b4ef94f3 on v0.4: Claude family 0.164 (0.123-0.208), OpenAI gpt-5.6-sol family 0.245 (0.194-0.300); minimum over families 0.164 (0.123-0.206); win-rate 0 of 71 (Claude) and 0 of 71 with 1 tie (gpt-5.6-sol); fixed-text refusals on 3 items. Claude 0.164; gpt-5.6-sol 0.245; min 0.164; win-rate 0 (ruler U-total) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol (each vs its own references) · n 71 headline items · seeds 1 (42) · CI Claude 0.123-0.208; gpt-5.6-sol 0.194-0.300; min 0.123-0.206 · date 2026-10-24 20:34 · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. Desktop twin, one seed. Published by the author's decision of 2026-10-25 (AD-15 (b)): BoarLite/LabRat is the author's own submission. History, not the headline: desktop twin of engine b4ef94f3, one seed, before the Rat persona line and the cleanup (F-2223, F-2225); not a measurement of LabRat 7788924a. The headline is the on-phone run DEVICE-FINAL (OF-8).
- [F-2217] RULER-FINAL information-available split: Claude family U-total 0.164 where the installed packs hold the answer (n 19), 0.174 partly (n 25), 0.155 not at all (n 27); gpt-5.6-sol family 0.272 / 0.238 / 0.233: with the information present, the 1.7B does not deliver it. AVAILABLE 0.164 vs NONE 0.155 (Claude) (ruler U-total) · set v0.4 (held-out ruler; exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol · n 19 / 25 / 27 headline items · seeds 1 (42) · CI not computed · date 2026-10-24 20:34 · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. Pre-registered stratifier (spec r4). Published by the author's decision of 2026-10-25 (AD-15 (b)): BoarLite/LabRat is the author's own submission. History, not the headline: desktop twin of engine b4ef94f3, one seed, before the Rat persona line and the cleanup (F-2223, F-2225); not a measurement of LabRat 7788924a. The headline is the on-phone run DEVICE-FINAL (OF-8).
- [F-2223] Between the ruler engine b4ef94f3 and LabRat 7788924a the engine module changed in 124 files (643 lines added, 97,537 removed), almost all removals of code and test resources described as unreachable in the closed app; the frozen DEVICE-FINAL criterion describes 7788924a's engine as b4ef94f3 plus the Rat persona line. Behaviour checks after the cleanup: 274 engine unit tests and a 5-question device smoke whose retrieved titles, health gate and conversion match the baseline; no ruler rerun. 124 files; +643 / −97,537 lines · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 02:20 · caveat: Line counts from a read-only git diff of the engine module; the smoke compares titles, gate and conversion, not answer quality.
- [F-2224] BoarLite renamed LabRat at the app maintainer's request (commit 7788924a): the name changes in the UI, docs and assets; the assistant is called Rat (answer byline, notification, and the grounding prompt's identity line); a new rat mark in the app, launcher and splash. Unchanged: the package id, the code packages, the bundled knowledge catalogue and the About credit "Based on BOAR (MIT)". Phone smoke 6/6: titles, health gate and conversion match the baseline; "Who are you?" answers "I am Rat…" BoarLite → LabRat; assistant Rat; smoke 6/6 · set device smoke (dev) (dev, development data) · judge none (smoke checks) · n 6 smoke questions · seeds UNKNOWN · CI not computed · date 2026-10-25 02:20 · caveat: A rename plus one prompt line; a smoke test, not a quality measurement. The final ruler number (RULER-FINAL) measures engine b4ef94f3 on its desktop twin; LabRat 7788924a adds the Rat persona line to the grounding prompt after that run, so the ruler number is not a measurement of LabRat 7788924a.
- [F-2225] Engine change after the ruler run: in LabRat 7788924a the grounding prompt's identity line changed from "You are BOAR, an offline AI research app running on this phone…" to "You are Rat, the assistant in LabRat, an offline AI research app running on this phone…". The final ruler run (RULER-FINAL, 2026-10-24 20:34) was on b4ef94f3, before this change: its number is for b4ef94f3 (desktop twin), and DEVICE-FINAL measures LabRat 7788924a on the phone. persona line changed after RULER-FINAL · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 02:20 · caveat: The final ruler number (RULER-FINAL) measures engine b4ef94f3 on its desktop twin; LabRat 7788924a adds the Rat persona line to the grounding prompt after that run, so the ruler number is not a measurement of LabRat 7788924a.
- [F-2227] DEVICE-FINAL criterion frozen (sha256 recorded) on 2026-10-25 03:3x, before any matrix generation: LabRat 7788924a answers on a Pixel 8a 8 GB in airplane mode on AC power. Matrix: M1 ruler v0.4 (75 items, 88 turns) on seeds 42, 43 and 44, judged as in RULER-FINAL (Claude Opus vs Claude references on all three seeds; OpenAI gpt-5.6-sol vs its references on seed 42, further seeds optional), reporting per family the U-total, CI, win-rate, refusals, the minimum over families, the three-seed mean and a phone-vs-desktop parity read against the b4ef94f3 desktop twin (not a verdict); M2 the 65 safety probes (0 LLM); M3 the 140 on-K13 pack self-tests and M4 the 60 UXMATRIX items (Claude Haiku labels); M5 latency, time to first token, decode speed, memory, battery temperature, three cold starts and the app's network counters over the night. Claim numbers = M1 (both families named, seeds stated, win-rate first) and M5 (speed, memory, offline); M2-M4 are product numbers. No tuning, no engine change. matrix M1-M5; claim numbers = M1 + M5 (ruler U-total) · set bench v0.4 (exposed); 65 safety probes; 140 on-K13 self-tests; UXMATRIX 60 (dev, development data) · judge Claude Opus + OpenAI gpt-5.6-sol (M1); Claude Haiku 5.5-low labels (M3, M4); none (M2, M5) · n 75 items × 3 seeds + 265 product items · seeds 42, 43, 44 (M1); 42 (M2-M4) · CI not computed · date 2026-10-25 03:3x · caveat: No DEVICE-FINAL result is in this record; the matrix was running as of this update.
- [F-2233] Claim-text plan (2026-10-24 PM hand-off): lead with what the app does and the final ruler numbers labelled with both judge families, the seed count, "desktop twin" and the win-rate, plus measured product numbers each labelled with the engine they come from; wording goes to an independent reviewer, then the author. Also pending: a decisions-and-evidence page for the judges, a short demo post and the app's About text. plan; not posted · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-24 20:5x · caveat: The ruler numbers stay internal until the author rules on AD-15; this row states the plan, not the numbers.
- [F-2235] Latest LabRat APK (0ad476ca, bundled, same signing identity, no INTERNET permission) installed on the Pixel 8a after the rename and logo: smoke 6/6 matching the baseline (retrieved titles, health gate and conversion); the earlier cleanup build ff50c5ff is 3.04 GB. The APK built from b4ef94f3, the ruler engine, is kept. smoke 6/6 · set device smoke (dev) (dev, development data) · judge none (smoke checks) · n 6 smoke questions · seeds UNKNOWN · CI not computed · date 2026-10-25 11:24 · caveat: A smoke test, not a quality measurement. The final ruler number (RULER-FINAL) measures engine b4ef94f3 on its desktop twin; LabRat 7788924a adds the Rat persona line to the grounding prompt after that run, so the ruler number is not a measurement of LabRat 7788924a.
- [F-2236] The author restated the thesis on 2026-10-25: small models need external knowledge; the project learned that and built a harness around a small model's real capabilities, tuned for the app user's experience (health gate, QuickMath, pack search and delivery, the Succinct persona, a fixed check-the-source line, refusal behaviour). It replaces the 2026-10-23 sentence "right whenever the content is in a pack" as the thesis statement; the conditional closing-test numbers are its evidence and its limits. thesis statement (author, 2026-10-25) · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 · caveat: who: author; a framing statement, not a measurement. Evidence: with the matching pack the 1.7B is right on 48 % vs 26 % of pack-written self-tests (F-1704); 65 % when the item's own article reaches the model vs 28 % (F-1705). Limits: the article is delivered on 54 % (F-1706); no pack reached the 0.75 bar (F-1707); no gain on real development items (F-2080). Never "the harness makes it half as good".
- [F-2237] Author publication decisions of 2026-10-25: numbers of the author's own submission (BoarLite, renamed LabRat) are publishable, numbers of the app maintainer's app stay internal; the headline is the final v0.4 ruler measured on the phone (DEVICE-FINAL); the desktop ruler run of b4ef94f3 is history with its code-difference note; the citation-support gap (Citations.applyShown) is documented as a known limitation and not fixed before the measurement. LabRat numbers public; headline = DEVICE-FINAL; applyShown not fixed · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 · caveat: who: author. Not fixing applyShown keeps the measured engine identical to the app judges install; the app maintainer's app numbers need his consent.
- [F-2238] DEVICE-FINAL M1, the final ruler measured on the phone: LabRat on a Pixel 8a (8 GB, airplane mode) answered bench v0.4 (71 headline items + 4 anchors) on seeds 42 and 43. It won 0 of 71 head-to-heads under both judge families (one tie under OpenAI gpt-5.6-sol on seed 42). U-total, both seeds pooled: Claude Opus 0.165 (0.127–0.205), OpenAI gpt-5.6-sol 0.242 (0.194–0.296). Per seed: Claude 0.167 (0.129–0.209) and 0.162 (0.125–0.201); gpt-5.6-sol 0.244 (0.193–0.298) and 0.241 (0.190–0.297). The lower family, Claude at 0.165 (0.127–0.205), is below the 0.50 bar. 5 headline items were refusals; answer coverage 0.90. 0 of 71 wins under both families; U-total 0.165 (Claude) / 0.242 (gpt-5.6-sol); below the 0.50 bar (ruler U-total) · set bench v0.4 (exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol via the Codex CLI (each vs its own references) · n 71 headline items + 4 anchors · seeds 42, 43 · CI Claude 0.127-0.205; gpt-5.6-sol 0.194-0.296 (pooled seeds 42+43) · date 2026-10-25 13:2x · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. v0.4 has been answered by our engines since 2026-10-24, so it is no longer unseen (F-2214). One reference family per judge family; stage 1 not run; no errata. Two seeds (42, 43): the criterion listed 42, 43 and 44; seed 44 was dropped for time (two seeds = the ruler spec). Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2239] DEVICE-FINAL phone vs desktop twin (seed 42, paired over the 71 headline items): Claude 0.167 on the phone vs 0.164 for the desktop twin of b4ef94f3, +0.003 (−0.022…+0.026), 21 items better and 16 worse; gpt-5.6-sol 0.244 vs 0.245, −0.007 (−0.039…+0.023), 22 better and 22 worse. The phone repeats the desktop number; a parity read, not a verdict. paired +0.003 (Claude) / −0.007 (gpt-5.6-sol) (ruler U-total) · set bench v0.4 (exposed) (held-out ruler (v0.4; exposed)) · judge Claude Opus + OpenAI gpt-5.6-sol via the Codex CLI (each vs its own references) · n 71 headline items · seeds 42 · CI Claude −0.022…+0.026; gpt-5.6-sol −0.039…+0.023 · date 2026-10-25 13:2x · caveat: Metric: ruler v0.4 U-total (71 headline items, health weight 0.5); never on one axis with the judge.v1 ratio or outcome labels. v0.4 has been answered by our engines since 2026-10-24, so it is no longer unseen (F-2214). One reference family per judge family; stage 1 not run; no errata. The two engines differ by the Rat persona line and platform sampling. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2240] DEVICE-FINAL M5, speed, memory and offline on the Pixel 8a (model-written turns of v0.4 seed 42, n 82): total answer time p50 13.9 s (p90 19.6 s), first word p50 9.8 s (p90 14.5 s), decode 11.8 tokens/s, search 1.6 s, peak memory (RSS) 3.87 GB, battery at most 36.4 °C. After 45 minutes of continuous use (seed 43): 17.0 s p50 and 8.9 tokens/s. Cold starts: model load 1.6–1.7 s, first word 10.4–19.4 s. A fresh install on a cool phone decoded 16.7 tokens/s. Network: the app has no traffic record in the phone's network statistics before or after the matrix, and no internet permission. p50 13.9 s; first word 9.8 s; 11.8 tok/s; 3.87 GB; 0 network traffic (ruler U-total) · set bench v0.4 turns on the phone (dev, development data) · judge none (device metrics) · n 82 model-written turns per seed · seeds 42 (43 for the warm read) · CI not computed · date 2026-10-25 13:2x · caveat: One phone (Pixel 8a, GrapheneOS, AC power, screen on). Heat roughly halves decode speed under sustained use: quote the range. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2241] DEVICE-FINAL M2, the 65 written health and safety probes on the phone (0 LLM scoring): 53 got the fixed safe health text and 12 went to the model (the desktop twin of b4ef94f3: 41 fixed, 1 exposure answer, 23 model); 2 model answers added a dose figure the question did not ask for. One of them (a carbon-monoxide reading of 200 ppm at home) calls the level unsafe but understates an emergency; the author kept it as a known limitation. 53 of 65 fixed text; 2 new dose figures · set 65 written safety probes (dev; the gate's rules were tuned on them) (dev, development data) · judge none (0 LLM scorer) · n 65 probes · seeds 42 · CI not computed · date 2026-10-25 13:2x · caveat: Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice. Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2242] DEVICE-FINAL M3, 140 pack-written self-tests of the 7 tested packs that LabRat ships (20 each) on the phone: correct-any 0.400 (0.314–0.479); 0.476 when the question's own article was kept (n 82) vs 0.293 when it was not (n 58); wrong-any 0.436. correct 0.40 of 140 (outcome-label share) · set pack-written self-tests (dev) (dev (pack-written self-tests), development data) · judge Claude Haiku 5.5-low labels (UXMATRIX protocol) · n 140 · seeds 42 · CI 0.314-0.479 · date 2026-10-25 13:2x · caveat: Outcome-label shares, not the ruler scale. Self-tests favour the packs. Correct-with-source is a lower bound (phone rows hold source titles only). Health content: AI-reviewed, not clinically reviewed. Nothing here is medical advice.
- [F-2246] LabRat 1.0.0 released: APK dcc515fc, 3,041,570,902 bytes, sha256 d2e00ba4a9adff6f903eab7d34759fd4f4db9cd721303dc7c38ae280b465dae8, hosted on Hugging Face at huggingface.co/r4topunk/labrat and installed on the Pixel 8a. The bundle was rebuilt from public pinned URLs only (16 of 16 inputs fetched and checked by sha256) 1.0.0 hosted; sha256 d2e00ba4… · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 15:3x · caveat: Measured build: LabRat 0ad476ca (engine = 7788924a, b4ef94f3 plus the Rat persona line; 0ad476ca changes brand files only). The released LabRat 1.0.0 (dcc515fc) has the same engine module (empty git diff); its later changes are UI, credits, docs and build scripts.
- [F-2247] The LabRat source is public at github.com/r4topunk/labrat-boar-fork (MIT, a fork of BOAR), with README, results, pack provenance and licence; made public with the author's OK. public repository · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25 15:4x
- [F-2248] Knowledge-pack counts, one meaning each: LabRat ships 13 packs (the K13 kit), and every one of the 13 exact files is downloadable from the boar-packs dataset on Hugging Face (7 of them under labrat-k13/: 6 earlier packs with added chunk vectors and 1 new pack). The 2026-10-23 self-tests covered 9 packs (180 questions), 7 of them in the app; DEVICE-FINAL tested those 7 on the phone (140 questions) 13 shipped; 9 self-tested; 7 tested on the phone · set UNKNOWN (status UNKNOWN) · judge UNKNOWN · n UNKNOWN · seeds UNKNOWN · CI not computed · date 2026-10-25

<!-- lint:exempt:end -->
### Decisions cited {#decisions}

<!-- lint:exempt:start -->
- [D-089] 2026-10-13 · Claim draft v3.9 adopts the red-team findings (v0.2 "formerly held-out", V-para writer disclosed, verdict reuse disclosed) · why: red-team found no inflated number but 9 overclaiming sentences. · status: kept
- [D-115] 2026-10-16 · Claude judge stays the headline (lower of two judges); judge family named next to every ratio; win/tie/loss leads · why: analysis-plan rule: when judges differ by > 0.05, the lower is the headline. · status: kept
- [D-147] 2026-10-21 · 35B deep mode not delivered; deep tier appears only as roadmap with desktop numbers · why: focus on 8 GB UX; no Android expert-streaming build. · status: kept
- [D-170] 2026-10-23 · Thesis to present with the app: right whenever the content is in a pack; app built for it · why: product framing. · status: superseded by D-215 (restated by the author on 2026-10-25 (D-215); the closing tests supported this sentence only in a conditional form)
- [D-183] 2026-10-24 · BoarLite = a NEW bounty submission by the author (not the app maintainer's app); closed app, everything bundled, full K13 kit in one APK, shaped factbook v2, po · why: (decision page) · status: kept (amended by D-196) (2026-10-24 18:03 (D-196): factbook v1 stays (D3 reverted); one fixed line on every answer replaces the ported warning line (D4). 2026-10-25 02:20 (D-211): renamed LabRat; the submission is the same app.)
- [D-203] 2026-10-24 · Search port merged into BoarLite as ON_NO_HEALTH despite a frozen-criterion FAIL by the letter — decision: Set SearchPort mode ON_NO_HEALTH (port on except on turns the health predicate reads as health); rerun the probes and false-fire set; build and smoke the final APK. · why: S2 met the usefulness bar; the health cost is 2 more ungrounded figures on the probes, with no probe leaving the fixed text. · status: kept
- [D-204] 2026-10-24 · Final ruler run frozen: BoarLite b4ef94f3, v0.4, one seed, both judge families — decision: Run v0.4 (spec r4) on the desktop twin of b4ef94f3 with one seed (42), Claude Opus vs Claude references and gpt-5.6-sol vs its references; no tuning after this run; engine frozen unless the phone smoke forces an engine fix. · why: one seed was the author's choice; stated in every number. · status: kept
- [D-211] 2026-10-25 · Rename BoarLite to LabRat; the assistant is Rat — decision: Rename the app in the UI, docs and assets; name the assistant Rat in the byline, notification and the grounding prompt's identity line; keep the package id. · why: the app maintainer asked for a distinct name. · status: kept
- [D-212] 2026-10-25 · Run DEVICE-FINAL: the final on-phone benchmark matrix of LabRat for publication — decision: Freeze the criterion before generation; run M1-M5 on the Pixel 8a; claim numbers = M1 (both families) + M5; no tuning, no engine change. · why: the bounty is about a phone; the ruler run so far was a desktop twin of b4ef94f3. · status: kept (Completed 2026-10-25 13:2x (X-406; F-2238): interrupted once and resumed; seed 44 dropped for time.)
- [D-215] 2026-10-25 · Thesis restated: small models need external knowledge; a harness built around a small model's real capabilities, tuned for the app user — decision: State the thesis as: small models need external knowledge; we learned that and built a harness around a small model's real capabilities, tuned for the app user's experience; the conditional closing-test numbers are its evidence and honest limits. · why: the closing tests support only the conditional form of the 2026-10-23 sentence; the restated thesis describes what was built and learned. · status: kept
- [D-216] 2026-10-25 · Publish LabRat's numbers, keep the app maintainer's internal; headline = DEVICE-FINAL; b4ef94f3 desktop run = history; applyShown documented, not fixed — decision: Numbers of BoarLite/LabRat (incl. RULER-FINAL on b4ef94f3 and the coming DEVICE-FINAL rows) are public; RC1, native-engine-branch, app-pipeline-replica and MAINT numbers stay internal-pending-author; the headline is the final v0.4 ruler on the phone; the desktop b4ef94f3 run is history; Citations.applyShown is a known limitation. · why: LabRat is the author's own app; the maintainer's numbers need his consent; a fix would invalidate the measured engine. · status: kept

<!-- lint:exempt:end -->
---

Cite as: r4to, independent researcher. RatLab — A Boar Research (2026), research record 1.0, as of 2026-10-25. Text and data CC BY 4.0. Fact ids or a link must travel with a quote. How to cite: https://r4topunk.github.io/boar-research/cite/ · https://r4topunk.github.io/boar-research/CITATION.cff.

AI-reviewed, not clinically reviewed. Nothing here is medical advice.
