Context
Part of epic #12207. PR conversations carry the richest architectural context (review scores, diffs, Fat-Ticket metadata) but are invisible to humans + SEO.
The Fix
New pulls section (copy the release/tickets pattern). The Component implements the PR-specific parser:
- two-section extract of
## Comments + ## Reviews;
- entry-split only at the
### `@user` ... header boundary (NOT bare --- — bodies contain their own ### sub-headers and --- rules);
- two header grammars (
commented on <ts> / (STATE) reviewed on <ts>);
- merge-sort by timestamp (the two sections are not globally ordered);
- review STATE → color (APPROVED green, CHANGES_REQUESTED red, neutral fallback for unknown/COMMENTED/DISMISSED — do not throw);
- dependabot zero-section degrade via
super.modifyMarkdown (body-only PRs still render).
Plus a 3-state OPEN / MERGED / CLOSED badge (the issue 2-way version mislabels MERGED) + base ← head / url / mergedAt frontmatter renderers. Consumes pulls.json.
Acceptance Criteria
Related
Epic #12207. Depends on: generators (sub 6), shared-contract extraction (foundation 4), per-type URLs (foundation 5). Grammar source-of-truth: sub 9.
Context
Part of epic #12207. PR conversations carry the richest architectural context (review scores, diffs, Fat-Ticket metadata) but are invisible to humans + SEO.
The Fix
New
pullssection (copy the release/tickets pattern). The Component implements the PR-specific parser:## Comments+## Reviews;### `@user` ...header boundary (NOT bare---— bodies contain their own###sub-headers and---rules);commented on <ts>/(STATE) reviewed on <ts>);super.modifyMarkdown(body-only PRs still render).Plus a 3-state OPEN / MERGED / CLOSED badge (the issue 2-way version mislabels MERGED) +
base ← head/url/mergedAtfrontmatter renderers. Consumespulls.json.Acceptance Criteria
###/---); MERGED state rendered distinctly.Related
Epic #12207. Depends on: generators (sub 6), shared-contract extraction (foundation 4), per-type URLs (foundation 5). Grammar source-of-truth: sub 9.