Conversation
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Comment MemoryNote This comment is managed by comment memory.It stores persistent context for this thread in the code block at the top of this comment. |
There was a problem hiding this comment.
Pull request overview
Adds an “Agentic Workflow Portfolio Yield” workflow that deterministically scores and analyzes the repository’s agentic workflows (yield, overlap/drag, governance signals) and then produces an issue report, with optional OTel-backed evidence.
Changes:
- Introduces deterministic precompute/postcompute Python scripts to generate portfolio metrics and a markdown report.
- Adds a new scheduled/dispatchable agentic workflow that runs the scripts and creates a single report issue via safe outputs.
- Adds shared OTel observability import and initial unit tests for the scoring/parsing logic.
Show a summary per file
| File | Description |
|---|---|
scripts/aw_yield_precompute.py |
New deterministic precompute: workflow discovery, frontmatter parsing, scoring, overlap detection, portfolio metrics. |
scripts/aw_yield_postcompute.py |
New deterministic postcompute: clamps scores, validates agent recommendations, generates report markdown + safe output payload. |
tests/test_aw_yield_precompute.py |
Unit tests for discovery/frontmatter parsing/import handling/scoring math/overlap clustering. |
tests/test_aw_yield_postcompute.py |
Unit tests for clamping, recommendation validation, and malformed agent-output handling. |
.github/workflows/aw-portfolio-yield.md |
New agentic workflow definition that runs weekly and on demand, producing a portfolio report issue. |
.github/workflows/shared/otel-observability.md |
Shared import that configures OTLP env/observability and an otel MCP server. |
.github/workflows/aw-portfolio-yield.lock.yml |
Compiled lockfile for the new workflow. |
Copilot's findings
Tip
Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Files reviewed: 7/7 changed files
- Comments generated: 3
| if not raw or "@" in raw or "/" in raw and not raw.startswith("shared/") and not raw.startswith("."): | ||
| if raw and raw.startswith(("shared/", "./", "../", "/")): | ||
| pass | ||
| else: | ||
| continue | ||
| if raw.startswith("shared/"): | ||
| imports.append(workflow_path.parent / raw) | ||
| elif raw.startswith("./") or raw.startswith("../"): | ||
| imports.append((workflow_path.parent / raw).resolve()) | ||
| elif raw.startswith("/"): | ||
| imports.append(Path(raw)) |
There was a problem hiding this comment.
@copilot Restrict imports as suggested.
There was a problem hiding this comment.
Implemented in 4829ec1.
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
|
Hey
If you'd like a hand drafting it, you can assign this prompt to your coding agent:
|
Uh oh!
There was an error while loading. Please reload this page.