Repository navigation
[Task]: Live surfaces and one relevance oracle still carry the pre-transfer repository address #4753
Description
Activity
Maintainer intake readback on current
main@916763e2c7fc9c19274f877dd234f7db6a65390c: the core regression is confirmed, and it is not covered by the already-merged organization-transfer PRs #4750 / #4751.What reproduces
-
The relevance regression is exact and behavioral. Calling
classify_relevance("Question", url)gives:https://github.com/huangruiteng/loopx/issues/1->stronghttps://github.com/loopx-project/loopx/issues/1->weak
The canonical URL is therefore weaker than the historical alias. The existing offline community-discussion smoke passes, but it only exercises the pre-transfer address and does not cover this counterexample.
-
The named live outputs still carry the old repository address on current main: first-run report URL, onboarding
source_repository, manager/steward machine-configuration documentation URLs, and value-connector targets.loopx/configuration_catalog.pyalso contains ten current machine-configuration documentation URLs with the old address and belongs in the same runtime-output audit. -
The package-facing examples are still pre-transfer: the community-discussion and repo-health README/request defaults use owner
huangruiteng, andpackages/dsh-loopx-plugin/package.jsonstill publishes the old repository URL. Historical release links, archived PR/issue citations, compatibility fixtures, and the DSH installed-state filename are a different class and should not be rewritten by a blanket tree-wide substitution. -
There is already a canonical-identity test owner:
tests/test_project_organization_identity.py. It currently protects install/update/package identity only (2 passed) and does not cover these live projections.examples/repository-hygiene-smoke.pyalso already exists, so this should extend an existing owner rather than add a second smoke with the same name.
Public deduplication
- ci: restore workflow gates after repository transfer #4750 intentionally covered workflow exact-match guards.
- release: prepare 1.1.0 and complete organization migration #4751 covered release/install/update/desktop/public entry points and added the current organization-identity test.
- I found no open PR touching any of the issue's named runtime/package paths or
normalize.py; the remaining gap is not already in flight.
Recommended implementation boundary
A cohesive first PR can update the current live projections/examples, add
loopx-projectandgithub.com/loopx-project/loopxas strong terms while retaining the two old aliases, and extend the existing organization-identity/hygiene coverage. Please includeloopx/configuration_catalog.pyin the audited runtime surface.The guard should not be a repository-wide substring denylist. The old identity is still legitimate in historical citations, compatibility fixtures and the explicit legacy relevance alias. Prefer an explicit set of current live surfaces (or one canonical repository-identity constant consumed by them) plus a reviewed allowlist for intentionally retained legacy references. That gives the mutation test a semantic boundary and avoids turning release history or compatibility tests into false positives.
For the relevance oracle, the minimum regression matrix is:
- canonical organization URL ->
strong; - pre-transfer URL -> still
strongfor historical evidence; - an unrelated
looped/noise example -> stillnoise; - a generic text that contains neither identity -> still
weak.
Validation run during intake:
uv run --extra test pytest -q tests/test_project_organization_identity.py->2 passed;uv run --extra test python packages/loopx-community-discussion/smoke/community_discussion_smoke.py-> passed;- direct old/new URL classification ->
strong/weakas above; uv run --extra test python examples/repository-hygiene-smoke.pycurrently fails for an unrelated baseline reason (v1.1.0is missing from the release timeline), so an identity change should either use the focused organization-identity test first or repair that independent baseline without hiding it.
This intake confirms and narrows the defect; it does not assign implementation or change issue metadata. An implementation PR should reference this exact scope and keep the historical-alias compatibility explicit.
-
hahahahahayesyeseys commented
on Sep 20, 2026 ContributorMore actionsOne residue found and opened separately as #4809: a test expectation still pinned the pre-transfer address, so the update-note generator now fails its own quality smoke by emitting the correct one. It is red on
mainin two lanes today (full-public-smokes shard 4 and the biweeklydraft-update-note-prjob). That PR also notes the remaining release-timeline hygiene failure is release record content and left to its owner.- added a commit that references this issue
on Sep 20, 2026
Task ID or area
area: repository identity after the organization migration (
huangruiteng/loopx→loopx-project/loopx)Technical direction
Core control-plane hardening; build/packaging and public-docs hygiene
Intent
The transfer moved the canonical address, and most of the tree followed:
.github/workflows/*,README.md/README.zh-CN.md, the Tauri desktop config, the hosted site,scripts/install-from-github.sh(repo="${LOOPX_REPO:-loopx-project/loopx}") andself_update.DEFAULT_UPDATE_REPOall nameloopx-project/loopxalready. Measured on currentmain, three things did not follow, and one of them is a behavior bug rather than a stale link.Goal and acceptance gap
git greponmain:loopx/cli_commands/first_run_report.py:18—FIRST_RUN_ISSUE_URLis the "file your first-run report" link handed to every new install;loopx/agent_onboarding.py:245—source_repositoryin the onboarding projection;loopx/capabilities/manager_runtime/machine_profile.py:57andloopx/capabilities/steward_executor/machine_defaults.py:148— thedocumentation.urleach machine-configuration namespace projects to CLI and Dashboard;loopx/capabilities/value_connectors/planner.py:274,289— the two monitoredtarget_urlvalues (intake issue and discussion);packages/loopx-community-discussion/README.mdandexamples/request.json,packages/loopx-repo-health/examples/request.json,packages/dsh-loopx-plugin/package.json— copied-by-users command examples and package metadata.GitHub redirects keep the old addresses resolving, which is exactly why nothing fails loudly.
loopx-community-discussionmis-classifies its own project.normalize.STRONG_TERMScontainshuangruitengandgithub.com/huangruiteng/loopx, andclassify_relevancereturnsstrongonly on those. A post-transfer mention ofgithub.com/loopx-project/loopxmatches no strong term, so the provider downgrades LoopX's own canonical pages toweak— a relevance-oracle regression introduced by the move, not a cosmetic one.Proposed scope
One cohesive slice, all of it inside live surfaces:
loopx-project/loopx;STRONG_TERMSwhile keeping the pre-transfer pair as historical aliases, so archived pages and old release notes still classifystrong, and pin both with a smoke case;repository-hygienecheck that fails when a live surface (loopx/**,scripts/**,.github/workflows/**,packages/**/src/**, package manifests) carries the pre-transfer address, and that requires the disambiguation list to cover both forms.Deliberately excluded, so this stays reviewable:
blob/main/tree/maindocument links and 30 bare identity mentions underdocs/**,docs/book/**and the hosted blog HTML. Those are a mechanical sweep with their own diff-noise risk, and dated records (release notes, blog posts, RFC citations,packages/loopx-codex-provider-routing/RUNBOOK.mdPR tables — 431/pull/N,/issues/N,/commit/sha,/releases/download/tagcitations measured onmain) should keep the address the event happened under.packages/dsh-loopx-plugin'sdata/plugins/huangruiteng__loopx--packages-dsh-loopx-plugin.ymlinstall filename: that string is derived identity in already-installed state, so changing it needs a migration decision rather than a rename. Flagging, not touching.Intended base branch
main.Relevant files or commands
loopx/cli_commands/first_run_report.py,loopx/agent_onboarding.py,loopx/capabilities/{manager_runtime/machine_profile,steward_executor/machine_defaults,value_connectors/planner}.pypackages/loopx-community-discussion/src/loopx_community_discussion/normalize.py+smoke/community_discussion_smoke.py+README.md+examples/request.jsonpackages/loopx-repo-health/examples/request.json,packages/dsh-loopx-plugin/package.jsonexamples/repository-hygiene-smoke.pyValidation plan
python3 examples/repository-hygiene-smoke.pygreen, and a mutation case: re-adding the pre-transfer URL underloopx/fails it.python3 packages/loopx-community-discussion/smoke/community_discussion_smoke.pygreen offline, with the new case asserting aloopx-project/loopxmention classifiesstrongand alooped-only title still classifiesnoise.loopx check --scan-pathover every changed path.Public/private boundary