You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
qm check reports Dockerfile: yes when a sandbox/Dockerfile is present, which reads as confirmation that the AWS MicroVM image will be built from it. It will not be — qm infra build-image ignores that file and ships the CLI's own packaged template.
Copy node_modules/@yc-software/qm/templates/aws/microvm-agent/Dockerfile to <layer>/sandbox/Dockerfile and change only the pin to gh.
qm check →
· sandbox: sandbox/
tools : …
skills: …
Dockerfile: yes <-- reads like the layer file is in play
✓ check passed — config, sandbox layer, and plugins are valid.
qm infra build-image → fails again, identically.
Proof it is ignored
The uploaded artifact was byte-identical across both builds — same content-addressed object name before and after adding the layer Dockerfile:
The packaged template with the dead pin, not the layer's file. Patching the template in node_modules and rebuilding produced a different artifact hash and a successful image.
Worth noting the ZIP contains exactly two files. That is also useful information a reader of sandbox/ would not guess: skills and tools are not in the MicroVM image at all — only Dockerfile and agent.mjs are.
Why this costs real time
It compounds #316. When the build fails with no stateReason, an empty log group and nothing in CloudTrail, sandbox/Dockerfile is the obvious lever to reach for — and qm check actively confirms you pulled it. I applied the correct fix, to the correct file, and it changed nothing, twice, before I thought to extract the artifact from S3 and read what was actually in it.
The workaround also does not persist: patching node_modules/@yc-software/qm/templates/aws/microvm-agent/Dockerfile does not survive npm install.
Suggested fix
Either:
have infra build-image prefer <layer>/sandbox/Dockerfile when present (what the check output implies), or
scope the check output to the truth — e.g. Dockerfile: yes (docker/fly sandbox only; not used by infra build-image).
Either would be fine. The current combination — a check that says yes and a build that ignores it — is the trap.
qm checkreportsDockerfile: yeswhen asandbox/Dockerfileis present, which reads as confirmation that the AWS MicroVM image will be built from it. It will not be —qm infra build-imageignores that file and ships the CLI's own packaged template.Version:
@yc-software/qm0.1.4,target: aws.Reproduction
gh-2.96.0-1build failure from AWS infra build-image is accepted, then both Lambda MicroVM builds fail without diagnostics #316 (error: MicroVM image version N.0 failed, no diagnostics).node_modules/@yc-software/qm/templates/aws/microvm-agent/Dockerfileto<layer>/sandbox/Dockerfileand change only the pin togh.qm check→qm infra build-image→ fails again, identically.Proof it is ignored
The uploaded artifact was byte-identical across both builds — same content-addressed object name before and after adding the layer Dockerfile:
Downloading and extracting that ZIP settles it:
The packaged template with the dead pin, not the layer's file. Patching the template in
node_modulesand rebuilding produced a different artifact hash and a successful image.Worth noting the ZIP contains exactly two files. That is also useful information a reader of
sandbox/would not guess: skills and tools are not in the MicroVM image at all — onlyDockerfileandagent.mjsare.Why this costs real time
It compounds #316. When the build fails with no
stateReason, an empty log group and nothing in CloudTrail,sandbox/Dockerfileis the obvious lever to reach for — andqm checkactively confirms you pulled it. I applied the correct fix, to the correct file, and it changed nothing, twice, before I thought to extract the artifact from S3 and read what was actually in it.The workaround also does not persist: patching
node_modules/@yc-software/qm/templates/aws/microvm-agent/Dockerfiledoes not survivenpm install.Suggested fix
Either:
infra build-imageprefer<layer>/sandbox/Dockerfilewhen present (what thecheckoutput implies), orcheckoutput to the truth — e.g.Dockerfile: yes (docker/fly sandbox only; not used by infra build-image).Either would be fine. The current combination — a check that says yes and a build that ignores it — is the trap.
Related: #316 (the
gh-2.96.0-1pin itself), #122.