potiuk opened a new pull request, #487: URL: https://github.com/apache/airflow-steward/pull/487
Follow-up to #486 (the spec, now merged) — brings the deterministic CI-parity reference implementation (`tools/pr-management-stats/`) up to that spec, so a CI-scheduled `dashboard.py` render matches the agent-emitted one. Rebased onto `main` after #486 merged. ## What - **Ready-for-review queue split** — `compute_ready_split` / `render_ready_split`: the non-maintainer ready queue split into never-reviewed / discussed-no-decision / changes-requested / approved, as coloured cards + an age timeline (oldest bucket on the left). - **Drafts & closes attribution by person** — `compute_attribution` / `render_attribution`: draft-conversions (`ConvertToDraftEvent`) and closes (`ClosedEvent`) attributed **triage-action (actor ≠ author) vs author-self** with per-maintainer shares; **bots and backport PRs excluded**; maintainer set derived from OWNER/MEMBER/COLLABORATOR commenters (no hardcoded list). - **Always-publish-to-gist** — `publish_gist` + session-state helpers + `gh` gist-scope check; `--no-publish` / `--dry-run` flags; `main()` always publishes to a stable secret gist (in-place PATCH) and prints the `gistpreview.github.io` URL. `reference.py` query additions: `baseRefName`, `reviewDecision`, `__typename` on timeline items (open PRs); `baseRefName` + `CLOSED_EVENT` actor (closed PRs). ## Tests New `tests/test_ready_split.py`, `tests/test_attribution.py`, `tests/test_publish.py` (no network — mocked `subprocess`). **41 tests pass**; ruff / mypy / typos / pytest hooks green. ## Notes - Gitignores the per-repo `.apache-magpie.session-state.json` (stores the stats gist id; also used by triage session-history). - `__typename` added to the open-PR timeline query to robustly distinguish `ConvertToDraftEvent` from `LabeledEvent` / `ReadyForReviewEvent` (same actor+createdAt shape) rather than a fragile field-presence heuristic. ##### Was generative AI tooling used to co-author this PR? - [X] Yes — Claude Code (Opus 4.8 1M context) Generated-by: Claude Code (Opus 4.8 1M context) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
