Verification Report · linkding v1.47.0

NOT PUBLISHED   linkding-v1.47.0-20260916-001   verified_at 2026-09-16T00:14:16Z

Immutable inputs

App versionv1.47.0 ← release tag v1.47.0 · source 24b5ad6cc9bd
Image (exact tag)sissbruecker/linkding:1.47.0
Image digest (linux/amd64)sha256:b44256a4ff37e4cb1a39c40d3a5b560337f1477a55428b3320e813d6004d8001
Index digestsha256:e35cb50e0581178f245125ffaa909c565416c94c9f22ace305a7d234a4345522
Pulled assissbruecker/linkding:1.47.0@sha256:b44256a4ff37e4cb1a39c40d3a5b560337f1477a55428b3320e813d6004d8001 via registry-1.docker.io
Platform contractami-025d99823a4caad37 · us-east-1/x86_64 · source=public (plat-us-east-1-x86_64-20260909-001)
Config revisionsapp 4c875dec67a4 · compose 9c11dcc090bf
Release typeinitial — rule1: no published versions recorded for this app

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 1.47.0 — 匹配(exact):kind=exec_command 取到 '1.47.0',期望 '1.47.0'
Testspytest exit=0 . [100%] ==================================== PASSES ==================================== =========================== short test summary info ============================ PASSED apps/linkding/tests/test_smoke.py::test_login_page_answers 1 passed in 0.13s
Container staterunning
Duration25.6s(2026-09-16T00:13:49Z → 2026-09-16T00:14:14Z)

Screenshots

login
login · Sign-in page / 登录页

Application test output

pytest exit=0
.                                                                        [100%]
==================================== PASSES ====================================
=========================== short test summary info ============================
PASSED apps/linkding/tests/test_smoke.py::test_login_page_answers
1 passed in 0.13s

Container logs (tail)

