choo121600 opened a new pull request, #348:
URL: https://github.com/apache/airflow-steward/pull/348

   <!-- SPDX-License-Identifier: Apache-2.0
        https://www.apache.org/licenses/LICENSE-2.0 -->
   
   ## Summary
   
   Adds tools/pr-management-stats/dashboard.py, a self-contained
   Python script that renders the full 11-panel HTML dashboard
   described in render.md, without requiring agent execution.
   
   ## Why
   
   `reference.py` intentionally stopped at fetch + classify and left
   aggregation/rendering to downstream consumers. The README already
   described extending the tool in this direction; this PR provides
   that deterministic implementation directly.
   
   `dashboard.py` is intentionally self-contained (no shared modules,
   no `sys.path` manipulation) so the entire
   `tools/pr-management-stats/` directory can remain portable for
   downstream adopters.
   
   
   ## What changed
   
   - **New**: `tools/pr-management-stats/dashboard.py`
     - Reuses `reference.py` classification + fetch primitives
     - Adds aggregation and HTML rendering logic implementing the
       `render.md` dashboard specification
     - Includes inline SVG/CSS helpers used by the renderer
   - **Modified**: `tools/pr-management-stats/README.md`
     - Documents `dashboard.py` usage alongside `reference.py`
   
   
   
   <!--
   1-3 bullets: what changed and why. The "why" is what reviewers care
   about most — a one-line summary of the motivation beats a paragraph
   restating the diff.
   -->
   
   -
   
   ## Type of change
   
   <!-- Tick all that apply. -->
   
   - [ ] Skill change (`.claude/skills/<name>/`) — eval fixtures updated below
   - [x] Tool / bridge contract (`tools/<system>/*.md`)
   - [ ] Python package (`tools/*/` with `pyproject.toml`)
   - [ ] Groovy reference impl
   - [ ] Cross-cutting (RFC, AGENTS.md, sandbox, privacy-LLM)
   - [ ] Documentation (`docs/`, `README.md`, `CONTRIBUTING.md`)
   - [ ] Project template (`projects/_template/`)
   - [ ] CI / dev loop (`prek`, workflows, validators)
   - [ ] Other:
   
   ## Test plan
   
   <!--
   How you verified the change. Be specific. The reviewer reads this to
   decide what to spot-check vs trust. Empty "ran the tests" doesn't help.
   -->
   
   - [ ] `prek run --all-files` passes
   - [ ] For Python packages touched: `uv run pytest` / `ruff check` / `mypy` 
passes
   - [ ] For Groovy bridges touched: command-line invocation tested end-to-end
   - [ ] For skill changes: eval suite passes for the affected skill
         (`PYTHONPATH=tools/skill-evals/src python3 -m skill_evals.runner 
tools/skill-evals/evals/<skill>/`)
   - [ ] For skill *behaviour* changes: a new or updated eval fixture is 
included in this PR
         (a regression test for the bug fixed / the behaviour added — see 
CONTRIBUTING.md)
   - [ ] Other:
   
   ## RFC-AI-0004 compliance
   
   <!--
   Tick the principles the change touches. Skip rows that don't apply.
   RFC-AI-0004 is the framework's constitution — see
   docs/rfcs/RFC-AI-0004.md.
   -->
   
   - [ ] **HITL** — any new mutation is gated on explicit user confirmation
   - [ ] **Sandbox** — no new unrestricted host access; network reach declared 
in the adapter
   - [ ] **Vendor neutrality** — placeholders (`<PROJECT>`, `<tracker>`, 
`<upstream>`, `<security-list>`) used in all skill / tool prose (the 
`check-placeholders` prek hook is the mechanical gate)
   - [ ] **Conversational + correctable** — agentic-override path documented if 
behaviour is adopter-tunable
   - [ ] **Write-access discipline** — no autonomous outbound messages; drafts 
only, sent on confirmation
   - [ ] **Privacy LLM** — private content does not reach a non-approved LLM; 
redactor invoked where needed
   
   ## Linked issues
   
   <!-- e.g. Closes #NNN, Refs #NNN. List every related issue. -->
   
   ## Notes for reviewers (optional)
   
   <!--
   Anything specific you want the reviewer to look at. Areas of uncertainty.
   Trade-offs you considered and rejected. Decisions that the agent and you
   disagreed on during the authoring loop.
   -->
   


-- 
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]

Reply via email to