Skip to content

pipeline(labels): strip gittensor:priority from issues a maintainer did not author (#9737) - #9862

Merged
JSONbored merged 3 commits into
mainfrom
feat/priority-author-eligibility-9737
Jul 29, 2026
Merged

pipeline(labels): strip gittensor:priority from issues a maintainer did not author (#9737)#9862
JSONbored merged 3 commits into
mainfrom
feat/priority-author-eligibility-9737

Conversation

@JSONbored

Copy link
Copy Markdown
Owner

Closes #9737. With #9847 (#9738), this completes epic #9736.

Why

gittensor:priority carries the highest scoring multiplier, which makes it the one label whose application has to be constrained by a rule rather than by judgement — otherwise the highest-value label is whatever anyone says it is. Priority marks work the maintainer originated and triaged, so on an issue somebody else authored it is now removed automatically, with a single comment linking the policy.

Maintainer of record comes from the repo's own permissions (admin or maintain), never a hardcoded login, so the rule means the same thing on every repo ORB manages. write is deliberately not enough — handing out push access would otherwise silently widen who can mint the highest multiplier.

Three properties it is shaped around

Fails open on every uncertainty — unreadable permission, unknown author, absent label. Stripping the highest-value label off a maintainer's own issue because we couldn't read a permission is a worse error than leaving one wrongly applied, and the next label event re-judges it.

Never touches a pull request. The same label name is also the PR type label for a content submission, which ORB applies itself. Conflating the two would have this rule fighting the labeller — so PRs are skipped before the permission read, and the evaluator refuses them independently.

Idempotent by construction. Re-labelling re-runs the rule, so the comment carries a marker and is updated rather than re-posted. It reuses the existing marked-comment upsert (four siblings already use it) rather than adding a fifth copy of that logic.

Shape

The decision is a pure evaluator — 100% statements and branches, measured. The webhook handler is its I/O, following the maybeHandle*WebhookEvent shape every sibling in that file already uses.

Worth noting: issues events were already subscribed via REQUIRED_INSTALLATION_EVENTS and then dropped on the floor — no handler existed. This is the first one.

Every strip writes a ledger event with the rule id, the issue author, the permission that was read and the label, so enforcement history is checkable without reading GitHub.

Policy page

/docs/label-policy documents both rules of the epic — this one and #9738's eligibility window — since a contributor who meets one will meet the other, and a policy split across two pages is a policy nobody reads. It states the fail-open behaviour and the ledger rule ids explicitly, and says plainly that a strip is not a judgement about the issue.

The URL is built from the existing LOOPOVER_SITE_URL constant rather than a second hardcoded origin.

Validation

  • npx vitest run --changed=origin/main: 12264 passed. tsc clean.
  • 13 tests: the strip, every maintainer permission, write rejected, case-insensitive matching on both label and permission, PRs untouched, label-absent, and four fail-open paths.
  • docs:drift-check and ui:openapi:check green.

Not in this PR

The issue also asks for a periodic sweep to catch drift (a label applied while the webhook was down). The event path is the enforcement point and stands on its own; the sweep is a scheduled re-run of the same pure evaluator over open issues, and belongs with the other cron work rather than bolted onto this handler.

…id not author (#9737)

`gittensor:priority` carries the highest scoring multiplier, which makes it the one label whose
application has to be constrained by a RULE rather than by judgment -- otherwise the highest-value
label is whatever anyone says it is. Priority marks work the MAINTAINER originated and triaged, so on
an issue somebody else authored it is now removed automatically, with one comment linking the policy.

Maintainer-of-record is read from the repo's own permissions (`admin` or `maintain`), never a
hardcoded login, so the rule means the same thing on every repo ORB manages. `write` is deliberately
NOT enough: handing out push access would otherwise widen who can mint the highest multiplier.

Three properties the implementation is shaped around:

- FAILS OPEN on every uncertainty -- an unreadable permission, an unknown author, an absent label.
  Stripping the highest-value label off a maintainer's own issue because WE could not read a
  permission is a worse error than leaving one wrongly applied, and the next label event re-judges it.
- NEVER touches a pull request. The same label name is also the PR TYPE label for a content
  submission, which ORB applies itself -- conflating the two would have this rule fighting the
  labeller.
- IDEMPOTENT by construction. Re-labelling re-runs the rule, so the comment carries a marker and is
  updated rather than re-posted; it reuses the existing marked-comment upsert instead of a sixth copy
  of that logic.

The decision is a pure evaluator with 100% statement and branch coverage; the webhook handler is its
I/O, following the `maybeHandle*WebhookEvent` shape every sibling here already uses. `issues` events
were already subscribed and previously dropped on the floor -- this is the first handler for them.

Every strip is written to the ledger with the rule id, the author, the permission read and the label,
so enforcement history is checkable without reading GitHub.

The policy page the comment links to documents BOTH rules of the epic -- this one and #9738's
eligibility window -- since a contributor meeting one will meet the other.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 29, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
loopover-ui bca54e2 Commit Preview URL

Branch Preview URL
Jul 29 2026, 03:39 PM

@loopover-orb

loopover-orb Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Caution

🛑 LoopOver review result - fixes required

Review updated: 2026-07-29 15:58:19 UTC

8 files · 1 AI reviewer · no blockers · CI failing · unstable

🛑 Suggested Action - Manual Review

Review summary
This adds an author-based eligibility rule for the `gittensor:priority` label: a pure evaluator (`priority-label-eligibility.ts`) decides whether to strip the label from a non-maintainer-authored issue, and a new `issues.labeled` webhook handler in `processors.ts` performs the strip/comment/audit I/O, reusing the existing marked-comment upsert pattern. The evaluator is fully unit-tested (fail-open on unreadable permission, unknown author, empty label, PR exemption, case-insensitivity) and the wiring correctly skips pull requests before any permission read, matching the stated PR-vs-label-name conflict concern. Design and implementation are consistent with sibling handlers in the file (`maybeHandle*WebhookEvent` shape, `.catch(() => undefined)` fail-safe writes, marker-based idempotent comment).

Nits — 6 non-blocking
  • The 86-line webhook handler `maybeHandlePriorityLabelEligibility` in src/queue/processors.ts has no direct test exercising it (only the pure evaluator in priority-label-eligibility.test.ts is covered), which lines up with codecov/patch reporting 60% vs the 99% target — worth adding a processors-level test for the strip/comment/audit path.
  • In `maybeHandlePriorityLabelEligibility` (src/queue/processors.ts:~6825) the label-membership check `labels.some((name) => name.toLowerCase() === priorityLabel.toLowerCase())` doesn't trim `priorityLabel` the way the evaluator's own `wanted = input.priorityLabel.trim().toLowerCase()` does — inconsequential in practice but inconsistent with the evaluator's own normalization.
  • This handler adds another ~86 lines to an already very large processors.ts (per the size-smell note); the file already extracts several sibling concerns into their own modules (ci-resolution.ts, duplicate-detection.ts, etc.) via the 'refactor(queue): split processors.ts into cohesive modules #4013 step N' shims, so a similarly small dedicated wiring file could have kept this addition out of the monolith, though this is purely organizational.
  • Add a processors.ts-level test that drives `maybeHandlePriorityLabelEligibility` end-to-end (strip + comment + audit event) to close the codecov/patch gap on the new handler.
  • Align the priorityLabel trim/lowercase normalization between the handler's membership check and the evaluator's internal `wanted` computation for consistency.
  • PR author also opened the linked issue — Link an issue that was opened by a different contributor, or provide a rationale for why this self-authored issue represents genuine discovery work.

CI checks failing

  • codecov/patch — 93.18% of diff hit (target 99.00%)

Decision drivers

  • ✅ Code review — No blockers (1 reviewer)
  • ✅ Gate result — Passing (No configured blocker found.)
Context & advisory signals — never blocks the verdict
Signal Result Evidence
Linked issue ✅ Linked #9737
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ❌ 8/20 High review scope from cached public metadata (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 14 registered-repo PR(s), 13 merged, 330 issue(s).
Contributor context ✅ Confirmed Gittensor contributor JSONbored; Gittensor profile; 14 PR(s), 330 issue(s).
Improvement ✅ Minor risk: clean · value: minor
Linked issue satisfaction

Addressed
The PR adds a pure evaluator and webhook handler that strips gittensor:priority from non-maintainer-authored issues based on repo permissions (admin/maintain), posts an idempotent marker-based comment linking a new policy doc, logs an audit event with the rule id, and includes tests covering contributor vs maintainer authorship, permission fallbacks, and PR exclusion, matching nearly all stated sc

Review context
  • Author: JSONbored
  • Role context: owner (maintainer lane)
  • Public audience mode: oss maintainer
  • Lane context: Repository is registered but has no active allocation in the current snapshot.
  • Public profile languages: Python, TypeScript, Ruby, Go, MDX, Shell, Solidity, JavaScript
  • Official Gittensor activity: 14 PR(s), 330 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Start here: Treat this as maintainer-lane context rather than normal contributor-lane activity.
  • Then work through the remaining 3 steps in the Signals table above.
Signal definitions
  • Related work = same linked issue, overlapping active PRs, or title/path similarity.
  • Change scope = cached public metadata such as size labels, draft state, and review-burden hints.
  • Validation posture = whether the PR provides enough public validation/test evidence for maintainer review.
  • Contributor workload = public contributor activity and cleanup pressure, not a repo-wide quality failure.
  • Contributor context = public GitHub/Gittensor identity context; non-Gittensor status is not a blocker.
🧪 Chat with LoopOver

Ask LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.

  • @loopover ask <question> answers contribution-quality Q&A with source citations and freshness.
  • @loopover chat <question> answers in natural prose from cached decision-pack facts via local inference (maintainer/collaborator; read-only).
  • A plain-language @loopover mention with a real question is routed to the closest matching read-only command automatically — no exact syntax required.

Full command reference: https://loopover.ai/docs/loopover-commands

🧪 Experimental — new and may change.

Decision record
  • action: hold · clause: success
  • config: 3f837225aa30815aef799fd39aefaa41f6248767e735d906c7ea60115e759403 · pack: oss-anti-slop · ci: failed
  • record: 37a4683c7e02826b08dd8eda2c7e6e94b08507e5988058719cca48c98ea28774 (schema v5, head 6ba4170)
Visual preview
Route Viewport Before (production) After (this PR's preview) Diff
/ desktop before /
before /
after /
after /
/ mobile before / (mobile)
before / (mobile)
after / (mobile)
after / (mobile)

Click any thumbnail to open the full-size screenshot. Before = production · After = this PR's preview deploy.

Scroll preview
Route Before (production) After (this PR's preview)
/ before / (scroll)
before / (scroll)
after / (scroll)
after / (scroll)

A short scroll-through clip (desktop) — click either thumbnail to open the full animation. Evidence for scroll-linked behavior a single screenshot can't show.

🟩 Safe / merged · 🟦 Advisory · 🟨 Held for review · 🟥 Blocked / closed


💰 Earn for open-source contributions like this. Gittensor lets GitHub contributors earn for the work they already do — register to start earning →.

Checked by LoopOver, a quiet PR intelligence layer for OSS maintainers.

  • Re-run LoopOver review

@superagent-security

Copy link
Copy Markdown
Contributor

Superagent didn't find any vulnerabilities or security issues in this PR.

@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.18182% with 3 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.77%. Comparing base (226d974) to head (bca54e2).
⚠️ Report is 8 commits behind head on main.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
src/queue/processors.ts 86.95% 3 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #9862      +/-   ##
==========================================
- Coverage   91.65%   90.77%   -0.88%     
==========================================
  Files         916      917       +1     
  Lines      112772   112816      +44     
  Branches    27093    27110      +17     
==========================================
- Hits       103357   102407     -950     
- Misses       8126     9318    +1192     
+ Partials     1289     1091     -198     
Flag Coverage Δ
backend 94.10% <93.18%> (-1.58%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
src/github/comments.ts 100.00% <100.00%> (ø)
src/review/priority-label-eligibility.ts 100.00% <100.00%> (ø)
src/queue/processors.ts 94.67% <86.95%> (-0.06%) ⬇️

... and 3 files with indirect coverage changes

@loopover-orb loopover-orb Bot added the manual-review Gittensor contributor context label Jul 29, 2026
…9737)

Codecov put the patch at 60%: the DECISION was fully covered by its own unit tests, but the I/O the
decision drives -- the permission read, the label removal, the marked comment, the ledger event -- was
not exercised at all, and neither was the wrapper in comments.ts.

13 cases through the real webhook processor with GitHub stubbed. Half of them assert that nothing
happens: a maintainer-authored issue, an unreadable permission, a pull request carrying the same
label, a different label, a non-labeled action, an issue with no author. A rule that strips the
highest-value label does its damage in the paths where it should have stayed still.

Two fixture corrections the tests forced, both of which say something about the code: the marked-comment
upsert only ever updates a comment authored by the App ITSELF (user.type === Bot and a matching login),
so a fixture without those is correctly ignored and a second comment posted -- which is the right
behaviour and now pinned. And typeLabels is config-as-code only, so the custom-label case stubs the
settings RESOLVER rather than writing a manifest fixture: what this file asserts is that the handler
reads the resolved label, not how a repo comes to have one.

228 added lines across the three files: zero uncovered, zero partial branches.
The docs-nav guard (#8385) requires a sidebar entry for every published
.mdx page; the new label-policy page had none, failing UI tests.
@codecov

codecov Bot commented Jul 29, 2026

Copy link
Copy Markdown

Bundle Report

Changes will increase total bundle size by 11.68kB (0.15%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
loopover-ui 7.91MB 11.68kB (0.15%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: loopover-ui

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/add-scalar-classes-CpzKe79h.js (New) 2.16MB 2.16MB 100.0% 🚀
assets/tanstack-vendor-Cwz9sdcF.js (New) 929.59kB 929.59kB 100.0% 🚀
assets/docs.fumadocs-spike-api-reference-B8Q2xZY_.js (New) 443.45kB 443.45kB 100.0% 🚀
assets/AgentScalarChatInterface.vue-Dw0VhOc2.js (New) 201.7kB 201.7kB 100.0% 🚀
assets/modal-N_UM8Qbe.js (New) 184.5kB 184.5kB 100.0% 🚀
assets/client-DSGcS21b.js (New) 151.47kB 151.47kB 100.0% 🚀
assets/maintainer-panel-CfJMbS_x.js (New) 78.99kB 78.99kB 100.0% 🚀
assets/routes-ChTEmx6n.js (New) 35.96kB 35.96kB 100.0% 🚀
assets/owner-panel-DHXeADQg.js (New) 27.99kB 27.99kB 100.0% 🚀
assets/app-Ct0qC4Tn.js (New) 25.78kB 25.78kB 100.0% 🚀
assets/ui-vendor-DN3FLmEI.js (New) 24.57kB 24.57kB 100.0% 🚀
assets/miner-panel-CMj6ce1X.js (New) 20.24kB 20.24kB 100.0% 🚀
assets/app.runs-B5iRK83G.js (New) 20.22kB 20.22kB 100.0% 🚀
assets/api._op-KF4QJ1ls.js (New) 17.57kB 17.57kB 100.0% 🚀
assets/self-hosting-docs-audit-DARqndrJ.js (New) 16.6kB 16.6kB 100.0% 🚀
assets/docs._slug-DuWOHaD3.js (New) 15.65kB 15.65kB 100.0% 🚀
assets/playground-panel-DwSDZF5q.js (New) 14.42kB 14.42kB 100.0% 🚀
assets/fairness-DsDrhTUo.js (New) 13.98kB 13.98kB 100.0% 🚀
assets/label-policy-Lq5v7KBm.js (New) 11.51kB 11.51kB 100.0% 🚀
assets/app.audit-jXOcNKrS.js (New) 10.08kB 10.08kB 100.0% 🚀
assets/app.config-generator-DE149sci.js (New) 10.06kB 10.06kB 100.0% 🚀
assets/maintainers-DRLI7A7U.js (New) 8.06kB 8.06kB 100.0% 🚀
assets/miners-jrrEHf9-.js (New) 7.91kB 7.91kB 100.0% 🚀
assets/agents-B8zDD6Kw.js (New) 7.74kB 7.74kB 100.0% 🚀
assets/commands-panel-CJWixYD_.js (New) 6.65kB 6.65kB 100.0% 🚀
assets/maintainer-workflow-B0lIk-NT.js (New) 6.52kB 6.52kB 100.0% 🚀
assets/digest-panel-74nXBpyI.js (New) 6.15kB 6.15kB 100.0% 🚀
assets/repos._owner._repo.quality-Bc0ZhkjY.js (New) 6.14kB 6.14kB 100.0% 🚀
assets/docs-nav-DP9gJeId.js (New) 6.06kB 6.06kB 100.0% 🚀
assets/docs.index-LnjsKo3J.js (New) 5.95kB 5.95kB 100.0% 🚀
assets/api.index-BDJDVb4B.js (New) 4.7kB 4.7kB 100.0% 🚀
assets/docs-M9QgJlV2.js (New) 2.7kB 2.7kB 100.0% 🚀
assets/api-B3lnKd0c.js (New) 2.69kB 2.69kB 100.0% 🚀
assets/docs-page-aCztTYX6.js (New) 2.1kB 2.1kB 100.0% 🚀
assets/table-DntUx50Y.js (New) 1.75kB 1.75kB 100.0% 🚀
assets/app.workbench-DCGzykWV.js (New) 1.58kB 1.58kB 100.0% 🚀
assets/tabs-D0uysBdW.js (New) 1.39kB 1.39kB 100.0% 🚀
assets/app.repos-Bx0EQuI0.js (New) 1.07kB 1.07kB 100.0% 🚀
assets/input-B6sdFcbk.js (New) 796 bytes 796 bytes 100.0% 🚀
assets/file-cog-BXtyT9w6.js (New) 758 bytes 758 bytes 100.0% 🚀
assets/app.maintainer-Dc4lTNTI.js (New) 502 bytes 502 bytes 100.0% 🚀
assets/app.owner-Bmq8N0OC.js (New) 474 bytes 474 bytes 100.0% 🚀
assets/app.commands-C0bKr05L.js (New) 455 bytes 455 bytes 100.0% 🚀
assets/app.playground-CKo_Pyk6.js (New) 442 bytes 442 bytes 100.0% 🚀
assets/index-DJ6YMzx8.js (New) 438 bytes 438 bytes 100.0% 🚀
assets/app.digest-aZQKWaDx.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/eye-off-wNj8nHtg.js (New) 430 bytes 430 bytes 100.0% 🚀
assets/app.miner-twR5ac53.js (New) 422 bytes 422 bytes 100.0% 🚀
assets/key-round-Be0hxV8U.js (New) 355 bytes 355 bytes 100.0% 🚀
assets/bot-DL7vQOA7.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/trash-2-D2bemWsm.js (New) 328 bytes 328 bytes 100.0% 🚀
assets/save-cxkjmsSM.js (New) 327 bytes 327 bytes 100.0% 🚀
assets/git-pull-request-arrow-BhnZick-.js (New) 321 bytes 321 bytes 100.0% 🚀
assets/list-checks-_yqf-GcI.js (New) 279 bytes 279 bytes 100.0% 🚀
assets/compass-yEKnTsmY.js (New) 251 bytes 251 bytes 100.0% 🚀
assets/history-Ds33jpMY.js (New) 237 bytes 237 bytes 100.0% 🚀
assets/message-square-DQarvFwt.js (New) 233 bytes 233 bytes 100.0% 🚀
assets/lock-CaNiJC60.js (New) 206 bytes 206 bytes 100.0% 🚀
assets/rotate-cw-QE-GWQJY.js (New) 201 bytes 201 bytes 100.0% 🚀
assets/play-DhIAqTK8.js (New) 190 bytes 190 bytes 100.0% 🚀
assets/circle-check-gDY_fasn.js (New) 178 bytes 178 bytes 100.0% 🚀
assets/search-hPWBI2xj.js (New) 174 bytes 174 bytes 100.0% 🚀
assets/add-scalar-classes-BSPnTYjU.js (Deleted) -2.16MB 0 bytes -100.0% 🗑️
assets/tanstack-vendor-BSfui9Ry.js (Deleted) -929.59kB 0 bytes -100.0% 🗑️
assets/docs.fumadocs-spike-api-reference-PEOA5eSX.js (Deleted) -443.45kB 0 bytes -100.0% 🗑️
assets/AgentScalarChatInterface.vue-DSb-a9zj.js (Deleted) -201.7kB 0 bytes -100.0% 🗑️
assets/modal-B0PABJnF.js (Deleted) -184.5kB 0 bytes -100.0% 🗑️
assets/client-Vn4u2jya.js (Deleted) -151.47kB 0 bytes -100.0% 🗑️
assets/maintainer-panel-B_OywHlT.js (Deleted) -78.99kB 0 bytes -100.0% 🗑️
assets/routes-BJ5dZvL6.js (Deleted) -35.96kB 0 bytes -100.0% 🗑️
assets/owner-panel-XwBRI6EE.js (Deleted) -27.99kB 0 bytes -100.0% 🗑️
assets/app-oW9SoyCK.js (Deleted) -25.78kB 0 bytes -100.0% 🗑️
assets/ui-vendor-DJr9t1ia.js (Deleted) -24.57kB 0 bytes -100.0% 🗑️
assets/miner-panel-D28oBVsG.js (Deleted) -20.24kB 0 bytes -100.0% 🗑️
assets/app.runs-BBUw0Jy7.js (Deleted) -20.22kB 0 bytes -100.0% 🗑️
assets/api._op-nH36pdBa.js (Deleted) -17.57kB 0 bytes -100.0% 🗑️
assets/self-hosting-docs-audit-DAewGL-F.js (Deleted) -16.6kB 0 bytes -100.0% 🗑️
assets/docs._slug-EnD-dtAp.js (Deleted) -15.52kB 0 bytes -100.0% 🗑️
assets/playground-panel-ByASbOi5.js (Deleted) -14.42kB 0 bytes -100.0% 🗑️
assets/fairness-BxxDu4ne.js (Deleted) -13.98kB 0 bytes -100.0% 🗑️
assets/app.audit-BZX-F7R9.js (Deleted) -10.08kB 0 bytes -100.0% 🗑️
assets/app.config-generator-D2QtU-1j.js (Deleted) -10.06kB 0 bytes -100.0% 🗑️
assets/maintainers-1kdw3a8z.js (Deleted) -8.06kB 0 bytes -100.0% 🗑️
assets/miners-B8Y4qB1N.js (Deleted) -7.91kB 0 bytes -100.0% 🗑️
assets/agents-DuRIBvje.js (Deleted) -7.74kB 0 bytes -100.0% 🗑️
assets/commands-panel-DHKrkVHD.js (Deleted) -6.65kB 0 bytes -100.0% 🗑️
assets/maintainer-workflow-CV_0wYQJ.js (Deleted) -6.52kB 0 bytes -100.0% 🗑️
assets/digest-panel-CozGcaup.js (Deleted) -6.15kB 0 bytes -100.0% 🗑️
assets/repos._owner._repo.quality-ClOqNqn9.js (Deleted) -6.14kB 0 bytes -100.0% 🗑️
assets/docs-nav-B47PLe_j.js (Deleted) -6.01kB 0 bytes -100.0% 🗑️
assets/docs.index-BUu0bCHw.js (Deleted) -5.95kB 0 bytes -100.0% 🗑️
assets/api.index-DPPFg3Fg.js (Deleted) -4.7kB 0 bytes -100.0% 🗑️
assets/docs-BETvgXpZ.js (Deleted) -2.7kB 0 bytes -100.0% 🗑️
assets/api-DiOaQ19w.js (Deleted) -2.69kB 0 bytes -100.0% 🗑️
assets/docs-page-C3Fhc46Z.js (Deleted) -2.1kB 0 bytes -100.0% 🗑️
assets/table-Bv1338s_.js (Deleted) -1.75kB 0 bytes -100.0% 🗑️
assets/app.workbench-CZnNaiHu.js (Deleted) -1.58kB 0 bytes -100.0% 🗑️
assets/tabs-CYJ3N9FE.js (Deleted) -1.39kB 0 bytes -100.0% 🗑️
assets/app.repos-vet5si0G.js (Deleted) -1.07kB 0 bytes -100.0% 🗑️
assets/input-Cmu1ocjr.js (Deleted) -796 bytes 0 bytes -100.0% 🗑️
assets/file-cog-2oHsLwk6.js (Deleted) -758 bytes 0 bytes -100.0% 🗑️
assets/app.maintainer-BwNHuVKL.js (Deleted) -502 bytes 0 bytes -100.0% 🗑️
assets/app.owner-CSfsqlov.js (Deleted) -474 bytes 0 bytes -100.0% 🗑️
assets/app.commands-BtOP0jPS.js (Deleted) -455 bytes 0 bytes -100.0% 🗑️
assets/app.playground-BzYn0Xwd.js (Deleted) -442 bytes 0 bytes -100.0% 🗑️
assets/index-BPBk3bod.js (Deleted) -438 bytes 0 bytes -100.0% 🗑️
assets/app.digest-D7TQmknz.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/eye-off-DFWYwQHn.js (Deleted) -430 bytes 0 bytes -100.0% 🗑️
assets/app.miner-FW94CuGr.js (Deleted) -422 bytes 0 bytes -100.0% 🗑️
assets/key-round-Bf47khQa.js (Deleted) -355 bytes 0 bytes -100.0% 🗑️
assets/bot-DaJULD9c.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/trash-2-BPDBn-jV.js (Deleted) -328 bytes 0 bytes -100.0% 🗑️
assets/save-DGDZI0bb.js (Deleted) -327 bytes 0 bytes -100.0% 🗑️
assets/git-pull-request-arrow-B4fNJL5x.js (Deleted) -321 bytes 0 bytes -100.0% 🗑️
assets/list-checks-D4E68ExU.js (Deleted) -279 bytes 0 bytes -100.0% 🗑️
assets/compass-BvyqHKPd.js (Deleted) -251 bytes 0 bytes -100.0% 🗑️
assets/history-CANcsOs3.js (Deleted) -237 bytes 0 bytes -100.0% 🗑️
assets/message-square-DR1pJk_4.js (Deleted) -233 bytes 0 bytes -100.0% 🗑️
assets/lock-hYiPwyK8.js (Deleted) -206 bytes 0 bytes -100.0% 🗑️
assets/rotate-cw-Cgmrz7Hb.js (Deleted) -201 bytes 0 bytes -100.0% 🗑️
assets/play-C4XH4baf.js (Deleted) -190 bytes 0 bytes -100.0% 🗑️
assets/circle-check--NMvNaEc.js (Deleted) -178 bytes 0 bytes -100.0% 🗑️
assets/search-gpTP6R1a.js (Deleted) -174 bytes 0 bytes -100.0% 🗑️

@JSONbored
JSONbored merged commit 68fadf5 into main Jul 29, 2026
11 of 12 checks passed
@JSONbored
JSONbored deleted the feat/priority-author-eligibility-9737 branch July 29, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

manual-review Gittensor contributor context

Projects

None yet

Development

Successfully merging this pull request may close these issues.

pipeline(labels): author-based eligibility — gittensor:priority only on maintainer-authored issues, auto-strip elsewhere

1 participant