faf-cli 8.5.0 → 8.7.0

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
@@ -28,7 +28,7 @@ detected from your real stack, scored, and versioned with your code. No drift. N
28
28
 
29
29
  [![FAF downloads](https://img.shields.io/endpoint?url=https://faf.one/api/downloads.json)](https://faf.one/downloads) · across npm, PyPI and crates.io · **IANA-registered · Anthropic-merged (#2759)**
30
30
 
31
- ⭐ Bookmarks it for you, helps other devs find it too.
31
+ ⭐ [Star it on GitHub](https://github.com/Wolfe-Jam/faf-cli): bookmarks it for you, helps other devs find it too.
32
32
 
33
33
  <!-- ② papers · funnel · testing — one line -->
34
34
  [![DOI: Context paper](https://img.shields.io/badge/DOI-Context%20paper-FF6B35)](https://doi.org/10.5281/zenodo.18251362)
@@ -112,6 +112,8 @@ Run `faf` with no arguments:
112
112
  | `faf memory` | `.fafm` soul ops — convert Claude memory, etch, recall, ls, show |
113
113
  | `faf diff` / `log` | Semantic context diff + score timeline across git history |
114
114
  | `faf hooks --install` | Pre-commit guard against context regression |
115
+ | `faf taf setup` | Write the CI workflow that prints a Test Receipt for every run (JavaScript with Jest, Vitest or Bun; Python; Go) |
116
+ | `faf taf receipts` | Your Test Receipts in the terminal, newest first |
115
117
  | `faf compile` / `decompile` | `.faf` → `.fafb` **v2** sealed brick; `decompile` shows sections as JSON |
116
118
  | `faf check` | Validate a `.faf` file |
117
119
  | `faf show` | Render `project.faf` to a browsable HTML page |
@@ -133,7 +135,30 @@ faf memory etch "a durable fact" --id my-fact
133
135
  faf memory show
134
136
  ```
135
137
 
136
- ### What's New in v8.5.0 — The Agent Skills Edition
138
+ ### What's New in v8.7.0 — The Receipts Edition
139
+
140
+ **Your Test Receipts, in your terminal: `faf taf receipts` shows them, `taf setup` writes the recipe for JavaScript (Jest, Vitest, Bun), Python and Go, and every test run on your default branch gets one, red ones too.**
141
+
142
+ A Test Receipt is one line of proof that your tests ran: when, the result, passed/total. [faf-taf-git](https://github.com/Wolfe-Jam/faf-taf-git) appends one to `.taf` on a `taf-receipts` branch for every CI run, so the record stays in git after the CI logs expire.
143
+
144
+ - **`faf taf receipts`** shows them in your terminal, newest first, with a tally. `--limit`, `--json` and `--ref`. It reads git and never fetches or writes.
145
+ - **`faf taf setup`** writes the workflow: JavaScript with Jest, Vitest or Bun, Python with pytest, and Go with gotestsum. Any other repo gets a placeholder to fill in.
146
+ - **Red runs get a receipt too**, and the job still goes red. Only your default branch is recorded; pull requests run the tests and print none.
147
+ - **Plain text when piped.** Colour shows only in a terminal; `NO_COLOR` and `FORCE_COLOR` are respected.
148
+
149
+ ### The Birth Certificate Edition (8.6)
150
+
151
+ **One birth certificate per project, protected: `init --new` rebuilds project.faf without touching it, `go` and `edit` record every climb, and `faf dna --json` shows the lineage.**
152
+
153
+ `.faf-dna` is the project's birth certificate: its first score, recorded once, the way a baby's birth weight is. A project gets one. faf keeps it, and records what happens after.
154
+
155
+ - **`faf init --new`** replaces a stale project.faf with a fresh one from the repo. `.faf-dna` stays exactly as it is.
156
+ - **`faf go` and `faf edit` record every climb** on the DNA, alongside `faf auto` and `faf refresh`. `faf dna` shows the whole journey.
157
+ - **`faf dna --json`** gives the lineage as data: birth, certificate, current score, growth, peak, every version, and any earlier lives.
158
+ - **Gitignored? faf says so.** If `.faf-dna` is gitignored, a fresh clone loses it. `faf init` and `faf dna` name the rule. Put the reason in a `#` comment above it, and faf stays quiet.
159
+ - **Protected, never reissued.** A `.faf-dna` faf didn't write is read and left as it is. faf no longer suggests replacing it.
160
+
161
+ ### The Agent Skills Edition (8.5)
137
162
 
138
163
  **faf knows a skills repo when it sees one, and the skills types name their framework: `skills` is 10 slots, `skills-plugin` is 14.**
139
164
 
@@ -224,6 +249,8 @@ npx faf-cli@latest card init # seven questions → agent.fafa → A2A card,
224
249
 
225
250
  **Recent sprint**
226
251
 
252
+ - ✪ [8.7.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.7.0) The Receipts Edition — `faf taf receipts`; `taf setup` for JavaScript, Python and Go; red runs get a receipt
253
+ - ✪ [8.6.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.6.0) The Birth Certificate Edition — `init --new` keeps `.faf-dna`; `go`/`edit` record growth; `faf dna --json`
227
254
  - ✪ [8.5.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.5.0) The Agent Skills Edition — faf detects skills repos; `skills` (10) and `skills-plugin` (14) name their framework
228
255
  - ✪ [8.4.0](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.4.0) The Skills Edition — `skills` (9) and `skills-plugin` (12) app-types
229
256
  - ✪ [8.3.2](https://github.com/Wolfe-Jam/faf-cli/releases/tag/v8.3.2) `faf check` warns when a key_files path no longer exists