Verification Report · ghost v6.65.0
NOT PUBLISHED
ghost-v6.65.0-20260923-001
verified_at 2026-09-23T02:10:50Z
Immutable inputs
| App version | v6.65.0 ← release tag v6.65.0 · source 8d5bded685b9 |
| Image (exact tag) | ghost:6.65.0-alpine |
| Image digest (linux/amd64) | sha256:6dad74b522aa6034d62478f59d7b10f8aef4f3c6b530746c1f3ba3e633cc2ed5 |
| Index digest | sha256:65788e5e2c5478319f8fc65ac12816dbc941d1a9c834c87190cf1d2d1b79d4e2 |
| Pulled as | ghost:6.65.0-alpine@sha256:6dad74b522aa6034d62478f59d7b10f8aef4f3c6b530746c1f3ba3e633cc2ed5 via registry-1.docker.io |
| Platform contract | ami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260922-002) |
| Config revisions | app 237f81cb950c · compose e2edd78968ad |
| Release type | new_version — rule4: minor/major change v6.64.0 -> (6, 65, 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.65.0 — 匹配(exact):kind=env 取到 '6.65.0',期望 '6.65.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_admin.py::test_owner_publish_restart_and_cold_restore
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
7 passed in 19.75s
|
| Container state | running |
| Duration | 84.7s(2026-09-23T02:09:25Z → 2026-09-23T02:10:50Z) |
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_admin.py::test_owner_publish_restart_and_cold_restore
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
7 passed in 19.75s
Container logs (tail)
-09-23 02:10:46] [36mINFO[39m "GET /ghost/api/admin/authentication/setup/" [32m200[39m 10ms
ghost-1 | [2026-09-23 02:10:46] [36mINFO[39m "GET /ghost/assets/InterVariable-DiVDrmQJ.woff2" [32m200[39m 5ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/authentication/setup/" [32m200[39m 5ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "POST /ghost/api/admin/session/" [32m201[39m 103ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/users/me/" [32m200[39m 12ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/posts/?filter=status:published&limit=50" [32m200[39m 20ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/" [32m200[39m 4ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/users/me/?include=roles" [32m200[39m 19ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/config/" [32m200[39m 18ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/site/" [32m200[39m 1ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[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" [32m200[39m 42ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/users/me/?include=roles" [32m200[39m 51ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/config/" [32m200[39m 19ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[39m "GET /ghost/api/admin/tiers/?filter=type%3Apaid%2Bactive%3Atrue&limit=100&page=1" [32m200[39m 32ms
ghost-1 | [2026-09-23 02:10:47] [36mINFO[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%2Crecommendations%2Csecurity%2Csocial_web%2Cexplore%2Ctransistor" [32m200[39m 37ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/api/admin/site/" [32m200[39m 1ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/use-tinybird-token-CnZ19NDf.js" [32m200[39m 13ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/overview-B0yD9OoX.js" [32m200[39m 31ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/use-tinybird-query-BaBNCaj0.js" [32m200[39m 32ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/api/admin/members/?limit=1" [32m200[39m 49ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/pagemenu-CKQD9hoP.js" [32m200[39m 33ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/api/admin/themes/active/" [32m200[39m 49ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/analytics-53FOa2wq.js" [32m200[39m 9ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/post-utils-DKF4mfuo.js" [32m200[39m 4ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/post-helpers-C88JBa4D.js" [32m200[39m 5ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/posts-tcoO3iRG.js" [32m200[39m 19ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/use-host-limits-mpTkZIq8.js" [32m200[39m 7ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/prop-types-6lTeqvom.js" [32m200[39m 4ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/trend-badge-1w_HEzkG.js" [32m200[39m 17ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/isPlainObject-BzzgUf1E.js" [32m200[39m 9ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/card-C2dfd5u0.js" [32m200[39m 9ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/empty-indicator-CSQts7GV.js" [32m200[39m 10ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/date-range-select-DdC23c13.js" [32m200[39m 3ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/stats-view-CzpGoHzF.js" [32m200[39m 5ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/kpi-card-jTnpLKGr.js" [32m200[39m 8ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/chart-B_UNLXse.js" [32m200[39m 28ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/dist-DS6zpxid.js" [32m200[39m 6ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/select-D_4xWFYv.js" [32m200[39m 14ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/use-analytics-data-B3lGOxsC.js" [32m200[39m 6ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/page-header-CdCpekG9.js" [32m200[39m 12ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/stats-Cvp8Ep5m.js" [32m200[39m 13ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/chart-helpers-Czu_9QpJ.js" [32m200[39m 14ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/use-growth-stats-E13rMQUE.js" [32m200[39m 14ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/audience-wRcSN0jV.js" [32m200[39m 9ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/currency-Dy4Tc2R2.js" [32m200[39m 15ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/url-helpers-DcQbx-Xg.js" [32m200[39m 4ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/get-site-timezone-HgL0jI_F.js" [32m200[39m 11ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/feature-image-placeholder-DFXA4vfJ.js" [32m200[39m 13ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/post-share-modal-wxmqbAv_.js" [32m200[39m 20ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/share-modal-DBqZobuR.js" [32m200[39m 20ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/ghost-dark-cac0cb2d5bb78e9bd14d8d1c2768ed45.css" [32m200[39m 46ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "PUT /ghost/api/admin/users/6ab3350960456d000181eec3/?include=roles" [32m200[39m 64ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/api/admin/themes/active/" [32m200[39m 13ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/api/admin/notifications/" [32m200[39m 16ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "GET /ghost/assets/koenig-lexical/koenig-lexical.umd.js?v=41cf10d900" [32m200[39m 105ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "PUT /ghost/api/admin/users/6ab3350960456d000181eec3/?include=roles" [32m200[39m 60ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "PUT /ghost/api/admin/users/6ab3350960456d000181eec3/?include=roles" [32m200[39m 30ms
ghost-1 | [2026-09-23 02:10:48] [36mINFO[39m "PUT /ghost/api/admin/users/6ab3350960456d000181eec3/?include=roles" [32m200[39m 29ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/api/admin/stats/mrr/?date_from=2026-08-24" [32m200[39m 47ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/api/admin/stats/member_count/?date_from=2026-08-24" [32m200[39m 51ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/api/admin/stats/subscriptions/" [32m200[39m 60ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/api/admin/stats/top-posts-views/?date_from=2026-08-24&date_to=2026-09-23&limit=5&timezone=UTC" [32m200[39m 59ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/api/admin/posts/?filter=status%3A%5Bpublished%2Csent%5D&order=published_at+DESC&limit=1&include=authors%2Cemail%2Ccount.clicks" [32m200[39m 71ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/assets/fonts/Inter-roman.var-66c6e40883646a7ad993108b2ce2da32.woff2" [32m200[39m 2ms
ghost-1 | [2026-09-23 02:10:49] [36mINFO[39m "GET /ghost/api/admin/stats/posts/6ab3351260456d000181f1db/stats/" [32m200[39m 11ms
Raw manifest
{
"schema_version": "1.0",
"verification_id": "ghost-v6.65.0-20260923-001",
"app": "ghost",
"app_version": "v6.65.0",
"release": {
"source_repo": "TryGhost/Ghost",
"source_revision": "8d5bded685b9b2019d47e298dc4594a1c4049557",
"release_tag": "v6.65.0",
"upstream_tag": "v6.65.0",
"image_reference": "ghost:6.65.0-alpine"
},
"container": {
"image": "ghost:6.65.0-alpine",
"digest": "sha256:6dad74b522aa6034d62478f59d7b10f8aef4f3c6b530746c1f3ba3e633cc2ed5",
"manifest_digest": "sha256:65788e5e2c5478319f8fc65ac12816dbc941d1a9c834c87190cf1d2d1b79d4e2",
"platform": "linux/amd64"
},
"platform": {
"platform_verification_id": "plat-us-east-1-x86_64-20260922-002",
"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": "237f81cb950c07b6c704ec360fbb2a968b7fb420",
"compose_revision": "e2edd78968ad7fc7c2f97fc2210185a8c70bbbb4",
"tests_revision": "62380ef0fcbbfaebbb16bf5272599efd9b421bae",
"template_revision": "ee1edfa9f5282f9391b15e4c7a5257d27324ab68"
},
"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.65.0/home.png",
"caption": {
"en": "Public site",
"zh": "站点首页"
}
},
{
"scenario": "admin",
"file": "admin.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.65.0/admin.png",
"caption": {
"en": "Admin console",
"zh": "管理后台"
}
}
],
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/35809181788"
},
"website": {
"app": "ghost",
"app_version": "v6.65.0",
"verification_id": "ghost-v6.65.0-20260923-001",
"verification_run_id": "35809181788",
"platform_verification_id": "plat-us-east-1-x86_64-20260922-002",
"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-23T02:10:50Z",
"report_url": "",
"workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/35809181788",
"screenshots_order": [
"home",
"admin"
],
"deploy": {
"documentation_url": "https://ghost.org/docs/",
"regions": [
"us-east-1"
],
"instance_type": "t3.small",
"data_volume_gb": 30,
"container_port": 2368,
"health_check_path": "/",
"docker_image": "ghost:6.65.0-alpine",
"extra_environment": [
"database__client=sqlite3",
"database__connection__filename=/var/lib/ghost/content/data/ghost.db",
"database__useNullAsDefault=true"
],
"template": {
"url": "https://corenovalaunch-templates.s3.us-east-1.amazonaws.com/corenova-one-click.template.yaml",
"revision": "ee1edfa9f5282f9391b15e4c7a5257d27324ab68"
},
"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 a retained data volume (/var/lib/ghost/content). It keeps billing after stack deletion; snapshot it, then delete the volume when no longer needed.",
"zh": "内容保存在保留数据卷(/var/lib/ghost/content)中。删除栈后该卷仍会计费;请先创建快照,不再需要时再删除卷。"
},
{
"en": "SQLite cold backup (locally restore-tested): stop the writer container, archive the entire /var/lib/ghost/content directory with numeric ownership, then restart it. Restore into an empty data mount on an isolated container using the same image digest before starting it; verify owner login, published article reads and another edit. Content exports are not full database backups. Cloud snapshot recovery is not covered by this local test.",
"zh": "SQLite 最小冷备(已本地恢复实测):先停止写入容器,保留数字属主归档整个 /var/lib/ghost/content,再启动原容器。用相同镜像 digest 创建隔离副本,将归档恢复到空数据挂载后再启动,验证 owner 登录、已发布文章读取及再次编辑。内容导出不是整库备份;此本地测试不覆盖云快照恢复。"
}
]
},
"cost_estimate": {
"monthly_usd": 23,
"note": {
"en": "Verified default in us-east-1: ~$15.2 t3.small + $4 for 20 GB root and 30 GB data gp3 + $3.65 public IPv4 per month. Data transfer, snapshots and CloudWatch usage are extra.",
"zh": "us-east-1 已验证默认配置:t3.small 约 $15.2/月,20GB 系统盘 + 30GB 数据盘 gp3 约 $4/月,公网 IPv4 约 $3.65/月;流量、快照和 CloudWatch 用量另计。"
}
},
"data_path": "/var/lib/ghost/content",
"app_url_env_name": "url"
},
"release": {
"type": "new_version",
"previous_version": "v6.64.0",
"type_evidence": "rule4: minor/major change v6.64.0 -> (6, 65, 0)"
},
"screenshots": [
{
"scenario": "home",
"file": "home.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.65.0/home.png",
"caption": {
"en": "Public site",
"zh": "站点首页"
}
},
{
"scenario": "admin",
"file": "admin.png",
"url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/ghost/v6.65.0/admin.png",
"caption": {
"en": "Admin console",
"zh": "管理后台"
}
}
]
},
"verification_run_id": "35809181788",
"verified_at": "2026-09-23T02:10:50Z"
}