Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/hyrule_engineering_loop/daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
"AS215932/hyrule-mcp",
"AS215932/noc-agent",
"AS215932/hyrule-network-proxy",
"AS215932/as215932.net",
)

REPO_CHECKOUT_NAMES: dict[str, str] = {
Expand All @@ -60,6 +61,7 @@
"hyrule-web": "hyrule-web",
"hyrule-mcp": "hyrule-mcp",
"hyrule-network-proxy": "hyrule-network-proxy",
"as215932.net": "as215932.net",
}

LABEL_CHANGE_CLASSES: dict[str, ChangeClass] = {
Expand Down
9 changes: 5 additions & 4 deletions src/hyrule_engineering_loop/repo_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,17 @@ def discover_hyrule_repositories(workspace_root: str | Path | None = None) -> di
"""Discover AS215932 sibling git checkouts.

The production loop workspace includes the existing ``hyrule-*`` app repo
convention plus the dedicated ``engineering-loop`` checkout and the
infrastructure checkout, usually named ``hyrule-infra`` (with
``network-operations`` accepted for operator-local workspaces).
convention plus the dedicated ``engineering-loop`` checkout, the AS/routing
identity repository ``as215932.net``, and the infrastructure checkout,
usually named ``hyrule-infra`` (with ``network-operations`` accepted for
operator-local workspaces).
"""
root = Path(workspace_root).expanduser().resolve() if workspace_root else default_workspace_root()
repos: dict[str, Path] = {}
if not root.exists():
raise RepoAdapterError(f"repo workspace root does not exist: {root}")

for pattern in ("hyrule-*", "engineering-loop", "network-operations"):
for pattern in ("hyrule-*", "engineering-loop", "as215932.net", "network-operations"):
for candidate in sorted(root.glob(pattern)):
if candidate.is_dir() and (candidate / ".git").exists():
repos[candidate.name] = candidate.resolve()
Expand Down
1 change: 1 addition & 0 deletions tests/test_phase24_daemon.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ def test_repo_name_for_issue_maps_core_repo_checkout_names() -> None:
"AS215932/hyrule-mcp": "hyrule-mcp",
"AS215932/noc-agent": "hyrule-noc-agent",
"AS215932/hyrule-network-proxy": "hyrule-network-proxy",
"AS215932/as215932.net": "as215932.net",
}
for repo, checkout in cases.items():
item = IntakeItem(
Expand Down
2 changes: 2 additions & 0 deletions tests/test_phase8_repo_adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ def test_discovery_includes_engineering_loop_and_infra_checkout_names(tmp_path:
_init_repo(workspace_root / "hyrule-infra")
_init_repo(workspace_root / "hyrule-cloud")
_init_repo(workspace_root / "network-operations")
_init_repo(workspace_root / "as215932.net")

discovered = discover_hyrule_repositories(workspace_root)

Expand All @@ -153,4 +154,5 @@ def test_discovery_includes_engineering_loop_and_infra_checkout_names(tmp_path:
"hyrule-infra",
"hyrule-cloud",
"network-operations",
"as215932.net",
}