Skip to content

Enhance Copilot Review Analyst skill: v3 newsletter report + adoption-signal & fairness methodology, Fixes AB#3696013 - #449

Merged
shahzaibj merged 9 commits into
masterfrom
shjameel-microsoft-copilot-review-analysis
Jul 30, 2026
Merged

Enhance Copilot Review Analyst skill: v3 newsletter report + adoption-signal & fairness methodology, Fixes AB#3696013#449
shahzaibj merged 9 commits into
masterfrom
shjameel-microsoft-copilot-review-analysis

Conversation

@shahzaibj

@shahzaibj shahzaibj commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

Summary

Bakes this cycle's learnings into the copilot-review-analyst skill (.github/skills/copilot-review-analyst). Two themes: a redesigned v3 newsletter report + hardened Outlook rendering, and a stronger, fairer classification methodology.

Fixes AB#3696013

Report / rendering

  • v3 newsletter Outlook report (assets/…-Outlook.html): 1200px hybrid-fluid shell, edge-to-edge newsletter masthead (inset hero + 1120px VML width), big-number KPI hero grid, single-row meta-chips, and a Methodology section. Committed as the anonymized sample, single-quoted (escaping-free).
  • Headline leads with adoption % (Helpful & adopted), not precision — precision is near-100% by construction once Declined/Unresolved are excluded, so leading with it overstates the story.
  • Outlook rendering learnings documented in references/report-formatting.md § v3 Newsletter Rendering:
    • Meta-chips must be one single-row table — separate inline-block tables stack vertically in classic Outlook.
    • Body prose needs line-height plus mso-line-height-rule:exactly or the Word engine collapses leading.
    • Edge-to-edge frame: whiten the outer canvas bgcolor and inline CSS (Word engine reads bgcolor).
    • Newsletter masthead: inset hero to the text column + VML fallback width = container − 2×gutter.
    • Delivery: Graph draft preferred, with an Outlook COM fallback when WorkIQ/Graph is unavailable.

Classification / methodology

  • Declined verdict + Copilot precision = Helpful / (Helpful + Incorrect); Declined is neutral and never counted against Copilot.
  • Force-push confound validation before scoring precision (a correct comment on a rewritten snapshot no longer looks like a false positive).
  • Engineer-intention nuance: correct-but-declined feedback is a judgment call, not a Copilot error.
  • New adoption signals: reaction + apply-suggestion detection (silent adoption), merged-only PR filter, Phase 0 preflight coverage audit, review-coverage split, self-consistency gate, and a PR triage table.

Notes

  • The standard .md/.html assets remain structural references (illustrative prior-run data — computed fresh each run).
  • No product code touched; skill/docs only.

…-signal & fairness methodology, Fixes AB#3696013

Report / rendering:
- v3 newsletter Outlook report: 1200px hybrid-fluid shell, edge-to-edge newsletter masthead (inset hero + 1120px VML), big-number KPI hero grid, single-row meta-chips, Methodology section
- Headline now leads with adoption % (Helpful & adopted), not precision
- Document Outlook rendering learnings in report-formatting.md: single-row chip table (not inline-block), mso-line-height-rule:exactly for prose, edge-to-edge frame (whiten bgcolor AND inline CSS), inset masthead + VML width, Graph-draft delivery with Outlook COM fallback

Classification / methodology:
- Declined verdict + Copilot precision (Helpful / (Helpful + Incorrect)); Declined is neutral
- Force-push confound validation before scoring precision
- Engineer-intention nuance: correct-but-declined feedback is not a Copilot error
- New adoption signals: reaction + apply-suggestion detection, merged-only PR filter, Phase 0 preflight coverage audit, review-coverage split, self-consistency gate, PR triage table

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d4fbe65f-9d71-4531-b63e-b5a12b21fba4
@shahzaibj
shahzaibj requested a review from a team as a code owner July 18, 2026 19:33
@github-actions github-actions Bot changed the title Enhance Copilot Review Analyst skill: v3 newsletter report + adoption-signal & fairness methodology Enhance Copilot Review Analyst skill: v3 newsletter report + adoption-signal & fairness methodology, Fixes AB#3696013 Jul 18, 2026
@github-actions

Copy link
Copy Markdown

✅ Work item link check complete. Description contains link AB#3696013 to an Azure Boards work item.

1 similar comment
@github-actions

Copy link
Copy Markdown

✅ Work item link check complete. Description contains link AB#3696013 to an Azure Boards work item.

shahzaibj and others added 6 commits July 18, 2026 13:30
…-signal & fairness methodology, Fixes AB#3696013

