fix(#5396): add .yaml extension to cached profile paths for openshell#5397
Conversation
E2E tests did not runE2E tests run automatically for org/repo members and collaborators on pull requests. For other contributors, a maintainer must add the See E2E testing guide for details. |
|
🤖 Finished Review · ✅ Success · Started 12:47 AM UTC · Completed 12:59 AM UTC |
Site previewPreview: https://f8f16254-site.fullsend-ai.workers.dev Commit: |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
ReviewFindingsLow
Labels: PR fixes a bug in harness profile resolution caching |
7a73c60 to
a624b2c
Compare
URL-fetched openshell profiles are cached at content-addressed paths
(.fullsend-cache/resources/sha256/<hash>/content) with no file
extension. OpenShell's CLI selects its YAML parser strictly by file
extension, so the extensionless "content" filename causes an immediate
"unsupported provider profile file format" error at profile import.
Generalize CacheNamedSymlink to derive its symlink target from
filepath.Base(cachePath) instead of hardcoding "tree", making it work
for both directory caches ("tree") and single-file caches ("content").
Apply it in both ResolveHarness (live fetch) and resolveFromLock
(lock-file replay) to create a <id>.yaml symlink next to the cached
content file, giving openshell the file extension it requires.
Strengthen TestResolveHarness_ProfileURL to assert the .yaml suffix
and verify readability through the symlink. Add CacheNamedSymlink
tests for content-path handling and reserved-name fallback.
Closes #5396
a624b2c to
287637b
Compare
waynesun09
left a comment
There was a problem hiding this comment.
Reviewed via multi-agent review squad (Claude, Grok). Two MEDIUM findings on the cached-profile symlink helper addressed: replacement is now atomic (temp symlink + rename), and link names are validated as single path segments. Error-branch coverage added — codecov/patch now green. All CI checks pass.
|
🤖 Finished Retro · ✅ Success · Started 9:34 PM UTC · Completed 9:43 PM UTC |
Retro: PR #5397 — fix(#5396): add .yaml extension to cached profile paths for openshellTimeline
Review gapThe review agent approved at commit
Existing issue evidence
What went well
Proposals filed |
Summary
URL-fetched openshell profiles are cached at content-addressed paths (
.fullsend-cache/resources/sha256/<hash>/content) with no file extension. OpenShell's CLI selects its YAML parser strictly by file extension, causing an immediateunsupported provider profile file formaterror for any URL-referenced profile. This fix creates a<id>.yamlsymlink next to the cachedcontentfile, giving openshell the extension it expects.Changes
CacheNamedSymlinkto derive its symlink target fromfilepath.Base(cachePath)instead of hardcoding"tree", enabling it to work for both directory caches and single-file cachesCacheNamedSymlinkinResolveHarness(live fetch path) to symlink cached profiles as<id>.yamlCacheNamedSymlinkinresolveFromLock(lock-file replay path) for the same treatmentTestResolveHarness_ProfileURLto assert.yamlsuffix and verify readability through the symlinkCacheNamedSymlinktests for content-path symlinks and reserved-name fallback behaviorTesting
internal/fetchcache tests pass (including newCacheNamedSymlinkcontent-path tests)internal/resolvetests pass (including strengthenedTestResolveHarness_ProfileURL)internal/clilock tests passgo vetandgo buildcleanChecklist
!for breaking changes)Closes #5396
Post-script verification
agent/5396-profile-cache-extension)3cfa255ab4cc8190670585ea42da529119251632..HEAD)