docs(review): document the mixed-files vs manual asymmetry for multi-provider companions - #2587
Conversation
|
Warning 🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨🟨 ⏸️ Gittensory review result - manual review recommendedReview updated: 2026-07-02 11:16:48 UTC
⏸️ Suggested Action - Manual Review Review summary Nits — 4 non-blocking
Review context
Contributor next steps
Signal definitions
🟩 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 Gittensory, a quiet PR intelligence layer for OSS maintainers.
|
…provider companions classifyRegistryPrScope's mixed-files guard hard-closes 2+ provider files only when there's no entry file present; the same "which provider is the real companion?" ambiguity alongside a single well-formed entry file instead falls through to entry-submission scope, and runSurfaceReview routes it to a manual-review hold rather than a close. This asymmetry predates the surface-lane content-lane feature and was flagged as a real inconsistency during a recent adversarial review, but it's a deliberate trade-off, not a bug: with zero entry files there is nothing else in the diff worth preserving, so a decisive close is correct; with one entry file present, the entry itself may still be a legitimate submission, so holding for a human is safer than throwing away potentially-good content with an outright close. Names the two mixed-files conditions explicitly, documents the trade-off (and how to tighten it later if the trade-off changes), and adds regression tests locking in both sides of the behavior.
b604b03 to
3aecdd4
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #2587 +/- ##
==========================================
+ Coverage 95.98% 96.00% +0.01%
==========================================
Files 229 230 +1
Lines 25813 25916 +103
Branches 9390 9421 +31
==========================================
+ Hits 24777 24880 +103
Misses 425 425
Partials 611 611
🚀 New features to boost your workflow:
|
Summary
classifyRegistryPrScope's early mixed-files guard is:This only hard-closes 2+ provider files as
mixed-fileswhen there's no entry file present. When exactly one entry file rides alongside 2+ provider companion files, the PR instead falls through toentry-submissionscope, andrunSurfaceReviewonly catches the ambiguous companion shape later as a softmanualrouting (companion-file-changes review), not a hard close.This is a pre-existing asymmetry (it predates the registry surface-lane content-lane feature entirely — the guard and the orchestrator's companion loop are both unchanged by this PR) that was flagged as a real inconsistency during a recent adversarial code review of a separate surface-lane bugfix PR.
Decision: keep the current behavior (manual, not mixed-files/close) — this is a deliberate trade-off, not a bug — and document it clearly + lock it in with regression tests.
Rationale: with zero entry files, there is nothing else in the diff worth preserving if the provider-file shape is ambiguous, so a decisive close is correct. With one entry file present, the entry itself may still be a perfectly legitimate, valid submission — only its companion shape is unclear — so holding it for a human via
manualis safer than throwing away potentially-good entry content with an outright close. Making the two shapes symmetric (i.e. also closing the entry+multi-provider case) would be a real behavior change with no clear product-safety win, and this PR does not make that call unilaterally.What changed
classifyRegistryPrScope's doc comment now explicitly states the two mixed-files conditions and calls out the asymmetry by name (DELIBERATE ASYMMETRY), including how to tighten it later (entryFiles.length > 1 || providerFiles.length > 1, dropping theentryFiles.length === 0qualifier) if a future spec's needs change this trade-off.tooManyEntryFiles,tooManyProviderFilesWithNoEntry) so the asymmetry is visible in the code, not just the comment.runSurfaceReview's companion-file loop gets a cross-referencing comment.test/unit/content-lane-registry-logic.test.tsandtest/unit/content-lane-orchestrator.test.tslock in both sides: entry + 2 provider files →entry-submissionscope →manual; 2+ provider files with no entry →mixed-files→close.No runtime behavior changes — this is documentation + naming + regression tests only.
Scope
type(scope): short summaryConventional Commit format, for examplefix(api): restore profile access checks.CONTRIBUTING.mdand does not reintroduce GitHub Pages, VitePress,site/, orCNAME.Validation
git diff --checknpm run actionlintnpm run typechecknpm run test:coveragelocally — both touchedsrc/**files (registry-logic.ts,orchestrator.ts) are 100% line- and branch-covered.npm run test:workersnpm run build:mcpnpm run test:mcp-packnpm run ui:openapi:checknpm run ui:lintnpm run ui:typechecknpm run ui:buildnpm audit --audit-level=moderateSafety
ui:openapi:checkconfirms no drift.UI Evidencesection below with screenshots. — N/A, backend-only, docs/tests-only change.Notes
mainand is independent of#2586(a separate, in-flight registry surface-lane bugfix PR touching the same two files for unrelated reasons). Expect a rebase on whichever of the two merges second.