ying bookmarks.0037_globalsettings... OK
linkding-1  |   Applying bookmarks.0038_globalsettings_guest_profile_user... OK
linkding-1  |   Applying bookmarks.0039_globalsettings_enable_link_prefetch... OK
linkding-1  |   Applying bookmarks.0040_userprofile_items_per_page_and_more... OK
linkding-1  |   Applying bookmarks.0041_merge_metadata... OK
linkding-1  |   Applying bookmarks.0042_userprofile_custom_css_hash... OK
linkding-1  |   Applying bookmarks.0043_userprofile_collapse_side_panel... OK
linkding-1  |   Applying bookmarks.0044_bookmark_latest_snapshot... OK
linkding-1  |   Applying bookmarks.0045_userprofile_hide_bundles_bookmarkbundle... OK
linkding-1  |   Applying bookmarks.0046_add_url_normalized_field... OK
linkding-1  |   Applying bookmarks.0047_populate_url_normalized_field... OK
linkding-1  |   Applying bookmarks.0048_userprofile_default_mark_shared... OK
linkding-1  |   Applying bookmarks.0049_userprofile_legacy_search... OK
linkding-1  |   Applying bookmarks.0050_new_search_toast... OK
linkding-1  |   Applying bookmarks.0051_fix_normalized_url... OK
linkding-1  |   Applying bookmarks.0052_apitoken... OK
linkding-1  |   Applying bookmarks.0053_migrate_api_tokens... OK
linkding-1  |   Applying bookmarks.0054_bookmarkbundle_filter_shared_and_more... OK
linkding-1  |   Applying sessions.0001_initial... OK
linkding-1  | 2026-09-16 00:14:09,108 INFO Current journal mode: delete
linkding-1  | 2026-09-16 00:14:09,109 INFO Switched to WAL journal mode
linkding-1  | 2026-09-16 00:14:09,637 INFO Skip creating initial superuser, LD_SUPERUSER_NAME option is not defined
linkding-1  | Legacy task table does not exist. Skipping task migration
linkding-1  | [uWSGI] getting INI configuration from uwsgi.ini
linkding-1  | [uwsgi-static] added mapping for /static => static
linkding-1  | [uwsgi-static] added mapping for /static => data/favicons
linkding-1  | [uwsgi-static] added mapping for /static => data/previews
linkding-1  | [uwsgi-static] added mapping for /robots.txt => static/robots.txt
linkding-1  | *** Starting uWSGI 2.0.31 (64bit) on [Wed Sep 16 00:14:10 2026] ***
linkding-1  | compiled with version: 14.2.0 on 13 September 2026 16:02:26
linkding-1  | os: Linux-6.17.0-1022-azure #22-Ubuntu SMP Mon Jul 27 17:24:03 UTC 2026
linkding-1  | nodename: 314b2aec5a43
linkding-1  | machine: x86_64
linkding-1  | clock source: unix
linkding-1  | pcre jit disabled
linkding-1  | detected number of CPU cores: 4
linkding-1  | current working directory: /etc/linkding
linkding-1  | writing pidfile to /tmp/linkding.pid
linkding-1  | detected binary path: /etc/linkding/.venv/bin/uwsgi
linkding-1  | *** dumping internal routing table ***
linkding-1  | [rule: 0] subject: path_info regexp: ^/static/ action: addheader:Content-Security-Policy: sandbox
linkding-1  | *** end of the internal routing table ***
linkding-1  | setgid() to 33
linkding-1  | setuid() to 33
linkding-1  | your memory page size is 4096 bytes
linkding-1  | detected max file descriptor number: 4096
linkding-1  | building mime-types dictionary from file /etc/mime.types...1599 entry found
linkding-1  | lock engine: pthread robust mutexes
linkding-1  | thunder lock: disabled (you can enable it with --thunder-lock)
linkding-1  | uWSGI http bound on [::]:9090 fd 4
linkding-1  | uwsgi socket 0 bound to TCP address 127.0.0.1:33149 (port auto-assigned) fd 3
linkding-1  | Python version: 3.13.7 (main, Sep 30 2025, 00:38:51) [GCC 14.2.0]
linkding-1  | Python main interpreter initialized at 0x7fb5d36389d0
linkding-1  | python threads support enabled
linkding-1  | your server socket listen backlog is limited to 100 connections
linkding-1  | your mercy for graceful operations on workers is 60 seconds
linkding-1  | mapped 274704 bytes (268 KB) for 4 cores
linkding-1  | *** Operational MODE: preforking+threaded ***
linkding-1  | WSGI app 0 (mountpoint='') ready in 0 seconds on interpreter 0x7fb5d36389d0 pid: 1 (default app)
linkding-1  | *** uWSGI is running in multiple interpreter mode ***
linkding-1  | spawned uWSGI master process (pid: 1)
linkding-1  | spawned uWSGI worker 1 (pid: 19, cores: 2)
linkding-1  | spawned uWSGI worker 2 (pid: 20, cores: 2)
linkding-1  | *** Stats server enabled on 127.0.0.1:9191 fd: 14 ***
linkding-1  | spawned uWSGI http 1 (pid: 23)
linkding-1  | [pid: 19|app: 0|req: 1/1] ::ffff:172.18.0.1 () {30 vars in 347 bytes} [Wed Sep 16 00:14:12 2026] GET / => generated 0 bytes in 132 msecs (HTTP/1.1 302) 9 headers in 283 bytes (1 switches on core 0)
linkding-1  | [pid: 19|app: 0|req: 2/2] ::ffff:172.18.0.1 () {30 vars in 365 bytes} [Wed Sep 16 00:14:12 2026] GET /bookmarks => generated 0 bytes in 2 msecs (HTTP/1.1 302) 9 headers in 295 bytes (1 switches on core 1)
linkding-1  | [pid: 20|app: 0|req: 1/3] ::ffff:172.18.0.1 () {30 vars in 388 bytes} [Wed Sep 16 00:14:12 2026] GET /login?next=/bookmarks => generated 0 bytes in 147 msecs (HTTP/1.1 301) 7 headers in 246 bytes (1 switches on core 0)
linkding-1  | [pid: 20|app: 0|req: 2/4] ::ffff:172.18.0.1 () {30 vars in 390 bytes} [Wed Sep 16 00:14:12 2026] GET /login/?next=/bookmarks => generated 3348 bytes in 18 msecs (HTTP/1.1 200) 11 headers in 511 bytes (1 switches on core 1)
linkding-1  | [pid: 20|app: 0|req: 3/5] ::ffff:172.18.0.1 () {32 vars in 379 bytes} [Wed Sep 16 00:14:13 2026] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 302) 9 headers in 283 bytes (1 switches on core 0)
linkding-1  | [pid: 20|app: 0|req: 4/6] ::ffff:172.18.0.1 () {32 vars in 397 bytes} [Wed Sep 16 00:14:13 2026] GET /bookmarks => generated 0 bytes in 1 msecs (HTTP/1.1 302) 9 headers in 295 bytes (1 switches on core 1)
linkding-1  | [pid: 20|app: 0|req: 5/7] ::ffff:172.18.0.1 () {32 vars in 420 bytes} [Wed Sep 16 00:14:13 2026] GET /login?next=/bookmarks => generated 0 bytes in 1 msecs (HTTP/1.1 301) 7 headers in 246 bytes (1 switches on core 0)
linkding-1  | [pid: 19|app: 0|req: 3/8] ::ffff:172.18.0.1 () {32 vars in 422 bytes} [Wed Sep 16 00:14:13 2026] GET /login/?next=/bookmarks => generated 3348 bytes in 45 msecs (HTTP/1.1 200) 11 headers in 511 bytes (1 switches on core 0)
linkding-1  | [pid: 20|app: 0|req: 6/9] ::ffff:172.18.0.1 () {48 vars in 905 bytes} [Wed Sep 16 00:14:13 2026] GET / => generated 0 bytes in 1 msecs (HTTP/1.1 302) 9 headers in 283 bytes (1 switches on core 1)
linkding-1  | [pid: 19|app: 0|req: 4/10] ::ffff:172.18.0.1 () {48 vars in 923 bytes} [Wed Sep 16 00:14:13 2026] GET /bookmarks => generated 0 bytes in 1 msecs (HTTP/1.1 302) 9 headers in 295 bytes (1 switches on core 1)
linkding-1  | [pid: 20|app: 0|req: 7/11] ::ffff:172.18.0.1 () {48 vars in 946 bytes} [Wed Sep 16 00:14:13 2026] GET /login?next=/bookmarks => generated 0 bytes in 1 msecs (HTTP/1.1 301) 7 headers in 246 bytes (1 switches on core 0)
linkding-1  | [pid: 20|app: 0|req: 8/12] ::ffff:172.18.0.1 () {48 vars in 948 bytes} [Wed Sep 16 00:14:13 2026] GET /login/?next=/bookmarks => generated 3348 bytes in 3 msecs (HTTP/1.1 200) 11 headers in 511 bytes (1 switches on core 1)
linkding-1  | [pid: 20|app: -1|req: -1/13] ::ffff:172.18.0.1 () {48 vars in 886 bytes} [Wed Sep 16 00:14:13 2026] GET /static/bundle.js?v=1.47.0 => generated 151828 bytes in 0 msecs via sendfile() (HTTP/1.1 200) 4 headers in 154 bytes (0 switches on core 0)
linkding-1  | [pid: 20|app: -1|req: -1/14] ::ffff:172.18.0.1 () {48 vars in 912 bytes} [Wed Sep 16 00:14:13 2026] GET /static/theme-light.css?v=1.47.0 => generated 56303 bytes in 0 msecs via sendfile() (HTTP/1.1 200) 4 headers in 146 bytes (0 switches on core 1)
linkding-1  | [pid: 19|app: -1|req: -1/15] ::ffff:172.18.0.1 () {48 vars in 927 bytes} [Wed Sep 16 00:14:13 2026] GET /static/logo.png => generated 2592 bytes in 1 msecs via sendfile() (HTTP/1.1 200) 4 headers in 146 bytes (0 switches on core 1)
linkding-1  | [pid: 19|app: -1|req: -1/16] ::ffff:172.18.0.1 () {48 vars in 910 bytes} [Wed Sep 16 00:14:13 2026] GET /static/theme-dark.css?v=1.47.0 => generated 60421 bytes in 0 msecs via sendfile() (HTTP/1.1 200) 4 headers in 146 bytes (0 switches on core 0)

Raw manifest

{
  "schema_version": "1.0",
  "verification_id": "linkding-v1.47.0-20260916-001",
  "app": "linkding",
  "app_version": "v1.47.0",
  "release": {
    "source_repo": "sissbruecker/linkding",
    "source_revision": "24b5ad6cc9bde497b5d1b1e86aed5a2fb7d25c2f",
    "release_tag": "v1.47.0",
    "upstream_tag": "v1.47.0",
    "image_reference": "sissbruecker/linkding:1.47.0"
  },
  "container": {
    "image": "sissbruecker/linkding:1.47.0",
    "digest": "sha256:b44256a4ff37e4cb1a39c40d3a5b560337f1477a55428b3320e813d6004d8001",
    "manifest_digest": "sha256:e35cb50e0581178f245125ffaa909c565416c94c9f22ace305a7d234a4345522",
    "platform": "linux/amd64"
  },
  "platform": {
    "platform_verification_id": "plat-us-east-1-x86_64-20260909-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": "4c875dec67a463d2bf33d576d2211c7121adcf87",
    "compose_revision": "9c11dcc090bfbb2b422cc1083e07baeaec6b07ea",
    "tests_revision": "fda7146f7edb1f7d74ea7f6b1fa09cd99bc4ea7e"
  },
  "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": "login",
        "file": "login.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/linkding/v1.47.0/login.png",
        "caption": {
          "en": "Sign-in page",
          "zh": "登录页"
        }
      }
    ],
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/35039071260"
  },
  "website": {
    "app": "linkding",
    "app_version": "v1.47.0",
    "verification_id": "linkding-v1.47.0-20260916-001",
    "verification_run_id": "35039071260",
    "platform_verification_id": "plat-us-east-1-x86_64-20260909-001",
    "ami_id": "ami-025d99823a4caad37",
    "architecture": "x86_64",
    "region": "us-east-1",
    "display_name": {
      "en": "Linkding",
      "zh": "Linkding 书签管理"
    },
    "description": {
      "en": "Fast, minimal bookmark manager with tags and full-text search",
      "zh": "支持标签与全文搜索的快速轻量书签管理器"
    },
    "category": "productivity",
    "icon": "/icons/linkding.svg",
    "featured": false,
    "tags": [
      "bookmarks",
      "search",
      "productivity"
    ],
    "features": [
      {
        "en": "Organize bookmarks with tags, notes and bulk actions",
        "zh": "使用标签、备注和批量操作管理书签"
      },
      {
        "en": "Search archived pages and bookmark metadata",
        "zh": "搜索已归档页面与书签元数据"
      }
    ],
    "health": "passed",
    "status": "pending",
    "verified_at": "2026-09-16T00:14:16Z",
    "report_url": "",
    "workflow_run_url": "https://github.com/CoreNovaLabs/CoreNovaLaunchVerify/actions/runs/35039071260",
    "screenshots_order": [
      "login"
    ],
    "deploy": {
      "documentation_url": "https://linkding.link/",
      "regions": [
        "us-east-1"
      ],
      "instance_type": "t3.small",
      "data_volume_gb": 30,
      "container_port": 9090,
      "health_check_path": "/",
      "docker_image": "sissbruecker/linkding:1.47.0",
      "extra_environment": [],
      "post_deploy": {
        "admin_path": "/admin/",
        "admin_setup": {
          "en": "Create the first account through AWS Systems Manager Session Manager with the upstream manage.py createsuperuser command, then sign in at /.",
          "zh": "通过 AWS Systems Manager Session Manager 执行上游 manage.py createsuperuser 命令创建首个账户,然后在 / 登录。"
        },
        "notes": [
          {
            "en": "Bookmarks, previews, favicons and the SQLite database are retained under /etc/linkding/data.",
            "zh": "书签、预览、站点图标与 SQLite 数据库均保留在 /etc/linkding/data。"
          }
        ]
      },
      "cost_estimate": {
        "monthly_usd": 23,
        "note": {
          "en": "Verified default in us-east-1: t3.small, 20 GB root plus 30 GB data gp3, and public IPv4; transfer and snapshots are extra.",
          "zh": "us-east-1 已验证默认配置:t3.small、20GB 系统盘、30GB 数据盘与公网 IPv4;流量和快照另计。"
        }
      },
      "data_path": "/etc/linkding/data"
    },
    "release": {
      "type": "initial",
      "previous_version": "",
      "type_evidence": "rule1: no published versions recorded for this app"
    },
    "screenshots": [
      {
        "scenario": "login",
        "file": "login.png",
        "url": "https://pub-7abe6acc470447c0a101cc20ce10ceee.r2.dev/screenshots/linkding/v1.47.0/login.png",
        "caption": {
          "en": "Sign-in page",
          "zh": "登录页"
        }
      }
    ]
  },
  "verification_run_id": "35039071260",
  "verified_at": "2026-09-16T00:14:16Z"
}