TL;DR: The Mk4 Championship Scoring Engine now runs in Python. Score a .faf file in Rust, TypeScript, or Python — you get the same number. 396 tests across both packages, including 129 new WJTTC championship tests that caught 3 defects standard CI missed.
Why Now
AI struggles to remember project context. That's the problem FAF solves — and 47K+ downloads across npm, PyPI, and crates.io prove developers agree. When gemini-faf-mcp landed on PyPI, Gemini and Google developers showed up fast. The traction was immediate.
Based on that demand, we've overhauled the Python scoring engine to enterprise level. The Mk4 Championship Scoring Engine — the same Rust-WASM kernel that powers faf-cli — now runs natively in Python. The best context memory tooling ever built for FastMCP, Gemini Extensions, and Python AI pipelines.
The Fix
Port the Mk4 engine from Rust to Python. Not WASM — the binary was compiled with wasm-bindgen (JavaScript-only imports). Pure Python. ~150 lines. Same 21 slots, same 8 placeholder rejections, same formula, same rounding.
| Input | Rust | TypeScript | Python |
|---|---|---|---|
| 3 project slots | 14% | 14% | 14% |
| 6 human_context | 29% | 29% | 29% |
| 11/21 half-filled | 52% | 52% | 52% |
| 21/21 full | 100% | 100% | 100% |
| 4 slotignored, 17/17 | 100% | 100% | 100% |
Every row identical. Not by coincidence — by 50 parity tests ported directly from the Rust test suite with identical inputs and expected outputs.
WJTTC: Championship-Grade Testing
We built 129 new WJTTC tests for this release — adversarial inputs, concurrency under load, security hardening, null bytes, YAML bombs, path traversal. The kind of inputs that real projects generate at scale.
The suite caught 3 crash-level defects that standard testing and CI missed. All three were fixed before publish. That's the point of championship-grade testing — you break it in the lab so it never breaks in the field.
Unhandled YAML parse errors on non-printable characters — null bytes, control characters, binary content.
Type boundary failure when project field contains null instead of a mapping — common in hand-edited files.
Type boundary failure when project field contains a non-dict value — AttributeError on a hot path.
396 tests standing between your users and an unhandled exception.
V6 Tier Alignment
Tiers are now clean uppercase strings matching faf-cli v6. Only Trophy gets the emoji. Everything else uses Unicode geometry.
100% 🏆 TROPHY
99% ★ GOLD
95% ◆ SILVER
85% ◇ BRONZE
70% ● GREEN
55% ● YELLOW
1% ○ RED
0% ♡ WHITE Only Trophy gets full graphical recognition. Everything else is earned quietly. Clean in terminals. Clean in JSON. Clean in CI logs. Renders everywhere.
Enterprise Ready
Base scoring covers 21 universal slots. Enterprise scoring adds 12 more — monorepo tooling, cache layers, search infrastructure, remote build orchestration. 33 slots total.
from faf_sdk import score_faf, LicenseTier
result = score_faf(yaml_content, LicenseTier.ENTERPRISE)
# 33 slots — monorepo, cache, search, storage, remote build 33 slots. Google Cloud, enterprise-ready. From solo projects to 200-package monorepos — one engine, one standard. The same API whether you're in Python, Rust, or TypeScript.
The Context Standard
package.json defines your dependencies. pyproject.toml defines your build. project.faf defines your context. One structured file in your project root — scored, validated, portable — that AI reads in milliseconds instead of spending tokens interpreting what you're building.
Memory is an active space. Frontier labs and well-funded teams are building solutions — but most are building memory, not context. Memory recalls conversations. Context knows your project. FAF has been shipping structured project context since October 2025 — IANA-registered, MIT-licensed, improving every tool it touches. We're open to enhancing all of them.
Don't waste tokens explaining your project. Define it once from the root. Let AI read, not guess.
Also Shipped
- Removed dead code (
sync_faf.py— superseded byfaf bi-sync) faf_scoreandfaf_validatenow return slot-level detail:populated,active,total- Tier names aligned to faf-cli v6 — clean strings, not emoji
- mypy clean across the SDK
Try It
pip install faf-python-sdk pip install gemini-faf-mcp The Numbers
- faf-python-sdk v1.1.1 — 175 tests, 100% Trophy
- gemini-faf-mcp v2.2.0 — 221 tests, 100% Trophy
- 396 total — tests across both packages
- 129 new — WJTTC championship tests
- 3 bugs — found and sealed
- 47K+ — total FAF downloads across 3 registries
