Files
echo-core/tasks/spike-planning-findings.md
Marius Mutu b95395ec2c chore: scheduler runtime state + spike findings
- cron/jobs.json: heartbeat last_run / next_run actualizat de scheduler-ul live
- tasks/spike-planning-findings.md: validare empirică Spike Step 0 pentru
  planning agent subprocess (claude -p + skills gstack + --resume round-trip)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-26 18:17:53 +00:00

62 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Spike Step 0 — Planning Subprocess Feasibility
**Date:** 2026-04-26
**Plan:** `/home/moltbot/.claude/plans/home-moltbot-claude-plans-vreau-ca-come-snoopy-spark.md`
**Verdict:****PASS** — proceed with W1 + W2 + W3 as planned
---
## Pass criteria check
| # | Criteriu plan | Rezultat | Detalii |
|---|---------------|----------|---------|
| 1 | Subprocess termină în <60s/turn | | 49s pentru turn cu prompt simplu, 82s pentru resume. |
| 2 | Output text readable (AskUserQuestion text) | | Skill-ul detectează `-p` mode și serializează întrebarea în `result` text natural, NU blochează cu tool. |
| 3 | Session ID returnat și reusabil cu `--resume` | | Confirmat round-trip; context preservat între turn-uri. |
| 4 | Artifact pe disk apare în locația așteptată | N/A pentru spike | Artifactul se creează la sfârșitul fazei (multi-turn). Spike-ul a verificat doar primele 2 turn-uri; comportamentul de la sfârșit rămâne de validat în W2 implementation. |
---
## Test runs (raw)
| Run | Prompt | --max-turns | Result | Cost | Notes |
|-----|--------|-------------|--------|------|-------|
| 1 | `/office-hours Vreau sa adaug filtru genuri pe game-library` | 1 | `error_max_turns` (stop=tool_use) | $0.56 | Skill a iterat tool_use; nu a apucat termine. |
| 2 | (același) | 8 | `error_max_turns` (stop=tool_use, num_turns=9) | $0.68 | Skill a făcut deep context-gathering (Bash×N pentru git log/grep) fără a ajunge la întrebare în turn budget. |
| 3 | `/office-hours Test feasibility minimal` | 5 | `completed` (end_turn) în 49s | $0.55 | Skill a detectat ambiguitate, a output-at întrebarea ca **text** în `result`, exit clean. |
| 4 | `--resume 175bb0c3...` cu reply substantive | 6 | `completed` (end_turn) în 82s | $1.11 | Skill a continuat natural, a output structured premises + clarification questions. |
---
## Concluzii cheie
### Validate
- **Pattern subprocess funcționează**: Echo poate `claude -p '/skill'` + `claude --resume <id> -p '<user reply>'` într-un loop cu user-in-the-loop.
- **AskUserQuestion convertit la text**: skill-ul gstack detectează single-shot mode și serializează întrebările în output text. Eng review's concern (#1, #2) **refutat empiric**.
- **Multi-language support**: skill răspunde în limba prompt-ului (ro detectat corect).
### Cavetate și ajustări față de plan
- **Turn budget critical**: prompts complexe (cu context concret de proiect) declanșează deep tool-use chains (read CLAUDE.md, grep, git log etc.) și pot eșua cu max-turns mic.
- **Recomandare W2**: `--max-turns 15-20` per invocare; detect `terminal_reason != "completed"` fallback strategy (retry cu mesaj mai concis, sau abort cu mesaj util către user).
- **Cost per turn**: $0.5-1.1 pe runde Opus 4.7 1M context. Pentru full planning (4 faze × ~5 runde = 20 turns) ar putea fi $10-22 per proiect. Marius pe subscription deci e doar rate-limit pressure, nu USD direct.
- **Recomandare W2**: monitoring rate limits; instrumentation usage `total_cost_usd` aggregat per planning session.
- **Hot-restart limitation acceptat**: dacă echo-core restart mid-planning, sesiunea Claude rămâne pe disk (resume funcționează), DAR child subprocess (dacă e long-running) se pierde. Re-resume e necesar la repornire.
### Riscuri rămase pentru W2
1. **Skills înlănțuite** (ex: `/plan-ceo-review` urmat de `/plan-eng-review` în sesiuni separate, citind disk artifacts) netestat în spike. Risc mediu știm skill-uri individuale merg.
2. **`--add-dir` cu paths multiple** pentru a expune ~/workspace/<slug> + ~/.gstack/projects/ + ~/.claude/skills/ — netestat. Risc mic, doar configurație.
3. **Stream-json input pentru pipe stdin response** — netestat; alternativa naivă (concat în prompt) merge.
---
## Decision
**Proceed with W1 → W2 → W3 sequence per plan.** Spike-ul confirmă fezabilitatea fundamentală a Partea C. Riscurile rămase sunt incrementale, nu blocaj arhitectural.
W2 trebuie să implementeze:
- `PlanningOrchestrator` cu `--max-turns 20` default și retry strategy pe `error_max_turns`
- Telemetry pe `total_cost_usd` în `result` JSON pentru rate limit monitoring
- Re-resume logic la restart echo-core (citește `sessions/planning.json`, continuă cu `--resume <stored_id>`)
**Total cost spike**: ~$2.88 (subscription rate-limit consumption, nu USD direct).