faf-taf-git 2.4.0 → 2.4.2
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/CHANGELOG.md +23 -1
- package/README.md +1 -1
- package/RECEIPT-FORMAT.md +1 -1
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +14 -1
- package/dist/cli.js.map +1 -1
- package/package.json +15 -2
- package/project.faf +32 -242
- package/.faf-dna +0 -95
- package/.fafignore +0 -41
- package/.github/dependabot.yml +0 -10
- package/.github/workflows/ci.yml +0 -53
- package/.github/workflows/claude-code-review.yml +0 -36
- package/.github/workflows/claude.yml +0 -39
- package/.github/workflows/homebrew.yml +0 -19
- package/.taf +0 -98
- package/CLAUDE.md +0 -38
- package/CODE_OF_CONDUCT.md +0 -21
- package/CONTRIBUTING.md +0 -289
- package/SECURITY.md +0 -19
- package/action.yml +0 -50
- package/agent.fafa +0 -53
- package/badge.svg +0 -21
- package/dist/bundle/index.js +0 -36554
- package/dist/index.js +0 -42827
- package/dist/index.js.map +0 -1
- package/dist/licenses.txt +0 -126
- package/dist/sourcemap-register.js +0 -1
- package/docs/RELEASE-NOTES.md +0 -200
- package/docs/USER-GUIDE.md +0 -301
- package/jest.config.js +0 -13
- package/src/badge.ts +0 -138
- package/src/cli.ts +0 -297
- package/src/index.ts +0 -201
- package/src/parsers/bun.ts +0 -103
- package/src/parsers/index.ts +0 -50
- package/src/parsers/jest.ts +0 -104
- package/src/parsers/junit.ts +0 -110
- package/src/parsers/vitest.ts +0 -65
- package/src/parsers/wjttc.ts +0 -160
- package/src/taf-core.ts +0 -139
- package/test-mcp.ts +0 -83
- package/test-standalone.ts +0 -87
- package/tests/action-bundle.test.ts +0 -34
- package/tests/action-parse-error.test.ts +0 -47
- package/tests/badge.test.ts +0 -260
- package/tests/bun-parser.test.ts +0 -173
- package/tests/jest-parser.test.ts +0 -122
- package/tests/junit-parser.test.ts +0 -109
- package/tests/vitest-parser.test.ts +0 -112
- package/tests/wjttc-parser.test.ts +0 -116
- package/tests/wjttc-taf.test.ts +0 -470
- package/tsconfig.json +0 -18
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.4.
|
|
2
|
+
<!-- faf: doc=changelog | latest=v2.4.2 | canonical=project.faf | family=TAF -->
|
|
3
3
|
|
|
4
4
|
# Changelog
|
|
5
5
|
|
|
@@ -8,6 +8,28 @@ 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.2] - 2026-10-30
|
|
12
|
+
|
|
13
|
+
undici 6.29.1 in the Action bundle (security), and the npm package ships only the CLI: 34 kB instead of 1.0 MB.
|
|
14
|
+
|
|
15
|
+
### Security
|
|
16
|
+
- **undici 6.28.1 → 6.29.1** in the lockfile and the rebuilt Action bundle (`dist/index.js`). Clears 5 Dependabot alerts (TLS certificate check bypass, denial of service). undici comes in through `@actions/core`; faf-taf-git makes no HTTP requests itself, so the risk was low, but the bundle no longer carries a known-vulnerable copy.
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **The npm package ships only the CLI:** a `files` list in package.json. 1.0 MB → 34 kB packed, 94 → 48 files. Out: `src/`, `tests/`, `.github/`, dev configs, and the GitHub Action bundle (`dist/index.js`), which workflows run from the git tag, never from npm. The Action itself is unchanged.
|
|
20
|
+
|
|
21
|
+
## [2.4.1] - 2026-10-30
|
|
22
|
+
|
|
23
|
+
`faf-taf-git --version` answers, and the descriptions say tamper-evident, not "cannot be gamed".
|
|
24
|
+
|
|
25
|
+
### Fixed
|
|
26
|
+
- **`--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`.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- **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.
|
|
30
|
+
- **project.faf:** rebuilt lean from the repo (267 → 57 lines), Trophy. `.faf-dna` unchanged.
|
|
31
|
+
- **README recipe** pins `@v2.4.1`. The Action itself is unchanged from 2.4.0.
|
|
32
|
+
|
|
11
33
|
## [2.4.0] - 2026-10-29
|
|
12
34
|
|
|
13
35
|
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.
|
package/README.md
CHANGED
|
@@ -76,7 +76,7 @@ jobs:
|
|
|
76
76
|
|
|
77
77
|
- name: Print the receipt
|
|
78
78
|
if: github.ref == 'refs/heads/main' && github.event_name != 'pull_request'
|
|
79
|
-
uses: Wolfe-Jam/faf-taf-git@v2.4.
|
|
79
|
+
uses: Wolfe-Jam/faf-taf-git@v2.4.2
|
|
80
80
|
with:
|
|
81
81
|
test-output-file: test-output.txt
|
|
82
82
|
target-branch: taf-receipts
|
package/RECEIPT-FORMAT.md
CHANGED
|
@@ -15,7 +15,7 @@ A **Receipt Printer for git.** Every CI run prints one receipt — timestamp, co
|
|
|
15
15
|
- **Git-native + portable.** The receipt lives *in the repo*, versioned — it survives a CI-vendor migration, which vendor-locked run history does not.
|
|
16
16
|
- **The unique value:** a one-time green is a snapshot (gameable); *"1,847 receipts over 14 months, none missing"* is proof. The format exists to make that timeline portable and falsifiable — nothing more. Thinness is the point.
|
|
17
17
|
|
|
18
|
-
##
|
|
18
|
+
## Tamper-*evident*, not tamper-proof
|
|
19
19
|
|
|
20
20
|
Three mechanisms make tampering **visible**:
|
|
21
21
|
- **Edits** → the commit SHA changes; a rewritten receipt no longer matches its commit.
|
package/dist/cli.d.ts
CHANGED
|
@@ -28,3 +28,8 @@ export interface CLIResult {
|
|
|
28
28
|
* Main CLI function - reads test output from file
|
|
29
29
|
*/
|
|
30
30
|
export declare function runTafGit(options?: CLIOptions): Promise<CLIResult>;
|
|
31
|
+
/**
|
|
32
|
+
* The installed package's version. package.json sits one level above both
|
|
33
|
+
* src/ (tests) and dist/ (the published bin).
|
|
34
|
+
*/
|
|
35
|
+
export declare function cliVersion(): string;
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/wolfejam/FAF/faf-taf-git/src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AASH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CA8G5E"}
|
|
1
|
+
{"version":3,"file":"","sourceRoot":"","sources":["file:///Users/wolfejam/FAF/faf-taf-git/src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AASH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CA8G5E;AA2ED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
|
package/dist/cli.js
CHANGED
|
@@ -41,6 +41,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
41
41
|
})();
|
|
42
42
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
43
43
|
exports.runTafGit = runTafGit;
|
|
44
|
+
exports.cliVersion = cliVersion;
|
|
44
45
|
const child_process_1 = require("child_process");
|
|
45
46
|
const fs = __importStar(require("fs"));
|
|
46
47
|
const path = __importStar(require("path"));
|
|
@@ -214,11 +215,23 @@ function handleBadgeCommand(args) {
|
|
|
214
215
|
process.stdout.write(result.svg);
|
|
215
216
|
}
|
|
216
217
|
}
|
|
218
|
+
/**
|
|
219
|
+
* The installed package's version. package.json sits one level above both
|
|
220
|
+
* src/ (tests) and dist/ (the published bin).
|
|
221
|
+
*/
|
|
222
|
+
function cliVersion() {
|
|
223
|
+
return JSON.parse(fs.readFileSync(path.join(__dirname, '..', 'package.json'), 'utf-8')).version;
|
|
224
|
+
}
|
|
217
225
|
/**
|
|
218
226
|
* CLI entry point
|
|
219
227
|
*/
|
|
220
228
|
async function main() {
|
|
221
229
|
const args = process.argv.slice(2);
|
|
230
|
+
// --version / -V (-v is --verbose)
|
|
231
|
+
if (args.includes('--version') || args.includes('-V')) {
|
|
232
|
+
console.log(cliVersion());
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
222
235
|
// Subcommand: badge
|
|
223
236
|
if (args[0] === 'badge') {
|
|
224
237
|
handleBadgeCommand(args.slice(1));
|
|
@@ -226,7 +239,7 @@ async function main() {
|
|
|
226
239
|
}
|
|
227
240
|
// Show help
|
|
228
241
|
if (args.includes('--help') || args.includes('-h')) {
|
|
229
|
-
console.log(`\nfaf-taf-git - The Git-Native Receipt Printer\n\nUSAGE:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt [OPTIONS]\n\n # WJTTC / pc-ai bar\n node tests/wjttc/run-wjttc.mjs 2>&1 | tee wjttc-out.txt\n npx faf-taf-git --file wjttc-out.txt\n\nCOMMANDS:\n badge Generate a shields.io-style SVG badge from .taf\n\nOPTIONS:\n --file <path> Path to test output file (required)\n --commit Auto-commit .taf changes to git\n --message <msg> Custom commit message\n --cwd <dir> Working directory (default: current)\n --verbose, -v Verbose output\n --help, -h Show this help\n\nPARSERS:\n JUnit XML (pytest, cargo, Go, Java, .NET ...), Bun, WJTTC (pc-ai bar), Jest, Vitest\n\nEXAMPLES:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt\n\n npx faf-taf-git --file test-output.txt --commit\n\n npx faf-taf-git badge --output badge.svg\n\nPLATFORM SUPPORT:\n Works in ANY CI/CD that runs Node.js:\n GitHub Actions, GitLab CI, Jenkins, CircleCI,\n Bitbucket Pipelines, Azure Pipelines, local dev\n\nLEARN MORE:\n https://github.com/Wolfe-Jam/faf-taf-git\n`);
|
|
242
|
+
console.log(`\nfaf-taf-git - The Git-Native Receipt Printer\n\nUSAGE:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt [OPTIONS]\n\n # WJTTC / pc-ai bar\n node tests/wjttc/run-wjttc.mjs 2>&1 | tee wjttc-out.txt\n npx faf-taf-git --file wjttc-out.txt\n\nCOMMANDS:\n badge Generate a shields.io-style SVG badge from .taf\n\nOPTIONS:\n --file <path> Path to test output file (required)\n --commit Auto-commit .taf changes to git\n --message <msg> Custom commit message\n --cwd <dir> Working directory (default: current)\n --verbose, -v Verbose output\n --version, -V Print the version\n --help, -h Show this help\n\nPARSERS:\n JUnit XML (pytest, cargo, Go, Java, .NET ...), Bun, WJTTC (pc-ai bar), Jest, Vitest\n\nEXAMPLES:\n npm test 2>&1 | tee test-output.txt\n npx faf-taf-git --file test-output.txt\n\n npx faf-taf-git --file test-output.txt --commit\n\n npx faf-taf-git badge --output badge.svg\n\nPLATFORM SUPPORT:\n Works in ANY CI/CD that runs Node.js:\n GitHub Actions, GitLab CI, Jenkins, CircleCI,\n Bitbucket Pipelines, Azure Pipelines, local dev\n\nLEARN MORE:\n https://github.com/Wolfe-Jam/faf-taf-git\n`);
|
|
230
243
|
process.exit(0);
|
|
231
244
|
}
|
|
232
245
|
const options = {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCH,8BA8GC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "faf-taf-git",
|
|
3
|
-
"version": "2.4.
|
|
4
|
-
"description": "A Test Receipt Printer for git. Every CI run prints a receipt to .taf — append-only, timestamped,
|
|
3
|
+
"version": "2.4.2",
|
|
4
|
+
"description": "A Test Receipt Printer for git. Every CI run prints a receipt to .taf — append-only, timestamped, kept in git. Proof over time.",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"faf-taf-git": "dist/cli.js"
|
|
8
8
|
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/**/*",
|
|
11
|
+
"!dist/index.js",
|
|
12
|
+
"!dist/index.js.map",
|
|
13
|
+
"!dist/bundle",
|
|
14
|
+
"!dist/sourcemap-register.js",
|
|
15
|
+
"!dist/licenses.txt",
|
|
16
|
+
"README.md",
|
|
17
|
+
"RECEIPT-FORMAT.md",
|
|
18
|
+
"CHANGELOG.md",
|
|
19
|
+
"LICENSE",
|
|
20
|
+
"project.faf"
|
|
21
|
+
],
|
|
9
22
|
"scripts": {
|
|
10
23
|
"build": "tsc && ncc build src/index.ts -o dist --source-map --license licenses.txt",
|
|
11
24
|
"test": "jest"
|
package/project.faf
CHANGED
|
@@ -1,267 +1,57 @@
|
|
|
1
|
-
faf_version:
|
|
2
|
-
ai_scoring_system: 2025-09-20
|
|
3
|
-
ai_score: 65%
|
|
4
|
-
ai_confidence: MODERATE
|
|
5
|
-
ai_value: 30_seconds_replaces_20_minutes_of_questions
|
|
6
|
-
ai_tldr:
|
|
7
|
-
project: faf-taf-git v2.1.1 - A Test Receipt Printer for git. Proof over time, cannot be gamed.
|
|
8
|
-
stack: TypeScript CLI + GitHub Action (pre-capture architecture)
|
|
9
|
-
quality_bar: ZERO_ERRORS_F1_STANDARDS
|
|
10
|
-
status: PRODUCTION_READY (working in faf-cli repo)
|
|
11
|
-
breakthrough: v2.0.0 pre-capture pattern (tested 19 methods before this)
|
|
12
|
-
current_focus: Ecosystem adoption and user onboarding
|
|
13
|
-
your_role: Support users, fix bugs, add test framework support
|
|
14
|
-
instant_context:
|
|
15
|
-
what_building: A Test Receipt Printer for git. CLI runs on any CI/CD; prints append-only test receipts to .taf, kept in git. FAF-aware optionally — receipts can carry FAF score/identity, but TAF works on any repo.
|
|
16
|
-
tech_stack: TypeScript
|
|
17
|
-
main_language: TypeScript
|
|
18
|
-
deployment: npm + GitHub Actions Marketplace
|
|
19
|
-
architecture: v2.0.0 pre-capture pattern (separate test execution from receipt generation)
|
|
20
|
-
use_cases: Standalone CLI, GitHub Action, GitLab CI, Jenkins, CircleCI, Local development
|
|
21
|
-
test_support: Jest (fully supported) with plans for Mocha, Vitest, Pytest, Go test, Rust cargo
|
|
22
|
-
golden_triangle: .faf (project DNA) + repo (code) + .taf (test proof)
|
|
23
|
-
key_files:
|
|
24
|
-
- src/index.ts (v2.0.0 rewrite - reads test output file)
|
|
25
|
-
- src/parsers/jest.ts (v2.0.4 fix - correct pattern matching)
|
|
26
|
-
- src/taf-core.ts (MCP-portable core)
|
|
27
|
-
- action.yml (v2.0.2 fix - correct bundle path)
|
|
28
|
-
- README.md (6Ws format)
|
|
29
|
-
- CHANGELOG.md (22 versions documented)
|
|
30
|
-
documentation:
|
|
31
|
-
- README: 6Ws format (What/Who/Why/Where/When/How)
|
|
32
|
-
- CHANGELOG: Complete debugging journey (v1.0.4 → v2.0.4)
|
|
33
|
-
- Migration guide: v1.x → v2.x breaking changes
|
|
34
|
-
context_quality:
|
|
35
|
-
slots_filled: 11/21 (52%)
|
|
36
|
-
ai_confidence: MODERATE
|
|
37
|
-
handoff_ready: true
|
|
38
|
-
missing_context: []
|
|
1
|
+
faf_version: "3.0"
|
|
39
2
|
project:
|
|
40
3
|
name: faf-taf-git
|
|
41
|
-
goal:
|
|
42
|
-
innovation: On-the-fly Testing Audit Files - Unheard of in CI/CD
|
|
43
|
-
taf_meaning:
|
|
44
|
-
file: Testing Audit File (.taf)
|
|
45
|
-
feed: Testing Activity Feed (live updates)
|
|
4
|
+
goal: "A Test Receipt Printer for git. Every CI run prints a receipt to .taf: append-only, timestamped, kept in git. Proof over time."
|
|
46
5
|
main_language: TypeScript
|
|
47
|
-
type: cli
|
|
48
|
-
generated: 2025-10-28T01:26:05.656Z
|
|
49
|
-
repository: https://github.com/Wolfe-Jam/faf-taf-git
|
|
50
|
-
license: MIT
|
|
51
|
-
author: wolfejam
|
|
52
|
-
keywords: testing, taf, ci-cd, github-actions, gitlab-ci, platform-agnostic, jest, faf, git
|
|
53
|
-
mission: 🚀 Make Your AI Happy! 🧡 Trust-Driven 🤖
|
|
54
|
-
revolution: 30 seconds replaces 20 minutes of questions
|
|
55
|
-
brand: F1-Inspired Software Engineering - Championship AI Context
|
|
56
|
-
ai_instructions:
|
|
57
|
-
priority_order:
|
|
58
|
-
- 1. Read THIS .faf file first
|
|
59
|
-
- 2. Check CLAUDE.md for session context
|
|
60
|
-
- 3. Review package.json for dependencies
|
|
61
|
-
working_style:
|
|
62
|
-
code_first: true
|
|
63
|
-
explanations: minimal
|
|
64
|
-
quality_bar: zero_errors
|
|
65
|
-
testing: required
|
|
66
|
-
warnings:
|
|
67
|
-
- Never modify dial components without approval
|
|
68
|
-
- All TypeScript must pass strict mode
|
|
69
|
-
- Test coverage required for new features
|
|
6
|
+
type: cli # found: package.json bin
|
|
70
7
|
stack:
|
|
71
8
|
frontend: slotignored
|
|
72
9
|
css_framework: slotignored
|
|
73
10
|
ui_library: slotignored
|
|
74
11
|
state_management: slotignored
|
|
75
12
|
backend: slotignored
|
|
76
|
-
|
|
13
|
+
api_type: slotignored
|
|
14
|
+
runtime: slotignored
|
|
77
15
|
database: slotignored
|
|
78
16
|
connection: slotignored
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
api_type: REST
|
|
82
|
-
hosting: npm Registry
|
|
17
|
+
hosting: npm registry + GitHub Actions Marketplace
|
|
18
|
+
build: TypeScript (tsc)
|
|
83
19
|
cicd: GitHub Actions
|
|
84
20
|
monorepo_tool: slotignored
|
|
21
|
+
package_manager: slotignored
|
|
85
22
|
workspaces: slotignored
|
|
86
23
|
admin: slotignored
|
|
87
24
|
cache: slotignored
|
|
88
25
|
search: slotignored
|
|
89
26
|
storage: slotignored
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
27
|
+
human_context:
|
|
28
|
+
who: Maintainers and teams who want proof their tests kept passing on main, and the reviewers, auditors and AI agents who check it
|
|
29
|
+
what: "A Test Receipt Printer for git. Every CI run prints a receipt to .taf: append-only, timestamped, kept in git. Proof over time."
|
|
30
|
+
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.
|
|
31
|
+
where: https://github.com/Wolfe-Jam/faf-taf-git
|
|
32
|
+
when: v2.4.2 (2026-10-30), undici security fix + CLI-only npm package; v2.4.1 --version fix; v2.4.0 (2026-10-29) JUnit XML parser; live since v1.0.0 (2025-10-27)
|
|
33
|
+
how: "Run tests, save the output (or a JUnit XML report), then `uses: Wolfe-Jam/faf-taf-git@v2.4.2` 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."
|
|
95
34
|
monorepo:
|
|
96
35
|
packages_count: slotignored
|
|
97
36
|
build_orchestrator: slotignored
|
|
98
37
|
versioning_strategy: slotignored
|
|
99
38
|
shared_configs: slotignored
|
|
100
39
|
remote_cache: slotignored
|
|
101
|
-
|
|
102
|
-
commands:
|
|
103
|
-
- npx faf-taf-git
|
|
104
|
-
- --file (test output file - v2.0.0+)
|
|
105
|
-
- --command (custom test command - legacy v1.x)
|
|
106
|
-
- --commit (auto-commit .taf changes)
|
|
107
|
-
- --verbose (detailed output)
|
|
108
|
-
- --message (custom commit message)
|
|
109
|
-
- --cwd (working directory)
|
|
110
|
-
github_action_inputs:
|
|
111
|
-
test-output-file: required (v2.0.0+)
|
|
112
|
-
auto-commit: true (default)
|
|
113
|
-
commit-message: "chore(taf): update .taf receipt [skip ci] (default)"
|
|
114
|
-
architecture:
|
|
115
|
-
version: v2.0.0
|
|
116
|
-
pattern: pre-capture
|
|
117
|
-
breakthrough: Separate test execution from receipt generation
|
|
118
|
-
why: Avoids GitHub Actions execution context corruption
|
|
119
|
-
reliability: Tested 19 methods before this solution
|
|
120
|
-
benefits:
|
|
121
|
-
- More reliable (no execution context issues)
|
|
122
|
-
- Platform-agnostic (works everywhere)
|
|
123
|
-
- Simpler (400+ lines removed, 11KB smaller)
|
|
124
|
-
test_frameworks:
|
|
125
|
-
- Jest (fully supported)
|
|
126
|
-
supported_platforms:
|
|
127
|
-
- GitHub Actions
|
|
128
|
-
- GitLab CI
|
|
129
|
-
- Bitbucket Pipelines
|
|
130
|
-
- Jenkins
|
|
131
|
-
- CircleCI
|
|
132
|
-
- Travis CI
|
|
133
|
-
- Azure Pipelines
|
|
134
|
-
- Local development
|
|
135
|
-
taf_format:
|
|
136
|
-
format: YAML
|
|
137
|
-
file_location: .taf (hidden dotfile)
|
|
138
|
-
purpose: Git-tracked testing timeline - permanent proof your code works
|
|
139
|
-
links_to_faf: true
|
|
140
|
-
snapshots_faf_score: true
|
|
141
|
-
closed_loop_system: .faf (DNA) + repo (code) + .taf (proof) = Golden Triangle
|
|
142
|
-
deployment:
|
|
143
|
-
npm_package: faf-taf-git@2.1.1
|
|
144
|
-
github_action: Wolfe-Jam/faf-taf-git@v2.1.1
|
|
145
|
-
marketplaces:
|
|
146
|
-
- npm Registry
|
|
147
|
-
- GitHub Actions Marketplace
|
|
148
|
-
install: npx faf-taf-git
|
|
149
|
-
production_users:
|
|
150
|
-
- faf-cli (working in CI)
|
|
151
|
-
testing:
|
|
152
|
-
framework: Jest
|
|
153
|
-
coverage: Core functionality
|
|
154
|
-
ci_integration: GitHub Actions
|
|
155
|
-
test_files:
|
|
156
|
-
- tests/ (unit tests)
|
|
157
|
-
quality_gates:
|
|
158
|
-
- All tests must pass
|
|
159
|
-
- TypeScript strict mode
|
|
160
|
-
- Zero build errors
|
|
161
|
-
examples:
|
|
162
|
-
github_actions: README.md Quick Start section
|
|
163
|
-
standalone_cli: README.md Standalone CLI section
|
|
164
|
-
gitlab_ci: README.md GitLab CI section
|
|
165
|
-
jenkins: README.md Jenkins section
|
|
166
|
-
migration: README.md Migration from v1.x section
|
|
167
|
-
performance:
|
|
168
|
-
bundle_size: 1.2MB (v2.0.0 - reduced 11KB from v1.x)
|
|
169
|
-
startup_time: <100ms
|
|
170
|
-
parse_time: <10ms for typical Jest output
|
|
171
|
-
reliability: 100% success rate in faf-cli CI (after v2.0.4)
|
|
172
|
-
preferences:
|
|
173
|
-
quality_bar: zero_errors
|
|
174
|
-
commit_style: conventional_emoji
|
|
175
|
-
response_style: concise_code_first
|
|
176
|
-
explanation_level: minimal
|
|
177
|
-
communication: direct
|
|
178
|
-
testing: required
|
|
179
|
-
documentation: as_needed
|
|
180
|
-
contributing:
|
|
181
|
-
guidelines: CONTRIBUTING.md
|
|
182
|
-
code_style: TypeScript strict mode
|
|
183
|
-
pr_process: Fork, branch, PR with tests
|
|
184
|
-
commit_format: Conventional commits with Co-Authored-By
|
|
185
|
-
testing_required: true
|
|
186
|
-
documentation_required: For new features
|
|
187
|
-
resources:
|
|
188
|
-
readme: README.md (6Ws format)
|
|
189
|
-
changelog: CHANGELOG.md (22 versions documented)
|
|
190
|
-
license: MIT
|
|
191
|
-
repository: https://github.com/Wolfe-Jam/faf-taf-git
|
|
192
|
-
npm: https://npmjs.com/package/faf-taf-git
|
|
193
|
-
issues: https://github.com/Wolfe-Jam/faf-taf-git/issues
|
|
194
|
-
discussions: https://github.com/Wolfe-Jam/faf/discussions
|
|
195
|
-
state:
|
|
196
|
-
phase: production
|
|
197
|
-
version: 2.4.0
|
|
198
|
-
focus: ecosystem_adoption
|
|
199
|
-
status: production_ready
|
|
200
|
-
achievements:
|
|
201
|
-
- v2.0.0 architectural redesign (pre-capture pattern)
|
|
202
|
-
- v2.0.4 parser fix (working in CI)
|
|
203
|
-
- Updated README (6Ws format)
|
|
204
|
-
- Updated CHANGELOG (22 versions documented)
|
|
205
|
-
- TAF Receipt generating successfully in faf-cli repo
|
|
206
|
-
next_milestone: user_adoption
|
|
207
|
-
blockers: null
|
|
208
|
-
tags:
|
|
209
|
-
auto_generated:
|
|
210
|
-
- faf-taf-action
|
|
211
|
-
- none
|
|
212
|
-
- typescript
|
|
213
|
-
smart_defaults:
|
|
214
|
-
- .faf
|
|
215
|
-
- ai-ready
|
|
216
|
-
- "2025"
|
|
217
|
-
- software
|
|
218
|
-
- open-source
|
|
219
|
-
user_defined: null
|
|
220
|
-
human_context:
|
|
221
|
-
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).
|
|
222
|
-
what: TAF file updates in CI/CD pipelines
|
|
223
|
-
why: Improve development efficiency
|
|
224
|
-
where: Any CI/CD platform (GitHub, GitLab, Bitbucket)
|
|
225
|
-
when: During CI/CD test runs
|
|
226
|
-
how: Test-driven development
|
|
227
|
-
additional_context: Part of Golden Triangle (.faf + repo + .taf). Tracks test runs permanently in git. Supports Jest, works as CLI or GitHub Action. Platform-agnostic core - runs on ANY CI/CD with Node.js.
|
|
228
|
-
context_score: 0
|
|
229
|
-
total_prd_score: 65
|
|
230
|
-
success_rate: 50%
|
|
231
|
-
scores:
|
|
232
|
-
faf_score: 50
|
|
233
|
-
slot_based_percentage: 52
|
|
234
|
-
ai_score: 65
|
|
235
|
-
total_slots: 21
|
|
236
|
-
filled_slots: 11
|
|
237
|
-
scoring_method: Honest percentage - no fake minimums
|
|
238
|
-
trust_embedded: COUNT ONCE architecture - trust MY embedded scores
|
|
239
|
-
ai_scoring_details:
|
|
240
|
-
system_date: 2025-09-20
|
|
241
|
-
slot_based_percentage: 52
|
|
242
|
-
ai_score: 65
|
|
243
|
-
total_slots: 21
|
|
244
|
-
filled_slots: 11
|
|
245
|
-
scoring_method: Honest percentage - no fake minimums
|
|
246
|
-
trust_embedded: COUNT ONCE architecture - trust MY embedded scores
|
|
247
|
-
faf_dna:
|
|
248
|
-
birth_dna: 22
|
|
249
|
-
birth_certificate: FAF-2025-FAFTAFAC-TMZU
|
|
250
|
-
birth_date: 2025-10-28T01:26:05.692Z
|
|
251
|
-
current_score: 50
|
|
252
|
-
projectName: faf-taf-git
|
|
253
|
-
projectGoal: A Test Receipt Printer for git — append-only test receipts on every CI run. Proof over time, cannot be gamed.
|
|
254
|
-
generated: 2026-02-17T20:14:09.215Z
|
|
255
|
-
last_major_update: v2.0.4 (2026-02-17)
|
|
256
|
-
production_status: Working in faf-cli repository
|
|
257
|
-
stack_signature: typescript-nodejs-javascript
|
|
258
|
-
detected_frameworks:
|
|
259
|
-
- Claude Code
|
|
260
|
-
- Jest
|
|
261
|
-
- Node.js
|
|
262
|
-
- JavaScript
|
|
40
|
+
tech_stack:
|
|
263
41
|
- TypeScript
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
42
|
+
- "@actions/core"
|
|
43
|
+
- "@actions/exec"
|
|
44
|
+
- "@actions/github"
|
|
45
|
+
- yaml
|
|
46
|
+
key_files:
|
|
47
|
+
- package.json
|
|
48
|
+
- src/index.ts
|
|
49
|
+
- src/cli.ts
|
|
50
|
+
- src/parsers/
|
|
51
|
+
- action.yml
|
|
52
|
+
- RECEIPT-FORMAT.md
|
|
53
|
+
- README.md
|
|
54
|
+
- tsconfig.json
|
|
55
|
+
commands:
|
|
56
|
+
build: npm run build
|
|
57
|
+
test: npm run test
|
package/.faf-dna
DELETED
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"birthCertificate": {
|
|
3
|
-
"born": "2025-10-28T01:26:05.692Z",
|
|
4
|
-
"birthDNA": 22,
|
|
5
|
-
"birthDNASource": "CLAUDE.md",
|
|
6
|
-
"projectDNA": "1785d1ac1c20876b",
|
|
7
|
-
"authenticated": false,
|
|
8
|
-
"certificate": "FAF-2025-FAFTAFAC-TMZU"
|
|
9
|
-
},
|
|
10
|
-
"versions": [
|
|
11
|
-
{
|
|
12
|
-
"version": "v1.0.0",
|
|
13
|
-
"timestamp": "2025-10-28T01:26:05.693Z",
|
|
14
|
-
"score": 22,
|
|
15
|
-
"changes": [
|
|
16
|
-
"Initial context from CLAUDE.md"
|
|
17
|
-
],
|
|
18
|
-
"approved": false,
|
|
19
|
-
"growth": 0,
|
|
20
|
-
"growthRate": 0
|
|
21
|
-
},
|
|
22
|
-
{
|
|
23
|
-
"version": "v1.0.1",
|
|
24
|
-
"timestamp": "2025-10-28T01:26:05.721Z",
|
|
25
|
-
"score": 50,
|
|
26
|
-
"changes": [
|
|
27
|
-
"Initial .faf generation from project"
|
|
28
|
-
],
|
|
29
|
-
"approved": false,
|
|
30
|
-
"growth": 28,
|
|
31
|
-
"growthRate": 28
|
|
32
|
-
}
|
|
33
|
-
],
|
|
34
|
-
"current": {
|
|
35
|
-
"version": "v1.0.1",
|
|
36
|
-
"score": 50,
|
|
37
|
-
"approved": false,
|
|
38
|
-
"lastSync": "2025-10-28T01:26:05.721Z"
|
|
39
|
-
},
|
|
40
|
-
"recovery": {
|
|
41
|
-
"claudeMD": "/Users/wolfejam/FAF/faf-taf-action/CLAUDE.md",
|
|
42
|
-
"lastBackup": "2025-10-28T01:26:05.693Z",
|
|
43
|
-
"syncStatus": "active",
|
|
44
|
-
"autoRecover": true
|
|
45
|
-
},
|
|
46
|
-
"growth": {
|
|
47
|
-
"totalGrowth": 28,
|
|
48
|
-
"daysActive": 0,
|
|
49
|
-
"averageDailyGrowth": 28,
|
|
50
|
-
"bestDay": {
|
|
51
|
-
"date": "2025-10-28T01:26:05.721Z",
|
|
52
|
-
"growth": 28
|
|
53
|
-
},
|
|
54
|
-
"bestWeek": {
|
|
55
|
-
"start": "2025-10-28T01:26:05.693Z",
|
|
56
|
-
"growth": 0
|
|
57
|
-
},
|
|
58
|
-
"milestones": [
|
|
59
|
-
{
|
|
60
|
-
"type": "birth",
|
|
61
|
-
"score": 22,
|
|
62
|
-
"date": "2025-10-28T01:26:05.693Z",
|
|
63
|
-
"version": "v1.0.0",
|
|
64
|
-
"label": "Birth",
|
|
65
|
-
"emoji": "🐣"
|
|
66
|
-
},
|
|
67
|
-
{
|
|
68
|
-
"type": "doubled",
|
|
69
|
-
"score": 50,
|
|
70
|
-
"date": "2025-10-28T01:26:05.721Z",
|
|
71
|
-
"version": "v1.0.1",
|
|
72
|
-
"label": "Doubled",
|
|
73
|
-
"emoji": "2️⃣"
|
|
74
|
-
},
|
|
75
|
-
{
|
|
76
|
-
"type": "peak",
|
|
77
|
-
"score": 50,
|
|
78
|
-
"date": "2025-10-28T01:26:05.721Z",
|
|
79
|
-
"version": "v1.0.1",
|
|
80
|
-
"label": "Peak",
|
|
81
|
-
"emoji": "🏔️"
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
"type": "current",
|
|
85
|
-
"score": 50,
|
|
86
|
-
"date": "2025-10-28T01:26:05.721Z",
|
|
87
|
-
"version": "v1.0.1",
|
|
88
|
-
"label": "Current",
|
|
89
|
-
"emoji": "📍"
|
|
90
|
-
}
|
|
91
|
-
]
|
|
92
|
-
},
|
|
93
|
-
"lastModified": "2025-10-28T01:26:05.721Z",
|
|
94
|
-
"format": "faf-dna-v1"
|
|
95
|
-
}
|
package/.fafignore
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# .fafignore - Exclude files/directories from .faf context
|
|
2
|
-
# Similar to .gitignore syntax
|
|
3
|
-
# Lines starting with # are comments
|
|
4
|
-
|
|
5
|
-
# Dependencies and build outputs
|
|
6
|
-
node_modules/
|
|
7
|
-
dist/
|
|
8
|
-
build/
|
|
9
|
-
coverage/
|
|
10
|
-
|
|
11
|
-
# Python environments
|
|
12
|
-
__pycache__/
|
|
13
|
-
venv/
|
|
14
|
-
.venv/
|
|
15
|
-
|
|
16
|
-
# IDE and system files
|
|
17
|
-
.vscode/
|
|
18
|
-
.idea/
|
|
19
|
-
.DS_Store
|
|
20
|
-
|
|
21
|
-
# Sensitive files
|
|
22
|
-
.env
|
|
23
|
-
.env.*
|
|
24
|
-
*.key
|
|
25
|
-
*.pem
|
|
26
|
-
|
|
27
|
-
# Logs and temporary files
|
|
28
|
-
*.log
|
|
29
|
-
logs/
|
|
30
|
-
tmp/
|
|
31
|
-
temp/
|
|
32
|
-
|
|
33
|
-
# Large media files
|
|
34
|
-
*.jpg
|
|
35
|
-
*.png
|
|
36
|
-
*.mp4
|
|
37
|
-
*.pdf
|
|
38
|
-
|
|
39
|
-
# Custom exclusions (add your own below)
|
|
40
|
-
# example: my-large-data-folder/
|
|
41
|
-
# example: *.generated.ts
|
package/.github/dependabot.yml
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
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"
|