From fbddd0d8c39558465212503eaec2f4c757b8bfd0 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 17 Jun 2026 16:25:50 +0000
Subject: [PATCH 1/9] no changes yet

Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
---
 .github/workflows/example-failure-category-filter.lock.yml | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/.github/workflows/example-failure-category-filter.lock.yml b/.github/workflows/example-failure-category-filter.lock.yml
index 7c0564ab921..33210d13565 100644
--- a/.github/workflows/example-failure-category-filter.lock.yml
+++ b/.github/workflows/example-failure-category-filter.lock.yml
@@ -1575,8 +1575,7 @@ jobs:
       - name: Configure GH_HOST for enterprise compatibility
         id: ghes-host-config
         shell: bash
-        # zizmor: ignore[github-env] - GITHUB_SERVER_URL is set by GitHub Actions, not user input.
-        run: |
+        run: | # zizmor: ignore[github-env] - GITHUB_SERVER_URL is set by GitHub Actions, not user input.
           # Derive GH_HOST from GITHUB_SERVER_URL so the gh CLI targets the correct
           # GitHub instance (GHES/GHEC). On github.com this is a harmless no-op.
           GH_HOST="${GITHUB_SERVER_URL#https://}"

From e94c82b1cf2385c63ec5e8b335424d28241cddff Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 17 Jun 2026 16:31:41 +0000
Subject: [PATCH 2/9] Improve Impact Efficiency Report: progressive disclosure
 + fix artificial/missing data
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

- Add HTML details/summary progressive disclosure for all sections except
  Executive Summary (which stays always visible on top)
- Summary labels include key numbers at-a-glance (accepted count, AIC, IE)
- Replace "artificially depressed" IE language with scope-adjusted IE
  computation: also report IE against only outcome-producing workflows
- Show — instead of N/A for unknown per-category AIC/IE
- Human Work section now filters likely-agentic PRs by title pattern
  ([docs], [linter-miner], [fix], bot accounts) into a separate sub-table
  to prevent attribution gaps from inflating the human count
- Recompile lock file

Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
---
 .../objective-impact-report.lock.yml          |  2 +-
 .github/workflows/objective-impact-report.md  | 46 ++++++++++++++++---
 2 files changed, 41 insertions(+), 7 deletions(-)

diff --git a/.github/workflows/objective-impact-report.lock.yml b/.github/workflows/objective-impact-report.lock.yml
index 50c7cf6463a..e55877d5a17 100644
--- a/.github/workflows/objective-impact-report.lock.yml
+++ b/.github/workflows/objective-impact-report.lock.yml
@@ -1,4 +1,4 @@
-# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e357ecaf2b1bac669b156ce98fc34afb31faf80acf85b19f4b1cd9069ab7aca6","body_hash":"d00ce693309b0e904ead553df2fafa18a139b195719b184b851a571250604e0f","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.63"}}
+# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e357ecaf2b1bac669b156ce98fc34afb31faf80acf85b19f4b1cd9069ab7aca6","body_hash":"c34a1bbc966aa23f82574cf66b9e59601319f9f91c2050a2a9f978d2eb0ca968","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.63"}}
 # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/restore","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/save","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/checkout","sha":"df4cb1c069e1874edd31b4311f1884172cec0e10","version":"v6.0.3"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.4","digest":"sha256:b268ebf37df2428b19efcb383f001d65dc6a5ec10af43feb886d1a8477ab0e3a","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.4@sha256:b268ebf37df2428b19efcb383f001d65dc6a5ec10af43feb886d1a8477ab0e3a"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.4","digest":"sha256:3ea0d12a2d124db8ed6e2d18aff040e30ab3568161f258a132fccdeede4198cd","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.4@sha256:3ea0d12a2d124db8ed6e2d18aff040e30ab3568161f258a132fccdeede4198cd"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.4","digest":"sha256:72c378c029d2fad4684847ab44c329e526ac6b1a78cdf97656870ea11d201545","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.4@sha256:72c378c029d2fad4684847ab44c329e526ac6b1a78cdf97656870ea11d201545"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.4","digest":"sha256:87979038897e40caed22245b64d1daa796390d2dca289b99d3d1174c85740af8","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.4@sha256:87979038897e40caed22245b64d1daa796390d2dca289b99d3d1174c85740af8"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.26","digest":"sha256:d3b03f54eee3a8176818c9a52087623e45b7f644a28814337fcc0838e2534490","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.26@sha256:d3b03f54eee3a8176818c9a52087623e45b7f644a28814337fcc0838e2534490"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b","pinned_image":"ghcr.io/github/gh-aw-node@sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b"},{"image":"ghcr.io/github/github-mcp-server:v1.3.0","digest":"sha256:5c83359327a0bacc3d34db730bea6557d39d341cee0bf6c58c9a896e33150e80","pinned_image":"ghcr.io/github/github-mcp-server:v1.3.0@sha256:5c83359327a0bacc3d34db730bea6557d39d341cee0bf6c58c9a896e33150e80"}]}
 # This file was automatically generated by gh-aw. DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
 #
