Add github-based proposal repos - #6
Merged
Merged
Conversation
…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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds improvement proposal tracking for projects that use Github repos to manage proposals. This initial PR covers Strimzi, Kroxylicious and StreamsHub.