Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ with a machine-readable code. Scheduling belongs to cron, an automation system,
or the caller.

The tool does not decide what to do. It only detects changes such as new PRs,
merged PRs, CI status changes, review decision changes, unresolved review
threads, new comments, relabeling, missing objects, and catch-all updates. Your
orchestrator, script, or agent owns the action.
merged PRs, CI status changes, review decision changes, requested-reviewer and
assignee changes, unresolved review threads, new or deleted comments,
relabeling, base-branch retargets, draft transitions, mergeability flips,
missing objects, and catch-all updates. Your orchestrator, script, or agent owns
the action.

`gh-delta` is not a dashboard, inbox, or PR bot. It is a deterministic GitHub
delta detector for schedulers, scripts, and agent loops.
Expand Down Expand Up @@ -138,7 +140,7 @@ Text output is designed for scheduled logs:
JSON output is designed for programs and agents:

<p align="center">
<img src="docs/img/json-output.svg" alt="gh-delta --format json --detail report for a PR with CI and review changes" width="520">
<img src="docs/img/json-output.svg" alt="gh-delta --format json --detail report for a PR with CI, review, and requested-reviewer changes" width="520">
</p>

Use `--summary-line` when an agent only needs a display sentence. Use `--detail`
Expand Down
15 changes: 14 additions & 1 deletion RUNBOOK.md
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,12 @@ Heartbeat format:

Use `--format json` when another program needs the raw structured report.

**Cadence and rate limit:** a typical tick costs ~18 GraphQL points (7 per PR
page + 2 per issue page, × two fetch phases) against GitHub's 5,000
points/hour-per-token budget — generous for one monitor, shared across all
monitors on the same token. Numbers and how to spend less:
[Fetch limits](docs/contract.md#fetch-limits-page-caps).

## Outpost Mode

`--outpost-url` must be an `http:` or `https:` URL. Invalid configuration exits
Expand Down Expand Up @@ -230,17 +236,24 @@ developer polling loops or webhook-driven automation.
| ----------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `new` (PR) | a worker opened a PR; read it and queue review |
| `first-seen` | first observed non-open item; inspect it before treating it as newly created |
| `baseline-state` | only under `--baseline-emit-state`, on the seeding run: pre-existing open-item state (e.g. already conflicting); inspect, do not treat as newly created |
| `ci-changed` | CI green: consider merge path; CI red: nudge worker with the failure (with `--format json --detail`, the delta's `ci` detail names the exact checks that changed) |
| `review-changed` | approved: merge candidate; changes requested: relay to worker (with `--format json --detail`, the `reviews` detail names the reviewers and state transitions) |
| `became-mergeable` | conflicts resolved; merge candidate |
| `became-conflicting` | PR now conflicts with its base; rebase or resolve before merge |
| `draft-ready` | PR left draft and is ready for review; queue it for review or dispatch |
| `converted-to-draft` | PR went back to draft; hold review and merge actions until it is ready again |
| `merged` / `closed` | slice done; advance build order or sync spawn base |
| `reopened` | item reopened; re-enter it into the active work queue |
| `new-comments` | read PR threads; fold review comments before merge |
| `comments-removed` | comments were deleted; re-read the thread — prior context may be gone |
| `unresolved-threads-added` | unresolved review threads appeared; resolve before merge |
| `unresolved-threads-resolved` | review threads resolved; re-check CI and review state |
| `review-threads-changed` | review thread activity changed; inspect before acting |
| `relabeled` | scope or state change on an issue; reassess dispatch |
| `relabeled` | labels changed (PR or issue — route on `entity`); reassess dispatch |
| `assignees-changed` | ownership changed (with `--detail`, the `assignees` detail names added/removed logins); check who owns the item before dispatching |
| `review-requests-changed` | requested reviewers changed (with `--detail`, added/removed logins; teams as `org/slug`); check who is now expected to review |
| `base-changed` | PR base branch changed; prior CI/mergeability context refers to the old base — re-check both |
| `missing` | open item disappeared from fetch; check pagination, permissions, or scope |
| `still-missing` | open item remains absent (tick 2); unresolved operational issue, not a fresh delta |
| `presumed-deleted` | absent for 3 consecutive ticks; treat as gone; verify on GitHub if unexpected; no further ticks will mention it unless it reappears |
Expand Down
Loading
Loading