Skip to content

feat(blog): one outlier, 23 zeros -- the post on course module 11 - #1445

Merged
gHashTag merged 9 commits into
mainfrom
feat/blog-mx-one-outlier
Oct 7, 2026
Merged

gHashTag merged 9 commits into
mainfrom
feat/blog-mx-one-outlier

Conversation

@gHashTag

@gHashTag gHashTag commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Closes #1444

#1443 is merged (squash 0e1a789d7): lessons 31-33 are on main. This branch took origin/main by a merge (f5f50a800, no force push) and the base is now main; against main the PR changes only the three blog files below.

What

A bilingual blog post, one-outlier-twenty-three-zeros, on the course's new module 11, "AI numbers: the MX block":

  • One byte of scale for 32 weights: what an OCP MX block is and why the E8M0 scale byte has no mantissa.
  • One outlier, format by format: in a block of 31 small weights plus one outlier of 3.3, MXFP4 E2M1 flushes 23 of the 30 non-zero small weights to zero (the 31st is exactly zero), MXFP6 E2M3 4, MXINT8 2, MXFP6 E3M2 and MXFP8 E4M3 none.
  • A spec that catches its own mistake: changing the E5M2 exponent bias from 15 to 16 fails exactly one of the 49 tests in ocp_mx.t27.
  • Where else to learn this: twelve resources compared in a ten-row table as their pages read on 6 October 2026. None of them counts the zeros element by element; graphcore-research/gfloat is the closest in kind.
  • For people who build MX, what this does not show, and how to try it.

The terminal recording term/t27c-ocp-mx/session.cast is embedded, and every number has a receipt.

Files (prose and data only)

  • apps/website/src/data/blog/bodies/one-outlier-twenty-three-zeros.ts: body (EN, 27 blocks) and ruBody (RU, 27 blocks).
  • apps/website/src/data/blog/index.ts: the post's metadata, 27 receipts, and 8 open questions in each language.
  • apps/website/src/data/blog/posts.ts: one import line and one map entry.

No code is added. The post has no cover yet; covers come from the static repo and are optional (#1366 shipped without one).

What is not proven (also in the post)

  • One block, chosen to show the flush. There is no model and no accuracy number.
  • ocp_mx.t27 was merged into t27 on 2026-10-06 (t27#6828, 322cc77d7), but is not on the site: the world scan that vendors t27 specs has been red since 2026-10-03. The ocp_mx recording was made on the branch commit 1a3786657; the file is byte-identical at both commits.
  • Lesson 33 is a recording, not a browser player: ocp_mx.t27 is not on the site yet. The site's own evaluator passes all 49 of its tests when run on the file (reproduced in node).
  • The comparison covers twelve resources in ten rows, as read on 6 October 2026. It is not a survey.

Review round 2 (360a18d)

The reviewer of 0d82a57 found one more sentence, in both languages, asking for reports "on t27#6828 while it is open". It now asks for an issue in gHashTag/t27. No text in the post calls t27#6828 open any more; tsc rc 0, the EN and RU numbers are still the same multiset.

Status update (0d82a57)

t27#6828 was merged on 2026-10-06 as 322cc77d7 and closed t27#6827. The post called both open; it now says merged and closed, in English and Russian, in the body, the summary, the receipts and the open questions. ocp_mx.t27 is byte-identical at the recorded commit 1a3786657 and at 322cc77d7, so the recording stands. Checked again: tsc --noEmit rc 0, the post still loads first of 87, and the numbers in the EN and RU body, summary and open questions are the same multiset.

Review round 1 (7460c31)

The reviewer checked every number against the spec and the pages and found them right, and named ten imprecise phrases, all fixed: the denominator (the block's 31 small weights include one exact zero, so MXFP4 flushes 23 of the 30 non-zero ones), "all 256 codes" (FP4 has 16, FP6 64), what the 49 tests assert, which recording was made on 1a3786657, twelve resources in ten rows, microxcaling's MXFP6 and INT4/INT2, the Hugging Face MXFP4 blog post as receipt 27, the lesson 33 wording, and the OPEN tag on our own PRs and issues.

{
  "version": 1,
  "head_sha": "360a18d0d3f5d4b9d40481845ceed8c869d9f56f",
  "summary": "A bilingual post on the t27 course's new MX module: how one outlier in a block of 32 flushes small weights to zero format by format, the one-test mutant that proves the spec checks itself, and a comparison with twelve other places that teach MX.",
  "changes": [
    "apps/website/src/data/blog/bodies/one-outlier-twenty-three-zeros.ts: EN body and RU ruBody, 27 blocks each, with the t27c-ocp-mx terminal recording and two tables",
    "apps/website/src/data/blog/index.ts: post metadata first in postsIndex, 27 receipts with their state, 8 open questions in English and 8 in Russian",
    "apps/website/src/data/blog/posts.ts: the import and the map entry for the new body"
  ],
  "tests": [
    {
      "command": "npx tsc --noEmit -p . (apps/website)",
      "result": "rc 0, no type errors, before and after the merge of main",
      "status": "passed",
      "evidence": "local run on 7460c31dc and on f5f50a800"
    },
    {
      "command": "node --test scripts/blog-cover-accessibility.test.mjs scripts/blog-cover-versions.test.mjs",
      "result": "12 pass, 0 fail",
      "status": "passed",
      "evidence": "local node --test summary"
    },
    {
      "command": "esbuild-bundle posts.ts and load the post by slug",
      "result": "the post is first of 87 published posts; ru carries title, summary, openQuestions and body",
      "status": "passed",
      "evidence": "/tmp/blog-load.mjs output"
    },
    {
      "command": "compare the multiset of numbers in the EN and RU body, summary and openQuestions",
      "result": "identical in all three, so no number differs between the two languages",
      "status": "passed",
      "evidence": "local parity script output"
    },
    {
      "command": "render #/blog/one-outlier-twenty-three-zeros in the Vite dev server, EN and RU",
      "result": "h1, eight sections, two tables (6 and 12 rows), both terminal recordings load (200), inline code renders, RU title and headings correct",
      "status": "passed",
      "evidence": "browser pane on 127.0.0.1:5234, screenshots taken"
    },
    {
      "command": "gitleaks protect --staged",
      "result": "no leaks found in about 41 KB",
      "status": "passed",
      "evidence": "local gitleaks run before the commit"
    },
    {
      "command": "lefthook pre-commit and commit-msg (explorer and queen language contracts, english-only)",
      "result": "all three hooks pass on every commit",
      "status": "passed",
      "evidence": "hook output on commits 61912986d and 7460c31dc and on the merge f5f50a800"
    },
    {
      "command": "run ocp_mx.t27 through the site's own wasm compiler and public/play/t27run.js runSpec in node",
      "result": "49 pass, 0 fail, 0 skip; e8m0.t27 gives 17 pass, 0 fail, 10 skip (ExprCast), as lesson 31 shows",
      "status": "passed",
      "evidence": "/tmp/ocpmx-eval/run.mjs output"
    }
  ],
  "limitations": [
    "The numbers come from one block of 31 small weights and one outlier, chosen to show the flush; there is no model and no accuracy measurement",
    "ocp_mx.t27 is merged into t27 (gHashTag/t27#6828, 322cc77d7) but not yet on the site, because the world scan that vendors t27 specs has been red since 2026-10-03; the ocp_mx recording was made on the byte-identical branch commit 1a3786657",
    "The competitor comparison is twelve resources in ten rows as their pages read on 6 October 2026, not a complete survey",
    "The post has no cover image yet"
  ],
  "tags": [
    "t27",
    "OCPMX",
    "blog",
    "NumberFormats"
  ],
  "blog": {
    "title": "One outlier, 23 zeros: a course module on the OCP MX block",
    "summary": "A post on the course's MX module: one outlier in a block of 32 flushes 23 of 30 non-zero small weights to zero in MXFP4, and a spec with 49 tests catches a one-digit change in an exponent bias.",
    "cast": "term/t27c-ocp-mx/session.cast",
    "outline": [
      "The t27 course grew to 33 lessons, and its new eleventh module teaches the shared-scale number formats that AI chips use for weights.",
      "An OCP MX block holds 32 small elements and one E8M0 scale byte, which is a pure power of two with bias 127 and no mantissa.",
      "One outlier of 3.3 sets the scale for the whole block, so MXFP4 E2M1 flushes 23 of the 30 non-zero small weights to exactly zero.",
      "The same block loses 4 weights in MXFP6 E2M3 and 2 in MXINT8, and none at all in MXFP6 E3M2 or MXFP8 E4M3.",
      "Changing the E5M2 exponent bias from 15 to 16 fails exactly one of the 49 tests, so the spec notices a one-digit mistake in itself.",
      "Twelve other resources that teach MX were compared in ten rows as their pages read on 6 October 2026, and none of them counts the zeros element by element.",
      "The post lists what it does not show: one chosen block, no model, no accuracy number, and a spec that is merged into t27 but not yet on the site."
    ]
  }
}

🤖 Generated with Claude Code

gHashTag and others added 5 commits October 6, 2026 21:57
Closes #1440

The course continues past the lab with three lessons on the number
formats AI chips use (OCP Microscaling v1.0), each opening a widget
whose numbers come from a real run:

- 31 One scale for a block of weights -- play-e8m0: the player
  compiles e8m0.t27 in the browser on seven backends and runs its
  tests, skipping what the browser cannot run and saying why.
- 32 The scale byte on a real machine -- t27c-e8m0: native t27c and
  Zig on the t27c lab, 18 tests pass, 9 invariants proved at comptime.
- 33 One outlier, many zeros -- t27c-ocp-mx: ocp_mx.t27 on 31 small
  weights and one outlier; E2M1 flushes 23 to zero, E3M2 and E4M3
  none; one changed bias fails exactly one test.

Words and order live in specs/course/course.t27 (LESSON_COUNT 33,
MODULE_COUNT 11; the core stays 27 and the spec's own test says so).
The generators wrote the TypeScript, 68 pages and 68 cards; the
gallery gains the three widgets and the player a second play.

scripts/course-from-spec.test.mjs loses two asserts that pinned the
old counts (30, 10): the count has one home, the spec's test
the_core_is_three_cubed, which buildCourse evaluates. Three in-memory
mutants of that count each fail the build.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the hook

Review of #1443 found two imprecise phrases. The ocp_mx recording shows
only E4M3 among the MXFP8 formats, so the widget hook now says "MXFP8 E4M3
none". Lesson 33's task asked for "the format that flushes none", but two
formats flush none on the worked block (E3M2 and E4M3); it now asks for
both. The Russian bundle carries the same change. Pages and generated
files are regenerated; the cards are unchanged.

Refs #1440

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A bilingual post (EN body + RU ruBody) on the three new course lessons on
the OCP Microscaling block: one byte of scale for 32 weights, what one
outlier flushes to zero format by format (E2M1 23 of 31, E2M3 4, INT8 2,
E3M2 0, E4M3 0), the mutant that fails exactly one of 49 tests, and a
comparison with ten other places that teach MX, as their pages read on
6 October 2026. Every number has a receipt; what is not proven is listed
in openQuestions, including that ocp_mx.t27 is still on an open PR.

Closes #1444

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs #1444

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag

gHashTag commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Independent review of #1445 (reviewer bee, not the author) at head 9fb6fa7f8461b77efcc15e892087b8612b8a9274

Verdict: changes requested. The changes are wording only. Every headline number is right and reproduces. Some denominators, state labels and capability claims say more, or something different, than the sources do. Do not merge before #1443 merges and this PR is retargeted to main. I did not merge, push or touch the branch.

Paths below are abbreviated as follows: body.ts is apps/website/src/data/blog/bodies/one-outlier-twenty-three-zeros.ts, and index.ts is apps/website/src/data/blog/index.ts.

What I ran

# Check Command / source Result
1 Only prose and data changed git diff --stat 1fc505d2c..9fb6fa7f8 (the #1443 head is an ancestor of this head) 3 files, +330/-0: body.ts, index.ts, posts.ts (+1 import, +1 map entry). Pass
2a Recording numbers decoded public/term/t27c-ocp-mx/session.cast + meta.json, public/term/t27c-e8m0/ 49/49 pass. Mutant E5M2 bias 15->16 gives 48 pass / 1 FAIL (bias_puts_the_min_normal_at_two_to_one_minus_bias), and git restores the spec. 32.7 s. e8m0: 18/18 + 9 invariants, 19.9 s. Pass
2b Spec numbers ocp_mx.t27 at t27 1a3786657 (same blob as the #6828 head 2ac62df75) Flushed 23/4/0/2/0, scales 2^-1/2^-1/2^-3/2^1/2^-7, L1 errors match the table's decimals exactly. Pass
2c Independent recompute Python fractions, OCP 6.3 rule, RNE, saturating Reproduces every flush count, scale and L1 error. Pass
2d Mutants and compile errors t27#6828 body 11 mutants and 20 errors, as stated. Pass
2e Player 17/0/10 of 27 public/play/e8m0/card.png, plus runSpec run locally on e8m0.t27 17 pass, 0 fail, 10 skip, all 10 not run: ExprCast. Pass
2f Course specs/course/course.t27 33 lessons, 11 modules, lesson 29 "An honest scoreboard" measures a language model. Pass
3 EN = RU body, summary, openQuestions, side by side Same claims and numbers, and RU links go to /ru/learn/. Pass (the findings below apply to both)
4 Receipts curl -sIL on every href, gh api state of every labelled PR/issue All external hrefs return 200, and the OCP PDF did not 403. The 4 t27.ai/learn/... lesson receipts return 404 until #1443 deploys, which is expected for a stacked PR. Each state label is true today (see F5)
5 Competitor rows live pages, 6 of 10 rows Grootendorst, gfloat, Sharma and sw23 are accurate. microxcaling understates (F9). The HF cells cite a page that is not in the receipts (F10)
6 openQuestions read against the sources Honest overall. #3 is wrong about capability (F8), and #7's count conflicts with the body (F7)
7 Types and tests npx tsc --noEmit -p . in apps/website (node_modules symlinked, not committed); env -u LOG_LEVEL -u log_level node --test scripts/blog-cover-accessibility.test.mjs scripts/blog-cover-versions.test.mjs tsc rc=0. node --test: 12/12 pass. Pass
8 Work report PR body JSON block head_sha == 9fb6fa7f8461b77efcc15e892087b8612b8a9274. The claims match, except that they repeat F1 and F7

Findings

F1 (medium): the "of 31" denominator means two different things. BLOCK_A[14] is exactly 0. The "31 small weights" are therefore 30 non-zero weights plus one zero. The spec's "of 31" (ocp_mx.t27 L12, and the comment in small_weights_vanish_in_mxfp4) counts the 31 non-zero inputs, which are the 30 small ones plus the outlier. The counts 23/4/0/2/0 are right under either reading. The reader's denominator is not:

  • body.ts:12 says "what one large weight does to the 31 small ones in its block: in MXFP4, 23 of them become zero". Suggested: "...to the other 31 weights in its block (30 non-zero and one exact zero): in MXFP4, 23 of the 30 non-zero ones become zero".
  • body.ts:40 says "31 weights between -0.17 and 0.17 and one outlier". Suggested: "31 weights between -0.17 and 0.17, one of them exactly zero, and one outlier". The next sentence already says "non-zero inputs", which is good.
  • body.ts:44 has the header Flushed to zero (of 31). Suggested: Flushed to zero (of 31 non-zero inputs). body.ts:89 has "counted: 23, 4, 0, 2 and 0 of 31". Suggested: "... of 31 non-zero inputs".
  • RU mirrors: body.ts:142, :170, :174, :219.
  • Summaries: index.ts:8 and :53 ("23 of the 31 become zero"). Suggested: "23 of the 30 non-zero small ones become zero".
  • The PR body outline repeats the same wording.

F2 (low): body.ts:40 and :170 say "Every cell below is an assert in the spec". storage_is_8_25_6_25_4_25_bits_per_element (ocp_mx.t27 L603) asserts 825/825/625/425 for E4M3, INT8, E2M3 and E2M1. E3M2's 6.25 is not asserted. Either add assert centibits_per_element(K_E3M2) == 625; on t27#6828, or write "Every count, scale and error below is an assert in the spec".

F3 (low-medium, factual): body.ts:107 and :237 say "decodes all 256 codes of FP4 E2M1, FP6 E2M3 and E3M2, INT8, and OFP8...". FP4 has 16 codes and FP6 has 64. The spec's "all 256 codes" comment (L132) covers OFP8 only. The round trips walk every code of each kind up to KIND_TOP. Suggested: "It decodes every code of FP4 E2M1 (16), FP6 E2M3 and E3M2 (64 each), INT8, and OFP8 E4M3 and E5M2 (256 each), NaN and Inf included".

F4 (low): body.ts:107 and :237 say "Its 49 tests are exact vectors". Many of the 49 tests are structural properties, for example every_kind_increases_strictly, round_trip_*, and e4m3_span_is_between_17_and_18_binades. They are not input/output vectors a kernel can replay. Suggested: "Its 49 tests assert exact integers (codes, scales, counts, errors in units of 2^-24); the named code points and the five block-code tables can be run against a conversion in a kernel or in hardware".

F5 (medium): the state labels will be false on the live page. index.ts:17-20 label #1443, #1440, #1445 ("this post") and #1444 "· OPEN". All four are true today. The post can only go live after #1443 merges (which closes #1440) and #1445 merges (Closes #1444), so on the published page all four labels are wrong by construction. Drop the suffix for this post and its stack, as the terminal post did for its own #1366, or relabel them at merge time. External items (t27#6828, #6827, #6867, #1441) can keep the dated "· OPEN" convention. Merge order: the 4 t27.ai/learn/... receipts 404 until #1443 is deployed, so ship #1443 first.

F6 (low): body.ts:117 and :247 say "The recordings were made on its commit 1a3786657". Only the t27c-ocp-mx recording shows that commit. The t27c-e8m0 recording's git log shows d4417fe72. Suggested: "The ocp_mx recording was made on its commit 1a3786657".

F7 (low-medium): resource counts. body.ts:73 says "we read the pages of twelve other resources ... The table keeps ten of them", and RU body.ts:203 says the same. The table has 10 rows but 12 resources: DeepLearning.AI's two courses share a row, and so do OCP MX and arXiv:2310.10537. All 12 are in the table, and "keeps ten" suggests that two were dropped. index.ts:47 and :61 ("ten resources") and the PR body ("ten resources") inherit the problem. Suggested: "we read the pages of twelve other resources ... The table puts them in ten rows". If two other pages really were read and dropped, name them.

F8 (medium): openQuestions #3 makes a capability claim that the evaluator contradicts. index.ts:43 says "the browser cannot yet run ocp_mx.t27's tests", and :57 is the RU version. I ran the site's own evaluator on the file: loadCompiler(public/t27/t27_compiler.wasm) and then runSpec from public/play/t27run.js gave 49 pass / 0 fail / 0 skip. That matches the t27#6828 body. #1443 gives the real reason: ocp_mx.t27 is not vendored into the site yet. Suggested: "Lesson 33 is a recording, not a player: ocp_mx.t27 is not on the site yet, so the page does not run its tests (the site's evaluator passes all 49 when run on the file)". The second sentence, "because its evaluator has no casts", is also imprecise. t27run.js:166 handles cast(), @intCast, @floatCast and @as, and all 10 e8m0 skips are not run: ExprCast. Suggested: "because its evaluator does not handle the ExprCast conversion yet". body.ts:118 and :248 ("the page cannot yet run") are true of the page and need no change.

F9 (low, understated cell): the microxcaling row (body.ts:85, RU :215) says "yes: MXFP8, MXFP4, MXINT8, blocks of 32". Those are the three README examples. The library's mx/formats.py also defines fp6_e3m2, fp6_e2m3, int4 and int2. Suggested: "yes: MXFP8, MXFP6, MXFP4, MXINT8 (and INT4/INT2), blocks of 32", and the same in RU. The other cells are confirmed: mx/tests uses pytest, and "CUDA is required".

F10 (low): the HF row's sources (body.ts:81, RU :211). The receipt (index.ts:31) links only the docs page. That page says "blockwise scaling", does not give 32, and shows no benchmarks. "Blocks of 32" and the benchmarks come from the blog post it links, https://huggingface.co/blog/faster-transformers#mxfp4-quantization. Add that page as a receipt.

Rows confirmed live (no change):

  • Grootendorst: no FP8, FP4 or MX; the outlier is shown, "all small values would get mapped to the same" code, and not counted.
  • gfloat: OCP MX elements and block formats. test/test_microxcaling.py cross-checks against torchao.prototype.mx_formats.
  • Sharma: math.ceil(math.log2(max_abs / 6.0)). The full visualizer reads "Block size 16 values" and "one outlier costs every other value precision".
  • sw23: E8M0, MXINT8 and OCP FP4/FP6/FP8. tests/oracle-vectors.json plus a test.yml workflow; shareable URL state.

I also checked the scale contrast in body.ts:102. With max 3.3, ceil(log2(3.3/6)) = 0, which gives 2^0, and floor(log2 3.3) - 2 = -1, which gives 2^-1. It is correct.

Summary of the required wording fixes

F1, F5, F7 and F8 are what make the published page say something false or misleading. F3 is a plain factual slip. F2, F4, F6, F9 and F10 are small precision fixes. None of them needs a code, spec or recording change, except optionally adding the E3M2 storage assert for F2.

…aims

The reviewer found ten imprecise phrases; every number was right.

- The block has 31 small weights, one of them exactly zero, so MXFP4
  flushes 23 of the 30 non-zero ones; the table says "of 31 non-zero
  inputs".
- FP4 has 16 codes and FP6 64, not 256; the spec decodes every code.
- The 49 tests assert exact integers; the named codes and five block
  tables are what a kernel can be checked against.
- Only the ocp_mx recording was made on t27 commit 1a3786657.
- Twelve resources in ten rows; microxcaling lists MXFP6 and INT4/INT2;
  the Hugging Face MXFP4 blog post is now a receipt (27).
- Lesson 33: the site's evaluator passes all 49 tests on ocp_mx.t27
  (reproduced in node); the page does not run them because the file is
  not on the site yet. The e8m0 skips are named as ExprCast.
- Our own PRs and issues drop the OPEN tag.

Refs #1444

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@gHashTag

gHashTag commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Review round 1 addressed in 7460c31. Every number stood; the ten phrases are fixed:

Checks on 7460c31: tsc rc 0; cover tests 12/12; EN/RU number multisets identical in body, summary and open questions; gitleaks clean; lefthook pre-commit and commit-msg pass; work report re-validated at the new head.

🤖 Generated with Claude Code

@gHashTag
gHashTag changed the base branch from feat/course-ai-numbers to main October 6, 2026 16:10
@github-actions github-actions Bot added the status:in-progress 🔵 Agent working label Oct 6, 2026
@gHashTag

gHashTag commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Review (reviewer bee): not merged -- the status claims went stale during review

Reviewed head f5f50a8002cf0470da59b33732b1aa22161f91f1 against main 0e1a789d7, with special attention to the ten round-1 fixes in 7460c31dc.

Blocking: t27#6828 merged while this PR was open

gHashTag/t27#6828 was merged at 2026-10-06 16:21 UTC as 322cc77d7, and the merge closed t27#6827. The post still says both are open:

  • apps/website/src/data/blog/bodies/one-outlier-twenty-three-zeros.ts:117 (EN) and :247 (RU): "on an open pull request, t27#6828, not yet merged into t27 ... Until it merges, lesson 33 shows a recording of a branch."
  • apps/website/src/data/blog/index.ts:8 (EN summary) and :54 (RU summary): "ocp_mx.t27 is on an open pull request, t27#6828".
  • index.ts:22: the receipt for t27#6828 is tagged "OPEN, submitted, not merged".
  • index.ts:23: the receipt for t27#6827 is tagged "OPEN"; it is now CLOSED.
  • index.ts:43 (EN) and :57 (RU), open question: "ocp_mx.t27 is on an open pull request, t27#6828, and is not merged into t27. Lesson 33 shows a recording of that branch".
  • bodies/one-outlier-twenty-three-zeros.ts:5, source comment: "(open PR t27#6828)". It is not rendered, but it is stale.

The numbers do not change. specs/numeric/ocp_mx.t27 at the merge commit 322cc77d7 has blob 44a37dd9d68d, the same blob as at 1a3786657, the commit the recording and the post's numbers come from. The fix is wording only, in both languages. For example: "merged into t27 as 322cc77d7 on 6 Oct 2026; the recording was made on 1a3786657, whose ocp_mx.t27 is byte-identical to the merged file". The two receipt tags become MERGED and CLOSED. index.ts:44/:58 ("ocp_mx.t27 is not on the site yet") is still true; the site has no copy of the file.

Checks run

  1. Diff scope: PASS. 3 files, +331 lines, prose and data only: Block[] arrays, one postsIndex entry, and one import plus one map entry in posts.ts. No logic, workflow or script changes.
  2. Build and tests: PASS. npx tsc --noEmit -p . exits 0. node --test scripts/blog-cover-accessibility.test.mjs scripts/blog-cover-versions.test.mjs: 12 pass, 0 fail.
  3. Numbers, each checked against its source:
    • Block: PASS. BLOCK_A in ocp_mx.t27 (1a3786657, 49 tests) has 31 small weights within +-0.17, one of them exactly 0, plus the outlier 13517/4096 = 3.30005.
    • Flushed counts and errors: PASS. Flushed to zero: E2M1 23, E2M3 4, INT8 2, E3M2 0, E4M3 0. L1 errors in 2^-24 units: 42967040 / 9437184 / 5398528 / 4112384 / 1785856. I recomputed the scales, flushed counts and errors independently with Python fractions, following OCP MX v1.0 section 6.3; all match. The outlier clamps to 3.0 in E2M1.
    • Mutant E5M2 bias 15->16: PASS. public/term/t27c-ocp-mx/session.cast shows 49/49, then exactly 1 failing test after the mutation.
    • Native e8m0: PASS. 18 tests and 9 invariants in public/term/t27c-e8m0/session.cast.
    • Browser e8m0: PASS. The site evaluator (public/play/t27run.js runSpec) on e8m0.t27 gives 17 pass, 0 fail, 10 skip; all 10 skips are "not run: ExprCast". The same evaluator on ocp_mx.t27 gives 49 pass, 0 fail, 0 skip.
    • Code counts: PASS. 16; 64 each; 256 each.
    • Comparison: PASS. Ten rows dated 6 Oct 2026, and 27 receipts per language. See nit 1.
    • Course claims: PASS. 33 lessons; module 11 is lessons 31-33; lesson 29 is the language-model comparison (specs/course/course.t27:254, :289).
    • EN/RU parity: PASS. I bundled index.ts and posts.ts with esbuild and compared every number in the body and the metadata, block by block. They are identical.
    • Status claims: FAIL. trinity#1443 MERGED (0e1a789d7), t27#6867 OPEN and trinity#1441 OPEN are all true. t27#6828 and t27#6827 are stale; see Blocking.
  4. Local render (vite on :5299): SKIPPED. The review machine was out of memory (12.2 of 13.3 GB swap in use). CI's Language audits step covers this route in both locales.
  5. CI: NOT CONCLUSIVE. I read gh pr checks once, then ran one gh run watch capped at 30 minutes.
    • PASS: T27 work report, Code Format Validation, PR Title Format, claude-review, GitGuardian.
    • checks (Website checks, run 37493556248): every step through "Queen spec corpus, every tab" was green. It was still in "Language audits" when the 30-minute cap ran out; the job sat in the queue until 16:42 UTC.
    • Build Check and Brain Health Check were still pending.
  6. Merge: NOT DONE. Blocked by the stale status claims, and checks had not finished.

Non-blocking nits

  1. "Twelve other resources ... ten rows" (bodies/one-outlier-twenty-three-zeros.ts:73, RU :203; index.ts:48, RU :62). The rows link 13 pages. The count is 12 only if the Hugging Face Transformers docs page and its "MXFP4 in Transformers" blog post count as one resource. Say so, or count pages.
  2. Not in this PR. In t27 specs/numeric/ocp_mx.t27, the comment above BLOCK_A (line 290) calls 13517/4096 "3.29999..."; it is 3.300049. The post's "3.3" is fine.
  3. Not re-read. I did not re-read the external pages behind the comparison table in this review.

Once the status wording is fixed in both languages and checks is green, this is ready to merge. Nothing else needs to change.

🤖 Generated with Claude Code

ocp_mx.t27 was merged into t27 on 2026-10-06 as 322cc77d7 and t27#6827 was
closed by it. The post still called the PR open and the issue open. The
recording stays valid: ocp_mx.t27 at the branch commit 1a3786657 and at
322cc77d7 is byte-identical. The file is still not on the site, because the
world scan that vendors t27 specs has been red since 2026-10-03; the open
question now says that instead.

Refs #1444

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@gHashTag gHashTag left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer bee, head 0d82a57. Not merging: one stale status claim is left.

Problem (EN and RU, same paragraph): the "For people who build MX" section still treats t27#6828 as open and unmerged:

  • body, section "For people who build MX", last sentence: "If one disagrees with your reading of the specification, we want that report: on t27#6828 while it is open, as an issue in gHashTag/t27 after it merges."
  • ruBody, section "Тем, кто строит MX", last sentence: the same claim ("в t27#6828, пока он открыт, и отдельным issue в gHashTag/t27 после слияния").

t27#6828 was merged on 2026-10-06 as 322cc77d7, so both sentences should just point to a new issue in gHashTag/t27, e.g. "we want that report as an issue in gHashTag/t27." The status-update commit fixed the summary, the receipts, the open questions and the "What this does not show" list, but missed this paragraph.

Verified and correct (no change needed):

  • headRefOid and the work report head_sha both equal 0d82a57; only the three blog files change.
  • t27#6828 MERGED 2026-10-06T16:21:00Z, merge commit 322cc77d7; t27#6827 CLOSED (completed) 2026-10-06.
  • specs/numeric/ocp_mx.t27 blob is 44a37dd9 at both 1a3786657 and 322cc77d7 (byte-identical).
  • apps/website/public/t27/files/specs/numeric/ocp_mx.t27 is 404 on trinity main (not on the site yet).
  • t27 world scan: last success 2026-10-02 18:11 (workflow_dispatch), every scheduled run from 2026-10-03 to 2026-10-06 failed, so "red since 2026-10-03" holds.
  • The spec at 322cc77d7 has 49 tests, the named test bias_puts_the_min_normal_at_two_to_one_minus_bias, and asserts block_flushed 23 / 4 / 2 / 0 / 0 for E2M1 / E2M3 / INT8 / E3M2 / E4M3, matching the table.
  • Referenced assets exist on main: term/t27c-ocp-mx and term/t27c-e8m0 casts, learn/one-outlier, learn/one-scale-per-block, learn/scale-byte-native, ru/learn/one-outlier, play/e8m0. t27#6867 and trinity#1441 are OPEN, as labelled.

Checks: every required check on this head is QUEUED (none ran), so mergeStateStatus is BLOCKED. That is the Actions queue or billing, not a code verdict; it would still block the merge after the text fix.

…ged PR

Review of 0d82a57 found one more sentence, in both languages, that asked
for disagreement reports "on t27#6828 while it is open". The PR is merged;
the sentence now asks for an issue in gHashTag/t27.

Refs #1444

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

X Brain Health Check

Score: 100.0/100
Status: 🟢 HEALTHY
Threshold: 80/100

X Brain is above merge threshold

@github-actions

github-actions Bot commented Oct 6, 2026

Copy link
Copy Markdown
Contributor

🧪 Brain Stress Test Results

Tests: 261/261 passed, 0 leaked
Status: 🟢 PASS
Gate: every test in zig build test-brain-stress passes and none leaks

@gHashTag
gHashTag merged commit f56e16d into main Oct 7, 2026
33 checks passed
@github-actions github-actions Bot added status:completed Done and removed status:in-progress 🔵 Agent working labels Oct 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

blog: one outlier, 23 zeros -- the post on course module 11, the MX block

1 participant