Skip to content

feat(signals): model issue-discovery lifecycle state separately #109

Description

@JSONbored

Parent roadmap: #82

Background

Issue-discovery outcomes affect credibility and contributor strategy differently from direct PR outcomes.

Goal

Build a separate issue-discovery lifecycle model for open, closed-not-solved, solved, valid-solved, stale, duplicate, and invalid states.

Current Behavior

Issue and PR signals exist, but issue-discovery lifecycle is not fully separated from generic issue quality.

Desired Behavior

Decision packs and issue-quality reports explain which issue-discovery activity helps, hurts, or should be avoided.

Implementation Requirements

  • Add lifecycle classifier.
  • Use official/mirror data first.
  • Separate valid solved issues from raw closed issues.
  • Feed lifecycle into issue quality, strategy, and scoring profile.
  • Avoid encouraging issue filing in direct-PR-only repos.

Public/Private Output Boundaries

Signal data can inform private API/MCP outputs. Public GitHub output must use only sanitized, maintainer-friendly summaries and must not expose private scoreability or contributor scoring internals.

Acceptance Criteria

  • Valid solved issues are distinct from raw solved/closed.
  • Closed-not-solved affects risk.
  • Direct-PR-only repos do not encourage issue spam.
  • Lifecycle state is deterministic.

Testing Requirements

  • npm run test:ci must pass.
  • Global coverage must remain at or above 97% for lines, statements, functions, and branches.
  • Aim for 98%+ branch coverage locally to avoid CI variance.
  • Add tests for every new branch, fallback path, sanitizer rule, and regression.
  • Add invariant/property-style tests when behavior depends on sorting, gating, scoring, queue pressure, source-upload safety, public/private boundaries, or upstream drift.
  • Public GitHub output must be tested against forbidden language: wallet, hotkey, raw trust score, payout, reward estimate, farming, private reviewability, and public score estimate.
  • MCP/local tooling must prove source contents are not uploaded.

Additional Test Scenarios

  • Valid solved fixture.
  • Closed-not-solved fixture.
  • Stale issue fixture.
  • Direct-PR-only fixture.
  • Issue-discovery repo fixture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions