{"_id":"@alef-prime/deploy-verify","name":"@alef-prime/deploy-verify","dist-tags":{"alpha":"0.1.0-alpha.0","latest":"0.1.0-alpha.0"},"versions":{"0.1.0-alpha.0":{"name":"@alef-prime/deploy-verify","version":"0.1.0-alpha.0","description":"Probe a freshly-deployed site and confirm it actually serves the content you just pushed. The lesson learned the hard way at n50.io — push is not deploy — packaged as a 60-line CLI + library.","type":"module","main":"./lib/probe.mjs","exports":{".":"./lib/probe.mjs"},"bin":{"deploy-verify":"bin/verify.mjs"},"engines":{"node":">=20"},"keywords":["deploy","vercel","verify","post-deploy","fingerprint","health-check","alef-prime"],"homepage":"https://www.n50.io/evolution","repository":{"type":"git","url":"git+https://github.com/Ilya0527/alef-prime-deploy-verify.git"},"license":"MIT","author":{"name":"ALEF-PRIME","url":"Ilya Glikman"},"gitHead":"4c6e1d929dfe435d845ddae5c84c5bb2edc4daad","_id":"@alef-prime/deploy-verify@0.1.0-alpha.0","bugs":{"url":"https://github.com/Ilya0527/alef-prime-deploy-verify/issues"},"_nodeVersion":"24.15.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-YNpZ2VaFFISbstfW5ISi1PG6i9sTmQmTv2p4yUKBhIoU6KajOPO06wZbi957w7vKC0kAr5nN+dVVDVAzIY3hbA==","shasum":"1b21db9ed304216850f0f50d054b04432af612f9","tarball":"https://registry.npmjs.org/@alef-prime/deploy-verify/-/deploy-verify-0.1.0-alpha.0.tgz","fileCount":4,"unpackedSize":9069,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDZjo9XsFJi6JX6UR4ydWFRtoY3u25q7UNc+w5g5ZlBtwIhAN61qMfrLjRzxQPgd78orzKYp31jjOqnyMpCbUYukrrI"}]},"_npmUser":{"name":"n50","email":"ilya0527@gmail.com"},"directories":{},"maintainers":[{"name":"n50","email":"ilya0527@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/deploy-verify_0.1.0-alpha.0_1779107638750_0.6557309780666611"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-18T12:33:58.662Z","0.1.0-alpha.0":"2026-05-18T12:33:58.898Z","modified":"2026-05-18T12:33:59.099Z"},"maintainers":[{"name":"n50","email":"ilya0527@gmail.com"}],"description":"Probe a freshly-deployed site and confirm it actually serves the content you just pushed. The lesson learned the hard way at n50.io — push is not deploy — packaged as a 60-line CLI + library.","homepage":"https://www.n50.io/evolution","keywords":["deploy","vercel","verify","post-deploy","fingerprint","health-check","alef-prime"],"repository":{"type":"git","url":"git+https://github.com/Ilya0527/alef-prime-deploy-verify.git"},"author":{"name":"ALEF-PRIME","url":"Ilya Glikman"},"bugs":{"url":"https://github.com/Ilya0527/alef-prime-deploy-verify/issues"},"license":"MIT","readme":"# @alef-prime/deploy-verify\n\n> Push is not deploy.\n\nAfter `git push`, your code is on GitHub. After Vercel/Netlify/Cloudflare builds, your site is *probably* live. **Are you sure?** This package gives you an honest yes/no in 90 seconds.\n\n```bash\n# CLI\nnpx @alef-prime/deploy-verify https://your-site.com \\\n  --route /,Welcome,Header \\\n  --route /pricing,Pro,Free \\\n  --route /api/health,ok\n\n# Library\nimport { verify } from \"@alef-prime/deploy-verify\";\nconst r = await verify({\n  origin: \"https://your-site.com\",\n  routes: [\n    { path: \"/\", must: [\"Welcome\", \"Header\"] },\n    { path: \"/pricing\", must: [\"Pro\", \"Free\"] }\n  ],\n  latencyMs: 3000,\n  fetchChunks: 30,  // _next/static/chunks/*.js fetched to verify code-split content\n});\n// → { score: 100, verdict: \"green\", blocked: false, results: [...] }\n```\n\n## Why this exists\n\nIn May 2026, the operator of [n50.io](https://www.n50.io) shipped six rounds of `git push` and assumed each one was live. None of the agents verified the result on the actual deployed URL. The Hebrew Control Gateway, the strategic status banner, the dual-language hero — all \"successful\" by the commit log; none of them actually rendered until a Vercel build completed minutes later. The Chairman caught the lie. That round's penalty bit hard.\n\nThis package is the lesson, generalized: **after every deploy, fetch your live URL and confirm the strings you expect actually render.** Includes the linked `_next/static/chunks/*` to catch SSR-deferred content (the gotcha that almost burned us).\n\n## Verdict logic\n\n- Every route checked for: HTTP 200, content fingerprints all present, TTFB < `latencyMs`.\n- Score = `passing_routes / total * 100`.\n- `verdict: \"green\"` if score ≥ 90, `\"yellow\"` ≥ 60, `\"red\"` < 60.\n- CLI exits non-zero if `blocked: true` (score < 90) — wire it into your CI:\n\n```yaml\n# .github/workflows/deploy.yml\n- name: Verify\n  run: npx @alef-prime/deploy-verify https://your-site.com --config .deploy-verify.json\n```\n\n## What it does NOT do\n\n- It does NOT auto-rollback. If the verify fails, you decide.\n- It does NOT crawl the whole site. You declare the routes that matter.\n- It does NOT verify behavior — only that the strings you trusted to ship are visibly shipped.\n\n## Status: alpha · 0.1.0\n\nBorn from [ALEF-PRIME](https://www.n50.io)'s glass-box evolution. First child of `@alef-prime/audit`. See the parent loop close at [n50.io/evolution](https://www.n50.io/evolution).\n\n## License\n\nMIT.\n","readmeFilename":"README.md","_rev":"1-8fbc9cc38c01f79dddbc1bade832be58"}