@sylad/cadence 0.20.0 → 0.22.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/dist/plan.js CHANGED
@@ -97,6 +97,10 @@ export class Plan {
97
97
  lots.flow = false; // « lots: [] » écrit par init : passer en style bloc
98
98
  return new Plan(path, doc, !/^lots:[^\n]*\n(?:#[^\n]*\n)*- /m.test(text), settings);
99
99
  }
100
+ /** Le plan tel qu'il est maintenant sur le disque (un script a pu l'écrire depuis la lecture), mêmes réglages. */
101
+ reloaded() {
102
+ return Plan.load(this.path, this.settings);
103
+ }
100
104
  save() {
101
105
  this.writable();
102
106
  writeFileSync(this.path, this.doc.toString({ lineWidth: 0, indentSeq: this.indentSeq }));
@@ -317,6 +321,13 @@ export class Plan {
317
321
  this.doc.get('lots').add(node);
318
322
  return id;
319
323
  }
324
+ /** Déclare les dépôts voisins d'un lot (clé `repos:`) : un chemin seul, ou `{ path, cite }` quand le voisin est partagé. */
325
+ setRepos(lotId, repos) {
326
+ this.writable();
327
+ const node = this.doc.createNode(repos.map((r) => (r.cite === undefined ? r.path : { path: r.path, cite: r.cite })));
328
+ node.flow = true;
329
+ this.lotNode(lotId).set('repos', node);
330
+ }
320
331
  addTask(lotId, title) {
321
332
  this.writable();
322
333
  const lot = this.lotNode(lotId);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sylad/cadence",
3
- "version": "0.20.0",
3
+ "version": "0.22.0",
4
4
  "description": "A small, repo-native working method: a versioned plan linked to your commits, a changelog with screenshots, session rituals and deliveries proven by their effect.",
5
5
  "license": "MIT",
6
6
  "author": "Sylvain Ladoire",
@@ -18,9 +18,9 @@ commands (its CLAUDE.md names them), never with `raf start|done|note|ux|review`.
18
18
  (section 2b) count toward this limit: orchestrate sessions plus subagents never exceed two. A wave
19
19
  already caps itself (`--max-sessions`, 2 by default, shared by every wave); before starting a
20
20
  subagent, check `cadence orchestrate --status`, and while a wave runs, start none beyond the free
21
- slots. Count the free slots from what `--status` shows per wave, not from the live sessions (a
22
- wave's steps take a slot and give it back between two steps): 2 − Σ min(cap, number of repositories
23
- of the wave that still have lots). Never raise `--max-sessions` above two to speed a wave up.
21
+ slots. Read the free slots, do not compute them: `cadence orchestrate --status` and `cadence lead tour` print
22
+ `créneaux libres : N sur 2` (the registry subtracts, for each live wave, min(cap, repositories it still holds)
23
+ from the two slots; no line from `lead tour` means no live wave, so both are free). Never raise `--max-sessions` above two to speed a wave up.
24
24
  - **Never two subagents in the same repository at the same time**, and the lead does not commit in a
25
25
  repository where a subagent is working.
26
26
  - **Deliveries and `raf ux` / `raf review` verdicts are done by the lead, one project at a time** —
@@ -97,6 +97,37 @@ questions back (`--resume --answer <project>:<lot> "…"`), look at the UX revie
97
97
  the plan is the lead's decision. A minor finding becomes a lot of its own only if it describes an observable bug (a wrong output, a crash, a measured regression); otherwise it stays a note of the originating lot, so that a review never feeds the next one. If an orchestrated wave is running in a repository, do not commit there
98
98
  and do not deliver it (`cadence deliver` refuses).
99
99
 
100
+ ### 2c. Chaining without the human
101
+
102
+ Once the human has given the **first choice and the order** (the lots, and the priority: `--priority` or the
103
+ `priority:` list of the parent folder's `cadence.yaml`), the lead does not come back to ask « next? ». For each lot a
104
+ wave hands back **ready**, it chains, in this order, one project at a time: re-verify it yourself (section 3, point 2),
105
+ `raf done` (a read-only plan: the project's own command; a `visible` lot first waits for the human's UX verdict, `raf ux`, and is neither closed nor delivered without it — the chain goes on with the other lots), push, deliver (section 4), the `qa-reviewer` check that
106
+ section asks for; then it starts the next wave, in the declared priority — `cadence orchestrate --continue --priority …` draws the next ready lot
107
+ of the plan itself (section 2b), and the limits of section « Limits that always apply » still hold. A lot that was not
108
+ handed back ready (refused, review not compliant after the correction passes, red delivery, blocking QA finding) is
109
+ not chained over: it is reported, and the chain goes on with the lots that do not depend on it.
110
+
111
+ **The threshold.** Before every new wave, read the context of the lead session with `cadence session context`: the
112
+ `cadence-hud` mod publishes the context of each session, one file per session named after its id, and the command reads the
113
+ one named by `$CLAUDE_CODE_SESSION_ID` (Claude Code sets it in the environment of your Bash, so it is your own session,
114
+ whatever the folder; `--session <id>` overrides it). Without the variable it falls back to the folder only if a single
115
+ session publishes for it; two sessions in one folder make it exit 2 ("pass --session"), never guess the latest. It prints
116
+ `ctx 42 % (84000/200000)`, the figure the `ctx` segment of the band shows, which the band publishes to
117
+ a file because it is only a rendering the model cannot see. If the command fails (exit code 2: the band is not loaded in
118
+ this session, several sessions share the folder without the variable, or the figure is older than two minutes), treat it as
119
+ **at the threshold**: you cannot prove you are under it, and without the band loaded the lead does not chain.
120
+ From **60 %** upward, start nothing: at the threshold the lead runs `session-close` in each project touched, writes its
121
+ memory (filtered, as `session-close` says), and records three lines for next time with `cadence session next` — the wave
122
+ that was about to start comes first among them. Under it, chain. The lead says in one sentence which side of the threshold
123
+ it is on each time it chains or stops; it never waits for the figure to move (never a polling loop).
124
+
125
+ **What stays with the human**: the first choice and the order; the questions a session raised (the lead brings them
126
+ back at once and does not answer in the human's place); the UX reservations (`raf ux` is recorded on the human's
127
+ verdict, a UX reviewer's captures are looked at by the human). While a question or a UX reservation is pending on a
128
+ lot, the chain goes on with the other lots and does not wait for it. A delivery that needs the human's confirmation
129
+ (their standing instructions, section 4) is a stop of the chain, not a bypass.
130
+
100
131
  ## 3. Check
101
132
 
102
133
  0. After an orchestrated wave the review is already done, by a fresh session: read the table, then go to
@@ -5,6 +5,7 @@ cite the lot (`raf commits {{lot}}`, or `git log`), run the checks, report real
5
5
  {{repos}}
6
6
  {{ux}}
7
7
  {{checks}}
8
+ {{docs}}
8
9
  {{choix}}
9
10
  A proposed sub-task describes an observable bug (a wrong output, a crash, a measured regression); any other minor finding stays a note of this lot, not a sub-task.
10
11
  You are read-only: do not modify, commit, push or run `raf review|ux|done`. Do not launch subagents.
@@ -3,6 +3,7 @@ You are given the repository path and the lot id only: read the diff yourself fr
3
3
  cite the lot (`raf commits {{lot}}`, or `git log`), run the checks, report real defects only.
4
4
  {{repos}}
5
5
  {{checks}}
6
+ {{docs}}
6
7
  {{choix}}
7
8
  A proposed sub-task describes an observable bug (a wrong output, a crash, a measured regression); any other minor finding stays a note of this lot, not a sub-task.
8
9
  You are read-only: do not modify, commit, push or run `raf review|ux|done`. Do not launch subagents.