Report / rendering:
- v3 newsletter Outlook report: 1200px hybrid-fluid shell, edge-to-edge newsletter masthead (inset hero + 1120px VML), big-number KPI hero grid, single-row meta-chips, Methodology section
- Headline now leads with adoption % (Helpful & adopted), not precision
- Document Outlook rendering learnings in report-formatting.md: single-row chip table (not inline-block), mso-line-height-rule:exactly for prose, edge-to-edge frame (whiten bgcolor AND inline CSS), inset masthead + VML width, Graph-draft delivery with Outlook COM fallback

Classification / methodology:
- Declined verdict + Copilot precision (Helpful / (Helpful + Incorrect)); Declined is neutral
- Force-push confound validation before scoring precision
- Engineer-intention nuance: correct-but-declined feedback is not a Copilot error
- New adoption signals: reaction + apply-suggestion detection, merged-only PR filter, Phase 0 preflight coverage audit, review-coverage split, self-consistency gate, PR triage table

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d4fbe65f-9d71-4531-b63e-b5a12b21fba4
…-signal & fairness methodology, Fixes AB#3696013

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d4fbe65f-9d71-4531-b63e-b5a12b21fba4
Removes the AuthClientAndroidPipelines and telemetry-platform ignore
entries that were inadvertently carried over from earlier branch work;
they are not part of the copilot-review-analyst skill changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d4fbe65f-9d71-4531-b63e-b5a12b21fba4
@fadidurah

Copy link
Copy Markdown
Contributor

PR Body mentioned a .gitignore addition, but i'm not seeing it in the files, is it stale?

@fadidurah fadidurah left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment thread .github/skills/copilot-review-analyst/scripts/append-history.ps1
append-history.ps1 computed $unknownCount but never wrote it to the
snapshot, so whenever any comment stayed 'unknown' the additive buckets
(helpful + incorrect + declined + unresolved) summed to less than total.
That made history.json inconsistent with final-classification.ps1, which
treats 'unknown' as a canonical bucket in its sum-to-total gate.

- Add unknown = { count, pct } to the emitted snapshot (after unresolved)
- Compute $unknownPct alongside the other bucket percentages
- Print an Unknown line in the console summary for parity
- Add a self-consistency assertion that warns if the five canonical
  additive buckets do not reconcile to total

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d4fbe65f-9d71-4531-b63e-b5a12b21fba4
@github-actions

Copy link
Copy Markdown

❌ Work item link check failed. Description does not contain AB#{ID}.

Click here to Learn more.

@shahzaibj

Copy link
Copy Markdown
Contributor Author

@fadidurah you're right, it was stale. The .gitignore change was unrelated to this PR (it snuck in from an auto-merge), so I dropped it in 1e6dac5 — the diff now touches only the skill files. I've also updated the PR description to remove that line. Thanks for flagging.

@@ -54,102 +56,109 @@ if (Test-Path $precisePath) {
$precise = Get-Content $precisePath -Raw | ConvertFrom-Json

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

$precise / precise.json is now dead code.

This PR removed the $preciseMap re-derivation , but precise.json is still loaded into $precise here and never referenced again anywhere in the file. The .SYNOPSIS and .PARAMETER InputDir also still say the script "Reads final_classification.json and precise.json."

Suggest dropping the load and the $precisePath line, and updating the doc comments, so the script no longer implies a dependency it doesn't have.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right — dead code. Removed in 60f214c: dropped both $precisePath and the $precise load block, and updated .DESCRIPTION + .PARAMETER InputDir to reference only final_classification.json.

I kept the one rationale comment noting we deliberately don't re-derive silent-helpful from precise.json — that documents the absence of the dependency rather than implying one, so it shouldn't be misleading. Verified the script runs end-to-end with no precise.json present and buckets still reconcile to total.

An earlier change dropped the $preciseMap re-derivation, but precise.json
was still loaded into $precise (and $precisePath computed) and never
referenced again. The .SYNOPSIS/.PARAMETER InputDir doc comments also still
claimed the script reads precise.json, implying a dependency it no longer has.

- Drop $precisePath and the $precise load block
- Update .DESCRIPTION and .PARAMETER InputDir to mention only
  final_classification.json

The design-rationale comment noting we deliberately do NOT re-derive
silent-helpful from precise.json is kept — it documents the absence of the
dependency rather than implying one. Verified the script runs end-to-end with
no precise.json present and buckets still reconcile to total.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: d4fbe65f-9d71-4531-b63e-b5a12b21fba4
@shahzaibj
shahzaibj merged commit e0c30c7 into master Jul 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants