TL;DR: faf-kernel is the engine under every FAF score. We scored 9 public project.faf files through 6 engines: the kernel itself, faf-cli, faf-python-sdk
and three hosted MCP routes. 54 of 54 scores agree.
In Plain English
Old state. Each FAF app grew its own way of scoring. They mostly agreed. Mostly isn't good enough for a number people rely on.
Fix. One kernel. Every app either runs it, or matches it file for file and proves it with tests.
New state. Ask any FAF tool about your project and you get the same number. The table below shows it.
cargo add faf-kernelThe same kernel, compiled to WebAssembly, is on npm as faf-scoring-kernel.
That's the build faf-cli carries.
The matrix
Nine public project.faf files from FAF repos, each scored by six engines on
September 30, 2026. The last row is the faf-cli file with its slotignored markers stripped, the way a file looks before faf auto.
| File | faf-kernel | faf-cli v8 | Python v2 | /claude | /grok | /faf |
|---|---|---|---|---|---|---|
| agents-md-facts | 52 | 52 | 52 | 52 | 52 | 52 |
| mcp-context-card | 56 | 56 | 56 | 56 | 56 | 56 |
| claude-faf-mcp | 100 | 100 | 100 | 100 | 100 | 100 |
| faf-cli | 100 | 100 | 100 | 100 | 100 | 100 |
| faf-mcp | 100 | 100 | 100 | 100 | 100 | 100 |
| faf-python-sdk | 100 | 100 | 100 | 100 | 100 | 100 |
| gemini-faf-mcp | 100 | 100 | 100 | 100 | 100 | 100 |
| grok-faf-mcp | 100 | 100 | 100 | 100 | 100 | 100 |
| faf-cli, no markers | 36 | 36 | 36 | 36 | 36 | 36 |
/claude, /grok and /faf are the hosted routes on
mcpaas.live. claude-faf-mcp, faf-mcp and grok-faf-mcp score through faf-cli, and
gemini-faf-mcp through faf-python-sdk, so the table covers them too.
The no-markers row is the upgrade story in one line: 36 until faf auto marks
the 12 enterprise slots slotignored, then 100.
The version numbers tell the story
faf-cli is at v8, claude-faf-mcp v7, faf-mcp v4, gemini-faf-mcp v3, grok-faf-mcp and faf-python-sdk v2, mcpaas.live v1.8. The kernel is at v1.1. It's the youngest piece, and it's the engine every other product now stands on.
v1.1.1 made the last difference go away: tbd and todo count as
empty, in the kernel and everywhere else.
The series
- The Always33 Suite: the overview
- Part I, faf-cli v8: where the engine was authored
- Part II, claude-faf-mcp v7: Claude Code, Desktop and claude.ai
- Part III, faf-mcp v4: every IDE
- Part IV, gemini-faf-mcp v3 and grok-faf-mcp v2: frontier models
- Part V, faf-python-sdk v2 and mcpaas.live v1.8: Python and the edge
- Part VI, faf-kernel v1.1: the engine under all of them
Try it
npx faf-cli auto npx faf-cli scoreThen ask Claude, your IDE, Gemini or Grok for the score. It will be the same number.
More depth: crates.io · docs.rs · The Always33 Suite.
Technical details
- Version: faf-kernel 1.1.1 (September 25, 2026)
- Packages: crates.io
faf-kernel· npmfaf-scoring-kernel(WebAssembly) - Scoring: always-33; 21 slots filled, the 12 enterprise slots
slotignoredwhere they don't apply - Matrix: 9 files × 6 engines = 54 scores, all equal (September 30, 2026)
Feedback welcome
Questions, nits, suggestions: guide the next version. Tell us what you want to see.
