OptionalactionOptionalactionAll applicable action reasons, ordered by priority. Primary reason is first.
OptionalattentionUnified attention bucket (#1352), computed by classifyAttentionBucket()
from status/ciStatus/reviewDecision/daysSinceActivity. Stamped by the
dashboard data path so the SPA renders the same taxonomy the CLI brief
counts. Optional: absent on payloads from older producers.
OptionalbaseTarget branch name (e.g., "main", "master").
OptionalchecklistAggregate 5-state CI categorization (#1272). Derived from ciStatus,
failingCheckNames, and classifiedChecks via categorizeCIStatus()
— agents read this directly instead of re-deriving the truth table.
Always populated on a fresh fetch (v2 architecture has no cached
FetchedPR to migrate); pr-monitor's fetchPRDetails sets it on
every PR before construction.
Failing checks with category classification (#81). Separates actionable failures from fork limitations and auth gates.
OptionalcommitsHow many commits the PR branch is behind the base branch.
Calendar days since the most recent activity (comment, commit, review).
Brief description of what's happening (#79). E.g., "3 checks failed", "@maintainer commented".
Human-readable status label for consistent display (#79). E.g., "[CI Failing]", "[Needs Response]".
Names of failing CI checks. Useful for distinguishing real CI failures from validation bots.
OptionalfirstEarliest maintainer (non-bot, non-contributor) comment or review on this PR (#1461). Computed by fetchPRDetails from the comment/review timeline it already fetches. Persisted with the digest's openPRs so merge/close detection can recover it for the outcome ledger after the PR leaves the open set. Undefined when no maintainer has responded yet.
True when the PR body contains unchecked required checkboxes.
True when a maintainer commented after the contributor's last comment or commit.
OptionalheadOptionallastOptionallatestISO timestamp of the latest commit. Used to determine if changes were pushed after review feedback.
OptionallocalAbsolute path to local clone, if the repo is cloned on this machine.
Hints extracted from maintainer comments about what actions they are requesting.
OptionalmissingRequired files the PR is missing (e.g., ["changeset", "CLA"]).
How stale the PR is based on activity age. Independent of status — a PR can be both needs_addressing and dormant.
Computed by determineStatus() based on the fields below.
OptionalwaitGranular reason for waiting_on_maintainer status. Undefined when needs_addressing.
Granular reason for needs_addressing status. Undefined when waiting_on_maintainer.