This commit is contained in:
282
docs/briefs/2026-04-21-cc-sprint-10-tasks.md
Normal file
282
docs/briefs/2026-04-21-cc-sprint-10-tasks.md
Normal file
@@ -0,0 +1,282 @@
|
||||
# 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:** 12–16 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:** 4–6h
|
||||
|
||||
**Š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 8–10/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 7–8/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:** 6–10h
|
||||
|
||||
**Š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:** 6–8h
|
||||
|
||||
**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.1–1.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.0–91.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)** | $90–130 | — |
|
||||
|
||||
**Sprint 10 hard stop: $15 across svih tasks.** Ako task prelazi budget, HARD STOP, PM review pre nastavka.
|
||||
|
||||
**Stage 2 projekcija ($90–130) 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.**
|
||||
Reference in New Issue
Block a user