Skip to content

feat(miner): pre-execution feasibility check for freeform ideas - #5789

Merged
loopover-orb[bot] merged 1 commit into
JSONbored:mainfrom
lourincedaging0-commits:feat-idea-feasibility-v2
Jul 14, 2026
Merged

feat(miner): pre-execution feasibility check for freeform ideas#5789
loopover-orb[bot] merged 1 commit into
JSONbored:mainfrom
lourincedaging0-commits:feat-idea-feasibility-v2

Conversation

@lourincedaging0-commits

Copy link
Copy Markdown
Contributor

Closes #5671. Adapts the metadata feasibility scoring (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 buildFeasibilityVerdict composer and its avoid > raise > go precedence — 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: deriveIdeaIssueStatus computes the issueStatus discriminant 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/*.js ships its hand-written .d.ts twin per convention; reused-vs-new documentation is in the module header. Verified locally: vitest 100% patch coverage + tsc --noEmit clean on the changed files.

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-security

Copy link
Copy Markdown
Contributor

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

@codecov

codecov Bot commented Jul 14, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.06%. Comparing base (1c4f59e) to head (2a6bfdf).
⚠️ Report is 2 commits behind head on main.

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           
Flag Coverage Δ
shard-1 43.50% <0.00%> (-0.43%) ⬇️
shard-2 35.83% <0.00%> (+0.07%) ⬆️
shard-3 32.24% <0.00%> (-0.04%) ⬇️
shard-4 31.13% <100.00%> (-1.83%) ⬇️
shard-5 32.51% <0.00%> (+0.76%) ⬆️
shard-6 44.97% <0.00%> (+0.34%) ⬆️

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

Files with missing lines Coverage Δ
packages/loopover-miner/lib/idea-feasibility.js 100.00% <100.00%> (ø)
🚀 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 added the gittensor:feature Gittensor-scored feature linked to a feature issue — scores a 0.25x multiplier. label Jul 14, 2026
@loopover-orb

loopover-orb Bot commented Jul 14, 2026

Copy link
Copy Markdown
Contributor

Tip

🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩🟩

✅ LoopOver review result - approve/merge recommended

Review updated: 2026-07-14 15:58:55 UTC

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

✅ Suggested Action - Approve/Merge

  • safe to merge

Review summary
Adds `idea-feasibility.js`/`.d.ts` plus a `deriveIdeaIssueStatus` function that maps a freeform idea's structural signals (`targetResolvable`, `acceptanceHints`) onto the discriminant the existing engine's `buildFeasibilityVerdict` already consumes, then wraps the verdict into a `proceed`/`flag`/`reject` disposition. The reuse of the `avoid > raise > go` engine composer avoids a second decision surface as claimed, and the new derivation logic is narrow and purely structural (no semantic prose judgement, correctly deferring that to #5136). Tests cover all four `issueStatus` outcomes, both disposition-affecting reason paths, and the injectable-verdict test seam, matching the stated 100% coverage.

Nits — 4 non-blocking
  • packages/loopover-miner/lib/idea-feasibility.js: `issueStatus = "missing"` is a value not enumerated in the idea-bridge spec doc's rubric table (§3 lists only ready/needs_proof/hold/invalid/do_not_use) — worth confirming `FeasibilityIssueStatus` in `@​loopover/engine` actually includes `"missing"` as a first-class member rather than relying on structural typing to silently accept it.
  • packages/loopover-miner/lib/idea-feasibility.js:13,31: issue numbers `5671`/`4779` are embedded directly in prose comments with no named constant, per the external brief — purely cosmetic.
  • No handling for the `needs_proof`/`hold` issueStatus described in the idea-intake-bridge spec (§2 rule 5, dependency ordering) — presumably intentionally out of scope for this single-idea assessor versus the future task-graph bridge, but worth a one-line note in the module header confirming that's deliberate.
  • Consider a short doc-comment note in idea-feasibility.js clarifying that `dependsOn`/graph-level `hold` semantics from the Idea-intake bridge schema #4779 spec are handled by a separate future task-graph layer, not this module, to preempt confusion when that work lands.
Signal Result Evidence
Code review ✅ No blockers 1 reviewer
Linked issue ✅ Linked #5671
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 (1 linked issue).
Validation posture ✅ 25/25 PR body includes validation/test evidence.
Contributor workload ✅ 10/10 Author activity: 0 registered-repo PR(s), 0 merged, 0 issue(s).
Contributor context ❌ No public Gittensor match lourincedaging0-commits; not a blocker.
Gate result ✅ Passing No configured blocker found.
Improvement ✅ Minor risk: clean · value: minor — Code changes are accompanied by test evidence. LLM value judgment: moderate — The diff cleanly reuses proven verdict machinery for a new intake path with full test coverage, directly closing the linked issue #5671 with a narrowly-scoped, well-targeted change.
Review context
  • Author: lourincedaging0-commits
  • Role context: outside_contributor
  • Public audience mode: oss maintainer
  • Lane context: Repository is configured for direct PR review.
  • Public profile languages: not available
  • Contributor context: Public profile only; not a blocker.
  • PR-specific overlap: none found.
Contributor next steps
  • Keep the PR focused and include validation evidence before maintainer review.
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.
[BETA] Chat with Gittensory

Ask 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.

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

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.

  • Re-run LoopOver review

@loopover-orb loopover-orb Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gittensory approves — the gate is satisfied and CI is green.

@loopover-orb
loopover-orb Bot merged commit 0e6f368 into JSONbored:main Jul 14, 2026
16 checks passed
This was referenced Jul 14, 2026
loopover-orb Bot pushed a commit that referenced this pull request Jul 15, 2026
…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>
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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adapt feasibility-cli.js scoring for freeform idea text

1 participant