faf-taf-git 2.3.1 → 2.4.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.
@@ -0,0 +1,10 @@
1
+ version: 2
2
+ updates:
3
+ # Keeps workflow `uses:` pins current (e.g. Wolfe-Jam/faf-taf-git) so they
4
+ # don't drift behind new releases. Security alerts don't need this file.
5
+ - package-ecosystem: "github-actions"
6
+ directory: "/"
7
+ schedule:
8
+ interval: "monthly"
9
+ commit-message:
10
+ prefix: "ci"
@@ -45,7 +45,7 @@ jobs:
45
45
  # ── R: RECEIPT ────────────────────────────────
46
46
  - name: 'R: Generate TAF Receipt'
47
47
  if: (github.event_name == 'push' || github.event_name == 'workflow_dispatch') && github.ref == 'refs/heads/main'
48
- uses: Wolfe-Jam/faf-taf-git@v2.3.0
48
+ uses: Wolfe-Jam/faf-taf-git@v2.3.1
49
49
  with:
50
50
  test-output-file: test-output.txt
51
51
  auto-commit: 'true'
@@ -6,6 +6,13 @@ on:
6
6
 
7
7
  jobs:
8
8
  claude-review:
9
+ # A Dependabot PR cannot read this repo's Actions secrets — GitHub withholds
10
+ # them from bot-authored runs — so the action fails its own env validation
11
+ # and the PR carries a red that says nothing about the change it proposes.
12
+ # Receipt (faf-cli, 2026-09-23): the last 8 human PRs all passed this
13
+ # workflow and both Dependabot PRs failed on that error alone. A dependency
14
+ # bump is Dependabot's diff to justify, not Claude's.
15
+ if: github.actor != 'dependabot[bot]'
9
16
  runs-on: ubuntu-latest
10
17
  permissions:
11
18
  contents: read
@@ -23,7 +30,7 @@ jobs:
23
30
  id: claude-review
24
31
  uses: anthropics/claude-code-action@v1
25
32
  with:
26
- anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
33
+ claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
27
34
  plugin_marketplaces: 'https://github.com/anthropics/claude-code.git'
28
35
  plugins: 'code-review@claude-code-plugins'
29
36
  prompt: '/code-review:code-review ${{ github.repository }}/pull/${{ github.event.pull_request.number }}'
@@ -34,6 +34,6 @@ jobs:
34
34
  id: claude
35
35
  uses: anthropics/claude-code-action@v1
36
36
  with:
37
- anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
37
+ claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
38
38
  additional_permissions: |
39
39
  actions: read
package/CHANGELOG.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <!-- faf: faf-taf-git | TypeScript | cli | A Test Receipt Printer for git -->
2
- <!-- faf: doc=changelog | latest=v2.3.1 | canonical=project.faf | family=TAF -->
2
+ <!-- faf: doc=changelog | latest=v2.4.1 | canonical=project.faf | family=TAF -->
3
3
 
4
4
  # Changelog
5
5
 
@@ -8,6 +8,30 @@ All notable changes to this project will be documented in this file.
8
8
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
9
9
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
10
10
 
11
+ ## [2.4.1] - 2026-10-30
12
+
13
+ `faf-taf-git --version` answers, and the descriptions say tamper-evident, not "cannot be gamed".
14
+
15
+ ### Fixed
16
+ - **`--version` / `-V`** print the package version and exit 0. Before, `faf-taf-git --version` fell through to "No test output file specified" and exit 1, so a stranger's first check failed (found by a cold install of the published 2.4.0). `-v` is still `--verbose`. `tests/cli-version.test.ts`.
17
+
18
+ ### Changed
19
+ - **Descriptions:** `package.json` (npm) and `action.yml` (GitHub Marketplace) no longer say "cannot be gamed"; they now read "append-only, timestamped, kept in git. Proof over time." The RECEIPT-FORMAT heading is "Tamper-evident, not tamper-proof", matching the README.
20
+ - **project.faf:** rebuilt lean from the repo (267 → 57 lines), Trophy. `.faf-dna` unchanged.
21
+ - **README recipe** pins `@v2.4.1`. The Action itself is unchanged from 2.4.0.
22
+
23
+ ## [2.4.0] - 2026-10-29
24
+
25
+ JUnit XML parser: TAF now reads the report format most test runners can write, so Python, Rust, Go, Java and .NET projects get receipts with no conversion script.
26
+
27
+ ### Added
28
+ - **JUnit XML parser** (`parseJunitOutput`). Pass a JUnit XML report as `test-output-file`. Handles a `<testsuites>` root with or without totals, a single `<testsuite>`, nested suites (counted once), and suites with no counts (the `<testcase>` elements are counted). Failures and errors count as failed; skipped and disabled count as skipped. Tried first, because a report's captured stdout can hold another runner's summary line. Checked against a real pytest report: 202 passed, 4 skipped, the same as pytest printed.
29
+ - **`skipped` Action output.** The README listed it; the Action now sets it.
30
+
31
+ ### Changed
32
+ - **README rewritten in plain English**, with a recommended workflow: failed runs get a `FAILED` receipt (tests run with `continue-on-error`, then the job fails after the receipt), receipts on `main` only, one test run.
33
+ - CLI `--help` lists JUnit XML among the parsers.
34
+
11
35
  ## [2.3.1] - 2026-09-15
