You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ROADMAP.md
+67Lines changed: 67 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5302,3 +5302,70 @@ Usage:
5302
5302
**Blocker.** None. Scoped to CLI parser + help text. ~50 lines + test.
5303
5303
5304
5304
**Source.** Jobdori dogfood 2026-04-21 16:59 KST on main HEAD `27ffd75`. Joins **CLI/REPL parity** cluster (§7.1) and **discoverability** cluster (#108 did-you-mean, #127 --json on diagnostic verbs, #139 worker concept unactionable). Session tally: ROADMAP #141.
5305
+
5306
+
## Pinpoint #142. `claw init --output-format json` dumps human text into `message` — no structured fields for created/skipped files
5307
+
5308
+
**Gap.** `claw init --output-format json` emits a valid JSON envelope, but the payload is entirely a human-formatted multi-line text block packed into `message`. There are no structured fields to tell a claw script which files were created, which were skipped, or what the project path was.
5309
+
5310
+
**Verified on main HEAD `21b377d` 2026-04-21 17:34 KST.**
1. **Substring matching required**: to tell whether `.claw/` was created vs skipped, a claw has to grep the `message` string for `"created"` or `"skipped (already exists)"`. Not a contract — human-language fragility.
5342
+
2. **No programmatic idempotency signal**: CI/orchestration cannot easily tell "first run produced new files" from "second run was no-op". Both paths end up with `kind: init` and a free-form message.
5343
+
3. **Inconsistent with `status`/`sandbox`/`doctor`**: those subcommands have first-class structured JSON. `init` does not. Product contract asymmetry.
5344
+
4. **Path isn't a field**: the project path is embedded in the same string. No `project_path` key.
5345
+
5. **Joins JSON-output cluster** (#90, #91, #92, #127, #130, #136): every one of those was a JSON contract shortfall where the command technically emitted JSON but did not emit *useful* JSON.
5346
+
5347
+
**Fix shape (~40 lines).**
5348
+
Add structured fields alongside `message` (keep `message` for backward compat):
0 commit comments