Skip to content

feat: filter exported models by project - #20

Open
ninaad-padiyarr wants to merge 1 commit into
m87techlabs:mainfrom
ninaad-padiyarr:feat/11-models-project-filter
Open

ninaad-padiyarr wants to merge 1 commit into
m87techlabs:mainfrom
ninaad-padiyarr:feat/11-models-project-filter

Conversation

@ninaad-padiyarr

Copy link
Copy Markdown

What and why

slm models list --project NAME now filters exports by the manifest's top-level project field, matching how run discovery can be scoped. Without the option, the existing table and empty-store message are unchanged. An unmatched project reports no models found for project NAME.

The filter belongs in the CLI because list_exports() already supplies the manifests; no export-storage or Project API changes are needed. Tests include the requested pair of real toy exports with different manifest owners, plus lightweight on-disk manifest coverage for exact matching, missing owners, unfiltered output, and empty stores. Command examples and the Unreleased changelog are updated.

Closes #11

Checklist (CONTRIBUTING.md)

  • I was assigned the issue before opening this
  • make lint and make test pass — see local platform limits below; Linux CI is still required
  • The engine does not reference any project; no Project API change or ADR needed
  • Documentation is in the same change (the command list requested by this issue; no new milestone)
  • No new abbreviations, dependencies, tools or services introduced
  • No unverified performance numbers added to docs
  • Conventional commit; no co-author or generated-by trailers

Verification

This change was checked locally on Windows/Python 3.12 with the existing CPU PyTorch installation and the remaining dependencies exported from the lockfile. The repository's CUDA index, dependency files and lockfile are unchanged. uv run --no-sync (via UV_NO_SYNC=1) was used for these local checks.

Passed:

  • The make lint constituent Ruff checks: uv run ruff check . and uv run ruff format --check . (all 96 files).
  • uv run mypy --platform linux src/slmkit (57 source files).
  • Targeted model-list and existing run-list tests: 6 passed, including real manifest discovery, filtering both owners, exact no-match output, legacy manifests, and unfiltered output.
  • uv run python -m compileall -q src tests, CLI models list --help, and git diff --check.

The full CPU test command was attempted, but the existing test infrastructure requires symlink privileges and POSIX file/directory fsync and process behavior unavailable here. The external abc2midi tool is also absent. The toy-export regression is included but cannot get past the shared symlink fixture locally; a separate copy-based attempt reached the existing Windows fsync limitation. Default host-targeted mypy reports an existing Windows signal.SIGKILL error; the Linux-targeted check passes. No fixtures, durability checks or production platform rules were bypassed in the submitted code. make itself is not installed on this host, so its constituent commands were run directly. Linux CI must validate the complete suite.

AI assistance: OpenAI Codex assisted with implementation, review, and running validation.

Use the project already recorded in export manifests so model discovery can be scoped like run discovery without changing export storage or unfiltered output.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

slm models list --project to filter exported models by project

1 participant