@andresmassello/uscha 1.54.0 → 1.56.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
@@ -40,8 +40,8 @@ Requires **Python 3.8+** on the machine (the engine is Python stdlib — no pip
40
40
  runtime dependencies). The npm package is a thin router; the canonical installer is
41
41
  `uscha-kit/install-uscha.py`.
42
42
 
43
- **Kit v1.54.0** <!-- uscha:version --> · [uscha.dev](https://uscha.dev) ·
44
- [changelog](https://github.com/andresmassello/uscha/blob/main/uscha-kit/CHANGELOG-1.54.0.md)
43
+ **Kit v1.56.0** <!-- uscha:version --> · [uscha.dev](https://uscha.dev) ·
44
+ [changelog](https://github.com/andresmassello/uscha/blob/main/uscha-kit/CHANGELOG-1.56.0.md)
45
45
  (the per-release changelogs live in the repo, not in the npm tarball)
46
46
 
47
47
  ---
@@ -80,6 +80,32 @@ and see which file, which test, and when.
80
80
  evidence from **11 language stacks** — maven, gradle, ant, python, node, go, rust, dotnet,
81
81
  cpp, swift, flutter — and computes a readiness score with hard caps and visible provenance.
82
82
 
83
+ ## Compatibility matrix
84
+
85
+ Generated from `TARGETS`/`SKILL_ROOTS` in the installer, so it cannot drift from the code.
86
+
87
+ | target | agent | installs to | INV-GOLDEN-01 | exercised against a real agent |
88
+ |---|---|---|---|---|
89
+ | `codex` | Codex | `~/plugins/uscha` | advisory | **yes** |
90
+ | `claude` | Claude Code | `~/.claude/skills` | **enforced** (PreToolUse hook, best-effort) | **yes** |
91
+ | `pi` | pi (Earendil) | `~/.agents/skills` | advisory | no — placement + read-back only |
92
+ | `cursor` | Cursor | `~/.cursor/skills` | advisory | no — placement + read-back only |
93
+ | `copilot` | VS Code / Copilot | `~/.copilot/skills` | advisory | no — placement + read-back only |
94
+ | `gemini` | Gemini CLI | `~/.gemini/skills` | advisory | no — placement + read-back only |
95
+ | `cline` | Cline | `~/.cline/skills` | advisory | no — placement + read-back only |
96
+
97
+ **"Exercised" is the column that matters.** For every target but Claude Code and Codex, what
98
+ is measured is that the nine skills land where that agent documents reading them and that
99
+ `doctor` reads them back — *that they load is a documented expectation, not a measurement.*
100
+ INV-GOLDEN-01 is mechanically attempted only where a blocking pre-tool hook exists; everywhere
101
+ else `doctor` reports `advisory` rather than implying a guard it cannot see.
102
+
103
+ | OS | how it is verified | status |
104
+ |---|---|---|
105
+ | Linux | CI matrix (py3.8 + py3.13) + local WSL | **measured** |
106
+ | Windows | CI matrix (py3.8 + py3.13) + native local | **measured** |
107
+ | macOS | CI matrix (py3.8 + py3.13), real runners | **measured** |
108
+
83
109
  ## The loop, in short
84
110
 
85
111
  1. **Model first.** `/uscha-discovery` (new) or `/uscha-adr-refine` (known feature) writes
@@ -135,7 +161,11 @@ audits/ # adversarial audit outputs
135
161
 
136
162
  The rules are in [`CLAUDE.md`](CLAUDE.md). The short version: no doc may claim what the
137
163
  engine does not do; the ES and EN twins travel together; every engine change carries a
138
- smoke test; and the agent never writes a `.approved` file — that one is enforced by a hook.
164
+ smoke test; and a PreToolUse hook stops the agent from writing a `.approved` golden.
165
+ **Scoped honestly**: that hook is a *best-effort* guard and it is registered on the Claude
166
+ target only — it inspects a tool call as TEXT, so an indirect write (a script that assembles
167
+ the filename, a symlink) gets through, and every other target reports `golden_guard:
168
+ advisory`. The MEASURED control is `golden-diff`, which compares bytes.
139
169
 
140
170
  ## History
141
171
 
package/package.json CHANGED
@@ -1,7 +1,11 @@
1
1
  {
2
2
  "name": "@andresmassello/uscha",
3
- "version": "1.54.0",
3
+ "version": "1.56.0",
4
4
  "description": "Spec-driven development for LLM coding agents: 9 skills + a stdlib evidence engine. Facts block, guesses advise; the human approves.",
5
+ "author": {
6
+ "name": "Andres Massello",
7
+ "url": "https://github.com/andresmassello"
8
+ },
5
9
  "bin": {
6
10
  "uscha": "bin/uscha.js",
7
11
  "uscha-kit": "bin/uscha.js"