Compare commits

..

2 Commits

Author SHA1 Message Date
Claude BM
b8ad91bbda Add test count baseline check — fails CI if tests drop below 1279
ci-config.json now has test_count_baseline. If a branch's passing
test count drops below this number, the build fails with
"TEST COUNT REGRESSION". Prevents accidental test loss from
incomplete syncs or bad merges.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-24 23:00:08 +00:00
Claude BM
e0a440232a Add centralized pipeline results JSON storage (Issue #4)
Creates /pipeline-results/ directory and writes a structured JSON file
after each CI run (before notification), capturing branch, commit,
actor, timestamp, result, test counts, features, duration, and tags.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-24 22:29:53 +00:00
2 changed files with 42 additions and 1 deletions

View File

@ -14,5 +14,6 @@
},
"notify_on_pass": true,
"notify_on_fail": true,
"tag_users_on_fail": ["mostfunguy", "A31S15"]
"tag_users_on_fail": ["mostfunguy", "A31S15"],
"test_count_baseline": 1279
}

View File

@ -114,6 +114,13 @@ if [ "$ERROR_COUNT" != "0" ] && [ "$ERROR_COUNT" != "" ]; then
echo "TEST COLLECTION ERRORS"
fi
# ─── Test Count Baseline Check ───
BASELINE=$(python3 -c "import json; print(json.load(open('$CONFIG')).get('test_count_baseline', 0))")
if [ "$BASELINE" -gt 0 ] && [ "$PASS_COUNT" -lt "$BASELINE" ]; then
OVERALL="fail"
echo "TEST COUNT REGRESSION: expected >= $BASELINE passed, got $PASS_COUNT"
fi
# ─── Step 3: Package Check ───
echo ""
echo "--- Package Check ---"
@ -266,6 +273,39 @@ print(f'Report written to $REPORT_FILE')
echo "Failure report: $REPORT_FILE"
fi
# ─── Write Pipeline Result JSON ───
RESULTS_DIR="$SCRIPT_DIR/pipeline-results"
RESULT_TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%SZ)
RESULT_FILENAME=$(date -u +%Y-%m-%d_%H%M%S)_${BRANCH}.json
RESULT_FILE="$RESULTS_DIR/$RESULT_FILENAME"
mkdir -p "$RESULTS_DIR"
python3 -c "
import json, sys
result = {
'branch': '$BRANCH',
'commit': '$COMMIT',
'actor': '$ACTOR',
'timestamp': '$RESULT_TIMESTAMP',
'result': '$OVERALL',
'tests': {
'passed': int('$PASS_COUNT' or 0),
'failed': int('$FAIL_COUNT' or 0),
'skipped': int('$SKIP_COUNT' or 0),
'deselected': int('$DESELECTED_COUNT' or 0),
'errors': int('$ERROR_COUNT' or 0),
},
'features': '$FEATURES_RESULT',
'duration_seconds': int('$DURATION' or 0),
'tags_tested': '$TAGS_USED',
'trigger_source': '$ACTOR',
}
with open('$RESULT_FILE', 'w') as f:
json.dump(result, f, indent=2)
print(f'Pipeline result written: $RESULT_FILE')
" 2>&1
# ─── Send Notification ───
bash "$SCRIPT_DIR/ci-notify.sh" \
"$BRANCH" "$COMMIT" "$OVERALL" "$SUMMARY" "$FEATURES_RESULT" "${DURATION}s" "$ACTOR" "$REPORT_FILE" "$SUITE_INFO"