@misterhuydo/cairn-mcp 1.30.0 → 1.31.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 +26 -0
- package/dist/cairn-cli.js +59 -59
- package/dist/index.js +65 -65
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -225,6 +225,32 @@ invisible:
|
|
|
225
225
|
instead of "go and find it". A link that cannot be resolved is dropped rather than
|
|
226
226
|
emitted dead.
|
|
227
227
|
|
|
228
|
+
The two halves answer different questions and deliberately disagree. The reader half
|
|
229
|
+
hides shipped and abandoned work so what is *next* leads. The JSON half publishes the
|
|
230
|
+
plan **complete** — `done` and `stale` phases stay in `phases` with their real status,
|
|
231
|
+
because a consumer that cannot see finished work will confidently render an incomplete
|
|
232
|
+
plan. A shipped phase also carries `shipped` (the date) and `commit` (short HEAD when it
|
|
233
|
+
was marked done), which is what turns "this was done" into something you can point an
|
|
234
|
+
agent at when you are tracing a bug back to where it came from. Phases from *superseded*
|
|
235
|
+
plans, whose numbers a later plan reclaimed, move to a separate `shipped_phases` array —
|
|
236
|
+
identity and provenance only, no `detail`, so a long-lived repo's history cannot bloat
|
|
237
|
+
the file. That key is always present; its absence means the file predates this.
|
|
238
|
+
|
|
239
|
+
Three rules the format leaves implicit, each of which has cost a consumer real time:
|
|
240
|
+
|
|
241
|
+
- **The `roadmap-json` block is terminated by a fence at the start of a line.** Match it
|
|
242
|
+
that way, not with a naive non-greedy `` ``` ``. This is safe by construction: a
|
|
243
|
+
newline inside a JSON string is escaped, so an embedded fence can never begin a line
|
|
244
|
+
and only the real terminator can.
|
|
245
|
+
- **`detail` may itself contain fenced code**, which is exactly why the rule above
|
|
246
|
+
matters. A consumer that ends the block at the first `` ``` `` it meets can end it
|
|
247
|
+
*inside* a JSON string and spill ~125KB of machine data onto the page as prose.
|
|
248
|
+
- **`cursor` may name a slice, not a top-level phase.** It is the exact focus. To mark
|
|
249
|
+
one phase current, use `cursor_phase`, which is always the top-level ancestor and
|
|
250
|
+
always resolves in `phases`; `cursor_path` is the root-to-focus chain for breadcrumbs.
|
|
251
|
+
All three are `null` when nothing is active, so "nothing is in progress" is never
|
|
252
|
+
ambiguous with a broken pointer.
|
|
253
|
+
|
|
228
254
|
The first line is the marker that says who generated the file and when
|
|
229
255
|
(`<!-- slot:roadmap format=roadmap/1 provider=cairn generated=… -->`). cairn declares
|
|
230
256
|
the slot in its MCP entry in `~/.claude.json`, so a cockpit does not have to guess.
|