@walwal-harness/cli 5.8.0 → 5.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@walwal-harness/cli",
3
- "version": "5.8.0",
3
+ "version": "5.8.1",
4
4
  "description": "Production harness for AI agent engineering — Solo/Team mode, Planner, Generator(BE/FE), Evaluator chain (Code-Quality → Functional → Visual), optional Brainstormer. Supports React, Next.js, and Flutter FE stacks.",
5
5
  "bin": {
6
6
  "walwal-harness": "bin/init.js"
@@ -197,10 +197,22 @@ render_team_queue_summary() {
197
197
  ready=$(jq '.queue.ready | length' "$QUEUE" 2>/dev/null || echo 0)
198
198
  blocked=$(jq '.queue.blocked | length' "$QUEUE" 2>/dev/null || echo 0)
199
199
  in_prog=$(jq '.queue.in_progress | length' "$QUEUE" 2>/dev/null || echo 0)
200
- passed=$(jq '.queue.passed | length' "$QUEUE" 2>/dev/null || echo 0)
201
200
  failed=$(jq '.queue.failed | length' "$QUEUE" 2>/dev/null || echo 0)
202
- ready=${ready:-0}; blocked=${blocked:-0}; in_prog=${in_prog:-0}; passed=${passed:-0}; failed=${failed:-0}
203
- total=$((ready + blocked + in_prog + passed + failed))
201
+
202
+ # passed 는 queue.passed ∪ feature-list.json 의 self-passed 를 dedup 합집합으로 계산
203
+ # (과거 sprint 에서 PASS 되어 queue 에서 빠진 feature 도 카운트)
204
+ if [ -f "$FEATURES" ]; then
205
+ passed=$(jq -r --slurpfile q "$QUEUE" '
206
+ ($q[0].queue.passed // []) as $qp |
207
+ ([.features[] | select((.passes // []) | any(. == "evaluator-functional" or . == "evaluator-visual" or . == "evaluator-code-quality")) | .id]) as $sp |
208
+ ($qp + $sp | unique | length)
209
+ ' "$FEATURES" 2>/dev/null || echo 0)
210
+ total=$(jq '.features | length' "$FEATURES" 2>/dev/null || echo 0)
211
+ else
212
+ passed=$(jq '.queue.passed | length' "$QUEUE" 2>/dev/null || echo 0)
213
+ total=$((ready + blocked + in_prog + passed + failed))
214
+ fi
215
+ ready=${ready:-0}; blocked=${blocked:-0}; in_prog=${in_prog:-0}; passed=${passed:-0}; failed=${failed:-0}; total=${total:-0}
204
216
 
205
217
  local pct=0
206
218
  if [ "$total" -gt 0 ]; then pct=$(( passed * 100 / total )); fi
@@ -274,7 +286,11 @@ render_team_features() {
274
286
  .features[] |
275
287
  .id as $fid |
276
288
  (.name // .title // .description // "?" | if length > 18 then .[0:16] + ".." else . end) as $fname |
277
- (if ($fid | IN($passed[])) then "P"
289
+ # passed 판정: queue.passed 또는 feature.passes 에 evaluator-functional/visual/code-quality 가 있으면 PASS.
290
+ # 과거 sprint 에서 PASS 된 feature 가 새 sprint queue 재생성 시 queue.passed 에서 누락되어도
291
+ # feature-list.json 의 passes 배열은 이력으로 남아있으므로, 거기서도 검사한다.
292
+ ((.passes // []) | any(. == "evaluator-functional" or . == "evaluator-visual" or . == "evaluator-code-quality")) as $self_passed |
293
+ (if ($fid | IN($passed[])) or $self_passed then "P"
278
294
  elif $prog[$fid] then "I|\($prog[$fid].team)|\($prog[$fid].phase)"
279
295
  elif ($fid | IN($failed[])) then "F"
280
296
  elif ($fid | IN($ready[])) then "R"