← back to Doing Viewer
doing-viewer: col 4 active buttons — Restart/Nudge launch run-ticket.sh (guarded, logged); mirror read-only
b7399f914155007bc9b8ff50c990476bc285fd94 · 2026-08-20 12:33:43 -0700 · Steve
Files touched
A board4.pngM data/snapshot.jsonM public/index.htmlM server.js
Diff
commit b7399f914155007bc9b8ff50c990476bc285fd94
Author: Steve <steve@designerwallcoverings.com>
Date: Thu Aug 20 12:33:43 2026 -0700
doing-viewer: col 4 active buttons — Restart/Nudge launch run-ticket.sh (guarded, logged); mirror read-only
---
board4.png | Bin 0 -> 29504 bytes
data/snapshot.json | 2 +-
public/index.html | 39 +++++++++++++++++++++++++++++++++++----
server.js | 29 ++++++++++++++++++++++++++++-
4 files changed, 64 insertions(+), 6 deletions(-)
diff --git a/board4.png b/board4.png
new file mode 100644
index 0000000..d2cdbb0
Binary files /dev/null and b/board4.png differ
diff --git a/data/snapshot.json b/data/snapshot.json
index 16762c2..9206c4f 100644
--- a/data/snapshot.json
+++ b/data/snapshot.json
@@ -1 +1 @@
-{"syncedAt":"2026-08-20T19:30:11.113Z","source":"mac2","count":29,"items":[{"id":"TK-10703-standardize-crcp-viewer-to-canonical-crc","title":"Standardize CRCP viewer to canonical CRCP UI across all pages (just-listed = reference)","project":"commercialrealestate","agent":"claude-crcp-popup","doingText":"Popup double-fire RESOLVED + LIVE (commit 1b7ba1f, claude-crcp-popup): one row-expand panel, server-synced notes (/api/agent-notes prop:<id>), 📝 icon + field-grid + LA County history merged into row-notes.js; my #pdOverlay block removed from index.html. crcp-ui: pull before re-editing these 2 files.","doingTs":"2026-08-20T19:28:23.693Z","ageH":0.029838333333333335,"eli12":"We’re making sure the CRCP viewer looks and works the same way on every page, like having the same style of notebook throughout a whole school. Right now, we fixed a popup issue and merged some notes into one place, so things are more organized and working smoothly.","diag":{"why":"Working normally — last step 2 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10513-fabricut-scraper-full-site-cloudflare-ma","title":"Fabricut scraper: full-site Cloudflare managed challenge blocks catalog nav (46 products, LOW value / HIGH effort - needs stealth browser or 2captcha cf_clearance; recommend defer)","project":"Designer-Wallcoverings","agent":"fabricut-exec","doingText":"Steve APPROVED launchd daily cadence (9:05am, every day). Memo→APPROVED. Steve runs the launchctl bootstrap in-session (! paste). Once armed, posts >=10 full-pattern Fabricut SKUs daily, G&YT-excluded. Disarm=launchctl bootout.","doingTs":"2026-08-20T19:24:13.450Z","ageH":0.09935027777777777,"eli12":"This task is trying to get product info from a website that's hiding it behind a tricky security system, like a locked door with a puzzle. Right now, it's set up to run every day, but it needs some special tools to get past the puzzle, and it's not very efficient.","diag":{"why":"Working normally — last step 6 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10579-rentv-bloom-linkedin-fan-out-batch","title":"RENTV Bloom LinkedIn fan-out batch","project":"rentv-sheet-enrich","agent":"ticket-triage","doingText":"STALE-TRIAGE: 5.2d idle. Real WIP (yoloforever cycle 2, LinkedIn(Contact) 514->517, 0 fabrications). Sibling of TK-10533. Needs resume. Left open.","doingTs":"2026-08-20T19:03:57.494Z","ageH":0.4371158333333333,"eli12":"This task is trying to help find new people on LinkedIn to connect with for a project. Right now, it’s been sitting still for a few days and needs someone to pick it back up and finish the work.","diag":{"why":"Working normally — last step 26 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10533-enrich-rentv-cre-conference-spreadsheet","title":"Enrich RENTV CRE conference spreadsheet (17 tabs) from RE-build data + web research","project":"rentv","agent":"ticket-triage","doingText":"STALE-TRIAGE: 6.5d idle. Real WIP stalled at ~15% coverage (20/138 batches, ~590 contacts, ~92% Cody precision). Not done — needs resume. Left open.","doingTs":"2026-08-20T19:03:57.355Z","ageH":0.43715444444444446,"eli12":"This task is trying to fill in a big spreadsheet with useful information about a conference by combining data from another source and some online research. Right now, it's been sitting idle for a while and only got about a fifth of the way done — it needs to be picked back up to finish the job.","diag":{"why":"Working normally — last step 26 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10168-fix-43k-product-image-url-health-backlog","title":"Fix ~43k product image-URL health backlog (17k dead Shopify imgs + 26k other-URL)","project":"dw_unified","agent":"ticket-triage","doingText":"STALE-TRIAGE: 8.2d idle. Progress logged is a sub-slice (DWAA-53: 48 broken orphans archived, Steve verdict A) — the headline 43k-image backlog is NOT shown done. Genuine partial WIP; needs resume. Left open.","doingTs":"2026-08-20T19:03:57.216Z","ageH":0.43719305555555554,"eli12":"This task is trying to fix a big list of broken image links on a website, so the pictures show up correctly again. Right now, some progress has been made, but most of the work is still waiting to be done — it’s like cleaning up a messy room, and only a few toys have been put away so far.","diag":{"why":"Working normally — last step 26 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-16","title":"Add more free west-coast property feeds (LA County + others) to deed/assessment layer","project":"usrealestate","agent":"ticket-triage","doingText":"STALE-TRIAGE: 9.6d idle. Last activity was code-hygiene cleanup of parcels.ts/html (lint, tsc clean) — NOT the feature (add more free west-coast feeds). Actual feed-add appears incomplete/undocumented here. Needs a resume-or-close decision.","doingTs":"2026-08-20T19:03:57.074Z","ageH":0.4372325,"eli12":"This task is about adding more free property data sources from the West Coast, like LA County, to help make a map of property records more complete. Right now, the work on adding these data sources hasn’t moved forward in a while and needs someone to either pick it up again or decide to stop it.","diag":{"why":"Working normally — last step 26 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10016-scope-make-individual-dw-tools-independe","title":"Scope: make individual DW tools independently public (deploy each to Kamatera)","project":"Designer-Wallcoverings","agent":"ticket-triage","doingText":"STALE-TRIAGE: 20+ days idle. Scope was DECIDED (Steve tiered-publish approval 7/31: Tier-1 publish, Tier-2 with-care, Tier-3 tailnet-only). No execution tracked here since. RECOMMEND Steve close this scope epic — per-tool deploys should be their own tickets. Left OPEN pending Steve's call (his scope item).","doingTs":"2026-08-20T19:03:56.932Z","ageH":0.43727194444444445,"eli12":"This task is about making each data tool public one by one on a special server called Kamatera. Right now, it's been stuck for over 20 days and hasn't moved forward — it needs to be closed and broken into smaller, clearer tasks for better progress.","diag":{"why":"Working normally — last step 26 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10633-reconcile-the-hollywood-wallcoverings-hw","title":"Reconcile the Hollywood Wallcoverings HWC line (223 SKUs) — restore original codes + recover true mfr SKUs from LBI Boyd source","project":"dw-catalog","agent":"dwhd-repoint","doingText":"Option C EXECUTED + verified: 124/124 applied, 62 products DWHD->HWC live, mfr_sku untouched, canary -124 fabricated_variant/-62 products, rollback+ledger recorded, memo->_done. 584 held for LBI Boyd recovery (open follow-up).","doingTs":"2026-08-20T18:14:40.032Z","ageH":1.2586330555555556,"eli12":"This task is fixing up a group of 223 product codes so they match the original ones and find the real manufacturer numbers from another source. So far, most of them are fixed and working correctly, but a few are still waiting to be finished.","diag":{"why":"Working normally — last step 1.3 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10742-enrich-sample-followup-contacts-json-fro","title":"Enrich sample-followup contacts.json from FileMaker vendor table (~25 skipped vendors)","project":"sample-followup","agent":"sample-followup-coord","doingText":"REDO complete (Steve resumed): added recently-contacted suppression (data/recently-contacted.json from info@ Sent), CATCHUP=6 covers since-8/15. Result: 26 dup drafts -> 4 clean drafts for 3 truly-outstanding vendors (Brewster, Greenland/bmwallpaper x2, Sandberg); 7 suppressed as already-emailed by team. Commit aacc67a. Nothing sent.","doingTs":"2026-08-20T17:58:55.102Z","ageH":1.5211136111111112,"eli12":"This task is about making sure we don't miss any important vendor contacts by cleaning up and updating a list of people we should follow up with. Right now, we’ve fixed some duplicates, added new info, and found a few really good contacts to focus on—though nothing has been sent out yet.","diag":{"why":"Working normally — last step 1.5 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10732-crcp-city-fleet-onboard-bel-air-studio-c","title":"CRCP city fleet: onboard Bel Air/Studio City/Sherman Oaks/Encino + CA fire cities (last 5yr) as <slug>.crcp — overnight yoloforever loop, deploys gated","project":"crcp-cities","agent":"crcp-cities-onboard","doingText":"Email backfill COMPLETE for ready cities: all 4 top-120 web-enrich shards done (+42 web emails on top of 60 $0-join = 102 distinct contractor emails). LIVE: encino 113, belair 144, studiocity 15 email-linked permit rows (272 total). $0 throughout (free WebSearch/WebFetch). shermanoaks thin (keeper still scraping its licenses); each future contractor-CSV resync auto-re-runs the $0 email+phone join to grow coverage.","doingTs":"2026-08-20T17:15:20.704Z","ageH":2.2473352777777778,"eli12":"This task is trying to connect city fleet data with contractor emails and phone numbers so we can track who's working on city projects — like linking a construction company to the jobs they're doing. It's going really well right now: we've already matched a lot of emails, and it's all happening for free using online tools.","diag":{"why":"Working normally — last step 2.2 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10686-carnegie-each-colorway-gets-its-own-dw-s","title":"Carnegie: each colorway gets its own DW SKU number (+ missing image/data)","project":"dw-commerce","agent":"vp-dw-commerce","doingText":"Root cause confirmed: 5932/5934 active Carnegie have custom['Color Hex']+custom.swatch_hex (space/underscore keys), only 51 have lowercase custom.color_hex. Grid card fix already present in product-list-item.liquid (reads Color Hex->swatch_hex). Remaining: color-dots.liquid PDP Tier2.5 only reads lowercase color_hex - must add Color Hex + swatch_hex.","doingTs":"2026-08-20T16:56:51.972Z","ageH":2.555316388888889,"eli12":"This task is making sure each color of the Carnegie product has its own special number and correct image. Right now, some colors are missing the right info, and we’re fixing the part of the website that shows colors so it uses the right format.","diag":{"why":"Working normally — last step 2.6 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10557-approve-launch-rentv-gated-batch-11-wind","title":"Approve + launch rentv gated batch (11 windows, Steve-authorized 2026-08-14)","project":"rentv","agent":"steve-main","doingText":"TK-10577 (monitor→close+email) is this ticket's watchdog-child, not a separate effort (Steve-noted 2026-08-20). Close both together when the batch lands.","doingTs":"2026-08-20T16:42:33.893Z","ageH":2.7936716666666666,"eli12":"This task is about getting a group of 11 items ready to be used and then officially starting them, with Steve’s approval. Right now, we’re waiting for the final step to happen, and when it does, we’ll finish up both this task and another one that’s linked to it.","diag":{"why":"Working normally — last step 2.8 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10653-dw-shopify-dead-target-redirect-scan-bro","title":"DW Shopify dead-TARGET redirect scan: broken-redirect (lands-on-404) detection + total prune-headroom for TK-10640 (read-only)","project":"dw-unified","agent":"redirect-fix","doingText":"Cost: $0 (Shopify Admin GraphQL reads/writes + storefront curl HEADs; no paid API). Live cap 100,000 -> 99,648. Memo updated in pending-approval with corrected split (6,176 REPOINT / 41,120 PRUNE) + paste-lines + restore-map path.","doingTs":"2026-08-20T07:34:03.298Z","ageH":11.93550361111111,"eli12":"This task is checking for broken links on a Shopify store that should lead to a specific page but instead show an error, and it's figuring out how many of those broken links can be safely removed. Right now, it's working well with no extra costs, and it's almost done checking all the links.","diag":{"why":"Not actually stuck — it did its safe work and is HOLDING for your approval (last step 11.9 h ago).","verdict":"WAITING","label":"⛔ Waiting on you","color":"wait"}},{"id":"TK-10463-kamatera-disk-chronically-full-99-backup","title":"Kamatera disk chronically full (99%) — backup-retention + .git bloat fix (root cause of TK-10461 PG crash)","project":"infra","agent":"kamatera-resize","doingText":"Recommend 1000G target: 626G used -> ~340G free/~64%. growpart /dev/sda 2 && resize2fs /dev/sda2 online, no downtime. Snapshot-first advised (quiesce PG if possible).","doingTs":"2026-08-20T06:35:48.497Z","ageH":12.906281666666667,"eli12":"We're trying to free up space on the computer's hard drive because it's almost full, which caused a problem. We're suggesting making the drive bigger and cleaning up old backups and big files to make more room.","diag":{"why":"It went quiet 12.9 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10629-reboot-exo-cluster-google-merchant-agent","title":"Reboot exo-cluster + google-merchant-agent; verify exo interconnect (cables in)","project":"fleet-ops","agent":"claude@w21t0p2:F461DDA8-59D5-4F41-B9FC-7556CA9A1941","doingText":"FINAL: confirmed 0 ACTIVE 'Lillian August' leaks (16 lillian-search hits are FP: Lilliana/Lilliane/Lillian's pattern names). Versa scrub complete + verified. Ticket work done.","doingTs":"2026-08-20T06:25:29.394Z","ageH":13.078254722222223,"eli12":"We're restarting two important systems to make sure they're working properly, and checking the connections between them like making sure all the cables are plugged in. Everything looks good so far—no problems found, and the cleanup work is done.","diag":{"why":"It went quiet 13.1 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10722-onboard-beverly-hills-beverlyhills-crcp","title":"Onboard Beverly Hills — beverlyhills.crcp.agentabrams.com, clone of Altadena template (dev/construction lending-intel, not fire)","project":"beverlyhills","agent":"beverlyhills-onboard","doingText":"LIVE + verified: beverlyhills.crcp.agentabrams.com 401->200, LE cert, /api/stats real (5101 profiles/$20.3B collateral), dossier works. Port-collision (9920/9922 taken) fixed->9924.","doingTs":"2026-08-20T06:25:18.106Z","ageH":13.081390277777778,"eli12":"We’re setting up a new website for Beverly Hills that works just like the one for Altadena, but for a different kind of lending. Right now, the site is up and running smoothly, and we fixed a small problem with the computer ports so everything works correctly.","diag":{"why":"It went quiet 13.1 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10636-ga4-install-29-live-but-untagged-portfol","title":"GA4 install: 29 live-but-untagged portfolio sites","project":"ga-allsites","agent":"ga4-inject","doingText":"Delivered final report to Steve: 0 injections executed, 18 HOLD with reasons. Cost: /bin/zsh (local probes only).","doingTs":"2026-08-20T06:22:23.249Z","ageH":13.129961666666667,"eli12":"This task is trying to add tracking to 29 websites so we can see how people use them. Right now, nothing has been done yet, and 18 of the sites are on hold for different reasons.","diag":{"why":"It went quiet 13.1 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10718-onboard-altadena-eaton-fire-rebuild-alta","title":"Onboard Altadena (Eaton Fire rebuild) — altadena.agentabrams.com, clone of Palisades data product","project":"altadena","agent":"altadena-onboard","doingText":"Steve DECLINED LA Assessor owner-data inquiry: no owner names, Altadena stays owner-less/compliance-favorable. Inquiry NOT sent.","doingTs":"2026-08-20T05:43:58.003Z","ageH":13.204231666666667,"eli12":"This task is about setting up a new website for Altadena, similar to one already used in Palisades, to help with fire recovery. Right now, Steve said no to getting owner names from the LA Assessor, so Altadena will stay without owner info, which keeps things simpler and more compliant.","diag":{"why":"It went quiet 13.2 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10652-mac2-process-liveness-hunt-internal-dw-d","title":"Mac2 process-liveness hunt: internal-dw-dns crash-loop + flapping launchd tunnels (silent-degradation, pm2 says online)","project":"operations","agent":"keepalive-fix","doingText":"Refined per Codex review (commit 27a7514): probe now reports reason so a HUNG HTTP server (code=0/timeout) still restarts while a non-HTTP listener (code=0/error, tcp-alive) skips. Full 6-case matrix verified + live pass clean. item#1 root-cause DONE. Two commits: 5a9390b + 27a7514, reversible.","doingTs":"2026-08-20T06:17:50.235Z","ageH":13.20579888888889,"eli12":"This task is trying to fix a problem where a server on a Mac sometimes crashes and keeps restarting, making it unreliable. Right now, the fix is working well—it correctly restarts when needed and avoids unnecessary restarts, so things are more stable.","diag":{"why":"Its last step errored out 13.2 h ago, then nothing. Looks broken.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10716-palisades-permit-contractor-phone-email","title":"Palisades permit contractor phone+email enrichment (7236 permits)","project":"palisades-data","agent":"palisades-scraper","doingText":"Remaining email residual (~221 firms w/ website unresolved + firms w/o any website) would need openclaw website-discovery (serial, single browser) + optional Codex precision pass (paid) — separate future run, not this max-it. Phone gap (768) is CSLB-empty, not enrichable by re-scrape.","doingTs":"2026-08-20T05:50:48.557Z","ageH":13.656265,"eli12":"This task is trying to find and fill in missing phone and email info for 7,236 construction permits. Right now, we’re close but still need to find websites for about 221 companies to get more emails, and we’re missing 768 phone numbers because they’re not available online.","diag":{"why":"It went quiet 13.7 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10717-stout-monthly-all-vendor-overnight-cron","title":"Stout->monthly + all-vendor overnight cron revival (stage-only)","project":"dw-commerce","agent":"sec-triage","doingText":"","doingTs":"2026-08-20T05:47:41.682Z","ageH":13.708174722222223,"eli12":"This task is trying to get a computer program to run smoothly every month, using all the right tools, and it's just starting now—so far, nothing has happened yet. It's like getting a robot ready to do a job every month, but it's still sitting there waiting for the first instruction.","diag":{"why":"It went quiet 13.7 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10702-gmc-feed-degradation-fix-orphan-sweep-fe","title":"GMC feed degradation fix: orphan sweep + feed price resync + weight backfill + off-feed publish (canary-gated)","project":"dw-unified","agent":"steve-main","doingText":"Confirmed no live session/process running GMC full-feed (parked at go-gate ~2.5h). Steve directive: retire all other top-10 pending items + never-run. Moved 6 memos to _never/ (chargeandexplore/hollywood/dwhd/palisades-maxit/kamatera-disk/GRS-dedup), 3 shipped memos to _done/ (osborne x2, altadena-golive). Held Fabricut+Carnegie (live agents mid-write) pending Steve go on stand-down.","doingTs":"2026-08-20T05:28:20.352Z","ageH":14.030766388888889,"eli12":"This task is fixing some problems with how data is being fed into the system, like cleaning up old stuff, making sure prices are correct, and getting things back in sync. Right now, we’ve paused the main process, cleaned up some old tasks, and are waiting for final approval before moving forward.","diag":{"why":"It went quiet 14.0 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10643-cta-cross-browser-filter-control-test-ju","title":"CTA: cross-browser filter control test — just-listed.html + mls.html (uMax, uMin, yMin, yMax)","project":"commercialrealestate","agent":"cta","doingText":"MLS investigation: yMax clear alone at 3 rows is CORRECT BEHAVIOR — the 3 rows that survive all 4 filters have year_built values that are null/empty (shown as — in the table), so yMax has nothing to filter out. The units and year columns are not showing in the table because column-manager.js uses a ColumnManager.init() wrapper path. Chips work fine, no console errors. Asset class chip click stays at 200 because the first chip (Single-Family) has 19843 listings but the server returns only 200 rows, and the chip is a subset/pre-filtered view.","doingTs":"2026-08-17T23:13:10.105Z","ageH":32.157876944444446,"eli12":"This task is checking how a website’s filters work across different web browsers, especially when dealing with listings that have missing or empty data. Right now, everything is working as expected—filters are behaving correctly, even with empty data, and there are no errors showing up.","diag":{"why":"Its last step errored out 32.2 h ago, then nothing. Looks broken.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10655-cost-ledger-spend-anomaly-audit-top-spen","title":"Cost-ledger spend-anomaly audit: top spenders + recent-spike detection across ~/.claude/cost-ledger.jsonl (332k entries)","project":"operations","agent":"dre-enrich","doingText":"CRCP mls admin default 4-unit multifamily + filter-persist-on-every-change + restore-on-load + contact columns (date/address/broker/firm/phone/email/website) shipped + headless-verified (0 errors, 238 rows populate). Commit d1b8c3d.","doingTs":"2026-08-18T20:12:33.440Z","ageH":47.2937975,"eli12":"This task is checking for unusual spending patterns in a big list of costs to spot any unexpected increases or big spenders. Right now, it's working smoothly, with no errors found and a lot of useful data already processed.","diag":{"why":"Its last step errored out 47.3 h ago, then nothing. Looks broken.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10573-fix-redo-last-5-days-dw-ig-posts-name-co","title":"Fix + redo last 5 days DW IG posts — name+color+SKU, strip http links","project":"dw-marketing","agent":"dw-instagram","doingText":"COORDINATION: Steve designated THIS window (batch-09 session) as the SINGLE sequential deleter for the remaining GATE-2 batches, to eliminate concurrent-shared-browser ban risk. Batch 09 done (10/10). 74 posts remain across 21 accounts (batches 01-08,10). This window will delete ONE account at a time, each gated on Steve logging openclaw into that account. Other batch windows (01-08,10): STAND DOWN on --go to avoid concurrent deletes — this window owns execution now. No delete process currently running; openclaw last on @retrowalls (done).","doingTs":"2026-08-18T05:34:38.513Z","ageH":61.92572166666667,"eli12":"This task is fixing and redoing the last 5 days of Instagram posts so they have the right product names, colors, and numbers, and removing any website links. Right now, we’re carefully deleting old posts one by one to avoid getting banned, and the next step is to fix the remaining posts.","diag":{"why":"Not actually stuck — it did its safe work and is HOLDING for your approval (last step 2.6 days ago).","verdict":"WAITING","label":"⛔ Waiting on you","color":"wait"}},{"id":"TK-10612-ig-delete-batch-04-10-grassclothwallpape","title":"IG delete batch 04/10 — @grassclothwallpaper + @hollywoodwallcoverings (8 posts) — TK-10573 GATE2","project":"dw-marketing","agent":"dw-instagram","doingText":"CANARY SUCCESS: Graph-API DELETE on Db55_9RG1nJ -> HTTP 200 success, deleted_id 17904217761531860, verify GET confirms GONE. API deletion IS supported for these accounts. Browser-free + no concurrency ban risk. 1/8 deleted. HOLDING for Steve go on remaining 7 (grasscloth: Db8lWzfmxGQ, Db9eGUTnT75, DcADArnAXOo; hollywood: Db6eO2ZDzxY, Db8lYa-m5d_, Db9iIhAncLa, DcAHCo6gYUf).","doingTs":"2026-08-17T16:13:25.571Z","ageH":75.27931666666667,"eli12":"This task is trying to delete 8 old posts from two Instagram accounts. So far, 1 post has been successfully deleted, and the rest are waiting for Steve to take over and finish the job.","diag":{"why":"Cold — no movement in 3.1 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10613-ig-delete-batch-05-10-linenwallpaper-met","title":"IG delete batch 05/10 — @linenwallpaper + @metallicwallpaper (8 posts) — TK-10573 GATE2","project":"dw-marketing","agent":"dw-instagram","doingText":"🛑 HOLD — do NOT run --canary/--go. Steve designated TK-10614 (batch-06) as the SOLE IG-delete driver on the shared openclaw Chrome. Stand down until batch-06 posts 'DRIVER RELEASED' on TK-10573. Concurrent deletes = fleet-ban vector.","doingTs":"2026-08-17T15:54:56.388Z","ageH":75.58742305555556,"eli12":"This task is trying to delete some posts from Instagram. Right now, it's on hold because another task is in charge of doing the deleting, and we need to wait for it to say it's done before we can move forward.","diag":{"why":"Cold — no movement in 3.1 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10611-ig-delete-batch-03-10-fabric-fridays-gol","title":"IG delete batch 03/10 — @fabric_fridays + @goldleafwallpaper (8 posts, incl 1 archived orphan) — TK-10573 GATE2","project":"dw-marketing","agent":"dw-instagram","doingText":"🛑 HOLD — do NOT run --canary/--go. Steve designated TK-10614 (batch-06) as the SOLE IG-delete driver on the shared openclaw Chrome. Stand down until batch-06 posts 'DRIVER RELEASED' on TK-10573. Concurrent deletes = fleet-ban vector.","doingTs":"2026-08-17T15:54:56.175Z","ageH":75.58748222222222,"eli12":"This task is trying to delete some old social media posts. Right now, it's on hold because another task needs to finish first to avoid getting blocked.","diag":{"why":"Cold — no movement in 3.1 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10374-crash-recovery-relaunch-10-in-flight-tic","title":"Crash-recovery: relaunch 10 in-flight ticket worktrees under /yoloforever (DTD+Cody), rolling window, gates→pending-approval","project":"ops","agent":"crcp-agent","doingText":"crcp-agent /yoloforever 4h-cron heartbeat (2026-08-17): idle. Inbox empty, zero owned tickets, no assignable {commercialrealestate} ticket. HEALTH GREEN: healthz 200, industry-grade=1, drift IN_SYNC driftCount=0. Cron f0527ae4 owns cadence — no ScheduleWakeup. $0 local.","doingTs":"2026-08-17T11:43:13.976Z","ageH":79.7825375,"eli12":"This task is trying to restart 10 ticket-related processes that were in progress but stopped, and check if they’re working properly again. Right now, everything looks calm and ready to go — no problems found, and nothing needs fixing.","diag":{"why":"Cold — no movement in 3.3 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}}]}
\ No newline at end of file
+{"syncedAt":"2026-08-20T19:31:11.422Z","source":"mac2","count":29,"items":[{"id":"TK-10703-standardize-crcp-viewer-to-canonical-crc","title":"Standardize CRCP viewer to canonical CRCP UI across all pages (just-listed = reference)","project":"commercialrealestate","agent":"claude-crcp-popup","doingText":"Popup double-fire RESOLVED + LIVE (commit 1b7ba1f, claude-crcp-popup): one row-expand panel, server-synced notes (/api/agent-notes prop:<id>), 📝 icon + field-grid + LA County history merged into row-notes.js; my #pdOverlay block removed from index.html. crcp-ui: pull before re-editing these 2 files.","doingTs":"2026-08-20T19:28:23.693Z","ageH":0.04659083333333333,"eli12":"We’re making sure the CRCP viewer looks and works the same way on every page, like having the same style of notebook throughout a whole school. Right now, we fixed a popup issue and merged some notes into one place, so things are more organized and working smoothly.","diag":{"why":"Working normally — last step 3 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10513-fabricut-scraper-full-site-cloudflare-ma","title":"Fabricut scraper: full-site Cloudflare managed challenge blocks catalog nav (46 products, LOW value / HIGH effort - needs stealth browser or 2captcha cf_clearance; recommend defer)","project":"Designer-Wallcoverings","agent":"fabricut-exec","doingText":"Steve APPROVED launchd daily cadence (9:05am, every day). Memo→APPROVED. Steve runs the launchctl bootstrap in-session (! paste). Once armed, posts >=10 full-pattern Fabricut SKUs daily, G&YT-excluded. Disarm=launchctl bootout.","doingTs":"2026-08-20T19:24:13.450Z","ageH":0.11610277777777778,"eli12":"This task is trying to get product info from a website that's hiding it behind a tricky security system, like a locked door with a puzzle. Right now, it's set up to run every day, but it needs some special tools to get past the puzzle, and it's not very efficient.","diag":{"why":"Working normally — last step 7 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10579-rentv-bloom-linkedin-fan-out-batch","title":"RENTV Bloom LinkedIn fan-out batch","project":"rentv-sheet-enrich","agent":"ticket-triage","doingText":"STALE-TRIAGE: 5.2d idle. Real WIP (yoloforever cycle 2, LinkedIn(Contact) 514->517, 0 fabrications). Sibling of TK-10533. Needs resume. Left open.","doingTs":"2026-08-20T19:03:57.494Z","ageH":0.4538683333333333,"eli12":"This task is trying to help find new people on LinkedIn to connect with for a project. Right now, it’s been sitting still for a few days and needs someone to pick it back up and finish the work.","diag":{"why":"Working normally — last step 27 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10533-enrich-rentv-cre-conference-spreadsheet","title":"Enrich RENTV CRE conference spreadsheet (17 tabs) from RE-build data + web research","project":"rentv","agent":"ticket-triage","doingText":"STALE-TRIAGE: 6.5d idle. Real WIP stalled at ~15% coverage (20/138 batches, ~590 contacts, ~92% Cody precision). Not done — needs resume. Left open.","doingTs":"2026-08-20T19:03:57.355Z","ageH":0.45390694444444446,"eli12":"This task is trying to fill in a big spreadsheet with useful information about a conference by combining data from another source and some online research. Right now, it's been sitting idle for a while and only got about a fifth of the way done — it needs to be picked back up to finish the job.","diag":{"why":"Working normally — last step 27 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10168-fix-43k-product-image-url-health-backlog","title":"Fix ~43k product image-URL health backlog (17k dead Shopify imgs + 26k other-URL)","project":"dw_unified","agent":"ticket-triage","doingText":"STALE-TRIAGE: 8.2d idle. Progress logged is a sub-slice (DWAA-53: 48 broken orphans archived, Steve verdict A) — the headline 43k-image backlog is NOT shown done. Genuine partial WIP; needs resume. Left open.","doingTs":"2026-08-20T19:03:57.216Z","ageH":0.45394555555555555,"eli12":"This task is trying to fix a big list of broken image links on a website, so the pictures show up correctly again. Right now, some progress has been made, but most of the work is still waiting to be done — it’s like cleaning up a messy room, and only a few toys have been put away so far.","diag":{"why":"Working normally — last step 27 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-16","title":"Add more free west-coast property feeds (LA County + others) to deed/assessment layer","project":"usrealestate","agent":"ticket-triage","doingText":"STALE-TRIAGE: 9.6d idle. Last activity was code-hygiene cleanup of parcels.ts/html (lint, tsc clean) — NOT the feature (add more free west-coast feeds). Actual feed-add appears incomplete/undocumented here. Needs a resume-or-close decision.","doingTs":"2026-08-20T19:03:57.074Z","ageH":0.453985,"eli12":"This task is about adding more free property data sources from the West Coast, like LA County, to help make a map of property records more complete. Right now, the work on adding these data sources hasn’t moved forward in a while and needs someone to either pick it up again or decide to stop it.","diag":{"why":"Working normally — last step 27 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10016-scope-make-individual-dw-tools-independe","title":"Scope: make individual DW tools independently public (deploy each to Kamatera)","project":"Designer-Wallcoverings","agent":"ticket-triage","doingText":"STALE-TRIAGE: 20+ days idle. Scope was DECIDED (Steve tiered-publish approval 7/31: Tier-1 publish, Tier-2 with-care, Tier-3 tailnet-only). No execution tracked here since. RECOMMEND Steve close this scope epic — per-tool deploys should be their own tickets. Left OPEN pending Steve's call (his scope item).","doingTs":"2026-08-20T19:03:56.932Z","ageH":0.45402444444444445,"eli12":"This task is about making each data tool public one by one on a special server called Kamatera. Right now, it's been stuck for over 20 days and hasn't moved forward — it needs to be closed and broken into smaller, clearer tasks for better progress.","diag":{"why":"Working normally — last step 27 min ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10633-reconcile-the-hollywood-wallcoverings-hw","title":"Reconcile the Hollywood Wallcoverings HWC line (223 SKUs) — restore original codes + recover true mfr SKUs from LBI Boyd source","project":"dw-catalog","agent":"dwhd-repoint","doingText":"Option C EXECUTED + verified: 124/124 applied, 62 products DWHD->HWC live, mfr_sku untouched, canary -124 fabricated_variant/-62 products, rollback+ledger recorded, memo->_done. 584 held for LBI Boyd recovery (open follow-up).","doingTs":"2026-08-20T18:14:40.032Z","ageH":1.2753855555555556,"eli12":"This task is fixing up a group of 223 product codes so they match the original ones and find the real manufacturer numbers from another source. So far, most of them are fixed and working correctly, but a few are still waiting to be finished.","diag":{"why":"Working normally — last step 1.3 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10742-enrich-sample-followup-contacts-json-fro","title":"Enrich sample-followup contacts.json from FileMaker vendor table (~25 skipped vendors)","project":"sample-followup","agent":"sample-followup-coord","doingText":"REDO complete (Steve resumed): added recently-contacted suppression (data/recently-contacted.json from info@ Sent), CATCHUP=6 covers since-8/15. Result: 26 dup drafts -> 4 clean drafts for 3 truly-outstanding vendors (Brewster, Greenland/bmwallpaper x2, Sandberg); 7 suppressed as already-emailed by team. Commit aacc67a. Nothing sent.","doingTs":"2026-08-20T17:58:55.102Z","ageH":1.5378661111111112,"eli12":"This task is about making sure we don't miss any important vendor contacts by cleaning up and updating a list of people we should follow up with. Right now, we’ve fixed some duplicates, added new info, and found a few really good contacts to focus on—though nothing has been sent out yet.","diag":{"why":"Working normally — last step 1.5 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10732-crcp-city-fleet-onboard-bel-air-studio-c","title":"CRCP city fleet: onboard Bel Air/Studio City/Sherman Oaks/Encino + CA fire cities (last 5yr) as <slug>.crcp — overnight yoloforever loop, deploys gated","project":"crcp-cities","agent":"crcp-cities-onboard","doingText":"Email backfill COMPLETE for ready cities: all 4 top-120 web-enrich shards done (+42 web emails on top of 60 $0-join = 102 distinct contractor emails). LIVE: encino 113, belair 144, studiocity 15 email-linked permit rows (272 total). $0 throughout (free WebSearch/WebFetch). shermanoaks thin (keeper still scraping its licenses); each future contractor-CSV resync auto-re-runs the $0 email+phone join to grow coverage.","doingTs":"2026-08-20T17:15:20.704Z","ageH":2.2640877777777777,"eli12":"This task is trying to connect city fleet data with contractor emails and phone numbers so we can track who's working on city projects — like linking a construction company to the jobs they're doing. It's going really well right now: we've already matched a lot of emails, and it's all happening for free using online tools.","diag":{"why":"Working normally — last step 2.3 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10686-carnegie-each-colorway-gets-its-own-dw-s","title":"Carnegie: each colorway gets its own DW SKU number (+ missing image/data)","project":"dw-commerce","agent":"vp-dw-commerce","doingText":"Root cause confirmed: 5932/5934 active Carnegie have custom['Color Hex']+custom.swatch_hex (space/underscore keys), only 51 have lowercase custom.color_hex. Grid card fix already present in product-list-item.liquid (reads Color Hex->swatch_hex). Remaining: color-dots.liquid PDP Tier2.5 only reads lowercase color_hex - must add Color Hex + swatch_hex.","doingTs":"2026-08-20T16:56:51.972Z","ageH":2.572068888888889,"eli12":"This task is making sure each color of the Carnegie product has its own special number and correct image. Right now, some colors are missing the right info, and we’re fixing the part of the website that shows colors so it uses the right format.","diag":{"why":"Working normally — last step 2.6 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10557-approve-launch-rentv-gated-batch-11-wind","title":"Approve + launch rentv gated batch (11 windows, Steve-authorized 2026-08-14)","project":"rentv","agent":"steve-main","doingText":"TK-10577 (monitor→close+email) is this ticket's watchdog-child, not a separate effort (Steve-noted 2026-08-20). Close both together when the batch lands.","doingTs":"2026-08-20T16:42:33.893Z","ageH":2.8104241666666665,"eli12":"This task is about getting a group of 11 items ready to be used and then officially starting them, with Steve’s approval. Right now, we’re waiting for the final step to happen, and when it does, we’ll finish up both this task and another one that’s linked to it.","diag":{"why":"Working normally — last step 2.8 h ago.","verdict":"RUNNING","label":"🟢 Let it run","color":"fresh"}},{"id":"TK-10653-dw-shopify-dead-target-redirect-scan-bro","title":"DW Shopify dead-TARGET redirect scan: broken-redirect (lands-on-404) detection + total prune-headroom for TK-10640 (read-only)","project":"dw-unified","agent":"redirect-fix","doingText":"Cost: $0 (Shopify Admin GraphQL reads/writes + storefront curl HEADs; no paid API). Live cap 100,000 -> 99,648. Memo updated in pending-approval with corrected split (6,176 REPOINT / 41,120 PRUNE) + paste-lines + restore-map path.","doingTs":"2026-08-20T07:34:03.298Z","ageH":11.952256111111112,"eli12":"This task is checking for broken links on a Shopify store that should lead to a specific page but instead show an error, and it's figuring out how many of those broken links can be safely removed. Right now, it's working well with no extra costs, and it's almost done checking all the links.","diag":{"why":"Not actually stuck — it did its safe work and is HOLDING for your approval (last step 12.0 h ago).","verdict":"WAITING","label":"⛔ Waiting on you","color":"wait"}},{"id":"TK-10463-kamatera-disk-chronically-full-99-backup","title":"Kamatera disk chronically full (99%) — backup-retention + .git bloat fix (root cause of TK-10461 PG crash)","project":"infra","agent":"kamatera-resize","doingText":"Recommend 1000G target: 626G used -> ~340G free/~64%. growpart /dev/sda 2 && resize2fs /dev/sda2 online, no downtime. Snapshot-first advised (quiesce PG if possible).","doingTs":"2026-08-20T06:35:48.497Z","ageH":12.923034166666667,"eli12":"We're trying to free up space on the computer's hard drive because it's almost full, which caused a problem. We're suggesting making the drive bigger and cleaning up old backups and big files to make more room.","diag":{"why":"It went quiet 12.9 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10629-reboot-exo-cluster-google-merchant-agent","title":"Reboot exo-cluster + google-merchant-agent; verify exo interconnect (cables in)","project":"fleet-ops","agent":"claude@w21t0p2:F461DDA8-59D5-4F41-B9FC-7556CA9A1941","doingText":"FINAL: confirmed 0 ACTIVE 'Lillian August' leaks (16 lillian-search hits are FP: Lilliana/Lilliane/Lillian's pattern names). Versa scrub complete + verified. Ticket work done.","doingTs":"2026-08-20T06:25:29.394Z","ageH":13.095007222222222,"eli12":"We're restarting two important systems to make sure they're working properly, and checking the connections between them like making sure all the cables are plugged in. Everything looks good so far—no problems found, and the cleanup work is done.","diag":{"why":"It went quiet 13.1 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10722-onboard-beverly-hills-beverlyhills-crcp","title":"Onboard Beverly Hills — beverlyhills.crcp.agentabrams.com, clone of Altadena template (dev/construction lending-intel, not fire)","project":"beverlyhills","agent":"beverlyhills-onboard","doingText":"LIVE + verified: beverlyhills.crcp.agentabrams.com 401->200, LE cert, /api/stats real (5101 profiles/$20.3B collateral), dossier works. Port-collision (9920/9922 taken) fixed->9924.","doingTs":"2026-08-20T06:25:18.106Z","ageH":13.098142777777777,"eli12":"We’re setting up a new website for Beverly Hills that works just like the one for Altadena, but for a different kind of lending. Right now, the site is up and running smoothly, and we fixed a small problem with the computer ports so everything works correctly.","diag":{"why":"It went quiet 13.1 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10636-ga4-install-29-live-but-untagged-portfol","title":"GA4 install: 29 live-but-untagged portfolio sites","project":"ga-allsites","agent":"ga4-inject","doingText":"Delivered final report to Steve: 0 injections executed, 18 HOLD with reasons. Cost: /bin/zsh (local probes only).","doingTs":"2026-08-20T06:22:23.249Z","ageH":13.146714166666667,"eli12":"This task is trying to add tracking to 29 websites so we can see how people use them. Right now, nothing has been done yet, and 18 of the sites are on hold for different reasons.","diag":{"why":"It went quiet 13.1 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10718-onboard-altadena-eaton-fire-rebuild-alta","title":"Onboard Altadena (Eaton Fire rebuild) — altadena.agentabrams.com, clone of Palisades data product","project":"altadena","agent":"altadena-onboard","doingText":"Steve DECLINED LA Assessor owner-data inquiry: no owner names, Altadena stays owner-less/compliance-favorable. Inquiry NOT sent.","doingTs":"2026-08-20T05:43:58.003Z","ageH":13.220984166666666,"eli12":"This task is about setting up a new website for Altadena, similar to one already used in Palisades, to help with fire recovery. Right now, Steve said no to getting owner names from the LA Assessor, so Altadena will stay without owner info, which keeps things simpler and more compliant.","diag":{"why":"It went quiet 13.2 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10652-mac2-process-liveness-hunt-internal-dw-d","title":"Mac2 process-liveness hunt: internal-dw-dns crash-loop + flapping launchd tunnels (silent-degradation, pm2 says online)","project":"operations","agent":"keepalive-fix","doingText":"Refined per Codex review (commit 27a7514): probe now reports reason so a HUNG HTTP server (code=0/timeout) still restarts while a non-HTTP listener (code=0/error, tcp-alive) skips. Full 6-case matrix verified + live pass clean. item#1 root-cause DONE. Two commits: 5a9390b + 27a7514, reversible.","doingTs":"2026-08-20T06:17:50.235Z","ageH":13.222551388888888,"eli12":"This task is trying to fix a problem where a server on a Mac sometimes crashes and keeps restarting, making it unreliable. Right now, the fix is working well—it correctly restarts when needed and avoids unnecessary restarts, so things are more stable.","diag":{"why":"Its last step errored out 13.2 h ago, then nothing. Looks broken.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10716-palisades-permit-contractor-phone-email","title":"Palisades permit contractor phone+email enrichment (7236 permits)","project":"palisades-data","agent":"palisades-scraper","doingText":"Remaining email residual (~221 firms w/ website unresolved + firms w/o any website) would need openclaw website-discovery (serial, single browser) + optional Codex precision pass (paid) — separate future run, not this max-it. Phone gap (768) is CSLB-empty, not enrichable by re-scrape.","doingTs":"2026-08-20T05:50:48.557Z","ageH":13.6730175,"eli12":"This task is trying to find and fill in missing phone and email info for 7,236 construction permits. Right now, we’re close but still need to find websites for about 221 companies to get more emails, and we’re missing 768 phone numbers because they’re not available online.","diag":{"why":"It went quiet 13.7 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10717-stout-monthly-all-vendor-overnight-cron","title":"Stout->monthly + all-vendor overnight cron revival (stage-only)","project":"dw-commerce","agent":"sec-triage","doingText":"","doingTs":"2026-08-20T05:47:41.682Z","ageH":13.724927222222222,"eli12":"This task is trying to get a computer program to run smoothly every month, using all the right tools, and it's just starting now—so far, nothing has happened yet. It's like getting a robot ready to do a job every month, but it's still sitting there waiting for the first instruction.","diag":{"why":"It went quiet 13.7 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10702-gmc-feed-degradation-fix-orphan-sweep-fe","title":"GMC feed degradation fix: orphan sweep + feed price resync + weight backfill + off-feed publish (canary-gated)","project":"dw-unified","agent":"steve-main","doingText":"Confirmed no live session/process running GMC full-feed (parked at go-gate ~2.5h). Steve directive: retire all other top-10 pending items + never-run. Moved 6 memos to _never/ (chargeandexplore/hollywood/dwhd/palisades-maxit/kamatera-disk/GRS-dedup), 3 shipped memos to _done/ (osborne x2, altadena-golive). Held Fabricut+Carnegie (live agents mid-write) pending Steve go on stand-down.","doingTs":"2026-08-20T05:28:20.352Z","ageH":14.04751888888889,"eli12":"This task is fixing some problems with how data is being fed into the system, like cleaning up old stuff, making sure prices are correct, and getting things back in sync. Right now, we’ve paused the main process, cleaned up some old tasks, and are waiting for final approval before moving forward.","diag":{"why":"It went quiet 14.0 h ago — the work session probably just ended, no error.","verdict":"NUDGE","label":"🟡 Nudge it","color":"warn"}},{"id":"TK-10643-cta-cross-browser-filter-control-test-ju","title":"CTA: cross-browser filter control test — just-listed.html + mls.html (uMax, uMin, yMin, yMax)","project":"commercialrealestate","agent":"cta","doingText":"MLS investigation: yMax clear alone at 3 rows is CORRECT BEHAVIOR — the 3 rows that survive all 4 filters have year_built values that are null/empty (shown as — in the table), so yMax has nothing to filter out. The units and year columns are not showing in the table because column-manager.js uses a ColumnManager.init() wrapper path. Chips work fine, no console errors. Asset class chip click stays at 200 because the first chip (Single-Family) has 19843 listings but the server returns only 200 rows, and the chip is a subset/pre-filtered view.","doingTs":"2026-08-17T23:13:10.105Z","ageH":32.17462944444444,"eli12":"This task is checking how a website’s filters work across different web browsers, especially when dealing with listings that have missing or empty data. Right now, everything is working as expected—filters are behaving correctly, even with empty data, and there are no errors showing up.","diag":{"why":"Its last step errored out 32.2 h ago, then nothing. Looks broken.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10655-cost-ledger-spend-anomaly-audit-top-spen","title":"Cost-ledger spend-anomaly audit: top spenders + recent-spike detection across ~/.claude/cost-ledger.jsonl (332k entries)","project":"operations","agent":"dre-enrich","doingText":"CRCP mls admin default 4-unit multifamily + filter-persist-on-every-change + restore-on-load + contact columns (date/address/broker/firm/phone/email/website) shipped + headless-verified (0 errors, 238 rows populate). Commit d1b8c3d.","doingTs":"2026-08-18T20:12:33.440Z","ageH":47.31055,"eli12":"This task is checking for unusual spending patterns in a big list of costs to spot any unexpected increases or big spenders. Right now, it's working smoothly, with no errors found and a lot of useful data already processed.","diag":{"why":"Its last step errored out 47.3 h ago, then nothing. Looks broken.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10573-fix-redo-last-5-days-dw-ig-posts-name-co","title":"Fix + redo last 5 days DW IG posts — name+color+SKU, strip http links","project":"dw-marketing","agent":"dw-instagram","doingText":"COORDINATION: Steve designated THIS window (batch-09 session) as the SINGLE sequential deleter for the remaining GATE-2 batches, to eliminate concurrent-shared-browser ban risk. Batch 09 done (10/10). 74 posts remain across 21 accounts (batches 01-08,10). This window will delete ONE account at a time, each gated on Steve logging openclaw into that account. Other batch windows (01-08,10): STAND DOWN on --go to avoid concurrent deletes — this window owns execution now. No delete process currently running; openclaw last on @retrowalls (done).","doingTs":"2026-08-18T05:34:38.513Z","ageH":61.94247416666666,"eli12":"This task is fixing and redoing the last 5 days of Instagram posts so they have the right product names, colors, and numbers, and removing any website links. Right now, we’re carefully deleting old posts one by one to avoid getting banned, and the next step is to fix the remaining posts.","diag":{"why":"Not actually stuck — it did its safe work and is HOLDING for your approval (last step 2.6 days ago).","verdict":"WAITING","label":"⛔ Waiting on you","color":"wait"}},{"id":"TK-10612-ig-delete-batch-04-10-grassclothwallpape","title":"IG delete batch 04/10 — @grassclothwallpaper + @hollywoodwallcoverings (8 posts) — TK-10573 GATE2","project":"dw-marketing","agent":"dw-instagram","doingText":"CANARY SUCCESS: Graph-API DELETE on Db55_9RG1nJ -> HTTP 200 success, deleted_id 17904217761531860, verify GET confirms GONE. API deletion IS supported for these accounts. Browser-free + no concurrency ban risk. 1/8 deleted. HOLDING for Steve go on remaining 7 (grasscloth: Db8lWzfmxGQ, Db9eGUTnT75, DcADArnAXOo; hollywood: Db6eO2ZDzxY, Db8lYa-m5d_, Db9iIhAncLa, DcAHCo6gYUf).","doingTs":"2026-08-17T16:13:25.571Z","ageH":75.29606916666667,"eli12":"This task is trying to delete 8 old posts from two Instagram accounts. So far, 1 post has been successfully deleted, and the rest are waiting for Steve to take over and finish the job.","diag":{"why":"Cold — no movement in 3.1 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10613-ig-delete-batch-05-10-linenwallpaper-met","title":"IG delete batch 05/10 — @linenwallpaper + @metallicwallpaper (8 posts) — TK-10573 GATE2","project":"dw-marketing","agent":"dw-instagram","doingText":"🛑 HOLD — do NOT run --canary/--go. Steve designated TK-10614 (batch-06) as the SOLE IG-delete driver on the shared openclaw Chrome. Stand down until batch-06 posts 'DRIVER RELEASED' on TK-10573. Concurrent deletes = fleet-ban vector.","doingTs":"2026-08-17T15:54:56.388Z","ageH":75.60417555555556,"eli12":"This task is trying to delete some posts from Instagram. Right now, it's on hold because another task is in charge of doing the deleting, and we need to wait for it to say it's done before we can move forward.","diag":{"why":"Cold — no movement in 3.2 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10611-ig-delete-batch-03-10-fabric-fridays-gol","title":"IG delete batch 03/10 — @fabric_fridays + @goldleafwallpaper (8 posts, incl 1 archived orphan) — TK-10573 GATE2","project":"dw-marketing","agent":"dw-instagram","doingText":"🛑 HOLD — do NOT run --canary/--go. Steve designated TK-10614 (batch-06) as the SOLE IG-delete driver on the shared openclaw Chrome. Stand down until batch-06 posts 'DRIVER RELEASED' on TK-10573. Concurrent deletes = fleet-ban vector.","doingTs":"2026-08-17T15:54:56.175Z","ageH":75.60423472222222,"eli12":"This task is trying to delete some old social media posts. Right now, it's on hold because another task needs to finish first to avoid getting blocked.","diag":{"why":"Cold — no movement in 3.2 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}},{"id":"TK-10374-crash-recovery-relaunch-10-in-flight-tic","title":"Crash-recovery: relaunch 10 in-flight ticket worktrees under /yoloforever (DTD+Cody), rolling window, gates→pending-approval","project":"ops","agent":"crcp-agent","doingText":"crcp-agent /yoloforever 4h-cron heartbeat (2026-08-17): idle. Inbox empty, zero owned tickets, no assignable {commercialrealestate} ticket. HEALTH GREEN: healthz 200, industry-grade=1, drift IN_SYNC driftCount=0. Cron f0527ae4 owns cadence — no ScheduleWakeup. $0 local.","doingTs":"2026-08-17T11:43:13.976Z","ageH":79.79929,"eli12":"This task is trying to restart 10 ticket-related processes that were in progress but stopped, and check if they’re working properly again. Right now, everything looks calm and ready to go — no problems found, and nothing needs fixing.","diag":{"why":"Cold — no movement in 3.3 days. The session is long gone; it needs a fresh kick to continue.","verdict":"RESTART","label":"🔴 Restart it","color":"stale"}}]}
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index 87b870a..4a7f9bf 100644
--- a/public/index.html
+++ b/public/index.html
@@ -72,6 +72,13 @@
.v-RESTART{background:rgba(255,123,114,.16);color:#ff9b93;border:1px solid rgba(255,123,114,.4)}
.v-WAITING{background:rgba(122,162,255,.14);color:#9db4ff;border:1px solid rgba(122,162,255,.35)}
.c4 .why{font-size:12.5px;color:#c6cfda;line-height:1.55}
+ button.verdict{cursor:pointer;font-family:inherit;transition:filter .12s,transform .05s}
+ button.verdict:hover{filter:brightness(1.18)}
+ button.verdict:active{transform:translateY(1px)}
+ button.verdict:disabled{cursor:not-allowed;opacity:.5;filter:none}
+ .verdict.busy{opacity:.7;pointer-events:none}
+ .actnote{font-size:11px;margin-top:7px}
+ .actnote.ok{color:#7ee787}.actnote.err{color:#ff7b72}
.empty{padding:60px;text-align:center;color:var(--dim)}
@media(max-width:1000px){
.head-row{display:none}
@@ -100,7 +107,30 @@
<div class="list" id="list"><div class="empty">Loading the board…</div></div>
<script>
-const esc = s => (s||'').replace(/[&<>]/g,c=>({'&':'&','<':'<','>':'>'}[c]));
+const esc = s => (s||'').replace(/[&<>"']/g,c=>({'&':'&','<':'<','>':'>','"':'"',"'":'''}[c]));
+let IS_MIRROR = false;
+
+function renderVerdict(i){
+ const v = i.diag.verdict, label = esc(i.diag.label), id = esc(i.id);
+ if (v === 'RUNNING') return `<div class="verdict v-RUNNING">${label}</div>`;
+ if (v === 'WAITING') return `<button class="verdict v-WAITING" onclick="window.open('https://approvals.agentabrams.com','_blank')" title="Open the approvals console">${label}</button>`;
+ // NUDGE / RESTART -> real launch button
+ const verb = (v === 'RESTART') ? 'restart' : 'nudge';
+ if (IS_MIRROR) return `<button class="verdict v-${v}" disabled title="Actions run on the primary board (Mac2), not the mirror">${label}</button>`;
+ return `<button class="verdict v-${v}" onclick="act('${id}','${verb}',this)">${label}</button>`;
+}
+
+async function act(id, verb, btn){
+ const note = document.getElementById('note-'+id);
+ const orig = btn.textContent;
+ btn.classList.add('busy'); btn.textContent = (verb==='restart'?'🔄 launching…':'🔄 kicking…');
+ try{
+ const r = await fetch('/api/action',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify({id,verb})});
+ const d = await r.json();
+ if(r.ok && d.ok){ btn.textContent='✓ launched'; if(note){note.className='actnote ok';note.textContent='An iTerm window is opening on Mac2 to drive '+id+'.';} }
+ else { btn.textContent=orig; btn.classList.remove('busy'); if(note){note.className='actnote err';note.textContent=(d.error||d.msg||'failed');} }
+ }catch(e){ btn.textContent=orig; btn.classList.remove('busy'); if(note){note.className='actnote err';note.textContent='request failed';} }
+}
function ageClass(h){ return h<6?'fresh':h<48?'warn':'stale'; }
function agoTxt(ts,h){
const m=Math.round(h*60);
@@ -112,6 +142,7 @@ async function load(){
let d;
try{ d = await (await fetch('/api/doing',{cache:'no-store'})).json(); }
catch(e){ document.getElementById('clock').textContent='reconnecting…'; return; }
+ IS_MIRROR = !!d.mirror;
document.getElementById('count').textContent = d.count;
const pend = document.getElementById('pend');
if (d.mirror) {
@@ -146,9 +177,9 @@ async function load(){
: `<div class="kid thinking">🤔 getting the simple version…</div>` }
</div>
<div class="cell c4">
- ${ i.diag
- ? `<div class="verdict v-${i.diag.verdict}">${esc(i.diag.label)}</div><div class="why">${esc(i.diag.why)}</div>`
- : `<div class="why" style="color:var(--dim)">—</div>` }
+ ${ i.diag ? renderVerdict(i) : `<div class="why" style="color:var(--dim)">—</div>` }
+ <div class="why">${i.diag?esc(i.diag.why):''}</div>
+ <div class="actnote" id="note-${esc(i.id)}"></div>
</div>
</div>`).join('');
}
diff --git a/server.js b/server.js
index 90afe27..a9c47ac 100644
--- a/server.js
+++ b/server.js
@@ -20,7 +20,9 @@ const CACHE_FILE = path.join(__dirname, 'data', 'eli12-cache.json');
const OLLAMA = 'http://127.0.0.1:11434/api/generate';
const MODEL = process.env.ELI12_MODEL || 'qwen3:14b';
-const { tickets } = require(TICKET_LIB);
+const { execFile } = require('child_process');
+const { tickets, withLock, append } = require(TICKET_LIB);
+const RUN_SH = path.join(os.homedir(), 'Projects', 'ticket-system', 'run-ticket.sh');
// ── plain-words cache ────────────────────────────────────────────────────────
let cache = {};
@@ -198,6 +200,31 @@ http.createServer((req, res) => {
res.end('auth required');
return;
}
+ // ── action: restart/nudge a ticket via the hardened run-ticket.sh ──────────
+ if (req.method === 'POST' && req.url === '/api/action') {
+ let raw = ''; req.on('data', c => (raw += c)); req.on('end', () => {
+ let b; try { b = JSON.parse(raw); } catch { res.writeHead(400); return res.end('bad json'); }
+ const id = String(b.id || ''), verb = String(b.verb || '');
+ // id MUST be a current doing ticket (prevents arbitrary launches) + shape-checked
+ const cur = doingList().find(i => i.id === id);
+ if (!cur || !/^TK-[0-9]+(-[a-z0-9-]+)?$/.test(id)) { res.writeHead(404); return res.end('unknown ticket'); }
+ if (verb !== 'restart' && verb !== 'nudge') { res.writeHead(400); return res.end('bad verb'); }
+ // cwd = the ticket's project dir if it exists (same rule as the ticket board)
+ let cwd = os.homedir();
+ if (cur.project && /^[a-z0-9._-]+$/i.test(cur.project)) {
+ const p = path.join(os.homedir(), 'Projects', cur.project);
+ if (fs.existsSync(p)) cwd = p;
+ }
+ execFile('bash', [RUN_SH, id, cwd], { timeout: 25000 }, (err) => {
+ try { withLock(() => append({ ts: new Date().toISOString(), type: 'action', id, agent: 'doing-board',
+ text: err ? ('⚠ ' + verb.toUpperCase() + ' from board failed to launch iTerm2 — ' + String(err.message || err).split('\n')[0])
+ : ('▶ ' + verb.toUpperCase() + ' pushed from doing-board — launched fresh Claude session on this ticket') })); } catch {}
+ });
+ res.writeHead(200, { 'Content-Type': 'application/json' });
+ res.end(JSON.stringify({ ok: true, id, verb, msg: 'launching a Claude session on ' + id + ' (an iTerm window will open on Mac2)' }));
+ });
+ return;
+ }
if (req.url === '/api/doing') {
const list = doingList();
const pending = list.filter(i => !i.eli12).length;
← 802a86f doing-viewer: col 4 — why-slow + restart verdict (age + last
·
back to Doing Viewer
·
doing-viewer: lock actions to localhost/LAN (CF-header + pri 4688fc8 →