diff --git a/.github/workflows/objective-impact-report.md b/.github/workflows/objective-impact-report.md
index 6cafc52fbf9..0ea1000f9c0 100644
--- a/.github/workflows/objective-impact-report.md
+++ b/.github/workflows/objective-impact-report.md
@@ -207,14 +207,20 @@ Create one issue titled:
 Impact Efficiency Report - YYYY-MM-DD
 ```
 
+Use **progressive disclosure** for the report body. Place the Executive Summary first as plain text (no collapsible wrapper). Wrap every other section individually in an HTML `<details><summary>` block so readers can expand only what they need. Use descriptive summary labels that include the section's most important number where possible (e.g. `📋 Summary — 3 accepted outcomes, 43,055 AIC, IE 0.00476`, `🎯 Agentic Work by Objective — top: bug (170 value)`, `📉 Data Quality — 2 gaps`).
+
 The report must include:
 
 ### Executive Summary
 
 Write 2–4 sentences that directly answer: *What did the agent work on, what was the highest-impact agentic work, which workflows contributed most to that impact, how efficiently were AIC tokens spent, and what high-impact work was delivered outside agentic workflows (if any)?* Highlight the most impactful objective categories, the workflows contributing the most value, and any significant gaps (e.g., large AIC spend with no mapped objective value).
 
+The Executive Summary must **not** be wrapped in a `<details>` block — it is always visible.
+
 ### Summary
 
+*(Wrap this section in `<details><summary>📋 Summary — …</summary>…</details>`.)*
+
 | Metric | Value |
 |---|---:|
 
@@ -233,13 +239,15 @@ Include:
 
 ### Agentic Work by Objective
 
+*(Wrap this section in `<details><summary>🎯 Agentic Work by Objective — …</summary>…</details>`.)*
+
 Group all **accepted, mapped** outcomes by objective category (the highest-value objective label from the mapping). For each category, list:
 
 - Objective category name and its mapping value
 - Number of accepted outcomes in this category
 - Total outcome value contributed
-- AIC consumed by outcomes in this category
-- Impact Efficiency for this category (total outcome value / AIC consumed)
+- AIC consumed by outcomes in this category — use per-workflow AIC from `aic-by-workflow.json` only for workflows that are attributed to outcomes in this category; if attribution is unavailable, show `—` (not `N/A`) and add a note that workflow attribution is required to compute per-category AIC
+- Impact Efficiency for this category (total outcome value / AIC consumed) — show `—` if AIC is unknown for this category
 - Representative examples (up to 3 linked outcomes)
 
 Sort categories by total outcome value descending. Also call out separately which category consumed the **most AIC** (highest denominator cost), so readers can see where budget was spent regardless of value delivered.
@@ -248,6 +256,8 @@ This section should make the most impactful work in the repository obvious at a
 
 ### Which Workflows Drove That Impact
 
+*(Wrap this section in `<details><summary>⚙️ Which Workflows Drove That Impact — …</summary>…</details>`.)*
+
 Group all analyzed outcomes by the workflow that directly produced them. For each workflow, list:
 
 - Workflow name
@@ -269,6 +279,8 @@ If any analyzed outcomes cannot be attributed to a workflow, report an unattribu
 
 ### Top outcomes by outcome value
 
+*(Wrap this section in `<details><summary>🏆 Top Outcomes by Value — top outcome value: …</summary>…</details>`.)*
+
 | Outcome | Workflow | Type | Root / Associated Objective | Objective Value | Outcome Value |
 |---|---|---|---|---:|---:|
 
@@ -276,6 +288,8 @@ List the top 15 outcomes with highest Outcome Value. Include a link to the PR or
 
 ### Unmapped outcomes
 
+*(Wrap this section in `<details><summary>❓ Unmapped Outcomes — N unmapped</summary>…</details>`. If there are no unmapped outcomes, use the summary label `❓ Unmapped Outcomes — none`.)*
+
 | Outcome | Type | Reason objective was not mapped |
 |---|---|---|
 
@@ -283,6 +297,8 @@ Only include outcomes that were in scope (linked-issue PRs and safe-output issue
 
 ### Interpretation
 
+*(Wrap this section in `<details><summary>💡 Interpretation</summary>…</details>`.)*
+
 Compare:
 
 - accepted outcome count alone
@@ -290,6 +306,10 @@ Compare:
 
 Explain which one better reflects meaningful delivered value relative to cost.
 
+Also compute and report a **scope-adjusted IE**: using only AIC from workflows that produced at least one PR or safe-output outcome in the analysis window (i.e., workflows listed in `aic-by-workflow.json` whose name matches any workflow that attributed at least one analyzed outcome). This gives a fairer picture of efficiency for outcome-producing workflows. Present both the full-denominator IE and the scope-adjusted IE; label them clearly.
+
+Do **not** describe IE as "artificially" depressed. Instead, explain concretely what the denominator includes (all workflows, including reporting and analysis workflows that produced no PR outcomes), and present the scope-adjusted IE as the supplemental view.
+
 Call out the most significant findings:
 
 - which objective category delivered the most value per AIC
@@ -298,6 +318,8 @@ Call out the most significant findings:
 
 ### Data quality
 
+*(Wrap this section in `<details><summary>📊 Data Quality — N issues</summary>…</details>`. Count the number of ⚠️ and ❌ items and use that count in the summary label.)*
+
 Mention missing or weak links in:
 
 - PR root tracing and linked-closing-issue coverage (count of PRs excluded for lacking a linked issue)
@@ -311,9 +333,20 @@ If AI Credits are unavailable, still produce the delivered-value analysis and cl
 
 ### Human Work
 
+*(Wrap this section in `<details><summary>👤 Human Work — N merged PRs</summary>…</details>`.)*
+
 This section is independent of AIC and the agentic efficiency analysis above. It captures pull requests merged in the analysis window that could not be attributed to any GitHub Agentic Workflow run in the deterministic logs.
 
-Identify merged PRs from `/tmp/gh-aw/agent/objective-impact-report/merged-prs-linked.json` that have **no** matching run in `/tmp/gh-aw/agent/objective-impact-report/workflow-logs.json` (i.e., PRs whose author or head branch cannot be linked to any workflow run that produced an outcome). Treat these as human-authored contributions for reporting, but explicitly note that missing log coverage or attribution gaps can inflate this count.
+Identify merged PRs from `/tmp/gh-aw/agent/objective-impact-report/merged-prs-linked.json` that have **no** matching run in `/tmp/gh-aw/agent/objective-impact-report/workflow-logs.json` (i.e., PRs whose author or head branch cannot be linked to any workflow run that produced an outcome).
+
+Before reporting these as human-authored, apply the following filter to identify **likely-agentic PRs** that may appear human due to attribution gaps:
+
+- PR title matches patterns such as `[docs]`, `[linter-miner]`, `[fix]`, `[refactor]`, `[chore]`, or other known bot-prefixes used in this repository.
+- PR author is a bot account (login ending in `[bot]` or known agentic accounts).
+
+Report likely-agentic PRs in a separate sub-table labelled **"Likely agentic (attribution gap)"** rather than counting them in the human total. This prevents attribution gaps from inflating the human work count. Explicitly note how many PRs were reclassified.
+
+For the remaining PRs classified as human-authored, treat them as human contributions for reporting. Explicitly note that missing log coverage or attribution gaps can still inflate this count.
 
 For each human-authored merged PR that has a linked closing issue (non-empty `linked_issue_numbers`), use precomputed objective fields from `merged-prs-with-objective.json` when available; otherwise resolve issue labels from linked issues and apply `objective-mapping.json`. Group results by objective category (highest-value mapped label) and report:
 
@@ -324,9 +357,10 @@ For each human-authored merged PR that has a linked closing issue (non-empty `li
 
 Also report:
 
