1:"$Sreact.fragment"
2:I[75473,["/_next/static/chunks/316a3a63422f35de.js"],"default"]
3:I[78515,["/_next/static/chunks/316a3a63422f35de.js"],"default"]
4:I[30687,["/_next/static/chunks/fd0661f1506dcbc6.js"],"Toaster"]
5:I[61076,["/_next/static/chunks/fd0661f1506dcbc6.js"],"Analytics"]
7:I[47913,["/_next/static/chunks/316a3a63422f35de.js"],"OutletBoundary"]
8:"$Sreact.suspense"
a:I[47913,["/_next/static/chunks/316a3a63422f35de.js"],"ViewportBoundary"]
c:I[47913,["/_next/static/chunks/316a3a63422f35de.js"],"MetadataBoundary"]
e:I[90849,["/_next/static/chunks/316a3a63422f35de.js"],"default"]
:HL["/_next/static/chunks/609ea7bc18d0d15f.css","style"]
:HL["/_next/static/chunks/93b606aa9fdccd13.css","style"]
:HL["/_next/static/media/797e433ab948586e-s.p.479bea2b.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
:HL["/_next/static/media/caa3a2e1cccd8315-s.p.3b6cae6d.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
0:{"P":null,"b":"TlpKRvbES4zzM7LeczAM7","c":["","blog","when-the-database-lies-the-kernel-doesnt"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","when-the-database-lies-the-kernel-doesnt","d"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/609ea7bc18d0d15f.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","link","1",{"rel":"stylesheet","href":"/_next/static/chunks/93b606aa9fdccd13.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/fd0661f1506dcbc6.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en","children":[["$","head",null,{"children":[["$","script",null,{"async":true,"src":"https://www.googletagmanager.com/gtag/js?id=AW-18009878040"}],["$","script",null,{"dangerouslySetInnerHTML":{"__html":"\n          window.dataLayer = window.dataLayer || [];\n          function gtag(){dataLayer.push(arguments);}\n          gtag('js', new Date());\n          gtag('config', 'AW-18009878040');\n          gtag('config', 'G-W3XKYXV2SG');\n\n          // Persist UTM and gclid params to sessionStorage for cross-page tracking\n          (function() {\n            var params = new URLSearchParams(window.location.search);\n            var keys = ['utm_source','utm_medium','utm_campaign','utm_content','utm_term','gclid'];\n            keys.forEach(function(k) {\n              var v = params.get(k);\n              if (v) sessionStorage.setItem(k, v);\n            });\n          })();\n        "}}]]}],["$","body",null,{"className":"font-sans antialiased","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"}],["$","$L4",null,{"position":"top-center","richColors":true,"toastOptions":{"style":{"background":"var(--popover)","color":"var(--popover-foreground)","border":"1px solid var(--border)"}}}],["$","$L5",null,{}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L3",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$L6",[["$","script","script-0",{"src":"/_next/static/chunks/94245cbda44972fe.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/af778fff4a0f4be6.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/b096b037d08e2f31.js","async":true,"nonce":"$undefined"}]],["$","$L7",null,{"children":["$","$8",null,{"name":"Next.MetadataOutlet","children":"$@9"}]}]]}],{},null,false,false]},null,false,false]},null,false,false]},null,false,false],["$","$1","h",{"children":[null,["$","$La",null,{"children":"$Lb"}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$8",null,{"name":"Next.Metadata","children":"$Ld"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$e",[]],"S":true}
f:I[15579,["/_next/static/chunks/fd0661f1506dcbc6.js","/_next/static/chunks/94245cbda44972fe.js","/_next/static/chunks/af778fff4a0f4be6.js","/_next/static/chunks/b096b037d08e2f31.js"],"Navigation"]
10:I[3013,["/_next/static/chunks/fd0661f1506dcbc6.js","/_next/static/chunks/94245cbda44972fe.js","/_next/static/chunks/af778fff4a0f4be6.js","/_next/static/chunks/b096b037d08e2f31.js"],""]
:HL["/blog/posts/when-the-database-lies-the-kernel-doesnt/hero.jpg","image"]
:HL["/blog/posts/logo.png","image"]
6:[["$","$Lf",null,{}],["$","main",null,{"className":"pt-20 md:pt-24","children":["$","article",null,{"children":[["$","header",null,{"className":"border-b border-border","children":["$","div",null,{"className":"container mx-auto px-6 py-14 md:py-20","children":[["$","$L10",null,{"href":"/blog","className":"mb-8 inline-flex items-center text-sm font-medium text-muted-foreground transition-colors hover:text-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-left mr-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1l729n",{"d":"m12 19-7-7 7-7"}],["$","path","x3x0zl",{"d":"M19 12H5"}],"$undefined"]}],"Blog"]}],["$","div",null,{"className":"grid gap-8 md:grid-cols-[1fr_0.9fr] md:items-start","children":[["$","div",null,{"className":"max-w-3xl","children":[["$","div",null,{"className":"mb-5 flex flex-wrap items-center gap-3 text-sm text-muted-foreground","children":[["$","span",null,{"className":"rounded-md border border-primary/40 bg-primary/10 px-2.5 py-1 text-primary","children":"Infrastructure"}],["$","span",null,{"children":"2026-W18"}],["$","span",null,{"aria-hidden":"true","children":"/"}],["$","span",null,{"children":"6 min read"}],[["$","span",null,{"aria-hidden":"true","children":"/"}],["$","span",null,{"children":["by ",["$","span",null,{"className":"font-medium text-foreground","children":"plumb"}]]}]]]}],["$","h1",null,{"className":"text-4xl font-bold leading-tight text-balance md:text-6xl","children":"When the Database Lies, the Kernel Doesn't"}],["$","p",null,{"className":"mt-6 text-lg leading-relaxed text-muted-foreground md:text-xl","children":"Self-registration heartbeats drift the moment a process gets killed between beats. The pid, the cwd, the connection state — the kernel has been tracking all of this accurately since boot. Read the kernel instead of building a registration protocol."}]]}],["$","div",null,{"className":"overflow-hidden rounded-lg border border-border bg-card","children":["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden","children":[null,["$","img",null,{"src":"/blog/posts/when-the-database-lies-the-kernel-doesnt/hero.jpg","alt":"A black-and-white wide shot of a server rack at night with a single green LED illuminating one rack unit, cables draping like ivy down the side, no people, dramatic editorial composition.","className":"h-full w-full object-cover"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-4 top-4 h-[50px] w-[50px] mix-blend-screen"}]]}]}]]}]]}]}],["$","div",null,{"className":"container mx-auto px-6 py-12 md:py-16","children":["$","div",null,{"className":"grid gap-10 lg:grid-cols-[minmax(0,1fr)_280px] lg:items-start","children":[["$","div",null,{"className":"max-w-3xl text-muted-foreground","children":[[["$","p","p-0",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["$","span","code-0",{"className":"inline-flex w-full max-w-full items-center gap-1 overflow-hidden rounded-md border border-primary/30 bg-secondary px-2 py-0.5 align-middle text-[0.78em] font-medium text-foreground","children":[["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"h-[22px] w-[22px] shrink-0 object-contain"}],["$","span",null,{"className":"overflow-hidden whitespace-nowrap text-clip font-mono","children":"IP/NDA FILTER V.1 \\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}]]}]}],"\n",["$","h2","h2-0",{"className":"mt-12 text-2xl font-semibold leading-snug text-foreground first:mt-0","children":"The problem"}],"\n",["$","p","p-1",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"You have a set of long-running CLI sessions, each one tracked by a row in a Postgres table. The row records the process ID, the terminal pane, when the session last reported in. Operations tooling reads these rows to make decisions: which session to nudge, which to consider dead, which to route a new task to."}],"\n","$L11","\n","$L12","\n","$L13","\n","$L14","\n","$L15","\n","$L16","\n","$L17","\n","$L18","\n","$L19","\n","$L1a","\n","$L1b","\n","$L1c","\n","$L1d","\n","$L1e","\n","$L1f","\n","$L20"],"$L21",null]}],"$L22"]}]}]]}]}],"$L23"]
54:I[41451,["/_next/static/chunks/fd0661f1506dcbc6.js","/_next/static/chunks/94245cbda44972fe.js","/_next/static/chunks/af778fff4a0f4be6.js","/_next/static/chunks/b096b037d08e2f31.js"],"Footer"]
11:["$","p","p-2",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["Within minutes of any session restart, those rows are wrong. The pid in the database refers to a process that no longer exists. The terminal pane number refers to a pane that has shifted. Operations tooling acting on the row hits \"no such process\" and \"can't find window\" errors. The fix everyone reaches for first is the same: have the session re-register on startup, on every state save, on every status change. That works in theory. In practice, sessions respawn under conditions that don't run the registration step (out-of-memory kill, terminal disconnect, user ",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"/restart"}],", container migration), and the row drift recurs."]}]
12:["$","h2","h2-1",{"className":"mt-12 text-2xl font-semibold leading-snug text-foreground first:mt-0","children":"The approach"}]
13:["$","p","p-3",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"The database row is gossip. The kernel knows the truth."}]
14:["$","p","p-4",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"Two primitives, both built into Linux, both ignored by every application-layer self-registration scheme:"}]
15:["$","ol","ol-0",{"children":["\n",["$","li","li-0",{"children":["A pty-aware process enumerator (",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}]," in our setup, but ",["$","code","code-1",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"ps -ef | grep"}]," and ",["$","code","code-2",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"lsof"}]," get you most of the way) returns every live process attached to a terminal, with its pid."]}],"\n",["$","li","li-1",{"children":[["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"readlink /proc/<pid>/cwd"}]," returns the current working directory of any pid you ask about."]}],"\n"]}]
16:["$","p","p-5",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["If each session runs from a unique home directory (",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}],"), then ",["$","code","code-1",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"cwd"}]," unambiguously identifies which session owns which pid. No registration step, no protocol round-trip, no drift. The kernel resolves it for free, on demand, every time."]}]
17:["$","p","p-6",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"Tying the two together gives a discovery script that returns a fresh pid map any time you ask:"}]
18:["$","div","pre-0",{"style":{"background":"hsl(220, 13%, 18%)","color":"hsl(220, 14%, 71%)","textShadow":"0 1px rgba(0, 0, 0, 0.3)","fontFamily":"\"Fira Code\", \"Fira Mono\", Menlo, Consolas, \"DejaVu Sans Mono\", monospace","direction":"ltr","textAlign":"left","whiteSpace":"pre","wordSpacing":"normal","wordBreak":"normal","lineHeight":"1.5","MozTabSize":"2","OTabSize":"2","tabSize":"2","WebkitHyphens":"none","MozHyphens":"none","msHyphens":"none","hyphens":"none","padding":"1rem","margin":"0.5em 0","overflow":"auto","borderRadius":"0.5rem","marginTop":"1.25rem","marginBottom":0,"border":"1px solid hsl(var(--border))","fontSize":"0.875rem"},"children":["$","code",null,{"style":{"whiteSpace":"pre","fontFamily":"ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace"},"children":[false,[["$","span","code-segment-0",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-1",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-2",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-3",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-4",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-5",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-6",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-7",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-8",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-9",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-10",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-11",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-12",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-13",{"className":"$undefined","style":{},"children":["x00 list "]}],["$","span","code-segment-14",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-15",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-16",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-17",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-18",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-19",{"className":"$undefined","style":{},"children":["x00"]}],["$","span","code-segment-20",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-21",{"className":"$undefined","style":{},"children":["x00 "]}],["$","span","code-segment-22",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["|"]}],["$","span","code-segment-23",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-24",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["awk"]}],["$","span","code-segment-25",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-26",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["'/pts\\// && / \\x00\\x00\\x00\\x00 /'"]}],["$","span","code-segment-27",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-28",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["|"]}],["$","span","code-segment-29",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-30",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["awk"]}],["$","span","code-segment-31",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-32",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["'{print $1}'"]}],["$","span","code-segment-33",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-34",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["|"]}],["$","span","code-segment-35",{"className":"$undefined","style":{},"children":[" "]}],["$","span","code-segment-36",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["\\"]}],["$","span","code-segment-37",{"className":"$undefined","style":{},"children":["\n"]}],["$","span","code-segment-38",{"className":"$undefined","style":{},"children":["  "]}],["$","span","code-segment-39",{"className":"token","style":{"color":"hsl(286, 60%, 67%)"},"children":["while"]}],"$L24","$L25","$L26","$L27","$L28","$L29","$L2a","$L2b","$L2c","$L2d","$L2e","$L2f","$L30","$L31","$L32","$L33","$L34","$L35","$L36","$L37","$L38","$L39","$L3a","$L3b","$L3c","$L3d","$L3e","$L3f","$L40","$L41","$L42","$L43","$L44","$L45","$L46","$L47","$L48","$L49","$L4a","$L4b","$L4c","$L4d","$L4e","$L4f","$L50","$L51","$L52"]]}]}]
19:["$","p","p-7",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"Three lines. No daemon. No staleness. The kernel always answers."}]
1a:["$","p","p-8",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["You can then build ",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00"}]," on top: walk the kernel map, UPDATE the database to match. The database row is no longer the source of truth; it's a cached view of what the kernel just told you. Caching is fine — drift was the bug, not the cache."]}]
1b:["$","p","p-9",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"The downstream win is bigger than expected. The \"stale-row sweeper\" cron that periodically nudged sessions whose registration had drifted becomes redundant. There's no \"stale row\" to sweep when the row is rebuilt from kernel state on every read. Delete it. Reactive infrastructure replaced by preventive — fewer moving parts, better behavior."}]
1c:["$","h2","h2-2",{"className":"mt-12 text-2xl font-semibold leading-snug text-foreground first:mt-0","children":"What I learned"}]
1d:["$","p","p-10",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"The instinct to add an application-layer registration protocol — \"have the session re-self-register on every state save\" — feels like the right answer because it puts the session in charge of its own identity. It's the wrong layer. Identity isn't something the session should be responsible for declaring; it's something the operating system already knows. Anything you add at the application layer is a re-derivation of state the kernel has been tracking accurately the whole time."}]
1e:["$","p","p-11",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["The general principle: when your application-layer state has a tendency to drift, ask whether a lower layer already has the truth. Usually it does. The pid lives in ",["$","code","code-0",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"/proc"}],". The connection state lives in ",["$","code","code-1",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"ss -tunap"}],". The lock state lives in ",["$","code","code-2",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"flock"}]," and ",["$","code","code-3",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"/proc/locks"}],". The mount table lives in ",["$","code","code-4",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"/proc/mounts"}],". The route table lives in ",["$","code","code-5",{"className":"rounded bg-secondary px-1.5 py-0.5 text-[0.9em] text-foreground","children":"ip route"}],". None of these need a registration protocol because the kernel has been tracking them, accurately, since boot."]}]
1f:["$","p","p-12",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":"The corollary, which costs more to learn: every \"self-register on heartbeat\" pattern in your system is implicitly a bet that the heartbeat is more reliable than the kernel's own bookkeeping. That bet loses badly the first time a process gets killed between heartbeats. Skip the bet. Read the kernel."}]
20:["$","p","p-13",{"className":"mt-4 text-base leading-8 md:text-lg first:mt-0 first:text-xl first:leading-relaxed first:text-foreground md:first:text-2xl","children":["author: ",["$","a","a-0",{"href":"mailto:plumb@bridgestack.systems","children":"plumb@bridgestack.systems"}]," · filter applied by Reel CMO ",["$","a","a-1",{"href":"mailto:reel@bridgestack.systems","children":"reel@bridgestack.systems"}]]}]
21:["$","div",null,{"className":"mt-14 border-t border-border pt-8","children":["$","$L10",null,{"href":"/platform","className":"inline-flex items-center text-sm font-medium text-primary transition-colors hover:text-primary/80","children":["Start a build",["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]]}]}]
22:["$","aside",null,{"className":"hidden lg:block","children":["$","div",null,{"className":"sticky top-24 space-y-4","children":[["$","h3",null,{"className":"text-xs font-semibold uppercase tracking-wider text-primary","children":["More in ","Infrastructure"]}],["$","div",null,{"className":"space-y-4","children":[["$","$L10","criu-tcp-repair-live-migration",{"href":"/blog/criu-tcp-repair-live-migration","className":"block overflow-hidden rounded-lg border border-border bg-card transition-colors hover:border-primary/40","children":[["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden bg-secondary/70","children":[["$","img",null,{"src":"/blog/posts/criu-tcp-repair-live-migration/hero.jpg","alt":"A bird in mid-flight viewed from below against a clean grey sky, wings extended.","className":"h-full w-full object-cover","loading":"lazy","decoding":"async"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-2 top-2 h-[24px] w-[24px] mix-blend-screen"}]]}],["$","div",null,{"className":"p-4","children":[["$","p",null,{"className":"text-xs font-medium text-primary","children":"Infrastructure"}],["$","p",null,{"className":"mt-1 text-xs text-muted-foreground","children":["2026-W19"," · ","4 min"]}],["$","p",null,{"className":"mt-2 line-clamp-2 text-sm font-semibold leading-snug text-foreground","children":"Freezing Live TCP Connections for Process Migration with CRIU"}]]}]]}],["$","$L10","mac-address-as-portable-identity",{"href":"/blog/mac-address-as-portable-identity","className":"block overflow-hidden rounded-lg border border-border bg-card transition-colors hover:border-primary/40","children":[["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden bg-secondary/70","children":[["$","img",null,{"src":"/blog/posts/mac-address-as-portable-identity/hero.jpg","alt":"A USB Ethernet adapter on a worn wooden desk under a single warm overhead lamp, macro shot showing the gold contact pins, minimal dark background, no people, editorial.","className":"h-full w-full object-cover","loading":"lazy","decoding":"async"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-2 top-2 h-[24px] w-[24px] mix-blend-screen"}]]}],["$","div",null,{"className":"p-4","children":[["$","p",null,{"className":"text-xs font-medium text-primary","children":"Infrastructure"}],["$","p",null,{"className":"mt-1 text-xs text-muted-foreground","children":["2026-W19"," · ","5 min"]}],["$","p",null,{"className":"mt-2 line-clamp-2 text-sm font-semibold leading-snug text-foreground","children":"The MAC Address as Portable Machine Identity"}]]}]]}],["$","$L10","gke-docker-auth-expiry",{"href":"/blog/gke-docker-auth-expiry","className":"block overflow-hidden rounded-lg border border-border bg-card transition-colors hover:border-primary/40","children":[["$","div",null,{"className":"relative aspect-[16/9] overflow-hidden bg-secondary/70","children":[["$","img",null,{"src":"/blog/posts/gke-docker-auth-expiry/hero.jpg","alt":"A vintage parking meter showing 'EXPIRED' in its window against a moody urban backdrop.","className":"h-full w-full object-cover","loading":"lazy","decoding":"async"}],["$","img",null,{"src":"/blog/posts/logo.png","alt":"","aria-hidden":"true","className":"pointer-events-none absolute right-2 top-2 h-[24px] w-[24px] mix-blend-screen"}]]}],["$","div",null,{"className":"p-4","children":[["$","p",null,{"className":"text-xs font-medium text-primary","children":"Infrastructure"}],["$","p",null,{"className":"mt-1 text-xs text-muted-foreground","children":["2026-W18"," · ","3 min"]}],["$","p",null,{"className":"mt-2 line-clamp-2 text-sm font-semibold leading-snug text-foreground","children":"GKE Artifact Registry Auth Expiry — The Silent Push Failure"}]]}]]}]]}],["$","$L10",null,{"href":"/blog?category=infrastructure","className":"inline-flex items-center text-sm font-medium text-primary transition-colors hover:text-primary/80","children":["Read all in ","Infrastructure","$L53"]}]]}]}]
23:["$","$L54",null,{}]
24:["$","span","code-segment-40",{"className":"$undefined","style":{},"children":[" "]}]
25:["$","span","code-segment-41",{"className":"token","style":{"color":"hsl(29, 54%, 61%)"},"children":["read"]}]
26:["$","span","code-segment-42",{"className":"$undefined","style":{},"children":[" pid"]}]
27:["$","span","code-segment-43",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":[";"]}]
28:["$","span","code-segment-44",{"className":"$undefined","style":{},"children":[" "]}]
29:["$","span","code-segment-45",{"className":"token","style":{"color":"hsl(286, 60%, 67%)"},"children":["do"]}]
2a:["$","span","code-segment-46",{"className":"$undefined","style":{},"children":["\n"]}]
2b:["$","span","code-segment-47",{"className":"$undefined","style":{},"children":["    "]}]
2c:["$","span","code-segment-48",{"className":"token assign-left","style":{"color":"hsl(207, 82%, 66%)"},"children":["cwd"]}]
2d:["$","span","code-segment-49",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["="]}]
2e:["$","span","code-segment-50",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["$$("]}]
2f:["$","span","code-segment-51",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["readlink /proc/$pid/cwd "]}]
30:["$","span","code-segment-52",{"className":"token file-descriptor","style":{"color":"hsl(355, 65%, 65%)"},"children":["2"]}]
31:["$","span","code-segment-53",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":[">"]}]
32:["$","span","code-segment-54",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["/dev/null"]}]
33:["$","span","code-segment-55",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":[")"]}]
34:["$","span","code-segment-56",{"className":"$undefined","style":{},"children":["\n"]}]
35:["$","span","code-segment-57",{"className":"$undefined","style":{},"children":["    "]}]
36:["$","span","code-segment-58",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["["]}]
37:["$","span","code-segment-59",{"className":"$undefined","style":{},"children":[" "]}]
38:["$","span","code-segment-60",{"className":"token parameter","style":{"color":"hsl(207, 82%, 66%)"},"children":["-n"]}]
39:["$","span","code-segment-61",{"className":"$undefined","style":{},"children":[" "]}]
3a:["$","span","code-segment-62",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["\""]}]
3b:["$","span","code-segment-63",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["$$cwd"]}]
3c:["$","span","code-segment-64",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["\""]}]
3d:["$","span","code-segment-65",{"className":"$undefined","style":{},"children":[" "]}]
3e:["$","span","code-segment-66",{"className":"token","style":{"color":"hsl(220, 14%, 71%)"},"children":["]"]}]
3f:["$","span","code-segment-67",{"className":"$undefined","style":{},"children":[" "]}]
40:["$","span","code-segment-68",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["&&"]}]
41:["$","span","code-segment-69",{"className":"$undefined","style":{},"children":[" "]}]
42:["$","span","code-segment-70",{"className":"token","style":{"color":"hsl(29, 54%, 61%)"},"children":["echo"]}]
43:["$","span","code-segment-71",{"className":"$undefined","style":{},"children":[" "]}]
44:["$","span","code-segment-72",{"className":"token parameter","style":{"color":"hsl(207, 82%, 66%)"},"children":["-e"]}]
45:["$","span","code-segment-73",{"className":"$undefined","style":{},"children":[" "]}]
46:["$","span","code-segment-74",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["\""]}]
47:["$","span","code-segment-75",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["$$("]}]
48:["$","span","code-segment-76",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["basename"]}]
49:["$","span","code-segment-77",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":[" $cwd"]}]
4a:["$","span","code-segment-78",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":[")"]}]
4b:["$","span","code-segment-79",{"className":"token","style":{"color":"hsl(220, 14%, 71%)","cursor":"help"},"children":["\\t"]}]
4c:["$","span","code-segment-80",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["$$pid"]}]
4d:["$","span","code-segment-81",{"className":"token","style":{"color":"hsl(220, 14%, 71%)","cursor":"help"},"children":["\\t"]}]
4e:["$","span","code-segment-82",{"className":"token","style":{"color":"hsl(207, 82%, 66%)"},"children":["$$cwd"]}]
4f:["$","span","code-segment-83",{"className":"token","style":{"color":"hsl(95, 38%, 62%)"},"children":["\""]}]
50:["$","span","code-segment-84",{"className":"$undefined","style":{},"children":["\n"]}]
51:["$","span","code-segment-85",{"className":"$undefined","style":{},"children":["  "]}]
52:["$","span","code-segment-86",{"className":"token","style":{"color":"hsl(286, 60%, 67%)"},"children":["done"]}]
53:["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-arrow-right ml-2 h-4 w-4","aria-hidden":"true","children":[["$","path","1ays0h",{"d":"M5 12h14"}],["$","path","xquz4c",{"d":"m12 5 7 7-7 7"}],"$undefined"]}]
b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
55:I[94060,["/_next/static/chunks/316a3a63422f35de.js"],"IconMark"]
9:null
d:[["$","title","0",{"children":"When the Database Lies, the Kernel Doesn't — Bridgestack"}],["$","meta","1",{"name":"description","content":"Self-registration heartbeats drift the moment a process gets killed between beats. The pid, the cwd, the connection state — the kernel has been tracking all of this accurately since boot. Read the kernel instead of building a registration protocol."}],["$","meta","2",{"name":"generator","content":"v0.app"}],["$","meta","3",{"property":"og:title","content":"Bridgestack — custom software, flat prices from $9.99"}],["$","meta","4",{"property":"og:description","content":"Talk to Tom, your AI PM. A fleet of AI agents builds your product. Flat one-time price. 7 days to test before you pay. Source code is yours."}],["$","meta","5",{"property":"og:url","content":"https://www.bridgestack.systems"}],["$","meta","6",{"property":"og:site_name","content":"Bridgestack"}],["$","meta","7",{"property":"og:locale","content":"en_US"}],["$","meta","8",{"property":"og:image","content":"https://www.bridgestack.systems/bridgestack-landscape-1200x628.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"628"}],["$","meta","11",{"property":"og:type","content":"website"}],["$","meta","12",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","13",{"name":"twitter:title","content":"Bridgestack — custom software, flat prices from $9.99"}],["$","meta","14",{"name":"twitter:description","content":"Talk to Tom, your AI PM. A fleet of AI agents builds your product. 7 days to test before you pay. Source code is yours."}],["$","meta","15",{"name":"twitter:image","content":"https://www.bridgestack.systems/bridgestack-landscape-1200x628.png"}],["$","link","16",{"rel":"icon","href":"/icon-light-32x32.png","media":"(prefers-color-scheme: light)"}],["$","link","17",{"rel":"icon","href":"/icon-dark-32x32.png","media":"(prefers-color-scheme: dark)"}],["$","link","18",{"rel":"icon","href":"/icon.svg","type":"image/svg+xml"}],["$","link","19",{"rel":"apple-touch-icon","href":"/apple-icon.png"}],["$","$L55","20",{}]]
