Repository navigation
Improve Jira Epic summaries - #18
Conversation
readwrightexecute
left a comment
There was a problem hiding this comment.
Implementation review of the new jira_epic_summary flow. The helper, truncation logic, generic-title filtering, and test additions are all well done, and the full webapp suite passes locally (228 passed, coverage gate met). One behavioral concern below: the "prefer generated content" source order ends up preferring the Overview section's first line over the user's idea, which produces worse Epic titles than the previous behavior in the common case where the Overview has no explicit generated title.
🔁 Powered by Looper · runner=reviewer · agent=pi · An autonomous AI dev team for your GitHub repos.
Jira Epic summaries now treat a section line as a title source only when it is an explicit generated heading or title label; the user's cleaned idea is consulted before falling back to other sections' first lines. Bare structural headings such as '# Goals' no longer masquerade as project titles. Generated-By: looper 0.13.1 (runner=fixer, agent=pi)
|
Looper fixer round complete — de3adb7
🔁 Powered by Looper · runner=fixer · agent=pi · An autonomous AI dev team for your GitHub repos. |
readwrightexecute
left a comment
There was a problem hiding this comment.
@readwrightexecute Reviewed the follow-up head (77c570d) against the prior findings, and both are fully addressed.
Verification of the prior must_fix (idea vs. bare Overview line): jira_epic_summary now collects only explicit generated titles (headings/title labels) from the Goals/Overview, then consults the cleaned idea, and only then falls back to other sections' bare first lines; _clean_jira_title also rejects bare structural headings such as # Goals. The two regression tests for the un-labeled-sentence and bare-heading cases are present, and test_export_creates_issue_attaches_and_confirms now correctly asserts the idea (A todo app) wins over the Overview's Build it well. line.
Verification of the new planning-projection work (de3adb7..77c570d): I traced the new assemble_planning_summary, jira_consistency_warnings, and reshaped assemble_jira_export/main.py wiring, checked the regex edge cases (hyphenated ideas survive _JIRA_TITLE_LABEL_RE because the label requires a following colon or dash; AC-EDGE-style labels still parse; epic summary: labels are matched), and ran the full webapp suite locally: 233 passed, 1 xfailed (the pre-existing documented _resolve_section xfail). The full brief is still attached as mega-prompt.md while the Epic description now carries the Jira-shaped projection, and the download tests cover both files.
Nice work — the summary-derivation logic reads cleanly, the consistency warnings are deterministic and well tested, and the tests lock in exactly the behaviors the PR description promises. Approving.
🔁 Powered by Looper · runner=reviewer · agent=pi · An autonomous AI dev team for your GitHub repos.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
There are 3 total unresolved issues (including 2 from previous reviews).
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 77c570d. Configure here.
readwrightexecute
left a comment
There was a problem hiding this comment.
Implementation review of head 77c570d. The full webapp suite passes locally (233 passed, 1 xfailed, coverage 96.27%), the Planning Summary / Jira projection rework is well-structured, and the earlier must_fix (idea vs. bare Overview line) is genuinely fixed. Three title-derivation regexes, however, corrupt real project titles in the exact cases this PR exists to fix, so the Jira Epic Summary — the PR's stated goal — comes out wrong for legitimate inputs. The three inline comments each carry concrete reproduction evidence I verified by running the code against the head, plus suggested regex fixes and regression tests. The first two are blocking for the PR's stated goal; the third is a merge-safe hardening of the same heading filter.
🔁 Powered by Looper · runner=reviewer · agent=pi · An autonomous AI dev team for your GitHub repos.
- _JIRA_TITLE_LABEL_RE: a hyphen only counts as a label separator after whitespace; a bare hyphen no longer truncates hyphenated first words (e.g. 'Name-tag printer', 'summary-queue for order events'). - _JIRA_GENERIC_PREFIX_RE: 'brief' and 'mega-prompt' match as whole words only, so 'briefcase manager' and 'Briefing service' survive; connectors (for/about, ':', ' - ', ' < ') stay explicit. - _JIRA_NONSPECIFIC_HEADING_RE: now matched on the normalized title after hashes, list markers, emphasis, and label prefixes are stripped, and accepts the 'and' form, so decorated echoes like '**Project**' and '## Goals and Background' can no longer become the Epic title. - Regression tests in webapp/tests/test_flow_parse.py for all three. Generated-By: looper 0.13.1 (runner=fixer, agent=pi)
|
Looper fixer round complete — a9203ae
🔁 Powered by Looper · runner=fixer · agent=pi · An autonomous AI dev team for your GitHub repos. |
readwrightexecute
left a comment
There was a problem hiding this comment.
@readwrightexecute Reviewed the follow-up head (a9203ae) against the three open must_fix threads from the 77c570d pass, and all three are genuinely addressed with real regression coverage:
- Hyphenated first words —
_JIRA_TITLE_LABEL_REnow requires a space before a hyphen separator (a bare:still works). Verified locally:summary-queue for order events,Name-tag printer,Title-case editor, andEpic-games launcherall survive intact, whileEpic Summary: ...andProject title: ...still strip correctly. briefword boundary —_JIRA_GENERIC_PREFIX_REnow matchesbriefonly as a whole word with an explicit connector.briefcase managerandBriefing serviceare preserved;brief for payments,Brief: payments,Brief - payments, andIncipit mega-promptbehave as before. TheBrief-2 platformresidual was explicitly acknowledged in the fix reply as an accepted trade-off (fixing it would re-truncate legitimate hyphenated compounds), which I accept.- Decorated section-echo headings —
_JIRA_NONSPECIFIC_HEADING_REnow runs on the normalized title after hash/emphasis/label stripping and accepts theandform.### *Goals & Background*,## Goals and Background, and**Project**all fall through to the idea, confirmed both in the new unit tests and by running the helper locally.
The new end-to-end tests (test_jira_epic_summary_prefers_idea_over_decorated_goals_heading / ..._project_heading) lock in the source-order behavior the whole PR is about, and the full webapp suite passes locally (238 passed, 1 xfailed, coverage 96.27%, gate met); CI is green across the board.
Nice, surgical repair round — each fix landed exactly where it needed to with a regression test to keep it there. Ship it.
🔁 Powered by Looper · runner=reviewer · agent=pi · An autonomous AI dev team for your GitHub repos.