-- Total number of human-authored merged PRs identified in the analysis window
-- Number with a linked closing issue vs. without
-- Number mapped to an objective vs. unmapped
+- Total number of merged PRs in the dataset
+- Of those: likely-agentic (attribution gap), confirmed-human
+- Of confirmed-human: with linked closing issue vs. without
+- Of confirmed-human with linked issue: mapped to objective vs. unmapped
 
 Sort categories by total objective value descending. Do **not** compute AIC or Impact Efficiency for this section — human work has no associated AI Credits cost.
 

From 46fc6180809c5f6a3fa4eb2692fac82e2b18041f Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 17 Jun 2026 16:51:40 +0000
Subject: [PATCH 3/9] Add Recommendations section to Impact Efficiency Report

Generate actionable, evidence-grounded recommendations from each cycle's
data quality gaps: workflow attribution, linked-issue coverage, objective
label coverage, AIC per-outcome attribution, PR dataset cap, and
likely-agentic reclassification. Each recommendation includes the specific
gap with concrete numbers, expected effect on report accuracy, and the
owner/mechanism. Only recommendations confirmed by the cycle's data are
emitted. Recompile lock file.

Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
---
 .../objective-impact-report.lock.yml          |  2 +-
 .github/workflows/objective-impact-report.md  | 29 +++++++++++++++++++
 2 files changed, 30 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/objective-impact-report.lock.yml b/.github/workflows/objective-impact-report.lock.yml
