Skip to content

Workspace status and checks misclassify in-workspace repository symlinks #2185

Description

@codeforester

Goal

Make manifest-backed workspace reports preserve logical repository names and apply one consistent workspace-root boundary policy to symlinked paths.

Background

workspace_manifest_entries() retains the logical candidate path, but the manifest status and check aggregators index entries by entry.path.parent.resolve().name. For workspace/api -> workspace/physical with a manifest entry named api, a healthy repository is reported as missing under api and as an unlisted extra under physical.

The read-only report paths also do not reuse the containment resolver used by workspace mutation paths, so an outside-resolving symlink is not handled consistently. This was reproduced on origin/main 734a458a: one healthy in-root symlink produced an expected api missing result plus an extra physical warning.

Scope

  • Workspace scanner, status, check, and shared path metadata
  • Workspace doctor, onboarding, and agent-brief consumers
  • Regression tests and user-facing documentation for in-root and outside-resolving symlinks

Acceptance Criteria

  • A manifest entry is matched by its logical repository name when the repository directory is an in-workspace symlink.
  • status, check, doctor, onboarding, and agent-brief report one expected repository with the logical name and do not invent a physical-name extra.
  • Outside-resolving symlinks follow the workspace containment policy and are not inspected as undeclared in-workspace repositories.
  • Regular directories, bare repositories, undeclared repositories, and existing extra detection retain their current behavior.
  • Focused tests cover in-root and outside-resolving symlinks for every affected read-only consumer.

Validation

  • python -m pytest cli/python/base_projects/tests/test_workspace_status_manifest.py cli/python/base_projects/tests/test_workspace_checks.py cli/python/base_projects/tests/test_workspace_onboarding.py cli/python/base_projects/tests/test_workspace_agent_brief.py -q
  • env -u BASE_HOME ./bin/base-test
  • git diff --check

Non-Goals

  • No change to clone, update, configure, or setup mutation semantics already covered by containment tests.
  • No recursive workspace discovery.

Project Fields

  • Status: Backlog
  • Priority: P1
  • Area: Workspace
  • Initiative: Workspace Handling
  • Size: S
  • Milestone: v1.10.0

Agent Assignment

  • Human first; the read-only report contract and symlink boundary need maintainer review before implementation.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

bugSomething is not working

Type

No type

Projects

  • Status
    In Progress

Relationships

None yet

Development

No branches or pull requests

Issue actions