@andresmassello/uscha 1.53.0 → 1.55.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.53.0** <!-- uscha:version --> · [uscha.dev](https://uscha.dev) ·
44
- [changelog](https://github.com/andresmassello/uscha/blob/main/uscha-kit/CHANGELOG-1.53.0.md)
43
+ **Kit v1.55.0** <!-- uscha:version --> · [uscha.dev](https://uscha.dev) ·
44
+ [changelog](https://github.com/andresmassello/uscha/blob/main/uscha-kit/CHANGELOG-1.55.0.md)
45
45
  (the per-release changelogs live in the repo, not in the npm tarball)
46
46
 
47
47
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andresmassello/uscha",
3
- "version": "1.53.0",
3
+ "version": "1.55.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
  "bin": {
6
6
  "uscha": "bin/uscha.js",
@@ -18,6 +18,34 @@ You convert a rough idea into a development-ready specification. You do this in
18
18
  phases. **You are NOT a generator. You are an interrogator that distills.** The value
19
19
  is in the questions, not in agreeing.
20
20
 
21
+ ## First contact (show ONCE, then never again)
22
+
23
+ **Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
24
+ `ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
25
+ exist, the operator already knows the method: skip it entirely and go straight to the
26
+ breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
27
+
28
+ ```
29
+ [uscha · adr-refine · START]
30
+ Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
31
+ nothing closes on a checkbox, and the human approves the merge.
32
+ Here: a precision interview on a feature whose shape you already know. I refuse to emit until the gaps close.
33
+ Output: docs/adr/ADR-NNN.md · ACCEPTANCE.md
34
+ Next: `/uscha-devloop` builds against the ADR + ACCEPTANCE.
35
+ Stop: say so at any point -- whatever is already written stays.
36
+ ```
37
+
38
+ **Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
39
+ `Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
40
+ for them mechanically, which is only possible if they never move. The wording after each label
41
+ is the canonical English; **render it in the operator's language**. If they are writing to you
42
+ in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
43
+ do not leave the content in English when they are not writing in English.
44
+
45
+ Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
46
+ measured state to derive from yet, so the nominal path is the honest answer. From the close
47
+ block onward, derived state wins.
48
+
21
49
  ## Orientation markers (non-negotiable)
22
50
 
23
51
  The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.
@@ -18,6 +18,34 @@ return, you encode the same partial understanding that loses logic silently. **Y
18
18
  what the code DOES, mechanically, by running it — never what it should do.** You may write
19
19
  the capture harness; you may NOT create, rename, or edit any `.approved` file.
20
20
 
21
+ ## First contact (show ONCE, then never again)
22
+
23
+ **Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
24
+ `ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
25
+ exist, the operator already knows the method: skip it entirely and go straight to the
26
+ breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
27
+
28
+ ```
29
+ [uscha · characterize · START]
30
+ Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
31
+ nothing closes on a checkbox, and the human approves the merge.
32
+ Here: I run the ORIGINAL code against real inputs and freeze what it does today.
33
+ Output: tests/golden/*.received -- and I STOP: a HUMAN approves the .approved, never me
34
+ Next: you approve the goldens, then `/uscha-devloop` migrates against them.
35
+ Stop: say so at any point -- whatever is already written stays.
36
+ ```
37
+
38
+ **Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
39
+ `Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
40
+ for them mechanically, which is only possible if they never move. The wording after each label
41
+ is the canonical English; **render it in the operator's language**. If they are writing to you
42
+ in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
43
+ do not leave the content in English when they are not writing in English.
44
+
45
+ Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
46
+ measured state to derive from yet, so the nominal path is the honest answer. From the close
47
+ block onward, derived state wins.
48
+
21
49
  ## Orientation markers (non-negotiable)
22
50
 
23
51
  The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.
@@ -26,6 +26,34 @@ two tiers: **measured** records (snapshots, ingest-gate, log-gate — parsed fro
26
26
  artifacts; these can block) and **self-reported** agent counts (log-step — narration
27
27
  recorded for the retrospective; a measured red always overrides a narrated green).
28
28
 
29
+ ## First contact (show ONCE, then never again)
30
+
31
+ **Only when this project has no uscha artifacts yet** -- no `QA-LEDGER.json`, no `SPEC.md` or
32
+ `ACCEPTANCE.md`, no `docs/adr/` -- open with this block, then start working. If any of those
33
+ exist, the operator already knows the method: skip it entirely and go straight to the
34
+ breadcrumb. Repeating it every run would be exactly the ceremony the method forbids.
35
+
36
+ ```
37
+ [uscha · devloop · START]
38
+ Method: you bring the idea, the method builds the rest. Facts block, guesses advise;
39
+ nothing closes on a checkbox, and the human approves the merge.
40
+ Here: plan → build → a severity-gated QA loop that converges instead of chasing zero → PR.
41
+ Output: code, tests, and QA-LEDGER.json (every gate recorded with its evidence)
42
+ Next: the human gate: review the PR and decide the merge. I stop there.
43
+ Stop: say so at any point -- whatever is already written stays.
44
+ ```
45
+
46
+ **Bilingual by construction.** The labels (`START`, `Method`, `Here`, `Output`, `Next`,
47
+ `Stop`) stay VERBATIM in English -- they are the method's vocabulary and the smoke suite checks
48
+ for them mechanically, which is only possible if they never move. The wording after each label
49
+ is the canonical English; **render it in the operator's language**. If they are writing to you
50
+ in Spanish, the whole block reads in Spanish under English labels. Do not translate the labels,
51
+ do not leave the content in English when they are not writing in English.
52
+
53
+ Unlike the close block, `Next` here MAY name the nominal route: on a first run there is no
54
+ measured state to derive from yet, so the nominal path is the honest answer. From the close
55
+ block onward, derived state wins.
56
+
29
57
  ## Orientation markers (non-negotiable)
30
58
 
31
59
  The operator must never have to ask "where am I?" or "what happens now?". Two markers, always.