@rness/cli 0.15.1 → 0.17.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
@@ -29,7 +29,7 @@ Inside a workspace, every `rness` delegates to the copy pinned in
29
29
  rness logout
30
30
  rness context [--scope <name>] [--json]
31
31
  rness status [<tab>]
32
- rness pulse create [-y]
32
+ rness pulse create [<collection>] [-y]
33
33
  rness pulse sync
34
34
  rness validate
35
35
  rness mcp
@@ -119,9 +119,10 @@ the files a given agent needs, for the agents the team declares in
119
119
  A new document takes the collection's first status (`Proposed` for an
120
120
  ADR, `Draft` otherwise) and the next number of the local checkout; two
121
121
  branches can pick the same one. Each skill records its session: it adds
122
- the Claude Code session id to `sessions:` in the front matter of what it
123
- writes or closes — an edit made without a skill leaves none. No skill
124
- commits.
122
+ `{ id: <session id>, agent: <model> }` to `sessions:` in the front matter
123
+ of what it writes or closes. The agent is the model it runs as, as Claude
124
+ Code names it (`Claude Opus 5.5`): no variable gives it to a skill. An
125
+ edit made without a skill leaves none. No skill commits.
125
126
  - rness owns values, not files: what is missing is added, nothing else is
126
127
  touched, and a file it cannot parse is reported, never rewritten.
127
128
  `sync --check` and `validate` report a missing value. Removing an agent
@@ -170,8 +171,9 @@ status, it received the problem. The `sh` line is not verified on Windows.
170
171
 
171
172
  ### Pulse
172
173
 
173
- rness pulse create # once per organization: the board, then a first sync
174
- rness pulse sync # as often as wanted
174
+ rness pulse create # once per organization: the board, then a first sync
175
+ rness pulse create marketing # a collection's own project (0.17.0)
176
+ rness pulse sync # every declared project, as often as wanted
175
177
 
176
178
  A projection of rness's state on the organization's GitHub Projects: a
177
179
  project named **Agent Pulse**, where the team sees — and reads — every
@@ -234,17 +236,22 @@ in its Settings`.
234
236
  collection fields' options: every contract status plus the ones found in
235
237
  `.rness/`, in lifecycle order, at most 50), `Collection` (one option per tab of
236
238
  `rness status`; not `Type`, which is GitHub's own issue-type field and
237
- filter), `Agent` (`working`), `Session` (`claude · 1a2b3c4d`, plus the
238
- agent type for a subagent), `Path` and `Sessions` — the document's
239
- `sessions:` (see "Agent targets"), joined by `, `, written by sync and
240
- never cleared: which sessions wrote a specification or implemented a plan,
241
- after they ended (`claude --resume <id>` reopens one on the machine it ran
242
- on). A board made before 0.15.0 gains `Sessions` at its next sync. A board per directory, named as
239
+ filter), `Agent` (`working`), `Working session` (`claude · 1a2b3c4d`,
240
+ plus the agent type for a subagent: the session working on the document
241
+ now, cleared when it ends), `Path`, and `Session history` — the
242
+ document's `sessions:` (see "Agent targets"), each `Claude Opus 5.5 ·
243
+ <id>` (the id alone for an entry without its agent), joined by `, `,
244
+ written by sync and never cleared: which sessions wrote a specification
245
+ or implemented a plan, after they ended (`claude --resume <id>` reopens
246
+ one on the machine it ran on). A board made before 0.15.0 gains
247
+ `Session history` at its next sync; one from 0.15 has its `Session` and
248
+ `Sessions` renamed in place, values and views kept (`renamed field
249
+ Session → Working session`). A board per directory, named as
243
250
  `rness status` names its tab, filtered on its `Collection`, its columns
244
251
  that collection's own steps: each collection has its own status field
245
252
  (`ADR status`, `Specs status`, …; a directory without statuses is columned
246
253
  by `Status`, which holds them all for the `All` table). `pulse sync`
247
- remakes a board built by an earlier version (its URL changes once); a `Working` table, filtered on `Agent: working`. A first view named `View 1` (GitHub's default) becomes `All` when no `All` exists, on create and on sync, showing Title, Collection, Status and Session. Options are coloured (statuses by lifecycle: blue proposed, purple approved, yellow in progress, red blocked or rejected, yellow superseded, green done, gray abandoned; collections and `working` too); a sync recolours rness's options and leaves other options' colours alone. rness does
254
+ remakes a board built by an earlier version (its URL changes once); a `Working` table, filtered on `Agent: working`. A first view named `View 1` (GitHub's default) becomes `All` when no `All` exists, on create and on sync, showing Title, Collection, Status and Working session. Options are coloured (statuses by lifecycle: blue proposed, purple approved, yellow in progress, red blocked or rejected, yellow superseded, green done, gray abandoned; collections and `working` too); a sync recolours rness's options and leaves other options' colours alone. rness does
248
255
  not set the project's visibility: the project gets GitHub's default for a
249
256
  new organization project, which is private (`public: false`). Verified
250
257
  with Claude Code 2.1.284 on 2026-09-29.
@@ -262,7 +269,7 @@ in its Settings`.
262
269
  repositories.
