Skip to content

Commit 0f51757

Browse files
authored
chore: narrow POC scope to PR outcomes and safe output outcomes only (#39484)
1 parent 003762a commit 0f51757

3 files changed

Lines changed: 28 additions & 36 deletions

File tree

.github/workflows/objective-impact-report.lock.yml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/workflows/objective-impact-report.md

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,20 @@ safe-outputs:
1919

2020
## Goal
2121

22-
Test whether Impact Efficiency is a more meaningful signal than accepted outcome counts alone.
22+
POC: Test whether Impact Efficiency is a more meaningful signal than accepted outcome counts alone.
23+
24+
Focus only on **pull request outcomes** and **safe output outcomes** (issues created or closed via the safe-output mechanism). Other outcome types are excluded from this POC because their acceptance criteria are not yet well-defined and most remain pending.
2325

2426
Use this model:
2527

2628
```text
27-
Outcome = recorded work item produced by a GitHub Agentic Workflow run
28-
Objective = issue/epic/work item linked to the outcome
29+
Outcome = a PR or safe-output issue produced by a GitHub Agentic Workflow run
2930
Objective Value = numeric value from the repository objective-mapping configuration applied to traced root labels
3031
Outcome Indicator = 1 for accepted/delivered outcomes, 0 otherwise
3132
Outcome Value = Outcome Indicator × Objective Value
3233
Impact Efficiency = Σ Outcome Value / AI Credits
3334
```
3435

35-
Treat an outcome as one recorded result item produced by a GitHub Agentic Workflow run (for example, a PR change, completed fix, or report action), which may later be accepted or not accepted.
36-
Use workflow run outputs/artifacts and linked GitHub objects (issues, PRs, comments, discussions) as the outcome source of truth.
3736
Treat AI Credits as total model-credit cost consumed by the workflow runs that produced the analyzed outcomes.
3837
When available, use deterministic precomputed run data that already includes each run's `aic` field.
3938
Prefer existing gh-aw outputs that already surface `aic`, such as pre-downloaded `gh aw logs --json` data or audit/log artifacts derived from the same run summaries.
@@ -58,7 +57,12 @@ If a run's `aic` field is missing or null, treat it as `0` and count it as missi
5857

5958
## Scope
6059

61-
Analyze workflow outcomes and linked objectives from the last 180 days.
60+
Analyze only the following outcome types from the last 180 days:
61+
62+
- **Pull request outcomes**: PRs created by GitHub Agentic Workflow runs. Accepted = merged. Rejected = closed without merge. Skip open (pending) PRs.
63+
- **Safe output outcomes**: issues created or closed by workflow runs via the safe-output mechanism. Accepted = issue successfully created/closed. Skip any with unresolved state.
64+
65+
Exclude all other outcome types (direct issue outcomes, comments, discussions, etc.). These are omitted because their acceptance criteria are incomplete and most are left pending, which would distort the metric.
6266

6367
## Objective value mapping
6468

@@ -81,36 +85,29 @@ Objective Labels = mapping.GetObjectiveLabels(root_labels)
8185

8286
Do not invent fallback scoring rules such as milestone bonuses, project bonuses, or priority-to-points heuristics when the mapping file is present.
8387

84-
```text
85-
Examples of mapped labels in this repository include campaign, security, observability, testing, automation, and other configured objective labels.
86-
```
87-
8888
If a traced root object has no labels that exist in the mapping, mark the outcome as `unmapped`.
8989

9090
## Outcome association rules
9191

92-
For each workflow outcome, follow the implemented root-tracing behavior:
92+
For each in-scope outcome, follow the implemented root-tracing behavior:
9393

9494
1. For pull-request outcomes, trace the PR to its linked closing issue and use that root issue's labels.
95-
2. If PR root tracing fails, or for direct issue outcomes, use labels on the issue itself.
96-
3. Record the traced root URL when one is found so the report preserves an audit trail.
97-
4. If no mapped objective labels can be found, mark the outcome as `unmapped`, exclude it from `Σ Outcome Value`, and report it separately.
98-
99-
Prefer precomputed outcome evaluation data when available. Do not re-derive a different mapping model inside the report.
95+
2. If PR root tracing fails, use labels on the PR itself.
96+
3. For safe-output issue outcomes, use labels on the safe-output issue itself.
97+
4. Record the traced root URL when one is found so the report preserves an audit trail.
98+
5. If no mapped objective labels can be found, mark the outcome as `unmapped`, exclude it from `Σ Outcome Value`, and report it separately.
10099

101100
## Computation
102101

103-
For each outcome:
102+
For each in-scope outcome:
104103

105104
```text
106-
Outcome Indicator = 1 for accepted/delivered outcome, 0 for rejected, abandoned, or incomplete outcome
105+
Outcome Indicator:
106+
PR outcome: 1 if merged, 0 if closed without merge (open PRs excluded)
107+
Safe output outcome: 1 if successfully created/closed, 0 otherwise
107108
Outcome Value = Outcome Indicator × Objective Value
108109
```
109110

110-
Treat pending-review outcomes as `Outcome Indicator = 0` until explicitly accepted.
111-
112-
Accepted/delivered outcome means the intended result was accepted in GitHub state (for example: merged PR, closed issue with completion signal, or explicit accepted status in the workflow outcome record).
113-
114111
Then compute:
115112

116113
```text
@@ -146,7 +143,8 @@ The report must include:
146143

147144
### Summary
148145

149-
- Outcomes analyzed
146+
- PR outcomes analyzed (merged / closed / excluded open)
147+
- Safe output outcomes analyzed
150148
- Objectives mapped
151149
- Unmapped outcomes
152150
- Accepted outcome count
@@ -156,18 +154,13 @@ The report must include:
156154

157155
### Top outcomes by outcome value
158156

159-
| Outcome | Associated objective | Objective value signals | Objective Value | Outcome Value |
157+
| Outcome | Type | Associated objective | Objective Value | Outcome Value |
160158
|---|---|---|---:|---:|
161159

162-
### Top objectives by delivered value
163-
164-
| Objective Label | Delivered Outcome Value | Attempted Outcome Value | Delivered Outcomes | Efficiency |
165-
|---|---:|---:|---:|---:|
166-
167160
### Unmapped outcomes
168161

169-
| Outcome | Reason objective was not mapped |
170-
|---|---|
162+
| Outcome | Type | Reason objective was not mapped |
163+
|---|---|---|
171164

172165
### Interpretation
173166

@@ -182,9 +175,8 @@ Explain which one better reflects meaningful delivered value relative to cost.
182175

183176
Mention missing or weak links in:
184177

185-
- outcome-to-objective association
186-
- root tracing and linked-object coverage
187-
- label mapping coverage in `.github/objective-mapping.json`
178+
- PR root tracing and linked-closing-issue coverage
179+
- safe-output issue label mapping coverage in `.github/objective-mapping.json`
188180
- AI Credits availability
189181

190182
State whether AI Credits came from deterministic precomputed data or from a live fallback path.

.github/workflows/portfolio-analyst.lock.yml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)