@@ -57,10 +57,27 @@ jobs:
5757 python3 python/tools/generate_method_parity_matrix.py
5858 python3 python/tools/generate_implemented_method_coverage.py
5959
60- - name : Run MATLAB/Python similarity gate
60+ - name : Parity Stage A (core + timeout-front)
61+ run : |
62+ python/tools/run_parity_ladder.sh core_smoke timeout_front
63+
64+ - name : Parity Stage B (graphics-mid + heavy-tail)
65+ run : |
66+ python/tools/run_parity_ladder.sh graphics_mid heavy_tail
67+
68+ - name : Parity Stage C (full-suite gate report)
6169 run : |
6270 python3 python/tools/verify_python_vs_matlab_similarity.py --enforce-gate
6371
72+ - name : Summarize full-suite parity report
73+ if : ${{ always() && !cancelled() }}
74+ run : |
75+ if [ -f python/reports/python_vs_matlab_similarity_report.json ]; then
76+ python3 python/tools/summarize_parity_report.py python/reports/python_vs_matlab_similarity_report.json --json > python/reports/python_vs_matlab_similarity_summary.json
77+ else
78+ echo "Parity report missing; skipping summary."
79+ fi
80+
6481 - name : Freeze similarity baseline
6582 if : ${{ always() && !cancelled() }}
6683 run : |
7087 echo "Similarity report missing; skipping baseline freeze."
7188 fi
7289
90+ - name : Collect MATLAB crash diagnostics
91+ if : ${{ failure() && !cancelled() }}
92+ continue-on-error : true
93+ run : |
94+ set -euo pipefail
95+ OUT_DIR="python/reports/matlab_crash_diagnostics"
96+ mkdir -p "$OUT_DIR/diagnostic_reports" "$OUT_DIR/mathworks_crash_reports"
97+
98+ # Collect macOS crash/ips reports (latest 20) when MATLAB crashes.
99+ DIAG_DIR="$HOME/Library/Logs/DiagnosticReports"
100+ if [ -d "$DIAG_DIR" ]; then
101+ find "$DIAG_DIR" -maxdepth 1 -type f \( -name '*MATLAB*.crash' -o -name '*matlab*.crash' -o -name '*MATLAB*.ips' -o -name '*matlab*.ips' \) -print \
102+ | sort \
103+ | tail -n 20 \
104+ | while IFS= read -r f; do cp -f "$f" "$OUT_DIR/diagnostic_reports/" || true; done
105+ fi
106+
107+ # Collect MathWorks CrashReporter payload files (latest 50).
108+ MW_APP_SUPPORT="$HOME/Library/Application Support/MathWorks"
109+ if [ -d "$MW_APP_SUPPORT" ]; then
110+ find "$MW_APP_SUPPORT" -type d -name crash_reports -print \
111+ | while IFS= read -r crash_dir; do
112+ find "$crash_dir" -type f -print || true
113+ done \
114+ | sort \
115+ | tail -n 50 \
116+ | while IFS= read -r f; do cp -f "$f" "$OUT_DIR/mathworks_crash_reports/" || true; done
117+ fi
118+
119+ # Keep staged block reports if present for triage context.
120+ ls -1 python/reports/parity_block*.json > "$OUT_DIR/parity_block_report_manifest.txt" 2>/dev/null || true
121+
73122 - name : Upload parity reports
74123 if : ${{ always() && !cancelled() }}
75124 continue-on-error : true
80129 path : |
81130 python/reports/python_vs_matlab_similarity_report.json
82131 python/reports/python_vs_matlab_similarity_baseline.json
132+ python/reports/python_vs_matlab_similarity_summary.json
133+ python/reports/parity_block*.json
134+ python/reports/matlab_crash_diagnostics/**
0 commit comments