Skip to content

B2: project-status step — GitHub repo momentum#48

Merged
hartsock merged 1 commit into
mainfrom
feat/project-status
Jun 9, 2026
Merged

B2: project-status step — GitHub repo momentum#48
hartsock merged 1 commit into
mainfrom
feat/project-status

Conversation

@hartsock

@hartsock hartsock commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Summary

Second morning-parity-gap PR (Part B). Adds a project-status step that summarizes a GitHub repository's momentum for the dashboard — mirroring gila project status.

  • pulse — issues closed in the last 7 days
  • open issues bucketed by priority label: p0 (active) / p1 (up-next) / p2 (backlog)
  • blocked issues (label blocked)
  • open PR count

Runs three gh … --json list queries per repo (open issues w/ labels, open PRs, closed-since-cutoff), all via ExecGate. Uses shared.github_repos by default or a step repos override. data_schema {projects:[{project, state, pulse_closed_7d, active_p0, up_next_p1, backlog_p2, blocked, open_prs}]} — golden pinned. Auth failures soft-skip with the gh auth login hint.

The 7-day pulse window is a display/query window, never a coordination primitive.

Disclosure tier: step.

Test plan

  • just check green (fmt + clippy -D warnings + all tests incl. golden + data-contract; EXIT=0).
  • Unit: summarizes_momentum_from_gh_json (asserts every bucket + endpoints), auth_failure_soft_skips, no_repos_is_ok_noop.

FIXTURE-SYNC: the gh JSON-list shape is exercised by tests/live_contract.rs::live_gh_pr_list_json_shape.

🤖 Generated with Claude Code

WHAT: Add a `project-status` step that summarizes a GitHub repository's
momentum for the morning report:
  - pulse: issues closed in the last 7 days
  - open issues bucketed by priority label (p0 active / p1 up-next / p2 backlog)
  - blocked issues (label `blocked`)
  - open PR count
It runs three `gh ... --json` list queries per repo (open issues with
labels, open PRs, closed-since-cutoff), all via ExecGate. Uses
shared.github_repos by default or a step `repos` override. data_schema
{projects:[{project, state, pulse_closed_7d, active_p0, up_next_p1,
backlog_p2, blocked, open_prs}]}; golden pinned. Auth failures soft-skip
with the `gh auth login` hint, mirroring github-pr-scan.

The 7-day pulse window is a display/query window, never a coordination
primitive.

WHY: closes the second gila-morning parity gap (`gila project status`),
giving the dashboard a per-project momentum read without a separate tool.

Disclosure tier: step. Registered + documented + data-contract + golden.
FIXTURE-SYNC: the gh JSON-list shape is exercised by
tests/live_contract.rs::live_gh_pr_list_json_shape.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@hartsock hartsock added the risk:low Scoped, tested, no CI/build changes label Jun 9, 2026
@hartsock hartsock merged commit e5b575c into main Jun 9, 2026
1 check passed
@hartsock hartsock deleted the feat/project-status branch June 9, 2026 20:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:low Scoped, tested, no CI/build changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant