Skip to content

Conversation

@joshlf
Copy link
Member

@joshlf joshlf commented Feb 7, 2026


Latest Update: v34 — Compare vs v33

📚 Full Patch History

Links show the diff between the row version and the column version.

Version v33 v32 v31 v30 v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v34 v33 v32 v31 v30 v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v33 v32 v31 v30 v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v32 v31 v30 v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v31 v30 v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v30 v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v29 v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v28 v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v27 v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v26 v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v25 v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v24 v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v23 v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v22 v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v21 v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v20 v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v19 v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v18 v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v17 v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v16 v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v15 v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v14 v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v13 v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v12 v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v11 v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v10 v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v9 v8 v7 v6 v5 v4 v3 v2 v1 Base
v8 v7 v6 v5 v4 v3 v2 v1 Base
v7 v6 v5 v4 v3 v2 v1 Base
v6 v5 v4 v3 v2 v1 Base
v5 v4 v3 v2 v1 Base
v4 v3 v2 v1 Base
v3 v2 v1 Base
v2 v1 Base
v1 Base
⬇️ Download this PR

Branch

git fetch origin refs/heads/Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef && git checkout -b pr-Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef FETCH_HEAD

Checkout

git fetch origin refs/heads/Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef && git checkout FETCH_HEAD

Cherry Pick

git fetch origin refs/heads/Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef && git cherry-pick FETCH_HEAD

Pull

git pull origin refs/heads/Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef

Stacked PRs enabled by GHerrit.

@gemini-code-assist
Copy link
Contributor

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@codecov-commenter
Copy link

codecov-commenter commented Feb 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.87%. Comparing base (bbe5419) to head (bb0da31).

Additional details and impacted files
@@                            Coverage Diff                             @@
##           Gb7f1abf97eed8a035dbcaf7b0363b5890baaec05    #3006   +/-   ##
==========================================================================
  Coverage                                      91.87%   91.87%           
==========================================================================
  Files                                             20       20           
  Lines                                           6057     6057           
==========================================================================
  Hits                                            5565     5565           
  Misses                                           492      492           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@joshlf
Copy link
Member Author

joshlf commented Feb 7, 2026

/gemini review

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the capability to create a shadow copy of a project for the hermes verification tool. It adds the walkdir dependency to traverse the file system and includes a new shadow module with logic for creating a skeleton of the source project using symlinks. The changes also include a refactoring of how compilation roots are resolved and a new check to ensure all local dependencies are contained within the workspace. The code is well-structured and the error handling is robust. My feedback is focused on minor improvements to error message formatting for better user experience.

Comment on lines +288 to +294
anyhow::bail!(
"Unsupported external dependency: '{}' at {:?}.\n\
Hermes currently only supports verifying workspaces where all local \
dependencies are contained within the workspace root.",
pkg.name,
pkg_path
);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For more user-friendly error messages, it's better to use .display() for printing paths instead of the Debug format ({:?}). The Debug format for Path includes quotes, which can make the output less clean for users.

Suggested change
anyhow::bail!(
"Unsupported external dependency: '{}' at {:?}.\n\
Hermes currently only supports verifying workspaces where all local \
dependencies are contained within the workspace root.",
pkg.name,
pkg_path
);
anyhow::bail!(
"Unsupported external dependency: '{}' at {}.\n\
Hermes currently only supports verifying workspaces where all local \
dependencies are contained within the workspace root.",
pkg.name,
pkg_path.display()
);


if entry.file_type().is_dir() {
fs::create_dir_all(&dest_path)
.with_context(|| format!("Failed to create shadow directory: {:?}", dest_path))?;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve the readability of error messages, consider using .display() for formatting paths instead of the Debug format ({:?}). The Debug format adds quotes around the path, which is often not ideal for user-facing output.

Suggested change
.with_context(|| format!("Failed to create shadow directory: {:?}", dest_path))?;
.with_context(|| format!("Failed to create shadow directory: {}", dest_path.display()))?;

#[cfg(unix)]
fn make_symlink(original: &Path, link: &Path) -> Result<()> {
std::os::unix::fs::symlink(original, link)
.with_context(|| format!("Failed to symlink {:?} -> {:?}", original, link))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For cleaner and more user-friendly error messages, it's preferable to use .display() to format paths instead of the Debug format ({:?}).

Suggested change
.with_context(|| format!("Failed to symlink {:?} -> {:?}", original, link))
.with_context(|| format!("Failed to symlink {} -> {}", original.display(), link.display()))

// Since we only call this on files (checking is_file above),
// we use symlink_file.
std::os::windows::fs::symlink_file(original, link)
.with_context(|| format!("Failed to symlink {:?} -> {:?}", original, link))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

To improve the readability of error messages, consider using .display() for formatting paths instead of the Debug format ({:?}). This will provide a cleaner output for the user.

Suggested change
.with_context(|| format!("Failed to symlink {:?} -> {:?}", original, link))
.with_context(|| format!("Failed to symlink {} -> {}", original.display(), link.display()))

gherrit-pr-id: Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef
@joshlf joshlf force-pushed the Gb7f1abf97eed8a035dbcaf7b0363b5890baaec05 branch from 3d5982e to bbe5419 Compare February 10, 2026 23:18
@joshlf joshlf force-pushed the Gdc72294eb3c40c4afa61ea6e8f965ba310cd22ef branch from c475f79 to bb0da31 Compare February 10, 2026 23:18
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.

2 participants