Skip to content

[Bug]: Self-dogfood pack lane strategy contradicts its own config recommendation #442

Description

@galuis116

Summary

buildSelfDogfoodRegistrationPack (src/services/self-dogfood-registration-pack.ts:46-60) derives directPrFirst from the registration readiness report's current-lane mode, but the same pack also returns the config recommendation. The two can disagree, so the pack's contributorLaneStrategy text and directPrFirst flag contradict the gittensorConfigRecommendation shown right beside them.

// src/services/self-dogfood-registration-pack.ts:47-60
const issueDiscoveryReady =
  readiness.issueDiscoveryReadiness.ready && readiness.issueDiscoveryReadiness.recommendation === "enabled";
const directPrFirst = !issueDiscoveryReady && readiness.recommendedRegistrationMode !== "issue_discovery"; // <- bug
// ...
contributorLaneStrategy: directPrFirst
  ? "Keep contributor intake direct-PR-first until issue-discovery signals, label policy, and queue health are excellent."
  : "Issue-discovery intake is strong enough to keep a bounded issue-discovery lane alongside direct PRs.",

readiness.recommendedRegistrationMode reflects the repo's current registered lane, while the recommendation reflects the advised config:

// src/signals/registration-readiness.ts
recommendedRegistrationMode: laneToMode(lane),           // :208 — current lane (registryConfig)
// laneToMode("issue_discovery") === "issue_discovery"   // :88-90
// ...
const shouldEnableIssueDiscovery = contributorIntakeHealth.level === "healthy" && configQuality.level === "excellent"; // :278
const recommendedIssueDiscoveryShare = shouldEnableIssueDiscovery ? 0.1 : 0;                                            // :280
participationMode: recommendedIssueDiscoveryShare > 0 ? "split" : "direct_pr",                                          // :293

Failure case

Repo currently registered for issue discovery (issueDiscoveryShare = 1lane = "issue_discovery") but with non-excellent intake/config health:

  • readiness.recommendedRegistrationMode = "issue_discovery" (current lane).
  • recommendation.participationMode = "direct_pr" (because shouldEnableIssueDiscovery is false).
  • directPrFirst = !issueDiscoveryReady && ("issue_discovery" !== "issue_discovery") = ... && false = false.

So the pack returns:

  • directPrFirst: false
  • contributorLaneStrategy: "Issue-discovery intake is strong enough to keep a bounded issue-discovery lane alongside direct PRs."
  • gittensorConfigRecommendation.recommended.participationMode: "direct_pr"

The maintainer reading the pack is told issue-discovery intake is strong enough to keep an issue-discovery lane, while the same pack recommends reverting to direct-PR-only. The directPrFirst flag is also wrong (false when the recommendation is direct-PR).

Expected

directPrFirst and contributorLaneStrategy match the config recommendation in the same pack: direct-PR-first exactly when the recommendation is participationMode === "direct_pr" (i.e. recommendedIssueDiscoveryShare === 0).

Actual

directPrFirst is computed from readiness.recommendedRegistrationMode (the repo's current lane), which diverges from the recommendation whenever a repo is currently registered for issue-discovery/split but the recommendation advises reverting to direct-PR (degraded health/config). The lane-strategy text then contradicts the recommendation shown alongside it.

Suggested fix

Base directPrFirst on the recommendation, not on the current-lane readiness mode:

const directPrFirst = recommendation.recommended.participationMode === "direct_pr";
// equivalently: recommendation.recommended.issueDiscoveryShare === 0

Add fail-on-revert coverage: a pack built for a currently-issue-discovery repo whose recommendation is direct_pr must report directPrFirst: true and the direct-PR-first strategy text (not the "issue-discovery is strong enough" text).

Metadata

Metadata

Assignees

No one assigned

    Labels

    slopAI slop and/or attempts to game additional points via manipulation or alt profiles.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions