crunchloop / crunchloop/devcontainer

devcontainer-lock.json: feature lockfile not produced or honored

Open
#26 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
5
Forks
0
Avg merge
6h 17m
Merged PRs (30d)
15

Description

## Gap

The spec defines \`devcontainer-lock.json\` for reproducible feature resolution: each feature's resolved digest is recorded so subsequent runs pin to the same content. We have content-addressed caching (\`feature/disk_store.go\`) but no lockfile write/read.

## Expected

- On \`Up\`, after feature resolution, write \`/devcontainer-lock.json\` with each feature's \`ref\` → \`resolvedRef\` (digest).
- On subsequent \`Up\`, prefer the lockfile entry over re-resolving the mutable tag.
- Refresh policy: opt-in flag (e.g. \`UpOptions.RefreshFeatures\`) re-resolves and overwrites.

## Notes

Lower priority for DAP (it pins via pre-baked images), but expected by general spec consumers and the upstream CLI ecosystem.

Contributor guide

Open the contributing guide

Research direction

Start by tracing the Up feature-resolution flow and the content-addressed cache in feature/disk_store.go. Identify where UpOptions can carry RefreshFeatures and where configDir is available. Done means Up writes and reads devcontainer-lock.json entries mapping ref to resolvedRef, while refresh re-resolves and overwrites them.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
devtools
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.