Skip to content

[review-retro] Review Retrospective — PR #615 #700

@github-actions

Description

@github-actions

PR: feat: PolyPilot CI integration test workflow (Linux/GTK + MauiDevFlow)
Merged: 2026-04-22 by PureWeen
Review runs: 1 automated (review-on-open, commit 8c5815f) + 1 human re-review (before merge)


Skill Coverage Analysis

Skill Relevant? Referenced? Gap?
gh-aw-guide ⚠️ Adjacent (.yml not .md) Implicitly (permissions, security) Minor — permissions finding unfixed at merge
maui-ai-debugging ✅ Yes (MauiProgram.cs DevFlow setup) ❌ No ✅ Human caught it; bot generated 0 comments on MauiProgram.cs
processing-state-safety ❌ No
multi-agent-orchestration ❌ No
performance-optimization ❌ No

Review Accuracy

Metric Count
True Positives (Fixed) 3 — #1 binary exit guard, #3 tool install `
True Positives (Unresolved — merged unfixed) 5 — #2, #4, #6, #7, #8
False Positives 0
False Negatives (missed) 0
Correctly Discarded 3 — /tmp path, package ID, manual-only trigger

Unresolved Findings That Merged

The initial automated review found 8 real issues. The human's second review cycle checked a different set of 8 findings on the evolved code (after 27 commits), never cross-referencing the original bot findings. Five original findings slipped through to merge.

Finding #2 — Unquoted expression interpolation (Linux job, line 94)

${{ steps.find-binary.outputs.binary }} > /tmp/polypilot-stdout.log 2>/tmp/polypilot-stderr.log &

The Mac Catalyst job correctly uses a quoted env var (BINARY="${{ ... }}"). The Linux job directly interpolates without quotes. An empty or space-containing path would break the redirect.

Fix: "${{ steps.find-binary.outputs.binary }}" > /tmp/polypilot-stdout.log ...

Finding #4 — Wrong MAUI workload on Linux/GTK job (line 48)

run: dotnet workload install maui-android

PolyPilot.Gtk.csproj targets net10.0 (plain .NET), not net10.0-android. The maui-android workload installs Android SDK tooling irrelevant for GTK. The Mac Catalyst and Windows jobs both correctly use dotnet workload install maui.

Fix: dotnet workload install maui — consistent with the other 2 jobs in the same file.

Finding #6 — No permissions: block on any of the 3 jobs

No job declares an explicit permissions: block. With workflow_dispatch + push triggers, GITHUB_TOKEN defaults to write-all. The workflow only reads the repo and runs tests.

Fix: Add to each job:

permissions:
  contents: read

Finding #7 — Unused issue_number and scenario inputs (lines 6–17)

Both inputs are declared but never referenced in any step. A user selecting scenario: full receives identical smoke tests to scenario: smoke — silently misleading.

Fix: Remove both inputs until implemented, or gate steps with if: inputs.scenario == 'full'.

Finding #8 — Stale action versions (lines 34, 251, 259, 281, 525, 557, 649)

All actions/checkout@v4 and actions/upload-artifact@v4 — 7 instances. build.yml uses @v6 and @v7 respectively.

Fix: Update all to actions/checkout@v6 and actions/upload-artifact@v7.


Root Cause: Cross-Cycle Finding Tracking Gap

The core process failure: the second review cycle checked new issues on the evolved 27-commit code state but did not verify the original bot findings were resolved. Five original True Positives slipped through unnoticed.

Improvement suggestion: When approving a PR that had a prior CHANGES_REQUESTED automated review, explicitly re-check each original finding before approving. The review system could support this by outputting a "prior findings checklist" that the second reviewer marks resolved or deferred.


Adversarial Consensus Quality ✅

The 3 correctly-discarded findings demonstrate the consensus mechanism working well:

  • /tmp path prohibition (1/3) — correctly overruled: CI runner /tmp is standard practice, not subject to the agent-workspace prohibition
  • Wrong package ID (1/3) — correctly overruled: Microsoft.Maui.Cli is the correct package name
  • Manual-only trigger (1/3) — correctly overruled: workflow_dispatch is intentional for heavyweight integration tests

No false positives in the initial review.


Auto-closes in 30 days if not addressed.

Generated by Review Retrospective for issue #615 ·

  • expires on May 22, 2026, 5:07 AM UTC

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions