Skip to content

feat(aggregator): per-item AI brief — 'explain this item' panel with state, blocker, last actor, and suggested next action #1279

Closed

Description

@dezren39

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.

Activity

  1. added
    kind/featureNew feature or capability request
    app/pm-stackpm-stack (Pad/Grist) in developing-today/code
    on Oct 27, 2026
  2. developing-today commented on Oct 27, 2026

    @developing-today
    Contributor
  3. added
    source/humanFiled directly by a human
    priority/normalOrdinary priority (the default)
    effort/mMedium: expected under 1 day of work
    meta/enrichedIntake review done: acceptance criteria, links, and normalized labels added
    on Oct 27, 2026
  4. dezren39 commented on Oct 27, 2026

    @dezren39
    MemberAuthor

    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.

  5. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    agent-note:v1 — queue task 2535 (lane E) — triage verdict: CONFIRMED on current main

    Verified 2026-11-01 against origin/main 0ea0a0f:

    • 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.

  6. added
    queue/queuedHas a queued task in the Supabase agent queue
    and removed on Nov 1, 2026
  7. dezren39 commented on Nov 1, 2026

    @dezren39
    MemberAuthor

    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.

  8. 126 remaining items

  9. added
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    status/parkedDeliberately paused with a recorded resume condition
    and removed
    queue/claimedQueue worker lifecycle state
    on Nov 2, 2026
  10. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    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.

  11. added
    queue/claimedQueue worker lifecycle state
    and removed
    status/parkedDeliberately paused with a recorded resume condition
    queue/parkedQueue task is parked (waiting on CI, time, or an event)
    on Nov 2, 2026
  12. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · picked up

  13. added a commit that references this issue on Nov 2, 2026
  14. dezren39 commented on Nov 2, 2026

    @dezren39
    MemberAuthor

    🤖 Agent note · done

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

app/pm-stackpm-stack (Pad/Grist) in developing-today/codeeffort/mMedium: expected under 1 day of workkind/featureNew feature or capability requestmeta/enrichedIntake review done: acceptance criteria, links, and normalized labels addedpriority/normalOrdinary priority (the default)source/humanFiled directly by a human

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions