1:"$Sreact.fragment"
2:I[5569,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"default"]
3:I[75669,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"default"]
f:I[92989,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"default",1]
:HL["/_next/static/chunks/2bw6kyjchnw2k.css","style"]
:HL["/_next/static/media/0c795a286deabae8-s.p.3vm0tq4e-zz_5.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/f06bf9da926bae75-s.p.2874ccu1_u7jf.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2bw6kyjchnw2k.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/05dk83pddu73w.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/18har9a9axxlo.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","data-scroll-behavior":"smooth","children":["$","body",null,{"className":"instrument_sans_d8350e3a-module__LA5v5G__variable syne_89eecdd9-module__ON88Zq__variable font-sans","children":["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"min-h-screen overflow-x-hidden bg-[#f7f5ee] text-[#0b1728]","children":[["$","a",null,{"href":"#content","className":"sr-only z-[100] rounded bg-[#b8f34a] px-4 py-2 font-semibold text-[#0b1728] focus:not-sr-only focus:fixed focus:left-4 focus:top-4","children":"Skip to content"}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"SoftwareApplication\",\"name\":\"IndexPilot\",\"applicationCategory\":\"DeveloperApplication\",\"operatingSystem\":\"Windows, macOS, Linux\",\"description\":\"Stop bad PostgreSQL indexes before production by checking proposed indexes against your real workload.\",\"codeRepository\":\"https://github.com/eyeinthesky6/indexpilot\",\"license\":\"https://opensource.org/license/mit\",\"softwareVersion\":\"1.1.0a6\",\"offers\":{\"@type\":\"Offer\",\"price\":\"0\",\"priceCurrency\":\"USD\"}}"}}],["$","div",null,{"className":"border-b border-[#0b1728]/10 bg-[#b8f34a] px-4 py-2 text-center font-mono text-[11px] font-semibold uppercase tracking-[0.16em] text-[#0b1728] sm:text-xs","children":"v1.1.0 alpha · advisory by design · never applies physical DDL"}],["$","header",null,{"className":"sticky top-0 z-50 border-b border-[#0b1728]/10 bg-[#f7f5ee]/90 backdrop-blur-xl","children":["$","div",null,{"className":"mx-auto flex min-h-[4.5rem] max-w-7xl items-center justify-between px-5 py-3 sm:px-8 lg:px-10","children":[["$","a",null,{"href":"#top","className":"group flex items-center gap-3","aria-label":"IndexPilot home","children":[["$","svg",null,{"viewBox":"0 0 96 96","className":"h-10 w-10 transition-transform duration-300 group-hover:-rotate-3","aria-hidden":true,"role":"$undefined","aria-label":"$undefined","children":[["$","rect",null,{"width":"96","height":"96","rx":"22","fill":"#0b1728"}],["$","path",null,{"fill":"#f7f5ee","d":"M19 17h29v13H33v36h15v13H19V17Zm58 0H48v13h15v36H48v13h29V17Z"}],["$","path",null,{"fill":"#b8f34a","d":"M37 39h20l7 7v13H37V39Z"}]]}],["$","span",null,{"className":"font-display text-xl font-bold tracking-[-0.04em]","children":"IndexPilot"}]]}],["$","nav",null,{"className":"hidden items-center gap-7 text-sm font-semibold md:flex","aria-label":"Main navigation","children":["$L4","$L5","$L6","$L7","$L8"]}],"$L9"]}]}],"$La","$Lb"]}],["$Lc"],"$Ld"]}],{},null,false,null]},null,false,null],"$Le",false]],"m":"$undefined","G":["$f",["$L10"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"EqUjFbeEu2GGU5Aqk3_aw"}
20:I[44969,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"OutletBoundary"]
21:"$Sreact.suspense"
23:I[44969,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"ViewportBoundary"]
25:I[44969,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"MetadataBoundary"]
:HL["https://static.pepy.tech/badge/indexpilot/month","image"]
:HL["https://img.shields.io/github/stars/eyeinthesky6/indexpilot?logo=github&label=stars","image"]
:HL["https://img.shields.io/github/forks/eyeinthesky6/indexpilot?logo=github&label=forks","image"]
:HL["https://github.com/eyeinthesky6/indexpilot/actions/workflows/team-preview-rollup.yml/badge.svg","image"]
4:["$","a",null,{"href":"#why","className":"transition-colors hover:text-[#456b00]","children":"Why it exists"}]
5:["$","a",null,{"href":"#how","className":"transition-colors hover:text-[#456b00]","children":"Evidence path"}]
6:["$","a",null,{"href":"#verdicts","className":"transition-colors hover:text-[#456b00]","children":"Verdicts"}]
7:["$","a",null,{"href":"#team-preview","className":"transition-colors hover:text-[#456b00]","children":"Team preview"}]
8:["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/USAGE.md","className":"transition-colors hover:text-[#456b00]","children":"Docs"}]
9:["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot","target":"_blank","rel":"noreferrer","className":"inline-flex items-center gap-2 rounded-full border border-[#0b1728] px-4 py-2 text-sm font-bold transition-colors hover:bg-[#0b1728] hover:text-[#f7f5ee]","children":[["$","svg",null,{"aria-hidden":true,"fill":"currentColor","viewBox":"0 0 16 16","xmlns":"http://www.w3.org/2000/svg","className":"h-4 w-4","children":["$","path",null,{"d":"M8 0C3.58 0 0 3.64 0 8.13c0 3.59 2.29 6.64 5.47 7.71.4.08.55-.18.55-.39 0-.2-.01-.84-.01-1.53-2.01.38-2.53-.5-2.69-.96-.09-.23-.48-.96-.82-1.16-.28-.15-.68-.53-.01-.54.63-.01 1.08.59 1.23.83.72 1.23 1.87.88 2.33.67.07-.53.28-.88.51-1.08-1.78-.21-3.64-.9-3.64-4.01 0-.89.31-1.62.82-2.19-.08-.2-.36-1.04.08-2.16 0 0 .67-.22 2.2.84A7.5 7.5 0 0 1 8 3.89c.68 0 1.36.09 2 .27 1.53-1.06 2.2-.84 2.2-.84.44 1.12.16 1.96.08 2.16.51.57.82 1.3.82 2.19 0 3.12-1.87 3.8-3.65 4.01.29.25.54.73.54 1.49 0 1.08-.01 1.95-.01 2.22 0 .21.15.47.55.39A8.14 8.14 0 0 0 16 8.13C16 3.64 12.42 0 8 0Z"}]}],["$","span",null,{"className":"hidden sm:inline","children":"GitHub"}]]}]
a:["$","main",null,{"id":"content","children":[["$","section",null,{"id":"top","className":"relative isolate overflow-hidden bg-[#0b1728] text-[#f7f5ee]","children":[["$","div",null,{"className":"site-grid pointer-events-none absolute inset-0 opacity-20"}],["$","div",null,{"className":"hero-glow pointer-events-none absolute inset-0"}],["$","div",null,{"className":"relative mx-auto max-w-7xl px-5 pt-6 sm:px-8 sm:pt-8 lg:px-10","children":["$","div",null,{"aria-label":"Live project activity","children":[["$","p",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#8fa0b4]","children":"Live project activity"}],["$","div",null,{"className":"mt-2 flex flex-wrap gap-2","children":[["$","a","PyPI downloads per month",{"href":"https://pepy.tech/projects/indexpilot","aria-label":"PyPI downloads per month: open source","className":"inline-flex items-center rounded-lg border border-white/15 bg-white/[0.07] px-1.5 py-1 leading-none shadow-sm transition hover:border-[#b8f34a]/55 hover:bg-white/[0.11] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#b8f34a]","children":["$","img",null,{"src":"https://static.pepy.tech/badge/indexpilot/month","alt":"PyPI downloads per month","className":"h-[22px] w-auto sm:h-6","loading":"eager"}]}],["$","a","GitHub stars",{"href":"https://github.com/eyeinthesky6/indexpilot","aria-label":"GitHub stars: open source","className":"inline-flex items-center rounded-lg border border-white/15 bg-white/[0.07] px-1.5 py-1 leading-none shadow-sm transition hover:border-[#b8f34a]/55 hover:bg-white/[0.11] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#b8f34a]","children":["$","img",null,{"src":"https://img.shields.io/github/stars/eyeinthesky6/indexpilot?logo=github&label=stars","alt":"GitHub stars","className":"h-[22px] w-auto sm:h-6","loading":"eager"}]}],["$","a","GitHub forks",{"href":"https://github.com/eyeinthesky6/indexpilot/forks","aria-label":"GitHub forks: open source","className":"inline-flex items-center rounded-lg border border-white/15 bg-white/[0.07] px-1.5 py-1 leading-none shadow-sm transition hover:border-[#b8f34a]/55 hover:bg-white/[0.11] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#b8f34a]","children":["$","img",null,{"src":"https://img.shields.io/github/forks/eyeinthesky6/indexpilot?logo=github&label=forks","alt":"GitHub forks","className":"h-[22px] w-auto sm:h-6","loading":"eager"}]}],["$","a","Team response rollup status",{"href":"https://github.com/eyeinthesky6/indexpilot/actions/workflows/team-preview-rollup.yml","aria-label":"Team response rollup status: open source","className":"inline-flex items-center rounded-lg border border-white/15 bg-white/[0.07] px-1.5 py-1 leading-none shadow-sm transition hover:border-[#b8f34a]/55 hover:bg-white/[0.11] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-[#b8f34a]","children":["$","img",null,{"src":"https://github.com/eyeinthesky6/indexpilot/actions/workflows/team-preview-rollup.yml/badge.svg","alt":"Team response rollup status","className":"h-[22px] w-auto sm:h-6","loading":"eager"}]}]]}]]}]}],["$","div",null,{"className":"relative mx-auto grid max-w-7xl gap-14 px-5 pb-20 pt-12 sm:px-8 sm:pb-28 sm:pt-14 lg:grid-cols-[1.08fr_0.92fr] lg:items-center lg:px-10 lg:pb-32 lg:pt-16","children":[["$","div",null,{"children":[["$","div",null,{"className":"mb-7 inline-flex items-center gap-2 rounded-full border border-[#b8f34a]/35 bg-[#b8f34a]/10 px-3 py-1.5 font-mono text-xs uppercase tracking-[0.14em] text-[#b8f34a]","children":["$L11","PostgreSQL index review for migration PRs"]}],"$L12","$L13","$L14","$L15"]}],"$L16"]}]]}],"$L17","$L18","$L19","$L1a","$L1b","$L1c","$L1d","$L1e","$L1f"]}]
b:["$","footer",null,{"className":"bg-[#07101d] text-[#aeb9c7]","children":["$","div",null,{"className":"mx-auto flex max-w-7xl flex-col gap-8 px-5 py-10 sm:px-8 md:flex-row md:items-center md:justify-between lg:px-10","children":[["$","div",null,{"className":"flex items-center gap-3","children":[["$","svg",null,{"viewBox":"0 0 96 96","className":"h-9 w-9","aria-hidden":true,"role":"$undefined","aria-label":"$undefined","children":[["$","rect",null,{"width":"96","height":"96","rx":"22","fill":"#0b1728"}],["$","path",null,{"fill":"#f7f5ee","d":"M19 17h29v13H33v36h15v13H19V17Zm58 0H48v13h15v36H48v13h29V17Z"}],["$","path",null,{"fill":"#b8f34a","d":"M37 39h20l7 7v13H37V39Z"}]]}],["$","div",null,{"children":[["$","p",null,{"className":"font-display font-bold text-[#f7f5ee]","children":"IndexPilot"}],["$","p",null,{"className":"text-sm","children":"Built in the open under the MIT License."}]]}]]}],["$","nav",null,{"className":"flex flex-wrap gap-x-6 gap-y-3 text-sm","aria-label":"Footer navigation","children":[["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/USAGE.md","className":"hover:text-[#f7f5ee]","children":"Docs"}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/SECURITY.md","className":"hover:text-[#f7f5ee]","children":"Security"}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/CONTRIBUTING.md","className":"hover:text-[#f7f5ee]","children":"Contributing"}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/TEAM_PREVIEW.md","className":"hover:text-[#f7f5ee]","children":"Team preview"}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/discussions/categories/q-a","className":"hover:text-[#f7f5ee]","children":"Help"}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/issues","className":"hover:text-[#f7f5ee]","children":"Issues"}]]}]]}]}]
c:["$","script","script-0",{"src":"/_next/static/chunks/18panc4k51dyj.js","async":true,"nonce":"$undefined"}]
d:["$","$L20",null,{"children":["$","$21",null,{"name":"Next.MetadataOutlet","children":"$@22"}]}]
e:["$","$1","h",{"children":[null,["$","$L23",null,{"children":"$L24"}],["$","div",null,{"hidden":true,"children":["$","$L25",null,{"children":["$","$21",null,{"name":"Next.Metadata","children":"$L26"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}]
10:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/2bw6kyjchnw2k.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]
27:I[71341,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js","/_next/static/chunks/18panc4k51dyj.js"],"default"]
11:["$","$L27",null,{"ref":"$undefined","iconNode":[["circle",{"cx":"18","cy":"18","r":"3","key":"1xkwt0"}],["circle",{"cx":"6","cy":"6","r":"3","key":"1lh9wr"}],["path",{"d":"M13 6h3a2 2 0 0 1 2 2v7","key":"1yeb86"}],["line",{"x1":"6","x2":"6","y1":"9","y2":"21","key":"rroup"}]],"className":"lucide-git-pull-request h-3.5 w-3.5"}]
12:["$","h1",null,{"className":"max-w-4xl font-display text-5xl font-bold leading-[0.94] tracking-[-0.055em] sm:text-6xl lg:text-[5rem]","children":["Stop bad PostgreSQL indexes"," ",["$","span",null,{"className":"text-[#b8f34a]","children":"before production."}]]}]
13:["$","p",null,{"className":"mt-7 max-w-2xl text-lg leading-8 text-[#cbd4df] sm:text-xl","children":["IndexPilot checks the exact ",["$","code",null,{"className":"text-[#f7f5ee]","children":"CREATE INDEX"}]," in your migration against observed workload, comparable indexes, and optional hypothetical plans. It then leaves a review artifact your team can inspect."]}]
14:["$","div",null,{"className":"mt-9 flex flex-col gap-3 sm:flex-row","children":[["$","a",null,{"href":"#quickstart","className":"inline-flex items-center justify-center gap-2 rounded-full bg-[#b8f34a] px-6 py-3.5 text-sm font-bold text-[#0b1728] transition-transform hover:-translate-y-0.5","children":["Review your first migration",["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M5 12h14","key":"1ays0h"}],["path",{"d":"m12 5 7 7-7 7","key":"xquz4c"}]],"className":"lucide-arrow-right h-4 w-4"}]]}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot","target":"_blank","rel":"noreferrer","className":"inline-flex items-center justify-center gap-2 rounded-full border border-[#f7f5ee]/25 px-6 py-3.5 text-sm font-bold transition-colors hover:border-[#f7f5ee]/60 hover:bg-white/5","children":["Read the source",["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M7 7h10v10","key":"1tivn9"}],["path",{"d":"M7 17 17 7","key":"1vkiza"}]],"className":"lucide-arrow-up-right h-4 w-4"}]]}]]}]
15:["$","ul",null,{"className":"mt-9 flex flex-wrap gap-x-6 gap-y-3 text-sm text-[#aeb9c7]","aria-label":"Project facts","children":[["$","li","Read-only evidence path",{"className":"flex items-center gap-2","children":[["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M20 6 9 17l-5-5","key":"1gmf2c"}]],"className":"lucide-check h-4 w-4 text-[#b8f34a]"}],"Read-only evidence path"]}],["$","li","JSON · Markdown · SARIF",{"className":"flex items-center gap-2","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check h-4 w-4 text-[#b8f34a]"}],"JSON · Markdown · SARIF"]}],["$","li","MIT licensed",{"className":"flex items-center gap-2","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check h-4 w-4 text-[#b8f34a]"}],"MIT licensed"]}]]}]
16:["$","div",null,{"className":"relative lg:pl-6","children":[["$","div",null,{"className":"absolute -inset-6 -z-10 rotate-2 rounded-[2rem] border border-[#b8f34a]/20 bg-[#b8f34a]/5"}],["$","div",null,{"className":"overflow-hidden rounded-2xl border border-white/15 bg-[#07101d] shadow-2xl shadow-black/40","children":[["$","div",null,{"className":"flex items-center justify-between border-b border-white/10 px-5 py-3","children":[["$","div",null,{"className":"flex gap-1.5","aria-hidden":"true","children":[["$","span",null,{"className":"h-2.5 w-2.5 rounded-full bg-[#ef6a6a]"}],["$","span",null,{"className":"h-2.5 w-2.5 rounded-full bg-[#efc56a]"}],["$","span",null,{"className":"h-2.5 w-2.5 rounded-full bg-[#b8f34a]"}]]}],["$","span",null,{"className":"font-mono text-[10px] uppercase tracking-[0.18em] text-[#738196]","children":"illustrative review receipt"}]]}],["$","div",null,{"className":"receipt-scan relative space-y-5 p-5 font-mono text-[12px] leading-6 sm:p-7 sm:text-[13px]","children":[["$","div",null,{"className":"text-[#7f91a6]","children":[["$","span",null,{"className":"text-[#b8f34a]","children":"$$"}]," indexpilot review \\",["$","br",null,{}],["$","span",null,{"className":"pl-4","children":"--migration-file migrations/add_orders_index.sql \\"}],["$","br",null,{}],["$","span",null,{"className":"pl-4","children":"--hypopg --sarif-output artifacts/indexpilot.sarif"}]]}],["$","div",null,{"className":"rounded-xl border border-white/10 bg-white/[0.035] p-4","children":[["$","p",null,{"className":"mb-3 text-[10px] uppercase tracking-[0.18em] text-[#738196]","children":"proposal 01"}],["$","p",null,{"className":"break-words text-[#dce3eb]","children":"public.orders (tenant_id, created_at)"}],["$","div",null,{"className":"my-4 h-px bg-white/10"}],["$","dl",null,{"className":"grid grid-cols-[auto_1fr] gap-x-4 gap-y-2","children":[["$","dt",null,{"className":"text-[#738196]","children":"workload"}],["$","dd",null,{"className":"text-right text-[#dce3eb]","children":"observed"}],["$","dt",null,{"className":"text-[#738196]","children":"overlap"}],["$","dd",null,{"className":"text-right text-[#dce3eb]","children":"none found"}],["$","dt",null,{"className":"text-[#738196]","children":"hypopg"}],["$","dd",null,{"className":"text-right text-[#dce3eb]","children":"selected"}]]}]]}],["$","div",null,{"className":"flex items-center justify-between gap-4 rounded-xl bg-[#b8f34a] px-4 py-3 text-[#0b1728]","children":[["$","span",null,{"className":"text-[10px] font-bold uppercase tracking-[0.18em]","children":"Verdict"}],["$","span",null,{"className":"font-bold","children":"worth_benchmarking"}]]}],["$","p",null,{"className":"text-[11px] text-[#738196]","children":"Advisory only. Planner cost is not production latency."}]]}]]}]]}]
17:["$","section",null,{"className":"border-b border-[#0b1728]/10 bg-[#f7f5ee]","children":["$","div",null,{"className":"mx-auto max-w-7xl px-5 py-20 sm:px-8 sm:py-24 lg:px-10","children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#527408]","children":"Start with your problem"}],["$","h2",null,{"className":"mt-4 max-w-3xl font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"What are you trying to decide?"}],["$","div",null,{"className":"mt-10 grid gap-4 md:grid-cols-2 lg:grid-cols-3","children":[["$","a","should-i-add-this-postgres-index",{"href":"https://eyeinthesky6.github.io/indexpilot/use-cases/should-i-add-this-postgres-index/","className":"group rounded-2xl border border-[#0b1728]/15 bg-white p-6 transition-transform hover:-translate-y-1","children":[["$","h3",null,{"className":"font-display text-xl font-bold","children":"Should I add this PostgreSQL index?"}],["$","p",null,{"className":"mt-3 text-sm leading-6 text-[#536070]","children":"Check whether a proposed PostgreSQL index is supported by the queries your database actually runs before merging it."}],["$","span",null,{"className":"mt-5 inline-flex items-center gap-2 text-sm font-bold text-[#456b00]","children":["See the decision path ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right h-4 w-4 transition-transform group-hover:translate-x-1"}]]}]]}],["$","a","postgres-index-not-used",{"href":"https://eyeinthesky6.github.io/indexpilot/use-cases/postgres-index-not-used/","className":"group rounded-2xl border border-[#0b1728]/15 bg-white p-6 transition-transform hover:-translate-y-1","children":[["$","h3",null,{"className":"font-display text-xl font-bold","children":"Why is PostgreSQL not using my index?"}],["$","p",null,{"className":"mt-3 text-sm leading-6 text-[#536070]","children":"Test whether PostgreSQL selects a proposed index for representative query shapes before keeping it as production overhead."}],["$","span",null,{"className":"mt-5 inline-flex items-center gap-2 text-sm font-bold text-[#456b00]","children":["See the decision path ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right h-4 w-4 transition-transform group-hover:translate-x-1"}]]}]]}],["$","a","duplicate-postgres-index",{"href":"https://eyeinthesky6.github.io/indexpilot/use-cases/duplicate-postgres-index/","className":"group rounded-2xl border border-[#0b1728]/15 bg-white p-6 transition-transform hover:-translate-y-1","children":[["$","h3",null,{"className":"font-display text-xl font-bold","children":"Does this migration add a duplicate PostgreSQL index?"}],["$","p",null,{"className":"mt-3 text-sm leading-6 text-[#536070]","children":"Find leading-prefix overlap between a proposed B-tree index and indexes already present in PostgreSQL."}],["$","span",null,{"className":"mt-5 inline-flex items-center gap-2 text-sm font-bold text-[#456b00]","children":["See the decision path ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right h-4 w-4 transition-transform group-hover:translate-x-1"}]]}]]}],["$","a","test-postgres-index-before-creating",{"href":"https://eyeinthesky6.github.io/indexpilot/use-cases/test-postgres-index-before-creating/","className":"group rounded-2xl border border-[#0b1728]/15 bg-white p-6 transition-transform hover:-translate-y-1","children":[["$","h3",null,{"className":"font-display text-xl font-bold","children":"Test a PostgreSQL index before creating it"}],["$","p",null,{"className":"mt-3 text-sm leading-6 text-[#536070]","children":"Use HypoPG and real workload evidence to evaluate a proposed PostgreSQL index without creating physical DDL."}],["$","span",null,{"className":"mt-5 inline-flex items-center gap-2 text-sm font-bold text-[#456b00]","children":["See the decision path ","$L28"]}]]}],"$L29"]}]]}]}]
18:["$","section",null,{"id":"why","className":"border-b border-[#0b1728]/10","children":["$","div",null,{"className":"mx-auto max-w-7xl px-5 py-20 sm:px-8 sm:py-28 lg:px-10","children":[["$","div",null,{"className":"grid gap-10 lg:grid-cols-[0.8fr_1.2fr] lg:items-end","children":[["$","div",null,{"children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#527408]","children":"The missing decision layer"}],["$","h2",null,{"className":"mt-4 font-display text-4xl font-bold leading-tight tracking-[-0.045em] sm:text-5xl","children":"An index is cheap to propose. It is expensive to keep."}]]}],["$","p",null,{"className":"max-w-2xl text-lg leading-8 text-[#536070] lg:justify-self-end","children":"Every accepted index adds write work, storage, cache pressure, backup weight, and maintenance. Migration linters check whether DDL is safe to run. Advisers suggest possible indexes. IndexPilot asks the in-between question: does this exact proposal have enough evidence to deserve a real benchmark?"}]]}],["$","div",null,{"className":"mt-14 grid overflow-hidden rounded-3xl border border-[#0b1728]/15 bg-white md:grid-cols-3","children":[["$","article","01 / Proposal",{"className":"p-7 sm:p-9 border-b border-[#0b1728]/10 md:border-b-0 md:border-r","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","span",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#6b7582]","children":"01 / Proposal"}],["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M4 12.15V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2h-3.35","key":"1wthlu"}],["path",{"d":"M14 2v5a1 1 0 0 0 1 1h5","key":"wfsgrz"}],["path",{"d":"m5 16-3 3 3 3","key":"331omg"}],["path",{"d":"m9 22 3-3-3-3","key":"lsp7cz"}]],"className":"lucide-file-code-corner h-5 w-5 text-[#527408]"}]]}],["$","h3",null,{"className":"mt-9 font-display text-2xl font-bold tracking-[-0.035em]","children":"Review the migration"}],["$","p",null,{"className":"mt-3 leading-7 text-[#5a6572]","children":"Parse the supplied PostgreSQL CREATE INDEX locally. Unsupported shapes fail clearly instead of being approximated."}]]}],["$","article","02 / Evidence",{"className":"p-7 sm:p-9 border-b border-[#0b1728]/10 md:border-b-0 md:border-r","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","span",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#6b7582]","children":"02 / Evidence"}],["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M3 7V5a2 2 0 0 1 2-2h2","key":"aa7l1z"}],["path",{"d":"M17 3h2a2 2 0 0 1 2 2v2","key":"4qcy5o"}],["path",{"d":"M21 17v2a2 2 0 0 1-2 2h-2","key":"6vwrx8"}],["path",{"d":"M7 21H5a2 2 0 0 1-2-2v-2","key":"ioqczr"}],["circle",{"cx":"12","cy":"12","r":"3","key":"1v7zrd"}],["path",{"d":"m16 16-1.9-1.9","key":"1dq9hf"}]],"className":"lucide-scan-search h-5 w-5 text-[#527408]"}]]}],["$","h3",null,{"className":"mt-9 font-display text-2xl font-bold tracking-[-0.035em]","children":"Interrogate reality"}],["$","p",null,{"className":"mt-3 leading-7 text-[#5a6572]","children":"Read pg_stat_statements, catalog overlap, and optional session-local HypoPG plans in a read-only transaction."}]]}],["$","article","03 / Record",{"className":"p-7 sm:p-9 ","children":[["$","div",null,{"className":"flex items-center justify-between","children":[["$","span",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#6b7582]","children":"03 / Record"}],["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M12 19h8","key":"baeox8"}],["path",{"d":"m4 17 6-6-6-6","key":"1yngyt"}]],"className":"lucide-terminal h-5 w-5 text-[#527408]"}]]}],["$","h3",null,{"className":"mt-9 font-display text-2xl font-bold tracking-[-0.035em]","children":"Leave a decision trail"}],["$","p",null,{"className":"mt-3 leading-7 text-[#5a6572]","children":"Write stable JSON, human-readable Markdown, and SARIF that can meet a reviewer in the pull request."}]]}]]}],"$L2a"]}]}]
19:["$","section",null,{"id":"how","className":"bg-white","children":["$","div",null,{"className":"mx-auto max-w-7xl px-5 py-20 sm:px-8 sm:py-28 lg:px-10","children":[["$","div",null,{"className":"max-w-3xl","children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#527408]","children":"Evidence in. A cautious next step out."}],["$","h2",null,{"className":"mt-4 font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"No autopilot. No mystery score."}]]}],["$","div",null,{"className":"mt-14 grid gap-5 lg:grid-cols-[1fr_auto_1fr_auto_1fr] lg:items-stretch","children":[["$","div","Observed workload",{"className":"contents","children":[["$","article",null,{"className":"rounded-3xl border border-[#0b1728]/10 bg-[#f7f5ee] p-7 sm:p-9","children":[["$","span",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#527408]","children":"Observed workload"}],["$","h3",null,{"className":"mt-5 font-display text-2xl font-bold tracking-[-0.035em]","children":"What your database actually runs"}],["$","p",null,{"className":"mt-3 leading-7 text-[#5a6572]","children":"Aggregated pg_stat_statements become query fingerprints. Raw workload SQL is not written to the report."}]]}],["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right mx-auto hidden h-5 w-5 self-center text-[#87a348] lg:block"}]]}],["$","div","Catalog + HypoPG",{"className":"contents","children":[["$","article",null,{"className":"rounded-3xl border border-[#0b1728]/10 bg-[#f7f5ee] p-7 sm:p-9","children":[["$","span",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#527408]","children":"Catalog + HypoPG"}],["$","h3",null,{"className":"mt-5 font-display text-2xl font-bold tracking-[-0.035em]","children":"What exists and what might change"}],["$","p",null,{"className":"mt-3 leading-7 text-[#5a6572]","children":"Compare valid B-trees, then optionally ask whether PostgreSQL selects the exact hypothetical shape with EXPLAIN instead of ANALYZE."}]]}],["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right mx-auto hidden h-5 w-5 self-center text-[#87a348] lg:block"}]]}],["$","div","Portable evidence",{"className":"contents","children":[["$","article",null,{"className":"rounded-3xl border border-[#0b1728]/10 bg-[#f7f5ee] p-7 sm:p-9","children":[["$","span",null,{"className":"font-mono text-[11px] font-bold uppercase tracking-[0.18em] text-[#527408]","children":"Portable evidence"}],["$","h3",null,{"className":"mt-5 font-display text-2xl font-bold tracking-[-0.035em]","children":"What a human should do next"}],["$","p",null,{"className":"mt-3 leading-7 text-[#5a6572]","children":"Receive one bounded verdict, its limitations, and a practical next step. Positive means benchmark it, never ship it blindly."}]]}],null]}]]}]]}]}]
1a:["$","section",null,{"id":"quickstart","className":"bg-[#dfe9cc]","children":["$","div",null,{"className":"mx-auto grid max-w-7xl gap-12 px-5 py-20 sm:px-8 sm:py-24 lg:grid-cols-[0.82fr_1.18fr] lg:items-center lg:px-10","children":[["$","div",null,{"children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#456100]","children":"Quick start"}],["$","h2",null,{"className":"mt-4 font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"One CLI. Your migration. A read-only role."}],["$","p",null,{"className":"mt-5 max-w-xl text-lg leading-8 text-[#435043]","children":"Install the current alpha directly from PyPI. The core CLI does not need the dashboard, API, Docker, or ML extras."}],["$","div",null,{"className":"mt-7 flex flex-wrap gap-3","children":[["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/INSTALLATION.md","className":"inline-flex items-center gap-2 font-bold underline decoration-2 underline-offset-4","children":["Installation guide ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/releases/tag/v1.1.0a6","className":"inline-flex items-center gap-2 font-bold underline decoration-2 underline-offset-4","children":["Release notes ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}]]}],["$","p",null,{"className":"mt-7 border-l-2 border-[#456100] pl-4 text-sm leading-6 text-[#435043]","children":"Alpha boundary: plain-column, non-unique, ascending B-trees. HypoPG review plans one representative query per candidate; it is not a full workload regression test."}]]}],["$","div",null,{"className":"overflow-hidden rounded-2xl border border-[#0b1728]/20 bg-[#0b1728] text-[#dce3eb] shadow-xl shadow-[#456100]/10","children":[["$","div",null,{"className":"flex items-center justify-between border-b border-white/10 px-5 py-3 font-mono text-[10px] uppercase tracking-[0.18em] text-[#8090a3]","children":[["$","span",null,{"children":"shell"}],["$","span",null,{"children":"Python 3.10+"}]]}],["$","pre",null,{"className":"overflow-x-auto p-5 font-mono text-[12px] leading-7 sm:p-7 sm:text-[13px]","children":["$","code",null,{"children":[["$","span",null,{"className":"text-[#b8f34a]","children":"$$"}]," ","pipx install \"indexpilot==1.1.0a6\"","\n\n",["$","span",null,{"className":"text-[#b8f34a]","children":"$$"}]," ","indexpilot doctor --schema public --min-calls 10","\n\n",["$","span",null,{"className":"text-[#b8f34a]","children":"$$"}]," ","indexpilot review \\","\n","  ","--migration-file migrations/add_orders_index.sql \\","\n","  ","--hypopg \\","\n","  ","--markdown-output artifacts/indexpilot.md \\","\n","  ","--sarif-output artifacts/indexpilot.sarif"]}]}]]}]]}]}]
1b:["$","section",null,{"id":"verdicts","className":"border-b border-[#0b1728]/10 bg-[#f7f5ee]","children":["$","div",null,{"className":"mx-auto max-w-7xl px-5 py-20 sm:px-8 sm:py-28 lg:px-10","children":[["$","div",null,{"className":"flex flex-col gap-6 lg:flex-row lg:items-end lg:justify-between","children":[["$","div",null,{"className":"max-w-3xl","children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#527408]","children":"Four bounded verdicts"}],["$","h2",null,{"className":"mt-4 font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"Designed to slow down the wrong certainty."}]]}],["$","p",null,{"className":"max-w-md leading-7 text-[#5a6572]","children":["A completed review can be useful even when the answer is “not enough evidence.” Teams can opt into CI failure with repeatable ",["$","code",null,{"children":"--fail-on"}]," flags."]}]]}],["$","div",null,{"className":"mt-14 grid gap-4 md:grid-cols-2","children":[["$","article","worth_benchmarking",{"className":"rounded-3xl border border-[#0b1728]/10 bg-white p-6 sm:p-8","children":[["$","span",null,{"className":"inline-flex max-w-full break-all rounded-2xl px-3 py-1.5 text-left font-mono text-[11px] font-bold leading-5 bg-[#b8f34a] text-[#0b1728]","children":"worth_benchmarking"}],["$","p",null,{"className":"mt-6 text-lg font-semibold leading-7","children":"The exact hypothetical shape was selected and cleared the advisory planner threshold."}],["$","p",null,{"className":"mt-3 leading-7 text-[#65707d]","children":[["$","span",null,{"className":"font-semibold text-[#0b1728]","children":"Next:"}]," ","Benchmark latency, writes, size, build time, and rollback on a production copy."]}]]}],["$","article","existing_overlap",{"className":"rounded-3xl border border-[#0b1728]/10 bg-white p-6 sm:p-8","children":[["$","span",null,{"className":"inline-flex max-w-full break-all rounded-2xl px-3 py-1.5 text-left font-mono text-[11px] font-bold leading-5 bg-[#d9e7f5] text-[#0b1728]","children":"existing_overlap"}],["$","p",null,{"className":"mt-6 text-lg font-semibold leading-7","children":"A comparable existing B-tree already covers the proposal's leading prefix."}],["$","p",null,{"className":"mt-3 leading-7 text-[#65707d]","children":[["$","span",null,{"className":"font-semibold text-[#0b1728]","children":"Next:"}]," ","Inspect both shapes. This is review evidence, never automatic drop advice."]}]]}],["$","article","not_supported_by_current_planner_evidence",{"className":"rounded-3xl border border-[#0b1728]/10 bg-white p-6 sm:p-8","children":[["$","span",null,{"className":"inline-flex max-w-full break-all rounded-2xl px-3 py-1.5 text-left font-mono text-[11px] font-bold leading-5 bg-[#f3d5a8] text-[#0b1728]","children":"not_supported_by_current_planner_evidence"}],["$","p",null,{"className":"mt-6 text-lg font-semibold leading-7","children":"The planner did not select the exact shape or its improvement stayed below threshold."}],["$","p",null,{"className":"mt-3 leading-7 text-[#65707d]","children":[["$","span",null,{"className":"font-semibold text-[#0b1728]","children":"Next:"}]," ","Inspect the plan or test another shape. Do not infer that the index is harmful."]}]]}],["$","article","inconclusive",{"className":"rounded-3xl border border-[#0b1728]/10 bg-white p-6 sm:p-8","children":[["$","span",null,{"className":"inline-flex max-w-full break-all rounded-2xl px-3 py-1.5 text-left font-mono text-[11px] font-bold leading-5 bg-[#e8e5de] text-[#0b1728]","children":"inconclusive"}],["$","p",null,{"className":"mt-6 text-lg font-semibold leading-7","children":"Workload, permissions, or planner evidence was missing or insufficient."}],["$","p",null,{"className":"mt-3 leading-7 text-[#65707d]","children":[["$","span",null,{"className":"font-semibold text-[#0b1728]","children":"Next:"}]," ","Collect representative traffic or repair evidence access before deciding."]}]]}]]}]]}]}]
1c:["$","section",null,{"className":"bg-white","children":["$","div",null,{"className":"mx-auto max-w-7xl px-5 py-20 sm:px-8 sm:py-28 lg:px-10","children":["$","div",null,{"className":"grid gap-12 lg:grid-cols-[0.72fr_1.28fr]","children":[["$","div",null,{"children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#527408]","children":"Where it fits"}],["$","h2",null,{"className":"mt-4 font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"A narrow wedge, on purpose."}],["$","p",null,{"className":"mt-5 leading-7 text-[#5a6572]","children":"IndexPilot complements mature migration linters, index advisers, and database monitoring. It owns the review checkpoint for an index somebody already wants to merge."}]]}],["$","div",null,{"className":"overflow-hidden rounded-3xl border border-[#0b1728]/15","children":[["$","div",null,{"className":"grid grid-cols-[0.78fr_1.22fr] border-b border-[#0b1728]/10 bg-[#f7f5ee] px-5 py-4 font-mono text-[10px] font-bold uppercase tracking-[0.16em] text-[#65707d] sm:px-7","children":[["$","span",null,{"children":"Tool category"}],["$","span",null,{"children":"The question it answers"}]]}],[["$","div","Migration linter",{"className":"grid grid-cols-[0.78fr_1.22fr] gap-5 px-5 py-5 sm:px-7 border-b border-[#0b1728]/10","children":[["$","span",null,{"className":"font-bold","children":"Migration linter"}],["$","span",null,{"className":"text-[#5a6572]","children":"Is this DDL operationally safe to run?"}]]}],["$","div","Index adviser",{"className":"grid grid-cols-[0.78fr_1.22fr] gap-5 px-5 py-5 sm:px-7 border-b border-[#0b1728]/10","children":[["$","span",null,{"className":"font-bold","children":"Index adviser"}],["$","span",null,{"className":"text-[#5a6572]","children":"What indexes might improve this workload?"}]]}],["$","div","IndexPilot",{"className":"grid grid-cols-[0.78fr_1.22fr] gap-5 px-5 py-5 sm:px-7 bg-[#b8f34a]","children":[["$","span",null,{"className":"font-bold","children":"IndexPilot"}],["$","span",null,{"className":"font-semibold","children":"Does this exact migration index have enough evidence to benchmark?"}]]}]]]}]]}]}]}]
1d:["$","section",null,{"className":"bg-[#0b1728] text-[#f7f5ee]","children":["$","div",null,{"className":"mx-auto grid max-w-7xl gap-10 px-5 py-20 sm:px-8 sm:py-24 lg:grid-cols-[0.85fr_1.15fr] lg:items-center lg:px-10","children":[["$","div",null,{"children":[["$","$L27",null,{"ref":"$undefined","iconNode":[["path",{"d":"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z","key":"oel41y"}],["path",{"d":"m9 12 2 2 4-4","key":"dzmm74"}]],"className":"lucide-shield-check h-9 w-9 text-[#b8f34a]"}],["$","h2",null,{"className":"mt-6 font-display text-4xl font-bold tracking-[-0.045em]","children":"Read-only is a product boundary, not a footnote."}]]}],["$","ul",null,{"className":"grid gap-4 text-[#cad3de] sm:grid-cols-2","children":[["$","li","Never creates, drops, or reindexes a physical index",{"className":"flex gap-3 border-t border-white/10 pt-4","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check mt-0.5 h-4 w-4 shrink-0 text-[#b8f34a]"}],["$","span",null,{"children":"Never creates, drops, or reindexes a physical index"}]]}],["$","li","Parses migration SQL locally",{"className":"flex gap-3 border-t border-white/10 pt-4","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check mt-0.5 h-4 w-4 shrink-0 text-[#b8f34a]"}],["$","span",null,{"children":"Parses migration SQL locally"}]]}],["$","li","Uses EXPLAIN, never EXPLAIN ANALYZE",{"className":"flex gap-3 border-t border-white/10 pt-4","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check mt-0.5 h-4 w-4 shrink-0 text-[#b8f34a]"}],["$","span",null,{"children":"Uses EXPLAIN, never EXPLAIN ANALYZE"}]]}],["$","li","Resets session-local HypoPG state",{"className":"flex gap-3 border-t border-white/10 pt-4","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check mt-0.5 h-4 w-4 shrink-0 text-[#b8f34a]"}],["$","span",null,{"children":"Resets session-local HypoPG state"}]]}],["$","li","Excludes raw workload SQL from reports",{"className":"flex gap-3 border-t border-white/10 pt-4","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check mt-0.5 h-4 w-4 shrink-0 text-[#b8f34a]"}],["$","span",null,{"children":"Excludes raw workload SQL from reports"}]]}],["$","li","Rejects unsupported index shapes clearly",{"className":"flex gap-3 border-t border-white/10 pt-4","children":[["$","$L27",null,{"ref":"$undefined","iconNode":"$15:props:children:0:props:children:0:props:iconNode","className":"lucide-check mt-0.5 h-4 w-4 shrink-0 text-[#b8f34a]"}],["$","span",null,{"children":"Rejects unsupported index shapes clearly"}]]}]]}]]}]}]
1e:["$","section",null,{"id":"team-preview","className":"border-b border-[#0b1728]/10 bg-[#f7f5ee]","children":["$","div",null,{"className":"mx-auto max-w-7xl px-5 py-20 sm:px-8 sm:py-24 lg:px-10","children":["$","div",null,{"className":"grid gap-10 lg:grid-cols-[0.8fr_1.2fr] lg:items-start","children":[["$","div",null,{"children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#527408]","children":"Team workflow dipstick"}],["$","h2",null,{"className":"mt-4 font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"Tell us where repeated index review breaks."}],["$","p",null,{"className":"mt-5 text-lg leading-8 text-[#536070]","children":"The CLI and Action exist today. Shared policy, pull-request summaries, and retained team decisions are still a hypothesis. One public form now tests that gap with real, sanitized workflows."}],["$","div",null,{"className":"mt-7 flex flex-wrap gap-3","children":[["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/issues/new?template=team_workflow.yml","className":"inline-flex items-center gap-2 rounded-full bg-[#0b1728] px-5 py-3 text-sm font-bold text-[#f7f5ee]","children":["Share a team pain ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/TEAM_PREVIEW.md","className":"inline-flex items-center gap-2 rounded-full border border-[#0b1728] px-5 py-3 text-sm font-bold","children":["See the evidence gates ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}]]}]]}],["$","div",null,{"className":"overflow-hidden rounded-3xl border border-[#0b1728]/15 bg-white","children":[["$","div",null,{"className":"grid gap-px bg-[#0b1728]/10 sm:grid-cols-3","children":[["$","div","Current",{"className":"bg-white p-6","children":[["$","p",null,{"className":"font-mono text-[10px] font-bold uppercase tracking-[0.16em] text-[#6b7582]","children":"Current"}],["$","p",null,{"className":"mt-3 text-sm font-semibold leading-6","children":"Free advisory CLI and Action"}]]}],["$","div","Hypothesis",{"className":"bg-white p-6","children":[["$","p",null,{"className":"font-mono text-[10px] font-bold uppercase tracking-[0.16em] text-[#6b7582]","children":"Hypothesis"}],["$","p",null,{"className":"mt-3 text-sm font-semibold leading-6","children":"Repeatable team policy and decision history"}]]}],["$","div","Actual asks",{"className":"bg-white p-6","children":[["$","p",null,{"className":"font-mono text-[10px] font-bold uppercase tracking-[0.16em] text-[#6b7582]","children":"Actual asks"}],["$","p",null,{"className":"mt-3 text-sm font-semibold leading-6","children":"Aggregate fixed choices in the public rollup"}]]}]]}],["$","p",null,{"className":"p-6 text-xs leading-5 text-[#65707d] sm:p-8","children":"Follow live project activity, then tell us which repeated team pain should shape the next upgrade."}]]}]]}]}]}]
1f:["$","section",null,{"className":"bg-[#b8f34a] text-[#0b1728]","children":["$","div",null,{"className":"mx-auto flex max-w-7xl flex-col gap-8 px-5 py-16 sm:px-8 sm:py-20 lg:flex-row lg:items-center lg:justify-between lg:px-10","children":[["$","div",null,{"className":"max-w-3xl","children":[["$","p",null,{"className":"font-mono text-xs font-bold uppercase tracking-[0.2em]","children":"Open-source alpha"}],["$","h2",null,{"className":"mt-3 font-display text-4xl font-bold tracking-[-0.045em] sm:text-5xl","children":"Put one proposed index on trial."}]]}],["$","div",null,{"className":"flex flex-col gap-3 sm:flex-row","children":[["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/INSTALLATION.md","className":"inline-flex items-center justify-center gap-2 rounded-full bg-[#0b1728] px-6 py-3.5 text-sm font-bold text-[#f7f5ee]","children":["Get started ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right h-4 w-4"}]]}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/issues/new?template=team_workflow.yml","className":"inline-flex items-center justify-center gap-2 rounded-full border border-[#0b1728] px-6 py-3.5 text-sm font-bold","children":["Share a team pain ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}]]}]]}]}]
28:["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right h-4 w-4 transition-transform group-hover:translate-x-1"}]
29:["$","a","postgres-index-review-in-ci",{"href":"https://eyeinthesky6.github.io/indexpilot/use-cases/postgres-index-review-in-ci/","className":"group rounded-2xl border border-[#0b1728]/15 bg-white p-6 transition-transform hover:-translate-y-1","children":[["$","h3",null,{"className":"font-display text-xl font-bold","children":"Review PostgreSQL index migrations in CI"}],["$","p",null,{"className":"mt-3 text-sm leading-6 text-[#536070]","children":"Add a read-only evidence gate for CREATE INDEX migrations and retain review artifacts with each pull request."}],["$","span",null,{"className":"mt-5 inline-flex items-center gap-2 text-sm font-bold text-[#456b00]","children":["See the decision path ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:0:props:children:1:props:iconNode","className":"lucide-arrow-right h-4 w-4 transition-transform group-hover:translate-x-1"}]]}]]}]
2a:["$","div",null,{"className":"mt-10 grid overflow-hidden rounded-3xl bg-[#0b1728] text-[#f7f5ee] lg:grid-cols-[0.82fr_1.18fr]","children":[["$","div",null,{"className":"border-b border-white/10 p-7 sm:p-9 lg:border-b-0 lg:border-r","children":[["$","p",null,{"className":"font-mono text-xs font-semibold uppercase tracking-[0.2em] text-[#b8f34a]","children":"The origin"}],["$","h3",null,{"className":"mt-4 font-display text-3xl font-bold leading-tight tracking-[-0.04em] sm:text-4xl","children":"It started with DNA storage. A live database changed the question."}]]}],["$","div",null,{"className":"p-7 sm:p-9","children":[["$","p",null,{"className":"text-lg leading-8 text-[#cbd4df]","children":"DNA's information density inspired the first database-genome experiment. But synthesis and sequencing suit archival storage, not the millisecond path of an algorithmic-trading system. That system exposed a more immediate problem: a plausible index can still be the wrong tradeoff."}],["$","p",null,{"className":"mt-5 leading-7 text-[#aeb9c7]","children":"IndexPilot became the useful part of that experiment: a narrow, read-only review step for the exact index a team is considering. It does not store data in DNA."}],["$","div",null,{"className":"mt-7 flex flex-wrap gap-x-6 gap-y-3 text-sm font-bold","children":[["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/articles/01_DATABASE_DNA.md","className":"inline-flex items-center gap-2 text-[#b8f34a]","children":["Read the build story ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}],["$","a",null,{"href":"https://github.com/eyeinthesky6/indexpilot/blob/main/docs/ROADMAP.md","className":"inline-flex items-center gap-2 text-[#b8f34a]","children":["Read the evidence limits ",["$","$L27",null,{"ref":"$undefined","iconNode":"$14:props:children:1:props:children:1:props:iconNode","className":"lucide-arrow-up-right h-4 w-4"}]]}]]}]]}]]}]
24:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
2b:I[28453,["/_next/static/chunks/05dk83pddu73w.js","/_next/static/chunks/18har9a9axxlo.js"],"IconMark"]
22:null
26:[["$","title","0",{"children":"IndexPilot | Stop bad PostgreSQL indexes before production"}],["$","meta","1",{"name":"description","content":"Check proposed PostgreSQL indexes against your real workload before you merge them."}],["$","meta","2",{"name":"keywords","content":"PostgreSQL,database migrations,index review,HypoPG,pg_stat_statements,SARIF"}],["$","meta","3",{"name":"robots","content":"index, follow"}],["$","link","4",{"rel":"canonical","href":"https://eyeinthesky6.github.io/indexpilot/"}],["$","link","5",{"rel":"alternate","type":"text/plain","href":"https://eyeinthesky6.github.io/indexpilot/llms.txt"}],["$","meta","6",{"property":"og:title","content":"Stop bad PostgreSQL indexes before they reach production"}],["$","meta","7",{"property":"og:description","content":"An open-source evidence gate for the exact CREATE INDEX in your migration pull request."}],["$","meta","8",{"property":"og:url","content":"https://eyeinthesky6.github.io/indexpilot/"}],["$","meta","9",{"property":"og:site_name","content":"IndexPilot"}],["$","meta","10",{"property":"og:image","content":"https://eyeinthesky6.github.io/indexpilot/brand/indexpilot-social.png"}],["$","meta","11",{"property":"og:image:width","content":"1280"}],["$","meta","12",{"property":"og:image:height","content":"640"}],["$","meta","13",{"property":"og:image:alt","content":"IndexPilot reviewing a proposed PostgreSQL index before merge"}],["$","meta","14",{"property":"og:type","content":"website"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"IndexPilot | Stop bad PostgreSQL indexes before production"}],["$","meta","17",{"name":"twitter:description","content":"Check a proposed index against your real PostgreSQL workload before you merge it."}],["$","meta","18",{"name":"twitter:image","content":"https://eyeinthesky6.github.io/indexpilot/brand/indexpilot-social.png"}],["$","link","19",{"rel":"icon","href":"/icon.svg?icon.2e35fnhng8lze.svg","sizes":"any","type":"image/svg+xml"}],["$","$L2b","20",{}]]
