You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
feat(aggregator): per-item AI brief — 'explain this item' panel with state, blocker, last actor, and suggested next action #1279
Part of epic #1184 (PM stack coherence — wave 2, 2026-10-26).
Opening an item today means assembling its story by hand: state on one page, blockers as prose, last activity in the projector/GitHub stream, sessions on another page. A per-item AI brief panel — "explain this item" — does that assembly: current state in plain language, why it is blocked (with the blocker named and linked), who or what acted last and when, and a suggested next action, each claim carrying an evidence link into the underlying data. The brief is derived from the canonical projection + item activity at request time, is labelled as derived wherever it renders, and is never silently authoritative: where the data disagrees with itself, the brief says so and shows both sides rather than picking one. It renders on the item page and inside Needs-you cards, and its JSON twin exposes the same brief so agents read the identical summary Drew does.
Acceptance:
Every board/roadmap/Project item can render a brief containing state, blocker (or "not blocked"), last actor + time, and a suggested next action, each with an evidence link.
Briefs are visibly labelled as derived, and a source disagreement on the item is stated in the brief instead of resolved silently.
The brief is available via the item's machine-first JSON twin with identical content.
A brief for an item with no activity/blocker renders honestly (states what is unknown) rather than inventing a narrative; covered by fixture tests for blocked, in-flight, and idle items.
Acceptance criteria
A per-item 'explain this item' brief panel exists assembling: current state in plain language, blocker (named and linked), last actor/activity, and a suggested next action.
Nothing in the brief is asserted without a source in the underlying data — unknowns are stated as unknown, not narrated over.
The brief is available via the item's machine-first JSON twin with identical content, and fixture tests cover blocked, in-flight, and idle items.
Notes: the brief is an assembly problem, not a data problem — state, blockers, and activity already exist across the projector/GitHub stream; this surfaces them in one place. Verified live: project pages (PR #1305) improved navigation but add no per-item brief.
Risks: an AI-generated narrative that invents a blocker or actor would be worse than none — the honest-degradation criterion in the body is the core requirement.
Suggested approach: deterministic assembly from structured fields first (no free generation), with any generated phrasing constrained to those fields.
No brief exists: grep -rin "brief|explain this" over pm-stack/aggregator/src/*.ts returns zero feature hits (only an unrelated "Poll briefly" comment in snapshots.ts:383), and server.ts has no item/brief route.
The assembly-by-hand premise holds: state renders on /board and /projects, Needs-you cards on /attention, sessions on /sessions, activity in the feed — no surface combines them per item, and no JSON twin carries a per-item summary.
Scoping call recorded for the implementer: despite the "AI brief" name, the acceptance contract (every claim evidence-linked, unknowns stated as unknown, identical JSON twin) is deterministic assembly over the canonical projection + activity — the follow-up packet explicitly excludes any LLM/provider integration.
Route: scoped implementation packet enqueued as queue task 4993 (small_fix): deterministic brief builder, disagreement stated not resolved (composes with #1282), panel in Needs-you cards + item views labelled derived, identical JSON twin, fixture tests for blocked/in-flight/idle.
Claimed queue task 4993 as repo-worker-code. No prior queue progress was provided; checking fresh GitHub state and active ownership before creating a worktree.
agent-note:v1
event: parked
task: 4993 (repo-health-code-pilot, OpenChamber scheduled lane)
worker: repo-worker-code
state: parked for 20 minutes (until 2026-11-02T13:01:38Z)
blocker: Fresh checks on canonical task PR #4086 are still QUEUED: test and aggregator + projector. PR remains OPEN at f8cae28 on queue/4993-1279-per-item-brief; #1279 remains OPEN; no hard-stop labels. No files, branch, or PR changes this run.
resume: After checks complete, revalidate #1279, PR #4086 head/reviews/checks and current main. Inspect diff and merge only if checks are green, targeted tests verified, diff matches intent, and no hard-stop restriction applies.
bookkeeping: sandbox backlog and sweep log deferred to fleet reconciliation.
Activity
developing-today commentedon Oct 27, 2026
CODE-403
dezren39 commentedon Oct 27, 2026
Intake review
Related: epic #1184 (wave 2 parent).
Notes: the brief is an assembly problem, not a data problem — state, blockers, and activity already exist across the projector/GitHub stream; this surfaces them in one place. Verified live: project pages (PR #1305) improved navigation but add no per-item brief.
Risks: an AI-generated narrative that invents a blocker or actor would be worse than none — the honest-degradation criterion in the body is the core requirement.
Suggested approach: deterministic assembly from structured fields first (no free generation), with any generated phrasing constrained to those fields.
dezren39 commentedon Nov 1, 2026
agent-note:v1 — queue task 2535 (lane E) — triage verdict: CONFIRMED on current main
Verified 2026-11-01 against origin/main 0ea0a0f:
grep -rin "brief|explain this"overpm-stack/aggregator/src/*.tsreturns zero feature hits (only an unrelated "Poll briefly" comment in snapshots.ts:383), and server.ts has no item/brief route.Scoping call recorded for the implementer: despite the "AI brief" name, the acceptance contract (every claim evidence-linked, unknowns stated as unknown, identical JSON twin) is deterministic assembly over the canonical projection + activity — the follow-up packet explicitly excludes any LLM/provider integration.
Route: scoped implementation packet enqueued as queue task 4993 (small_fix): deterministic brief builder, disagreement stated not resolved (composes with #1282), panel in Needs-you cards + item views labelled derived, identical JSON twin, fixture tests for blocked/in-flight/idle.
dezren39 commentedon Nov 1, 2026
Claimed queue task 4993 as repo-worker-code. No prior queue progress was provided; checking fresh GitHub state and active ownership before creating a worktree.
126 remaining items
dezren39 commentedon Nov 2, 2026
agent-note:v1
event: parked
task: 4993 (repo-health-code-pilot, OpenChamber scheduled lane)
worker: repo-worker-code
state: parked for 20 minutes (until 2026-11-02T13:01:38Z)
blocker: Fresh checks on canonical task PR #4086 are still QUEUED: test and aggregator + projector. PR remains OPEN at f8cae28 on queue/4993-1279-per-item-brief; #1279 remains OPEN; no hard-stop labels. No files, branch, or PR changes this run.
resume: After checks complete, revalidate #1279, PR #4086 head/reviews/checks and current main. Inspect diff and merge only if checks are green, targeted tests verified, diff matches intent, and no hard-stop restriction applies.
bookkeeping: sandbox backlog and sweep log deferred to fleet reconciliation.
dezren39 commentedon Nov 2, 2026
🤖 Agent note · picked up
queue/4993-1279-per-item-brief, this task's own fleet branch) is implemented; both Codex P2 findings were fixed in e72d99d with replies on their threads, and Codex's review of head f8cae28 is completed with no unresolved findings. I will re-run the aggregator tests fresh on the laptop worktree and merge if verified, or park with the named blocker. (The earlier "Drew-authored, do not touch" note was the author-login over-fire: the head branch is task 4993's queue branch and there are no hard-stop labels.)Merge pull request #4086 from developing-today/queue/4993-1279-per-it…
dezren39 commentedon Nov 2, 2026
🤖 Agent note · done