trackfw 9.3.2 → 9.3.3

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.
Files changed (2) hide show
  1. package/README.md +15 -14
  2. package/package.json +7 -7
package/README.md CHANGED
@@ -151,24 +151,25 @@ Bash — a team with mixed OS can commit one config and have it work on all mach
151
151
  The hook line emitted depends on the shell the agent CLI uses on Windows — a fact of
152
152
  the vendor, not of the OS:
153
153
 
154
- | Agent CLI | Shell on Windows | Hook line emitted (D11, ML-6B) | Basis |
154
+ | Agent CLI | Shell on Windows | Hook line emitted (D11, ML-6C) | Basis |
155
155
  |---|---|---|---|
156
- | Claude Code | Git Bash (if installed), else PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); exit $LASTEXITCODE` | vendor docs (2026-10-04) |
157
- | Codex CLI | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); exit $LASTEXITCODE` | vendor source (2026-10-04) |
158
- | Gemini CLI | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); exit $LASTEXITCODE` | vendor source (2026-10-04) |
159
- | Cursor | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); exit $LASTEXITCODE` | vendor bundle (2026-09-06) |
160
- | Windsurf | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); exit $LASTEXITCODE` | vendor docs (2026-10-04) |
161
- | GitHub Copilot | PowerShell / cross-platform `command` field | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); exit $LASTEXITCODE` | vendor docs (2026-10-04) |
156
+ | Claude Code | Git Bash (if installed), else PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); $LASTEXITCODE=2*!!$LASTEXITCODE 2>${null-/dev/null}; exit $LASTEXITCODE` | vendor docs (2026-10-04) |
157
+ | Codex CLI | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); $LASTEXITCODE=2*!!$LASTEXITCODE 2>${null-/dev/null}; exit $LASTEXITCODE` | vendor source (2026-10-04) |
158
+ | Gemini CLI | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); $LASTEXITCODE=2*!!$LASTEXITCODE 2>${null-/dev/null}; exit $LASTEXITCODE` | vendor source (2026-10-04) |
159
+ | Cursor | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); $LASTEXITCODE=2*!!$LASTEXITCODE 2>${null-/dev/null}; exit $LASTEXITCODE` | vendor bundle (2026-09-06) |
160
+ | Windsurf | PowerShell | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); $LASTEXITCODE=2*!!$LASTEXITCODE 2>${null-/dev/null}; exit $LASTEXITCODE` | vendor docs (2026-10-04) |
161
+ | GitHub Copilot | PowerShell / cross-platform `command` field | `$LASTEXITCODE=2 2>${null-/dev/null}; trackfw guard <name>; LASTEXITCODE=$((2*!!$?)); $LASTEXITCODE=2*!!$LASTEXITCODE 2>${null-/dev/null}; exit $LASTEXITCODE` | vendor docs (2026-10-04) |
162
162
  | Kiro | cmd.exe | `trackfw guard <name> \|\| exit 2` | vendor docs (2026-10-04) |
163
163
  | Amazon Q | cmd.exe | `trackfw guard <name> \|\| exit 2` | vendor source (2026-10-04) |
164
164
 
165
- The D11 line (ML-6B, issue #535) is **fail-closed**: if `trackfw` is absent from `PATH`,
166
- the hook exits with code 2 instead of 0. The seed `$LASTEXITCODE=2` is a PowerShell
167
- automatic-variable assignment; in sh/bash the resulting `=2: command not found` error is
168
- silently discarded by `2>${null-/dev/null}` (where `${null-/dev/null}` expands to
169
- `/dev/null` via bash parameter expansion, and to nothing in PowerShell). When the binary is
170
- absent, `LASTEXITCODE=$((2*!!$?))` normalizes any non-zero exit to 2; when the guard
171
- succeeds, it normalizes to 0. For cmd.exe: `|| exit 2` is the native short-circuit.
165
+ The D11 line (ML-6C, issue #538) is **fail-closed** for both POSIX shells and PowerShell:
166
+ if `trackfw` is absent from `PATH`, the hook exits with code 2 instead of 0. The seed
167
+ `$LASTEXITCODE=2` is a PowerShell assignment; in sh/bash the `=2: command not found` error
168
+ is silently discarded by `2>${null-/dev/null}`. `LASTEXITCODE=$((2*!!$?))` normalizes any
169
+ non-zero exit to 2 in sh/bash. The 4th segment `$LASTEXITCODE=2*!!$LASTEXITCODE
170
+ 2>${null-/dev/null}` provides the same normalization in PowerShell (via `!` as `-not`),
171
+ and is inert (CommandNotFound, stderr suppressed) in sh/bash. For cmd.exe: `|| exit 2` is
172
+ the native short-circuit.
172
173
 
173
174
  **What was measured in the VM (Windows 11 ARM64, 2026-10-06):** PowerShell 5, cmd.exe,
174
175
  and Git Bash (non-login, explicit PATH to the branch binary) all block
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trackfw",
3
- "version": "9.3.2",
3
+ "version": "9.3.3",
4
4
  "description": "Governance CLI for AI-native software delivery and AI coding agents. Enforces traceability: ADR → REQ → ROADMAP → kanban. Native support for Codex, Claude Code, Gemini CLI, Cursor, Copilot, Windsurf, Amazon Q, OpenCode, and Kiro.",
5
5
  "keywords": [
6
6
  "cli",
@@ -63,11 +63,11 @@
63
63
  "node": ">=18"
64
64
  },
65
65
  "optionalDependencies": {
66
- "@trackfw-bin/darwin-arm64": "9.3.2",
67
- "@trackfw-bin/darwin-x64": "9.3.2",
68
- "@trackfw-bin/linux-arm64": "9.3.2",
69
- "@trackfw-bin/linux-x64": "9.3.2",
70
- "@trackfw-bin/win32-arm64": "9.3.2",
71
- "@trackfw-bin/win32-x64": "9.3.2"
66
+ "@trackfw-bin/darwin-arm64": "9.3.3",
67
+ "@trackfw-bin/darwin-x64": "9.3.3",
68
+ "@trackfw-bin/linux-arm64": "9.3.3",
69
+ "@trackfw-bin/linux-x64": "9.3.3",
70
+ "@trackfw-bin/win32-arm64": "9.3.3",
71
+ "@trackfw-bin/win32-x64": "9.3.3"
72
72
  }
73
73
  }