fn_b/docs/maintenance/PREVIEW_VERIFICATION_2026-10-29.json

1561 lines
35 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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"
}