feat(miner): pre-execution feasibility check for freeform ideas - #5789
Conversation
Adapts the metadata feasibility scoring (feasibility-cli.js, JSONbored#4270) for Rent-a-Loop's freeform idea intake (JSONbored#4779), so compute is never allocated to an idea that was never going to succeed. Runs post-schema- validation, pre-compute-allocation. Reuses the engine's pure buildFeasibilityVerdict composer and its avoid>raise>go precedence unchanged (no second decision surface). The freeform-specific part derives the issueStatus discriminant from the idea's own structure: an idea with no objective success signal is 'invalid' (impossible to evaluate) and rejected before compute; an unresolvable target repo is 'missing' (out of scope) and flagged. Semantic abusive/off-topic intent stays out of scope (JSONbored#5136). Full branch coverage; 100% patch. Closes JSONbored#5671
|
Superagent didn't find any vulnerabilities or security issues in this PR. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5789 +/- ##
=======================================
Coverage 95.06% 95.06%
=======================================
Files 580 581 +1
Lines 46156 46165 +9
Branches 14804 14804
=======================================
+ Hits 43880 43889 +9
Misses 1516 1516
Partials 760 760
Flags with carried forward coverage won't be shown. Click here to find out more.
🚀 New features to boost your workflow:
|
|
Tip 🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩 ✅ LoopOver review result - approve/merge recommendedReview updated: 2026-07-14 15:58:55 UTC
✅ Suggested Action - Approve/Merge
Review summary Nits — 4 non-blocking
Review context
Contributor next steps
Signal definitions
[BETA] Chat with GittensoryAsk Gittensory a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://gittensory.aethereal.dev/docs/gittensory-commands 🟩 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.
|
…nd (#6224) idea-feasibility.js (#5789) implemented the pre-compute feasibility gate for freeform Rent-a-Loop ideas (#5671) but had zero callers anywhere in bin/, lib/, or test/unit -- built against the #4779 intake schema and never wired in. Wire it through a new `loopover-miner idea-feasibility` subcommand, the freeform-idea counterpart to the metadata `feasibility` command (feasibility-cli.js, #4270). It follows that command's parse -> execute -> render precedent so an idea runs through the same buildFeasibilityVerdict machinery before compute is allocated, except the idea's issueStatus is derived from its own structure: no objective success signal (--hint) is invalid/rejected and an unresolvable target (--not-resolvable) is missing/flagged. Closes #6155 Co-authored-by: nghetienhiep <13849419+nghetienhiep@users.noreply.github.com>
Closes #5671. Adapts the metadata
feasibilityscoring (feasibility-cli.js, #4270) for Rent-a-Loop's freeform idea intake (the #4779 schema), so compute is never allocated to an idea that was never going to succeed. Runs post-schema-validation, pre-compute-allocation.Reused from feasibility-cli.js as-is: the engine's pure
buildFeasibilityVerdictcomposer and itsavoid > raise > goprecedence — an idea inherits the same verdict machinery a metadata-resolved issue does, so there's no second decision surface. Plus the injectable-verdict test seam.New for freeform text:
deriveIdeaIssueStatuscomputes theissueStatusdiscriminant from the idea's own structure — no objective success signal ⇒invalid(impossible to evaluate) ⇒ rejected before compute; unresolvable target repo ⇒missing(out of scope) ⇒ flagged. Semantic/abusive-intent judgement stays out of scope (#5136).Tests cover a feasible idea (proceeds), a well-formed-but-impossible idea (rejected), an ambiguous/overlapping idea (flagged), an out-of-scope target (flagged), simultaneous avoid reasons, and both verdict-composer paths — 100% statements/branches/functions/lines on the new module. New
lib/*.jsships its hand-written.d.tstwin per convention; reused-vs-new documentation is in the module header. Verified locally: vitest 100% patch coverage +tsc --noEmitclean on the changed files.