TL;DR: Until now we had 85% as a recommended minimum. It's now 100. All or nothing. AI gets its best shot at assisting you. We can ask this because we can now get you to 100% on virtually any app-type — 20 of them in the ladder, including the new about type that just took the count to a score.

The Shift

From v6.6 onward, faf-cli recommends only 🏆 Trophy.

That's the change in one sentence. At 100%, AI never has to guess. At 99%, it guesses on one slot. There is no halfway — sub-Trophy is just a count of slots from Trophy, an interim state, never an endpoint.

Why now? Because 100% used to be aspirational on certain project shapes — CLI tools that genuinely have no database, libraries that don't ship a build pipeline, documentation repos with no stack at all. The slot-ignore mechanic helped, but the catalogue of app-types was still incomplete. With v6.6's 20-type ladder, that gap closes.

The 20th Type

v6.6 adds about — the first non-app type in the ladder.

An About Repo represents another codebase: a public-facing companion to a private source. Wolfe-Jam/mcpaas-cf represents the private Wolfe-Jam/faf-mcpaas. The pattern lets a private project earn verifiable FAF receipts (badges, scoring, AI context) without exposing the engine.

app_type: about
about:
  represents: Wolfe-Jam/faf-mcpaas
  source_score: 100

Zero slots, no auto-detection. The owner declares it; the CLI respects it. Scoring short-circuits to about.source_score — the About inherits the source's Trophy via owner attestation.

Adding about brought the app-type ladder to 20. A score, in the old English sense. Fitting, because v6.6 is when that score became the only one we recommend.

The CLI Follows Through

faf go ramps to 100%, not 85%.

The score line celebrates Trophy explicitly — "Trophy. AI never has to guess." Sub-Trophy is framed as "N slots from Trophy", with the empty slot names printed inline so the next move is obvious.

$ faf score
🏆 TROPHY 100% 9/9 slots — project.faf
  Trophy. AI never has to guess.

$ faf score   # on a sub-Trophy project
◆ SILVER 95% 19/20 slots — project.faf
  1 slot from Trophy: human_context.where

faf sync --pull (the MD → .faf direction) is now Trophy-gated. Below 100%, the gate refuses the operation with a helpful message:

$ faf sync --pull
× sync --pull blocked: requires 🏆 Trophy (currently 81%)
  MD → .faf backfill only runs at 100%. Reach Trophy with 'faf go', then retry.

Backfilling from CLAUDE.md into a sub-Trophy .faf would overwrite canonical slots with prose that wasn't derived from .faf in the first place. The gate keeps the foundation honest.

Why All-or-Nothing

The why is architectural, not aspirational:

Layer 4   AI tooling          ← AI optimised by complete FCL
Layer 3   Agents              ← can act because FCL is complete
Layer 2   MD instructions     ← can be regenerated correctly
Layer 1   .faf (FCL)          ← 🏆 Trophy = complete = foundation

100% on Layer 1 is what makes Layers 2–4 work. Sub-100% degrades every layer above it — instructions miss context, agents guess, AI optimisation can't happen because the foundation has holes. Halfway is the trap.

"Bronze 85% — ship with note" was retired at v6.6.0. The /pubpro publish gate now requires Trophy. The README language shifted: "Trophy 100% — all or nothing." The tier ladder itself stays intact — the recommendation is what changed, not the math.

Slot Vocabulary — Mk4 Lands in Docs

The Mk4 canonical slot names landed in the code on 2026-03-18 (backward compatible on read). v6.6 flips the user-facing surfaces — READMEs, docs, help text — to match:

Old namev6.6 canonical
frontendframework
databasedb
css_frameworkcss
state_managementstate
api_typeapi
package_managerpkg_manager

36k+ existing .faf files keep scoring correctly — only the vocabulary shifted on user-facing surfaces.

Try It

faf is the verb — same word, every surface:

bunx faf
npx faf
npm install -g faf-cli
brew install faf-cli

Bare faf is shorthand for faf auto — same behaviour, fewer keystrokes. The workflow: init → auto → go → 100%.

The Numbers

  • v6.6.0 — released May 11, 2026
  • 674/674 tests passing (2,238 expect() calls)
  • 🏆 Trophy 100% — the only recommended state
  • 20 canonical app-types (19 detectable + 1 owner-attested)
  • 368.7 kB npm tarball, 1.6 MB unpacked, 8 files
  • 26k+ downloads on the path to here

The Receipts

None of this is a brand promise — it's measurement.

  • IANA-registered: application/vnd.faf+yaml — registered 2025-10-30
  • Anthropic-listed: claude-faf-mcp shipped as "Persistent Project Context Server" in modelcontextprotocol/servers PR #2759 — merged 2025-10-17
  • MCP Registry: FAF Ecosystem #2759 (Five Fingers)
  • xAI commission: ZEPH project, active this week
  • 100+ repos under FAF discipline, ~80% with current project.faf

FAF defines. MD instructs. AI codes. FAF don't lie.

Patch Trail

  • Plugin v6.6.0 · May 11, 2026 · Claude Code plugin rebuild lands — sharp + elegant discovery surface for faf-cli. Install: /plugin marketplace add Wolfe-Jam/faf-cli, then /faf.