Summary
Epic Summary:/ headings / title labels) or cleaned idea text, avoiding generic Incipit/mega-prompt titles.mega-prompt.md.[ASSUMPTION]marking for invented precision.Tests
.venv/bin/python -m pytest --no-cov tests/test_flow_parse.py tests/test_jira_export.py tests/test_download.py.venv/bin/python -m pytestgit diff --checkFocused test note: partial selections need
--no-covbecause the repo coverage gate is configured for the full suite.Note
Medium Risk
Changes user-visible Jira Epic titles/descriptions and LLM section schema; export behavior is well-tested but alters what lands in Jira vs attachments.
Overview
Improves Jira exports and brief assembly so Epic titles and issue bodies come from structured brief content instead of raw idea truncation.
Jira Epic summaries are now derived deterministically via
jira_epic_summary()(explicitEpic Summary:/ headings / title labels, cleaned idea text, generic-title rejection, 255-char limit), replacing the oldIncipit brief: {idea[:120]}path inmain.py.Implementation Brief gains a Planning Summary block and normalizes FR/NFR/AC sections into markdown bullet lists in
assemble_final()while keeping labeled parsing for story extraction.Live Jira export puts the Jira-shaped planning projection (
assemble_jira_export) in the Epic ADF description; the full Implementation Brief still attaches asmega-prompt.md. The export adds Epic outcome/MVP scope/NFRs/Consistency Checks warnings (missing AC coverage, bad FR refs, generic titles, broad stories) and renames Stories → Child Stories.Wizard prompts (
sections.yaml,system.md.j2) push SHALL-style FR/NFRs, story-sized FRs, AC→FR citations, an explicit Epic Summary line, and[ASSUMPTION]for invented precision.Reviewed by Cursor Bugbot for commit a9203ae. Bugbot is set up for automated code reviews on this repo. Configure here.