---
id: f8c1a261-8471-4c92-b3c5-9fcb1f20cbb4
title: 'f0rge readers: issues/prs/tasks/ci/labels'
state: closed
labels:
- area:render
assignees: []
milestone: m3-forge-api
created: 2026-09-10T03:52:27.754133910Z
updated: 2026-09-10T04:26:49.018625006Z
---
Context: Core read path. Real shape is dir-per-entity (see wiki/plan). This is the biggest render issue; keep it mechanical.
Tasks:
- Readers: `issues/<uuid>/issue.md` (+comments count), `prs/<uuid>/pr.md` (+`patch.diff` as `<pre>`, comments count, reviews list), `tasks/<uuid>.md` grouped todo|doing|blocked|done, `ci/ci.env` + `steps/*.sh` names + latest `runs/<ts>/summary.md` w/ verdict badge, `labels.md`/`milestones.md` for names.
- Number derivation: sort `(created,id)` rank 1-based at build; display number, link by uuid.
- Wire real counts + CI verdict into index header (replace m1 stubs, remove TODO).
- Unknown fields ignored silently; missing required -> skip + stderr warn, build stays 0.
Success rubric:
- [ ] Against ../f0rge/.forge (large real forge): build exits 0; issue/PR counts match `f0rge issue list --json` counts; spot-check 5 numbers match rank; one intentionally-broken copy (missing title) warns + skips.
- [ ] patch.diff shown escaped; tasks columns correct; CI badge matches latest run verdict.
Swarm: Owl with supervision (biggest surface). Branch `m3/forge-readers`.
