@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 +1 -1
- package/scripts/harness-dashboard.sh +20 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walwal-harness/cli",
|
|
3
|
-
"version": "5.8.
|
|
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
|
-
|
|
203
|
-
|
|
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
|
-
|
|
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"
|