From b3bad437d89ae8583f701d8e754710bcd5227c71 Mon Sep 17 00:00:00 2001 From: galuis116 Date: Sat, 6 Jun 2026 04:19:46 -0700 Subject: [PATCH] Derive dogfood pack directPrFirst from the config recommendation --- .../self-dogfood-registration-pack.ts | 8 +++-- .../self-dogfood-registration-pack.test.ts | 33 +++++++++++++++++-- 2 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/services/self-dogfood-registration-pack.ts b/src/services/self-dogfood-registration-pack.ts index 903c3bdd9d..42bb8901bd 100644 --- a/src/services/self-dogfood-registration-pack.ts +++ b/src/services/self-dogfood-registration-pack.ts @@ -44,9 +44,11 @@ export function buildSelfDogfoodRegistrationPack(args: { gittensorConfigRecommendation: GittensorConfigRecommendation; }): SelfDogfoodRegistrationPack { const { registrationReadiness: readiness, gittensorConfigRecommendation: recommendation } = args; - const issueDiscoveryReady = - readiness.issueDiscoveryReadiness.ready && readiness.issueDiscoveryReadiness.recommendation === "enabled"; - const directPrFirst = !issueDiscoveryReady && readiness.recommendedRegistrationMode !== "issue_discovery"; + // Keep the lane strategy consistent with the config recommendation shown in the same pack: direct-PR-first + // exactly when the recommendation advises direct_pr (issue-discovery share 0). Deriving this from the + // readiness report's current-lane mode instead contradicts the recommendation when a repo is currently + // registered for issue-discovery/split but the recommendation advises reverting to direct-PR. + const directPrFirst = recommendation.recommended.participationMode === "direct_pr"; return { kind: "gittensory_self_dogfood_registration_pack", diff --git a/test/unit/self-dogfood-registration-pack.test.ts b/test/unit/self-dogfood-registration-pack.test.ts index 21022cfef7..7d9effe52a 100644 --- a/test/unit/self-dogfood-registration-pack.test.ts +++ b/test/unit/self-dogfood-registration-pack.test.ts @@ -224,24 +224,51 @@ describe("resolveSelfDogfoodRepoFullName", () => { }); describe("buildSelfDogfoodRegistrationPack", () => { - it("ready fixture recommends direct-PR-first with actionable areas", () => { + it("excellent fixture recommends a bounded issue-discovery lane, matching the config recommendation", () => { const repo = repoFor("octo/ready", configFor({ repo: "octo/ready" })); const issues: IssueRecord[] = [{ repoFullName: repo.fullName, number: 4, title: "Fix flaky cache test", state: "open", labels: ["bug"], linkedPrs: [] }]; const pack = packFromRepo(repo, issues); + // Config/intake are excellent, so the recommendation is "split" (a bounded issue-discovery lane). + // directPrFirst must follow that recommendation, not the repo's current direct-PR lane. + expect(pack.gittensorConfigRecommendation.recommended.participationMode).toBe("split"); expect(pack).toMatchObject({ kind: "gittensory_self_dogfood_registration_pack", privateOnly: true, advisoryOnly: true, - directPrFirst: true, + directPrFirst: false, registrationReadiness: { ready: true, recommendedRegistrationMode: "direct_pr" }, }); - expect(pack.actionableAreas.some((area) => area.area === "direct_pr" && area.status === "ready")).toBe(true); + expect(pack.contributorLaneStrategy).toMatch(/bounded issue-discovery lane/i); expect(pack.maintainerEconomicsNote).toMatch(/maintainer-economics/i); expect(pack.minerScoreabilityNote).toMatch(/scoreability/i); expect(pack.rerunHint).toMatch(/Rerun this pack/i); }); + it("keeps direct-PR-first when the recommendation is direct_pr even if the repo is currently issue-discovery", () => { + // Repo is currently registered for issue discovery (recommendedRegistrationMode), but degraded config/ + // intake make the recommendation revert to direct_pr. The lane strategy must match the recommendation. + const pack = buildSelfDogfoodRegistrationPack({ + repoFullName: "octo/reverting", + registrationReadiness: readinessFixture({ recommendedRegistrationMode: "issue_discovery" }), + gittensorConfigRecommendation: recommendationFixture({ + recommended: { + participationMode: "direct_pr", + issueDiscoveryShare: 0, + directPrShare: 1, + maintainerCut: 0, + requireLinkedIssue: false, + labelMultipliers: "start_without_trusted_label_multipliers", + publicSurface: "comment_and_label", + confirmedMinerLabel: "gittensor", + }, + }), + }); + + expect(pack.directPrFirst).toBe(true); + expect(pack.contributorLaneStrategy).toMatch(/direct-PR-first/i); + }); + it("not-ready fixture surfaces registration blockers", () => { const repo = repoFor("octo/unregistered", null); const pack = packFromRepo(repo, [], [], []);