orb(content-lane): canonicalize issue-body path tokens in `checkContentLaneDeliverable - #9930
orb(content-lane): canonicalize issue-body path tokens in `checkContentLaneDeliverable#9930phamngocquy wants to merge 1 commit into
Conversation
…ntLaneDeliverable Fixes JSONbored#9667
|
Caution 🛑 LoopOver review result - reject/close recommendedReview updated: 2026-07-30 16:25:13 UTC
Review summary Nits — 3 non-blocking
Why this is blocked
📋 Copy for AI agents — paste into your coding agentDecision drivers
Context & advisory signals — never blocks the verdict
Linked issue satisfactionAddressed Review context
Contributor next steps
Signal definitions
🧪 Chat with LoopOverAsk LoopOver a question about this PR directly in a comment — grounded only in the same cached, public-safe facts shown above, never a new claim.
Full command reference: https://loopover.ai/docs/loopover-commands 🧪 Experimental — new and may change. 🟩 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.
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #9930 +/- ##
===========================================
- Coverage 91.86% 79.62% -12.25%
===========================================
Files 921 282 -639
Lines 113296 58867 -54429
Branches 27313 8759 -18554
===========================================
- Hits 104079 46871 -57208
- Misses 7929 11706 +3777
+ Partials 1288 290 -998
Flags with carried forward coverage won't be shown. Click here to find out more.
|
|
LoopOver is closing this pull request on the maintainer's behalf (Linked issue's expected content was never delivered). This is an automated maintenance action — to pursue this change, please open a new pull request with the issues resolved. Closed PRs may be analyzed later to improve review accuracy, but they are not automatically reopened or re-reviewed. |
Summary
checkContentLaneDeliverable(src/review/content-lane/registry-logic.ts:919-936) is thedeterministic "did this PR actually deliver the content file its linked issue names?" check — the guard
against a test-only PR closing a content issue via a bare
Closes #N. It compares two things againstthe same predicate:
entryFilePattern/providerFilePatternare compiled byglobToRegExp(
packages/loopover-engine/src/signals/change-guardrail.ts:82-103), which canonicalizes the globfirst (
canonicalizelowercases,packages/loopover-engine/src/signals/change-guardrail.ts:11-13) andemits
new RegExp("^…$")with noiflag. So the compiled pattern only ever matches lowercaseinput.
Result: an issue body that writes the path with any capitalization —
Registry/subnets/foo.json,registry/Subnets/Foo.json— produces nomentionedPath. With noissueTitleImpliesEntryPatternconfigured (or a title that doesn't match it),
checkContentLaneDeliverablereturns{ verdict: "not-applicable" }, and the deliverable gate silently does not run for that issue —the exact "test-only PR closes a content issue without ever delivering the content" gap the function's
own header (
src/review/content-lane/registry-logic.ts:875-882) says it exists to close.classifyRegistryPrScopein the same file already documents why this matters(
src/review/content-lane/registry-logic.ts:778-781): "globToRegExp compiles the spec patterns againsta CANONICALIZED path … so match on canonicalize(f), or an uppercase /
./-prefixed / backslash-separatedchanged path silently fails to classify as a registry submission." The issue-body side never got that
treatment.
Deliverables
checkContentLaneDeliverableinsrc/review/content-lane/registry-logic.tsreturns{ verdict: "missing", mentionedPath: "Registry/Subnets/Foo.json" }for an issue body namingRegistry/Subnets/Foo.jsonagainst a PR that changed no matching file — asserted by a new namedcase in
test/unit/content-lane-registry-logic.test.ts."delivered"verdict for that mixed-case issue body when the PR DOESchange
registry/subnets/foo.json.deliveredandmissing) isunchanged.
not-applicable(the change does not over-broaden the match).All Deliverables above are required in a single PR. A PR that satisfies only some of them — for
example canonicalizing the token (Deliverable 1) but also lowercasing the reported
mentionedPath,breaking the public-comment text — does not resolve this issue.
Test plan
This repo enforces 99%+ Codecov patch coverage, branch-counted, and
vitest.config.ts'scoverage.includecoverssrc/**/*.ts— this file is measured. Both arms of thefind(matchesSpec)outcome (a token that matches, and one that does not) need a test, as do both armsof the
mentionedPath ?? …fallback in themissingreturn.Fixes #9667