From 26f02be1032cf7e9ee4d37e29b8425e2d87f4d1a Mon Sep 17 00:00:00 2001 From: AIOSAI Date: Thu, 16 Apr 2026 17:07:37 -0700 Subject: [PATCH] =?UTF-8?q?feat(seedgo):=20fix(bypass):=20resolve=20relati?= =?UTF-8?q?ve=20registry=20paths=20in=20get=5Fbranch=5Ffrom=5Fpath=20and?= =?UTF-8?q?=20=5Fload=5Fbypass=5Ffor=5Ffile=20=E2=80=94=20bypass.json=20en?= =?UTF-8?q?tries=20silently=20failed=20for=20all=20checklist=20invocations?= =?UTF-8?q?=20because=20branch=20paths=20from=20registry=20are=20relative?= =?UTF-8?q?=20(src/aipass/seedgo)=20but=20were=20compared=20directly=20aga?= =?UTF-8?q?inst=20absolute=20resolved=20file=20paths?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: @seedgo --- .../apps/handlers/bypass/bypass_handler.py | 18 +++++++++++++++--- src/aipass/seedgo/apps/modules/checklist.py | 11 ++++++++--- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/aipass/seedgo/apps/handlers/bypass/bypass_handler.py b/src/aipass/seedgo/apps/handlers/bypass/bypass_handler.py index 67ea9e2b..61cb9e40 100644 --- a/src/aipass/seedgo/apps/handlers/bypass/bypass_handler.py +++ b/src/aipass/seedgo/apps/handlers/bypass/bypass_handler.py @@ -94,11 +94,23 @@ def get_branch_from_path(file_path: str) -> Optional[Dict[str, Any]]: file_path = str(Path(file_path).resolve()) - # Sort branches by path length (longest first) to match most specific - branches = sorted(registry.get("branches", []), key=lambda b: len(b.get("path", "")), reverse=True) + registry_dir = REGISTRY_PATH.parent + + def _resolve(raw: str) -> str: + p = Path(raw) + if not p.is_absolute(): + p = (registry_dir / p).resolve() + return str(p) + + # Sort branches by resolved path length (longest first) to match most specific + branches = sorted( + registry.get("branches", []), + key=lambda b: len(_resolve(b.get("path", ""))), + reverse=True, + ) for branch in branches: - branch_path = branch.get("path", "") + branch_path = _resolve(branch.get("path", "")) if file_path.startswith(branch_path + "/") or file_path == branch_path: return branch diff --git a/src/aipass/seedgo/apps/modules/checklist.py b/src/aipass/seedgo/apps/modules/checklist.py index 293e22b9..67973b0e 100644 --- a/src/aipass/seedgo/apps/modules/checklist.py +++ b/src/aipass/seedgo/apps/modules/checklist.py @@ -181,13 +181,18 @@ def _resolve_pack_path(pack_name: str) -> Optional[Path]: def _load_bypass_for_file(file_path: str) -> list: """Load bypass rules for the branch containing file_path.""" + from aipass.seedgo.apps.handlers.bypass.bypass_handler import REGISTRY_PATH + branch = get_branch_from_path(file_path) if branch is None: return [] - branch_path = branch.get("path", "") - if not branch_path: + raw_path = branch.get("path", "") + if not raw_path: return [] - return load_bypass_rules(branch_path) + bp = Path(raw_path) + if not bp.is_absolute(): + bp = (REGISTRY_PATH.parent / bp).resolve() + return load_bypass_rules(str(bp)) def _format_failure(result: Dict) -> str: