Skip to content

Add github-based proposal repos - #6

Merged
tomncooper merged 3 commits into
mainfrom
gh-proposals
Sep 20, 2026
Merged

tomncooper merged 3 commits into
mainfrom
gh-proposals

Conversation

@tomncooper

Copy link
Copy Markdown
Owner

This PR adds improvement proposal tracking for projects that use Github repos to manage proposals. This initial PR covers Strimzi, Kroxylicious and StreamsHub.

…icious

Extend OSSIP beyond the Apache wiki/mailing-list pipeline (KIP/FLIP) to
support three projects whose improvement proposals live as pull requests
on GitHub: Strimzi (SIP), StreamsHub (SHIP) and Kroxylicious (KDP).

- New shared GitHub pipeline in ipper/common/: REST client (github.py),
  per-project config (github_config.py), PR classification and state
  machine (github_process.py), cache models (github_models.py) and
  HTML/JSON output (github_output.py), wired into the CLI via
  github_cli.py with thin per-project packages (ipper/{strimzi,streamshub,
  kroxylicious})
- PRs are classified as proposal / amendment / plumbing, with state
  derived from merge status and vote counting from GitHub PR reviews;
  incremental updates use an updated_at watermark with head.sha change
  detection and freeze/reopen semantics
- JSON API extended with GithubProposalDetail schema and
  /api/v1/{project}/{sip,ship,kdp}s.json endpoints plus per-proposal
  detail files; ProposalSummary/ProposalDetail now allow a null id and
  carry pr_number for unnumbered open proposals
- Extract shared ActivityStatus enum and calculate_activity_status into
  common/utils.py (replacing Kafka's KIPStatus logic) so KIP, FLIP and
  GitHub proposals use the same activity colouring
- get_with_retries gains an optional headers parameter for GitHub auth
- CI (publish.yaml) and local_build.sh now update and build all five
  projects, with GITHUB_TOKEN support and per-project failure warnings
- New templates (github-index, github-more-info), project icons and
  homepage navigation links
- Docs updated (README, AGENTS.md) with init/update/refresh/output
  commands and API endpoint list; design notes in docs/plans/
The +1/0/-1 columns on the SIP/SHIP/KDP pages were mailing-list concepts
that mapped awkwardly to GitHub reviews (APPROVED -> +1,
CHANGES_REQUESTED -> -1, COMMENTED reviews silently dropped). Replace
them with three unique-user columns reflecting how people actually
interact with proposal PRs.

- New column semantics (derive_review_activity* in
  ipper/common/github_process.py): Accepted = users with an APPROVED
  review (terminal - approvers never appear in the other columns);
  Requested Changes = CHANGES_REQUESTED without an approval; Commented
  = issue comments or COMMENTED reviews only, excluding the PR author
  and bot accounts ([bot] login suffix plus a KNOWN_BOTS denylist).
  Each entry keeps the user's latest qualifying timestamp; PENDING
  reviews never count and DISMISSED approvals no longer count as
  acceptance (matching GitHub's own semantics). Activity still freezes
  at merge/close time.
- Proposal records store "reviews" (accepted/commented/
  changes_requested) instead of "votes"; committed caches migrate
  automatically on the next update/output run (migrate_cache)
- Kroxylicious fix: merged KDP PRs now capture review/comment snapshots
  at classification time (previously never fetched, leaving accepted
  KDPs with no review history); pre-refactor caches are backfilled once
  (~2 requests per PR) when a token is available, skipped with a
  warning otherwise
- JSON API v2: GitHub projects report review_count (summaries) and
  reviews (details, ReviewerInfo with login/timestamp) instead of
  vote_count/votes; ApiIndex.version bumped to 2. KIP/FLIP models and
  output unchanged (shared models split into ProposalSummaryBase /
  ProposalDetailBase bases so the wiki-tracked shape is preserved)
- Templates: index table and detail pages show the three new columns
  with per-user tooltips; existing green/grey/red styling reused
- Committed caches migrated to the new format, including the KDP
  snapshot backfill
- Tests extended (derivation semantics, migration, backfill, output
  rendering, API version) and docs updated (AGENTS.md, design plan)
Signed-off-by: Thomas Cooper <code@tomcooper.dev>
@tomncooper
tomncooper merged commit 8e80738 into main Sep 20, 2026
1 check passed
@tomncooper
tomncooper deleted the gh-proposals branch September 20, 2026 16:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant