Verification Report · vikunja v2.6.0

NOT PUBLISHED   vikunja-v2.6.0-20260924-001   verified_at 2026-09-24T09:52:10Z

Immutable inputs

App versionv2.6.0 ← release tag v2.6.0 · source a4218eeb8fb3
Image (exact tag)vikunja/vikunja:2.6.0
Image digest (linux/amd64)sha256:b63e4d5d300dbd63003c045afa1ebb98a16ff2a527ef09550cc8df2db57706e2
Index digestsha256:417ada6f94e81f0267aa2f007d0a811fc82d38dd2aa58351e3ea520ca01c2ea5
Pulled asvikunja/vikunja:2.6.0@sha256:b63e4d5d300dbd63003c045afa1ebb98a16ff2a527ef09550cc8df2db57706e2 via registry-1.docker.io
Platform contractami-0045d7fc2ad003464 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260924-002)
Config revisionsapp fad2ac960349 · compose 1efb8deca725
Release typenew_version — rule4: minor/major change v2.6.0 -> (2, 6, 0)

Publish gate

CheckFieldResult
Compose startedchecks.compose_startedPassed
Container healthychecks.container_healthyPassed
Health check passedchecks.health_check_passedPassed
Application testschecks.tests_passedPassed
Screenshots capturedchecks.screenshots_generatedPassed
Screenshots publishedchecks.screenshots_uploadedFailed
Report publishedchecks.report_uploadedFailed
Manifest publishedchecks.verification_manifest_uploadedFailed
Platform contract validchecks.required_platform_contract_validPassed

Evidence

Health probeHTTP 200 — ready
Version assertionTrue actual v2.6.0 — 匹配(exact):kind=api_json_path 取到 'v2.6.0',期望 'v2.6.0'
Testspytest exit=0 ... [100%] ==================================== PASSES ==================================== =========================== short test summary info ============================ PASSED apps/vikunja/tests/test_register.py::test_info_endpoint PASSED apps/vikunja/tests/test_register.py::test_register_renders PASSED apps/vikunja/tests/test_register.py::test_project_and_attachment_survive_recreate 3 passed in 4.11s
Container staterunning
Duration19.5s(2026-09-24T09:51:51Z → 2026-09-24T09:52:10Z)

Screenshots

register
register · Account registration / 账户注册页

Application test output

pytest exit=0
...                                                                      [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/vikunja/tests/test_register.py::test_info_endpoint
PASSED apps/vikunja/tests/test_register.py::test_register_renders
PASSED apps/vikunja/tests/test_register.py::test_project_and_attachment_survive_recreate
3 passed in 4.11s

Container logs (tail)

user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.065Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/Deletion-DZfyAdB1.js status=200 latency=156.328µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.068Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/DataExportDownload-Dq_2Xbiq.js status=200 latency=124.404µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.070Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/DataExport-DaNhK0kN.css status=200 latency=51.719µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.072Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/DataExport-CZi8f5sb.js status=200 latency=160.557µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.075Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/CreateEdit-Cn9iTI1K.js status=200 latency=119.511µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.078Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/ColorPicker-CAWTXjjD.js status=200 latency=108.239µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.081Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/ColorPicker-BXjG33ll.css status=200 latency=79.586µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.083Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/Caldav-CnpKPTrX.js status=200 latency=211.309µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.086Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/BotUsers-Das4nDIn.js status=200 latency=253.518µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.088Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/BotUsers-BjOGCfI-.css status=200 latency=63.672µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.091Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/BaseButton-D-46ErdK.js status=304 latency=13.764µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.093Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/BaseButton-BmeOV6hJ.css status=304 latency=15.887µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.096Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/Avatar-pTXAB5pT.css status=200 latency=136.172µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.100Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/Avatar-BFwmmWvb.js status=200 latency=1.936145ms user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.102Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/AtomFeed-D9XcY6bs.js status=200 latency=114.415µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.105Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/AsyncEditor-CKFT8LC_.js status=200 latency=148.756µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.107Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/ApiTokens-DN2qiJY3.css status=200 latency=20.938µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.110Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/ApiTokens-C7KZSMgj.js status=200 latency=184.873µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.112Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/ApiTokenForm-Dbowq3ic.js status=200 latency=213.471µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.115Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/AdminShell-CFA9FM3K.js status=200 latency=74.321µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.117Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/AddTask-D6Ml47M7.css status=200 latency=75.403µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.120Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/AddTask-BTP9zHDG.js status=200 latency=186.27µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.122Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/assets/About-DJ0fO_zI.js status=200 latency=99.227µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.125Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/images/icons/android-chrome-192x192.png status=200 latency=181.039µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.128Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/images/icons/android-chrome-512x512.png status=200 latency=218.771µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.130Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/images/icons/icon-maskable.png status=200 latency=289.061µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"
vikunja-1  | time=2026-09-24T09:52:10.133Z level=INFO component=http remote_ip=172.18.0.1 method=GET uri=/manifest.webmanifest status=200 latency=81.281µs user_agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome/153.0.8010.12 Safari/537.36"

Raw manifest

{
  "schema_version": "1.0",
  "verification_id": "vikunja-v2.6.0-20260924-001",
  "app": "vikunja",
  "app_version": "v2.6.0",
  "release": {
    "source_repo": "go-vikunja/vikunja",
    "source_revision": "a4218eeb8fb3ada95e14a2331731524c9120d5bd",
    "release_tag": "v2.6.0",
    "upstream_tag": "v2.6.0",
    "image_reference": "vikunja/vikunja:2.6.0"
  },
  "container": {
    "image": "vikunja/vikunja:2.6.0",
    "digest": "sha256:b63e4d5d300dbd63003c045afa1ebb98a16ff2a527ef09550cc8df2db57706e2",
    "manifest_digest": "sha256:417ada6f94e81f0267aa2f007d0a811fc82d38dd2aa58351e3ea520ca01c2ea5",
    "platform": "linux/amd64"
  },
  "platform": {
    "platform_verification_id": "plat-us-east-1-x86_64-20260924-002",
    "ami_id": "ami-0045d7fc2ad003464",
    "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": "fad2ac9603496c6265c89f18bb174c76f59e914f",
    "compose_revision": "1efb8deca7259e31533614acbf0b47b1d82ed655",
    "tests_revision": "e2e1f52e8050d62c79c2bfeb01d7f37061a396b1",
    "template_revision": "c9350db2baff041f7af1051e500f8db9da8c749a"
  },
  "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": "register",
        "file": "register.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/candidates/vikunja/35983749866/1/vikunja-v2.6.0-20260924-001/screenshots/register.png",
        "caption": {
          "en": "Account registration",
          "zh": "账户注册页"
        }
      }
    ],
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/35983749866"
  },
  "website": {
    "app": "vikunja",
    "app_version": "v2.6.0",
    "verification_id": "vikunja-v2.6.0-20260924-001",
    "verification_run_id": "35983749866",
    "platform_verification_id": "plat-us-east-1-x86_64-20260924-002",
    "ami_id": "ami-0045d7fc2ad003464",
    "architecture": "x86_64",
    "region": "us-east-1",
    "display_name": {
      "en": "Vikunja",
      "zh": "Vikunja 任务管理"
    },
    "description": {
      "en": "To-do app to organize tasks, projects and teams",
      "zh": "开源待办与项目任务管理工具"
    },
    "category": "productivity",
    "icon": "/icons/vikunja.svg",
    "featured": true,
    "tags": [
      "todo",
      "tasks",
      "projects"
    ],
    "features": [
      {
        "en": "Projects, labels, reminders and recurring tasks",
        "zh": "项目、标签、提醒与重复任务"
      },
      {
        "en": "Kanban boards, Gantt and table views",
        "zh": "看板、甘特图与表格视图"
      },
      {
        "en": "Team sharing with granular permissions",
        "zh": "团队共享与细粒度权限"
      }
    ],
    "health": "passed",
    "status": "pending",
    "verified_at": "2026-09-24T09:52:10Z",
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunch/actions/runs/35983749866",
    "screenshots_order": [
      "register"
    ],
    "deploy": {
      "documentation_url": "https://vikunja.io/docs",
      "regions": [
        "us-east-1"
      ],
      "instance_type": "t3.small",
      "data_volume_gb": 30,
      "container_port": 3456,
      "health_check_path": "/api/v1/info",
      "docker_image": "vikunja/vikunja:2.6.0",
      "extra_environment": [
        "VIKUNJA_SERVICE_PUBLICURL=${CORENOVA_APP_URL}/",
        "VIKUNJA_FILES_BASEPATH=/db"
      ],
      "template": {
        "url": "https://corenovalaunch-templates.s3.us-east-1.amazonaws.com/corenova-one-click.template.yaml",
        "revision": "c9350db2baff041f7af1051e500f8db9da8c749a"
      },
      "post_deploy": {
        "admin_path": "/register",
        "admin_setup": {
          "en": "The first registered account becomes the instance admin. There are no preset credentials.",
          "zh": "注册的第一个账户即实例管理员;没有预置账号密码。"
        },
        "notes": [
          {
            "en": "SQLite and attachments share /db without changing the database engine. Before updating an existing deployment, back up the database and export attachments from /app/vikunja/files; restore and verify them on a copy before switching. Replacing the template does not migrate container-local files.",
            "zh": "SQLite 与附件共用 /db,不更换数据库引擎。更新已有部署前,先备份数据库并导出 /app/vikunja/files 中的附件,在副本上恢复验证后再切换;更换模板不会迁移容器内文件。"
          },
          {
            "en": "Database (SQLite) and attachments live on a retained volume (/db). It keeps billing after stack deletion; snapshot it, then delete the volume when no longer needed.",
            "zh": "数据库(SQLite)与附件保存在保留数据卷(/db)中。删除栈后该卷仍会计费;请先创建快照,不再需要时再删除卷。"
          }
        ]
      },
      "cost_estimate": {
        "monthly_usd": 23,
        "note": {
          "en": "Verified default in us-east-1: ~$15.2 t3.small + ~$4 for the 20 GB root and 30 GB data gp3 volumes + $3.65 public IPv4 per month.",
          "zh": "us-east-1 已验证默认配置:t3.small 约 $15.2/月 + 20GB 系统盘与 30GB 数据盘 gp3 约 $4/月 + 公网 IPv4 约 $3.65/月。"
        }
      },
      "data_path": "/db",
      "hold": {
        "reason": {
          "en": "Deployment paused pending production public-URL injection verification.",
          "zh": "暂停部署:待验证生产公网地址注入。"
        }
      },
      "production_contract": {
        "checks": [
          "url_injection",
          "data_dir_write"
        ]
      }
    },
    "release": {
      "type": "new_version",
      "previous_version": "v2.6.0",
      "type_evidence": "rule4: minor/major change v2.6.0 -> (2, 6, 0)"
    },
    "screenshots": [
      {
        "scenario": "register",
        "file": "register.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/candidates/vikunja/35983749866/1/vikunja-v2.6.0-20260924-001/screenshots/register.png",
        "caption": {
          "en": "Account registration",
          "zh": "账户注册页"
        }
      }
    ]
  },
  "verification_run_id": "35983749866",
  "verified_at": "2026-09-24T09:52:10Z"
}