The canonical .dockerignore and .gitignore both omitted the in-repo agent scratch directory, which holds one worktree per in-flight agent, so under `COPY . .` an entire extra checkout of the repo reached the image. The two entries are deliberately different shapes: anchored in .dockerignore, where the `**/` form would also delete a legitimately named nested directory, and unanchored in .gitignore, where a pattern already matches at every depth. Anchoring leaves a gap where agents run in subdirectories, stated in the vendored file itself. The second half is the consequence of excluding .git: `git describe` in a build stage yields an empty version without erroring, so the version is now computed on the host and passed in. Model: opus-5
28 lines
441 B
Plaintext
28 lines
441 B
Plaintext
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Editors
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
*.bak
|
|
.idea/
|
|
.vscode/
|
|
*.sublime-*
|
|
|
|
# Agent scratch (worktrees of this repo, created and destroyed by
|
|
# in-flight tooling). Unanchored: .gitignore patterns already match at
|
|
# every depth, so no prefix is wanted here. This is not a .dockerignore
|
|
# entry and must not be given a `**/` prefix on the way into one.
|
|
.claude/
|
|
|
|
# Node
|
|
node_modules/
|
|
|
|
# Environment / secrets
|
|
.env
|
|
.env.*
|
|
*.pem
|
|
*.key
|