dockerimg: restore sketch_context docker label

The sketch_context label was removed in commit 2a5bd6d (switch to debian base image)
but the code that reads this label in findOrBuildDockerImage was left intact.

This was causing Docker to always rebuild images since the label it was checking
for no longer existed in the Dockerfile template.

Restore the label and updates the template.Execute call to pass the required
InitFilesHash parameter.

Updates #43
diff --git a/dockerimg/testdata/testcreatedockerfile_empty_repo.httprr b/dockerimg/testdata/testcreatedockerfile_empty_repo.httprr
index d3c3c57..a6ee7e7 100644
--- a/dockerimg/testdata/testcreatedockerfile_empty_repo.httprr
+++ b/dockerimg/testdata/testcreatedockerfile_empty_repo.httprr
@@ -1,9 +1,9 @@
 httprr trace v1
-2390 1849
+2435 1897
 POST https://api.anthropic.com/v1/messages HTTP/1.1

 Host: api.anthropic.com

 User-Agent: Go-http-client/1.1

-Content-Length: 2193

+Content-Length: 2238

 Anthropic-Version: 2023-06-01

 Content-Type: application/json

 

@@ -15,7 +15,7 @@
    "content": [
     {
      "type": "text",
-     "text": "\nCall the dockerfile tool to create a Dockerfile.\nThe parameters to dockerfile fill out the From and ExtraCmds\ntemplate variables in the following Go template:\n\n```\nFROM golang:1.24-bookworm\n\nRUN set -eux; \\\n\tapt-get update; \\\n\tapt-get install -y --no-install-recommends \\\n\t\tgit jq sqlite3 npm nodejs gh ripgrep fzf python3 curl vim\n\nENV PATH=\"$GOPATH/bin:$PATH\"\n\nRUN go install golang.org/x/tools/cmd/goimports@latest\nRUN go install golang.org/x/tools/gopls@latest\nRUN go install mvdan.cc/gofumpt@latest\n\nENV GOTOOLCHAIN=auto\n\nRUN mkdir -p /root/.cache/sketch/webui\n\nARG GIT_USER_EMAIL\nARG GIT_USER_NAME\n\nRUN git config --global user.email \"$GIT_USER_EMAIL\" \u0026\u0026 \\\n    git config --global user.name \"$GIT_USER_NAME\"\n\nCOPY . /app\n\nWORKDIR /app{{.SubDir}}\nRUN if [ -f go.mod ]; then go mod download; fi\n\n{{.ExtraCmds}}\n\nCMD [\"/bin/sketch\"]\n\n```\n\nIn particular:\n- Assume it is primarily a Go project.\n- Python env setup is challenging and often no required, so any RUN commands involving python tooling should be written to let docker build continue if there is a failure.\n- Include any tools particular to this repository that can be inferred from the given context.\n- Append || true to any apt-get install commands in case the package does not exist.\n- MINIMIZE the number of extra_cmds generated. Straightforward environments do not need any.\n- Do NOT expose any ports.\n- Do NOT generate any CMD or ENTRYPOINT extra commands.\n"
+     "text": "\nCall the dockerfile tool to create a Dockerfile.\nThe parameters to dockerfile fill out the From and ExtraCmds\ntemplate variables in the following Go template:\n\n```\nFROM golang:1.24-bookworm\n\nRUN set -eux; \\\n\tapt-get update; \\\n\tapt-get install -y --no-install-recommends \\\n\t\tgit jq sqlite3 npm nodejs gh ripgrep fzf python3 curl vim\n\nENV PATH=\"$GOPATH/bin:$PATH\"\n\nRUN go install golang.org/x/tools/cmd/goimports@latest\nRUN go install golang.org/x/tools/gopls@latest\nRUN go install mvdan.cc/gofumpt@latest\n\nENV GOTOOLCHAIN=auto\n\nRUN mkdir -p /root/.cache/sketch/webui\n\nARG GIT_USER_EMAIL\nARG GIT_USER_NAME\n\nRUN git config --global user.email \"$GIT_USER_EMAIL\" \u0026\u0026 \\\n    git config --global user.name \"$GIT_USER_NAME\"\n\nLABEL sketch_context=\"{{.InitFilesHash}}\"\nCOPY . /app\n\nWORKDIR /app{{.SubDir}}\nRUN if [ -f go.mod ]; then go mod download; fi\n\n{{.ExtraCmds}}\n\nCMD [\"/bin/sketch\"]\n\n```\n\nIn particular:\n- Assume it is primarily a Go project.\n- Python env setup is challenging and often no required, so any RUN commands involving python tooling should be written to let docker build continue if there is a failure.\n- Include any tools particular to this repository that can be inferred from the given context.\n- Append || true to any apt-get install commands in case the package does not exist.\n- MINIMIZE the number of extra_cmds generated. Straightforward environments do not need any.\n- Do NOT expose any ports.\n- Do NOT generate any CMD or ENTRYPOINT extra commands.\n"
     },
     {
      "type": "text",
@@ -50,23 +50,23 @@
 Anthropic-Organization-Id: 3c473a21-7208-450a-a9f8-80aebda45c1b

 Anthropic-Ratelimit-Input-Tokens-Limit: 200000

 Anthropic-Ratelimit-Input-Tokens-Remaining: 200000

-Anthropic-Ratelimit-Input-Tokens-Reset: 2025-04-30T22:04:15Z

+Anthropic-Ratelimit-Input-Tokens-Reset: 2025-05-01T01:25:18Z

 Anthropic-Ratelimit-Output-Tokens-Limit: 80000

 Anthropic-Ratelimit-Output-Tokens-Remaining: 80000

-Anthropic-Ratelimit-Output-Tokens-Reset: 2025-04-30T22:04:17Z

+Anthropic-Ratelimit-Output-Tokens-Reset: 2025-05-01T01:25:21Z

 Anthropic-Ratelimit-Requests-Limit: 4000

 Anthropic-Ratelimit-Requests-Remaining: 3999

-Anthropic-Ratelimit-Requests-Reset: 2025-04-30T22:04:14Z

+Anthropic-Ratelimit-Requests-Reset: 2025-05-01T01:25:17Z

 Anthropic-Ratelimit-Tokens-Limit: 280000

 Anthropic-Ratelimit-Tokens-Remaining: 280000

-Anthropic-Ratelimit-Tokens-Reset: 2025-04-30T22:04:15Z

+Anthropic-Ratelimit-Tokens-Reset: 2025-05-01T01:25:18Z

 Cf-Cache-Status: DYNAMIC

-Cf-Ray: 938a556d1ea6cf05-SJC

+Cf-Ray: 938b7bf06c579e5c-SJC

 Content-Type: application/json

-Date: Wed, 30 Apr 2025 22:04:17 GMT

-Request-Id: req_011CNfg3oxdWdVmvCYDhj17W

+Date: Thu, 01 May 2025 01:25:21 GMT

+Request-Id: req_011CNfwP3eB71rSrsnZwG6yB

 Server: cloudflare

 Via: 1.1 google

 X-Robots-Tag: none

 

-{"id":"msg_011ukJ3isPb91KkWgvwLnub2","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"I'll help you create a Dockerfile by calling the dockerfile tool with appropriate extra commands. Based on your requirements, I'll keep the extra commands minimal while ensuring Python setup continues even if there are failures, and I'll include the necessary safety mechanisms for apt-get commands."},{"type":"tool_use","id":"toolu_01Mkj468d88fLpyQCZy8cu13","name":"dockerfile","input":{"extra_cmds":"RUN set -eux; \\\n    # Install any Python dependencies safely\n    pip3 install --no-cache-dir setuptools wheel || true; \\\n    # Make sure sketch is executable\n    if [ -f /bin/sketch ]; then chmod +x /bin/sketch; fi"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":844,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":174}}
\ No newline at end of file
+{"id":"msg_01MP89fzED7GroE4qh6DKasp","type":"message","role":"assistant","model":"claude-3-7-sonnet-20250219","content":[{"type":"text","text":"I'll call the dockerfile tool to create a Dockerfile for your Go project. Based on your requirements, I need to include commands that are resilient to failures (especially for Python setup) and append \"|| true\" to apt-get install commands."},{"type":"tool_use","id":"toolu_01Q5kAUCGzLvV2tSfxczMFSA","name":"dockerfile","input":{"extra_cmds":"# Install any Python dependencies but continue on error\nRUN if [ -f requirements.txt ]; then pip3 install -r requirements.txt || true; fi\n\n# Setup Go environment properly\nRUN if [ -f go.sum ]; then go mod tidy || true; fi\n\n# Make sure build scripts are executable\nRUN find . -name \"*.sh\" -exec chmod +x {} \\; || true"}}],"stop_reason":"tool_use","stop_sequence":null,"usage":{"input_tokens":859,"cache_creation_input_tokens":0,"cache_read_input_tokens":0,"output_tokens":198}}
\ No newline at end of file