Repository navigation
Expose citation-safe prose to /issue triage - #39276
Conversation
Prepare each source's existing Get-Prose projection before context hashing and guide the producer to quote verbatim raw and filtered prose. Preserve fresh-body validation and all publication guards. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
|
🚀 Dogfood this PR with:
curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 39276Or
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 39276" |
|
Azure Pipelines: 1 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
Skill Validation Results
✅ Skill Validation Results —
|
There was a problem hiding this comment.
🔵 Needs a closer look
The trusted triage workflow behavior lacks live end-to-end verification, although static checks passed and observed Pester failures match the baseline.
0 open findings
What changed in this PR
Exposes citation-safe prose to /issue triage, helping the agent select evidence that trusted validation accepts.
Changes:
- Adds
source.prosebefore snapshot hashing. - Updates citation-selection guidance and documentation.
- Regenerates workflow metadata.
| File | Description |
|---|---|
.github/scripts/IssueTriage.ps1 |
Adds prose projections to snapshots. |
.github/workflows/issue-triage.md |
Guides citation selection. |
.github/workflows/issue-triage.lock.yml |
Updates generated body hash. |
.github/skills/issue-triage-labels/SKILL.md |
Documents evidence requirements. |
.github/docs/issue-triage.md |
Documents projection and hashing behavior. |
🧠 Review effort: Balanced
|
@dalexsoto stamp |
Note
Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!
Description of Change
Expose
source.prose, deterministically computed by the existing trustedGet-Proseroutine, alongside each unmodifiedsource.bodybeforeGet-Snapshotcomputes its context hash. Prepared/current hash and freshness checks consequently include the projection. Update the producer prompt, label-triage skill and directly related documentation to require contiguous verbatim quotations present in both raw and filtered strings with exact ordinal matching. Prefer short complete prose sentences that support the label; never strip markup, rewrite a quotation or cite across blanked spans. Withhold unsupported labels instead of emitting malformed evidence. The projection is a citation aid, not proof of authority or semantic support.The reported command did trigger run 37851541526 on main
45bab995c8498ee77144404a4361d3cf86a4a054. Detection returned one complete all-clear verdict, but trusted safe-output validation correctly rejected thehas-workaroundquotation because it included inline code. That quotation is verbatim in the issue, but does not survive prose filtering. The same real source contains the intact sentence: "It recovered 4 + More after the refold in 10/10 runs."Assert-Evidenceis unchanged: it recomputesGet-Prosefrom freshly fetched original bodies and requires exact ordinal containment in both raw and filtered text, never trusting derived fields supplied by the agent. All authority/provenance/category/whole-paragraph contradiction gates, source/file limits, abort-on-incomplete handling, WTD3/native parsing, exact label intents, artifact-only reporting, publication counters/receipts/postconditions and command completion remain unchanged. No normalization, inline-code authority or partial-proposal salvage is introduced. Context grows by the additional source projection; the existing 1 MiB JSON ceiling is not raised.Developed independently, then compared with #39250 and #39190: this fixes producer citation selection, not detection formatting or an activation-import mismatch. Those prior fixes remain intact. Pinned gh-aw v0.86.2 compilation changes only
body_hashin the lock's first metadata line; executable YAML, manifest, frontmatter/current-import hash, models, pins, imports and permissions are byte-identical.Validation
gh aw compile issue-triage --strict --no-check-update— passed with gh-aw v0.86.2, one workflow, zero warnings. Repeated compilation produced identical lock SHA2568fa12bacc9bb34c80d70bd71055eae51ad36acb57bd734f8b86c6931ca06f158.gh aw hash-frontmatter .github/workflows/issue-triage.md— passed; current source/import hash7e9b10340abb100486ac8ee727d99e3669f19d5482b59c3c0b639fdd2ad30bf5matches metadata.test "$(gh aw hash-frontmatter .github/workflows/issue-triage.md)" = "$(head -n 1 .github/workflows/issue-triage.lock.yml | sed 's/^# gh-aw-metadata: //' | jq -r .frontmatter_hash)"— passed.cmp <(git show 45bab995c8498ee77144404a4361d3cf86a4a054:.github/workflows/issue-triage.lock.yml | tail -n +2) <(tail -n +2 .github/workflows/issue-triage.lock.yml)— executable YAML and manifest unchanged; the equivalent comparison against pre-commitHEADpassed.pwsh -NoProfile -NonInteractive -Command '$tokens = $null; $errors = $null; $null = [Management.Automation.Language.Parser]::ParseFile((Join-Path $PWD ".github/scripts/IssueTriage.ps1"), [ref]$tokens, [ref]$errors); if ($errors.Count) { throw ($errors | Out-String) }; "Whole-script PowerShell AST: PASS"'— passed for the entire script.actionlint .github/workflows/issue-triage.lock.yml— reports only the existingqueue: maxcompatibility diagnostic at its two occurrences with actionlint 1.7.12.actionlint -ignore '^unexpected key "queue" for "concurrency" section\. expected one of "cancel-in-progress", "group"$' .github/workflows/issue-triage.lock.yml— passed; that exact anchored compatibility diagnostic is the sole exception.git diff --check— passed.Read-only, one-off in-memory PowerShell analysis extracted the actual helper definitions and new snapshot projection from the script AST and exercised genuine archived issue/proposal evidence, without executing workflow stages or modifying archived files. Confirmed the raw agent-output SHA256
d95b90380909eff2fcbcd45f7660457de43e284b9e5dcf5c18edaaa2ed07b237; the original inline-code quotation remains rejected, while the intact sentence passes the citation gate only (not full label validation). Both source bodies/metadata, source count and text length/line/index shape are preserved. Inline code remains blanked; editing an in-memory derived projection changes its hash and cannot bypass the unchanged fresh-body citation check. The archived context would grow from 91,035 to 95,175 bytes, below the unchanged 1,048,576-byte ceiling.Hosted CI at
bfb106adece5d825f96dc26edb079f2b85bb52ae: Skill Validation 37918382469 passed its static checks; LLM evaluation was skipped. Queue validation 37918382485 passed. Pester scripts 37918382456 completed with 2538 passed / 3 failed, exactly matching the full failed test names and totals of unchanged-main run 37549105032, SHA7d38fd06d059c4875bd81690c360a196aae26a26. All three failing test files and the two referenced model inputs have identical Git blob SHAs at that baseline and this head. These are verified pre-existing GPT-model-pin assertions, not new failures introduced here. Azure Pipelines explicitly filteredmaui-prby trigger conditions; its neutral status is not a build or product-test pass.No pipeline/Pester/regex/snapshot/fixture tests were added. Product/device tests and the existing full Pester suite were not run locally. No live workflow/issue dispatches, command replays, issue comments/labels/minimization, access changes or new monitors during implementation. The configuration/helper checks and hosted CI results are not a new live end-to-end agent success or a guarantee of model compliance. This fix awaits merge and fresh production verification; the historical command was not replayed.
Issues Fixed
Addresses the
/issue triagereliability report on #39263; does not close the underlying Shell product issue or replay its command.