@zenera/cli 1.1.40 → 1.1.42

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zenera/cli",
3
- "version": "1.1.40",
3
+ "version": "1.1.42",
4
4
  "description": "Command-line front end for @zenera/neo: agentic projects you can run, share and commit.",
5
5
  "keywords": [
6
6
  "agents",
@@ -54,9 +54,9 @@
54
54
  "@google/genai": "^2.30.0",
55
55
  "@inkjs/ui": "^2.0.0",
56
56
  "@openrouter/sdk": "^1.4.25",
57
- "@zenera/engine": "^1.1.40",
58
- "@zenera/neo": "^1.1.40",
59
- "@zenera/view": "^1.1.40",
57
+ "@zenera/engine": "^1.1.42",
58
+ "@zenera/neo": "^1.1.42",
59
+ "@zenera/view": "^1.1.42",
60
60
  "google-auth-library": "^10.0.0",
61
61
  "ink": "^7.1.1",
62
62
  "openai": "^6.0.0",
@@ -55,7 +55,10 @@ code, `zen-topology` for `handoffs:` or `fork:` on any agent,
55
55
  configured and already passing `zen check` is exactly the case that looks
56
56
  finished and is not: the obligation lives in the skill, so a review that never
57
57
  opens the skill cannot find what is missing. This applies whatever prompted the
58
- change - a task scoped to `SPECIFICATION.md` does not narrow it.
58
+ change - a task scoped to `SPECIFICATION.md` does not narrow it. There is one
59
+ exception: a `/spec-sync-project` pass that the `zen-spec-sync` skill classes as
60
+ **spec-only**. It touches no agent, prompt, skill or wiring, so there is no
61
+ obligation for it to meet.
59
62
 
60
63
  **Load `zen-instructions` before writing, editing, reviewing or deleting any
61
64
  `agents/*instructions.md`.** They are the house rules, prepended to every
@@ -1990,8 +1993,9 @@ candidates; these are the judgements to make about each one)**
1990
1993
  and says so honestly - an unchanged specification line is not evidence
1991
1994
  that anything implements it
1992
1995
  - [ ] No question in `SPECIFICATION-FEEDBACK.md` has a box marked `[x]`, or
1993
- exactly one answer left under it, without a matching `✅ Answered` entry -
1994
- that is an answer given and never folded into the specification
1996
+ exactly one answer left under it, without a matching `✅ Answered` entry
1997
+ or a strike naming the specification line that superseded it - that is
1998
+ an answer given and never folded into the specification
1995
1999
  - [ ] `.spec-sync/` is committed and `.tmp/` is not
1996
2000
 
1997
2001
  ---
@@ -32,7 +32,14 @@ accounted for against the specification.
32
32
 
33
33
  The scope decides what you **read and edit**. It never decides what you
34
34
  **verify**: §6, §7 and the five checks in the skill run at full size on every
35
- pass, however small the diff.
35
+ pass, however small the diff. The one exception is the skill's **spec-only
36
+ pass**, and only under the conditions the skill sets.
37
+
38
+ When inputs disagree - a ticked answer against a later specification edit, the
39
+ specification against `zen --version` - use the order of precedence in the
40
+ skill. The user's own message comes first. Do not use session history, file
41
+ timestamps or `git log` to work out why something changed. Whatever the order
42
+ does not settle becomes a question in `SPECIFICATION-FEEDBACK.md`.
36
43
 
37
44
  ## 1. Read before changing anything
38
45
 
@@ -121,7 +128,9 @@ the model to compute or remember. Specifically:
121
128
  the host on the next image build; a stale pin leaves the container holding an
122
129
  older `zen` than the session outside it. `zen check` reports both, as
123
130
  `sandbox.pin.absent` and `sandbox.pin.stale`, but will not repair either - the
124
- Dockerfile is the project's file, so this edit is yours to make.
131
+ Dockerfile is the project's file, so this edit is yours to make. The pin
132
+ follows `zen --version` even when `SPECIFICATION.md` names another number.
133
+ The `zen-spec-sync` skill gives the one question to raise in that case.
125
134
 
126
135
  Never delete an **extra** without saying so. Report it, say why the
127
136
  specification does not cover it, and leave it unless I tell you to remove it.
@@ -379,11 +388,17 @@ since the last pass is work to close, not a question to ask again. If a question
379
388
  has a box marked `[x]`, or one answer left under it, and no `✅` entry, the
380
389
  reader answered it and never ran `/spec-apply-feedback` - implement that
381
390
  answer, fold its text into `SPECIFICATION.md` yourself, and say so in the chat.
391
+ Do this unless the specification has since been edited on the same point. In
392
+ that case the edit supersedes the answer: strike the question, naming the line
393
+ that replaced it, and leave the newer text alone.
382
394
 
383
395
  ## 6. Run `scripts/_setup.sh` and watch it finish
384
396
 
385
397
  After `zen check` passes, run `scripts/_setup.sh` yourself. A pass is not done
386
- until it has run to completion in this session.
398
+ until it has run to completion in this session. The exception is a spec-only
399
+ pass, as the `zen-spec-sync` skill defines it: there `scripts/_setup.sh --check`
400
+ reporting every step `skipped` is enough, and anything else sends you back to
401
+ the full run below.
387
402
 
388
403
  It is slow - embedding a large corpus is hours, and the progress line says how
389
404
  many - so start it in the background and follow the logs instead of waiting