Files
waggle-os/docs/decisions/2026-04-24-pm-ratify-rca-task26-path.md
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

52 lines
3.3 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.
# LOCKED — PM-RATIFY-RCA Task 2.6 Path
**Date**: 2026-04-24
**Ratified by**: Marko Marković (via PM adjudication)
**PM**: claude-opus-4-7 (Cowork)
**Prerequisite gate**: 2/3 (Task #29 progress)
## Odluka
**PM-RATIFY-RCA: RATIFIED.** Task 2.6 tech-debt path ratifikovan. Manifest v4 anchor `dedd698` ostaje validan bez ijednog code-freeze break-a. HEAD `373516c` nepromenjen.
## Findings acknowledged
1. **F1**: `judgeEnsemble` je sequential `for await` loop (failure-mode-judge.ts:245-258), NE Promise.all. Sprint brief hipoteza o Promise.all early-exit je bila mehanički pogrešna.
2. **F2**: Svih sedam judge failure modes (HTTP 429, timeout, token budget, malformed JSON, 401/403, context length, 5xx) propagira kroz single catch path na judge-runner.ts:386-400 → judge_error payload → runner continues. Unified error handling confirmed.
3. **F3** (kritičan operativni nalaz): Gate D observed halt bio je EKSTERNI. Claude Code harness process-tree cleanup kada kickoff Bash primi "Terminated" marker. Pid 4984 i pid 65668 bili su children iste kickoff sesije. NE runner-code bug.
4. **F4**: Pre-existing audit-trail bug na runner.ts:493-511 širi judge fields ali izostavlja judge_error. Objašnjava 32 "neither rows" zagonetku. Non-blocking za Stage 3 jer pre-registered thresholds ne zavise od tog polja.
## Task 2.6 carry-over tickets (CLOSED as backlog)
1. **`judge-ensemble-defensive-error-handling`** — Promise.allSettled + 2-of-3 quorum na failure-mode-judge.ts:245-258; čuva Opus+GPT verdicts pod Gemini tail failures. Priority P2.
2. **`runner-judge-error-persistence`** — proširenje runner.ts:493-511 spread-a da uključi judge_error field; zatvara audit-trail gap. Priority P2.
## Operational constraint (non-negotiable)
**N=400 kickoff i §1.3 Gate P+ probe MORAJU biti clean foreground.**
- **FORBIDDEN**: `run_in_background`, nohup-detached kickoff Bash, bilo koja invokacija čiji parent Bash marker može primiti Terminated signal tokom runner lifetime-a.
- **REQUIRED**: dedicated foreground terminal session koja ostaje attached za ceo runner duration, ILI tmux/screen sesija eksplicitno detached od Claude Code harness process-tree.
**Rationale**: Finding 3 utvrđuje da harness process-tree cleanup cascades na sve children-e kickoff Bash-a. Bilo koji background wrapper koji može umreti mid-run ubiće runner bez obzira na runner-code correctness.
Ova constraint vezuje §1.3 probe I N=400 re-kick. Kickoff mehanizam mora biti eksplicitno deklarisan u §1.3 probe halt ping-u.
## Path rejection rationale
- Manifest v5 emission nepotreban — findings ne zahtevaju code change.
- Defensive patch pre re-kick-a odbijen jer je hipoteza u brief-u bila pogrešna; nema ničeg da se patch-uje u runner code-u.
## Next gate
- **2/3 prerequisites CLOSED** (§1.1 Path L-1 ✓, §1.2 Task 2.6 path ✓)
- CC-1 authorized za §1.3 Gate P+ pre-flight probe (50 Gemini calls u 30s, 0 × HTTP 429 required, clean foreground kickoff)
- No self-advance to N=400 re-kick do PM-RATIFY-PROBE
## Artefact
- Memo: `benchmarks/results/manifest-v4-runner-early-exit-rca.md`
- Memo SHA-256: `1d53c9d2d54e715812c3f2e3586876f595b123700ddfdc53e22124b2f38535ac`
- Anchor commit: `274e9871b54599077a3d72de88d505550803a805` on `feature/c3-v3-wrapper`
- Parent chain: 274e987 → 67eb899 (§1.1) → dedd698 (manifest v4) intact