faf-cli 7.16.2 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -65,6 +65,7 @@ No setup, no drift, no re-explaining.
65
65
  ```bash
66
66
  bunx faf auto # Bun — zero install, fastest path
67
67
  npx faf auto # npm — works everywhere
68
+ pnpm dlx faf auto # pnpm — zero install
68
69
  brew install wolfe-jam/faf/faf-cli && faf auto # Homebrew (auto-taps)
69
70
  ```
70
71
 
@@ -132,18 +133,36 @@ faf memory etch "a durable fact" --id my-fact
132
133
  faf memory show
133
134
  ```
134
135
 
135
- ### What's New in v7.16.0 — The Discoverable Edition
136
+ ### What's New in v8.0.1 — The Always33 Edition
136
137
 
137
- **`faf compile` emits FAFb wire v2 — same bytes as the faf-fafb golden.** (7.16.2)
138
+ **pnpm installs work: faf-cli depends on faf-scoring-kernel from npm, not a vendored folder.**
138
139
 
139
- **A card nobody can find is not a card. The catalog `faf cards` writes now names who publishes it, keys every row the way the specs say to, and can be written as the ARD manifest agent search engines read.**
140
+ - **The fix.** 8.0.0 pointed at a `vendor/` folder inside faf-cli. npm found it; pnpm looked in your project instead and stopped with `ERR_PNPM_LINKED_PKG_DIR_NOT_FOUND`. faf-cli now gets `faf-scoring-kernel` from npm, the same files byte for byte.
141
+ - **Run without installing:** `bunx faf`, `npx faf` and now `pnpm dlx faf`.
142
+ - **Checked on every change:** CI installs the packed package with npm, pnpm and bun, then runs `faf --version` and `faf score`.
140
143
 
141
- - **`faf cards --target ard`** writes `.well-known/ard.json`: the catalog rows carrying the search hints ARD reads from the `.fafa` — `metadata.cards.keywords` as `tags`, `metadata.cards.examples` as `representativeQueries`. A manifest with no `representativeQueries` is valid and unfindable, so `faf cards` says so and names the key to fill in.
142
- - **The catalog names its host**, so it reads as AI Catalog Level 2 "discoverable" rather than Level 1 "minimal". On a catalog you share, `host` is the one key faf adds, and only when the catalog names none.
143
- - **One primary key.** Catalog rows are keyed off the domain the `.fafa` declares and the handle — never the homepage host and the raw display name, which could put a space inside a URN and fail ARD conformance. A `.fafa` that names no domain is refused rather than published as `urn:air:local:…`.
144
+ ### The Always33 Edition (8.0)
145
+
146
+ **One engine, one number: faf-cli v8 scores with the always-33 kernel — the same score faf-kernel, faf-rust-sdk and rust-faf-mcp give.**
147
+
148
+ - **The always-33 engine.** Every `.faf` is scored against all 33 Mk4 slots by one Rust kernel (`faf-scoring-kernel` 3.0.0, WASM). Verified identical to the reference always-33 scorer on the `project.faf` of all 80 FAF repos.
149
+ - **Your 21 slots, and the 12 enterprise slots in view.** faf-cli fills the 21 base slots. The 12 enterprise slots — infra, app, ops — are marked `slotignored` unless your app-type uses them, and `faf score` shows all 33.
150
+ - **Upgrading from 7.x:** a `.faf` without the 12 enterprise markers now scores against 33, so its number can drop (21 filled = 64%). **Run `faf auto`** — it writes the markers and your score returns.
151
+
152
+ ```text
153
+ ✪ TROPHY 100% 21/21 slots — project.faf
154
+ ● project.name
155
+ …
156
+ ● stack.cicd
157
+ — stack.monorepo_tool: slotignored
158
+ …
159
+ — monorepo.remote_cache: slotignored
160
+ ```
144
161
 
145
162
  **Recent sprint**
146
163
 
164
+ - ✪ [8.0.1](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.0.1) pnpm installs work — faf-scoring-kernel from npm
165
+ - ✪ [8.0.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.0.0) The Always33 Edition — one engine, one number
147
166
  - 🧱 [7.16.2](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.16.2) `faf compile` emits FAFb wire v2 — same bytes as the faf-fafb golden
148
167
  - 🧭 [7.16.1](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.16.1) `faf` back in step with `faf-cli`
149
168
  - 🧭 [7.16.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v7.16.0) The Discoverable Edition
@@ -185,6 +204,8 @@ Your own rules for the AI — *"use full words in identifiers," "use bun, not np
185
204
  | ○ **Red** | <55% | AI working blind |
186
205
  | ♡ **White** | 0% | No context at all |
187
206
 
207
+ **Always-33.** The score is filled ÷ active across all 33 Mk4 slots. Your app-type decides which slots are active; the rest are `slotignored` and stay visible. Same file, same engine, same number — see [docs/SCORING.md](./docs/SCORING.md).
208
+
188
209
  **One score, three glyphs:** ✪ work (CLI · docs · receipts) · 🏆 social (X · blogs) · Trophy Mark PNG (brand). Source of truth: `src/core/tiers.ts`.
189
210
 
190
211
  ---
@@ -214,6 +235,7 @@ For a specific agent: [Grok, xAI & Cursor 👀](docs/faf-cli-for-agents.md) · [
214
235
 
215
236
  Pivotal releases — full history in [CHANGELOG.md](./CHANGELOG.md):
216
237
 
238
+ - **v8.0 — Always33** — one engine, one number: the same score everywhere.
217
239
  - **v7.1 — AGENTS.md** — `faf export --agents` authors a complete, non-destructive `AGENTS.md`.
218
240
  - **v7.0 — GIT** — context goes git-native: `faf diff` / `log` / `hooks`.
219
241
  - **v6.16 — Know Your Stack** — every emitted file labels your stack identically.