Flag overdue pending-create work in public discovery (#983)#1171
Flag overdue pending-create work in public discovery (#983)#1171yanyishuai wants to merge 1 commit into
Conversation
|
Warning Review limit reached
More reviews will be available in 47 minutes and 11 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (8)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
qingfeng312
left a comment
There was a problem hiding this comment.
Finding:
- [P1] Format the overdue-pending-work changes before merge. The current head
28a99b517a456dc1e94e09b459717a676625ae1dpasses the full pytest run (916 passed, 1 warning), but CI fails atruff format --check .. The formatter reportsapp/work_discovery.py,tests/run_safety_caps.py, andtests/test_account_validation.pywould be reformatted, so the PR is not currently merge-ready. Please run the formatter and update the branch.
Evidence checked:
- PR #1171 is open, non-draft, and authored by another account.
- Inspected the changed file list covering
app/work_discovery.py,scripts/claim_inventory.py,tests/run_safety_caps.py,tests/test_account_validation.py,tests/test_claim_inventory.py,tests/test_work_discovery.py, and docs. - Checked CI run
28329437566: pytest passed, thenruff format --check .failed on the three files above.
Scope boundary: review evidence only. No wallet signing, treasury mutation, payout execution, exchange, bridge, private data, credentials, or secrets involved.
28a99b5 to
f2e1142
Compare
f2e1142 to
9590d94
Compare
|
@qingfeng312 Formatting + lint fixes pushed.
Latest head: |
|
@qingfeng312 CI is green on the latest head ( |
1 similar comment
|
@qingfeng312 CI is green on the latest head ( |
qingfeng312
left a comment
There was a problem hiding this comment.
Follow-up on current head 9590d949d980f505959908d4b43e8944efd40470.
The earlier formatter/lint blocker has been resolved. I rechecked the updated file set for the overdue pending-create discovery state, including app/work_discovery.py, scripts/claim_inventory.py, tests/run_safety_caps.py, and the work-discovery/claim-inventory tests.
The implementation now keeps the pending_create/pending_create_due split explicit, exposes the execution_due and opening_soon_due_count fields consistently, and keeps the safety-cap helper/test updates inside the public discovery maintenance surface.
Validation checked: GitHub CI Quality, readiness, docs, and image checks passed on run 28349469822; CodeRabbit status is success on this head. I did not find a remaining blocker for the scoped #983 change.
|
@qingfeng312 CI is green on the latest head ( |
5 similar comments
|
@qingfeng312 CI is green on the latest head ( |
|
@qingfeng312 CI is green on the latest head ( |
|
@qingfeng312 CI is green on the latest head ( |
|
@qingfeng312 CI is green on the latest head ( |
|
@qingfeng312 CI is green on the latest head ( |
piaigmt
left a comment
There was a problem hiding this comment.
Evidence-backed APPROVE review on current head 9590d94 for Bounty #1009.
Local verification (Python 3.12 uv venv)
Targeted tests:
python -m pytest tests/test_claim_inventory.py tests/test_work_discovery.py tests/test_account_validation.py -q
67 passed, 1 warning in 7.65s
Full suite:
python -m pytest -q
916 passed, 1 warning in 77.23s
Lint/gate checks:
ruff checkon all touched files → All checks passed!ruff format --checkon all touched files → 7 files already formattedmypy app/work_discovery.py app/accounts.py→ Success: no issues found in 2 source filespython scripts/docs_smoke.py→ docs smoke okgit diff --check→ clean
Scope review
This PR makes three focused, behavior-preserving maintainability improvements:
-
Safety caps in claim_inventory.py — adds
GH_PR_SAFETY_CAP,GH_ISSUE_SAFETY_CAP,GH_PUBLIC_API_SAFETY_CAP(all 201 > existingGH_LIMIT=200) to fail fast with clear RuntimeError when live collection reaches the cap instead of silently producing potentially incomplete reports. Covers bounties, activity, issue-list, and pr-list collection paths. -
pending_create_duestate in work_discovery.py — flags treasury proposals whoseexecutes_afteris in the past but whose bounty row is not live yet, with a newopening_soon_due_countsummary field. Handles both naive and timezone-awareexecutes_aftervalues with UTC normalization. -
Rejection of malformed account path identifiers in accounts.py — adds
PLAIN_ACCOUNT_REto reject URL-encoded special characters and other malformed account IDs with HTTP 400account identifier is malformedon both/api/v1/accounts/{account}and/accounts/{account}.
All three changes have dedicated test coverage. The tests/run_safety_caps.py auxiliary runner is optional infrastructure for running safety-cap tests without pytest. No public behavior, ledger, wallet, or bounty lifecycle semantics changed.
Summary
pending_create_dueavailability state to the public work discovery endpoint.execution_dueboolean on everyopening_soonentry.opening_soon_due_countto the discovery summary so operators can spot proposals whoseexecutes_afterhas elapsed but whoseBountyrow is not yet open.Why
A
create_bountytreasury proposal can bependingand past itsexecutes_afterdeadline without the underlyingBountyrow ever opening (e.g. executor never ran, payload invalid, or simply stuck). The public discovery feed previously lumped those rows in with normalpending_createitems, so maintainers had to compareexecutes_afterto wall-clock time themselves. Surfacing the new state explicitly makes the backlog of stuck proposals actionable.Behavior
pending_create:executes_afteris in the future (or unset) and the proposal is waiting its turn. Existing behavior, unchanged.pending_create_due:executes_afteris in the past and the proposal still has not produced aBountyrow. Indicates the executor/maintainer may need to follow up.execution_dueis exposed on everyopening_soonrow (boolean) so JSON consumers can filter without re-deriving the state.opening_soon_due_countis exposed on the summary so dashboards can show the size of the overdue backlog at a glance.Tests
tests/test_work_discovery.py::test_work_discovery_distinguishes_live_and_pending_create_workto assert the newexecution_duefield and the newopening_soon_due_countsummary key.tests/test_work_discovery.py::test_work_discovery_flags_overdue_pending_create_proposalscovering both future and overduepending_createproposals.Closes #983
Solana wallet for bounty payout:
Do4v7foHJvRJLpRRoGaVPWX6DDEjX3yTK7J91gpwUQpE