Verification Report · ghost v6.62.0
NOT PUBLISHED
ghost-v6.62.0-20260906-001
verified_at 2026-09-06T08:31:18Z
Immutable inputs
| App version | v6.62.0 ← release tag v6.62.0 · source b88c3e120ed1 |
| Image (exact tag) | ghost:6.62.0-alpine |
| Image digest (linux/amd64) | sha256:c99c6537b7424fbac839008c38b86a94c947ce8b93f779917b344f6f2acbf351 |
| Index digest | sha256:30c93265df67ea4fd27acf231dd7da15a891e5da4838f00f6a54bc8fb379244b |
| Pulled as | ghost:6.62.0-alpine@sha256:c99c6537b7424fbac839008c38b86a94c947ce8b93f779917b344f6f2acbf351 via registry-1.docker.io |
| Platform contract | ami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260906-001) |
| Config revisions | app b2b1c25f4d2a · compose 66476bdaf9a8 |
| Release type | new_version — rule4: minor/major change v6.62.0 -> (6, 62, 0) |
Publish gate
| Check | Field | Result |
|---|
| Compose started | checks.compose_started | Passed |
| Container healthy | checks.container_healthy | Passed |
| Health check passed | checks.health_check_passed | Passed |
| Application tests | checks.tests_passed | Passed |
| Screenshots captured | checks.screenshots_generated | Passed |
| Screenshots published | checks.screenshots_uploaded | Failed |
| Report published | checks.report_uploaded | Failed |
| Manifest published | checks.verification_manifest_uploaded | Failed |
| Platform contract valid | checks.required_platform_contract_valid | Passed |
Evidence
| Health probe | HTTP 200 — ready |
| Version assertion | True actual 6.62.0 — 匹配(exact):kind=env 取到 '6.62.0',期望 '6.62.0' |
| Tests | pytest exit=0
...... [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/ghost/tests/test_admin.py::test_public_admin_site_endpoint_answers
PASSED apps/ghost/tests/test_admin.py::test_protected_admin_endpoints_reject_unauthenticated
PASSED apps/ghost/tests/test_admin.py::test_admin_spa_is_served
PASSED apps/ghost/tests/test_home.py::test_homepage_renders_html
PASSED apps/ghost/tests/test_home.py::test_homepage_has_ghost_markup
PASSED apps/ghost/tests/test_home.py::test_robots_and_sitemap_available
6 passed in 3.17s
|
| Container state | running |
| Duration | 65.9s(2026-09-06T08:30:12Z → 2026-09-06T08:31:18Z) |
Screenshots

home · Public site / 站点首页

admin · Admin console / 管理后台
Application test output
pytest exit=0
...... [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/ghost/tests/test_admin.py::test_public_admin_site_endpoint_answers
PASSED apps/ghost/tests/test_admin.py::test_protected_admin_endpoints_reject_unauthenticated
PASSED apps/ghost/tests/test_admin.py::test_admin_spa_is_served
PASSED apps/ghost/tests/test_home.py::test_homepage_renders_html
PASSED apps/ghost/tests/test_home.py::test_homepage_has_ghost_markup
PASSED apps/ghost/tests/test_home.py::test_robots_and_sitemap_available
6 passed in 3.17s
Container logs (tail)
[39m "GET /ghost/assets/dist-Dcsslyo72.js" [32m200[39m 7ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/Combination-B0l4MKVh.js" [32m200[39m 11ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/input-surface-BsrIZeSF.js" [32m200[39m 7ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/skeleton-Ce9GgUpf.js" [32m200[39m 8ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/use-navigate-with-base-path-BHPA228f.js" [32m200[39m 5ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/update-queries-C4CnvJaW.js" [32m200[39m 6ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/dist-B3keLvjj.js" [32m200[39m 41ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/onboarding-CzIsre-d.js" [32m200[39m 4ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/users-Cg-OeGzC.js" [32m200[39m 10ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/onboarding-qg8Akovm.js" [32m200[39m 5ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/chunk.524.a697dee88db67fdf6021.js" [32m200[39m 6ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/chunk.598.7e056fabb47ce7dbd73f.js" [32m200[39m 7ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/schemas-DppqmpeJ.js" [32m200[39m 13ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/button-eNMKQWXr.js" [32m200[39m 50ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/logo-loader-88VPEpXE.mp4" [32m206[39m 5ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/ghost-c2848508292937415f20f5a830eea59e.js" [32m200[39m 64ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/vendor-5753232c7d6ffb3c44e1eb0a02133953.js" [32m200[39m 80ms
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/assets/chunk.492.f24d855d7e3f3aad261c.js" [32m200[39m 110ms
ghost-1 | [2026-09-06 08:31:16] [31mERROR[39m "GET /ghost/api/admin/users/me/?include=roles" [33m403[39m 1ms
ghost-1 | [31m
ghost-1 | [31mAuthorization failed[39m
ghost-1 |
ghost-1 | [37m"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication."[39m
ghost-1 |
ghost-1 | [1m[37mError ID:[39m[22m
ghost-1 | [90m2b86ed9d-7b78-4a9c-a661-1ed418993d74[39m
ghost-1 |
ghost-1 | [90m----------------------------------------[39m
ghost-1 |
ghost-1 | [90mNoPermissionError: Authorization failed
ghost-1 | at authorizeAdminApi (/var/lib/ghost/versions/6.62.0/core/server/services/auth/authorize.js:38:9)
ghost-1 | at Layer.handle [as handle_request] (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/layer.js:95:5)
ghost-1 | at next (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/route.js:149:13)
ghost-1 | at authenticate (/var/lib/ghost/versions/6.62.0/core/server/services/auth/session/middleware.js:58:7)
ghost-1 | at process.processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
ghost-1 | [39m
ghost-1 | [2026-09-06 08:31:16] [31mERROR[39m "GET /ghost/api/admin/users/me/?include=roles" [33m403[39m 1ms
ghost-1 | [31m
ghost-1 | [31mAuthorization failed[39m
ghost-1 |
ghost-1 | [37m"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication."[39m
ghost-1 |
ghost-1 | [1m[37mError ID:[39m[22m
ghost-1 | [90m35a890bb-618c-441e-a61e-8ae9c0491f96[39m
ghost-1 |
ghost-1 | [90m----------------------------------------[39m
ghost-1 |
ghost-1 | [90mNoPermissionError: Authorization failed
ghost-1 | at authorizeAdminApi (/var/lib/ghost/versions/6.62.0/core/server/services/auth/authorize.js:38:9)
ghost-1 | at Layer.handle [as handle_request] (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/layer.js:95:5)
ghost-1 | at next (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/route.js:149:13)
ghost-1 | at authenticate (/var/lib/ghost/versions/6.62.0/core/server/services/auth/session/middleware.js:58:7)
ghost-1 | at process.processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
ghost-1 | [39m
ghost-1 | [2026-09-06 08:31:16] [31mERROR[39m "GET /ghost/api/admin/users/me/?include=roles" [33m403[39m 0ms
ghost-1 | [31m
ghost-1 | [31mAuthorization failed[39m
ghost-1 |
ghost-1 | [37m"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication."[39m
ghost-1 |
ghost-1 | [1m[37mError ID:[39m[22m
ghost-1 | [90m944c9397-078b-47d1-b8db-6c60e58dca52[39m
ghost-1 |
ghost-1 | [90m----------------------------------------[39m
ghost-1 |
ghost-1 | [90mNoPermissionError: Authorization failed
ghost-1 | at authorizeAdminApi (/var/lib/ghost/versions/6.62.0/core/server/services/auth/authorize.js:38:9)
ghost-1 | at Layer.handle [as handle_request] (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/layer.js:95:5)
ghost-1 | at next (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/route.js:149:13)
ghost-1 | at authenticate (/var/lib/ghost/versions/6.62.0/core/server/services/auth/session/middleware.js:58:7)
ghost-1 | at process.processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
ghost-1 | [39m
ghost-1 | [2026-09-06 08:31:16] [31mERROR[39m "GET /ghost/api/admin/settings/?group=site%2Ctheme%2Cprivate%2Cmembers%2Cportal%2Cnewsletter%2Cemail%2Clabs%2Cslack%2Cunsplash%2Cviews%2Cfirstpromoter%2Ceditor%2Ccomments%2Canalytics%2Cannouncement%2Cpintura%2Cdonations%2Csecurity%2Csocial_web%2Cexplore%2Ctransistor" [33m403[39m 1ms
ghost-1 | [31m
ghost-1 | [31mAuthorization failed[39m
ghost-1 |
ghost-1 | [37m"Unable to determine the authenticated user or integration. Check that cookies are being passed through if using session authentication."[39m
ghost-1 |
ghost-1 | [1m[37mError ID:[39m[22m
ghost-1 | [90m536996ad-fe50-438c-9d70-361809c6fab6[39m
ghost-1 |
ghost-1 | [90m----------------------------------------[39m
ghost-1 |
ghost-1 | [90mNoPermissionError: Authorization failed
ghost-1 | at authorizeAdminApi (/var/lib/ghost/versions/6.62.0/core/server/services/auth/authorize.js:38:9)
ghost-1 | at Layer.handle [as handle_request] (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/layer.js:95:5)
ghost-1 | at next (/var/lib/ghost/versions/6.62.0/node_modules/.pnpm/express@4.22.2_supports-color@10.2.2/node_modules/express/lib/router/route.js:149:13)
ghost-1 | at authenticate (/var/lib/ghost/versions/6.62.0/core/server/services/auth/session/middleware.js:58:7)
ghost-1 | at process.processTicksAndRejections (node:internal/process/task_queues:103:5)[39m
ghost-1 | [39m
ghost-1 | [2026-09-06 08:31:16] [36mINFO[39m "GET /ghost/api/admin/site/" [32m200[39m 1ms
ghost-1 | [2026-09-06 08:31:17] [36mINFO[39m "GET /ghost/api/admin/authentication/setup/" [32m200[39m 8ms
ghost-1 | [2026-09-06 08:31:17] [36mINFO[39m "GET /ghost/api/admin/authentication/setup/" [32m200[39m 6ms
ghost-1 | [2026-09-06 08:31:17] [36mINFO[39m "GET /ghost/assets/img/logos/orb-black-1-77b37bbf20f306b0ff610e74ea84c212.png" [32m200[39m 1ms
ghost-1 | [2026-09-06 08:31:17] [36mINFO[39m "GET /ghost/assets/fonts/Inter-roman.var-66c6e40883646a7ad993108b2ce2da32.woff2" [32m200[39m 1ms
Raw manifest
{
"schema_version": "1.0",
"verification_id": "ghost-v6.62.0-20260906-001",
"app": "ghost",
"app_version": "v6.62.0",
"release": {
"source_repo": "TryGhost/Ghost",
"source_revision": "b88c3e120ed108002e7083ae45abaa5d31d0e1cf",
"release_tag": "v6.62.0",
"upstream_tag": "v6.62.0",
"image_reference": "ghost:6.62.0-alpine"
},
"container": {
"image": "ghost:6.62.0-alpine",
"digest": "sha256:c99c6537b7424fbac839008c38b86a94c947ce8b93f779917b344f6f2acbf351",
"manifest_digest": "sha256:30c93265df67ea4fd27acf231dd7da15a891e5da4838f00f6a54bc8fb379244b",
"platform": "linux/amd64"
},
"platform": {
"platform_verification_id": "plat-us-east-1-x86_64-20260906-001",
"ami_id": "ami-025d99823a4caad37",
"base_ami_source": "public",
"source_ami_name": "ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-amd64-server-*",
"region": "us-east-1",
"architecture": "x86_64"
},
"config": {
"app_config_revision": "b2b1c25f4d2a3019bcb9cf53fbb7dee61cad68b2",
"compose_revision": "66476bdaf9a8bf9d9d3a72b86e37f519e09bf355",
"tests_revision": "aa9e9abdf2e361f1c981091c11dc6756e2dae021"
},
"verification": {
"application": "passed",
"platform": "referenced",
"tests": "passed"
},
"checks": {
"compose_started": true,
"container_healthy": true,
"health_check_passed": true,
"tests_passed": true,
"screenshots_generated": true,
"screenshots_uploaded": false,
"report_uploaded": false,
"verification_manifest_uploaded": false,
"required_platform_contract_valid": true
},
"artifacts": {
"screenshots": [
{
"scenario": "home",
"file": "home.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.62.0/home.png",
"caption": {
"en": "Public site",
"zh": "站点首页"
}
},
{
"scenario": "admin",
"file": "admin.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.62.0/admin.png",
"caption": {
"en": "Admin console",
"zh": "管理后台"
}
}
],
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34021993674"
},
"website": {
"app": "ghost",
"app_version": "v6.62.0",
"verification_id": "ghost-v6.62.0-20260906-001",
"verification_run_id": "34021993674",
"platform_verification_id": "plat-us-east-1-x86_64-20260906-001",
"ami_id": "ami-025d99823a4caad37",
"architecture": "x86_64",
"region": "us-east-1",
"display_name": {
"en": "Ghost Blog",
"zh": "Ghost 博客"
},
"description": {
"en": "Open-source professional publishing platform",
"zh": "开源专业发布平台"
},
"category": "cms",
"icon": "/icons/ghost.svg",
"featured": true,
"tags": [
"blog",
"cms",
"publishing"
],
"features": [
{
"en": "Automated testing before each release",
"zh": "每次发布前自动化测试"
},
{
"en": "SQLite or MySQL, one-click CloudFormation deploy",
"zh": "SQLite 或 MySQL,CloudFormation 一键部署"
}
],
"health": "passed",
"status": "pending",
"verified_at": "2026-09-06T08:31:18Z",
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/34021993674",
"screenshots_order": [
"home",
"admin"
],
"deploy": {
"documentation_url": "https://ghost.org/docs/",
"regions": [
"us-east-1"
],
"instance_type": "t3.small",
"container_port": 2368,
"docker_image": "ghost:6.62.0-alpine",
"extra_environment": [
"database__client=sqlite3",
"database__connection__filename=/var/lib/ghost/content/data/ghost.db",
"database__useNullAsDefault=true"
],
"post_deploy": {
"admin_path": "/ghost/",
"admin_setup": {
"en": "Open the admin path on first visit — the setup wizard walks you through creating the owner account. There are no preset credentials.",
"zh": "首次打开后台地址会进入初始化向导,按步骤创建站长账户;没有预置账号密码。"
},
"notes": [
{
"en": "Content is stored on the instance's data volume (/var/lib/ghost/content); back it up before terminating the instance.",
"zh": "内容保存在实例数据卷(/var/lib/ghost/content),终止实例前请先备份。"
}
]
},
"cost_estimate": {
"monthly_usd": 18,
"note": {
"en": "Verified default (t3.small + 30 GB gp3, us-east-1 on-demand): ~$15.2 instance + ~$2.4 storage per month. Your actual AWS bill applies.",
"zh": "按已验证默认配置估算(t3.small + 30GB gp3,us-east-1 按需计费):实例约 $15.2/月 + 存储约 $2.4/月。以 AWS 实际账单为准。"
}
},
"data_path": "/var/lib/ghost/content"
},
"release": {
"type": "new_version",
"previous_version": "v6.62.0",
"type_evidence": "rule4: minor/major change v6.62.0 -> (6, 62, 0)"
},
"screenshots": [
{
"scenario": "home",
"file": "home.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.62.0/home.png",
"caption": {
"en": "Public site",
"zh": "站点首页"
}
},
{
"scenario": "admin",
"file": "admin.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.62.0/admin.png",
"caption": {
"en": "Admin console",
"zh": "管理后台"
}
}
]
},
"verification_run_id": "34021993674",
"verified_at": "2026-09-06T08:31:18Z"
}