You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(pull): resolve remote results dir by platform UUID, not project name (2.4.6) (#22)
`cf pull` previously looked up `outgoing/results/<project_name>` using whatever
name was in the local `.cf/project.json` (or `--project-name`). This broke
whenever the project was renamed on the platform or the case differed between
the SFTP directory and the local file (e.g. customer had `kyttar` locally but
the SFTP directory was `Kyttar`), producing "No results found for project ..."
even though the data was right there.
Resolution priority (when --project-name is not explicitly passed):
1. Fetch canonical project name from the platform API via the
stored platform_project_id.
2. Try outgoing/results/<canonical_name>.
3. If that path is missing, scan outgoing/results/*/config/project.json
and match on platform_project_id (authoritative UUID match).
4. Otherwise surface a clear error.
The post-download merge step already overwrites the local .cf/project.json
with the canonical config (preserving platform_project_id), so the local
file self-heals on the next successful pull.
--project-name <NAME> still works as a literal-name override / escape hatch.
Also aligns chipfoundry_cli/__init__.py (was 2.4.1) with pyproject.toml.
Co-authored-by: jdicorpo <jdicorpo@gmail.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
- **Resolves the remote results directory by `platform_project_id` (UUID), not by project name** — survives case changes (e.g. `kyttar` → `Kyttar`) and renames on the platform without manual intervention
659
+
- First asks the platform API for the canonical project name and tries `outgoing/results/<canonical_name>`
660
+
- If that path is missing, falls back to scanning `outgoing/results/*/config/project.json`for a matching `platform_project_id`
661
+
- Pass `--project-name NAME` to bypass UUID resolution and force a literal directory lookup (debugging / unlinked legacy use)
658
662
- Saves to `sftp-output/<project_name>/`
659
663
- **Automatically updates** your local`.cf/project.json` with the pulled version (preserving the platform link)
660
664
- **Syncs with the platform** and displays admin review notes if your project has been reviewed
@@ -859,20 +863,26 @@ The CLI tracks your project submission state through the `submission_state` fiel
859
863
- Connects to SFTP server securely
860
864
- Shows clean connection status
861
865
862
-
2. **Download:**
866
+
2. **Resolve remote directory by UUID:**
867
+
- Looks up the canonical project name from the platform via `platform_project_id`
868
+
- Tries `outgoing/results/<canonical_name>` first
869
+
- If that path is missing, scans `outgoing/results/*/config/project.json` for a directory whose embedded `platform_project_id` matches yours
870
+
- Warns if your local project name differs from the canonical platform name (the local copy is corrected automatically in step 4)
871
+
872
+
3. **Download:**
863
873
- Downloads all project results recursively
864
874
- Shows professional download progress
865
875
- Saves to `sftp-output/<project_name>/`
866
876
867
-
3. **Config Update:**
877
+
4. **Config Update:**
868
878
- **Automatically merges** the pulled `project.json` with your local version (preserving the platform link)
869
879
870
-
4. **Platform Sync:**
880
+
5. **Platform Sync:**
871
881
- Sends the updated `project.json` to the platform
872
882
- Records the pull timestamp on the platform
873
883
- Fetches and displays any admin review notes
874
884
875
-
5. **Success:**
885
+
6. **Success:**
876
886
- Shows confirmation of downloaded files, sync status, and review notes
0 commit comments