mirror of
https://github.com/Comfy-Org/github-workflows.git
synced 2026-11-05 00:17:37 +00:00
[PR #413] [MERGED] feat(cursor-approve): show each axis's full first sentence and its full reasoning on the card (BE-20249) #413
Labels
No labels
cursor-review-catalog-drift
groom
groom
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Comfy-Org/github-workflows#413
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
📋 Pull Request Information
Original PR: https://github.com/Comfy-Org/github-workflows/pull/413
Author: @mattmillerai
Created: 10/12/2026
Status: ✅ Merged
Merged: 10/12/2026
Merged by: @mattmillerai
Base:
main← Head:matt/be-20249-card-why-full-sentence📝 Commits (2)
ba424d6feat(cursor-approve): show each axis's full first sentence and its full reasoning on the card (BE-20249)3a49fddfix(cursor-approve): tighten the headline sentence cut and align the Why fallbacks (BE-20249)📊 Changes
9 files changed (+493 additions, -72 deletions)
View changed files
📝
.github/cursor-approve/README.md(+15 -8)📝
.github/cursor-approve/aggregate.py(+65 -6)📝
.github/cursor-approve/card.py(+79 -20)📝
.github/cursor-approve/prompt-common.md(+7 -6)📝
.github/cursor-approve/tests/test_aggregate.py(+111 -10)📝
.github/cursor-approve/tests/test_card.py(+194 -6)📝
.github/workflows/cursor-approve.yml(+4 -4)📝
.github/workflows/cursor-axis-base.yml(+4 -3)📝
docs/callers/cursor-approve.md(+14 -9)📄 Description
ELI-5
The approve bot keeps one status card on each PR. The card has a table with a row per reviewer axis (correctness, conformance, …) and a short reason for each verdict. That reason was chopped at 100 characters, so it usually stopped mid-sentence ("… the cache is still not wired into…"). The full explanation was only in the Actions run.
Now the row shows the whole sentence. Under the result there is a collapsed "full reasoning" section for each axis, which you can open right on the PR.
What changed
aggregate.py.,!or?followed by whitespace ends a sentence, including after a closing quote or bracket.e.g.,i.e.,vs., …), initialisms (U.S.), one-character initials and list numbers (J.,2.) and ellipses do not. Neither does a decimal or a mid-word dot, since no space follows it.etc.ends a sentence only before a capital.card.pyWHY_LIMITthat a test pins equal toHEADLINE_MAX. A headline that is missing or that the clamp rejects falls back to the summary's first sentence.<details>block per axis that reported a summary. It holds the sanitised fullsummaryand the confidence.why_text), so the two always match.prompt-common.md: the headline is ONE sentence, aiming for about 120 characters and never more than 240. The summary is now described as shown collapsed on the card.docs/callers/cursor-approve.md(the headline/card passage and the 240 cap), the.github/cursor-approve/README.mdfield table, and the header comments incursor-approve.ymlandcursor-axis-base.yml.Why
BE-20249.
Design notes
| Axis | Verdict | Why |rows are as before. Only the cell text can be longer.sanitize, which folds it to one line and escapes every|and<.awk -F'|'row parser line for line. It proves a summary that carries a forged row, a forged state marker,</details>, a heading, a mention or the card marker changes nothing an agent reads.prior_roundson, the summary was also already in the card's base64 sentinel.Coordination
This touches
.github/cursor-approve/card.pyalongside #412 (BE-20246)._reviewed_linekeeps its signature, which #412'srender_pendinguses.main(ebd6a64, which includes #412) is clean, and the cursor-approve and workflow-pins suites andcheck_workflow_pins.pypass on the merged tree.Testing
python3 -m unittest discover -s .github/cursor-approve/tests -p 'test_*.py': 267 OK on the current head. New cases:?, abbreviations, initialisms, initials and list numbers, ellipses, closing quotes and brackets,etc.before a capital, decimals and file names, a short lead, a cut that keeps no word, a word-less headline within the cap, and decide end to end);WHY_LIMITandHEADLINE_MAX;.github/cursor-review/tests: 1527 OK..github/workflow-pins/tests: 551 OK (43 skipped).check_workflow_pins.pyOK..github/agents-md-integrity/tests: 62 OK.check_agents_md.pypassed, with the same 2 warnings as main (line count, no CODEOWNERS)..github/public-repo-hygiene/tests: 204 OK.check-org-repo-literals.shOK.shellcheckOK.Sample: a two-axis pass card as rendered (markdown)
Rollout
Callers get this on their next SHA bump. There are no new inputs. The 240 cap and the prompt wording apply from the next round.
Provenance
.github/cursor-approve/tests: 267 OK on the current head..github/workflow-pins/testsOK;check_workflow_pins.py,check_agents_md.py(same 2 warnings as main) andcheck-org-repo-literals.shpass.🤖 Generated with Claude Code
🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.