← back to Tk11438 Postgres Migration
Verify socket handoff and prepare Ken scheduler migration approval
f93e515762ef8efe4a3b8658cc7f4b0f7a59314c · 2026-09-11 09:59:42 -0700 · Steve Abrams
Files touched
M APPROVAL.mdA NEXT-BATCH.mdM README.mdA ken-proof.cjsA next-batch.jsonA reverify.cjsM runtime.cjsM verification/e2e-proof.jsonA verification/env-provenance.jsonA verification/ken-driver-proof.jsonA verification/ken-schedulers.jsonA verification/reverification.jsonM verification/runtime.json
Diff
commit f93e515762ef8efe4a3b8658cc7f4b0f7a59314c
Author: Steve Abrams <steve@designerwallcoverings.com>
Date: Fri Sep 11 09:59:42 2026 -0700
Verify socket handoff and prepare Ken scheduler migration approval
---
APPROVAL.md | 10 +-
NEXT-BATCH.md | 78 ++
README.md | 28 +-
ken-proof.cjs | 15 +
next-batch.json | 52 ++
reverify.cjs | 55 ++
runtime.cjs | 19 +-
verification/e2e-proof.json | 63 +-
verification/env-provenance.json | 16 +
verification/ken-driver-proof.json | 40 +
verification/ken-schedulers.json | 45 ++
verification/reverification.json | 1441 ++++++++++++++++++++++++++++++++++++
verification/runtime.json | 27 +-
13 files changed, 1824 insertions(+), 65 deletions(-)
diff --git a/APPROVAL.md b/APPROVAL.md
index d42deb8..520de9a 100644
--- a/APPROVAL.md
+++ b/APPROVAL.md
@@ -1,6 +1,10 @@
-# TK-11438 — first socket migration batch needs production approval
+# TK-11438 — historical first-batch approval specification
-Status: BLOCKED; migration is not complete. Owner: codex-run-11438.
+Status: FIRST BATCH APPLIED AND REVERIFIED. Overall migration remains BLOCKED.
+Owner: codex-run-11438. The specification below is retained as history.
+Source commits: showroom a482499, Pattern Design Lab bf33afd. Peer codex-run-11401
+persisted two showroom dump fields; fresh verification/reverification.json accepts
+that handoff. See NEXT-BATCH.md for the pending scope.
Approve the following first batch only: update the local connection defaults and
effective service environment for interiordesignershowroom and patterndesignlab,
@@ -10,7 +14,7 @@ enabled. No catalog/Shopify writes, remote deployment, or bulk fleet restart.
## Exact proposed changes
The two hashed, single-occurrence source replacements are in
-`proposed-changes.json`. They have NOT been applied.
+`proposed-changes.json`. They were applied in the approved first batch.
| Service | Source default | Effective configuration required |
|---|---|---|
diff --git a/NEXT-BATCH.md b/NEXT-BATCH.md
new file mode 100644
index 0000000..52c1281
--- /dev/null
+++ b/NEXT-BATCH.md
@@ -0,0 +1,78 @@
+# TK-11438 — Ken socket migration approval
+
+Status: PREPARED, NOT APPLIED. Overall ticket remains blocked. Owner: codex-run-11438.
+
+Approve this Ken batch, including its service restart and reconciliation job
+reload. Restarting Ken resumes its existing autonomous loops and therefore needs
+approval covering that operational effect. Preserve trading mode, risk settings,
+balances, credentials, and PostgreSQL TCP listening.
+
+## Exact scope
+
+1. `~/Projects/Ken/kalshi-dash/.env`, lines 3–4: add URI query `host=/tmp` to
+ DATABASE_URL (bertha_betting) and KEN_DATABASE_URL (ken), preserving all other
+ parameters. `start.sh` sources this file, overriding PM2 environment.
+2. Only the `ken` PM2 effective and saved dump entry: align both URL keys, top
+ level and nested env, to the same socket values. Guard identity and current
+ hash; preserve all unrelated fields and services.
+3. `~/Projects/Ken/kalshi-dash/follow-the-winners-check.sh`, line 13: apply the
+ exact hashed replacement in `next-batch.json`. This hourly job sets the URL
+ inline. Do not run its wrapper for verification: it can send email on a
+ signal transition.
+4. `~/Library/LaunchAgents/com.steve.ken-reconcile-canary.plist`:
+ EnvironmentVariables.KEN_DATABASE_URL gets the same socket query. Reload
+ this job alone after guarding identity; interval 1,800 seconds. Its inspected
+ reconciliation script performs SELECTs only.
+
+The safemode guard uses hostless psql with no PGHOST in its plist. Preserve it;
+verify its inherited host separately before accepting full-fleet coverage.
+Ken/ecosystem.config.js targets remote Bertha processes and is excluded.
+
+## Completed evidence
+
+- Fresh direct read-only PM2 RPC found 147 services. Original two-service batch:
+ 15/15 assertions pass. Saved showroom .env, effective URL and both dump fields
+ agree. Authenticated reads pass, unauthenticated reads return 401, and counts
+ remain 3,201 showroom products and 1,694 PDL designs. No reboot was performed.
+- PostgreSQL activity still shows Ken on `::1`. TCP remains required.
+- Ken's installed driver passed four socket/read-only/missing-socket checks for
+ both databases. All test connections closed; no app or job boot.
+- Source/env hashes and scheduler metadata are in next-batch.json and
+ verification/{env-provenance,ken-schedulers,ken-driver-proof}.json.
+- Initial PM2 API verification timed out. Direct getMonitorData RPC succeeded;
+ saved verification scripts avoid API initialization/startup. Missing pm2.pid
+ was observed while daemon PID 27622 existed; no daemon repair was attempted.
+
+## Execution and acceptance after approval
+
+Recheck ownership and hashes. Snapshot dirty source trees without staging secrets.
+Privately capture exact previous URL fields and source. Verify shell-sourced .env
+and PM2 precedence, and rehearse field-level rollback on copies. Apply the batch,
+restart only Ken, then prove BOTH pools preserve DB/role identity with read-only
+SELECTs, no TCP 5432 sockets, and the existing auth boundary. Choose a reviewed
+local DB-only endpoint: `/api/health` calls Kalshi balance APIs.
+
+Reload only reconciliation launchd and observe loaded env, exit status and its
+reconciliation result. Distinguish an existing reconciliation failure from a new
+connection failure. Observe the hourly job during its normal authorized schedule;
+do not trigger its possible email path manually. Independent verification must
+accept service and scheduler evidence before claiming batch completion.
+
+On regression restore only captured target fields/source and restart/reload only
+the affected service/job. Never restore the fleet's entire PM2 dump.
+
+## Remaining and stop condition
+
+Gracie is a separate batch. Although its catalog can use JSONL, mounting
+lib/vendor-requests.js immediately attempts CREATE TABLE IF NOT EXISTS against
+dw_unified via a hardcoded TCP pool. Restarting it crosses the canonical DDL gate.
+No Gracie source/config changes are proposed here.
+
+Original inventory: 217 files plus one invalid directory entry. Expanded
+candidates, shared vendor modules, inherited hosts, remote/container targets,
+other live services and schedulers still need disposition. Do not disable TCP
+or mark TK-11438 done.
+
+Gate source: Steve's current ticket instruction requires a pending-approval
+draft and STOP for production/customer-facing/spend/send/canonical changes.
+E2E Proof requires approved R4 rollout and independent verification.
diff --git a/README.md b/README.md
index 782b20f..66c653c 100644
--- a/README.md
+++ b/README.md
@@ -1,13 +1,21 @@
-# TK-11438 preparation evidence
+# TK-11438 PostgreSQL socket migration
-Start with APPROVAL.md. Live migration has not been applied.
+Status: PARTIAL / BLOCKED at the next production approval gate.
-`proposed-changes.json` contains two exact, hashed source replacements for review.
-`verification/e2e-proof.json` records PASS/SKIP boundaries and overall BLOCKED status.
-`runtime.cjs` reads only the existing PM2 daemon with `connect(true)`.
-`socket-proof.cjs` loads pg drivers directly and makes read-only SELECT connections;
-it never starts the service applications. `inventory.py` reconciles saved candidate
-paths and outputs line numbers/hashes, never source lines or credentials. Its input
-lists were captured by a broad rg scan and are not a complete fleet census.
+The first approved batch (interiordesignershowroom and patterndesignlab) is applied.
+Fresh independent verification passes all 15 assertions, including saved PM2
+configuration, database identity, auth and missing-socket behavior. Counts remain
+3,201 products and 1,694 designs. No reboot or rollback rehearsal is claimed.
-No remotes, source deployments, database writes or service restarts were performed.
+Read NEXT-BATCH.md for the exact Ken approval scope. next-batch.json contains
+hashed source and environment change specifications; these have not been applied.
+Ken still uses TCP. Full original/expanded inventory classification is incomplete.
+The historical first-batch approval specification is retained in APPROVAL.md.
+
+reverify.cjs uses direct read-only PM2 RPC and never starts a daemon. It verifies
+the previously migrated services. ken-proof.cjs loads only the installed pg driver
+and runs SELECT-only socket and missing-socket tests. Neither imports app startup.
+Verification scripts save credential-free results in verification/.
+
+No live source/config edits, restarts, scheduled job runs, database writes, or
+remote changes were performed during this resumption.
diff --git a/ken-proof.cjs b/ken-proof.cjs
new file mode 100644
index 0000000..1d0c3a6
--- /dev/null
+++ b/ken-proof.cjs
@@ -0,0 +1,15 @@
+// Only installed driver SELECT probes; never import/start Ken or its jobs.
+const fs=require('fs'),path=require('path');
+const {Client}=require('/Users/macstudio3/Projects/Ken/kalshi-dash/node_modules/pg');
+const checks=[];
+(async()=>{
+ for(const database of ['ken','bertha_betting']){
+ const c=new Client({host:'/tmp',database,user:'macstudio3',application_name:'TK-11438-ken-preflight',connectionTimeoutMillis:3000,options:'-c default_transaction_read_only=on -c statement_timeout=3000'});
+ try{await c.connect();const identity=(await c.query("SELECT current_database() database,current_user role,inet_client_addr() IS NULL socket,current_setting('transaction_read_only') readonly")).rows[0];checks.push({database,test:'installed-driver-socket',verdict:identity.database===database&&identity.socket&&identity.readonly==='on'?'PASS':'FAIL',identity});}
+ catch(e){checks.push({database,verdict:'FAIL',code:e.code});}finally{await c.end().catch(()=>{});}
+ const bad=new Client({host:'/tmp/TK-11438-missing-socket',database,user:'macstudio3',connectionTimeoutMillis:1000});
+ try{await bad.connect();checks.push({database,test:'no-fallback',verdict:'FAIL'});}catch(e){checks.push({database,test:'no-fallback',verdict:e.code==='ENOENT'?'PASS':'FAIL',code:e.code});}finally{await bad.end().catch(()=>{});}
+ }
+ fs.writeFileSync(path.join(__dirname,'verification/ken-driver-proof.json'),JSON.stringify({timestamp:new Date().toISOString(),checks,limits:'Driver preflight only; app and scheduled operational journeys have not been migrated or executed.'},null,2)+'\n');
+ console.log(JSON.stringify(checks));if(checks.some(x=>x.verdict!=='PASS'))process.exitCode=1;
+})().catch(e=>{console.error(e.code||e.name);process.exitCode=1;});
diff --git a/next-batch.json b/next-batch.json
new file mode 100644
index 0000000..276932e
--- /dev/null
+++ b/next-batch.json
@@ -0,0 +1,52 @@
+{
+ "ticket": "TK-11438",
+ "status": "PREPARED_NOT_APPLIED",
+ "scope": "Ken application and its two known explicit-TCP scheduled consumers only",
+ "file_changes": [
+ {
+ "path": "/Users/macstudio3/Projects/Ken/kalshi-dash/follow-the-winners-check.sh",
+ "sha256": "04a512566936f561c7c37d623e26ec8bb0e2ec507607dbd5db5c8f5e19d5b5b9",
+ "old": "KEN_DATABASE_URL=\"postgresql://localhost:5432/ken\"",
+ "new": "KEN_DATABASE_URL=\"postgresql://localhost:5432/ken?host=/tmp\"",
+ "occurrences": 1
+ }
+ ],
+ "environment_changes": [
+ {
+ "path": "/Users/macstudio3/Projects/Ken/kalshi-dash/.env",
+ "sha256": "07e8091a1cc0d968cef79612ba91a4d4a177975d666967e6054c5ef8199203b1",
+ "keys": [
+ "DATABASE_URL",
+ "KEN_DATABASE_URL"
+ ],
+ "operation": "Set URI query parameter host=/tmp, preserving database, role, credentials, port, and other options",
+ "precedence": "sourced by start.sh overrides inherited PM2 environment"
+ },
+ {
+ "path": "/Users/macstudio3/Library/LaunchAgents/com.steve.ken-reconcile-canary.plist",
+ "sha256": "5bae8a547e6680e2ac071a95ad0e57c74aa89449c4aaffc2540f40d0934f18f5",
+ "keys": [
+ "EnvironmentVariables.KEN_DATABASE_URL"
+ ],
+ "operation": "Set URI query parameter host=/tmp, preserving database, role, credentials, port, and other options",
+ "precedence": "launchd supplies independent environment"
+ },
+ {
+ "path": "existing PM2 ken entry and ~/.pm2/dump.pm2 ken entry only",
+ "keys": [
+ "DATABASE_URL",
+ "KEN_DATABASE_URL",
+ "env.DATABASE_URL",
+ "env.KEN_DATABASE_URL"
+ ],
+ "operation": "Match .env socket URLs; require unique cwd/script/name and hash guard; preserve every other field and service"
+ }
+ ],
+ "gates": [
+ "Ken service restart may resume autonomous market work and existing configured external activity; needs explicit approval",
+ "reconcile-canary launchd reload is gated",
+ "Do not invoke follow-the-winners wrapper during verification: can send email on signal transition",
+ "TCP shutdown excluded",
+ "No Gracie restart: mounted vendor module calls canonical CREATE TABLE IF NOT EXISTS on startup"
+ ]
+}
diff --git a/reverify.cjs b/reverify.cjs
new file mode 100644
index 0000000..be36245
--- /dev/null
+++ b/reverify.cjs
@@ -0,0 +1,55 @@
+// Read-only TK-11438 handoff verification. No app imports, writes, or restarts.
+const fs=require('fs'),path=require('path'),cp=require('child_process'),assert=require('assert/strict');
+const axon=require('/Users/macstudio3/.npm-global/lib/node_modules/pm2/node_modules/pm2-axon');
+const rpc=require('/Users/macstudio3/.npm-global/lib/node_modules/pm2/node_modules/pm2-axon-rpc');
+let rpcSocket;
+const root='/Users/macstudio3/Projects';
+const report={ticket:'TK-11438',timestamp:new Date().toISOString(),checks:[],services:[]};
+const check=(name,ok,detail)=>{report.checks.push({name,verdict:ok?'PASS':'FAIL',detail});};
+const target=value=>{try{const u=new URL(value);return {host:u.hostname,database:u.pathname.slice(1),socketHost:u.searchParams.get('host'),port:u.port||'5432'};}catch{return {unresolved:true};}};
+let phase='PM2 existing daemon';
+const timer=setTimeout(()=>{report.verdict='FAIL';report.error={code:'TIMEOUT',phase};fs.writeFileSync(path.join(__dirname,'verification/reverification.json'),JSON.stringify(report,null,2)+'\n');rpcSocket?.close();process.exit(2);},60000);
+async function dbProbe(pg,config,table){
+ const c=new pg.Client({...config,connectionTimeoutMillis:4000,application_name:'TK-11438-resume-readonly',options:'-c default_transaction_read_only=on -c statement_timeout=4000'});
+ try{await c.connect();const identity=(await c.query("SELECT current_database() database,current_user role,inet_client_addr()::text client_addr,current_setting('transaction_read_only') readonly")).rows[0];
+ const n=(await c.query('SELECT count(*)::int n FROM '+table)).rows[0].n;return {identity,count:n};}finally{await c.end().catch(()=>{});}
+}
+(async()=>{
+ assert(fs.existsSync('/Users/macstudio3/.pm2/rpc.sock'));
+ // Direct read-only RPC: no PM2 API initialization, module launch, or daemon start.
+ const list=await new Promise((resolve,reject)=>{rpcSocket=axon.socket('req');const client=new rpc.Client(rpcSocket);rpcSocket.on('error',reject);rpcSocket.connect('/Users/macstudio3/.pm2/rpc.sock');client.call('getMonitorData',{},(err,data)=>{rpcSocket.close();err?reject(err):resolve(data);});});
+ phase='service probes';
+ const dump=JSON.parse(fs.readFileSync('/Users/macstudio3/.pm2/dump.pm2'));
+ for(const s of list){const e=s.pm2_env,targets=[];for(const [key,value] of Object.entries(e)){if(typeof value==='string'&&/^postgres(?:ql)?:\/\//.test(value))targets.push({key,...target(value)});else if(['PGHOST','DB_HOST','PGDATABASE'].includes(key))targets.push({key,value});}
+ report.services.push({name:s.name,pid:s.pid,status:e.status,cwd:e.pm_cwd,script:e.pm_exec_path,targets});}
+ for(const name of ['interiordesignershowroom','patterndesignlab']){
+ const s=list.filter(x=>x.name===name);assert.equal(s.length,1);const e=s[0].pm2_env,dir=path.join(root,name),showroom=name==='interiordesignershowroom';
+ assert.equal(e.pm_cwd,dir);assert.equal(e.pm_exec_path,path.join(dir,'server.js'));assert.equal(e.status,'online');
+ const local=require(path.join(dir,'node_modules/dotenv')).parse(fs.readFileSync(path.join(dir,'.env')));
+ const env={...local,...e,...e.env};
+ const saved=dump.filter(x=>x.name===name);assert.equal(saved.length,1);
+ const source=fs.readFileSync(path.join(dir,showroom?'lib/db.js':'server.js'),'utf8');
+ const pool=source.match(/new Pool\(([\s\S]*?)\);/);assert(pool);
+ const config=require('vm').runInNewContext('('+pool[1]+')',{process:{env}},{timeout:1000});
+ const pg=require(path.join(dir,'node_modules/pg'));
+ const probe=await dbProbe(pg,config,showroom?'products':'designs');
+ check(name+' source/effective DB identity and socket',probe.identity.database===(showroom?'idshowroom':'patterndesignlab')&&probe.identity.client_addr===null&&probe.identity.readonly==='on',probe);
+ const savedEnv={...local,...saved[0],...saved[0].env};
+ const durableConfig=require('vm').runInNewContext('('+pool[1]+')',{process:{env:savedEnv}},{timeout:1000});
+ const durable=new pg.Client(durableConfig),live=new pg.Client(config);
+ check(name+' durable host/db/role matches runtime',durable.connectionParameters.host==='/tmp'&&['host','database','user'].every(k=>durable.connectionParameters[k]===live.connectionParameters[k]),{host:durable.connectionParameters.host,database:durable.connectionParameters.database,role:durable.connectionParameters.user,reboot_tested:false});
+ if(showroom)check(name+' durable URL fields and dotenv',saved[0].DATABASE_URL===e.DATABASE_URL&&saved[0].env.DATABASE_URL===e.DATABASE_URL&&local.DATABASE_URL===e.DATABASE_URL,{effective:target(e.DATABASE_URL),dump_top:target(saved[0].DATABASE_URL),dump_nested:target(saved[0].env.DATABASE_URL),dotenv:target(local.DATABASE_URL)});
+ const bad=new pg.Client({host:'/tmp/TK-11438-missing-socket',database:probe.identity.database,connectionTimeoutMillis:1000});
+ try{await bad.connect();check(name+' missing socket',false,'connected unexpectedly');}catch(err){check(name+' missing socket',err.code==='ENOENT',{code:err.code});}finally{await bad.end().catch(()=>{});}
+ const user=env[showroom?'ADMIN_USER':'PDL_USER']||'admin',password=env[showroom?'ADMIN_PASS':'PDL_PASS']||'DW2024!';
+ const base='http://127.0.0.1:'+(env.PORT||(showroom?9820:9781));
+ const route=showroom?'/admin/brands':'/api/designs?limit=2&sort=sku_az';
+ for(const authorized of [false,true]){const r=await fetch(base+route,{headers:authorized?{authorization:'Basic '+Buffer.from(user+':'+password).toString('base64')}:{},signal:AbortSignal.timeout(10000)});const body=await r.text();check(name+(authorized?' authenticated read':' auth boundary'),r.status===(authorized?200:401),{status:r.status,bytes:Buffer.byteLength(body)});}
+ const readRoute=showroom?'/api/brands':'/api/healthz';const r=await fetch(base+readRoute,{signal:AbortSignal.timeout(10000)});await r.arrayBuffer();check(name+' DB-backed HTTP route',r.status===200,{route:readRoute,status:r.status});
+ let tcp='';try{tcp=cp.execFileSync('lsof',['-nP','-a','-p',String(s[0].pid),'-iTCP'],{encoding:'utf8',timeout:5000});}catch(err){if(err.status!==1)throw err;tcp=err.stdout?.toString()||'';}
+ check(name+' process has no TCP 5432',!/:5432\b/.test(tcp),{pid:s[0].pid});
+ }
+ const pg=require(path.join(root,'patterndesignlab/node_modules/pg'));const c=new pg.Client({host:'/tmp',database:'postgres',user:'macstudio3',connectionTimeoutMillis:4000,options:'-c default_transaction_read_only=on'});
+ try{await c.connect();report.postgres=(await c.query("SELECT current_setting('listen_addresses') listen_addresses,current_setting('unix_socket_directories') socket_dirs")).rows[0];report.clients=(await c.query("SELECT datname,usename,application_name,client_addr::text,client_port,pid,state FROM pg_stat_activity WHERE backend_type='client backend' AND pid<>pg_backend_pid() ORDER BY datname,pid")).rows;}finally{await c.end().catch(()=>{});}
+ report.verdict=report.checks.every(x=>x.verdict==='PASS')?'FIRST_BATCH_PASS_FULL_FLEET_BLOCKED':'FAIL';
+})().catch(err=>{report.error={name:err.name,code:err.code};report.verdict='FAIL';process.exitCode=1;}).finally(()=>{clearTimeout(timer);fs.writeFileSync(path.join(__dirname,'verification/reverification.json'),JSON.stringify(report,null,2)+'\n');console.log(JSON.stringify({verdict:report.verdict,checks:report.checks,postgres:report.postgres,clients:report.clients,error:report.error},null,2));});
diff --git a/runtime.cjs b/runtime.cjs
index 62ffb5a..d59bb3c 100644
--- a/runtime.cjs
+++ b/runtime.cjs
@@ -1,21 +1,23 @@
-// Read-only metadata from the existing PM2 daemon. Never auto-start a daemon.
+// Direct read-only PM2 RPC; no API startup or daemon-launch fallback.
const fs = require('node:fs');
const path = require('node:path');
-const pm2 = require('/Users/macstudio3/.npm-global/lib/node_modules/pm2');
+const deps = '/Users/macstudio3/.npm-global/lib/node_modules/pm2/node_modules/';
+const axon = require(deps+'pm2-axon'), rpc = require(deps+'pm2-axon-rpc');
+const req = axon.socket('req'), client = new rpc.Client(req);
const out = path.join(__dirname, 'verification/runtime.json');
if (!fs.existsSync('/Users/macstudio3/.pm2/rpc.sock')) throw Error('Existing PM2 socket required');
-const timeout = setTimeout(() => { pm2.disconnect(); process.exit(2); }, 15000);
-pm2.connect(true, (err) => {
- if (err) throw err;
- pm2.list((err, list) => {
- pm2.disconnect(); clearTimeout(timeout);
+const timeout = setTimeout(() => { req.close(); process.exit(2); }, 15000);
+req.on('error', () => { clearTimeout(timeout); req.close(); process.exitCode=1; });
+req.connect('/Users/macstudio3/.pm2/rpc.sock');
+client.call('getMonitorData', {}, (err, list) => {
+ req.close(); clearTimeout(timeout);
if (err) throw err;
const rows = list.map(p => {
const e = p.pm2_env || {};
const targets = [];
for (const [key, value] of Object.entries(e)) {
if (typeof value !== 'string') continue;
- if (/postgres(?:ql)?:\/\//.test(value)) {
+ if (/^postgres(?:ql)?:\/\//.test(value)) {
try {
const u = new URL(value);
targets.push({key, host:u.hostname, port:u.port || '5432', database:u.pathname.slice(1), socketHost:u.searchParams.get('host')});
@@ -26,5 +28,4 @@ pm2.connect(true, (err) => {
});
fs.writeFileSync(out, JSON.stringify({timestamp:new Date().toISOString(), services:rows}, null, 2)+'\n');
console.log(JSON.stringify({services:rows.length, relevant:rows.filter(r=>/interiordesignershowroom|patterndesign|norma/i.test(r.name+' '+r.cwd)), evidence:out},null,2));
- });
});
diff --git a/verification/e2e-proof.json b/verification/e2e-proof.json
index 028d09c..b1dce78 100644
--- a/verification/e2e-proof.json
+++ b/verification/e2e-proof.json
@@ -1,60 +1,53 @@
{
"intent": "Migrate every local Postgres TCP consumer to Unix sockets",
"ticket": "TK-11438",
- "timestamp": "2026-09-11T15:29:36.490487+00:00",
- "risk_tier": "R3 preparation; R4 rollout gated",
- "build_identity": "Evidence commit follows; resolve with git log",
+ "timestamp": "2026-09-11T16:53:55.686878+00:00",
+ "risk_tier": "R3 read-only revalidation; R4 next rollout not authorized",
+ "build_identity": "Resolve documentation and proof scripts with git log -1; service commits a482499/bf33afd unchanged by this turn",
"environment": "macstudio3; PostgreSQL 14.23; /tmp socket; existing PM2 daemon",
"verdict": "PARTIAL_BLOCKED",
"assertions": [
{
- "check": "Reconcile original inventory",
+ "check": "First-batch independent revalidation",
"verdict": "PASS",
- "detail": "218 entries = 217 existing files plus ./ directory; broader scan 841 candidates; union 851 entries. Candidates are not confirmed consumers."
+ "evidence": "verification/reverification.json",
+ "detail": "15 assertions pass: source/effective socket identity, saved restart configuration, missing socket ENOENT, auth 401/200, DB-backed GETs, no process TCP 5432. Reboot not performed."
},
{
- "check": "Installed pg driver socket and missing-socket error paths",
+ "check": "Ken installed driver preflight",
"verdict": "PASS",
- "evidence": "verification/socket-proof.json",
- "detail": "6/6 passed. No application boot or database write. Every opened test connection closed."
+ "evidence": "verification/ken-driver-proof.json",
+ "detail": "Four socket/read-only/no-fallback assertions across ken and bertha_betting; no app boot."
},
{
- "check": "Capture existing service environment metadata",
+ "check": "Next batch exact scheduler and .env provenance",
"verdict": "PASS",
- "evidence": "verification/runtime.json",
- "detail": "147 PM2 services. Existing daemon only; pm2.connect(true). Metadata is not proof that each environment value is used."
+ "evidence": "next-batch.json; verification/ken-schedulers.json; verification/env-provenance.json"
},
{
- "check": "Exact proposed replacement preconditions",
- "verdict": "PASS",
- "detail": "Two source files hashed; each old expression occurs exactly once."
- },
- {
- "check": "Live configuration migration/restart and authenticated DB-backed app journey",
- "verdict": "PASS",
- "reason": "Requires production approval; no live changes applied.",
- "detail": "Approved first batch applied and services restarted individually; showroom /healthz + /api/brands 200; Pattern Design Lab /api/healthz 200 and read-only socket query returned 1694 designs."
+ "check": "Complete all consumers and representative scheduled cycles",
+ "verdict": "SKIP",
+ "reason": "Still incomplete. Active Ken TCP seen; remaining inventory is candidates, not migrated consumers."
},
{
- "check": "Complete scheduled job, remote target, inherited environment and full fleet coverage",
+ "check": "Ken app and scheduled job cutover",
"verdict": "SKIP",
- "reason": "Not complete; must resolve before closing TCP."
+ "reason": "Explicit production/spend/send gates; approval draft prepared."
},
{
- "check": "Post-cutover socket-only observation and rollback rehearsal",
- "verdict": "PASS",
- "reason": "Cutover not authorized or performed.",
- "detail": "Post-cutover pg_stat_activity showed idshowroom over socket; direct Pattern Design Lab query reported socket=true and read_only=on. Rollback remains documented and unneeded."
+ "check": "Restart rollback rehearsal and reboot persistence test",
+ "verdict": "SKIP",
+ "reason": "No restart/reboot/rollback performed this turn; saved field-level configuration inspected only."
}
],
"commands": [
- "python3 inventory.py",
- "node runtime.cjs",
- "node socket-proof.cjs",
- "psql -X -w -h /tmp -d postgres -At -c (read-only server settings and pg_stat_activity JSON query)"
+ "node reverify.cjs (direct getMonitorData RPC, installed pg SELECTs, authenticated GETs, lsof)",
+ "node ken-proof.cjs",
+ "Read Ken start.sh, two Pool sites, .env key metadata and three launchd plists",
+ "psql read-only pg_stat_activity/settings SELECT"
],
- "cleanup": "Test connections closed. Only preparation artifacts and ticket/session metadata changed. No service source/config changes or catalog writes.",
- "rollback": "No live rollback required; proposed rollback described in APPROVAL.md",
+ "cleanup": "All test DB connections closed. Only evidence/verification scripts and ticket metadata changed this turn; prior first-batch source/runtime mutations remain recorded in first_batch.",
+ "rollback": "Prior first-batch scoped rollback helper is in peer evidence; not executed or claimed rehearsed. Next batch must privately capture exact fields and rehearse rollback before restart.",
"first_batch": {
"showroom_commit": "a482499",
"patterndesignlab_commit": "bf33afd",
@@ -71,5 +64,11 @@
"pdl_read_only": "on",
"showroom_client_addr": null
}
+ },
+ "peer_handoff": {
+ "message": "M-03034",
+ "peer": "codex-run-11401",
+ "change": "Two saved showroom DATABASE_URL fields only, no restart",
+ "acceptance": "Fresh independent verification/reverification.json passes"
}
}
diff --git a/verification/env-provenance.json b/verification/env-provenance.json
new file mode 100644
index 0000000..ee28ab6
--- /dev/null
+++ b/verification/env-provenance.json
@@ -0,0 +1,16 @@
+[
+ {
+ "file": "/Users/macstudio3/Projects/Ken/kalshi-dash/.env",
+ "sha256": "07e8091a1cc0d968cef79612ba91a4d4a177975d666967e6054c5ef8199203b1",
+ "keys": [
+ {
+ "key": "DATABASE_URL",
+ "line": 3
+ },
+ {
+ "key": "KEN_DATABASE_URL",
+ "line": 4
+ }
+ ]
+ }
+]
diff --git a/verification/ken-driver-proof.json b/verification/ken-driver-proof.json
new file mode 100644
index 0000000..c393895
--- /dev/null
+++ b/verification/ken-driver-proof.json
@@ -0,0 +1,40 @@
+{
+ "timestamp": "2026-09-11T16:51:50.882Z",
+ "checks": [
+ {
+ "database": "ken",
+ "test": "installed-driver-socket",
+ "verdict": "PASS",
+ "identity": {
+ "database": "ken",
+ "role": "macstudio3",
+ "socket": true,
+ "readonly": "on"
+ }
+ },
+ {
+ "database": "ken",
+ "test": "no-fallback",
+ "verdict": "PASS",
+ "code": "ENOENT"
+ },
+ {
+ "database": "bertha_betting",
+ "test": "installed-driver-socket",
+ "verdict": "PASS",
+ "identity": {
+ "database": "bertha_betting",
+ "role": "macstudio3",
+ "socket": true,
+ "readonly": "on"
+ }
+ },
+ {
+ "database": "bertha_betting",
+ "test": "no-fallback",
+ "verdict": "PASS",
+ "code": "ENOENT"
+ }
+ ],
+ "limits": "Driver preflight only; app and scheduled operational journeys have not been migrated or executed."
+}
diff --git a/verification/ken-schedulers.json b/verification/ken-schedulers.json
new file mode 100644
index 0000000..3e22f6e
--- /dev/null
+++ b/verification/ken-schedulers.json
@@ -0,0 +1,45 @@
+[
+ {
+ "path": "/Users/macstudio3/Library/LaunchAgents/com.steve.ken-reconcile-canary.plist",
+ "sha256": "5bae8a547e6680e2ac071a95ad0e57c74aa89449c4aaffc2540f40d0934f18f5",
+ "label": "com.steve.ken-reconcile-canary",
+ "program": [
+ "/opt/homebrew/bin/node",
+ "/Users/macstudio3/Projects/Ken/kalshi-dash/scripts/reconcile-canary.mjs"
+ ],
+ "environment": [
+ {
+ "key": "KEN_DATABASE_URL",
+ "hostname": "localhost",
+ "database": "ken",
+ "host_option": null
+ }
+ ],
+ "interval": 1800,
+ "keep_alive": null
+ },
+ {
+ "path": "/Users/macstudio3/Library/LaunchAgents/com.steve.ken-follow-winners.plist",
+ "sha256": "2546188beb1642e65daff0aaecf04287556a4226081bea3c8a9d2d95897a1fa6",
+ "label": "com.steve.ken-follow-winners",
+ "program": [
+ "/bin/bash",
+ "/Users/macstudio3/Projects/Ken/kalshi-dash/follow-the-winners-check.sh"
+ ],
+ "environment": [],
+ "interval": 3600,
+ "keep_alive": null
+ },
+ {
+ "path": "/Users/macstudio3/Library/LaunchAgents/com.steve.ken-safemode-guard.plist",
+ "sha256": "b0a8d749b2577ba88a662ce56d8bf947ca49ba85d1601da374fcd8971008df37",
+ "label": "com.steve.ken-safemode-guard",
+ "program": [
+ "/bin/bash",
+ "/Users/macstudio3/Projects/Ken/kalshi-dash/ken-safemode-guard.sh"
+ ],
+ "environment": [],
+ "interval": null,
+ "keep_alive": true
+ }
+]
diff --git a/verification/reverification.json b/verification/reverification.json
new file mode 100644
index 0000000..1393d8b
--- /dev/null
+++ b/verification/reverification.json
@@ -0,0 +1,1441 @@
+{
+ "ticket": "TK-11438",
+ "timestamp": "2026-09-11T16:42:27.004Z",
+ "checks": [
+ {
+ "name": "interiordesignershowroom source/effective DB identity and socket",
+ "verdict": "PASS",
+ "detail": {
+ "identity": {
+ "database": "idshowroom",
+ "role": "macstudio3",
+ "client_addr": null,
+ "readonly": "on"
+ },
+ "count": 3201
+ }
+ },
+ {
+ "name": "interiordesignershowroom durable host/db/role matches runtime",
+ "verdict": "PASS",
+ "detail": {
+ "host": "/tmp",
+ "database": "idshowroom",
+ "role": "macstudio3",
+ "reboot_tested": false
+ }
+ },
+ {
+ "name": "interiordesignershowroom durable URL fields and dotenv",
+ "verdict": "PASS",
+ "detail": {
+ "effective": {
+ "host": "",
+ "database": "idshowroom",
+ "socketHost": "/tmp",
+ "port": "5432"
+ },
+ "dump_top": {
+ "host": "",
+ "database": "idshowroom",
+ "socketHost": "/tmp",
+ "port": "5432"
+ },
+ "dump_nested": {
+ "host": "",
+ "database": "idshowroom",
+ "socketHost": "/tmp",
+ "port": "5432"
+ },
+ "dotenv": {
+ "host": "",
+ "database": "idshowroom",
+ "socketHost": "/tmp",
+ "port": "5432"
+ }
+ }
+ },
+ {
+ "name": "interiordesignershowroom missing socket",
+ "verdict": "PASS",
+ "detail": {
+ "code": "ENOENT"
+ }
+ },
+ {
+ "name": "interiordesignershowroom auth boundary",
+ "verdict": "PASS",
+ "detail": {
+ "status": 401,
+ "bytes": 13
+ }
+ },
+ {
+ "name": "interiordesignershowroom authenticated read",
+ "verdict": "PASS",
+ "detail": {
+ "status": 200,
+ "bytes": 274749
+ }
+ },
+ {
+ "name": "interiordesignershowroom DB-backed HTTP route",
+ "verdict": "PASS",
+ "detail": {
+ "route": "/api/brands",
+ "status": 200
+ }
+ },
+ {
+ "name": "interiordesignershowroom process has no TCP 5432",
+ "verdict": "PASS",
+ "detail": {
+ "pid": 12358
+ }
+ },
+ {
+ "name": "patterndesignlab source/effective DB identity and socket",
+ "verdict": "PASS",
+ "detail": {
+ "identity": {
+ "database": "patterndesignlab",
+ "role": "dw_admin",
+ "client_addr": null,
+ "readonly": "on"
+ },
+ "count": 1694
+ }
+ },
+ {
+ "name": "patterndesignlab durable host/db/role matches runtime",
+ "verdict": "PASS",
+ "detail": {
+ "host": "/tmp",
+ "database": "patterndesignlab",
+ "role": "dw_admin",
+ "reboot_tested": false
+ }
+ },
+ {
+ "name": "patterndesignlab missing socket",
+ "verdict": "PASS",
+ "detail": {
+ "code": "ENOENT"
+ }
+ },
+ {
+ "name": "patterndesignlab auth boundary",
+ "verdict": "PASS",
+ "detail": {
+ "status": 401,
+ "bytes": 13
+ }
+ },
+ {
+ "name": "patterndesignlab authenticated read",
+ "verdict": "PASS",
+ "detail": {
+ "status": 200,
+ "bytes": 1084
+ }
+ },
+ {
+ "name": "patterndesignlab DB-backed HTTP route",
+ "verdict": "PASS",
+ "detail": {
+ "route": "/api/healthz",
+ "status": 200
+ }
+ },
+ {
+ "name": "patterndesignlab process has no TCP 5432",
+ "verdict": "PASS",
+ "detail": {
+ "pid": 20357
+ }
+ }
+ ],
+ "services": [
+ {
+ "name": "pm2-logrotate",
+ "pid": 46327,
+ "status": "online",
+ "cwd": "/Users/macstudio3/.pm2/modules/pm2-logrotate/node_modules/pm2-logrotate",
+ "script": "/Users/macstudio3/.pm2/modules/pm2-logrotate/node_modules/pm2-logrotate/app.js",
+ "targets": []
+ },
+ {
+ "name": "abramsego",
+ "pid": 44001,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/AbramsEgo",
+ "script": "/Users/macstudio3/Projects/AbramsEgo/server.js",
+ "targets": []
+ },
+ {
+ "name": "pattern-vault",
+ "pid": 8266,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/pattern-vault",
+ "script": "/Users/macstudio3/Projects/pattern-vault/server.js",
+ "targets": []
+ },
+ {
+ "name": "cabinet-mindmap",
+ "pid": 8174,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/agent-cabinet",
+ "script": "/Users/macstudio3/Projects/agent-cabinet/server.js",
+ "targets": []
+ },
+ {
+ "name": "patterndesignlab",
+ "pid": 20357,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/patterndesignlab",
+ "script": "/Users/macstudio3/Projects/patterndesignlab/server.js",
+ "targets": [
+ {
+ "key": "PGHOST",
+ "value": "/tmp"
+ }
+ ]
+ },
+ {
+ "name": "reidwitlin-landing",
+ "pid": 8291,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/reidwitlin-landing",
+ "script": "/Users/macstudio3/Projects/reidwitlin-landing/server.js",
+ "targets": []
+ },
+ {
+ "name": "abramsos",
+ "pid": 33618,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/AbramsOS",
+ "script": "/Users/macstudio3/Projects/AbramsOS/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-pitch-followup",
+ "pid": 8254,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-pitch-followup",
+ "script": "/Users/macstudio3/Projects/dw-pitch-followup/server.js",
+ "targets": []
+ },
+ {
+ "name": "wpb-sales-dashboard",
+ "pid": 8304,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/wpb-sales-dashboard",
+ "script": "/Users/macstudio3/Projects/wpb-sales-dashboard/server.js",
+ "targets": []
+ },
+ {
+ "name": "crezana-internal",
+ "pid": 8192,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/crezana-internal",
+ "script": "/Users/macstudio3/Projects/crezana-internal/server.js",
+ "targets": [
+ {
+ "key": "PGHOST",
+ "value": "/tmp"
+ }
+ ]
+ },
+ {
+ "name": "fromental-internal",
+ "pid": 8298,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/fromental-internal",
+ "script": "/Users/macstudio3/Projects/fromental-internal/server.js",
+ "targets": []
+ },
+ {
+ "name": "gracie-internal",
+ "pid": 8186,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/gracie-internal",
+ "script": "/Users/macstudio3/Projects/gracie-internal/server.js",
+ "targets": [
+ {
+ "key": "PG",
+ "host": "localhost",
+ "database": "dw_unified",
+ "socketHost": null,
+ "port": "5432"
+ }
+ ]
+ },
+ {
+ "name": "zuber-internal",
+ "pid": 8273,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/zuber-internal",
+ "script": "/Users/macstudio3/Projects/zuber-internal/server.js",
+ "targets": []
+ },
+ {
+ "name": "wpb-control-panel",
+ "pid": 27733,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/pattern-vault/wpb-uploaders",
+ "script": "/Users/macstudio3/Projects/pattern-vault/wpb-uploaders/control-panel.js",
+ "targets": []
+ },
+ {
+ "name": "ken",
+ "pid": 92641,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/Ken/kalshi-dash",
+ "script": "/Users/macstudio3/Projects/Ken/kalshi-dash/start.sh",
+ "targets": [
+ {
+ "key": "KEN_DATABASE_URL",
+ "host": "localhost",
+ "database": "ken",
+ "socketHost": null,
+ "port": "5432"
+ },
+ {
+ "key": "DATABASE_URL",
+ "host": "localhost",
+ "database": "bertha_betting",
+ "socketHost": null,
+ "port": "5432"
+ }
+ ]
+ },
+ {
+ "name": "slack-idea-board",
+ "pid": 11035,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/slack-idea-board",
+ "script": "/Users/macstudio3/Projects/slack-idea-board/server.js",
+ "targets": []
+ },
+ {
+ "name": "slack-to-steve-dash",
+ "pid": 8292,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/slack-to-steve",
+ "script": "/Users/macstudio3/Projects/slack-to-steve/server.js",
+ "targets": []
+ },
+ {
+ "name": "ImportNewSkufromURL-9830",
+ "pid": 27750,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/Designer-Wallcoverings/DW-Programming/ImportNewSkufromURL",
+ "script": "/Users/macstudio3/Projects/Designer-Wallcoverings/DW-Programming/ImportNewSkufromURL/node_modules/next/dist/bin/next",
+ "targets": []
+ },
+ {
+ "name": "greenland-internal",
+ "pid": 85706,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/greenland-onboard",
+ "script": "/Users/macstudio3/Projects/greenland-onboard/server.js",
+ "targets": []
+ },
+ {
+ "name": "slack-socket",
+ "pid": 61762,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/slack-to-steve",
+ "script": "/Users/macstudio3/Projects/slack-to-steve/socket.mjs",
+ "targets": []
+ },
+ {
+ "name": "dw-activation-calendar",
+ "pid": 8334,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-activation-calendar",
+ "script": "/Users/macstudio3/Projects/dw-activation-calendar/server.js",
+ "targets": []
+ },
+ {
+ "name": "ai-workforce",
+ "pid": 8322,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ai-workforce",
+ "script": "/Users/macstudio3/Projects/ai-workforce/server.js",
+ "targets": []
+ },
+ {
+ "name": "prev-estimate-instant",
+ "pid": 8328,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/estimate-instant",
+ "script": "/Users/macstudio3/Projects/estimate-instant/server.js",
+ "targets": []
+ },
+ {
+ "name": "gate-estimate-instant",
+ "pid": 27797,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/gate-proxy.js",
+ "targets": []
+ },
+ {
+ "name": "prev-trade-portal",
+ "pid": 8316,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/trade-portal",
+ "script": "/Users/macstudio3/Projects/trade-portal/server.js",
+ "targets": []
+ },
+ {
+ "name": "gate-trade-portal",
+ "pid": 27809,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/gate-proxy.js",
+ "targets": []
+ },
+ {
+ "name": "prev-sample-box",
+ "pid": 8310,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/sample-box",
+ "script": "/Users/macstudio3/Projects/sample-box/server.js",
+ "targets": []
+ },
+ {
+ "name": "gate-sample-box",
+ "pid": 27821,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/gate-proxy.js",
+ "targets": []
+ },
+ {
+ "name": "prev-reno-visualizer",
+ "pid": 8346,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/reno-visualizer",
+ "script": "/Users/macstudio3/Projects/reno-visualizer/server.js",
+ "targets": []
+ },
+ {
+ "name": "gate-reno-visualizer",
+ "pid": 27834,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/gate-proxy.js",
+ "targets": []
+ },
+ {
+ "name": "prev-permit-radar",
+ "pid": 8359,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/permit-radar",
+ "script": "/Users/macstudio3/Projects/permit-radar/server.js",
+ "targets": []
+ },
+ {
+ "name": "gate-permit-radar",
+ "pid": 27851,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/gate-proxy.js",
+ "targets": []
+ },
+ {
+ "name": "prev-accelerator",
+ "pid": 27858,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/repo-viewer.js",
+ "targets": []
+ },
+ {
+ "name": "gate-accelerator",
+ "pid": 27868,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/claude-webdev-accelerator",
+ "script": "/Users/macstudio3/Projects/claude-webdev-accelerator/scripts/gate-proxy.js",
+ "targets": []
+ },
+ {
+ "name": "schumacher-internal",
+ "pid": 8374,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/schumacher-internal",
+ "script": "/Users/macstudio3/Projects/schumacher-internal/server.js",
+ "targets": []
+ },
+ {
+ "name": "colorwheel",
+ "pid": 8407,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-marketing-reels/colorwheel",
+ "script": "/Users/macstudio3/Projects/dw-marketing-reels/colorwheel/server.js",
+ "targets": []
+ },
+ {
+ "name": "fantasea-consulting",
+ "pid": 8111,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/fantasea-consulting",
+ "script": "/Users/macstudio3/Projects/fantasea-consulting/server.js",
+ "targets": []
+ },
+ {
+ "name": "animals-viewer",
+ "pid": 27916,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/animals",
+ "script": "/Users/macstudio3/Projects/animals/src/server/index.js",
+ "targets": []
+ },
+ {
+ "name": "consulting-intake",
+ "pid": 8340,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/consulting-intake",
+ "script": "/Users/macstudio3/Projects/consulting-intake/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-marketing-reels-studio",
+ "pid": 8248,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-marketing-reels",
+ "script": "/Users/macstudio3/Projects/dw-marketing-reels/server.js",
+ "targets": []
+ },
+ {
+ "name": "usrealestate",
+ "pid": 10539,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/nationalrealestate",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "usre-broker-rotate",
+ "pid": 0,
+ "status": "stopped",
+ "cwd": "/Users/macstudio3/Projects/nationalrealestate",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "prestige-car-wash",
+ "pid": 8353,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/prestige-car-wash",
+ "script": "/Users/macstudio3/Projects/prestige-car-wash/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-cadence-next2",
+ "pid": 12557,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-cadence-next2",
+ "script": "/Users/macstudio3/Projects/dw-cadence-next2/server.js",
+ "targets": []
+ },
+ {
+ "name": "rigo-line-viewer",
+ "pid": 8365,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/rigo-line-viewer",
+ "script": "/Users/macstudio3/Projects/rigo-line-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "agentabrams-viewer",
+ "pid": 8401,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/agentabrams-viewer",
+ "script": "/Users/macstudio3/Projects/agentabrams-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "model-arena",
+ "pid": 61343,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/model-arena",
+ "script": "/Users/macstudio3/Projects/model-arena/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-domain-viewer",
+ "pid": 8210,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-domain-viewer",
+ "script": "/Users/macstudio3/Projects/dw-domain-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "whimsical-viewer",
+ "pid": 8514,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/wild-wallcoverings",
+ "script": "/Users/macstudio3/Projects/wild-wallcoverings/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-internal-gateway",
+ "pid": 8389,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-internal-gateway",
+ "script": "/Users/macstudio3/Projects/dw-internal-gateway/server.js",
+ "targets": []
+ },
+ {
+ "name": "internal-dw-dns",
+ "pid": 3868,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-internal-gateway",
+ "script": "/opt/homebrew/opt/dnsmasq/sbin/dnsmasq",
+ "targets": []
+ },
+ {
+ "name": "all-dw-local",
+ "pid": 84927,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/all-designerwallcoverings",
+ "script": "/Users/macstudio3/Projects/all-designerwallcoverings/server.js",
+ "targets": []
+ },
+ {
+ "name": "vahallan-line-viewer",
+ "pid": 8571,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/vahallan-line-viewer",
+ "script": "/Users/macstudio3/Projects/vahallan-line-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "clipreviewbydave",
+ "pid": 8559,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/clipreviewbydave",
+ "script": "/Users/macstudio3/Projects/clipreviewbydave/server.js",
+ "targets": []
+ },
+ {
+ "name": "ticket-board",
+ "pid": 36347,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ticket-system",
+ "script": "/Users/macstudio3/Projects/ticket-system/server.js",
+ "targets": []
+ },
+ {
+ "name": "muralsource-internal",
+ "pid": 8416,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/muralsource-internal",
+ "script": "/Users/macstudio3/Projects/muralsource-internal/server.js",
+ "targets": []
+ },
+ {
+ "name": "projects-agentabrams",
+ "pid": 8434,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/projects-agentabrams",
+ "script": "/Users/macstudio3/Projects/projects-agentabrams/server.js",
+ "targets": []
+ },
+ {
+ "name": "build-pages",
+ "pid": 8204,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/build-pages",
+ "script": "/Users/macstudio3/Projects/build-pages/server.js",
+ "targets": []
+ },
+ {
+ "name": "approvals-viewer",
+ "pid": 8162,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/approvals-viewer",
+ "script": "/Users/macstudio3/Projects/approvals-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "hos-feed-api",
+ "pid": 60733,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/homesonspec",
+ "script": "/Users/macstudio3/Projects/homesonspec/scripts/feed-api.mjs",
+ "targets": []
+ },
+ {
+ "name": "hos-permit-viewer",
+ "pid": 28103,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/homesonspec",
+ "script": "/Users/macstudio3/Projects/homesonspec/scripts/permit-viewer.mjs",
+ "targets": []
+ },
+ {
+ "name": "hos-engine",
+ "pid": 28104,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/homesonspec",
+ "script": "/Users/macstudio3/Projects/homesonspec/scripts/engine-dashboard.mjs",
+ "targets": []
+ },
+ {
+ "name": "usre-rentv-feed",
+ "pid": 48408,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/nationalrealestate",
+ "script": "/Users/macstudio3/Projects/nationalrealestate/scripts/rentv-feed.mjs",
+ "targets": []
+ },
+ {
+ "name": "approvals-rollup",
+ "pid": 13273,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/approvals-viewer",
+ "script": "/Users/macstudio3/Projects/approvals-viewer/rollup.js",
+ "targets": []
+ },
+ {
+ "name": "dw-signup-fulfillment",
+ "pid": 32303,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-signup-fulfillment",
+ "script": "/Users/macstudio3/Projects/dw-signup-fulfillment/server.js",
+ "targets": []
+ },
+ {
+ "name": "rentv",
+ "pid": 8595,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/rentv",
+ "script": "/Users/macstudio3/Projects/rentv/server.js",
+ "targets": [
+ {
+ "key": "PR_DATABASE_URL",
+ "unresolved": true
+ }
+ ]
+ },
+ {
+ "name": "tools-dw-hub",
+ "pid": 8422,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/Users/macstudio3/Projects/tools-dw-hub/server.js",
+ "targets": []
+ },
+ {
+ "name": "new-engine",
+ "pid": 8428,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/new-engine",
+ "script": "/Users/macstudio3/Projects/new-engine/server.js",
+ "targets": [
+ {
+ "key": "PGHOST",
+ "value": "/tmp"
+ },
+ {
+ "key": "PGDATABASE",
+ "value": "dw_unified"
+ }
+ ]
+ },
+ {
+ "name": "hos-web",
+ "pid": 28165,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/homesonspec",
+ "script": "/bin/bash",
+ "targets": [
+ {
+ "key": "DATABASE_URL",
+ "host": "localhost",
+ "database": "homesonspec",
+ "socketHost": "/tmp",
+ "port": "5432"
+ }
+ ]
+ },
+ {
+ "name": "hos-admin",
+ "pid": 28182,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/homesonspec",
+ "script": "/bin/bash",
+ "targets": [
+ {
+ "key": "DATABASE_URL",
+ "host": "localhost",
+ "database": "homesonspec",
+ "socketHost": "/tmp",
+ "port": "5432"
+ }
+ ]
+ },
+ {
+ "name": "dwtool-150dpi",
+ "pid": 92630,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-recolor-v14",
+ "pid": 92621,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-image-to-room",
+ "pid": 96142,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-room-setting-app",
+ "pid": 96135,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-color-wheel",
+ "pid": 96132,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-tagger-kravet",
+ "pid": 92611,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-tagger-thibaut",
+ "pid": 92597,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-tagger-pr",
+ "pid": 92627,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-updater-maya",
+ "pid": 92610,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-vendor-dashboard-v2",
+ "pid": 92618,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-calendar",
+ "pid": 96144,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-master-listings",
+ "pid": 96136,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-system-dashboard",
+ "pid": 56073,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-pm2-dashboard",
+ "pid": 92601,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-recolor-v13",
+ "pid": 92623,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-recolor-v1",
+ "pid": 92647,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-import-sku",
+ "pid": 96138,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-updater-schumacher",
+ "pid": 92599,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-updater-architectural",
+ "pid": 92619,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-sku-to-blog",
+ "pid": 28407,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-settlement-review",
+ "pid": 28412,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "dwtool-dw-dashboard",
+ "pid": 24315,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/tools-dw-hub",
+ "script": "/bin/bash",
+ "targets": []
+ },
+ {
+ "name": "ticket-triage",
+ "pid": 8440,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ticket-triage-page",
+ "script": "/Users/macstudio3/Projects/ticket-triage-page/server.js",
+ "targets": []
+ },
+ {
+ "name": "vendor-command-center",
+ "pid": 69308,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/Designer-Wallcoverings/DW-Agents/vendor-command-center",
+ "script": "/Users/macstudio3/Projects/Designer-Wallcoverings/DW-Agents/vendor-command-center/run-local.sh",
+ "targets": []
+ },
+ {
+ "name": "interiordesignershowroom",
+ "pid": 12358,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/interiordesignershowroom",
+ "script": "/Users/macstudio3/Projects/interiordesignershowroom/server.js",
+ "targets": [
+ {
+ "key": "DATABASE_URL",
+ "host": "",
+ "database": "idshowroom",
+ "socketHost": "/tmp",
+ "port": "5432"
+ }
+ ]
+ },
+ {
+ "name": "waitline",
+ "pid": 8441,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/waitline",
+ "script": "/Users/macstudio3/Projects/waitline/server.js",
+ "targets": []
+ },
+ {
+ "name": "agent-ad-network",
+ "pid": 8460,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/agent-ad-network",
+ "script": "/Users/macstudio3/Projects/agent-ad-network/server.js",
+ "targets": []
+ },
+ {
+ "name": "ken-trade-siren",
+ "pid": 8222,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ken-trade-siren",
+ "script": "/Users/macstudio3/Projects/ken-trade-siren/server.js",
+ "targets": []
+ },
+ {
+ "name": "ga-allsites",
+ "pid": 28621,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ga-allsites",
+ "script": "/Users/macstudio3/Projects/ga-allsites/server.py",
+ "targets": []
+ },
+ {
+ "name": "ga4-dashboard",
+ "pid": 8565,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ga4-dashboard",
+ "script": "/Users/macstudio3/Projects/ga4-dashboard/server.js",
+ "targets": []
+ },
+ {
+ "name": "norma-instagram",
+ "pid": 8546,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/Norma/agents/instagram-agent",
+ "script": "/Users/macstudio3/Projects/Norma/agents/instagram-agent/server.js",
+ "targets": []
+ },
+ {
+ "name": "nodailyworries-local",
+ "pid": 8453,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/nodailyworries",
+ "script": "/Users/macstudio3/Projects/nodailyworries/server.js",
+ "targets": []
+ },
+ {
+ "name": "norma-email",
+ "pid": 9224,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/Norma",
+ "script": "/opt/homebrew/bin/npm",
+ "targets": []
+ },
+ {
+ "name": "calendar-agentabrams",
+ "pid": 8120,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/calendar-agentabrams",
+ "script": "/Users/macstudio3/Projects/calendar-agentabrams/server.js",
+ "targets": []
+ },
+ {
+ "name": "thedesignerlibrary",
+ "pid": 8228,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/thedesignerlibrary",
+ "script": "/Users/macstudio3/Projects/thedesignerlibrary/server.js",
+ "targets": []
+ },
+ {
+ "name": "ventura-corridor",
+ "pid": 28679,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ventura-corridor",
+ "script": "/Users/macstudio3/Projects/ventura-corridor/node_modules/.bin/tsx",
+ "targets": []
+ },
+ {
+ "name": "rentv-ad-engine",
+ "pid": 8667,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/rentv-ad-engine",
+ "script": "/Users/macstudio3/Projects/rentv-ad-engine/server.js",
+ "targets": []
+ },
+ {
+ "name": "rentv2026-preview",
+ "pid": 8459,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/rentv-2026",
+ "script": "/Users/macstudio3/Projects/rentv-2026/server.js",
+ "targets": []
+ },
+ {
+ "name": "ads-dashboard",
+ "pid": 8466,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ads-dashboard",
+ "script": "/Users/macstudio3/Projects/ads-dashboard/server.js",
+ "targets": []
+ },
+ {
+ "name": "rentv-targets-viewer",
+ "pid": 48522,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/rentv-licensed-targets",
+ "script": "/Users/macstudio3/Projects/rentv-licensed-targets/server.js",
+ "targets": []
+ },
+ {
+ "name": "labj-viewer",
+ "pid": 8478,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/labj-cre-banks",
+ "script": "/Users/macstudio3/Projects/labj-cre-banks/server.js",
+ "targets": []
+ },
+ {
+ "name": "socrata-cre-viewer",
+ "pid": 8472,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/socrata-cre-viewer",
+ "script": "/Users/macstudio3/Projects/socrata-cre-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-chat-analyzer",
+ "pid": 8508,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-chat-analyzer",
+ "script": "/Users/macstudio3/Projects/dw-chat-analyzer/server.js",
+ "targets": []
+ },
+ {
+ "name": "zendesk-chat-analyzer",
+ "pid": 8490,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/zendesk-chat-analyzer",
+ "script": "/Users/macstudio3/Projects/zendesk-chat-analyzer/server.js",
+ "targets": []
+ },
+ {
+ "name": "dw-chat-watch",
+ "pid": 29002,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/dw-chat-analyzer",
+ "script": "/Users/macstudio3/Projects/dw-chat-analyzer/watch.js",
+ "targets": []
+ },
+ {
+ "name": "buildingpermits-viewer",
+ "pid": 92579,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/la-socrata-ingester",
+ "script": "/Users/macstudio3/Projects/la-socrata-ingester/viewer/run-public.sh",
+ "targets": []
+ },
+ {
+ "name": "buildingpermits-tunnel",
+ "pid": 29026,
+ "status": "online",
+ "cwd": "/Users/macstudio3/.cloudflared",
+ "script": "/opt/homebrew/bin/cloudflared",
+ "targets": []
+ },
+ {
+ "name": "fmpro-review",
+ "pid": 8501,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/fm-wallpaper-sync/viewer",
+ "script": "/Users/macstudio3/Projects/fm-wallpaper-sync/viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "rentv-live-console",
+ "pid": 29058,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/rentv-sheet-enrich",
+ "script": "/Users/macstudio3/Projects/rentv-sheet-enrich/live_server.py",
+ "targets": []
+ },
+ {
+ "name": "ticket-action-viewer",
+ "pid": 8533,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ticket-action-viewer",
+ "script": "/Users/macstudio3/Projects/ticket-action-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "corvette-console",
+ "pid": 8693,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/corvette-dashboard-viewer",
+ "script": "/Users/macstudio3/Projects/corvette-dashboard-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "sample-followup-viewer",
+ "pid": 1788,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/sample-followup-sweep",
+ "script": "/Users/macstudio3/Projects/sample-followup-sweep/server.js",
+ "targets": []
+ },
+ {
+ "name": "ig-board-tunnel",
+ "pid": 91332,
+ "status": "online",
+ "cwd": "/Users/macstudio3/.cloudflared",
+ "script": "/opt/homebrew/bin/cloudflared",
+ "targets": []
+ },
+ {
+ "name": "gated-queue-runner",
+ "pid": 8526,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/gated-queue-runner",
+ "script": "/Users/macstudio3/Projects/gated-queue-runner/server.js",
+ "targets": []
+ },
+ {
+ "name": "re-flyers-viewer",
+ "pid": 8539,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/re-flyer-aggregator",
+ "script": "/Users/macstudio3/Projects/re-flyer-aggregator/server.js",
+ "targets": []
+ },
+ {
+ "name": "qwen38-viewer",
+ "pid": 7368,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/qwen38-viewer",
+ "script": "/Users/macstudio3/Projects/qwen38-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "crcp-valley",
+ "pid": 70998,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/commercialrealestate",
+ "script": "/Users/macstudio3/Projects/commercialrealestate/scripts/serve.js",
+ "targets": []
+ },
+ {
+ "name": "palisades-viewer",
+ "pid": 7767,
+ "status": "online",
+ "cwd": "/Users/macstudio3/palisades-data-product",
+ "script": "/Users/macstudio3/palisades-data-product/src/status_server.py",
+ "targets": []
+ },
+ {
+ "name": "fentucci-viewer",
+ "pid": 10334,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/fentucci-viewer",
+ "script": "/Users/macstudio3/Projects/fentucci-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "re-flyers-viewers",
+ "pid": 36014,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/re-flyer-aggregator",
+ "script": "/Users/macstudio3/Projects/re-flyer-aggregator/serve-viewers.mjs",
+ "targets": []
+ },
+ {
+ "name": "gated-morning-review",
+ "pid": 4267,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/gated-morning-review",
+ "script": "/Users/macstudio3/Projects/gated-morning-review/server.mjs",
+ "targets": []
+ },
+ {
+ "name": "marketing-command-center",
+ "pid": 36630,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/marketing-command-center",
+ "script": "/Users/macstudio3/Projects/marketing-command-center/server.js",
+ "targets": []
+ },
+ {
+ "name": "doing-viewer",
+ "pid": 8727,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/doing-viewer",
+ "script": "/Users/macstudio3/Projects/doing-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "ca-donations",
+ "pid": 8583,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ca-donations",
+ "script": "/Users/macstudio3/Projects/ca-donations/server.js",
+ "targets": []
+ },
+ {
+ "name": "cronjobs-viewer",
+ "pid": 57979,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/cronjobs-viewer",
+ "script": "/Users/macstudio3/Projects/cronjobs-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "gated-tunnel",
+ "pid": 75755,
+ "status": "online",
+ "cwd": "/Users/macstudio3/.cloudflared",
+ "script": "/opt/homebrew/bin/cloudflared",
+ "targets": []
+ },
+ {
+ "name": "followup2-tunnel",
+ "pid": 33614,
+ "status": "online",
+ "cwd": "/Users/macstudio3/.cloudflared",
+ "script": "/opt/homebrew/bin/cloudflared",
+ "targets": []
+ },
+ {
+ "name": "open-seo",
+ "pid": 44908,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/open-seo",
+ "script": "/Users/macstudio3/Projects/open-seo/node_modules/vite/bin/vite.js",
+ "targets": []
+ },
+ {
+ "name": "mfr-review-viewer",
+ "pid": 331,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/mfr-review-viewer-corruption",
+ "script": "/Users/macstudio3/Projects/mfr-review-viewer-corruption/server.js",
+ "targets": []
+ },
+ {
+ "name": "approval-viewer",
+ "pid": 13251,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/approval-viewer",
+ "script": "/Users/macstudio3/Projects/approval-viewer/server.js",
+ "targets": []
+ },
+ {
+ "name": "quadrille-house-site",
+ "pid": 23200,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/quadrille-house-site",
+ "script": "/Users/macstudio3/Projects/quadrille-house-site/server.js",
+ "targets": []
+ },
+ {
+ "name": "CelebritySignatures",
+ "pid": 98348,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/CelebritySignatures",
+ "script": "/Users/macstudio3/Projects/CelebritySignatures/server.js",
+ "targets": []
+ },
+ {
+ "name": "seo-ai-discovery-overnight",
+ "pid": 0,
+ "status": "stopped",
+ "cwd": "/Users/macstudio3/Projects/dw-fleet-registry",
+ "script": "/Users/macstudio3/Projects/dw-fleet-registry/run-search-audit-loop.sh",
+ "targets": []
+ },
+ {
+ "name": "credentials-center",
+ "pid": 13638,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/secrets-manager",
+ "script": "/Users/macstudio3/Projects/secrets-manager/update-viewer/server.mjs",
+ "targets": []
+ },
+ {
+ "name": "ungate-console",
+ "pid": 45202,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/ungate-console",
+ "script": "/Users/macstudio3/Projects/ungate-console/server.js",
+ "targets": []
+ },
+ {
+ "name": "adsense-manager",
+ "pid": 86582,
+ "status": "online",
+ "cwd": "/Users/macstudio3/.claude/skills/adsense-manager",
+ "script": "/Users/macstudio3/.claude/skills/adsense-manager/scripts/serve.mjs",
+ "targets": []
+ },
+ {
+ "name": "fleet-wall",
+ "pid": 48226,
+ "status": "online",
+ "cwd": "/Users/macstudio3/Projects/fleet-wall",
+ "script": "/Users/macstudio3/Projects/fleet-wall/server.mjs",
+ "targets": []
+ }
+ ],
+ "postgres": {
+ "listen_addresses": "localhost",
+ "socket_dirs": "/tmp"
+ },
+ "clients": [
+ {
+ "datname": "idshowroom",
+ "usename": "macstudio3",
+ "application_name": "",
+ "client_addr": null,
+ "client_port": -1,
+ "pid": 84592,
+ "state": "idle"
+ },
+ {
+ "datname": "ken",
+ "usename": "macstudio3",
+ "application_name": "",
+ "client_addr": "::1/128",
+ "client_port": 63915,
+ "pid": 72838,
+ "state": "idle"
+ },
+ {
+ "datname": "patterndesignlab",
+ "usename": "dw_admin",
+ "application_name": "",
+ "client_addr": null,
+ "client_port": -1,
+ "pid": 84635,
+ "state": "idle"
+ }
+ ],
+ "verdict": "FIRST_BATCH_PASS_FULL_FLEET_BLOCKED"
+}
diff --git a/verification/runtime.json b/verification/runtime.json
index 1bcb342..f66df44 100644
--- a/verification/runtime.json
+++ b/verification/runtime.json
@@ -1,5 +1,5 @@
{
- "timestamp": "2026-09-11T15:12:11.260Z",
+ "timestamp": "2026-09-11T16:55:00.025Z",
"services": [
{
"name": "pm2-logrotate",
@@ -11,7 +11,7 @@
},
{
"name": "abramsego",
- "pid": 39792,
+ "pid": 48305,
"status": "online",
"cwd": "/Users/macstudio3/Projects/AbramsEgo",
"script": "/Users/macstudio3/Projects/AbramsEgo/server.js",
@@ -35,11 +35,16 @@
},
{
"name": "patterndesignlab",
- "pid": 85753,
+ "pid": 20357,
"status": "online",
"cwd": "/Users/macstudio3/Projects/patterndesignlab",
"script": "/Users/macstudio3/Projects/patterndesignlab/server.js",
- "targets": []
+ "targets": [
+ {
+ "key": "PGHOST",
+ "value": "/tmp"
+ }
+ ]
},
{
"name": "reidwitlin-landing",
@@ -983,21 +988,21 @@
},
{
"name": "interiordesignershowroom",
- "pid": 8447,
+ "pid": 12358,
"status": "online",
"cwd": "/Users/macstudio3/Projects/interiordesignershowroom",
"script": "/Users/macstudio3/Projects/interiordesignershowroom/server.js",
"targets": [
+ {
+ "key": "PORT",
+ "value": "9861"
+ },
{
"key": "DATABASE_URL",
- "host": "localhost",
+ "host": "",
"port": "5432",
"database": "idshowroom",
- "socketHost": null
- },
- {
- "key": "PORT",
- "value": "9861"
+ "socketHost": "/tmp"
}
]
},
← a93a4b2 Record first batch socket migration E2E verification
·
back to Tk11438 Postgres Migration
·
Record approved Ken socket rollout and independent verificat 7470da8 →