trackfw 9.2.0 → 9.3.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 +76 -29
- package/package.json +7 -7
package/README.md
CHANGED
|
@@ -19,12 +19,12 @@ ADR → REQ → ROADMAP → backlog / wip / blocked / done / abandoned
|
|
|
19
19
|
Every piece of work traces back to a decision. Every decision links to a requirement. Every requirement lands in a roadmap. No orphan work, no undocumented choices.
|
|
20
20
|
|
|
21
21
|
> 🚧 **Platform support: Linux and macOS are supported. Windows support is partial.**
|
|
22
|
-
> The CLIs install on Windows and core governance commands run
|
|
23
|
-
> guard hooks
|
|
24
|
-
>
|
|
25
|
-
>
|
|
26
|
-
> [
|
|
27
|
-
>
|
|
22
|
+
> The CLIs install on Windows and core governance commands run. From the next release,
|
|
23
|
+
> guard hooks call `trackfw guard <name>` (the Go binary) instead of a POSIX shell
|
|
24
|
+
> script — measured blocking and allowing correctly in PowerShell 5, cmd.exe, and Git
|
|
25
|
+
> Bash (non-login) on Windows. Windows CI still reports known test failures. There are
|
|
26
|
+
> limits worth knowing; **read [Windows support (partial)](#windows-support-partial)
|
|
27
|
+
> before adopting on Windows.**
|
|
28
28
|
|
|
29
29
|
---
|
|
30
30
|
|
|
@@ -138,32 +138,79 @@ are than let you find them after adoption.
|
|
|
138
138
|
|
|
139
139
|
- Our Windows CI still reports **known test failures**. They are mapped by root cause,
|
|
140
140
|
not unknown — but they are not zero.
|
|
141
|
-
**Guard hooks on Windows — measured
|
|
141
|
+
**Guard hooks on Windows — measured state (from the next release)**
|
|
142
142
|
|
|
143
|
-
|
|
144
|
-
|
|
143
|
+
From the next release, guard hooks call `trackfw guard <name>` (the Go binary) instead
|
|
144
|
+
of a `.sh` script. The same binary runs in every shell; for a given agent CLI, the hook
|
|
145
|
+
line in the committed config is the same string across PowerShell, cmd.exe, and Git
|
|
146
|
+
Bash — a team with mixed OS can commit one config and have it work on all machines.
|
|
145
147
|
|
|
146
|
-
|
|
148
|
+
The hook line emitted depends on the shell the agent CLI uses on Windows — a fact of
|
|
149
|
+
the vendor, not of the OS:
|
|
150
|
+
|
|
151
|
+
| Agent CLI | Shell on Windows | Hook line emitted | Basis |
|
|
147
152
|
|---|---|---|---|
|
|
148
|
-
|
|
|
149
|
-
| Codex CLI | PowerShell
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
153
|
+
| Claude Code | Git Bash (if installed), else PowerShell | `trackfw guard <name>; exit $LASTEXITCODE` | vendor docs (2026-10-04) |
|
|
154
|
+
| Codex CLI | PowerShell | `trackfw guard <name>; exit $LASTEXITCODE` | vendor source (2026-10-04) |
|
|
155
|
+
| Gemini CLI | PowerShell | `trackfw guard <name>; exit $LASTEXITCODE` | vendor source (2026-10-04) |
|
|
156
|
+
| Cursor | PowerShell | `trackfw guard <name>; exit $LASTEXITCODE` | vendor bundle (2026-09-06) |
|
|
157
|
+
| Windsurf | PowerShell | `trackfw guard <name>; exit $LASTEXITCODE` | vendor docs (2026-10-04) |
|
|
158
|
+
| GitHub Copilot | PowerShell / cross-platform `command` field | `trackfw guard <name>; exit $LASTEXITCODE` | vendor docs (2026-10-04) |
|
|
159
|
+
| Kiro | cmd.exe | `trackfw guard <name>` | vendor docs (2026-10-04) |
|
|
160
|
+
| Amazon Q | cmd.exe | `trackfw guard <name>` | vendor source (2026-10-04) |
|
|
161
|
+
|
|
162
|
+
The `; exit $LASTEXITCODE` suffix is required for PowerShell 5: without it, PowerShell
|
|
163
|
+
converts exit 2 (deny) from the child process into exit 1, and 6 of 8 CLIs treat exit 1
|
|
164
|
+
as a non-blocking error. cmd.exe and bash propagate the exit code directly; they do not
|
|
165
|
+
need the suffix.
|
|
166
|
+
|
|
167
|
+
**What was measured in the VM (Windows 11 ARM64, 2026-10-06):** PowerShell 5, cmd.exe,
|
|
168
|
+
and Git Bash (non-login, explicit PATH to the branch binary) all block
|
|
169
|
+
`git push origin main` (exit 2) and allow `ls` (exit 0) correctly. `pwsh` (PowerShell 7)
|
|
170
|
+
was not installed on the VM — not measured. Subsequent testing with real agent CLIs on the
|
|
171
|
+
same VM proved end-to-end blocking and allowing for two CLIs; the remaining CLIs have the
|
|
172
|
+
hook line verified in each shell but were not run agent-to-end:
|
|
173
|
+
|
|
174
|
+
| Agent CLI | End-to-end proven on Windows | Evidence |
|
|
175
|
+
|---|---|---|
|
|
176
|
+
| Claude Code | ✅ real agent — `git push` blocked by guard, `git status` allowed | Claude Code 2.1.292, 2026-10-07 (ML-5B) |
|
|
177
|
+
| Codex CLI | ✅ real agent — `git push` blocked ("Blocked by hook" + guard REASON), `git status` allowed | Codex CLI 0.160.1, KG interactive session, 2026-10-07 (ML-5C) |
|
|
178
|
+
| Cursor | Hook line measured in shell; agent not run end-to-end | — |
|
|
179
|
+
| Windsurf | Hook line measured in shell; agent not run end-to-end | — |
|
|
180
|
+
| Gemini CLI | Hook line measured in shell; agent not run end-to-end | — |
|
|
181
|
+
| Kiro | Hook line measured in `cmd.exe`; agent not measured (no Windows ARM64 CLI; the IDE needs an AWS Builder ID account) | — |
|
|
182
|
+
| GitHub Copilot | Not verified (no account) | — |
|
|
183
|
+
| Amazon Q | Not verified (no account) | — |
|
|
184
|
+
|
|
185
|
+
**Claude Code on Windows uses the PowerShell shell tool**, not Bash. The hook emitted by
|
|
186
|
+
trackfw carries `matcher: "Bash|PowerShell"` so it fires on both macOS/Linux (where Claude
|
|
187
|
+
Code names the tool `Bash`) and Windows (where it names it `PowerShell`). Run
|
|
188
|
+
`trackfw update` to migrate existing configs that carry only `"Bash"` — it also handles the
|
|
189
|
+
`.sh`-to-binary-hook migration.
|
|
190
|
+
|
|
191
|
+
**Caveat — old trackfw binary in Git Bash's PATH:** Claude Code runs the hook command
|
|
192
|
+
through Git Bash (login shell), whose login profile puts `~/bin` at the front of `PATH`.
|
|
193
|
+
If an older trackfw binary (without the `guard` subcommand) lives in `~/bin`, the hook
|
|
194
|
+
exits 1 ("unknown command") and fails open on most CLIs — remove or update that binary.
|
|
195
|
+
`trackfw validate` will report this condition from the next release.
|
|
196
|
+
|
|
197
|
+
**The guard requires a `trackfw` binary with the `guard` subcommand in the PATH of the
|
|
198
|
+
agent CLI's process.** `trackfw validate` now reports three new conditions:
|
|
199
|
+
|
|
200
|
+
- **Old binary in PATH** (no `guard` subcommand — exits 1 with "unknown command"):
|
|
201
|
+
fail-open on 6 of 8 CLIs. Claude Code, Codex, Gemini, Cursor, Windsurf, and Amazon Q
|
|
202
|
+
treat exit 2 as the only blocking exit — exit 1 passes through. Kiro and Copilot
|
|
203
|
+
block any non-zero exit, so they block for the wrong reason (deny-all until updated).
|
|
204
|
+
`trackfw validate` reports a violation when the binary in PATH does not support
|
|
205
|
+
`guard`. **Caveat:** if Git Bash resolves a different binary (e.g. one installed in
|
|
206
|
+
`~/bin` that is absent from the Windows PATH), the probe does not see it — that
|
|
207
|
+
binary's version is not checked.
|
|
208
|
+
- **npm channel under `ExecutionPolicy Restricted`**: the `.ps1` shim is blocked by
|
|
209
|
+
PowerShell; validate reports a violation and recommends
|
|
210
|
+
`Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`.
|
|
211
|
+
- **`trackfw.exe`, `trackfw.cmd`, or `trackfw.bat` in the project root**: cmd.exe (used
|
|
212
|
+
by Kiro and Amazon Q) searches the current directory before PATH — validate reports a
|
|
213
|
+
violation for each file found.
|
|
167
214
|
|
|
168
215
|
**If you are on Windows**, we want your report. The Windows defects fixed so far came
|
|
169
216
|
from a user running the tool on real Windows 11 and measuring before reporting — open
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trackfw",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.3.0",
|
|
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.
|
|
67
|
-
"@trackfw-bin/darwin-x64": "9.
|
|
68
|
-
"@trackfw-bin/linux-arm64": "9.
|
|
69
|
-
"@trackfw-bin/linux-x64": "9.
|
|
70
|
-
"@trackfw-bin/win32-arm64": "9.
|
|
71
|
-
"@trackfw-bin/win32-x64": "9.
|
|
66
|
+
"@trackfw-bin/darwin-arm64": "9.3.0",
|
|
67
|
+
"@trackfw-bin/darwin-x64": "9.3.0",
|
|
68
|
+
"@trackfw-bin/linux-arm64": "9.3.0",
|
|
69
|
+
"@trackfw-bin/linux-x64": "9.3.0",
|
|
70
|
+
"@trackfw-bin/win32-arm64": "9.3.0",
|
|
71
|
+
"@trackfw-bin/win32-x64": "9.3.0"
|
|
72
72
|
}
|
|
73
73
|
}
|