@@ -224,9 +224,11 @@ jobs:
224224
225225 FINAL_STATUS="success"
226226 FAILURE_REASON=""
227+ NEXT_ACTION="No extra action required."
227228
228229 if [[ "${DOCS_ONLY}" == 'true' ]]; then
229230 SUMMARY_NOTE="Only docs/markdown changes detected -> quality checks not required."
231+ NEXT_ACTION="No action required for docs-only changes."
230232 else
231233 SUMMARY_NOTE="Quality checks evaluated against changed areas."
232234
@@ -257,26 +259,58 @@ jobs:
257259 FAILURE_REASON="gui smoke failed"
258260 fi
259261 fi
262+
263+ if [[ -n "${FAILURE_REASON}" ]]; then
264+ if [[ "${FAILURE_REASON}" == "integrity failed" ]]; then
265+ NEXT_ACTION='Run `npm run verify:app-version` and sync package / Cargo / Tauri version files.'
266+ elif [[ "${FAILURE_REASON}" == "frontend failed" ]]; then
267+ NEXT_ACTION='Run `npm run verify:local` (or `npm run lint && npm run typecheck && npm test`) to reproduce the frontend failure locally.'
268+ elif [[ "${FAILURE_REASON}" == "bridge/contracts failed" ]]; then
269+ if [[ ",${BRIDGE_REASONS}," == *",harness_cleanup_contract,"* ]]; then
270+ NEXT_ACTION='Run `npm run harness:cleanup-report:check` first, then `npm run test:contracts`.'
271+ elif [[ ",${BRIDGE_REASONS}," == *",bridge_runtime,"* ]]; then
272+ NEXT_ACTION='Run `npm run test:bridge` first, then `npm run test:contracts`.'
273+ else
274+ NEXT_ACTION='Run `npm run verify:local` or `npm run test:bridge && npm run test:contracts` to reproduce the bridge/contracts failure.'
275+ fi
276+ elif [[ "${FAILURE_REASON}" == "gui smoke failed" ]]; then
277+ NEXT_ACTION='Run `npm run verify:gui-smoke -- --timeout-ms 480000` and inspect DevBridge / headless Tauri readiness.'
278+ fi
279+ fi
260280 fi
261281
262282 {
263283 echo "## Quality Summary"
264284 echo
265- echo "| Item | Value |"
266- echo "| --- | --- |"
267- echo "| changed_count | ${CHANGED_COUNT} |"
268- echo "| docs_only | ${DOCS_ONLY} |"
269- echo "| bridge_reasons | ${BRIDGE_REASONS_DISPLAY} |"
270- echo "| integrity | ${INTEGRITY_RESULT} |"
271- echo "| frontend | ${FRONTEND_RESULT} |"
272- echo "| bridge_contracts | ${BRIDGE_RESULT} |"
273- echo "| gui_smoke | ${GUI_SMOKE_RESULT} |"
274- echo "| final_status | ${FINAL_STATUS} |"
285+ echo "**Final status:** ${FINAL_STATUS}"
275286 echo
276- echo "${SUMMARY_NOTE}"
287+ echo "### Scope"
288+ echo
289+ echo "- changed_count: ${CHANGED_COUNT}"
290+ echo "- docs_only: ${DOCS_ONLY}"
291+ echo "- bridge_reasons: ${BRIDGE_REASONS_DISPLAY}"
292+ echo
293+ echo "### Required Gates"
294+ echo
295+ echo "| Gate | Required | Result |"
296+ echo "| --- | --- | --- |"
297+ echo "| integrity | ${INTEGRITY_REQUIRED} | ${INTEGRITY_RESULT} |"
298+ echo "| frontend | ${FRONTEND_REQUIRED} | ${FRONTEND_RESULT} |"
299+ echo "| bridge_contracts | ${BRIDGE_REQUIRED} | ${BRIDGE_RESULT} |"
300+ echo "| gui_smoke | ${GUI_SMOKE_REQUIRED} | ${GUI_SMOKE_RESULT} |"
301+ echo
302+ echo "### Notes"
303+ echo
304+ echo "- ${SUMMARY_NOTE}"
305+ echo
306+ echo "### Recommended Next Action"
307+ echo
308+ echo "- ${NEXT_ACTION}"
277309 if [[ -n "${FAILURE_REASON}" ]]; then
278310 echo
279- echo "Failure reason: ${FAILURE_REASON}"
311+ echo "### Failure"
312+ echo
313+ echo "- ${FAILURE_REASON}"
280314 fi
281315 } >> "$GITHUB_STEP_SUMMARY"
282316
0 commit comments