263
270
  - **`pulse create`** needs an `org` in `rness.json` (a blank workspace is
264
271
  refused) and no pulse yet. It creates the project and at once writes
265
- `"pulse": { "project": <number> }` (and the `provider`) into `rness.json`,
272
+ `"projects": { "pulse": <number> }` (and the `provider`) into `rness.json`,
266
273
  then adds the fields, options and views, and runs a first sync; its
267
274
  `created` lines say what it added. If a step after the project fails, it
268
275
  exits 1 with the pulse declared, and `rness pulse sync` completes the
@@ -291,6 +298,33 @@ unchanged`.
291
298
  as the team's item. A workflow someone turns on (`Item closed`, `Item
292
299
  added to project`) may change a field of rness's items; the next sync
293
300
  writes it back.
301
+ - **A collection's own project** (0.17.0): `rness pulse create <collection>`
302
+ gives a directory of `.rness/` whose documents carry a status — a tab of
303
+ `rness status` — a project of its own, named after it, declared as
304
+ `"projects": { "pulse": 4, "marketing": 5 }`. Agent Pulse keeps every
305
+ other collection and the `Working` table; the collection's items leave
306
+ it (`deleteProjectV2Item`, their issues untouched) once its project
307
+ holds them. `pulse sync` syncs the collections' projects, then Agent
308
+ Pulse. The project is written from the collection's files, one way:
309
+ - `<collection>/README.md` is its README; its front matter may give
310
+ `description:` (the short description), `statuses:` (the columns, in
311
+ order, each there even when empty), `fields:` (each a name, a `type` —
312
+ `text`, `date`, `select`, `number` — and `from`, the front-matter key
313
+ of the documents that fills it, or a list of keys, the first present
314
+ one winning; a `select` may give `options:`) and `labels:` (`directory`,
315
+ the subdirectory a document sits in, or a front-matter key). A date
316
+ field adds a `Calendar` roadmap; which date it draws is set once in the
317
+ view's settings: GitHub's API does not set it.
318
+ - `<collection>/updates/<date>.md` are its status updates: `health`
319
+ (`on-track`, `at-risk`, `off-track`, `complete` or `inactive`),
320
+ optionally `start_date` and `target_date`, the text below. Each is posted once, in
321
+ the order of the names, and updated when its file changes; a deleted
322
+ file leaves its update.
323
+
324
+ rness adds no field or label of its own to a collection's project, and
325
+ none of this reaches Agent Pulse: a workspace that declares no collection
326
+ keeps its board as 0.16 made it.
327
+
294
328
  - **Hooks**, with `claude` in `agents` and a pulse declared: session start
295
329
  marks the `In progress` plans of the session's scope `Agent: working`, with
296
330
  the session; an edit of a document of `.rness/` marks it — one the agent has just written, with no item yet, gets its issue first
@@ -349,10 +383,12 @@ repository, the board).
349
383
  GitLab host reads as `gitlab`, any other host — or no repository — as
350
384
  `github`. Nothing to change: `pulse create` writes it, and refuses a
351
385
  detected provider this version cannot talk to. The order of keys is
352
- `contract`, `provider`, `org`, `agents`, `pulse`, `repos`, `scopes`.
386
+ `contract`, `provider`, `org`, `agents`, `projects`, `repos`, `scopes`.
387
+ The former `"pulse": { "project": <number> }` still reads, as
388
+ `"projects": { "pulse": <number> }`; both at once are refused.
353
389
  - A provider _written_ in `rness.json` that this version cannot talk to
354
390
  (`gitlab`) is refused by `validate`, `create`, `login` and `pulse`:
355
- `provider "gitlab" is not supported by @rness/cli 0.15.1 (supported:
391
+ `provider "gitlab" is not supported by @rness/cli 0.17.0 (supported:
356
392
  github)`. `add`, `sync` and the local commands never refuse. `null` is not a
357
393
  value: an absent key means none.
358
394
 
@@ -529,6 +565,36 @@ per repository, the files to commit there.
529
565
  Exit codes: 0 success, 1 failure, 2 usage — or a refusal without a TTY.
530
566
  `RNESS_DEBUG=1` adds stack traces; `RNESS_NO_DELEGATE=1` skips the delegation.
531
567
 
568
+ ## 0.17.0 — a collection on its own GitHub Project
569
+
570
+ - `rness pulse create <collection>` gives a collection of `.rness/` a
571
+ project of its own; `rness pulse sync` syncs every declared project. The
572
+ collection's `README.md` gives the project its README, short
573
+ description, columns, fields and labels, and `updates/` its status
574
+ updates. See "Pulse".
575
+ - `rness.json` names the projects in `"projects": { "pulse": 4 }`; the
576
+ former `"pulse": { "project": 4 }` still reads, and is written in the new
577
+ form whenever rness writes the file. A CLI older than 0.17.0 refuses
578
+ `projects`: move the pin first (`rness upgrade`).
579
+ - For the package's API: `Manifest.pulse` is now `Manifest.projects`.
580
+ - A workspace that declares no collection's project sees no change on
581
+ Agent Pulse. Blocks are unchanged.
582
+
583
+ ## 0.16.0 — Working session and Session history; the agent in the history
584
+
585
+ - Agent Pulse's session fields are renamed so that the names say what
586
+ they hold: `Session` becomes `Working session` (the session working on
587
+ a document now) and `Sessions` becomes `Session history` (every session
588
+ that changed it). The first `pulse sync` with 0.16.0 renames them in
589
+ place: values, ids and views stay. Until then, marks use whichever name
590
+ the board has. See "Pulse".
591
+ - `Session history` names each session's agent: `Claude Opus 5.5 ·
592
+ 1e9cb41b-…`. The lifecycle skills now record `{ id, agent }` in
593
+ `sessions:`; a bare id, as 0.15 wrote it, still reads, and shows alone.
594
+ `rness upgrade` rewrites the four skills: commit `.claude/skills/rness/`
595
+ in each repository. See "Agent targets".
596
+ - Blocks are unchanged.
597
+
532
598
  ## 0.15.1 — upgrade names every file to commit
533
599
 
534
600
  - `rness upgrade`'s next steps name every file the new version's sync
package/dist/bin/rness.js CHANGED
@@ -6,7 +6,7 @@ import {
6
6
  findDelegate,
7
7
  reportError,
8
8
  run
9
- } from "../chunk-7IVHL744.js";
9
+ } from "../chunk-X52SHBRY.js";
10
10
 
11
11
  // src/bin/rness.ts
12
12
  import { pathToFileURL } from "url";