recursive-board 0.2.0 → 0.3.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "recursive-board",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
5
  "description": "wi: the CLI that owns every write into a Recursive Board vault",
6
6
  "author": "vic-cio",
@@ -53,43 +53,103 @@ its file in the work-item folder (`Boards/` by default). Read the file.
53
53
  ## Writing
54
54
 
55
55
  ```bash
56
- wi new "<title>" --parent <ref> [--status backlog] [--priority <n>] # 1 is the highest
56
+ wi new "<title>" --parent <ref> --objective <text> --context <text> --criteria <text> --criteria <text>
57
+ [--status backlog] [--priority <n>] # 1 is the highest
57
58
  wi status <ref> <backlog|options|doing|done>
59
+ wi note <ref> "<result>" [--agent <name>] # one dated line under Notes
60
+ wi area <ref> # mark a card as an area
61
+ wi area <ref> --off # remove the area mark
58
62
  wi claim <ref> --agent <name> # assign and move to doing in one write
59
63
  wi release <ref> --reason <text> [--where <branch-or-path>]
60
64
  wi move <ref> --to <new parent ref>
61
65
  wi archive <ref> # --undo reverses it
66
+ wi promote <ref> # render this item's children as a board
67
+ wi demote <ref> # render this item's children as a checklist
62
68
  wi rm <ref> --recursive --dry-run # read what it lists, then run it without --dry-run
63
69
  ```
64
70
 
