{"data":{"status":"fail","instructionCount":5,"stages":[{"index":0,"base":"node:latest","line":1}],"findings":{"cache":1,"reproducibility":1,"hygiene":0},"witnesses":[{"ruleId":"docker.from-latest","detail":"node:latest uses the mutable :latest tag; pin an exact version (or digest) so rebuilds do not drift","path":"dockerfile:1","offset":0,"index":1},{"ruleId":"docker.copy-all-before-install","detail":"COPY . copies the whole build context before npm install (line 4); any source change rebuilds that install layer and every later one. Copy only the dependency manifests first, run the install, then copy the rest","path":"dockerfile:3","offset":30,"index":3}],"versions":{"engine":"dockerfile-cache-lint/1","cache":"docs.docker.com/build/cache/optimize and /invalidation, as of 2026-11-04","reference":"docs.docker.com/reference/dockerfile (ARG caching, ADD --checksum, ADD git refs), as of 2026-11-04","bestPractices":"docs.docker.com/build/building/best-practices, as of 2026-11-04"},"limits":["COPY of the whole context means a source of ., ./, * or ./*; a directory copy that happens to contain manifests is not flagged.","Install detection covers npm, yarn, pnpm, bun, pip -r, poetry, pipenv, pdm, uv, bundle, composer, go mod download, cargo fetch, mvn dependency, dotnet restore and OS package managers.","ONBUILD bodies, shell inside $(...), and commands behind scripts or eval are not analysed; FROM variables without a default are skipped.","Input is capped at 5000 lines and 128 FROM instructions; a line that is not a Dockerfile instruction (typo, stray text) is reported and makes an otherwise clean result unknown."],"deterministic":true},"_provenance":{"version":"writerslogic-provenance/1","issuer":"did:web:agents.writerslogic.com","verify":{"endpoint":"POST /api/v1/verify-provenance","did":"did:web:agents.writerslogic.com"},"manifest":{"format":"application/json","instance_id":"xmp:iid:9d4358b4-bfe6-45e6-9997-8fe6879f7532","claim_generator_info":[{"name":"WritersLogic x402 Agent Hub","version":"2.0.0"}],"title":"Dockerfile build-cache and reproducibility lint","assertions":[{"label":"c2pa.actions.v2","data":{"actions":[{"action":"c2pa.created","when":"2026-11-06T01:30:29.380Z","softwareAgent":{"name":"writerslogic-agent-hub/dockerfile-cache-lint","version":"2.0.0"},"digitalSourceType":"http://cv.iptc.org/newscodes/digitalsourcetype/algorithmicMedia","parameters":{"endpoint":"POST /api/v1/dockerfile-cache-lint","inputDigest":{"alg":"sha256","hash":"9d5bc39a068a6954eb14f9f95405c6ee69bb18adb7e964295fa3d80b30205325","canonicalization":"JCS"}}}]}},{"label":"c2pa.hash.data","data":{"alg":"sha256","hash":"802a85c3bcdf6f19ef843125876d54f79194947ffefcb851bec7c3861e155bc5","name":"jcs-canonical-json(data)"}}]},"credential":{"@context":["https://www.w3.org/ns/credentials/v2"],"id":"urn:uuid:9a0370f0-48ea-4975-b983-523b12012dd8","type":["VerifiableCredential","AgentOutputCredential"],"issuer":"did:web:agents.writerslogic.com","validFrom":"2026-11-06T01:30:29.380Z","credentialSubject":{"id":"urn:sha256:802a85c3bcdf6f19ef843125876d54f79194947ffefcb851bec7c3861e155bc5","agent":"dockerfile-cache-lint","endpoint":"POST /api/v1/dockerfile-cache-lint","outputDigest":{"alg":"sha256","value":"802a85c3bcdf6f19ef843125876d54f79194947ffefcb851bec7c3861e155bc5","canonicalization":"JCS"},"inputDigest":{"alg":"sha256","value":"9d5bc39a068a6954eb14f9f95405c6ee69bb18adb7e964295fa3d80b30205325","canonicalization":"JCS"},"manifestDigest":{"alg":"sha256","value":"ca49c6b7bf1e3873e0d06333709b8edffec522b4d29a220fc1970b20477885e6","canonicalization":"JCS"},"ingredients":[],"payment":{"scheme":"api-key","network":"eip155:8453","payer":"sample"}},"proof":{"type":"DataIntegrityProof","cryptosuite":"eddsa-jcs-2022","created":"2026-11-06T01:30:29.380Z","verificationMethod":"did:web:agents.writerslogic.com#key-1","proofPurpose":"assertionMethod","proofValue":"zcXEExABUrmtSwzJNwMfZVWjNvaY3Bu1P7j5xmjF1KfVn5Q82Dto89zdf4cYktnyBVzUvopFvM48Kn3doL5G19D1"}},"ethSignature":{"type":"EIP-191","signer":"did:pkh:eip155:8453:0x3DBd42560cA7a7E448A2c7DfC9E785526189411f","address":"0x3DBd42560cA7a7E448A2c7DfC9E785526189411f","message":"writerslogic-provenance:c4a3d4b9a12404195a2ce8297001b942d85e3ef6a95ba78bfa40f2becb4b37d6","signature":"0x6e8cb9b13871519dc025d8aeb7ce2c02929bbb8c74f6521fb8f6b1e20908d7f162c6ba75575313965b5d4db461f44cd855d16bd98d1e19d70e31660ee4bedfb61b"}}}