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

3.3 KiB
Raw Blame History

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