65
- - Write a new title as an imperative phrase. It becomes the filename, so make it unique.
66
- - `wi new` writes the frontmatter and the template sections. Fill the body sections with a file
67
- edit afterwards. Leave the frontmatter to `wi`.
71
+ In Obsidian, use **Promote** at the top of any child card to give it its own board, even before it has children. The child-count line at the top of a note jumps to its checklist below the body.
72
+
73
+ - Write a new title as an imperative phrase that names its subject ("Price the demolition lines
74
+ for 35b", not "Price demolition"). It becomes the filename. `wi` turns unsafe characters into
75
+ hyphens and adds the id to a clashing filename, and says so.
76
+ - Give every new card its brief in the `wi new` command: one `--objective`, a `--context` per
77
+ source or fact, a `--criteria` per checkable result. `wi` warns when the brief is missing.
78
+ - Record progress with `wi note`. It locks the card, so a dispatcher and its worker can write
79
+ at the same moment. Leave the frontmatter to `wi`.
80
+ - The first child a card gets turns the card into a board, unless the vault sets
81
+ `autoPromote: false`.
68
82
  - To untick a done item, set it back to its `prev_status`.
83
+ - `wi area <ref>` marks the item as an area and keeps its status. It removes `prev_status` and refuses a card with an agent. Convert it back with `wi area <ref> --off`; its status stays the same.
69
84
  - A dispatcher claims cards from options for its workers. `wi claim` refuses a card claimed by a
70
- different agent, a done card, or a board with a child in doing. A repeat by the same agent in
71
- doing writes nothing.
85
+ different agent, a done card, a `blocked: true` card, or a board with a child in doing that
86
+ someone else works. `wi children` marks a blocked card `[blocked]`. One
87
+ agent can hold a card and its current subtask. A repeat by the same agent in doing writes nothing.
88
+ - `wi status <ref> done` says when that was the parent's last open child. Check the parent's own
89
+ criteria, then close it.
90
+ - Before starting a worker, a dispatcher runs `wi agents`. It counts agents, not cards, and lists
91
+ each agent's doing cards. The dispatcher holds off when `activeAgents` reaches `maxAgents`;
92
+ `null` means no limit is set. `WI_MAX_AGENTS` overrides the vault setting for one run. This
93
+ limit is advisory: `wi claim` does not enforce it.
94
+ - A dispatcher records each event on the card (start, finish, retry, stop) with
95
+ `wi note <card> "<event>" --agent <its name>`.
72
96
  - When a worker stops, its dispatcher runs `wi release` with a reason and, when available, the
73
97
  branch or worktree path. Release clears the agent, returns the card to options, and records the
74
98
  continuation location in Notes.
99
+ - If the vault sets `areaTags`, `wi` keeps an `area/...` tag on each card. Leave it to `wi`. After
100
+ `wi move` or `wi area`, run `wi retag`.
75
101
  - Run `wi validate` after a batch of writes. Exit 0 is clean. Exit 1 lists what broke.
76
102
 
103
+ ## Writing a card
104
+
105
+ A card has one deliverable. When a card names more than one, give each deliverable its own child
106
+ card with `wi new "<title>" --parent <card>` and its own brief. Do this when you write the card, or before you or a
107
+ worker start it. The children are the todo list: move each child to done when it is finished. The
108
+ parent is done when every child is done. A worker reads its card's open children as its scope, so
109
+ the board shows what is still open.
110
+
111
+ ## Working under a dispatcher
112
+
113
+ A worker is an agent that a dispatcher (a script or another agent) started on one card. The owner
114
+ follows the work on the board, so the board is the live record of what each worker does now. Use
115
+ your own agent name everywhere `<me>` appears.
116
+
117
+ 1. Claim the card: `wi claim <card> --agent <me>`. Read its body and its open children.
118
+ 2. Split it before you start when it holds more than one deliverable. Make each step a child with
119
+ a full brief: `wi new "<title>" --parent <card> --objective ... --criteria ...`. Set
120
+ `--priority` when the order matters.
121
+ 3. Work one child at a time, live:
122
+ 1. `wi claim <child> --agent <me>` before its work starts.
123
+ 2. Do the work.
124
+ 3. `wi note <child> "<result, and where it is>"`.
125
+ 4. `wi status <child> done`.
126
+ 4. Note a decision or a blocker on the card as it happens, with `wi note`.
127
+ 5. When the card's criteria are met, note the result and run `wi status <card> done`. When you
128
+ cannot go on, run `wi release <card> --reason <why> --where <location>`.
129
+ 6. Run `wi validate`.
130
+
131
+ The board is the log of the work, not a report written after it. Each claim comes before its
132
+ work, so a card sits in doing for as long as its work takes.
133
+
77
134
  ## Working a card
78
135
 
79
136
  For `/recursive-board <card> <instruction>`, use the instruction to clarify the request and the
80
- card's Objective, Context and Acceptance Criteria as the brief:
137
+ card's Objective, Context and Acceptance Criteria as the brief. These steps are for a session with
138
+ its owner present. In a Git repo, steps 3 to 5 use a branch; elsewhere, record where the result
139
+ is.
81
140
 
82
141
  1. Resolve the vault and board from the repo map (`wi here`). If the repo has no entry, ask once
83
142
  which board to use, then record it with `wi here --board <board> --vault <vault>`.
84
143
  2. Read the card body. If Objective or Acceptance Criteria is missing, write a proposed brief in
85
144
  the card and ask for approval; wait before doing the work.
86
- 3. Claim it with `wi claim <card> --agent <agent name>`. Work in the current repo on a new
87
- `card/<slug>` branch. Run the repo's tests and commit the result.
145
+ 3. Claim it with `wi claim <card> --agent <agent name>`. In a Git repo, work on a new
146
+ `card/<slug>` branch, run the repo's tests and commit the result. Track subtasks as in
147
+ "Working under a dispatcher", step 3.
88
148
  4. If the work is too large or cannot finish, stop with a split proposal or continuation note in
89
149
  your report, then run `wi release <card> --reason <reason> --where <branch-or-path>`. Let the
90
150
  dispatcher decide whether to create child cards.
91
- 5. When finished, add one dated line under the card's Notes with the branch and result. Leave the
92
- card in `doing` and stop for review. Do not merge or push; those wait for the owner's verdict.
151
+ 5. When finished, run `wi note <card> "<result, and its branch or location>"`. Leave the card in
152
+ `doing` and stop for review. Merge, push and publish wait for the owner's verdict.
93
153
 
94
154
  ## Outcomes
95
155