diff --git a/scrum b/scrum index 6d14983..328fdb6 100755 --- a/scrum +++ b/scrum @@ -87,18 +87,32 @@ export LH_GATEWAY="${LH_GATEWAY:-http://127.0.0.1:4110}" # works correctly (lands in golangLAKEHOUSE root, where reports/ lives). SCRUM_DIR=$(dirname "$SCRUM_REVIEW") SCRUM_REPO=$(dirname "$SCRUM_DIR") -( cd "$SCRUM_REPO" && bash "$SCRUM_REVIEW" "$DIFF_FILE" "$LABEL" ) || { - echo "[scrum] reviewers failed — bailing" - rm -f "$DIFF_FILE" - exit 1 -} +# Run the underlying review. We treat ANY tally-file produced as a usable +# result, even if scrum_review.sh exits non-zero on its own aggregation +# step (its tally-counting can mis-fire while the verdicts themselves are +# fine — the per-reviewer markdown files are what matter). +( cd "$SCRUM_REPO" && bash "$SCRUM_REVIEW" "$DIFF_FILE" "$LABEL" ) || true -# Locate the tally file the review just wrote TALLY="$SCRUM_REPO/reports/scrum/_evidence/$(date +%Y-%m-%d)/verdicts/${LABEL}_tally.md" if [ ! -f "$TALLY" ]; then - echo "[scrum] no tally found at $TALLY (review may have failed silently)" - rm -f "$DIFF_FILE" - exit 1 + # Build a minimal tally from the per-reviewer files if scrum_review.sh + # didn't produce one. Lets findings still flow to the KB. + VERDICTS_DIR="$SCRUM_REPO/reports/scrum/_evidence/$(date +%Y-%m-%d)/verdicts" + if ls "$VERDICTS_DIR/${LABEL}_"*.md >/dev/null 2>&1; then + { + echo "# Convergence tally — $LABEL (auto-rebuilt by ./scrum wrapper)" + echo + echo "scrum_review.sh did not emit a tally; per-reviewer verdicts:" + echo + for f in "$VERDICTS_DIR/${LABEL}_"*.md; do + echo "- $(basename "$f")" + done + } > "$TALLY" + else + echo "[scrum] no per-reviewer verdicts produced — bailing" + rm -f "$DIFF_FILE" + exit 1 + fi fi # Push to KB — one JSONL row per scrum run, queryable via DuckDB or jq @@ -121,7 +135,7 @@ from pathlib import Path tally = Path("$TALLY").read_text() row = { "schema": "scrum_finding.v1", - "ts": datetime.datetime.utcnow().isoformat() + "Z", + "ts": datetime.datetime.now(datetime.UTC).isoformat().replace("+00:00", "Z"), "label": "$LABEL", "diff_mode": "$DIFF_MODE", "diff_bytes": $DIFF_SIZE,