You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
These are set independently and drift out of sync over time. Proposal: add a scheduled workflow that treats the Project field as source of truth and mirrors it to the repo label, so that the label search (is:issue label:P0) stays accurate for CLI / API / RSS consumers.
Context — current drift
An audit turned up 25 open issues currently out of sync:
On the linked issue/PR, remove any stale P* label and add the correct one. No-op when already in sync.
Auth: fine-grained PAT with project:read + issues:write (default GITHUB_TOKEN cannot access org-level Projects v2). Stored as a repo secret; ownership documented in the workflow header.
Optional companion (label → project): trigger on issues.labeled / unlabeled where the label matches ^P[0-2]$; GraphQL mutation writes the project field. Closes the reverse-drift case where a triager sets the label but forgets the board.
Gotchas / notes
Projects v2 webhook events (projects_v2_item.edited) are not triggerable from a workflow on: block; event-driven sync from the project side would need a GitHub App or external listener. Cron polling side-steps this.
If Project 41 contains items from other repos, the sync must scope to NVIDIA/cuda-python explicitly to avoid cross-repo label bleed.
Brief inconsistency window on newly-triaged issues, bounded by the cron interval.
Alternative on the table
Drop the P* labels entirely and standardize on the Project field. Simpler operationally (no workflow, no PAT to rotate) but loses is:issue label:P0, gh issue list --label P0, and RSS filters — searchers would go through the project board or a gh api graphql snippet. Leaving on the table for discussion.
Backfill
Once direction is settled, the 25 mismatches above can be corrected by hand or via a one-shot script.
Summary
Priority is currently tracked in two independent places:
P0/P1/P2P0/P1/P2)These are set independently and drift out of sync over time. Proposal: add a scheduled workflow that treats the Project field as source of truth and mirrors it to the repo label, so that the label search (
is:issue label:P0) stays accurate for CLI / API / RSS consumers.Context — current drift
An audit turned up 25 open issues currently out of sync:
Hard mismatches (label ≠ project priority):
P1, projectP0P0, projectP1Linkerdispatching logic #712 — labelP0, projectP1P0, projectP1P1, projectP2Label but no project entry:
CUDA_PYTHON_CUDA_PER_THREAD_DEFAULT_STREAM=1#971 (labelP0)Project priority set but no label (dominant failure mode):
Device.set_current()? #548, [ENH]: Clean upSUPPORTED_...variables between load libs and find header dirs #1197, RFC: Expose versioned symbols/APIs tocuda-bindings#1228, Feature Request: Device context manager for temporary device switching #1586, [PERF]: Handle generic sequences more efficiently #1640, [FEA]: Add context managers to objects where resource cleanup is required #1719, RFC: make release workflows build and publish artifacts in the release run #1759, EPIC: Tests that never run in CI #2077, cuda.core: expose mem-range attributes on ManagedBuffer (last_prefetch_location and read-side getters) #2109, Enable CodeRabbit auto-review on cuda-python (port CCCL's.coderabbit.yaml) #2137, Pixi rebuilds all 36 Cython extensions on everypixi run(editable install temp dirs) #2138, ABI checking tool should ignore the renaming of anonymous structs #2203_decide_nvjitlink_or_driver()#1095, Revisitcuda-bindingsbranching strategy #1199, [PERF]: Remove redundant type checks #1639, [PERF]: Converting arguments of generic int or fixed-size int (e.g. cuuint32_t) are suboptimal #1642, [PERF] Construction of knowncdef classescan go through__new__#1643, [PERF]: Epic for binding overhead improvements #1645, [PERF]: Measure the performance potential of caching pre-converted arguments at the call site #1655The 19 label-missing cases mean the current label search silently under-counts open P0/P1 work.
Proposed automation
Add a new scheduled workflow under
.github/workflows/(e.g.priority-sync.yml), cron every 15–30 min plusworkflow_dispatch:NVIDIA/cuda-python.Prioritycustom field.P*label and add the correct one. No-op when already in sync.Auth: fine-grained PAT with
project:read+issues:write(defaultGITHUB_TOKENcannot access org-level Projects v2). Stored as a repo secret; ownership documented in the workflow header.Optional companion (label → project): trigger on
issues.labeled/unlabeledwhere the label matches^P[0-2]$; GraphQL mutation writes the project field. Closes the reverse-drift case where a triager sets the label but forgets the board.Gotchas / notes
projects_v2_item.edited) are not triggerable from a workflowon:block; event-driven sync from the project side would need a GitHub App or external listener. Cron polling side-steps this.NVIDIA/cuda-pythonexplicitly to avoid cross-repo label bleed.Alternative on the table
Drop the
P*labels entirely and standardize on the Project field. Simpler operationally (no workflow, no PAT to rotate) but losesis:issue label:P0,gh issue list --label P0, and RSS filters — searchers would go through the project board or agh api graphqlsnippet. Leaving on the table for discussion.Backfill
Once direction is settled, the 25 mismatches above can be corrected by hand or via a one-shot script.
-- Leo's bot