{ "checks": [ { "check": "staging and independent DB", "passed": true, "detail": null }, { "check": "no private production tables copied", "passed": true, "detail": null }, { "check": "10 tutorials migrated through API", "passed": true, "detail": null }, { "check": "editorial disabled and key removed", "passed": true, "detail": null }, { "check": "home HTTP200", "passed": true, "detail": 200 }, { "check": "home latest free-node article", "passed": true, "detail": "fn20261029" }, { "check": "home no free-node menu highlight", "passed": true, "detail": null }, { "check": "test robots header", "passed": true, "detail": null }, { "check": "test robots meta", "passed": true, "detail": null }, { "check": "no production analytics", "passed": true, "detail": null }, { "check": "no new advertising code", "passed": true, "detail": null }, { "check": "test canonical", "passed": true, "detail": null }, { "check": "robots disallow whole test site", "passed": true, "detail": null }, { "check": "HTTP redirects to HTTPS", "passed": true, "detail": 301 }, { "check": "blocked legacy/private route /api/article/receive", "passed": true, "detail": 404 }, { "check": "blocked legacy/private route /api/v1/telegram/hook", "passed": true, "detail": 404 }, { "check": "blocked legacy/private route /test/hello", "passed": true, "detail": 404 }, { "check": "blocked legacy/private route /.env", "passed": true, "detail": 403 }, { "check": "closed editorial API", "passed": true, "detail": 503 }, { "check": "page /freenode", "passed": true, "detail": 200 }, { "check": "noindex /freenode", "passed": true, "detail": null }, { "check": "page /shadowrocketids", "passed": true, "detail": 200 }, { "check": "noindex /shadowrocketids", "passed": true, "detail": null }, { "check": "page /client", "passed": true, "detail": 200 }, { "check": "noindex /client", "passed": true, "detail": null }, { "check": "page /advanced", "passed": true, "detail": 200 }, { "check": "noindex /advanced", "passed": true, "detail": null }, { "check": "page /a/m169.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m169.html", "passed": true, "detail": null }, { "check": "page /a/m174.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m174.html", "passed": true, "detail": null }, { "check": "page /a/m173.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m173.html", "passed": true, "detail": null }, { "check": "page /a/m167.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m167.html", "passed": true, "detail": null }, { "check": "page /a/m172.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m172.html", "passed": true, "detail": null }, { "check": "page /a/mihomo-dns-leak.html", "passed": true, "detail": 200 }, { "check": "noindex /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "page /a/m170.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m170.html", "passed": true, "detail": null }, { "check": "page /a/system-proxy-vs-tun.html", "passed": true, "detail": 200 }, { "check": "noindex /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "page /a/m171.html", "passed": true, "detail": 200 }, { "check": "noindex /a/m171.html", "passed": true, "detail": null }, { "check": "page /a/clash-verge-rev-windows.html", "passed": true, "detail": 200 }, { "check": "noindex /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /freenode", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /shadowrocketids", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /client", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /advanced", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m169.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m174.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m173.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m167.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/m172.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/mihomo-dns-leak.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/m170.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/system-proxy-vs-tun.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/m171.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "no development asset /a/clash-verge-rev-windows.html", "passed": true, "detail": null }, { "check": "asset /build/assets/app-BCx10ygF.css", "passed": true, "detail": 200 }, { "check": "asset /build/assets/app-Ba5joxXD.css", "passed": true, "detail": 200 }, { "check": "asset /build/assets/app-DDSp2ths.js", "passed": true, "detail": 200 }, { "check": "asset /build/assets/fa-brands-400-BfBXV7Mm.woff2", "passed": true, "detail": 200 }, { "check": "asset /build/assets/fa-regular-400-BVHPE7da.woff2", "passed": true, "detail": 200 }, { "check": "asset /build/assets/fa-solid-900-8GirhLYJ.woff2", "passed": true, "detail": 200 }, { "check": "asset /build/assets/fa-v4compatibility-DnhYSyY-.woff2", "passed": true, "detail": 200 }, { "check": "asset /build/assets/iconfont-B3tZHDj4.ttf", "passed": true, "detail": 200 }, { "check": "asset /build/assets/iconfont-D7mxe_Lh.woff", "passed": true, "detail": 200 }, { "check": "asset /css/tutorials.css", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/clash-meta-android-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/dns-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/mac-client-guide-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/migration-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/quantumult-x-ios-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/system-proxy-tun-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/v2rayng-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/verge-import.png", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/verge-linux-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/verge-mac-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/verge-system-proxy.png", "passed": true, "detail": 200 }, { "check": "asset /images/tutorials/windows-cover.svg", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/136dd033-69bc-4a0f-9d5c-4e9bde1b4722", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/1cc79de9-790c-426b-92a8-61d4d348549b", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/24f44705-9b6b-4b79-bbcc-07d0a1e09993", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/3364360b-f867-428e-9284-713003d72623", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/37281c08-bc04-4bc5-a0fc-70419f8faff1", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/3b68b6cd-eb2c-4959-8b19-6f1f8bd87993", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/3f36c36d-2318-409f-9a03-c183c2e430f2", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/52b01b49-274e-48c4-99f5-1391aaa75353", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/604e7b3f-a0ed-4305-b9aa-f8b862fb19c9", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/60f03c67-a343-4395-aa69-dd0c2e1885ec", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/6301fb77-cf09-4038-afbb-ebc50ad3d16e", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/6917791e-9f01-4493-b5b9-f1e55ebd859c", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/76ab0135-5c3f-4e27-8bae-87a94b3d55a2", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/7fd23c13-426c-4d6c-aa2a-c164840125d3", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/816dcf82-7ba5-438a-b478-d360c898030b", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/8c4a15a6-46e7-48f0-b1ed-f19368c47d19", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/8e117bf6-c50f-4c94-84e7-59734908dc23", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/8ed764bb-712e-4006-a154-ca44a0e20b5a", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/aa2c5fb9-adee-458f-aa05-25cb8fa04435", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/aa4edeff-646b-4239-a6d5-2d611bdb4682", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/aad602c5-df77-4e4d-b2a4-5cf2d07df7ae", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/b8ae6926-9dad-4aa6-9c3d-7380bfeb1b8f", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/c3985f2e-8b19-4473-96fc-196203673044", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/c918aae8-c874-4664-acbc-d1cf944109b1", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/d7588720-280e-4ef6-bc4b-776d0a0ba3ab", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/e4d4a911-d0f4-4e4c-901e-a905a941fd68", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/e760b6cb-cf1a-4922-8e4d-6d5104751565", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/ed6c0ff4-d4ff-4a93-8009-4865888c3e43", "passed": true, "detail": 200 }, { "check": "asset /resource-v2/media/fd4563da-eeb7-4518-87ea-efb2c7bd7b25", "passed": true, "detail": 200 }, { "check": "asset /sites/cfn/icon.png", "passed": true, "detail": 200 }, { "check": "asset /sites/cfn/images/banner/windows.jpg", "passed": true, "detail": 200 }, { "check": "asset /sites/cfn/images/logo/logo.png", "passed": true, "detail": 200 }, { "check": "asset /upload/images/ad_fu.png", "passed": true, "detail": 200 }, { "check": "37 published illustrations", "passed": true, "detail": 37 }, { "check": "image integrity dog-spaniel-daisy-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYS9BBZXFTM9KP5MFFGME21G-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity freenode-cat-moon-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity cfn-warm-cat-stretch-20261026.webp", "passed": true, "detail": null }, { "check": "image integrity dog-beagle-picnic-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity cfn-balanced-cat-walk-20261026.webp", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYSA1ANR0FQ1CC23VT23GG10-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity freenode-dogs-dance-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity cfn-balanced-cat-rest-20261026.webp", "passed": true, "detail": null }, { "check": "image integrity dog-dalmatian-window-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity freenode-cat-vase-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYM9W6KF513WVC605KD2882D-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYS9PBSVN4YG49YM9GFSA8QG-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYS8TWGK0717VP03D6CHNFHT-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYS95VTPPWF82N0N6Z4B2K4Z-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity dog-corgi-laundry-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity dog-poodle-cafe-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity 001-dog-terrier-slipper-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity cfn-warm-cat-sleep-20261026.webp", "passed": true, "detail": null }, { "check": "image integrity dog-shiba-doorstep-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity cat-window-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity freenode-dog-dachshund-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity dog-schnauzer-bicycle-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity dog-bordercollie-kite-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity cat-blue-chair-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity cfn-balanced-cat-watch-20261026.webp", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYS9GVB7VJV7NJH7DS0V5FPD-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity freenode-cat-fish-dream-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity freenode-dog-dalmatian-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity freenode-cat-collage-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity dog-bulldog-bathmat-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYS9VV3DJ5N8PNH98W1NC0Y3-1-full.jpg", "passed": true, "detail": null }, { "check": "image integrity cfn-warm-cat-pair-20261026.webp", "passed": true, "detail": null }, { "check": "image integrity dog-dachshund-terrace-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity cfn-tuxedo-cat-20261023.webp", "passed": true, "detail": null }, { "check": "image integrity dog-greyhound-cushion-20261028.webp", "passed": true, "detail": null }, { "check": "image integrity tg_image__maomi_a-01KYSA6TVHXNZ93E5YKWYD6Y9H-1-full.jpg", "passed": true, "detail": null }, { "check": "only read-only image consumer active", "passed": true, "detail": null }, { "check": "original pool and 160 fixed assignments preserved", "passed": true, "detail": 197 }, { "check": "rejected yarn image absent", "passed": true, "detail": null }, { "check": "production HEAD unchanged /www/wwwroot/clashfreenode-new.com", "passed": true, "detail": "0792297bb8164fd2929b939d8d1206bc77b4ee81" }, { "check": "production HEAD unchanged /www/wwwroot/resource-v2/app", "passed": true, "detail": "77d4bb2b1737e668e28eb83699549b63c56b42d4" }, { "check": "final closed API /api/article/receive", "passed": true, "detail": 404 }, { "check": "final closed API /api/v1/telegram/hook", "passed": true, "detail": 404 }, { "check": "final closed API /api/github/getlast", "passed": true, "detail": 404 }, { "check": "final closed API /api/nasa/v1/category/base", "passed": true, "detail": 404 }, { "check": "final closed API /api/editorial/v1/catalog", "passed": true, "detail": 404 }, { "check": "search real HTTP returns tutorial matches", "passed": true, "detail": 200 }, { "check": "search noindex", "passed": true, "detail": null }, { "check": "final home and noindex", "passed": true, "detail": null }, { "check": "existing public GitHub link retained", "passed": true, "detail": null }, { "check": "read-only image credential denies assignment", "passed": true, "detail": 403 }, { "check": "test DB account only test-schema CRUD", "passed": true, "detail": [ [ "fna_v3_test", "SELECT" ], [ "fna_v3_test", "INSERT" ], [ "fna_v3_test", "UPDATE" ], [ "fna_v3_test", "DELETE" ] ] } ], "environment": { "env": "staging", "db": "fna_v3_test", "article_count": 184, "category_count": 9, "latest": { "sSlug": "fn20261029", "sTitle": "「10月29日」2026年最新高速SSR/V2ray/Clash/Shadowrocket免费节点订阅链接" }, "tutorials": [ { "sSlug": "m169", "sTitle": "Clash Meta for Android 使用教程:导入订阅、选择节点与连接" }, { "sSlug": "m174", "sTitle": "Clash Verge Rev 使用教程:Linux 安装、订阅与代理设置" }, { "sSlug": "m173", "sTitle": "Clash Verge Rev 使用教程:Mac 安装、订阅与系统代理" }, { "sSlug": "m167", "sTitle": "从 Clash for Windows 迁移到 Clash Verge Rev" }, { "sSlug": "m172", "sTitle": "Mac 代理客户端下载指南:ClashX 与 Clash Verge Rev 怎么选" }, { "sSlug": "mihomo-dns-leak", "sTitle": "Clash 进阶:DNS 防泄漏配置与验证" }, { "sSlug": "m170", "sTitle": "Quantumult X 使用教程:iOS 安装、订阅导入与连接" }, { "sSlug": "system-proxy-vs-tun", "sTitle": "系统代理和 TUN 有什么区别?接管范围、使用选择与排错" }, { "sSlug": "m171", "sTitle": "v2rayNG 使用教程:Android 安装、导入订阅与连接" }, { "sSlug": "clash-verge-rev-windows", "sTitle": "Clash Verge Rev 使用教程:从安装到第一次连接(Windows)" } ], "private_table_count": 0, "user_rows": 0, "editorial_disabled": true }, "resource_clients": [ { "id": 1, "project": "fna-v3-import", "scopes": "[\"read\",\"write\",\"publish\",\"share\"]", "enabled": 0 }, { "id": 2, "project": "fna-v3", "scopes": "[\"read\",\"write\"]", "enabled": 0 }, { "id": 3, "project": "fna-v3", "scopes": "[\"read\"]", "enabled": 1 } ], "passed": true, "check_count": 292, "failed_count": 0, "asset_count": 55, "verified_at": "2026-10-29T11:15:36Z" }