index e55877d5a17..2198d613a6c 100644
--- a/.github/workflows/objective-impact-report.lock.yml
+++ b/.github/workflows/objective-impact-report.lock.yml
@@ -1,4 +1,4 @@
-# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e357ecaf2b1bac669b156ce98fc34afb31faf80acf85b19f4b1cd9069ab7aca6","body_hash":"c34a1bbc966aa23f82574cf66b9e59601319f9f91c2050a2a9f978d2eb0ca968","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.63"}}
+# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e357ecaf2b1bac669b156ce98fc34afb31faf80acf85b19f4b1cd9069ab7aca6","body_hash":"c989261185ed28737799a96b33329a704dfd50b6234dbdecfc7af8cda9935110","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.63"}}
 # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/restore","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/save","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/checkout","sha":"df4cb1c069e1874edd31b4311f1884172cec0e10","version":"v6.0.3"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.4","digest":"sha256:b268ebf37df2428b19efcb383f001d65dc6a5ec10af43feb886d1a8477ab0e3a","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.4@sha256:b268ebf37df2428b19efcb383f001d65dc6a5ec10af43feb886d1a8477ab0e3a"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.4","digest":"sha256:3ea0d12a2d124db8ed6e2d18aff040e30ab3568161f258a132fccdeede4198cd","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.4@sha256:3ea0d12a2d124db8ed6e2d18aff040e30ab3568161f258a132fccdeede4198cd"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.4","digest":"sha256:72c378c029d2fad4684847ab44c329e526ac6b1a78cdf97656870ea11d201545","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.4@sha256:72c378c029d2fad4684847ab44c329e526ac6b1a78cdf97656870ea11d201545"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.4","digest":"sha256:87979038897e40caed22245b64d1daa796390d2dca289b99d3d1174c85740af8","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.4@sha256:87979038897e40caed22245b64d1daa796390d2dca289b99d3d1174c85740af8"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.26","digest":"sha256:d3b03f54eee3a8176818c9a52087623e45b7f644a28814337fcc0838e2534490","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.26@sha256:d3b03f54eee3a8176818c9a52087623e45b7f644a28814337fcc0838e2534490"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b","pinned_image":"ghcr.io/github/gh-aw-node@sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b"},{"image":"ghcr.io/github/github-mcp-server:v1.3.0","digest":"sha256:5c83359327a0bacc3d34db730bea6557d39d341cee0bf6c58c9a896e33150e80","pinned_image":"ghcr.io/github/github-mcp-server:v1.3.0@sha256:5c83359327a0bacc3d34db730bea6557d39d341cee0bf6c58c9a896e33150e80"}]}
 # This file was automatically generated by gh-aw. DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
 #
