Files
waggle-os/docs/briefs/2026-04-21-cc-sprint-10-tasks.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

283 lines
14 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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.
# CC Sprint 10 — Task Brief
**Datum:** 2026-04-21
**Preceded by:** Sprint 9 final briefing (`sessions/2026-04-21-sprint-9-final-briefing.md`) · Stage 0 final close-out (`sessions/2026-04-21-stage-0-final-close-out.md`)
**Scope LOCKED memory:** `.auto-memory/project_sprint_10_scope_locked.md`
**Wall-clock ceiling:** 1216 dana
**Cost ceiling:** $140 hard stop (Sprint 10 total, across svih tasks)
---
## 0. Šta se menja u odnosu na Sprint 9
Sprint 9 se završio sa jednim klinički čistim rezultatom (10/10 Opus calibration) i jednim operativnim dugom od tri stavke. Sprint 10 ne širi scope narativno — namerno NE ulazi u landing copy, brand narrative, ili launch assets pre LoCoMo gate-a. Umesto toga, **zatvara ceo operativni queue** da Stage 2 LoCoMo full-run može krenuti bez ijedne produkcione nepoznate.
Četiri paralelne vektorske linije — svaka sa jasnim acceptance kriterijumom, svaka nezavisno od ostalih commit-able.
---
## 1. Vector 1 — Operativni queue (Sprint 9 §5.2 + §3.2, full-resolve)
### Task 1.1 — Qwen3.6 thinking-mode stability matrix
**Spec referenca:** `waggle-os/docs/plans/STAGE-2-PREP-BACKLOG.md` (commit `813a4eb`)
**Budget:** $5 hard ceiling
**Effort estimate:** 46h
**Šta radi:** Izvršava 2 × 4 × 5 test matrix (thinking on/off × max_tokens {8K, 16K, 32K, 64K} × prompt shape {direct, multi-anchor, chain-of-anchor, temporal-scope, null-result-tolerant}). Svaku ćeliju klasifikuje kao: `converged` / `loop` / `truncated` / `empty-reasoning-only`.
**Deliverable:**
- CSV heat-map: `waggle-os/benchmarks/harness/data/qwen-stability-matrix-2026-04-XX.csv`
- Markdown summary: `waggle-os/docs/reports/qwen-thinking-stability-2026-04-XX.md`
- Explicit flag lista "Stage-2-unsafe cells" sa obrazloženjem za svaku ne-converged ćeliju.
**Acceptance:**
- Sve 40 ćelija izvršene, zero empty cells.
- Svaka ćelija klasifikovana u jedan od četiri outcome bucket-a.
- Safety matrica: koje (thinking, max_tokens) kombinacije su pouzdane za Stage 2 LoCoMo scale.
- Spend ≤ $5.
**Exit criterion:** ako bilo koja od (thinking-off, max_tokens ≥ 16K) konfiguracija konvergira 100% across svih 5 prompt shapes — Stage 2 primary config LOCKED na taj config; ako ne, eskalira u PM za re-scoping.
---
### Task 1.2 — Sonnet route repair
**Budget:** $0 (config edit + regression)
**Effort estimate:** 30min
**Šta radi:** `litellm-config.yaml` alias `claude-sonnet-4-6` trenutno pokazuje na decommissioned `claude-sonnet-4-6-20250514`. Repair: mapirati na trenutno živi Sonnet slug (verifikuj na `https://docs.anthropic.com/en/docs/about-claude/models/overview`). Ako nema direktnog zamenika, PR sa privremenim promote-om na `claude-opus-4-7` i dokumentovana migraciona nota u `waggle-os/ops/litellm/README.md`.
**Acceptance:**
- `litellm-config.yaml` izmenjen, regression test na judge-client `invokeJudge({ model: "claude-sonnet-4-6", ... })` prolazi bez `model_not_found` greške.
- PR sa commit message referencirajući ovaj brief.
- Marko ratifikuje mapping pre merge-a (PM review gate).
---
### Task 1.3 — Sonnet calibration re-run posle Task 1.2
**Depends on:** Task 1.2 CLOSED.
**Budget:** $0.50 (10 calibration pairs × Opus baseline + Sonnet diff)
**Effort estimate:** 1h
**Šta radi:** Izvršava Task 4 calibration re-run (istih 10 ground-truth triples iz `f9b98aa` calibration artifact) na Sonnet ruti. Rezultat upisuje u isti calibration artifact format.
**Acceptance:**
- Calibration match rate zabeležen (očekivano 810/10 na osnovu Haiku 5/10 + Opus 10/10 tier pozicioniranja).
- Ako Sonnet ≥ 9/10 → Sonnet postaje Stage 2 primary default (brief konfiguraciju).
- Ako Sonnet 78/10 borderline → **triggeruj Task 5 Fleiss' kappa ensemble** (Sprint 9 brief conditional) na ensemble MULTI-VENDOR iz Vector 2, ne Claude-only.
- Ako Sonnet < 7/10 → stick with Opus, flag za PM review.
---
### Task 1.4 — DashScope provisioning (paralelni track)
**Budget:** $0 (account provisioning)
**Effort estimate:** Marko-side account work + CC-side config (30min CC effort kad key stigne)
**Šta radi:** DashScope direct key provisioning za `qwen3.6-35b-a3b` canonical slug (LiteLLM upstream). OpenRouter route ostaje bridge/failover.
**Acceptance:**
- `litellm-config.yaml` sadrži oba route-a: `qwen3.6-35b-a3b` (DashScope direct) + `qwen3.6-35b-a3b-via-openrouter` (bridge).
- Failover policy dokumentovan: DashScope primary, OpenRouter retry-on-rate-limit fallback.
- Regression test pokriva oba route-a sa istim probe prompt-om i pokazuje byte-equivalent inference output.
**Napomena:** Ovaj task ne blokira Stage 2 kickoff. OpenRouter route je dovoljan za 200+ Qwen calls per 4-cell batch. DashScope je on-prem parity hedge, ne critical path.
---
### Task 1.5 — Harvest Claude artifacts adapter (hive-mind)
**Spec referenca:** `hive-mind/BACKLOG.md` (commit `b3348fb`) — tri source-path opcije u priority order
**Budget:** $0 (adapter development + regression, no paid inference)
**Effort estimate:** 610h
**Šta radi:** Implementira Opcija 1 (current export bundles artifacts dir) kao primary. Opcija 2 (Claude.ai API listing) i Opcija 3 (Computer Use scraping) ostaju kao backlog hedge ako Opcija 1 pokaže gap-ove.
**Deliverable:**
- `hive-mind/packages/cli/src/commands/harvest-claude-artifacts.ts` (nova datoteka)
- UniversalImportItem sa `type: "artifact"`, `parent_conversation_id`, inherited timestamp
- Regression tests: 2 scenario-level cases (artifact sa valid parent, artifact bez parent fallback)
**Acceptance:**
- Re-harvest Marko personal corpus na fresh export bundle (Marko daje): artifacts se pojavljuju kao frames sa type-annotation.
- Dogfood probe: frame 421 (januar 2026) i njeni artifacts (MASTER_PLAN_REVIZIJE.md + drugi) svi accessibil u chat-text substrate.
- Zero regresija na postojeće 305 tests.
- tsc clean.
**Non-goal:** Ovaj task NE pokriva LoCoMo (LoCoMo je chat-text-only by construction). Adapter služi za buduće dogfood cikluse na real korpus, i za launch narrative o completeness-u substrate layer-a.
---
## 2. Vector 2 — Multi-vendor ensemble setup LOCKED
### Zašto NE Claude-only trio (rejection rationale u memoriji)
Predlog "Sonnet + Opus + Haiku" kao tri-judge ensemble je **eksplicitno odbijen**. Razlog:
> Tri modela iz iste organizacije, iste training distribucije, deljenih bias-a ne čine legitimni inter-rater agreement. Fleiss' kappa na toj konfiguraciji meri unutar-Claude konzistenciju, ne independent judgment agreement. Defensibility claim koji se oslanja na tu statistiku rizikuje trivijalnu kritiku "sva tri su Claude" od bilo kog spoljnog reviewer-a — akademskog ili komercijalnog.
Referenca: `.auto-memory/project_sprint_10_scope_locked.md`
### Task 2.1 — Tri-vendor API integracije
**Budget:** $5 (integration probe + smoke tests across sva tri)
**Effort estimate:** 68h
**Vendori (latest frontier per vendor — namerno biran):**
1. **Anthropic Opus 4.7** — već integrisan (Sprint 9 Task 4 production)
2. **OpenAI GPT-5.4** — nova integracija (latest, ne GPT-5 baseline)
3. **Google Gemini 3.1** — nova integracija (latest, ne Gemini 3 Pro baseline)
**Napomena:** Ako bilo koji od tri latest model-a nije provisionable kroz OpenAI/Google API-je u trenutku Task 2.1 kickoff-a (npr. waitlist, regionalne restrikcije, pricing nepotvrđen), CC dokumentuje blocker + predloži najbliži available tier u fallback listi. PM ratifikuje fallback pre nastavka — ne unilateralno padati na stariji tier.
**Šta radi:**
- LiteLLM config: tri route-a sa provider-specific parameter normalizacijom (temperature, max_tokens, reasoning_effort, structured output schema per vendor).
- Judge-client (packages/harness ili gde je trenutno) proširen sa vendor-agnostic `invokeJudge()` koji normalizuje prompt, parsuje response, i nosi vendor-specific retry policy.
- Failure handling: vendor A timeout ne blokira vendor B/C; aggregator sakuplja N-of-3 where N ≥ 2 je operable ensemble.
**Deliverable:**
- Updated `litellm-config.yaml` sa svim tri route-a
- `invokeJudgeEnsemble()` metoda sa policy "minimum 2-of-3 required, fail-open on 3rd vendor"
- Smoke test suite: 5 ground-truth triples × 3 vendora = 15 invocations, verdict logging, cost logging
- `docs/reports/multi-vendor-ensemble-baseline-2026-04-XX.md` — per-vendor match rate vs PM ground truth
**Acceptance:**
- Sva tri vendora vraćaju parsable verdict sa istog prompt shape-a.
- Per-vendor match rate zabeležen. Očekivano: Opus 10/10 (iz Sprint 9), GPT-5.4 ~8-10/10, Gemini 3.1 ~7-10/10.
- Ensemble Fleiss' kappa izračunat na 10 triples minimum pre pravog Stage 2 run-a.
---
### Task 2.2 — Fleiss' kappa ensemble baseline
**Depends on:** Task 2.1 CLOSED.
**Budget:** $3
**Effort estimate:** 2h
**Šta radi:** Na 15 ground-truth triples (10 iz Sprint 9 calibration + 5 novih koje PM sastavlja za pokrivenost multi-category), izvršava full ensemble i računa Fleiss' kappa.
**Pre-registered interpretation bands:**
- κ ≥ 0.80 → **strong agreement** — ensemble ready for Stage 2 full-run, ensemble verdict primary
- 0.60 ≤ κ < 0.80 → **substantial agreement** — ensemble ready, ali dodaje tie-breaker policy dokumentovana
- 0.40 ≤ κ < 0.60 → **moderate** — flagged za PM review pre Stage 2 kickoff-a
- κ < 0.40 → **fair ili worse** → go/no-go review; scope pivot ka single-judge Opus + rubric refinement
**Deliverable:**
- `docs/reports/multi-vendor-kappa-baseline-2026-04-XX.md` sa per-pair kappa (A-B, A-C, B-C), aggregate Fleiss' kappa, interpretation band, i recommended Stage 2 policy.
**Acceptance:**
- Kappa izračunat, interpretation band pristiman, preporuka za Stage 2 jasna.
- PM review gate pre Stage 2 kickoff-a ako band je "moderate" ili niže.
---
## 3. Vector 3 — Launch prep SPLIT (narrative-agnostic only)
**Ovaj vector NE ide kroz ovog CC. Ide paralelno kroz posebnu CC sesiju koju PM (Claude Opus 4.7 u Cowork mode) koordiniše.**
Reason za split: ovaj brief je za CC koji drži tehnički execution i nema kontekst za brand voice, persona, i visual identity rad. Launch prep koji NE zavisi od LoCoMo rezultata pokriva:
- Persona research deep dives (nastavak `project_persona_research_scope.md`, 10 persona)
- Brand asset inventory (audit apps/www/public/brand + konsolidacija)
- Visual identity konsolidacija (extend Hive DS sa honeycomb motif, review globals.css tokens)
- Stripe/billing polish (ne-funkcionalni copy polish, legal review hooks)
- Legal/licensing prep (Apache 2.0 compliance audit hive-mind)
- i18n policy finalizacija (`feedback_i18n_landing_policy.md` — engleski first, locale-ready infra)
**Eksplicitno DEFEROVANO u Sprint 11:**
- Landing copy (zavisi od LoCoMo brojke)
- Brand narrative sync (zavisi od LoCoMo brojke)
---
## 4. Vector 4 — Harvest artifacts adapter
Pokriveno u Task 1.5 (Vector 1). Reprized ovde kao paralelna linija jer je CC može započeti bez čekanja Vector 1.11.4.
---
## 5. Pre-registered LoCoMo acceptance thresholds (informativna sekcija, CC ne mora da ih implementira, ali mora da ih poštuje u agregator output-u)
Pre Stage 2 full-run, Stage 2 aggregator mora emitovati eksplicitni banner na osnovu finalnog LoCoMo score-a:
| Score | Banner | Consequence |
|---|---|---|
| **≥ 91.6%** | `NEW_SOTA` | Full launch narrative (Opus-class multiplier claim) |
| **85.091.5%** | `SOTA_IN_LOCAL_FIRST` | Narrower launch framing (sovereignty vs cloud-revenue positioning) |
| **< 85.0%** | `GO_NOGO_REVIEW` | Auto-halt, kompletna scope reklasifikacija sa PM pre bilo kakve javne komunikacije |
Banner ulazi u agregator markdown report `##` header. NEMA post-hoc narrative shifting. Ako rezultat padne ispod 91.6% — threshold bands se NE pomeraju. Workflow Reality Check anti-pattern #4 je na snazi.
---
## 6. Sequencing i zavisnosti
```
Task 1.1 (Qwen stability) ─────┐
Task 1.2 (Sonnet route) → Task 1.3 (Sonnet calibration) ─┐
Task 1.4 (DashScope) ───────────┤ ├→ Gate: Stage 2 kickoff ready
Task 1.5 (Artifacts adapter) ────┤ │
Task 2.1 (Tri-vendor setup) → Task 2.2 (Kappa baseline) ──┘
```
Task 1.1, 1.4, 1.5, 2.1 mogu krenuti paralelno dan-1. 1.2 → 1.3 je sekvencijalno. 2.2 zavisi od 2.1.
**Stage 2 kickoff gate:** sve od 1.1, 1.3, 2.2 mora biti CLOSED sa acceptance band na ili iznad minimuma (1.1 → bar jedna safe config; 1.3 → bar 7/10; 2.2 → bar moderate kappa).
---
## 7. Cost ceiling i governance
| Task | Budget | Running total |
|---|---|---|
| 1.1 | $5 | $5 |
| 1.2 | $0 | $5 |
| 1.3 | $0.50 | $5.50 |
| 1.4 | $0 (Marko provisioning) | $5.50 |
| 1.5 | $0 | $5.50 |
| 2.1 | $5 | $10.50 |
| 2.2 | $3 | $13.50 |
| **Stage 2 projected (not Sprint 10 scope, informativno)** | $90130 | — |
**Sprint 10 hard stop: $15 across svih tasks.** Ako task prelazi budget, HARD STOP, PM review pre nastavka.
**Stage 2 projekcija ($90130) je van Sprint 10 ceiling-a.** Kickoff Stage 2 full-run ide kao zaseban PM go-ahead nakon Sprint 10 close-a.
---
## 8. Reporting cadence
- **Dan-1 EOD:** kratka update nota u `sessions/2026-04-22-sprint-10-day-1-status.md` — koje task-ove si pokrenuo, koji commit-i su prošli.
- **Mid-sprint:** kada je 3 task-a CLOSED — update nota + preliminary findings.
- **Sprint 10 close:** `sessions/2026-04-XX-sprint-10-final-briefing.md` po istom template-u kao Sprint 9 final briefing.
- **Anti-pattern check:** ako u toku task-a identifikuješ novi substrate failure mode, `feedback_workflow_reality_check.md` anti-pattern #4 remains hard rule — document the mode, open backlog ticket, **ne reformulisati gate ili acceptance threshold post-hoc**.
---
## 9. Shta NE raditi u Sprint 10
- Ne pisati landing copy.
- Ne dirati brand narrative dokumente.
- Ne pokretati Stage 1 ili Stage 2 full-run dok gate uslovi iz §6 nisu ispunjeni.
- Ne širiti judge ensemble van tri-vendor konfiguracije LOCKED u Vector 2 (ne dodavati 4., 5. vendor "just in case").
- Ne lock-ovati Stage 2 primary judge na osnovu Task 1.3 single-vendor Sonnet result-a — tek posle Task 2.2 ensemble kappa.
---
## 10. Sprint 10 close criteria
Sprint 10 se zatvara kada:
1. Sve task-ove iz Vector 1 i Vector 2 CLOSED sa acceptance band ili iznad.
2. Sprint 10 final briefing napisan + PM ratifikovan.
3. Stage 2 kickoff memo (poseban brief) napisan i PM-ratified za narednu CC sesiju.
4. Zero test regressions, tsc clean, sve commit-e pushed.
Launch copy / brand narrative / Stage 2 full-run izvršenje → Sprint 11 scope, ne ovde.
---
**End of Sprint 10 brief. Awaiting CC execution.**