{"slug":"ga-allsites","total":87,"limit":100,"offset":0,"since":null,"commits":[{"hash":"0f43d1c","date":"2026-09-25 19:06:08 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-25T19:06:05 (1 data files) — etl.err","body":""},{"hash":"1c4f0b0","date":"2026-09-25 15:32:23 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-25T15:32:10 (1 data files) — etl.err","body":""},{"hash":"c70a731","date":"2026-09-25 11:53:08 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-25T11:52:49 (1 data files) — etl.err","body":""},{"hash":"98e504a","date":"2026-09-25 11:35:53 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-25T11:35:27 (1 data files) — etl.err","body":""},{"hash":"c269f4c","date":"2026-09-25 01:35:17 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-25T01:35:13 (1 data files) — etl.err","body":""},{"hash":"daa0fa7","date":"2026-09-21 20:51:14 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-21T20:34:48 (1 data files) — etl.err","body":""},{"hash":"e048135","date":"2026-09-16 09:34:10 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-16T09:33:20 (1 data files) — etl.err","body":""},{"hash":"74df88a","date":"2026-09-13 09:50:36 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-13T09:49:22 (1 data files) — etl.err","body":""},{"hash":"a2da914","date":"2026-09-12 19:55:13 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-12T19:54:34 (1 data files) — etl.err","body":""},{"hash":"4a45fc9","date":"2026-09-12 14:31:52 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-12T14:31:21 (1 data files) — etl.err","body":""},{"hash":"7963153","date":"2026-09-12 08:22:28 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-12T08:20:59 (1 data files) — etl.err","body":""},{"hash":"d4c5798","date":"2026-09-09 10:04:45 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-09T10:04:38 (1 data files) — etl.err","body":""},{"hash":"6ef7b5c","date":"2026-09-04 22:38:51 -0700","author":"Steve","subject":"snapshot before restart: preserve in-flight work","body":"Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>\nClaude-Session: https://claude.ai/code/session_011gbmuMHgCLDEPM4TpfAr4G"},{"hash":"2499b12","date":"2026-09-01 22:59:26 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-01T22:59:22 (1 data files) — etl.err","body":""},{"hash":"466fcb3","date":"2026-09-01 21:44:54 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-01T21:44:50 (1 data files) — etl.err","body":""},{"hash":"465cee5","date":"2026-09-01 06:36:21 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-09-01T06:36:17 (1 data files) — etl.err","body":""},{"hash":"c7c0dd9","date":"2026-08-31 21:20:07 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-31T21:20:03 (1 data files) — etl.err","body":""},{"hash":"b7acf11","date":"2026-08-26 23:46:33 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-26T23:46:29 (1 data files) — etl.err","body":""},{"hash":"499d8de","date":"2026-08-25 21:56:01 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-25T21:55:57 (1 data files) — etl.err","body":""},{"hash":"f399dae","date":"2026-08-22 11:21:43 -0700","author":"Steve Abrams","subject":"chore: GA GATE-2 fleet injector (route-by-nginx, idempotent, .bak) — session close","body":""},{"hash":"6630fbf","date":"2026-08-22 10:54:44 -0700","author":"Steve Abrams","subject":"Add gate2_inject.sh + gate2_rollback.sh for GA4 fleet injection","body":"Idempotent injection of G-J2SL8P5KDL into 17 target files (30 vendor\nshared template + 16 standalones). Skips any file already containing\nthe ID. Timestamps .bak before every write; rollback restores all .bak\nfiles and reloads affected pm2 processes.\n\nDry-run: all 17 files already contain ID (SKIP on first run).\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>"},{"hash":"bccd4f3","date":"2026-08-21 17:47:35 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-21T17:47:31 (1 data files) — etl.err","body":""},{"hash":"bd77f7a","date":"2026-08-21 08:14:02 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-21T08:13:58 (1 data files) — gate1_result.json","body":""},{"hash":"b8efb29","date":"2026-08-21 07:10:20 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-21T07:10:15 (1 data files) — sweep_results.json","body":""},{"hash":"d41a8db","date":"2026-08-21 06:05:13 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-21T06:05:08 (2 data files) — authoritative_map.json sweep_results.json","body":""},{"hash":"3a1f985","date":"2026-08-21 01:18:36 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-21T01:18:32 (1 data files) — etl.err","body":""},{"hash":"79e1017","date":"2026-08-20 16:08:45 -0700","author":"Steve Abrams","subject":"portfolio GA4: stage 17 domains (DNS+certs+backends+nginx confs) — blocked on fabricut http2 reload gate","body":""},{"hash":"5985c69","date":"2026-08-20 16:01:07 -0700","author":"Steve Abrams","subject":"GA4 inject: 2026-08-20 re-verification — 6 live-verified, NEEDS_INJECT=0, parked-IPs stale (now Kamatera, still no vhost/cert → HOLD unchanged)","body":""},{"hash":"c73d255","date":"2026-08-18 21:58:12 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-18T21:58:08 (1 data files) — etl.err","body":""},{"hash":"5598972","date":"2026-08-18 11:18:19 -0700","author":"Steve Abrams","subject":"chore: ruff autofixes on GA4 detector/mint/delete scripts (session close)","body":""},{"hash":"293388c","date":"2026-08-18 10:32:29 -0700","author":"Steve Abrams","subject":"GA4: delete 5 redundant duplicate properties (soft-trash, recoverable ~7d) — reconcile after detector fix","body":""},{"hash":"44c3dc4","date":"2026-08-18 10:11:42 -0700","author":"Steve Abrams","subject":"GA4 absence-detector: park-aware + local-repo-aware, strict 10-char id, TLD-safe repo match; fail-closed dup/park guard in mint script","body":"Fixes the two false-positive classes that minted duplicate/orphan GA4 properties (2026-08-18):\n- already-wired sites (server-rendered EJS GA_ID / committed gtag) now detected via served-file scan\n- parked/for-sale domains (AWS registrar landers) excluded from mint targets\n- strict G-{10} id regex rejects coincidental short matches (e.g. bogus G-51302138)\n- .com-only stem match so designerwallcoverings.ai no longer collides with the .com repo\nVerified: detector reclassifies all 24 prior targets to 0 NEEDS_INJECT."},{"hash":"dee11c4","date":"2026-08-17 22:33:54 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-17T22:33:50 (1 data files) — cache/_ga4_inject_GROUND_TRUTH.md","body":""},{"hash":"3cdc431","date":"2026-08-17 17:19:50 -0700","author":"Steve Abrams","subject":"chore: lint autofixes (imports, re.IGNORECASE, unused imports) — session close","body":""},{"hash":"277b943","date":"2026-08-17 17:14:27 -0700","author":"Steve Abrams","subject":"chore: lint (14 autofix) + light refactor of session GA4 scripts (session close)","body":""},{"hash":"1ad6463","date":"2026-08-17 16:33:24 -0700","author":"Steve Abrams","subject":"GA4 cleanup: deleted Momentum DW property; goodquestion.ai + nosara blocked by SA permission on APPS account 371997142","body":""},{"hash":"34f211e","date":"2026-08-17 16:27:56 -0700","author":"Steve Abrams","subject":"ABORT orphan-GA4 deletion: dry-run proved all 3 are legit (DW subdomain, goodquestion.ai, live Nosara site) — corrected exclusion record","body":""},{"hash":"fb0bb41","date":"2026-08-17 16:23:00 -0700","author":"Steve Abrams","subject":"ownership audit: 3 off-host domains NOT owned (momentumdw/nosarabeach/goodquestion) — orphan GA4 props; add not-owned exclusion list","body":""},{"hash":"532e126","date":"2026-08-17 16:19:48 -0700","author":"Steve Abrams","subject":"rollout-status: cycle 12 — rollout complete on controllable fleet (GA4 35/41, Meta 16); off-host tail needs Steve pipeline access","body":""},{"hash":"1100373","date":"2026-08-17 16:16:57 -0700","author":"Steve Abrams","subject":"rollout-status: cycle 11 — GA4 35/41 (CF cache self-expired), Meta on 2 CF storefronts","body":""},{"hash":"5a20bdb","date":"2026-08-17 16:07:25 -0700","author":"Steve Abrams","subject":"rollout-status: cycle 10 — Meta on 3 storefronts via app-template inject; parked domains skipped (ad-audience scoping)","body":""},{"hash":"1ebbbf8","date":"2026-08-17 15:57:35 -0700","author":"Steve Abrams","subject":"rollout-status: cycle 9 — Meta pixel paused on shared confs after 2 nginx breaks (recovered)","body":""},{"hash":"d3fb32f","date":"2026-08-17 15:24:27 -0700","author":"Steve Abrams","subject":"yoloforever: 19/41 GA4 live (all real + non-CF shells); 16 abrams* blocked on CF purge","body":""},{"hash":"222a9e3","date":"2026-08-17 14:59:25 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-17T14:59:21 (2 data files) — cache/_yoloforever_ledger.md gtm/rollout-status.md","body":""},{"hash":"e224bee","date":"2026-08-17 14:15:14 -0700","author":"Steve Abrams","subject":"yoloforever cycle 5: nginx sub_filter landed 5 more (11/41 live); losgardeners deferred; remainder off-host+shells","body":""},{"hash":"1e51edf","date":"2026-08-17 14:03:02 -0700","author":"Steve Abrams","subject":"yoloforever cycle 4: site-factory port-roulette blocker + safer nginx sub_filter path for proxied sites","body":""},{"hash":"d52d9fa","date":"2026-08-17 13:58:44 -0700","author":"Steve Abrams","subject":"portfolio landing rollout: dns_point + GA4/deployment audits (73 domains live)","body":""},{"hash":"c905d09","date":"2026-08-17 13:53:37 -0700","author":"Steve Abrams","subject":"yoloforever cycle 3: ungated slice done (6/41), remaining is gated — drafted batch, loop paused-on-gated","body":""},{"hash":"3f5c2a9","date":"2026-08-17 13:28:25 -0700","author":"Steve Abrams","subject":"yoloforever: 6/41 GA4 sites live + serving map for resume","body":""},{"hash":"f269ba0","date":"2026-08-17 13:21:13 -0700","author":"Steve Abrams","subject":"GA4 rollout status (resumable): batch 1 live (commercial+hollywood), 39 pending across ~15 codebases","body":""},{"hash":"3228dbd","date":"2026-08-17 13:06:57 -0700","author":"Steve Abrams","subject":"tracking coverage matrix ($0 local: parallel curl+grep, no LLM) — per-site GSC/GA4/GTM/Meta/Pinterest punch-list","body":""},{"hash":"6bf60b1","date":"2026-08-17 12:38:51 -0700","author":"Steve Abrams","subject":"GTM fleet tracking container template (GA4 + Meta Pixel + Pinterest, per DTD hybrid verdict) + spec","body":""},{"hash":"a3f1524","date":"2026-08-17 11:27:16 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-17T11:27:07 (1 data files) — cache/_fanout_results.jsonl","body":""},{"hash":"0f32a52","date":"2026-08-17 11:10:48 -0700","author":"Steve Abrams","subject":"gsc: portfolio-wide owner-grant fan-out (289 domains) — resumable two-phase driver + --all-fleet/--fanout modes","body":""},{"hash":"9561e03","date":"2026-08-17 10:56:57 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-17T10:56:53 (1 data files) — cache/_fanout_results.jsonl","body":""},{"hash":"7f57305","date":"2026-08-17 10:56:16 -0700","author":"Steve Abrams","subject":"grant script: --all-fleet mode (proven — took GSC coverage 10->180)","body":""},{"hash":"a648e3c","date":"2026-08-17 09:59:26 -0700","author":"Steve Abrams","subject":"grant script: add GoDaddy DNS support (append TXT via API) so non-Cloudflare microsites can be verified too","body":""},{"hash":"3709923","date":"2026-08-17 09:56:26 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-17T09:56:21 (1 data files) — etl.err","body":""},{"hash":"0217519","date":"2026-08-17 09:52:22 -0700","author":"Steve Abrams","subject":"grant script: hoist urllib.parse to module scope (fix UnboundLocalError on verify-except path)","body":""},{"hash":"69d7b82","date":"2026-08-17 09:44:55 -0700","author":"Steve Abrams","subject":"add grant_microsites_gsc.py: no-click GSC grant via DNS-TXT owner-verification (Steve-run, gated)","body":""},{"hash":"b1a8d9e","date":"2026-08-17 09:19:14 -0700","author":"Steve Abrams","subject":"dashboard: align grankStatus text order with grankOrder sort (verify-domain before below-floor)","body":""},{"hash":"1d386d2","date":"2026-08-17 09:04:39 -0700","author":"Steve Abrams","subject":"server: default port fallback 9780->9782 so a fresh clone can't collide with ventura-corridor","body":""},{"hash":"9e0a952","date":"2026-08-17 08:57:44 -0700","author":"Steve Abrams","subject":"untrack .port (env-specific): prevents Mac2's 9780 clobbering Kamatera's 9782 and re-triggering the ventura-corridor port-collision crash-loop","body":""},{"hash":"a288a28","date":"2026-08-17 08:41:02 -0700","author":"Steve Abrams","subject":"keywords: organic-search grant-priority queue in ETL + sortable organic-first table on dashboard","body":""},{"hash":"c36f7f0","date":"2026-08-17 07:02:25 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-17T07:02:20 (1 data files) — etl.err","body":""},{"hash":"8de2359","date":"2026-08-15 08:12:33 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-15T08:12:28 (1 data files) — etl.err","body":""},{"hash":"c9d9500","date":"2026-08-15 07:41:59 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-15T07:41:54 (1 data files) — etl.err","body":""},{"hash":"333a4ef","date":"2026-08-14 19:00:21 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-14T19:00:16 (1 data files) — etl.err","body":""},{"hash":"53a7ee0","date":"2026-08-14 09:00:32 -0700","author":"steve","subject":"ga-allsites-etl: add EnvironmentVariables (PATH+HOME) so the launchd ETL runs clean + reboot-durable","body":""},{"hash":"edf35c1","date":"2026-08-07 01:18:52 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-07T01:18:25 (1 data files) — etl.err","body":""},{"hash":"9c77bc7","date":"2026-08-06 22:13:55 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-06T22:13:22 (1 data files) — etl.err","body":""},{"hash":"b190447","date":"2026-08-06 21:12:21 -0700","author":"auto-commit-fleet","subject":"auto-data-snapshot: 2026-08-06T21:11:53 (1 data files) — etl.err","body":""},{"hash":"a05a60f","date":"2026-08-06 07:49:49 -0700","author":"Steve Abrams","subject":"auto-save: 2026-08-06T07:49:47 (2 files) — etl.py server.py","body":""},{"hash":"4130c3a","date":"2026-08-05 23:16:38 -0700","author":"Steve Abrams","subject":"auto-save: 2026-08-05T23:16:37 (1 files) — etl.err","body":""},{"hash":"a252fa0","date":"2026-08-05 07:58:07 -0700","author":"Steve Abrams","subject":"Add 'exclude main store' toggle — hides bot-inflated DW store so real fleet totals are visible (header/Global/Charts/Sites)","body":""},{"hash":"c1f48fb","date":"2026-08-05 07:44:15 -0700","author":"Steve Abrams","subject":"ETL: flag-gated cache push to Kamatera (keeps analytics.agentabrams.com fresh every 30min, no restart)","body":""},{"hash":"531a1ab","date":"2026-08-05 07:41:35 -0700","author":"Steve Abrams","subject":"Add Global tab: animated liquid-fill gauge orbs (zero-dep SVG wave) for headline fleet stats","body":""},{"hash":"132e099","date":"2026-08-05 07:40:07 -0700","author":"Steve Abrams","subject":"auto-save: 2026-08-05T07:40:04 (1 files) — server.py","body":""},{"hash":"74fe872","date":"2026-08-04 15:22:27 -0700","author":"Steve Abrams","subject":"Add Charts overview page: 7 KPI cards + top-15 domains bar chart + country pie (shared renderPie helper)","body":""},{"hash":"56643dc","date":"2026-08-04 15:00:53 -0700","author":"Steve Abrams","subject":"Animated Live view: pulsing count-up counter + live-filling sparkline + smoothly-animating per-site bars; 15s poll, 12s cache","body":""},{"hash":"a26228a","date":"2026-08-04 14:26:09 -0700","author":"Steve Abrams","subject":"Add world Map tab (zero-dep SVG choropleth by sessions) + weighted fleet-avg time-on-site in header; bundle world.geojson","body":""},{"hash":"cc4417a","date":"2026-08-04 14:21:25 -0700","author":"Steve Abrams","subject":"Add per-site Top Country column + time-on-site (avg session duration, 7d/30d); footer skips averaged cols","body":""},{"hash":"265e278","date":"2026-08-04 14:16:56 -0700","author":"Steve Abrams","subject":"Housekeeping: drop server.py.bak, gitignore *.bak + preview pngs","body":""},{"hash":"997f94a","date":"2026-08-04 14:16:36 -0700","author":"Steve Abrams","subject":"Multi-view app: left icon-tab sidebar (Sites/Visuals/Country/Live) + pie/pyramid/mindmap charts + country ETL + persistent field selector","body":""},{"hash":"fa60089","date":"2026-08-04 14:01:55 -0700","author":"Steve Abrams","subject":"Add launchd ETL scheduler (30min auto-refresh); use homebrew python3 with google libs","body":""},{"hash":"e780b00","date":"2026-08-04 13:42:57 -0700","author":"Steve Abrams","subject":"Inject boot data server-side for instant first paint + credentialed-URL resilience","body":""},{"hash":"a646572","date":"2026-08-04 13:39:44 -0700","author":"Steve Abrams","subject":"GA all-sites dashboard: cache-ETL + live local server (DTD Option 1)","body":""}]}