@andresmassello/uscha 1.80.0 → 1.82.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 +1 -1
- package/package.json +1 -1
- package/uscha-kit/.claude/skills/uscha-devloop/qa_ledger.py +9 -6
- package/uscha-kit/.claude-plugin/plugin.json +1 -1
- package/uscha-kit/.codex-plugin/plugin.json +1 -1
- package/uscha-kit/README.md +1 -1
- package/uscha-kit/VERSION +1 -1
- package/uscha-kit/reports/junit/.bench-curate-cases.json +1 -1
- package/uscha-kit/reports/junit/.lang3-cases.json +1 -0
- package/uscha-kit/skills/uscha-devloop/qa_ledger.py +9 -6
- package/uscha-kit/templates/scripts/uscha_progress.py +2 -1
- package/uscha-kit/uscha.config.json +1 -1
package/README.md
CHANGED
|
@@ -40,7 +40,7 @@ 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.
|
|
43
|
+
**Kit v1.82.0** <!-- uscha:version --> · [uscha.dev](https://uscha.dev) ·
|
|
44
44
|
[changelog](https://github.com/andresmassello/uscha/blob/main/uscha-kit/CHANGELOG.md)
|
|
45
45
|
(the per-release changelogs live in the repo, not in the npm tarball)
|
|
46
46
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@andresmassello/uscha",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.82.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
5
|
"author": {
|
|
6
6
|
"name": "Andres Massello",
|
|
@@ -5582,19 +5582,20 @@ def _bench_entry(entry_dir, name, fidelity=False, curation=None):
|
|
|
5582
5582
|
node_ids_f = {nd["id"] for nd in ir_graph.get("nodes") or []}
|
|
5583
5583
|
covered_f = set()
|
|
5584
5584
|
units_f, traced_f = set(), set()
|
|
5585
|
+
# `c` was already parsed above for this same COMPILATION.json; reaching this
|
|
5586
|
+
# block requires `unit` to be set, which only happens after that parse
|
|
5587
|
+
# succeeded -- so `c` is guaranteed defined here, no need to re-open/re-parse.
|
|
5585
5588
|
try:
|
|
5586
|
-
|
|
5587
|
-
c2 = json.load(fh2)
|
|
5588
|
-
for e2 in c2.get("trace_manifest") or []:
|
|
5589
|
+
for e2 in c.get("trace_manifest") or []:
|
|
5589
5590
|
traced_f.add(e2.get("unit"))
|
|
5590
5591
|
for nid in e2.get("implements") or []:
|
|
5591
5592
|
if nid in node_ids_f:
|
|
5592
5593
|
covered_f.add(nid)
|
|
5593
5594
|
for sec in ("source", "tests"):
|
|
5594
|
-
for u2 in
|
|
5595
|
+
for u2 in c.get(sec) or []:
|
|
5595
5596
|
if u2.get("unit"):
|
|
5596
5597
|
units_f.add(u2["unit"])
|
|
5597
|
-
except
|
|
5598
|
+
except AttributeError:
|
|
5598
5599
|
pass
|
|
5599
5600
|
sobs, _uns = _extract_static_py(cd, [unit])
|
|
5600
5601
|
fn_names, cls_names = [], []
|
|
@@ -10217,7 +10218,9 @@ def build_parser():
|
|
|
10217
10218
|
pbc.add_argument("--bench", required=True,
|
|
10218
10219
|
help="the bench directory (the store lives at its root)")
|
|
10219
10220
|
pbc.add_argument("--entry", required=True, help="the archetype entry")
|
|
10220
|
-
pbc.add_argument("--dir",
|
|
10221
|
+
pbc.add_argument("--dir", "--compilation", dest="dir", required=True,
|
|
10222
|
+
help="the compilation dir (e.g. c-opus); --compilation is an alias "
|
|
10223
|
+
"(bench --dir means the bench root -- a copy-paste hazard)")
|
|
10221
10224
|
pbc.add_argument("--obs", default=None, help="a single OBS id from --list")
|
|
10222
10225
|
pbc.add_argument("--verdict", default=None, choices=_BENCH_CURATION_VERDICTS)
|
|
10223
10226
|
pbc.add_argument("--note", default=None)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
|
|
3
3
|
"name": "uscha",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.82.0",
|
|
5
5
|
"displayName": "Uscha",
|
|
6
6
|
"description": "Spec-driven development for LLM coding agents: 9 skills (discovery, adr-refine, reverse-discovery, characterize, devloop, sysdoc, rubric, mirador, status) + a stdlib measurement engine (qa_ledger.py, 49 subcommands + universal installer + npm/npx router). Facts block, guesses advise; the human approves.",
|
|
7
7
|
"author": {
|
package/uscha-kit/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# uscha-kit
|
|
2
2
|
|
|
3
|
-
**Kit version:** v1.
|
|
3
|
+
**Kit version:** v1.82.0 <!-- uscha:version --> · **[uscha.dev](https://uscha.dev)**
|
|
4
4
|
|
|
5
5
|
Spec-driven orchestrator + multi-repo QA for Claude Code, with a deterministic ledger.
|
|
6
6
|
**Nine skills** (`uscha-discovery`, `uscha-adr-refine`, `uscha-devloop`, `uscha-sysdoc`, `uscha-reverse-discovery`,
|
package/uscha-kit/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
uscha-kit 1.
|
|
1
|
+
uscha-kit 1.82.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"AC-BC-01": true, "AC-BC-02": true, "AC-BC-03": true}
|
|
1
|
+
{"AC-BC-04": true, "AC-BC-01": true, "AC-BC-02": true, "AC-BC-03": true}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"AC-CL3-01": true, "AC-CL3-02": true, "AC-CL3-03": true}
|
|
@@ -5582,19 +5582,20 @@ def _bench_entry(entry_dir, name, fidelity=False, curation=None):
|
|
|
5582
5582
|
node_ids_f = {nd["id"] for nd in ir_graph.get("nodes") or []}
|
|
5583
5583
|
covered_f = set()
|
|
5584
5584
|
units_f, traced_f = set(), set()
|
|
5585
|
+
# `c` was already parsed above for this same COMPILATION.json; reaching this
|
|
5586
|
+
# block requires `unit` to be set, which only happens after that parse
|
|
5587
|
+
# succeeded -- so `c` is guaranteed defined here, no need to re-open/re-parse.
|
|
5585
5588
|
try:
|
|
5586
|
-
|
|
5587
|
-
c2 = json.load(fh2)
|
|
5588
|
-
for e2 in c2.get("trace_manifest") or []:
|
|
5589
|
+
for e2 in c.get("trace_manifest") or []:
|
|
5589
5590
|
traced_f.add(e2.get("unit"))
|
|
5590
5591
|
for nid in e2.get("implements") or []:
|
|
5591
5592
|
if nid in node_ids_f:
|
|
5592
5593
|
covered_f.add(nid)
|
|
5593
5594
|
for sec in ("source", "tests"):
|
|
5594
|
-
for u2 in
|
|
5595
|
+
for u2 in c.get(sec) or []:
|
|
5595
5596
|
if u2.get("unit"):
|
|
5596
5597
|
units_f.add(u2["unit"])
|
|
5597
|
-
except
|
|
5598
|
+
except AttributeError:
|
|
5598
5599
|
pass
|
|
5599
5600
|
sobs, _uns = _extract_static_py(cd, [unit])
|
|
5600
5601
|
fn_names, cls_names = [], []
|
|
@@ -10217,7 +10218,9 @@ def build_parser():
|
|
|
10217
10218
|
pbc.add_argument("--bench", required=True,
|
|
10218
10219
|
help="the bench directory (the store lives at its root)")
|
|
10219
10220
|
pbc.add_argument("--entry", required=True, help="the archetype entry")
|
|
10220
|
-
pbc.add_argument("--dir",
|
|
10221
|
+
pbc.add_argument("--dir", "--compilation", dest="dir", required=True,
|
|
10222
|
+
help="the compilation dir (e.g. c-opus); --compilation is an alias "
|
|
10223
|
+
"(bench --dir means the bench root -- a copy-paste hazard)")
|
|
10221
10224
|
pbc.add_argument("--obs", default=None, help="a single OBS id from --list")
|
|
10222
10225
|
pbc.add_argument("--verdict", default=None, choices=_BENCH_CURATION_VERDICTS)
|
|
10223
10226
|
pbc.add_argument("--note", default=None)
|
|
@@ -152,7 +152,8 @@ def main():
|
|
|
152
152
|
repo = _statusline_repo(cfg)
|
|
153
153
|
if not repo:
|
|
154
154
|
return
|
|
155
|
-
state = {"
|
|
155
|
+
state = {"schema": "uscha/progress@1",
|
|
156
|
+
"label": repo.get("label") or str(repo.get("name", "uscha")).upper(),
|
|
156
157
|
"pct": None, "done": None, "total": None, "tests": None, "coverage": None,
|
|
157
158
|
"next": None, "phase": None, "loops": None, "stalled": None,
|
|
158
159
|
"acceptance_source": None, "measured_at": None, "score": None, "band": None,
|