diff --git a/.github/workflows/objective-impact-report.md b/.github/workflows/objective-impact-report.md
index 0ea1000f9c0..37707ce04af 100644
--- a/.github/workflows/objective-impact-report.md
+++ b/.github/workflows/objective-impact-report.md
@@ -331,6 +331,35 @@ State whether AI Credits came from deterministic precomputed data or from a live
 
 If AI Credits are unavailable, still produce the delivered-value analysis and clearly state that the cost-normalized Impact Efficiency metric could not be computed.
 
+### Recommendations
+
+*(Wrap this section in `<details><summary>✅ Recommendations — N action items</summary>…</details>`. Count only the action items that apply this cycle (i.e., have concrete evidence from this report's data) and use that count in the summary label.)*
+
+Generate **actionable, evidence-grounded recommendations** to improve the accuracy, determinism, and attribution of the next report. Base each recommendation directly on a gap identified in the Data Quality section or a finding from the analysis — do not produce generic advice.
+
+For each recommendation, include:
+
+- A short title (one line)
+- The specific gap or finding from this cycle that motivates it (with concrete numbers where available, e.g., "993 PRs excluded for lacking `Closes #N`")
+- The expected effect on report accuracy: which metric would improve and by how much, if estimable from available data (e.g., "would convert up to N excluded PRs into analyzable outcomes")
+- The owner or mechanism (workflow name, script, PR template change, etc.)
+
+Generate a recommendation for each of the following gap categories **only when the gap is confirmed by this cycle's data**:
+
+1. **Workflow attribution**: If any analyzed outcomes are unattributed (no `workflow_run_id`/`workflow_name` link), recommend the specific change needed to emit that field — e.g., adding a `workflow_run_id` to PR bodies at creation time, or extending the dataset preparation script to join on head-branch naming conventions. Specify which workflow or script would need the change.
+
+2. **Linked-issue coverage**: If a significant number of PRs were excluded for lacking a `Closes #N` link, recommend adding a PR body template or linter that enforces the link for agentic-workflow-created PRs. Include the exclusion count to quantify the impact.
+
+3. **Objective label coverage**: If any in-scope outcomes were unmapped (objective value = 0 with labels present), recommend adding the missing labels to `.github/objective-mapping.json`. List the specific unmapped labels observed this cycle.
+
+4. **AIC per-outcome attribution**: If per-category or per-workflow AIC could not be computed because attribution was missing, recommend the minimal dataset join that would enable it (e.g., matching workflow log entries to outcome PRs by branch name or run ID).
+
+5. **PR dataset cap**: If the merged or closed-unmerged PR dataset was capped at fewer records than the window might contain (check `dataset-manifest.json` for cap warnings), recommend increasing `OBJECTIVE_IMPACT_PR_LIST_LIMIT` or paginating the fetch.
+
+6. **Likely-agentic reclassification**: If a significant number of PRs were moved to the "likely agentic (attribution gap)" bucket in the Human Work section, recommend the specific attribution improvement (e.g., stamping the producing workflow name in the PR body) that would collapse that bucket in the next cycle.
+
+Only include recommendations that are directly supported by data from this cycle. Omit any category where the data shows no gap (e.g., if attribution is fully resolved, omit recommendation 1). Sort recommendations by expected impact on report accuracy, highest first.
+
 ### Human Work
 
 *(Wrap this section in `<details><summary>👤 Human Work — N merged PRs</summary>…</details>`.)*

From d178bfc54de25bf123855df9faaf0b8f228367c4 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 17 Jun 2026 17:01:22 +0000
Subject: [PATCH 4/9] Revert unintended changes to
 example-failure-category-filter.lock.yml

The recompile step moved the zizmor ignore comment from a standalone line
to an inline comment; restore the original formatting.

Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
---
 .github/workflows/example-failure-category-filter.lock.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/example-failure-category-filter.lock.yml b/.github/workflows/example-failure-category-filter.lock.yml
index 33210d13565..7c0564ab921 100644
--- a/.github/workflows/example-failure-category-filter.lock.yml
+++ b/.github/workflows/example-failure-category-filter.lock.yml
@@ -1575,7 +1575,8 @@ jobs:
       - name: Configure GH_HOST for enterprise compatibility
         id: ghes-host-config
         shell: bash
-        run: | # zizmor: ignore[github-env] - GITHUB_SERVER_URL is set by GitHub Actions, not user input.
+        # zizmor: ignore[github-env] - GITHUB_SERVER_URL is set by GitHub Actions, not user input.
+        run: |
           # Derive GH_HOST from GITHUB_SERVER_URL so the gh CLI targets the correct
           # GitHub instance (GHES/GHEC). On github.com this is a harmless no-op.
           GH_HOST="${GITHUB_SERVER_URL#https://}"

From 2c18c9a393d4f9b0c1dc0e6c4aee08f59f9618f3 Mon Sep 17 00:00:00 2001
From: Mara Nikola Kiefer <8320933+mnkiefer@users.noreply.github.com>
Date: Wed, 17 Jun 2026 20:40:02 +0200
Subject: [PATCH 5/9] Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
 .github/workflows/objective-impact-report.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/objective-impact-report.md b/.github/workflows/objective-impact-report.md
index 37707ce04af..b798f4265f5 100644
--- a/.github/workflows/objective-impact-report.md
+++ b/.github/workflows/objective-impact-report.md
@@ -207,7 +207,7 @@ Create one issue titled:
 Impact Efficiency Report - YYYY-MM-DD
 ```
 
-Use **progressive disclosure** for the report body. Place the Executive Summary first as plain text (no collapsible wrapper). Wrap every other section individually in an HTML `<details><summary>` block so readers can expand only what they need. Use descriptive summary labels that include the section's most important number where possible (e.g. `📋 Summary — 3 accepted outcomes, 43,055 AIC, IE 0.00476`, `🎯 Agentic Work by Objective — top: bug (170 value)`, `📉 Data Quality — 2 gaps`).
+Use **progressive disclosure** for the report body. Place the Executive Summary first as plain text (no collapsible wrapper). Wrap every other section individually in an HTML `<details>` block using the canonical structure (`<details>` on its own line, `<summary>…</summary>` on its own line, then a blank line before the section body, ending with `</details>`). Use descriptive summary labels that include the section's most important number where possible (e.g. `📋 Summary — 3 accepted outcomes, 43,055 AIC, IE 0.00476`, `🎯 Agentic Work by Objective — top: bug (170 value)`, `📉 Data Quality — 2 gaps`).
 
 The report must include:
 

From fc07a0624e41dd3cced2072e7898990abeef974b Mon Sep 17 00:00:00 2001
From: Mara Nikola Kiefer <8320933+mnkiefer@users.noreply.github.com>
Date: Wed, 17 Jun 2026 20:41:35 +0200
Subject: [PATCH 6/9] Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
 .github/workflows/objective-impact-report.md | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/objective-impact-report.md b/.github/workflows/objective-impact-report.md
index b798f4265f5..4237012d16d 100644
--- a/.github/workflows/objective-impact-report.md
+++ b/.github/workflows/objective-impact-report.md
@@ -306,7 +306,9 @@ Compare:
 
 Explain which one better reflects meaningful delivered value relative to cost.
 
-Also compute and report a **scope-adjusted IE**: using only AIC from workflows that produced at least one PR or safe-output outcome in the analysis window (i.e., workflows listed in `aic-by-workflow.json` whose name matches any workflow that attributed at least one analyzed outcome). This gives a fairer picture of efficiency for outcome-producing workflows. Present both the full-denominator IE and the scope-adjusted IE; label them clearly.
+Also compute and report a **scope-adjusted IE** when workflow attribution is available: use only AIC from workflows that are attributed to at least one PR or safe-output outcome in the analysis window. If no analyzed outcomes can be attributed to a workflow, show scope-adjusted IE as `—` and explain that workflow attribution is required to compute it.
+
+Present both the full-denominator IE and the scope-adjusted IE; label them clearly.
 
 Do **not** describe IE as "artificially" depressed. Instead, explain concretely what the denominator includes (all workflows, including reporting and analysis workflows that produced no PR outcomes), and present the scope-adjusted IE as the supplemental view.
 

From 39561f2716cfeb27d797d18b9d3454574ad59fcd Mon Sep 17 00:00:00 2001
From: Mara Nikola Kiefer <8320933+mnkiefer@users.noreply.github.com>
Date: Wed, 17 Jun 2026 20:41:48 +0200
Subject: [PATCH 7/9] Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
 .github/workflows/objective-impact-report.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/objective-impact-report.md b/.github/workflows/objective-impact-report.md
index 4237012d16d..bf163781ab1 100644
--- a/.github/workflows/objective-impact-report.md
+++ b/.github/workflows/objective-impact-report.md
@@ -250,7 +250,7 @@ Group all **accepted, mapped** outcomes by objective category (the highest-value
 - Impact Efficiency for this category (total outcome value / AIC consumed) — show `—` if AIC is unknown for this category
 - Representative examples (up to 3 linked outcomes)
 
-Sort categories by total outcome value descending. Also call out separately which category consumed the **most AIC** (highest denominator cost), so readers can see where budget was spent regardless of value delivered.
+Sort categories by total outcome value descending. If per-category AIC is available, also call out separately which category consumed the **most AIC**; otherwise state that the most-AIC category cannot be determined without workflow attribution.
 
 This section should make the most impactful work in the repository obvious at a glance.
 

From 1c57cb67b212e5439ab2ae34a8bad85a98a7eea7 Mon Sep 17 00:00:00 2001
From: Mara Nikola Kiefer <8320933+mnkiefer@users.noreply.github.com>
Date: Wed, 17 Jun 2026 20:42:19 +0200
Subject: [PATCH 8/9] Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
 .github/workflows/objective-impact-report.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/objective-impact-report.md b/.github/workflows/objective-impact-report.md
index bf163781ab1..07c79264244 100644
--- a/.github/workflows/objective-impact-report.md
+++ b/.github/workflows/objective-impact-report.md
@@ -373,7 +373,7 @@ Identify merged PRs from `/tmp/gh-aw/agent/objective-impact-report/merged-prs-li
 Before reporting these as human-authored, apply the following filter to identify **likely-agentic PRs** that may appear human due to attribution gaps:
 
 - PR title matches patterns such as `[docs]`, `[linter-miner]`, `[fix]`, `[refactor]`, `[chore]`, or other known bot-prefixes used in this repository.
-- PR author is a bot account (login ending in `[bot]` or known agentic accounts).
+- PR author is a bot account (login ending in the literal suffix ``[bot]`` — e.g. ``dependabot[bot]`` — or known agentic accounts).
 
 Report likely-agentic PRs in a separate sub-table labelled **"Likely agentic (attribution gap)"** rather than counting them in the human total. This prevents attribution gaps from inflating the human work count. Explicitly note how many PRs were reclassified.
 

From 4558a82084afd4bd9212faffc1b585aa9a6e77b3 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Wed, 17 Jun 2026 19:27:21 +0000
Subject: [PATCH 9/9] Recompile objective-impact-report workflow

Co-authored-by: mnkiefer <8320933+mnkiefer@users.noreply.github.com>
---
 .github/workflows/objective-impact-report.lock.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/objective-impact-report.lock.yml b/.github/workflows/objective-impact-report.lock.yml
index 2198d613a6c..7f67935d18b 100644
--- a/.github/workflows/objective-impact-report.lock.yml
+++ b/.github/workflows/objective-impact-report.lock.yml
@@ -1,4 +1,4 @@
-# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e357ecaf2b1bac669b156ce98fc34afb31faf80acf85b19f4b1cd9069ab7aca6","body_hash":"c989261185ed28737799a96b33329a704dfd50b6234dbdecfc7af8cda9935110","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.63"}}
+# gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"e357ecaf2b1bac669b156ce98fc34afb31faf80acf85b19f4b1cd9069ab7aca6","body_hash":"3e39d91da6f67f842341a90d86028f22fdc7799526f1d969246551db0a4e5a24","strict":true,"agent_id":"copilot","engine_versions":{"copilot":"1.0.63"}}
 # gh-aw-manifest: {"version":1,"secrets":["COPILOT_GITHUB_TOKEN","GH_AW_GITHUB_MCP_SERVER_TOKEN","GH_AW_GITHUB_TOKEN","GITHUB_TOKEN"],"actions":[{"repo":"actions/cache","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/restore","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/cache/save","sha":"27d5ce7f107fe9357f9df03efb73ab90386fccae","version":"v5.0.5"},{"repo":"actions/checkout","sha":"df4cb1c069e1874edd31b4311f1884172cec0e10","version":"v6.0.3"},{"repo":"actions/download-artifact","sha":"3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c","version":"v8.0.1"},{"repo":"actions/github-script","sha":"3a2844b7e9c422d3c10d287c895573f7108da1b3","version":"v9.0.0"},{"repo":"actions/setup-node","sha":"48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e","version":"v6.4.0"},{"repo":"actions/upload-artifact","sha":"043fb46d1a93c77aae656e7c1c64a875d1fc6a0a","version":"v7.0.1"}],"containers":[{"image":"ghcr.io/github/gh-aw-firewall/agent:0.27.4","digest":"sha256:b268ebf37df2428b19efcb383f001d65dc6a5ec10af43feb886d1a8477ab0e3a","pinned_image":"ghcr.io/github/gh-aw-firewall/agent:0.27.4@sha256:b268ebf37df2428b19efcb383f001d65dc6a5ec10af43feb886d1a8477ab0e3a"},{"image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.4","digest":"sha256:3ea0d12a2d124db8ed6e2d18aff040e30ab3568161f258a132fccdeede4198cd","pinned_image":"ghcr.io/github/gh-aw-firewall/api-proxy:0.27.4@sha256:3ea0d12a2d124db8ed6e2d18aff040e30ab3568161f258a132fccdeede4198cd"},{"image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.4","digest":"sha256:72c378c029d2fad4684847ab44c329e526ac6b1a78cdf97656870ea11d201545","pinned_image":"ghcr.io/github/gh-aw-firewall/cli-proxy:0.27.4@sha256:72c378c029d2fad4684847ab44c329e526ac6b1a78cdf97656870ea11d201545"},{"image":"ghcr.io/github/gh-aw-firewall/squid:0.27.4","digest":"sha256:87979038897e40caed22245b64d1daa796390d2dca289b99d3d1174c85740af8","pinned_image":"ghcr.io/github/gh-aw-firewall/squid:0.27.4@sha256:87979038897e40caed22245b64d1daa796390d2dca289b99d3d1174c85740af8"},{"image":"ghcr.io/github/gh-aw-mcpg:v0.3.26","digest":"sha256:d3b03f54eee3a8176818c9a52087623e45b7f644a28814337fcc0838e2534490","pinned_image":"ghcr.io/github/gh-aw-mcpg:v0.3.26@sha256:d3b03f54eee3a8176818c9a52087623e45b7f644a28814337fcc0838e2534490"},{"image":"ghcr.io/github/gh-aw-node","digest":"sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b","pinned_image":"ghcr.io/github/gh-aw-node@sha256:529d02eb970b1161aa25c593a9c3df57fdfad5a8add328cb3b6eccef66f3183b"},{"image":"ghcr.io/github/github-mcp-server:v1.3.0","digest":"sha256:5c83359327a0bacc3d34db730bea6557d39d341cee0bf6c58c9a896e33150e80","pinned_image":"ghcr.io/github/github-mcp-server:v1.3.0@sha256:5c83359327a0bacc3d34db730bea6557d39d341cee0bf6c58c9a896e33150e80"}]}
 # This file was automatically generated by gh-aw. DO NOT EDIT. To debug this workflow, load the skill at https://github.com/github/gh-aw/blob/main/debug.md
 #
