mirror of
https://github.com/ultraworkers/claw-code.git
synced 2026-04-24 13:08:11 +08:00
roadmap: Phase 0 locked as 'JSON emission baseline stabilization' (cycle #88)
Per gaebal-gajae framing: Phase 0 addresses EMISSION (stream routing + exit code + no-silent guarantee), not SHAPE (which moves to Phase 1). Phase 0 subtasks (1.25 days total): 1. Stream routing fix — bootstrap/dump-manifests/state stderr → stdout for JSON 2. No-silent guarantee — CI asserts every verb emits valid JSON or exits non-zero 3. Per-verb emission inventory — authoritative catalog artifact 4. CI parity test — prevent regressions Phase 1 now owns shape normalization (list-sessions 'command' → 'kind'). Phase 0 owns emission stability; Phase 1 owns shape consistency; Phase 2+ handles envelope wrapping. #168b formally closed as INVALID (cycle #84 misread; stderr output routing is real issue, now tracked as #168c). Revised pinpoint accounting: - Filed: 60 (audit trail includes #168b as invalid) - Genuinely-open: 52 - Phase 0 active: #168c + emission CI - Phase 1 active: #168a
This commit is contained in:
parent
cd6e1cea6f
commit
3311266b59
56
ROADMAP.md
56
ROADMAP.md
@ -9667,3 +9667,59 @@ missing Anthropic credentials; export ANTHROPIC_AUTH_TOKEN...
|
||||
|
||||
**Total Phase 0 effort:** ~1.5 days (reduced from "unclear" to concrete work).
|
||||
|
||||
|
||||
---
|
||||
|
||||
## Program: JSON Productization — Phase 0 Final Framing (Cycle #88)
|
||||
|
||||
**Lock:** "Phase 0 = JSON emission baseline stabilization" (per gaebal-gajae review, cycle #88).
|
||||
|
||||
**Why this framing beats previous versions:**
|
||||
|
||||
- "Fix bootstrap silent failure" ❌ — anchored to refuted claim (#168b)
|
||||
- "Controlled JSON baseline audit + minimum invariant normalization" — accurate but vague on WHAT is being normalized
|
||||
- **"JSON emission baseline stabilization"** ✅ — names the axis: emission (what goes out, where, when)
|
||||
|
||||
**Phase 0 = stabilize emission before designing shape.**
|
||||
|
||||
### Phase 0 Subtasks (Locked Ordering)
|
||||
|
||||
Before any shape-level work, answer: **"What does each verb emit, to which stream, with which exit code?"**
|
||||
|
||||
| # | Task | Addresses | Effort |
|
||||
|---|---|---|---|
|
||||
| 1 | **Stream routing fix** — `bootstrap`/`dump-manifests`/`state` emit JSON to stdout (not stderr) under `--output-format json` | #168c | 0.5 day |
|
||||
| 2 | **No-silent guarantee** — Every verb under `--output-format json` emits valid JSON to stdout OR exits non-zero. No silent-success cases permitted. Assert via CI. | General contract | 0.25 day |
|
||||
| 3 | **Per-verb emission inventory** — Produce authoritative catalog: verb → (stdout bytes, stderr bytes, exit code, keys). Lock as baseline. | Reference artifact | 0.25 day |
|
||||
| 4 | **CI parity test** — Prevent regressions. Any new verb must conform to emission baseline. | Regression prevention | 0.25 day |
|
||||
|
||||
**Phase 0 output (deliverables):**
|
||||
- Clean emission baseline across 16 verbs
|
||||
- `SCHEMAS.md` § "v1.5 Emission Baseline" with inventory
|
||||
- CI test `test_emission_baseline.rs` (or equivalent)
|
||||
- #168c closed, #168b formally invalid
|
||||
|
||||
**Phase 0 does NOT include:**
|
||||
- Shape normalization (moved to Phase 1) — that's where `list-sessions` `command` → `kind` goes
|
||||
- Envelope wrapping (Phase 2)
|
||||
- Default version bump (Phase 3)
|
||||
|
||||
**Rationale for separation:** Shape work requires a stable emission baseline. Can't normalize shapes until we know which verbs even emit to which stream. Phase 0 stabilizes the ground; Phase 1 renovates the building.
|
||||
|
||||
### #168b — Formally Closed as INVALID
|
||||
|
||||
**Original claim (cycle #84):** `claw bootstrap hello --output-format json` produces no output with exit 0.
|
||||
|
||||
**Refutation evidence (cycle #87 controlled matrix):** Exit 1, stderr 483 bytes, stdout 0 bytes. Not silent; misrouted.
|
||||
|
||||
**Reframed under #168c:** Real issue is stderr routing, not silent emission.
|
||||
|
||||
**Marked:** INVALID. Retained in ROADMAP for audit trail; not counted in open pinpoint total.
|
||||
|
||||
### Revised Pinpoint Accounting
|
||||
|
||||
- Filed total: 60 (was 58; +2 from #168a/#168c split; #168b retained as invalid audit record)
|
||||
- Genuinely-open: 52 (#168a, #168c active; #168b closed invalid; others unchanged)
|
||||
- Phase 0 active targets: #168c (primary), emission CI (general)
|
||||
- Phase 1 active targets: #168a (shape normalization)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user