Skip to content

feat(miner): add metadata-only opportunity fanout - #2524

Merged
JSONbored merged 1 commit into
JSONbored:mainfrom
oktofeesh1:codex/miner-opportunity-fanout
Jul 2, 2026
Merged

feat(miner): add metadata-only opportunity fanout#2524
JSONbored merged 1 commit into
JSONbored:mainfrom
oktofeesh1:codex/miner-opportunity-fanout

Conversation

@oktofeesh1

Copy link
Copy Markdown
Contributor

Summary

  • add deterministic AI-policy scanning for explicit AI-contribution bans
  • add metadata-only miner issue fan-out for target repo lists and GitHub issue search queries
  • surface rate-limit telemetry and warnings so callers can back off or degrade safely

What changed

  • Added ai-policy-map to @jsonbored/gittensory-engine.
  • Added target-list and search-query candidate issue fan-out helpers to @jsonbored/gittensory-miner.
  • Added tests for ban phrases, policy precedence/defaults, hard skips, degraded GitHub errors, concurrency, dedupe, search filtering, and metadata-only boundaries.

Why

Miner discovery needs a safe first pass across candidate repositories that can skip explicit AI-contribution bans before doing deeper ranking work.

Closes #2307
Closes #2305

Validation

  • npx vitest run test/unit/miner-opportunity-fanout.test.ts
  • npm run test:ci
  • npm audit --audit-level=moderate

@codecov

codecov Bot commented Jul 2, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.93%. Comparing base (4101ca6) to head (e2511ea).
⚠️ Report is 36 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2524      +/-   ##
==========================================
- Coverage   95.94%   95.93%   -0.02%     
==========================================
  Files         226      228       +2     
  Lines       25361    25484     +123     
  Branches     9229     9267      +38     
==========================================
+ Hits        24333    24447     +114     
- Misses        417      426       +9     
  Partials      611      611              
Files with missing lines Coverage Δ
packages/gittensory-engine/src/ai-policy-map.ts 100.00% <100.00%> (ø)

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@loopover-orb

loopover-orb Bot commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

Warning

🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨

⏸️ Gittensory review result - manual review recommended

Review updated: 2026-07-02 07:38:11 UTC

9 files · 1 AI reviewer · no blockers · readiness 78/100 · CI green · clean

⏸️ Suggested Action - Manual Review

Review summary
The change adds a small deterministic policy scanner in the engine package and a metadata-only miner fanout path that lists/searches GitHub issues while skipping repositories with explicit policy bans. The core flow is coherent, covered by unit tests, and the public JS plus d.ts surface lines up with the implementation. The most notable maintainability risk is that search discovery mutates caller queries by blindly appending qualifiers, but I do not see a reachable correctness break in the provided files.

Nits — 5 non-blocking
  • nit: packages/gittensory-miner/lib/opportunity-fanout.js:190 appends `state:open type:issue` even when the caller already supplied conflicting `state:` or `type:` qualifiers, so please either document that these are enforced or normalize existing qualifiers before appending.
  • nit: packages/gittensory-miner/lib/opportunity-fanout.js:91 records the minimum remaining count and the latest reset timestamp across different GitHub resources, which is usable telemetry but can mix unrelated buckets; consider returning per-resource warning/telemetry if callers will make backoff decisions from it.
  • nit: packages/gittensory-miner/lib/opportunity-fanout.js:260 silently drops malformed target entries, which is convenient for fanout but makes configuration mistakes easy to miss; consider adding a summary warning for skipped invalid targets.
  • packages/gittensory-miner/lib/opportunity-fanout.js:190 should either enforce and document the search-query qualifier behavior or strip/replace existing `state:` and `type:` qualifiers before calling GitHub.
  • packages/gittensory-miner/lib/opportunity-fanout.js:91 should keep rate-limit telemetry tied to the response bucket if consumers will use it for retry timing.
Signal Result Evidence
Code review ✅ No blockers 1 reviewer
Linked issue ✅ Linked #2307, #2305
Related work ✅ No active overlap found No same-issue or scoped active PR overlap found.
Change scope ✅ 20/20 Low review scope from cached public metadata (size label size:XL; 2 linked issues).
Validation posture ❌ 5/25 Preflight is holding this PR: the review lane is unavailable, so it is not ready for automated review.
Contributor workload ✅ 10/10 Author activity: 65 registered-repo PR(s), 58 merged, 4 issue(s).
Contributor context ✅ Confirmed Gittensor contributor oktofeesh1; Gittensor profile; 65 PR(s), 4 issue(s).
Gate result ✅ Passing No configured blocker found.
Review context
  • Author: oktofeesh1
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository registration is not available in the local Gittensory cache.
  • Public profile languages: not available
  • Official Gittensor activity: 65 PR(s), 4 issue(s).
  • PR-specific overlap: none found.
Contributor next steps
  • Await review-lane availability.
  • Refresh registry data or choose a registered active repo.
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.

🟩 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 Gittensory, a quiet PR intelligence layer for OSS maintainers.

  • Re-run Gittensory review

@loopover-orb loopover-orb Bot added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jul 2, 2026
@dosubot dosubot Bot added the lgtm label Jul 2, 2026
@JSONbored JSONbored added the gittensor:priority Maintainer-selected Gittensor priority — scores a 1.5x multiplier. label Jul 2, 2026
@JSONbored
JSONbored merged commit e4901be into JSONbored:main Jul 2, 2026
10 checks passed
@github-project-automation github-project-automation Bot moved this from Todo to Done in gittensory - v1 roadmap Jul 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. gittensor:priority Maintainer-selected Gittensor priority — scores a 1.5x multiplier.

Projects

No open projects
Status: Done

2 participants