12
36
 
13
37
  Marketplace metadata — the GitHub Action's description is now under the Marketplace's 125-character limit (it was 153), so the listing can show its current name, **TAF — Testing AI Format**. No code change — same `dist/` as 2.3.0.
package/CLAUDE.md CHANGED
@@ -1,38 +1,30 @@
1
1
  <!-- faf:start -->
2
- <!-- faf: faf-taf-git | TypeScript | cli | Platform-agnostic CLI + GitHub Action for TAF updates -->
2
+ <!-- faf: faf-taf-git | TypeScript | cli | A Test Receipt Printer for git. Every CI run prints a receipt to .taf: append-only, timestamped, kept in git. Proof over time. -->
3
3
  <!-- faf: claim=project.faf | family=FAF -->
4
4
 
5
5
  # CLAUDE.md — faf-taf-git
6
6
 
7
7
  ## What This Is
8
8
 
9
- Platform-agnostic CLI + GitHub Action for TAF updates
9
+ A Test Receipt Printer for git. Every CI run prints a receipt to .taf: append-only, timestamped, kept in git. Proof over time.
10
10
 
11
11
  ## Stack
12
12
 
13
13
  - **Language:** TypeScript
14
- - **Runtime:** Node.js
15
- - **Build:** TypeScript Compiler
16
- - **Package Manager:** npm
17
- - **Api Type:** REST
18
- - **Hosting:** npm Registry
19
- - **Cicd:** GitHub Actions
20
- - **TargetUser:** developers
21
- - **CoreProblem:** understanding project
22
- - **MissionPurpose:** project documentation
23
- - **PackageManager:** npm/yarn/pnpm
24
- - **MainLanguage:** JavaScript/TypeScript
14
+ - **Hosting:** npm registry + GitHub Actions Marketplace
15
+ - **Build:** TypeScript (tsc)
16
+ - **CI/CD:** GitHub Actions
25
17
 
26
18
  ## Context
27
19
 
28
- - **Who:** Development teams adopting test-receipt provenance — open-source maintainers proving honest test history, regulated industries (SOC 2 / ISO / HIPAA) needing append-only audit trails, supply-chain verifiers proving tests ran before artifacts shipped, AI-agent reviewers verifying agent code passes tests consistently, and FAF-ecosystem projects completing the CAR Framework (Claim → Audit → Receipt).
29
- - **What:** TAF file updates in CI/CD pipelines
30
- - **Why:** Improve development efficiency
31
- - **Where:** Any CI/CD platform (GitHub, GitLab, Bitbucket)
32
- - **When:** During CI/CD test runs
33
- - **How:** Test-driven development
20
+ - **Who:** Maintainers and teams who want proof their tests kept passing on main, and the reviewers, auditors and AI agents who check it
21
+ - **What:** A Test Receipt Printer for git. Every CI run prints a receipt to .taf: append-only, timestamped, kept in git. Proof over time.
22
+ - **Why:** Test results vanish when CI logs expire. Receipts stay in git, so anyone can look back and check whether main was green before a release.
23
+ - **Where:** https://github.com/Wolfe-Jam/faf-taf-git
24
+ - **When:** v2.4.1 (2026-10-30), --version fix; v2.4.0 (2026-10-29) JUnit XML parser; live since v1.0.0 (2025-10-27)
25
+ - **How:** Run tests, save the output (or a JUnit XML report), then `uses: Wolfe-Jam/faf-taf-git@v2.4.1` with `target-branch: taf-receipts`. Anywhere else: `npx faf-taf-git --file test-output.txt --commit`. The taf-receipts branch only grows: never rewrite it.
34
26
 
35
27
  ---
36
28
 
37
- *STATUS: BI-SYNC ACTIVE — 2026-06-17T12:16:31.736Z*
29
+ *STATUS: SYNC ACTIVE — 2026-10-30T04:26:00.762Z*
38
30
  <!-- faf:end -->