Image
storefront:latest
ghcr.io/northcutted/clearcutt-showcase/apps/storefront
Storefront (Node.js 24 TypeScript, stack node:1)
Verified. Meets every requirement in the policy.
Identity
- Digest
sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1- Tags
latest- Created
- 2026-10-16 00:00 UTC
- Built by
clearcutt-factory(clearcutt-factory rebase record)- Source
- https://github.com/northcutted/clearcutt-showcase-storefront at
e91d6fc5d28498201cddea217fdbdf7485e8655bFrom provenance. Read from build provenance that verified. - clearcutt-factory
- App storefront; built with v0.2.0
- Stack
nodefrom the registry stackghcr.io/northcutted/clearcutt-showcase/stacks/node:1, pinned atsha256:625c612fc15b.Version: Current. Pinned to the version the stack's tag names now. · Signature: Verified. Found, and checked against a trusted signer in the policy. · Every version of this stack
Base
- Built on
ghcr.io/northcutted/clearcutt-showcase/platform/run-node:24(run-node:24)sha256:e3620169865afc9915c4bc4bf1b4428140f0864f5c1e1e017ed67a920cf7e01c- How it's known
- Proven. The image starts with the base's exact layer digests. This compares content, so it holds whatever the image says about itself. by layer digests, comparing the linux/amd64 images. The image starts with the base's exact layer digests. This compares content, so it holds whatever the image says about itself.
- Currency
- Current. On the newest version of its base observed in this run.Newest observed:
ghcr.io/northcutted/clearcutt-showcase/platform/run-node:24sha256:e3620169865aMeasured against the newest version observed in this run, not against upstream.
Evidence
| Evidence | Status | Signed by | Found as | When | Detail |
|---|---|---|---|---|---|
| Signature | Verified. Found, and checked against a trusted signer in the policy. | https://github.com/northcutted/clearcutt-factory/.github/workflows/fleet.yml@refs/tags/v0.2.0issuer https://token.actions.githubusercontent.com run in https://github.com/northcutted/clearcutt-showcase-storefront | cosign signature | 2026-10-17 12:07 UTC | ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:2db71d0fe60d04179c1e451bcfc9ed21d0ce3ffd970216abfab1abab506ec358 |
| SBOM | Verified. Found, and checked against a trusted signer in the policy. | https://github.com/northcutted/clearcutt-factory/.github/workflows/fleet.yml@refs/tags/v0.2.0issuer https://token.actions.githubusercontent.com run in https://github.com/northcutted/clearcutt-showcase-storefront | cosign attestation | 2026-10-17 12:07 UTC |
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:e3414265726bcc805278dd2ff1465af48afb73456fec02d6d13a89cf7c359932 |
| Vulnerability report | Verified. Found, and checked against a trusted signer in the policy. | https://github.com/northcutted/clearcutt-factory/.github/workflows/fleet.yml@refs/tags/v0.2.0issuer https://token.actions.githubusercontent.com run in https://github.com/northcutted/clearcutt-showcase-storefront | cosign attestation | 2026-10-17 12:07 UTC |
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:db46dcad5905d28c2fe6e153881aad9615b9a46ae275e771ae05a0e346a95931 |
| SLSA provenance | Verified. Found, and checked against a trusted signer in the policy. | https://github.com/northcutted/clearcutt-factory/.github/workflows/images.yml@refs/tags/v0.2.0issuer https://token.actions.githubusercontent.com run in https://github.com/northcutted/clearcutt-showcase-storefront | GitHub attestation | 2026-10-17 12:15 UTC | ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:8cd9da243e9daebae6414d7e75662bb4485fca7bde197fcab2bb68a5d8442954 |
| Recipe | Not applicable. Doesn't apply to this image. | — | — | — | Rebased: the rebase record names the image that was built from a recipe. |
| Rebase record | Verified. Found, and checked against a trusted signer in the policy. | https://github.com/northcutted/clearcutt-factory/.github/workflows/fleet.yml@refs/tags/v0.2.0issuer https://token.actions.githubusercontent.com run in https://github.com/northcutted/clearcutt-showcase-storefront | cosign attestation | 2026-10-17 12:07 UTC | ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:56f9f199ea0c22d45b0a45f2efcd7de244203b3bf1d9850d5057c22856e102eb |
| Tests | Missing. Looked for, and there is none. | — | — | — | No test attestation. The recipe of the image it was rebased from declares a smoke test (GET :8080/healthz), but the rebase record doesn't say whether the rebase ran it: clearcutt-factory runs the app's smoke test when it rebases from the app manifest (rebase -f, as its fleet workflow does), not when it rebases --image or with --no-test. |
Check it yourself
Commands that check what this page says without trusting this site or the report: each signature and attestation the report says verified, against the signer the policy trusts, a rebuild, and the verdict. They name the image by its digest, ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1, never by a tag that could move. Every value comes from the report and is quoted for a POSIX shell (sh, bash, zsh).
cosign verify \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1cosign verify-attestation \
--type=https://cyclonedx.org/bom \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:babca7f5be458a2d5952b3cae9953ff70407adbc46d9041e4834bed819cb786dcosign verify-attestation \
--type=https://cyclonedx.org/bom \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:d75f3433f1f909087d77923e176969159ec1c976cfac0a6c3cfedaae732291a1cosign verify-attestation \
--type=https://cosign.sigstore.dev/attestation/vuln/v1 \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:babca7f5be458a2d5952b3cae9953ff70407adbc46d9041e4834bed819cb786dcosign verify-attestation \
--type=https://cosign.sigstore.dev/attestation/vuln/v1 \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:d75f3433f1f909087d77923e176969159ec1c976cfac0a6c3cfedaae732291a1cosign verify-attestation \
--type=https://slsa.dev/provenance/v1 \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1cosign verify-attestation \
--type=https://github.com/northcutted/clearcutt-factory/rebase/v1 \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefront \
--certificate-github-workflow-ref=refs/heads/main \
ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1gh attestation verify \
oci://ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1 \
--bundle-from-oci \
--repo=northcutted/clearcutt-showcase-storefront \
--signer-workflow=github.com/northcutted/clearcutt-factory/.github/workflows/images.yml \
--source-ref=refs/heads/mainclearcutt-factory verify \
--image=ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1 \
--certificate-identity-regexp='^https://github\.com/northcutted/clearcutt-factory/\.github/workflows/(images|fleet)\.yml@refs/tags/v\d+\.\d+\.\d+$' \
--certificate-oidc-issuer=https://token.actions.githubusercontent.com \
--certificate-github-workflow-repository=northcutted/clearcutt-showcase-storefrontcd "$(mktemp -d)"
printf '%s\n' ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1 > refs.txt
printf '%s\n' '{"apiVersion":"clearcutt.dev/v1","kind":"VerificationPolicy","required":["signature","sbom","vulnerabilityScan","provenance","recipe"],"trustedSigners":[{"identityRegexp":"^https://github\\.com/northcutted/clearcutt-factory/\\.github/workflows/(images|fleet)\\.yml@refs/tags/v\\d+\\.\\d+\\.\\d+$","issuer":"https://token.actions.githubusercontent.com","sourceRepository":"https://github.com/northcutted/clearcutt-showcase-platform","sourceRef":"refs/heads/main","sourceMatchesImage":true},{"identityRegexp":"^https://github\\.com/northcutted/clearcutt-factory/\\.github/workflows/(images|fleet)\\.yml@refs/tags/v\\d+\\.\\d+\\.\\d+$","issuer":"https://token.actions.githubusercontent.com","sourceRepository":"https://github.com/northcutted/clearcutt-showcase-checkout","sourceRef":"refs/heads/main","sourceMatchesImage":true},{"identityRegexp":"^https://github\\.com/northcutted/clearcutt-factory/\\.github/workflows/(images|fleet)\\.yml@refs/tags/v\\d+\\.\\d+\\.\\d+$","issuer":"https://token.actions.githubusercontent.com","sourceRepository":"https://github.com/northcutted/clearcutt-showcase-catalog","sourceRef":"refs/heads/main","sourceMatchesImage":true},{"identityRegexp":"^https://github\\.com/northcutted/clearcutt-factory/\\.github/workflows/(images|fleet)\\.yml@refs/tags/v\\d+\\.\\d+\\.\\d+$","issuer":"https://token.actions.githubusercontent.com","sourceRepository":"https://github.com/northcutted/clearcutt-showcase-storefront","sourceRef":"refs/heads/main","sourceMatchesImage":true}],"failOn":"critical","onlyFixed":true,"maxDaysBehind":7,"stackSigners":[{"identity":"https://github.com/northcutted/clearcutt-showcase-platform/.github/workflows/stacks.yml@refs/heads/main","issuer":"https://token.actions.githubusercontent.com"}]}' > policy.json
clearcutt-verify estate verify \
--refs=refs.txt \
--policy=policy.json \
--platforms=linux/amd64,linux/arm64 \
--out=estateNeeds cosign, gh attestation, clearcutt-factory, clearcutt-verify, as of clearcutt-verify v0.16.0, which wrote this report.
Vulnerabilities
From the publisher's signed report (grype 0.118.0), made 2026-10-17 12:06 UTC, 1 day before this report. The findings describe that day. The report itself is Verified. Found, and checked against a trusted signer in the policy..
| critical | high | medium | low | negligible | unknown | |
|---|---|---|---|---|---|---|
| Findings | 0 | 0 | 0 | 0 | 0 | 0 |
| With a fix | 0 | 0 | 0 | 0 | 0 | 0 |
No findings.
Tests and rebuilds
- Tests
- Missing. Looked for, and there is none. No test attestation. The recipe of the image it was rebased from declares a smoke test (GET :8080/healthz), but the rebase record doesn't say whether the rebase ran it: clearcutt-factory runs the app's smoke test when it rebases from the app manifest (rebase -f, as its fleet workflow does), not when it rebases --image or with --no-test.
- Rebuild
- Reproduced. Rebuilt, and the rebuild has the same digest. repeated the recorded rebase, 2026-10-17 12:07 UTCRebuild gave
sha256:cd946e7df5b0f2ba610b7fb709d68dd9990d92154e1a6ca14f6b7dc08cdcedf1, the same digest as the image.Reproduced from the rebase record verified on this image by clearcutt-factory v0.2.0 on https://github.com/northcutted/clearcutt-showcase-storefront/actions/runs/39031096208/attempts/1, as its verified reproduction attestation says; this run didn't rebuild it.Checked by a clearcutt-factory reproduction attestation, verified against a trusted signer; this run didn't rebuild it.Attestation signed byhttps://github.com/northcutted/clearcutt-factory/.github/workflows/fleet.yml@refs/tags/v0.2.0(issuer https://token.actions.githubusercontent.com)ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:93e795bbc91b07f54661fb3e5a0613dc1c776fcc39169a859b9f27452890e776Where it was reproduced, as the attestation says:- Run: https://github.com/northcutted/clearcutt-showcase-storefront/actions/runs/39031096208/attempts/1
- Workflow
northcutted/clearcutt-showcase-storefront/.github/workflows/factory.yml@refs/heads/main, jobrebase - Machine: github-hosted, linux/amd64
- clearcutt-factory
v0.2.0
Rebase history
Rebased from ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:8b1d4730bb6ad7d2a181533051fb327faf0b3fcc939f1fb13a90798b56e87f99 onto ghcr.io/northcutted/clearcutt-showcase/platform/run-node:24. Rebase record: Verified. Found, and checked against a trusted signer in the policy.
| First recorded | Rebased from | Gave | Rebase record |
|---|---|---|---|
| 2026-10-17 12:20 UTC | ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:8b1d4730bb6ad7d2a181533051fb327faf0b3fcc939f1fb13a90798b56e87f99 | sha256:cd946e7df5b0 | Verified |
| 2026-10-17 03:58 UTC | ghcr.io/northcutted/clearcutt-showcase/apps/storefront@sha256:87f0c05ee581231942adbf0274eafe6ed4406f9680c40676ae22859c1e6e5cb8 | sha256:8b1d4730bb6a | Verified |
This image over time
This image in each run that recorded per-image rows, newest first, and how it changed since the run before: rebuilt or rebased (a new digest), or its base moved (the same image, its base more or less current). Compare two runs for every image at once.
| Run | Digest | Verdict | Base | Critical | High |
|---|---|---|---|---|---|
| 2026-10-19 07:41 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-19 01:05 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-19 01:02 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-19 00:27 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-19 00:20 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-18 14:29 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-18 14:11 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-18 14:10 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-18 07:25 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-17 14:43 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-17 14:38 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-17 14:06 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-17 14:03 UTC | sha256:cd946e7df5b0 | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-17 12:20 UTC | sha256:cd946e7df5b0rebased | Verified | Proven, currentsha256:e3620169865a | 0 | 0 |
| 2026-10-17 07:25 UTC | sha256:8b1d4730bb6a | Verified | Proven, currentsha256:f12bc0c8f6b0 | 4 | 22 |
| 2026-10-17 03:58 UTC | sha256:8b1d4730bb6arebased | Verified | Proven, currentsha256:f12bc0c8f6b0 | 4 | 22 |
| 2026-10-17 01:19 UTC | sha256:87f0c05ee581 | Verified | Proven, currentsha256:756d5eb4c0ae | 0 | 0 |
? means unknown: the run had no vulnerability data for this image.
Platforms
| Platform | Digest | Layers | Compressed size |
|---|---|---|---|
| linux/amd64 | sha256:babca7f5be458a2d5952b3cae9953ff70407adbc46d9041e4834bed819cb786d | 14 | 60 MB |
| linux/arm64 | sha256:d75f3433f1f909087d77923e176969159ec1c976cfac0a6c3cfedaae732291a1 | 14 | 57 MB |
Packages
Read from its SBOM, which is Verified. Found, and checked against a trusted signer in the policy.; the union of the linux/amd64, linux/arm64 images' lists.
81 package versions
| Package | Version | Type |
|---|---|---|
| @fastify/ajv-compiler | 4.0.7 | npm |
| @fastify/deepmerge | 3.2.2 | npm |
| @fastify/error | 4.2.1 | npm |
| @fastify/fast-json-stringify-compiler | 5.1.1 | npm |
| @fastify/forwarded | 3.1.1 | npm |
| @fastify/merge-json-schemas | 0.2.2 | npm |
| @fastify/proxy-addr | 5.1.2 | npm |
| @pinojs/redact | 0.4.0 | npm |
| abstract-logging | 2.0.1 | npm |
| ajv | 8.20.0 | npm |
| ajv-formats | 3.0.1 | npm |
| apk-tools | 2.14.10-r17 | apk |
| atomic-sleep | 1.0.0 | npm |
| avvio | 9.3.1 | npm |
| benchmark | 1.0.0 | npm |
| benchmarks | 1.0.0 | npm |
| busybox | 1.38.0-r3 | apk |
| c-ares | 1.34.8-r4 | apk |
| ca-certificates-bundle | 20260909-r2 | apk |
| cookie | 2.0.1 | npm |
| dequal | 2.0.3 | npm |
| fast-decode-uri-component | 1.0.1 | npm |
| fast-deep-equal | 3.1.3 | npm |
| fast-json-stringify | 7.1.0 | npm |
| fast-querystring | 1.1.2 | npm |
| fast-uri | 3.1.8 | npm |
| fast-uri | 4.2.2 | npm |
| fastify | 5.12.7 | npm |
| fastq | 1.20.3 | npm |
| find-my-way | 9.10.0 | npm |
| glibc-2.44 | 2.44-r8 | apk |
| glibc-2.44-locale-posix | 2.44-r8 | apk |
| icu78-data-full | 78.3-r4 | apk |
| ipaddr.js | 2.5.0 | npm |
| json-schema-ref-resolver | 3.0.1 | npm |
| json-schema-traverse | 1.0.0 | npm |
| ld-linux-2.44 | 2.44-r8 | apk |
| libbrotlicommon1 | 1.2.0-r6 | apk |
| libbrotlidec1 | 1.2.0-r6 | apk |
| libbrotlienc1 | 1.2.0-r6 | apk |
| libcrypt1-2.44 | 2.44-r8 | apk |
| libcrypto3 | 3.6.5-r2 | apk |
| libgcc | 16.2.0-r1 | apk |
| libicu78 | 78.3-r4 | apk |
| libnghttp2-14 | 1.70.0-r5 | apk |
| libssl3 | 3.6.5-r2 | apk |
| libstdc++ | 16.2.0-r1 | apk |
| libuv | 1.53.0-r0 | apk |
| libxcrypt | 4.5.2-r6 | apk |
| light-my-request | 6.8.0 | npm |
| nodejs-24 | 24.22.0-r0 | apk |
| on-exit-leak-free | 2.1.2 | npm |
| openssl-4.0-libcrypto | 4.0.3-r7 | apk |
| openssl-4.0-libssl | 4.0.3-r7 | apk |
| openssl-provider-legacy-allowed | 4.0.3-r1 | apk |
| pino | 10.4.0 | npm |
| pino-abstract-transport | 3.0.0 | npm |
| pino-std-serializers | 7.1.0 | npm |
| process-warning | 5.1.1 | npm |
| quick-format-unescaped | 4.0.4 | npm |
| real-require | 1.0.0 | npm |
| require-from-string | 2.0.2 | npm |
| ret | 0.5.0 | npm |
| reusify | 1.1.0 | npm |
| rfdc | 1.4.1 | npm |
| safe-regex2 | 5.1.2 | npm |
| safe-stable-stringify | 2.5.0 | npm |
| secure-json-parse | 4.1.1 | npm |
| semver | 7.8.5 | npm |
| set-cookie-parser | 3.1.3 | npm |
| sonic-boom | 4.2.1 | npm |
| split2 | 4.2.0 | npm |
| storefront | 1.0.0 | npm |
| thread-stream | 4.2.0 | npm |
| toad-cache | 3.7.4 | npm |
| transport | 0.0.1 | npm |
| tzdata | 2026e-r0 | apk |
| wolfi-base | 1-r7 | apk |
| wolfi-baselayout | 20230201-r30 | apk |
| wolfi-keys | 1-r13 | apk |
| zlib | 1.3.2.1_rc20260921-r0 | apk |