Norma

repo: ~/Projects/Norma · 914 commits · 23 in last 24h, 109 in last 7d · ▂▄▆▆▅▅█

Search the build

914 commits indexed

  1. 9e31d8b 2026-09-26 auto-data-snapshot: 2026-09-26T17:20:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  2. 0482d69 2026-09-26 auto-data-snapshot: 2026-09-26T16:49:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  3. 4b3f690 2026-09-26 auto-data-snapshot: 2026-09-26T16:19:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  4. 78e6446 2026-09-26 auto-data-snapshot: 2026-09-26T15:18:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  5. fa1c94d 2026-09-26 auto-data-snapshot: 2026-09-26T14:47:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  6. 2a0952d 2026-09-26 auto-data-snapshot: 2026-09-26T14:17:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  7. 794ff10 2026-09-26 auto-data-snapshot: 2026-09-26T13:46:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  8. f3ba8a2 2026-09-26 auto-data-snapshot: 2026-09-26T12:44:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  9. 8d33006 2026-09-26 auto-data-snapshot: 2026-09-26T12:14:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  10. a0710ce 2026-09-26 auto-data-snapshot: 2026-09-26T11:43:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  11. 4b34ad0 2026-09-26 auto-data-snapshot: 2026-09-26T11:13:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  12. 10d2a69 2026-09-26 auto-data-snapshot: 2026-09-26T10:42:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  13. 453c0c1 2026-09-26 auto-data-snapshot: 2026-09-26T09:40:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  14. 4cd1569 2026-09-26 auto-data-snapshot: 2026-09-26T08:50:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  15. 345b1f7 2026-09-26 auto-data-snapshot: 2026-09-26T08:19:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  16. c69b9b4 2026-09-26 TK-11383: enroll beverlyandhillsdesigns + filthyrichlivingcom (Steve approved)
  17. 68d9f75 2026-09-26 auto-data-snapshot: 2026-09-26T07:48:27 (1 data files) — agents/instagram-agent/enrollment-hold.json
  18. 3b66731 2026-09-26 TK-11383: link-drift canary now measures the not-yet-linked accounts
  19. 8df6d23 2026-09-25 auto-data-snapshot: 2026-09-25T20:06:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  20. 8536711 2026-09-25 auto-data-snapshot: 2026-09-25T19:36:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  21. 9b1c283 2026-09-25 auto-data-snapshot: 2026-09-25T19:06:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  22. a08a533 2026-09-25 auto-data-snapshot: 2026-09-25T18:05:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  23. b9e21ed 2026-09-25 auto-data-snapshot: 2026-09-25T17:34:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  24. a8dc910 2026-09-25 auto-data-snapshot: 2026-09-25T17:04:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  25. a1009e8 2026-09-25 auto-data-snapshot: 2026-09-25T16:33:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  26. 2ae0e10 2026-09-25 auto-data-snapshot: 2026-09-25T14:28:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  27. bb46028 2026-09-25 auto-data-snapshot: 2026-09-25T13:56:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  28. 8d734f4 2026-09-25 auto-data-snapshot: 2026-09-25T13:25:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  29. d7f53d6 2026-09-25 auto-data-snapshot: 2026-09-25T12:54:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  30. 5dd74e6 2026-09-25 auto-data-snapshot: 2026-09-25T11:35:27 (2 data files) — agents/instagram-agent/enrollment-hold.json agents/instagram-agent/link-watchlist.json
  31. d5f7e72 2026-09-25 auto-data-snapshot: 2026-09-25T11:23:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  32. aeef014 2026-09-25 auto-data-snapshot: 2026-09-25T10:52:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  33. f1172aa 2026-09-25 auto-data-snapshot: 2026-09-25T10:22:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  34. dfde795 2026-09-25 auto-data-snapshot: 2026-09-25T09:51:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  35. e84f0c8 2026-09-25 auto-data-snapshot: 2026-09-25T08:49:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  36. fe9bc80 2026-09-24 auto-data-snapshot: 2026-09-24T19:59:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  37. 993ddb0 2026-09-24 auto-data-snapshot: 2026-09-24T18:58:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  38. 948c754 2026-09-24 auto-data-snapshot: 2026-09-24T18:27:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  39. da37b29 2026-09-24 auto-data-snapshot: 2026-09-24T17:57:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  40. f13fc62 2026-09-24 auto-data-snapshot: 2026-09-24T15:23:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  41. e8abb09 2026-09-24 auto-data-snapshot: 2026-09-24T14:52:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  42. 8d88816 2026-09-24 auto-data-snapshot: 2026-09-24T14:21:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  43. a55ec10 2026-09-24 auto-data-snapshot: 2026-09-24T13:20:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  44. afc4a57 2026-09-24 auto-data-snapshot: 2026-09-24T12:49:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  45. c60f0a2 2026-09-24 auto-data-snapshot: 2026-09-24T12:18:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  46. ffd9901 2026-09-24 auto-data-snapshot: 2026-09-24T11:48:03 (1 data files) — agents/instagram-agent/public/ig-activity.json
  47. 141010c 2026-09-24 auto-data-snapshot: 2026-09-24T11:17:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  48. f2ebe67 2026-09-24 auto-data-snapshot: 2026-09-24T10:15:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  49. a8d5d4d 2026-09-24 auto-data-snapshot: 2026-09-24T09:44:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  50. 3aaa5ae 2026-09-24 auto-data-snapshot: 2026-09-24T09:12:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  51. 1912f2c 2026-09-24 auto-data-snapshot: 2026-09-24T08:40:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  52. 1875fdd 2026-09-23 auto-data-snapshot: 2026-09-23T19:33:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  53. 533b6c7 2026-09-23 auto-data-snapshot: 2026-09-23T19:02:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  54. e4eff41 2026-09-23 auto-data-snapshot: 2026-09-23T18:30:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  55. e7836e8 2026-09-23 auto-data-snapshot: 2026-09-23T17:59:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  56. 496024d 2026-09-23 auto-data-snapshot: 2026-09-23T16:24:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  57. 1972c06 2026-09-23 auto-data-snapshot: 2026-09-23T15:21:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  58. e1fd5e4 2026-09-23 auto-data-snapshot: 2026-09-23T14:48:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  59. 80106d8 2026-09-23 auto-data-snapshot: 2026-09-23T14:17:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  60. 2a66b45 2026-09-23 auto-data-snapshot: 2026-09-23T13:45:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  61. 4754707 2026-09-23 auto-data-snapshot: 2026-09-23T12:42:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  62. ffc8c4a 2026-09-23 auto-data-snapshot: 2026-09-23T12:09:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  63. cd2c9a9 2026-09-23 auto-data-snapshot: 2026-09-23T11:38:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  64. 07a5535 2026-09-23 auto-data-snapshot: 2026-09-23T11:06:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  65. a700409 2026-09-23 auto-data-snapshot: 2026-09-23T10:35:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  66. 93b0651 2026-09-23 auto-data-snapshot: 2026-09-23T10:03:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  67. 837a31a 2026-09-23 auto-data-snapshot: 2026-09-23T08:59:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  68. 2a45d23 2026-09-23 auto-data-snapshot: 2026-09-23T08:28:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  69. 67d6abb 2026-09-22 auto-data-snapshot: 2026-09-22T20:24:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  70. ed9e1d2 2026-09-22 auto-data-snapshot: 2026-09-22T19:53:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  71. 064d2a2 2026-09-22 auto-data-snapshot: 2026-09-22T19:22:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  72. 1ef550f 2026-09-22 auto-data-snapshot: 2026-09-22T18:50:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  73. a787165 2026-09-22 auto-data-snapshot: 2026-09-22T18:19:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  74. 4d72bce 2026-09-22 auto-data-snapshot: 2026-09-22T17:47:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  75. 99a208b 2026-09-22 auto-data-snapshot: 2026-09-22T17:15:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  76. abdc01a 2026-09-22 auto-data-snapshot: 2026-09-22T16:42:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  77. 208a407 2026-09-22 auto-data-snapshot: 2026-09-22T16:09:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  78. e01ed70 2026-09-22 auto-data-snapshot: 2026-09-22T15:00:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  79. a49b9b9 2026-09-22 auto-data-snapshot: 2026-09-22T14:27:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  80. 40ce82a 2026-09-22 auto-data-snapshot: 2026-09-22T13:54:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  81. 45bd980 2026-09-22 auto-data-snapshot: 2026-09-22T13:21:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  82. bcd8d1f 2026-09-22 auto-data-snapshot: 2026-09-22T12:49:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  83. a79d363 2026-09-22 auto-data-snapshot: 2026-09-22T12:15:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  84. 68d4d0c 2026-09-22 auto-data-snapshot: 2026-09-22T11:43:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  85. 087f2d7 2026-09-22 auto-data-snapshot: 2026-09-22T11:11:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  86. 8f1455a 2026-09-22 IG post path: durable jewelry-counter exclusion gate (TK-12012)
  87. 987ab62 2026-09-22 instagram-agent: add loopback co-listener so 127.0.0.1:9810 answers (TK-12012)
  88. 1665ba4 2026-09-22 auto-data-snapshot: 2026-09-22T10:38:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  89. 1281a69 2026-09-22 auto-data-snapshot: 2026-09-22T09:54:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  90. 29aeff6 2026-09-21 auto-data-snapshot: 2026-09-21T19:40:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  91. 3100c51 2026-09-21 auto-data-snapshot: 2026-09-21T17:27:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  92. 660bef2 2026-09-21 auto-data-snapshot: 2026-09-21T16:51:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  93. 8de3208 2026-09-21 auto-data-snapshot: 2026-09-21T15:52:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  94. 376a249 2026-09-21 auto-data-snapshot: 2026-09-21T15:19:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  95. 5b56cd7 2026-09-21 auto-data-snapshot: 2026-09-21T14:47:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  96. 8303e30 2026-09-21 auto-data-snapshot: 2026-09-21T14:14:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  97. 6843278 2026-09-21 auto-data-snapshot: 2026-09-21T13:42:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  98. e127086 2026-09-21 auto-data-snapshot: 2026-09-21T13:09:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  99. 4bb8b81 2026-09-21 auto-data-snapshot: 2026-09-21T12:37:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  100. a193845 2026-09-21 auto-data-snapshot: 2026-09-21T10:59:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  101. 2c9de6f 2026-09-21 auto-data-snapshot: 2026-09-21T10:26:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  102. 315760f 2026-09-21 auto-data-snapshot: 2026-09-21T09:54:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  103. 42d2ea4 2026-09-21 auto-data-snapshot: 2026-09-21T09:21:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  104. f1ed42e 2026-09-21 auto-data-snapshot: 2026-09-21T08:49:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  105. 746c031 2026-09-20 security(TK-11783): strip hardcoded Google OAuth secrets from Norma Gmail-search scripts
  106. 909b29d 2026-09-19 auto-data-snapshot: 2026-09-19T20:05:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  107. 9d9890a 2026-09-19 auto-data-snapshot: 2026-09-19T19:32:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  108. 0bd36f7 2026-09-19 auto-data-snapshot: 2026-09-19T18:59:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  109. ac9eadc 2026-09-19 auto-data-snapshot: 2026-09-19T18:28:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  110. 101d5e7 2026-09-19 auto-data-snapshot: 2026-09-19T17:24:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  111. 4fcff8d 2026-09-19 auto-data-snapshot: 2026-09-19T15:17:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  112. 8c5a646 2026-09-19 auto-data-snapshot: 2026-09-19T14:45:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  113. d980f27 2026-09-19 auto-data-snapshot: 2026-09-19T14:13:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  114. 787e323 2026-09-19 auto-data-snapshot: 2026-09-19T13:09:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  115. 266c3ac 2026-09-19 auto-data-snapshot: 2026-09-19T12:38:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  116. b5f8054 2026-09-19 auto-data-snapshot: 2026-09-19T12:06:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  117. b99b732 2026-09-19 auto-data-snapshot: 2026-09-19T11:34:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  118. 9bffedd 2026-09-19 auto-data-snapshot: 2026-09-19T11:03:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  119. 6faf170 2026-09-19 auto-data-snapshot: 2026-09-19T10:31:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  120. a37d171 2026-09-19 auto-data-snapshot: 2026-09-19T09:59:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  121. 85cd52f 2026-09-19 auto-data-snapshot: 2026-09-19T08:55:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  122. 95c9f65 2026-09-19 auto-data-snapshot: 2026-09-19T08:23:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  123. bd28c15 2026-09-18 auto-data-snapshot: 2026-09-18T20:12:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  124. 42bb2fc 2026-09-18 auto-data-snapshot: 2026-09-18T19:41:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  125. fd9d617 2026-09-18 auto-data-snapshot: 2026-09-18T19:09:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  126. 74d2b40 2026-09-18 auto-data-snapshot: 2026-09-18T18:37:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  127. fac91ef 2026-09-18 auto-data-snapshot: 2026-09-18T17:33:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  128. 91a8382 2026-09-18 auto-data-snapshot: 2026-09-18T15:26:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  129. 54c3aaf 2026-09-18 auto-data-snapshot: 2026-09-18T14:54:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  130. 9a25cad 2026-09-18 auto-data-snapshot: 2026-09-18T14:19:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  131. c7716da 2026-09-18 auto-data-snapshot: 2026-09-18T13:45:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  132. 6d76d0a 2026-09-18 auto-data-snapshot: 2026-09-18T13:12:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  133. bc09063 2026-09-18 auto-data-snapshot: 2026-09-18T12:06:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  134. bd49ca5 2026-09-18 auto-data-snapshot: 2026-09-18T11:33:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  135. c7a8d96 2026-09-18 auto-data-snapshot: 2026-09-18T11:01:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  136. 70516d0 2026-09-18 auto-data-snapshot: 2026-09-18T10:30:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  137. 8d4abb5 2026-09-18 auto-data-snapshot: 2026-09-18T09:58:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  138. e961ae4 2026-09-18 auto-data-snapshot: 2026-09-18T09:26:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  139. 9d08743 2026-09-18 auto-data-snapshot: 2026-09-18T08:54:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  140. a5de3c3 2026-09-17 auto-data-snapshot: 2026-09-17T20:05:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  141. 7c1745e 2026-09-17 auto-data-snapshot: 2026-09-17T19:01:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  142. b073286 2026-09-17 auto-data-snapshot: 2026-09-17T18:29:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  143. 64acf0c 2026-09-17 auto-data-snapshot: 2026-09-17T17:57:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  144. 715ba39 2026-09-17 auto-data-snapshot: 2026-09-17T17:25:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  145. 2d33a04 2026-09-17 auto-data-snapshot: 2026-09-17T15:48:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  146. dcd20ae 2026-09-17 auto-data-snapshot: 2026-09-17T14:44:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  147. 3b6e9ca 2026-09-17 auto-data-snapshot: 2026-09-17T14:12:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  148. d582255 2026-09-17 auto-data-snapshot: 2026-09-17T13:41:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  149. 69a7a04 2026-09-17 auto-data-snapshot: 2026-09-17T13:09:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  150. c1c6312 2026-09-17 auto-data-snapshot: 2026-09-17T12:37:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  151. f35cb1e 2026-09-17 auto-data-snapshot: 2026-09-17T12:05:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  152. 9e3ae57 2026-09-17 auto-data-snapshot: 2026-09-17T11:32:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  153. 20a2b04 2026-09-17 auto-data-snapshot: 2026-09-17T10:59:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  154. ed6484f 2026-09-17 auto-data-snapshot: 2026-09-17T09:53:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  155. 942c82c 2026-09-17 auto-data-snapshot: 2026-09-17T09:20:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  156. dd269ce 2026-09-17 auto-data-snapshot: 2026-09-17T08:48:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  157. e105329 2026-09-17 auto-data-snapshot: 2026-09-17T08:16:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  158. dd07b0c 2026-09-16 auto-data-snapshot: 2026-09-16T20:01:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  159. 9c2f3c5 2026-09-16 auto-data-snapshot: 2026-09-16T19:29:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  160. 60a5357 2026-09-16 auto-data-snapshot: 2026-09-16T18:58:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  161. 4de85f2 2026-09-16 auto-data-snapshot: 2026-09-16T18:26:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  162. 41fdaef 2026-09-16 auto-data-snapshot: 2026-09-16T17:20:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  163. 29f3935 2026-09-16 auto-data-snapshot: 2026-09-16T15:11:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  164. 7245d57 2026-09-16 auto-data-snapshot: 2026-09-16T14:34:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  165. b80bd24 2026-09-16 auto-data-snapshot: 2026-09-16T13:57:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  166. ce81b11 2026-09-16 auto-data-snapshot: 2026-09-16T13:25:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  167. f67d937 2026-09-16 auto-data-snapshot: 2026-09-16T12:52:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  168. 3c799e2 2026-09-16 auto-data-snapshot: 2026-09-16T12:19:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  169. ca6be7f 2026-09-16 auto-data-snapshot: 2026-09-16T11:47:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  170. b58d0fe 2026-09-16 auto-data-snapshot: 2026-09-16T10:40:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  171. 289bc37 2026-09-16 auto-data-snapshot: 2026-09-16T10:07:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  172. 43e3a67 2026-09-16 auto-data-snapshot: 2026-09-16T09:33:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  173. 98ef139 2026-09-16 auto-data-snapshot: 2026-09-16T08:57:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  174. bab569c 2026-09-16 auto-data-snapshot: 2026-09-16T08:24:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  175. 31f41a5 2026-09-15 auto-data-snapshot: 2026-09-15T19:39:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  176. 006bd20 2026-09-15 auto-data-snapshot: 2026-09-15T19:06:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  177. 1a52d09 2026-09-15 auto-data-snapshot: 2026-09-15T18:34:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  178. 28813f1 2026-09-15 auto-data-snapshot: 2026-09-15T18:00:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  179. 323cddc 2026-09-15 auto-data-snapshot: 2026-09-15T16:53:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  180. 963d43c 2026-09-15 auto-data-snapshot: 2026-09-15T15:48:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  181. e204264 2026-09-15 auto-data-snapshot: 2026-09-15T15:16:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  182. 31674ec 2026-09-15 auto-data-snapshot: 2026-09-15T14:44:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  183. 14bfbd9 2026-09-15 auto-data-snapshot: 2026-09-15T14:13:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  184. 00378e5 2026-09-15 auto-data-snapshot: 2026-09-15T13:40:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  185. 82f070a 2026-09-15 auto-data-snapshot: 2026-09-15T13:06:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  186. 6e0bdcd 2026-09-15 auto-data-snapshot: 2026-09-15T12:33:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  187. ef02599 2026-09-15 auto-data-snapshot: 2026-09-15T12:00:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  188. 33c8387 2026-09-15 auto-data-snapshot: 2026-09-15T11:25:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  189. 9d9aa19 2026-09-15 auto-data-snapshot: 2026-09-15T10:20:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  190. 71c7ed2 2026-09-15 auto-data-snapshot: 2026-09-15T09:48:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  191. 42474d7 2026-09-15 auto-data-snapshot: 2026-09-15T09:16:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  192. 71949d3 2026-09-15 auto-data-snapshot: 2026-09-15T08:44:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  193. 10065cd 2026-09-14 auto-data-snapshot: 2026-09-14T19:58:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  194. 33e39ff 2026-09-14 auto-data-snapshot: 2026-09-14T19:26:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  195. eb5cead 2026-09-14 auto-data-snapshot: 2026-09-14T18:54:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  196. 8a65e7e 2026-09-14 auto-data-snapshot: 2026-09-14T17:51:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  197. 38a9d9e 2026-09-14 auto-data-snapshot: 2026-09-14T17:18:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  198. ba03c19 2026-09-14 auto-data-snapshot: 2026-09-14T16:46:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  199. a0c313b 2026-09-14 auto-data-snapshot: 2026-09-14T16:13:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  200. a6a2a58 2026-09-14 auto-data-snapshot: 2026-09-14T15:41:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  201. 31ae148 2026-09-14 auto-data-snapshot: 2026-09-14T15:08:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  202. 58aed5f 2026-09-14 auto-data-snapshot: 2026-09-14T14:36:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  203. 6aa5fcb 2026-09-14 auto-data-snapshot: 2026-09-14T14:02:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  204. cfcf594 2026-09-14 auto-data-snapshot: 2026-09-14T12:23:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  205. ebec51a 2026-09-14 auto-data-snapshot: 2026-09-14T11:51:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  206. 4073830 2026-09-14 auto-data-snapshot: 2026-09-14T11:19:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  207. 4b2fe3c 2026-09-14 auto-data-snapshot: 2026-09-14T10:47:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  208. e815386 2026-09-14 Stop git bleed: untrack CTA recordings + demo videos, gitignore them (TK-11533)
  209. 4cd5627 2026-09-14 auto-data-snapshot: 2026-09-14T10:14:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  210. e0d0325 2026-09-14 auto-data-snapshot: 2026-09-14T08:53:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  211. 11eb4af 2026-09-14 auto-data-snapshot: 2026-09-14T08:21:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  212. 51c0305 2026-09-13 TK-11383: bring the PUBLISHER's enrollment hold to parity with the builder
  213. 36f4ede 2026-09-13 TK-11383: close the allowlist-expansion path to unapproved public IG posting
  214. 3bdc7a5 2026-09-13 TK-11383: enforce the enrollment hold at the PUBLISHER too, not just the builder
  215. 72f0976 2026-09-13 TK-11383: enforce the designerschat enrollment hold at the PUBLISHER too
  216. 123570c 2026-09-13 TK-11383: make build-registry.js stop silently changing who posts publicly
  217. 414dbe2 2026-09-13 fix: extend dw-ig-link-drift with business_management edge for linked-but-not-granted pages (TK-11604)
  218. 4aca47c 2026-09-13 TK-11383: read-only probe that sees Pages outside the pages_show_list allowlist
  219. 77e1cb6 2026-09-12 auto-data-snapshot: 2026-09-12T19:54:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  220. ae5e110 2026-09-12 auto-data-snapshot: 2026-09-12T19:22:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  221. eb8d799 2026-09-12 auto-data-snapshot: 2026-09-12T18:49:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  222. 50e05c9 2026-09-12 auto-data-snapshot: 2026-09-12T18:17:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  223. 060c0fb 2026-09-12 auto-data-snapshot: 2026-09-12T17:44:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  224. 71eed63 2026-09-12 auto-data-snapshot: 2026-09-12T15:35:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  225. c3ea4ba 2026-09-12 auto-data-snapshot: 2026-09-12T15:03:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  226. 8459a90 2026-09-12 auto-data-snapshot: 2026-09-12T14:31:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  227. cdd2677 2026-09-12 auto-data-snapshot: 2026-09-12T13:59:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  228. 5581539 2026-09-12 auto-data-snapshot: 2026-09-12T13:27:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  229. d23b682 2026-09-12 auto-data-snapshot: 2026-09-12T12:53:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  230. d090699 2026-09-12 auto-data-snapshot: 2026-09-12T12:21:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  231. d48923f 2026-09-12 auto-data-snapshot: 2026-09-12T11:17:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  232. 801e98e 2026-09-12 auto-data-snapshot: 2026-09-12T10:45:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  233. 53004f4 2026-09-12 auto-data-snapshot: 2026-09-12T10:01:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  234. dac6397 2026-09-12 auto-data-snapshot: 2026-09-12T09:28:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  235. 06a6ced 2026-09-12 auto-data-snapshot: 2026-09-12T08:55:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  236. fa267f5 2026-09-12 auto-data-snapshot: 2026-09-12T08:20:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  237. b57185c 2026-09-11 auto-data-snapshot: 2026-09-11T20:13:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  238. 12f9613 2026-09-11 auto-data-snapshot: 2026-09-11T19:40:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  239. 6a0ef26 2026-09-11 auto-data-snapshot: 2026-09-11T19:08:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  240. ca90a34 2026-09-11 auto-data-snapshot: 2026-09-11T18:34:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  241. 17d8eec 2026-09-11 auto-data-snapshot: 2026-09-11T18:01:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  242. 0409f8f 2026-09-11 auto-data-snapshot: 2026-09-11T17:28:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  243. ecd9f69 2026-09-11 auto-data-snapshot: 2026-09-11T15:49:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  244. 94fb1f2 2026-09-11 auto-data-snapshot: 2026-09-11T15:15:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  245. 007a407 2026-09-11 auto-data-snapshot: 2026-09-11T14:39:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  246. 913ad78 2026-09-11 auto-data-snapshot: 2026-09-11T13:57:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  247. 42016d6 2026-09-11 Revert "TK-11383: enroll @designerschat — IG fleet 35 -> 36"
  248. e94fe25 2026-09-11 TK-11383: enroll @designerschat — IG fleet 35 -> 36
  249. 19a34d7 2026-09-11 TK-11383: make the page-link driver self-diagnosing
  250. aff4490 2026-09-11 auto-data-snapshot: 2026-09-11T13:23:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  251. 0e601bd 2026-09-11 auto-data-snapshot: 2026-09-11T12:47:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  252. 90929b0 2026-09-11 TK-11383: add drive-page-link.mjs — Steve-run openclaw driver to the Linked accounts screen
  253. 8e37bdd 2026-09-11 auto-data-snapshot: 2026-09-11T12:03:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  254. a8c6b49 2026-09-11 auto-data-snapshot: 2026-09-11T11:23:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  255. 0e18a60 2026-09-11 TK-11383: correct two false claims in the IG fleet runbook
  256. ad63521 2026-09-11 auto-data-snapshot: 2026-09-11T10:49:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  257. 5ac561d 2026-09-11 auto-data-snapshot: 2026-09-11T10:08:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  258. 09270d9 2026-09-11 auto-data-snapshot: 2026-09-11T09:31:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  259. 4f72e04 2026-09-11 auto-data-snapshot: 2026-09-11T08:57:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  260. 4d399e1 2026-09-11 Verify Norma browser journeys with settled cross-browser evidence
  261. 2f0cf94 2026-09-11 auto-data-snapshot: 2026-09-11T08:16:47 (3 data files) — agents/instagram-agent/public/ig-activity.json verification/browser-ux-isolated.json verification/browser-ux-live-public.json
  262. cd1437d 2026-09-11 snapshot before TK-11315 browser verification
  263. 8bb3668 2026-09-10 auto-data-snapshot: 2026-09-10T19:39:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  264. 04e5c69 2026-09-10 auto-data-snapshot: 2026-09-10T18:53:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  265. facf843 2026-09-10 auto-data-snapshot: 2026-09-10T18:07:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  266. 1102d51 2026-09-10 auto-data-snapshot: 2026-09-10T17:34:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  267. 870187f 2026-09-10 auto-data-snapshot: 2026-09-10T17:00:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  268. 9e3651e 2026-09-10 auto-data-snapshot: 2026-09-10T16:27:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  269. 5cff8ea 2026-09-10 auto-data-snapshot: 2026-09-10T14:47:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  270. 701d838 2026-09-10 auto-data-snapshot: 2026-09-10T14:13:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  271. 425ca86 2026-09-10 auto-data-snapshot: 2026-09-10T13:39:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  272. 2dfeaf3 2026-09-10 auto-data-snapshot: 2026-09-10T13:02:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  273. 8188dd0 2026-09-10 auto-data-snapshot: 2026-09-10T12:25:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  274. 1a8004a 2026-09-10 auto-data-snapshot: 2026-09-10T11:43:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  275. da7926a 2026-09-10 auto-data-snapshot: 2026-09-10T11:08:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  276. 55cd9d9 2026-09-10 auto-data-snapshot: 2026-09-10T10:34:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  277. 0ac35e5 2026-09-10 auto-data-snapshot: 2026-09-10T10:01:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  278. 4ba4761 2026-09-10 auto-data-snapshot: 2026-09-10T09:22:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  279. 3c09c19 2026-09-10 auto-data-snapshot: 2026-09-10T08:48:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  280. 09fe7b8 2026-09-10 TK-11367: fix delete tool's silent false-negative + add real approval gates
  281. ff18124 2026-09-10 auto-data-snapshot: 2026-09-10T08:12:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  282. ac130fd 2026-09-10 TK-11367: account-scoped Novasuede guard for Norma's daily cadence
  283. 2c9013b 2026-09-10 IG fleet: re-enroll @grassclothwallpaper (34->35) — link restored, Steve-approved TK-10740
  284. 690a70b 2026-09-10 TK-10758: ID-pinned eraser for the 2 residual sassy reposts
  285. dd68303 2026-09-10 IG fleet: add read-only link-drift checker (TK-10740)
  286. 58215ca 2026-09-09 auto-data-snapshot: 2026-09-09T20:06:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  287. fa07a52 2026-09-09 auto-data-snapshot: 2026-09-09T19:32:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  288. a4716db 2026-09-09 auto-data-snapshot: 2026-09-09T18:59:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  289. ba58486 2026-09-09 auto-data-snapshot: 2026-09-09T18:26:03 (1 data files) — agents/instagram-agent/public/ig-activity.json
  290. d7ae6b9 2026-09-09 auto-data-snapshot: 2026-09-09T17:19:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  291. 52e1958 2026-09-09 auto-data-snapshot: 2026-09-09T15:02:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  292. e2bf596 2026-09-09 auto-data-snapshot: 2026-09-09T14:29:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  293. 664e5a2 2026-09-09 auto-data-snapshot: 2026-09-09T13:56:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  294. 5f2a717 2026-09-09 auto-data-snapshot: 2026-09-09T13:23:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  295. 280a57a 2026-09-09 auto-data-snapshot: 2026-09-09T12:49:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  296. fd2e367 2026-09-09 auto-data-snapshot: 2026-09-09T12:16:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  297. 81d6d39 2026-09-09 auto-data-snapshot: 2026-09-09T11:42:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  298. 1113c0b 2026-09-09 auto-data-snapshot: 2026-09-09T11:09:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  299. fc631f6 2026-09-09 Update Norma UX evidence from isolated run
  300. d02cb54 2026-09-09 auto-data-snapshot: 2026-09-09T10:04:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  301. 2f246a7 2026-09-09 auto-data-snapshot: 2026-09-09T09:32:15 (4 data files) — agents/instagram-agent/public/ig-activity.json cta/CTA-REPORT.md cta/cta-mini.json cta/route-check.json
  302. 152d007 2026-09-09 auto-data-snapshot: 2026-09-09T08:59:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  303. 3d903d4 2026-09-09 Record Norma UX browser evidence
  304. f3552f7 2026-09-09 auto-data-snapshot: 2026-09-09T08:26:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  305. b70d36d 2026-09-09 Clear Norma release lint and type gate
  306. 55fb2ea 2026-09-09 Clean lint autofix whitespace
  307. 494dad3 2026-09-09 Align Norma lint toolchain and autofix safe issues
  308. 318ab90 2026-09-08 Make session secret narrowing explicit
  309. 9a97f8a 2026-09-08 Harden Norma OAuth webhooks and release checks
  310. db3be27 2026-09-08 auto-data-snapshot: 2026-09-08T20:11:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  311. ac03652 2026-09-08 auto-data-snapshot: 2026-09-08T19:39:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  312. ddd386c 2026-09-08 auto-data-snapshot: 2026-09-08T19:07:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  313. 4fe632a 2026-09-08 auto-data-snapshot: 2026-09-08T18:35:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  314. fc89a41 2026-09-08 auto-data-snapshot: 2026-09-08T18:03:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  315. f133f55 2026-09-08 auto-data-snapshot: 2026-09-08T15:35:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  316. 40c5bce 2026-09-08 auto-data-snapshot: 2026-09-08T14:56:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  317. 6911c0e 2026-09-08 auto-data-snapshot: 2026-09-08T14:18:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  318. f71b9c3 2026-09-08 auto-data-snapshot: 2026-09-08T13:39:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  319. d63f76f 2026-09-08 auto-data-snapshot: 2026-09-08T12:55:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  320. 158d3c0 2026-09-08 auto-data-snapshot: 2026-09-08T12:16:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  321. d40b9cc 2026-09-08 auto-data-snapshot: 2026-09-08T11:37:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  322. 4d4f9ab 2026-09-08 auto-data-snapshot: 2026-09-08T10:58:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  323. bce4142 2026-09-08 auto-data-snapshot: 2026-09-08T10:19:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  324. 60a5e15 2026-09-08 auto-data-snapshot: 2026-09-08T09:40:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  325. c3dbf27 2026-09-08 auto-data-snapshot: 2026-09-08T09:02:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  326. 44ce45b 2026-09-08 auto-data-snapshot: 2026-09-08T08:24:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  327. 5f0326a 2026-09-07 auto-data-snapshot: 2026-09-07T19:41:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  328. a53f712 2026-09-07 auto-data-snapshot: 2026-09-07T19:03:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  329. 202b70e 2026-09-07 auto-data-snapshot: 2026-09-07T18:25:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  330. 5e9b350 2026-09-07 auto-data-snapshot: 2026-09-07T17:47:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  331. 98efb14 2026-09-07 auto-data-snapshot: 2026-09-07T17:09:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  332. b38bcfa 2026-09-07 auto-data-snapshot: 2026-09-07T16:31:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  333. 0e5da27 2026-09-07 auto-data-snapshot: 2026-09-07T15:53:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  334. 81a0af5 2026-09-07 auto-data-snapshot: 2026-09-07T15:15:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  335. c350475 2026-09-07 auto-data-snapshot: 2026-09-07T14:38:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  336. 95c833a 2026-09-07 auto-data-snapshot: 2026-09-07T14:00:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  337. 2d6006f 2026-09-07 auto-data-snapshot: 2026-09-07T13:22:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  338. ac0b501 2026-09-07 auto-data-snapshot: 2026-09-07T12:38:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  339. 8afe343 2026-09-07 auto-data-snapshot: 2026-09-07T12:00:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  340. a95d93f 2026-09-07 auto-data-snapshot: 2026-09-07T11:21:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  341. d8fcf78 2026-09-07 auto-data-snapshot: 2026-09-07T10:43:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  342. bb2e932 2026-09-07 auto-data-snapshot: 2026-09-07T10:04:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  343. 3c2ed32 2026-09-07 auto-data-snapshot: 2026-09-07T09:25:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  344. d46e7c0 2026-09-07 auto-data-snapshot: 2026-09-07T08:47:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  345. b01709d 2026-09-07 auto-data-snapshot: 2026-09-07T08:09:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  346. 2e29d6c 2026-09-05 auto-data-snapshot: 2026-09-05T20:16:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  347. 1c38344 2026-09-05 auto-data-snapshot: 2026-09-05T19:38:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  348. de727f8 2026-09-05 auto-data-snapshot: 2026-09-05T19:00:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  349. 9289eee 2026-09-05 auto-data-snapshot: 2026-09-05T18:21:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  350. 689ad59 2026-09-05 auto-data-snapshot: 2026-09-05T17:43:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  351. b09567d 2026-09-05 auto-data-snapshot: 2026-09-05T15:09:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  352. 5e6cde3 2026-09-05 auto-data-snapshot: 2026-09-05T14:31:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  353. afcd15f 2026-09-05 auto-data-snapshot: 2026-09-05T13:53:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  354. 6024213 2026-09-05 auto-data-snapshot: 2026-09-05T13:15:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  355. faf4a41 2026-09-05 auto-data-snapshot: 2026-09-05T12:36:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  356. c79f07f 2026-09-05 auto-data-snapshot: 2026-09-05T11:58:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  357. 833ccff 2026-09-05 auto-data-snapshot: 2026-09-05T11:20:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  358. f29b440 2026-09-05 auto-data-snapshot: 2026-09-05T10:42:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  359. 219ac64 2026-09-05 auto-data-snapshot: 2026-09-05T10:03:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  360. df6fe09 2026-09-05 auto-data-snapshot: 2026-09-05T09:24:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  361. d368c38 2026-09-05 auto-data-snapshot: 2026-09-05T08:46:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  362. eaf7175 2026-09-04 auto-data-snapshot: 2026-09-04T19:59:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  363. f927685 2026-09-04 auto-data-snapshot: 2026-09-04T19:20:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  364. b0d2997 2026-09-04 auto-data-snapshot: 2026-09-04T18:42:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  365. 3c23058 2026-09-04 auto-data-snapshot: 2026-09-04T18:04:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  366. fa4859a 2026-09-04 auto-data-snapshot: 2026-09-04T17:26:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  367. baf3fb9 2026-09-04 auto-data-snapshot: 2026-09-04T15:31:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  368. 360fef9 2026-09-04 auto-data-snapshot: 2026-09-04T14:52:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  369. 784b4b9 2026-09-04 auto-data-snapshot: 2026-09-04T14:13:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  370. 08fe7b6 2026-09-04 auto-data-snapshot: 2026-09-04T13:35:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  371. 2b32aed 2026-09-04 auto-data-snapshot: 2026-09-04T12:55:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  372. 2b2cdb9 2026-09-04 auto-data-snapshot: 2026-09-04T12:10:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  373. c4439f7 2026-09-04 auto-data-snapshot: 2026-09-04T11:31:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  374. 40ad919 2026-09-04 auto-data-snapshot: 2026-09-04T10:48:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  375. e650624 2026-09-04 auto-data-snapshot: 2026-09-04T10:10:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  376. 105b658 2026-09-04 auto-data-snapshot: 2026-09-04T09:09:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  377. 35f1921 2026-09-04 auto-data-snapshot: 2026-09-04T08:26:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  378. 531a4a4 2026-09-03 auto-data-snapshot: 2026-09-03T20:10:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  379. a2a082e 2026-09-03 auto-data-snapshot: 2026-09-03T19:32:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  380. 66e15b3 2026-09-03 auto-data-snapshot: 2026-09-03T18:54:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  381. 0d3e889 2026-09-03 auto-data-snapshot: 2026-09-03T18:17:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  382. 3e9fbec 2026-09-03 auto-data-snapshot: 2026-09-03T17:39:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  383. 381eecd 2026-09-03 auto-data-snapshot: 2026-09-03T15:45:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  384. 6843c46 2026-09-03 auto-data-snapshot: 2026-09-03T15:07:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  385. 6bba4fa 2026-09-03 auto-data-snapshot: 2026-09-03T14:29:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  386. 8d6ad09 2026-09-03 auto-data-snapshot: 2026-09-03T13:47:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  387. da3c94d 2026-09-03 auto-data-snapshot: 2026-09-03T13:07:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  388. d3df724 2026-09-03 auto-data-snapshot: 2026-09-03T12:32:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  389. 75844f8 2026-09-03 auto-data-snapshot: 2026-09-03T11:49:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  390. 0edb69d 2026-09-03 auto-data-snapshot: 2026-09-03T11:10:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  391. 77c12db 2026-09-03 auto-data-snapshot: 2026-09-03T10:32:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  392. 3424b88 2026-09-03 auto-data-snapshot: 2026-09-03T09:53:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  393. 5241017 2026-09-03 auto-data-snapshot: 2026-09-03T09:14:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  394. 1b4d5fa 2026-09-03 auto-data-snapshot: 2026-09-03T08:35:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  395. 26a2188 2026-09-02 auto-data-snapshot: 2026-09-02T19:55:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  396. d47bb93 2026-09-02 auto-data-snapshot: 2026-09-02T19:17:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  397. 1308b51 2026-09-02 auto-data-snapshot: 2026-09-02T18:39:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  398. c3a185b 2026-09-02 auto-data-snapshot: 2026-09-02T18:02:03 (1 data files) — agents/instagram-agent/public/ig-activity.json
  399. 7c3d21c 2026-09-02 auto-data-snapshot: 2026-09-02T17:24:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  400. 5fa7cd9 2026-09-02 auto-data-snapshot: 2026-09-02T16:03:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  401. a82dd03 2026-09-02 auto-data-snapshot: 2026-09-02T15:21:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  402. e4feac5 2026-09-02 auto-data-snapshot: 2026-09-02T14:42:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  403. 846e790 2026-09-02 auto-data-snapshot: 2026-09-02T14:03:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  404. 8cd4515 2026-09-02 auto-data-snapshot: 2026-09-02T13:25:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  405. 533c5c6 2026-09-02 auto-data-snapshot: 2026-09-02T12:46:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  406. 0c42c77 2026-09-02 auto-data-snapshot: 2026-09-02T12:07:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  407. bd72923 2026-09-02 auto-data-snapshot: 2026-09-02T11:28:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  408. f4e158e 2026-09-02 auto-data-snapshot: 2026-09-02T10:48:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  409. a324bd7 2026-09-02 auto-data-snapshot: 2026-09-02T10:09:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  410. daa09d9 2026-09-02 auto-data-snapshot: 2026-09-02T09:35:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  411. 2480373 2026-09-02 auto-data-snapshot: 2026-09-02T09:04:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  412. 43a6b32 2026-09-02 auto-data-snapshot: 2026-09-02T08:25:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  413. 8195dc4 2026-09-01 auto-data-snapshot: 2026-09-01T19:53:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  414. 3b5d798 2026-09-01 auto-data-snapshot: 2026-09-01T19:16:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  415. ceacd85 2026-09-01 auto-data-snapshot: 2026-09-01T18:38:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  416. c3684d9 2026-09-01 auto-data-snapshot: 2026-09-01T18:00:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  417. 18ab19b 2026-09-01 auto-data-snapshot: 2026-09-01T17:22:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  418. 430062e 2026-09-01 auto-data-snapshot: 2026-09-01T16:07:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  419. bc14130 2026-09-01 auto-data-snapshot: 2026-09-01T15:29:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  420. 0acd26d 2026-09-01 auto-data-snapshot: 2026-09-01T14:52:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  421. 9b1947d 2026-09-01 auto-data-snapshot: 2026-09-01T14:14:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  422. 941e043 2026-09-01 auto-data-snapshot: 2026-09-01T13:36:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  423. 4605cdd 2026-09-01 auto-data-snapshot: 2026-09-01T12:55:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  424. 1edc870 2026-09-01 auto-data-snapshot: 2026-09-01T12:16:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  425. fc99c84 2026-09-01 auto-data-snapshot: 2026-09-01T11:38:20 (1 data files) — agents/instagram-agent/public/ig-activity.json
  426. 7b0c23f 2026-09-01 auto-data-snapshot: 2026-09-01T10:56:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  427. b91e7cf 2026-09-01 auto-data-snapshot: 2026-09-01T10:19:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  428. 49a86b8 2026-09-01 auto-data-snapshot: 2026-09-01T09:42:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  429. a61acb4 2026-09-01 auto-data-snapshot: 2026-09-01T09:05:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  430. d9d84fe 2026-09-01 auto-data-snapshot: 2026-09-01T08:28:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  431. 0991840 2026-08-31 auto-data-snapshot: 2026-08-31T20:06:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  432. 58bd834 2026-08-31 auto-data-snapshot: 2026-08-31T19:29:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  433. c526f80 2026-08-31 auto-data-snapshot: 2026-08-31T18:52:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  434. 071fb8b 2026-08-31 auto-data-snapshot: 2026-08-31T18:15:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  435. 222d28f 2026-08-31 auto-data-snapshot: 2026-08-31T17:38:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  436. cfcb8d1 2026-08-31 auto-data-snapshot: 2026-08-31T16:59:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  437. c968976 2026-08-31 auto-data-snapshot: 2026-08-31T16:22:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  438. ab3efbb 2026-08-31 auto-data-snapshot: 2026-08-31T15:44:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  439. b414d0e 2026-08-31 auto-data-snapshot: 2026-08-31T15:07:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  440. 20f8e1c 2026-08-31 auto-data-snapshot: 2026-08-31T14:28:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  441. abf140c 2026-08-31 auto-data-snapshot: 2026-08-31T13:51:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  442. 4942297 2026-08-31 auto-data-snapshot: 2026-08-31T13:13:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  443. 023e8a7 2026-08-31 auto-data-snapshot: 2026-08-31T12:34:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  444. 331fc8b 2026-08-31 auto-data-snapshot: 2026-08-31T11:55:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  445. 1e14ffe 2026-08-31 auto-data-snapshot: 2026-08-31T11:17:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  446. 61b4acb 2026-08-31 auto-data-snapshot: 2026-08-31T10:38:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  447. 2f54b80 2026-08-31 auto-data-snapshot: 2026-08-31T10:06:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  448. be89cc3 2026-08-31 auto-data-snapshot: 2026-08-31T09:29:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  449. 1e76e1a 2026-08-31 auto-data-snapshot: 2026-08-31T08:52:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  450. 4c30e51 2026-08-31 auto-data-snapshot: 2026-08-31T08:15:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  451. c7d0a87 2026-08-29 auto-data-snapshot: 2026-08-29T20:09:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  452. d238df4 2026-08-29 auto-data-snapshot: 2026-08-29T19:32:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  453. 06a97dd 2026-08-29 auto-data-snapshot: 2026-08-29T18:56:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  454. 5ae9556 2026-08-29 auto-data-snapshot: 2026-08-29T18:19:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  455. 0b22a6a 2026-08-29 auto-data-snapshot: 2026-08-29T17:42:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  456. 9f37648 2026-08-29 auto-data-snapshot: 2026-08-29T15:52:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  457. bf42997 2026-08-29 auto-data-snapshot: 2026-08-29T15:15:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  458. e17d0a1 2026-08-29 auto-data-snapshot: 2026-08-29T14:38:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  459. 52359bc 2026-08-29 auto-data-snapshot: 2026-08-29T14:01:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  460. a1f2344 2026-08-29 auto-data-snapshot: 2026-08-29T13:24:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  461. c9da9b3 2026-08-29 auto-data-snapshot: 2026-08-29T12:47:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  462. b4f2877 2026-08-29 auto-data-snapshot: 2026-08-29T12:10:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  463. 04e0c11 2026-08-29 auto-data-snapshot: 2026-08-29T11:33:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  464. cf09a7a 2026-08-29 auto-data-snapshot: 2026-08-29T10:56:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  465. 0c2e085 2026-08-29 auto-data-snapshot: 2026-08-29T10:19:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  466. 678bc69 2026-08-29 auto-data-snapshot: 2026-08-29T09:43:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  467. e5f3bcc 2026-08-29 auto-data-snapshot: 2026-08-29T09:06:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  468. a45f28a 2026-08-29 auto-data-snapshot: 2026-08-29T08:29:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  469. 3c619db 2026-08-28 auto-data-snapshot: 2026-08-28T19:30:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  470. 6def017 2026-08-28 auto-data-snapshot: 2026-08-28T18:53:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  471. 3cbdc47 2026-08-28 auto-data-snapshot: 2026-08-28T18:16:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  472. 6208150 2026-08-28 auto-data-snapshot: 2026-08-28T17:39:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  473. f7dda89 2026-08-28 auto-data-snapshot: 2026-08-28T17:02:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  474. 425bdab 2026-08-28 auto-data-snapshot: 2026-08-28T15:48:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  475. c831e8d 2026-08-28 auto-data-snapshot: 2026-08-28T15:12:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  476. 6551ffb 2026-08-28 auto-data-snapshot: 2026-08-28T14:34:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  477. 09259db 2026-08-28 auto-data-snapshot: 2026-08-28T13:58:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  478. 96ad14e 2026-08-28 auto-data-snapshot: 2026-08-28T13:21:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  479. a7cab9b 2026-08-28 auto-data-snapshot: 2026-08-28T12:44:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  480. bd8aa33 2026-08-28 auto-data-snapshot: 2026-08-28T12:07:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  481. fe37427 2026-08-28 auto-data-snapshot: 2026-08-28T11:30:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  482. 16c8205 2026-08-28 auto-data-snapshot: 2026-08-28T10:53:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  483. 41d4f79 2026-08-28 auto-data-snapshot: 2026-08-28T10:16:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  484. a278a27 2026-08-28 auto-data-snapshot: 2026-08-28T09:39:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  485. 0aed9bf 2026-08-28 auto-data-snapshot: 2026-08-28T09:02:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  486. cbd8321 2026-08-28 auto-data-snapshot: 2026-08-28T08:24:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  487. 4b4bb89 2026-08-28 auto-data-snapshot: 2026-08-28T07:45:44 (1 data files) — scripts/password-restore/admin-2026-08-28T14-32-40-840Z.json
  488. 159c3e5 2026-08-28 scripts: restore-admin-hash helper (revert a tier_credentials hash from a saved restore file)
  489. db0ecc2 2026-08-28 feat(set-admin-password): NEW_PW_B64 input to survive shell '!' mangling
  490. 7c027a1 2026-08-28 fix(set-admin-password): read .env.local first, echo DB host, abort on multi-row (Cody gate)
  491. c5e8f58 2026-08-28 scripts: reversible set-admin-password helper (bcrypt, captures old hash)
  492. 1ea90de 2026-08-27 auto-data-snapshot: 2026-08-27T20:01:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  493. f08a3ee 2026-08-27 auto-data-snapshot: 2026-08-27T19:24:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  494. 5e380e2 2026-08-27 auto-data-snapshot: 2026-08-27T18:47:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  495. 3e6347f 2026-08-27 auto-data-snapshot: 2026-08-27T18:10:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  496. c756e29 2026-08-27 auto-data-snapshot: 2026-08-27T17:33:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  497. 735514a 2026-08-27 auto-data-snapshot: 2026-08-27T15:43:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  498. f93292f 2026-08-27 auto-data-snapshot: 2026-08-27T15:06:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  499. edaf1f5 2026-08-27 auto-data-snapshot: 2026-08-27T14:29:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  500. 042267e 2026-08-27 auto-data-snapshot: 2026-08-27T13:51:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  501. d43ec19 2026-08-27 auto-data-snapshot: 2026-08-27T13:15:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  502. c575b9a 2026-08-27 auto-data-snapshot: 2026-08-27T12:38:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  503. f3efdf7 2026-08-27 auto-data-snapshot: 2026-08-27T12:01:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  504. 2c3fe95 2026-08-27 auto-data-snapshot: 2026-08-27T11:24:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  505. afb0c09 2026-08-27 TK-10449: regenerate IG registry from live token — @grassclothwallpaper link dropped (35->34 postable, verified)
  506. 0045a7c 2026-08-27 auto-data-snapshot: 2026-08-27T10:47:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  507. 63141e3 2026-08-27 auto-data-snapshot: 2026-08-27T10:10:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  508. 7abb93e 2026-08-27 auto-data-snapshot: 2026-08-27T09:33:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  509. 00f0dfd 2026-08-27 auto-data-snapshot: 2026-08-27T08:56:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  510. cae7946 2026-08-27 auto-data-snapshot: 2026-08-27T08:19:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  511. 5e7147f 2026-08-26 auto-data-snapshot: 2026-08-26T20:07:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  512. 5f5472e 2026-08-26 auto-data-snapshot: 2026-08-26T19:31:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  513. 1dbcd5a 2026-08-26 auto-data-snapshot: 2026-08-26T18:55:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  514. 4355e0f 2026-08-26 auto-data-snapshot: 2026-08-26T18:18:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  515. e12abed 2026-08-26 auto-data-snapshot: 2026-08-26T17:42:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  516. 73e83b3 2026-08-26 auto-data-snapshot: 2026-08-26T17:05:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  517. 549be2e 2026-08-26 auto-data-snapshot: 2026-08-26T16:29:03 (1 data files) — agents/instagram-agent/public/ig-activity.json
  518. dddca16 2026-08-26 auto-data-snapshot: 2026-08-26T15:52:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  519. f4b84bd 2026-08-26 auto-data-snapshot: 2026-08-26T15:16:03 (1 data files) — agents/instagram-agent/public/ig-activity.json
  520. 449fa92 2026-08-26 auto-data-snapshot: 2026-08-26T14:39:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  521. a60fb44 2026-08-26 auto-data-snapshot: 2026-08-26T14:02:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  522. 362538b 2026-08-26 auto-data-snapshot: 2026-08-26T13:25:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  523. 745fed2 2026-08-26 auto-data-snapshot: 2026-08-26T12:47:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  524. 13c81bc 2026-08-26 auto-data-snapshot: 2026-08-26T12:08:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  525. 9df4868 2026-08-26 auto-data-snapshot: 2026-08-26T11:30:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  526. 69077d0 2026-08-26 auto-data-snapshot: 2026-08-26T10:53:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  527. c8be6e5 2026-08-26 auto-data-snapshot: 2026-08-26T10:15:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  528. 560e3c1 2026-08-26 auto-data-snapshot: 2026-08-26T09:38:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  529. 8d639f1 2026-08-26 auto-data-snapshot: 2026-08-26T09:01:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  530. ca257a9 2026-08-26 auto-data-snapshot: 2026-08-26T08:21:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  531. 6d4b1d0 2026-08-25 auto-data-snapshot: 2026-08-25T19:29:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  532. 4472324 2026-08-25 auto-data-snapshot: 2026-08-25T18:53:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  533. ea61d89 2026-08-25 auto-data-snapshot: 2026-08-25T18:16:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  534. 6dcc680 2026-08-25 auto-data-snapshot: 2026-08-25T17:39:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  535. 99f3fe2 2026-08-25 auto-data-snapshot: 2026-08-25T17:03:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  536. 6697b0e 2026-08-25 auto-data-snapshot: 2026-08-25T16:26:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  537. f70a279 2026-08-25 auto-data-snapshot: 2026-08-25T15:49:32 (1 data files) — agents/instagram-agent/public/ig-activity.json
  538. c819353 2026-08-25 auto-data-snapshot: 2026-08-25T15:12:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  539. fdd80a0 2026-08-25 auto-data-snapshot: 2026-08-25T14:34:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  540. 419678e 2026-08-25 auto-data-snapshot: 2026-08-25T13:58:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  541. 276ac8f 2026-08-25 auto-data-snapshot: 2026-08-25T13:21:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  542. 9677aff 2026-08-25 auto-data-snapshot: 2026-08-25T12:44:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  543. f2d128e 2026-08-25 auto-data-snapshot: 2026-08-25T12:06:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  544. 52bbfee 2026-08-25 auto-data-snapshot: 2026-08-25T11:28:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  545. be054e0 2026-08-25 auto-data-snapshot: 2026-08-25T10:46:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  546. fcabb6e 2026-08-25 auto-data-snapshot: 2026-08-25T10:08:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  547. 9d967d3 2026-08-25 auto-data-snapshot: 2026-08-25T09:32:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  548. 29e2505 2026-08-25 auto-data-snapshot: 2026-08-25T08:55:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  549. 60d2b88 2026-08-25 Add delete-novasuede-graph.js — gated Graph-API removal of 33 Novasuede IG posts (dry-run default, --go to execute)
  550. b2e7413 2026-08-24 auto-data-snapshot: 2026-08-24T20:06:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  551. 6497954 2026-08-24 auto-data-snapshot: 2026-08-24T19:34:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  552. 993670d 2026-08-24 auto-data-snapshot: 2026-08-24T18:33:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  553. 6dfdfbf 2026-08-24 auto-data-snapshot: 2026-08-24T18:03:09 (1 data files) — agents/instagram-agent/public/ig-activity.json
  554. cd870f8 2026-08-24 auto-data-snapshot: 2026-08-24T17:32:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  555. b7e398b 2026-08-24 auto-data-snapshot: 2026-08-24T17:02:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  556. 6f48931 2026-08-24 auto-data-snapshot: 2026-08-24T16:31:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  557. 62a177a 2026-08-24 auto-data-snapshot: 2026-08-24T15:30:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  558. 44be7e9 2026-08-24 auto-data-snapshot: 2026-08-24T15:00:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  559. fe68aed 2026-08-24 auto-data-snapshot: 2026-08-24T14:29:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  560. 48108a4 2026-08-24 auto-data-snapshot: 2026-08-24T13:59:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  561. 2759e57 2026-08-24 auto-data-snapshot: 2026-08-24T13:25:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  562. d4ae3a2 2026-08-24 auto-data-snapshot: 2026-08-24T12:55:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  563. d451e58 2026-08-24 auto-data-snapshot: 2026-08-24T12:20:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  564. 223ab9d 2026-08-24 auto-data-snapshot: 2026-08-24T11:44:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  565. bdb262c 2026-08-24 auto-data-snapshot: 2026-08-24T11:12:29 (1 data files) — agents/instagram-agent/public/ig-activity.json
  566. 674adb1 2026-08-24 auto-data-snapshot: 2026-08-24T10:40:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  567. c1c2d22 2026-08-24 auto-data-snapshot: 2026-08-24T10:08:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  568. b2932af 2026-08-24 auto-data-snapshot: 2026-08-24T09:36:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  569. c868ff8 2026-08-24 auto-data-snapshot: 2026-08-24T09:04:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  570. ee56ffa 2026-08-24 auto-data-snapshot: 2026-08-24T08:30:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  571. d521f5c 2026-08-22 auto-data-snapshot: 2026-08-22T20:21:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  572. c52f42e 2026-08-22 auto-data-snapshot: 2026-08-22T19:49:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  573. 8862da5 2026-08-22 auto-data-snapshot: 2026-08-22T19:18:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  574. c01c4e0 2026-08-22 auto-data-snapshot: 2026-08-22T18:46:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  575. 2df7cff 2026-08-22 auto-data-snapshot: 2026-08-22T18:14:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  576. 1386921 2026-08-22 auto-data-snapshot: 2026-08-22T17:42:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  577. ab7e6f2 2026-08-22 auto-data-snapshot: 2026-08-22T17:10:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  578. 27a2378 2026-08-22 auto-data-snapshot: 2026-08-22T16:38:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  579. ae29362 2026-08-22 auto-data-snapshot: 2026-08-22T16:06:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  580. 2e0c17b 2026-08-22 auto-data-snapshot: 2026-08-22T15:34:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  581. 5ee131f 2026-08-22 auto-data-snapshot: 2026-08-22T15:02:59 (1 data files) — agents/instagram-agent/public/ig-activity.json
  582. aff723e 2026-08-22 auto-data-snapshot: 2026-08-22T14:31:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  583. 0ef65b8 2026-08-22 auto-data-snapshot: 2026-08-22T13:59:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  584. 15e89a3 2026-08-22 auto-data-snapshot: 2026-08-22T13:27:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  585. 4b722b0 2026-08-22 auto-data-snapshot: 2026-08-22T12:55:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  586. 1061cc7 2026-08-22 auto-data-snapshot: 2026-08-22T12:23:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  587. e11994d 2026-08-22 auto-data-snapshot: 2026-08-22T11:52:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  588. 069fb02 2026-08-22 auto-data-snapshot: 2026-08-22T10:47:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  589. e3de0b4 2026-08-22 auto-data-snapshot: 2026-08-22T10:15:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  590. f0d6577 2026-08-22 auto-data-snapshot: 2026-08-22T09:43:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  591. ce53f0e 2026-08-22 auto-data-snapshot: 2026-08-22T09:11:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  592. 7b7c762 2026-08-22 auto-data-snapshot: 2026-08-22T08:40:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  593. 999d36a 2026-08-21 auto-data-snapshot: 2026-08-21T19:54:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  594. 288ffe7 2026-08-21 auto-data-snapshot: 2026-08-21T19:22:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  595. eb4f51b 2026-08-21 auto-data-snapshot: 2026-08-21T18:51:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  596. b83df23 2026-08-21 auto-data-snapshot: 2026-08-21T18:19:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  597. 2cb7426 2026-08-21 auto-data-snapshot: 2026-08-21T17:47:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  598. 79b0b6f 2026-08-21 auto-data-snapshot: 2026-08-21T17:15:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  599. 549a360 2026-08-21 auto-data-snapshot: 2026-08-21T16:12:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  600. 0324fdc 2026-08-21 auto-data-snapshot: 2026-08-21T15:40:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  601. 6316182 2026-08-21 auto-data-snapshot: 2026-08-21T15:08:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  602. 619aa11 2026-08-21 auto-data-snapshot: 2026-08-21T14:05:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  603. f107a6e 2026-08-21 auto-data-snapshot: 2026-08-21T13:33:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  604. 668801f 2026-08-21 auto-data-snapshot: 2026-08-21T13:00:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  605. 7c3a14c 2026-08-21 auto-data-snapshot: 2026-08-21T12:28:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  606. 239fa12 2026-08-21 auto-data-snapshot: 2026-08-21T11:56:19 (1 data files) — agents/instagram-agent/public/ig-activity.json
  607. 78c0012 2026-08-21 auto-data-snapshot: 2026-08-21T11:24:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  608. 677b913 2026-08-21 auto-data-snapshot: 2026-08-21T10:52:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  609. 649ef2d 2026-08-21 auto-data-snapshot: 2026-08-21T10:21:05 (1 data files) — agents/instagram-agent/public/ig-activity.json
  610. 83d491f 2026-08-21 auto-data-snapshot: 2026-08-21T09:49:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  611. 41fb8dd 2026-08-21 auto-data-snapshot: 2026-08-21T09:17:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  612. 28e34db 2026-08-21 auto-data-snapshot: 2026-08-21T08:45:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  613. 1d1def0 2026-08-20 auto-data-snapshot: 2026-08-20T20:00:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  614. f0bfecf 2026-08-20 auto-data-snapshot: 2026-08-20T19:28:34 (1 data files) — agents/instagram-agent/public/ig-activity.json
  615. d8a11b0 2026-08-20 auto-data-snapshot: 2026-08-20T18:56:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  616. 762d121 2026-08-20 auto-data-snapshot: 2026-08-20T17:52:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  617. ca1c6ed 2026-08-20 auto-data-snapshot: 2026-08-20T17:19:08 (1 data files) — agents/instagram-agent/public/ig-activity.json
  618. 23c99ec 2026-08-20 TK-10573: finish-fabric-fridays.sh wrapper (bakes the ™ handle to dodge paste truncation)
  619. 7507111 2026-08-20 TK-10758: reshare-erase pacing 15s->5s (browser-free, own accounts)
  620. 404bd15 2026-08-20 TK-10758: stop+erase sassy reposts of others' content - disabled reshare launchd jobs, browser-free erase reconciler (114 live across 4 accts)
  621. 75f9762 2026-08-20 TK-10573 GATE2: browser-free Graph-API reconcile + delete tooling (57 eligible, canary-first)
  622. 4c96ddd 2026-08-20 auto-data-snapshot: 2026-08-20T15:43:22 (1 data files) — agents/instagram-agent/public/ig-activity.json
  623. ef9b5f4 2026-08-20 auto-data-snapshot: 2026-08-20T15:11:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  624. 7ed8cc6 2026-08-20 auto-data-snapshot: 2026-08-20T14:39:47 (1 data files) — agents/instagram-agent/public/ig-activity.json
  625. 35f7f91 2026-08-20 auto-data-snapshot: 2026-08-20T14:07:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  626. ee8f0c1 2026-08-20 auto-data-snapshot: 2026-08-20T13:34:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  627. d56dad6 2026-08-20 auto-data-snapshot: 2026-08-20T13:00:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  628. f5631e8 2026-08-20 auto-data-snapshot: 2026-08-20T12:27:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  629. 44890cf 2026-08-20 auto-data-snapshot: 2026-08-20T11:53:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  630. b4eecbd 2026-08-20 auto-data-snapshot: 2026-08-20T11:21:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  631. 590a718 2026-08-20 auto-data-snapshot: 2026-08-20T10:47:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  632. 8b16923 2026-08-20 auto-data-snapshot: 2026-08-20T10:13:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  633. d101cd6 2026-08-20 auto-data-snapshot: 2026-08-20T09:38:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  634. 0efb577 2026-08-20 auto-data-snapshot: 2026-08-20T09:06:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  635. 9210e35 2026-08-20 auto-data-snapshot: 2026-08-20T08:33:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  636. 053f8cb 2026-08-19 auto-data-snapshot: 2026-08-19T20:02:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  637. 98f14b1 2026-08-19 auto-data-snapshot: 2026-08-19T19:30:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  638. bfbd18d 2026-08-19 auto-data-snapshot: 2026-08-19T18:57:31 (1 data files) — agents/instagram-agent/public/ig-activity.json
  639. 4c4f004 2026-08-19 auto-data-snapshot: 2026-08-19T18:24:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  640. 1dcd27f 2026-08-19 auto-data-snapshot: 2026-08-19T17:51:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  641. d1aab43 2026-08-19 auto-data-snapshot: 2026-08-19T15:07:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  642. d68b1ae 2026-08-19 auto-data-snapshot: 2026-08-19T14:34:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  643. a27e129 2026-08-19 auto-data-snapshot: 2026-08-19T14:01:25 (1 data files) — agents/instagram-agent/public/ig-activity.json
  644. 66676d5 2026-08-19 auto-data-snapshot: 2026-08-19T13:27:48 (1 data files) — agents/instagram-agent/public/ig-activity.json
  645. 9e411fa 2026-08-19 auto-data-snapshot: 2026-08-19T12:54:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  646. 41dd04e 2026-08-19 auto-data-snapshot: 2026-08-19T12:22:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  647. 7bdb1f6 2026-08-19 auto-data-snapshot: 2026-08-19T11:48:49 (1 data files) — agents/instagram-agent/public/ig-activity.json
  648. e98056b 2026-08-19 auto-data-snapshot: 2026-08-19T11:14:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  649. 0530e76 2026-08-19 auto-data-snapshot: 2026-08-19T10:40:44 (1 data files) — agents/instagram-agent/public/ig-activity.json
  650. 8a9b8bf 2026-08-19 auto-data-snapshot: 2026-08-19T09:34:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  651. 22bbd5f 2026-08-19 auto-data-snapshot: 2026-08-19T09:03:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  652. 93fc167 2026-08-19 auto-data-snapshot: 2026-08-19T08:31:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  653. bcb37cc 2026-08-18 auto-data-snapshot: 2026-08-18T19:51:40 (1 data files) — agents/instagram-agent/public/ig-activity.json
  654. 2f1d84f 2026-08-18 auto-data-snapshot: 2026-08-18T19:20:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  655. c6f5801 2026-08-18 auto-data-snapshot: 2026-08-18T18:16:14 (1 data files) — agents/instagram-agent/public/ig-activity.json
  656. 4292ee7 2026-08-18 auto-data-snapshot: 2026-08-18T17:44:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  657. 5aaef1d 2026-08-18 auto-data-snapshot: 2026-08-18T17:12:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  658. 128ac1b 2026-08-18 chore: refactor (named consts, optional chaining) + v1.4.0 (session close)
  659. f60474f 2026-08-18 auto-data-snapshot: 2026-08-18T15:36:46 (1 data files) — agents/instagram-agent/public/ig-activity.json
  660. 6512f67 2026-08-18 auto-data-snapshot: 2026-08-18T15:04:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  661. 965f96d 2026-08-18 instagram: per-account 'what to post next from DW Shopify' notes board (/notes)
  662. f85f258 2026-08-18 auto-data-snapshot: 2026-08-18T14:32:35 (1 data files) — agents/instagram-agent/public/ig-activity.json
  663. 8cfcfe2 2026-08-18 instagram: keep ALL accounts live via cron (not just DW)
  664. 835c032 2026-08-18 instagram: cross-account post Calendar view (/calendar)
  665. d987feb 2026-08-18 auto-data-snapshot: 2026-08-18T13:28:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  666. d86e027 2026-08-18 auto-data-snapshot: 2026-08-18T12:56:03 (1 data files) — agents/instagram-agent/public/ig-activity.json
  667. ea7bf52 2026-08-18 instagram-agent: harden getJSON (response-stream error + retry, fixes mid-body ECONNRESET crash) + backfill-all.js driver; gitignore regenerable live-media caches
  668. 8510437 2026-08-18 auto-data-snapshot: 2026-08-18T12:24:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  669. e25f270 2026-08-18 instagram-agent /live: account dropdown — switch between all 35 IG accounts (one shared META token), per-account cache, whitelist-guarded, auto-loads an empty account on select
  670. 5b9bed4 2026-08-18 auto-data-snapshot: 2026-08-18T11:49:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  671. 2900a0c 2026-08-18 instagram-agent: gitignore .env* (holds live IG token)
  672. 7ff0152 2026-08-18 instagram-agent: add /live daily-posts board — real DW feed (Graph /media, paginated+cached, grouped by day) with delete-any (reuses proven openclaw delete path), sort+density controls, hourly refresh cron
  673. db59445 2026-08-18 auto-data-snapshot: 2026-08-18T11:17:58 (1 data files) — agents/instagram-agent/public/ig-activity.json
  674. 6f7c8f2 2026-08-18 auto-data-snapshot: 2026-08-18T10:46:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  675. 2f0ec64 2026-08-18 auto-data-snapshot: 2026-08-18T10:14:32 (2 data files) — agents/instagram-agent/package-lock.json agents/instagram-agent/public/ig-activity.json
  676. 7db7ec9 2026-08-18 chore: correct version bump — instagram-agent 1.3.0->1.3.1 (prior commit bumped root package.json by mistake; restored root to 0.1.4)
  677. 8b97115 2026-08-18 auto-data-snapshot: 2026-08-18T09:42:51 (1 data files) — package-lock.json
  678. 62527ad 2026-08-18 chore: instagram-agent v1.3.1 (session close — IG delete hardening + button-role selector fix)
  679. 490f67a 2026-08-18 auto-data-snapshot: 2026-08-18T09:11:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  680. b1d73e3 2026-08-18 auto-data-snapshot: 2026-08-18T08:40:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  681. 0527146 2026-08-17 auto-data-snapshot: 2026-08-17T20:02:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  682. 1bc0edc 2026-08-17 auto-data-snapshot: 2026-08-17T19:32:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  683. 4d82387 2026-08-17 auto-data-snapshot: 2026-08-17T18:31:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  684. 135cd41 2026-08-17 auto-data-snapshot: 2026-08-17T18:01:33 (1 data files) — agents/instagram-agent/public/ig-activity.json
  685. 58ce89f 2026-08-17 auto-data-snapshot: 2026-08-17T17:31:10 (1 data files) — agents/instagram-agent/public/ig-activity.json
  686. 6350ced 2026-08-17 auto-data-snapshot: 2026-08-17T17:00:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  687. e166f17 2026-08-17 auto-data-snapshot: 2026-08-17T16:30:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  688. cc61568 2026-08-17 auto-data-snapshot: 2026-08-17T15:29:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  689. ac04e28 2026-08-17 auto-data-snapshot: 2026-08-17T14:59:21 (1 data files) — agents/instagram-agent/public/ig-activity.json
  690. d0fd9c2 2026-08-17 auto-data-snapshot: 2026-08-17T14:29:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  691. 8293e85 2026-08-17 auto-data-snapshot: 2026-08-17T13:58:50 (1 data files) — agents/instagram-agent/public/ig-activity.json
  692. 4c9304a 2026-08-17 IG TK-10617: Option A helper — detect logged-in account + delete its posts (owner-check safe)
  693. 8417463 2026-08-17 Fix IG delete: target the Delete BUTTON, not the 'Delete post?' heading
  694. d73a58c 2026-08-17 auto-data-snapshot: 2026-08-17T12:27:54 (1 data files) — agents/instagram-agent/public/ig-activity.json
  695. 121aa26 2026-08-17 auto-data-snapshot: 2026-08-17T11:57:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  696. 2aff597 2026-08-17 auto-data-snapshot: 2026-08-17T11:27:07 (1 data files) — agents/instagram-agent/public/ig-activity.json
  697. f079a27 2026-08-17 auto-data-snapshot: 2026-08-17T10:56:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  698. 15fb56b 2026-08-17 auto-data-snapshot: 2026-08-17T10:26:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  699. 80a6ffe 2026-08-17 chore: instagram-agent v1.3.0 (session close — /spoonflower purge viewer)
  700. 04b7ade 2026-08-17 Harden IG delete-originals.js: retry stale refs, recover dead tabs, patient positive-signal login check
  701. 1e26b11 2026-08-17 IG /spoonflower: server-inject data into the page so it renders without an authed XHR
  702. c573cf5 2026-08-17 IG: add /spoonflower purge viewer (thumbnails + live delete-status board)
  703. 3f46ac8 2026-08-17 auto-data-snapshot: 2026-08-17T09:04:04 (1 data files) — agents/instagram-agent/public/ig-activity.json
  704. f5dd47f 2026-08-17 chore: instagram-agent package-lock v1.2.1 (session close)
  705. 7098b6c 2026-08-17 chore: instagram-agent v1.2.1 (session close — Spoonflower blocklist + delete tooling)
  706. 4533e80 2026-08-17 snapshot before restart: preserve in-flight work
  707. eca6e1e 2026-08-17 chore: lint, refactor, v1.2.0 (session close)
  708. a843c5b 2026-08-17 auto-data-snapshot: 2026-08-17T08:03:25 (1 data files) — agents/instagram-agent/.gitignore
  709. c90044b 2026-08-17 IG: add serialized, per-account-aware Spoonflower delete script (openclaw)
  710. ffc9303 2026-08-17 Bulk-select delete on IG auto-post viewer
  711. 1b1e7d4 2026-08-17 ig: wrong-image delete tooling — 4 posts (metallic/suede), pre-approved, hold execution
  712. b5cd441 2026-08-17 IG reshare: blocklist Spoonflower (competitor) fleet-wide + scrub vendor file + add scan tool
  713. ec91871 2026-08-17 Gate live IG delete behind IG_LIVE_DELETE flag (default off, tombstone-only)
  714. 8529d5a 2026-08-17 IG auto-post viewer with inline delete (GET /posts on :9810)
  715. 06c151b 2026-08-17 docs(sessions): resume — outage recovery, pm2 reconcile (TK-10606), TK-10293 gate verified green + Playwright env-fix learnings
  716. acd4004 2026-08-17 ig(TK-10573): GATE2 fan-out — split 85 originals into 10 batch tickets + iTerm2 delete windows
  717. ca8370c 2026-08-16 auto-data-snapshot: 2026-08-16T09:54:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  718. 8ac3cb3 2026-08-16 ig(TK-10573): repost the held metallicwallpaper post; lift HOLD
  719. 447e5e5 2026-08-15 docs(sessions): resume TK-10573 IG redo — HOLD safety fix + gated remainders
  720. 0026909 2026-08-15 ig(TK-10573): HOLD unpublished repost from delete tooling + commit redo viewers
  721. 3166e1b 2026-08-15 auto-data-snapshot: 2026-08-15T20:14:06 (1 data files) — agents/instagram-agent/public/ig-activity.json
  722. 9ecd8cd 2026-08-15 auto-data-snapshot: 2026-08-15T19:12:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  723. aeeb37a 2026-08-15 auto-data-snapshot: 2026-08-15T18:52:36 (1 data files) — agents/instagram-agent/public/ig-activity.json
  724. e77fc0f 2026-08-15 auto-data-snapshot: 2026-08-15T18:22:11 (1 data files) — agents/instagram-agent/public/ig-activity.json
  725. f214d2f 2026-08-15 auto-data-snapshot: 2026-08-15T17:51:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  726. 19af23e 2026-08-15 auto-data-snapshot: 2026-08-15T17:21:18 (1 data files) — agents/instagram-agent/public/ig-activity.json
  727. 0f30e21 2026-08-15 auto-data-snapshot: 2026-08-15T16:50:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  728. 059e3cc 2026-08-15 auto-data-snapshot: 2026-08-15T16:20:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  729. d2d9404 2026-08-15 auto-data-snapshot: 2026-08-15T15:50:00 (1 data files) — agents/instagram-agent/public/ig-activity.json
  730. da1e4e9 2026-08-15 auto-data-snapshot: 2026-08-15T14:18:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  731. 996d840 2026-08-15 auto-data-snapshot: 2026-08-15T13:48:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  732. 0625c5f 2026-08-15 auto-data-snapshot: 2026-08-15T13:17:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  733. c27c957 2026-08-15 auto-data-snapshot: 2026-08-15T12:46:51 (1 data files) — agents/instagram-agent/public/ig-activity.json
  734. 4b1e4c0 2026-08-15 auto-data-snapshot: 2026-08-15T11:45:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  735. f1b2aea 2026-08-15 auto-data-snapshot: 2026-08-15T10:44:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  736. ba37fdd 2026-08-15 auto-data-snapshot: 2026-08-15T10:14:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  737. 279017c 2026-08-15 auto-data-snapshot: 2026-08-15T09:43:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  738. ea9baa0 2026-08-15 auto-data-snapshot: 2026-08-15T09:13:26 (1 data files) — agents/instagram-agent/public/ig-activity.json
  739. b4a10be 2026-08-15 auto-data-snapshot: 2026-08-15T08:12:28 (1 data files) — agents/instagram-agent/public/ig-activity.json
  740. 0ff33f9 2026-08-15 Norma IG cadence: 8s timeout on Boost fetch (Cody FIX-FIRST, yoloforever cycle 1)
  741. 4b58e97 2026-08-15 IG cadence: close carousel room-image dedup gap (Cody gate) — ledger now records ALL slides + dedup skips candidates whose room OR swatch was already posted, so room photos no longer repeat across accounts
  742. 43de9ea 2026-08-15 Norma IG cadence: fresh-source via Boost API (fixes clean-product pool exhaustion)
  743. 191eee1 2026-08-15 IG cadence: dedup by IMAGE filename (not just product handle) — stops creating same-image duplicates (multiple handles share one image, e.g. Quick Ship Durable Walls)
  744. eb6bf21 2026-08-15 IG: duplicate-image detector — md5-hash each post's image per account, flag OLDEST of each dup set for deletion (feeds delete cockpit; deletion stays manual)
  745. d822b58 2026-08-15 IG posts: 2-slide carousel — room-setting photo first, product swatch second (Steve 8/15); leak-guarded, single-image fallback when no room setting; cadence inherits it via post-to --product
  746. e654e89 2026-08-15 IG cadence: exclude @beverlyhillsvideos (dedicated LIVE reel poster bhv-ig-6h owns it) — was double-served, mixing off-brand static images into a curated luxury-store-reel feed
  747. c6b549a 2026-08-15 auto-data-snapshot: 2026-08-15T07:41:54 (1 data files) — agents/instagram-agent/IG-RESHARE-OPS.md
  748. 1e76508 2026-08-15 IG cadence: fix 4 dormant accounts (hospitality/interiorvideos/shelter/library) - multi-word keywords returned 0 storefront results; swap to clean-product keywords so they post on the live cadence
  749. 6b1c0df 2026-08-14 auto-data-snapshot: 2026-08-14T19:30:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  750. cce6e17 2026-08-14 auto-data-snapshot: 2026-08-14T19:00:16 (1 data files) — agents/instagram-agent/public/ig-activity.json
  751. a127917 2026-08-14 auto-data-snapshot: 2026-08-14T18:29:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  752. 003881c 2026-08-14 auto-data-snapshot: 2026-08-14T17:28:57 (1 data files) — agents/instagram-agent/public/ig-activity.json
  753. 039ad5d 2026-08-14 chore: lint fixes (guard JSONL parses, __dirname paths, fix reshare href), v1.1.1 -> v1.1.2 (session close)
  754. aca7fab 2026-08-14 IG reshare: curate real populated community hashtags for all 32 accounts (drop dead handle-tags) — previously-empty accounts now find vendor-matched posts; regen preserves curation
  755. d165d00 2026-08-14 IG reshare: fix robustness gap — track vendor list + hashtag map as config (were gitignored), add build-ig-data.js regen script
  756. 86d4ac6 2026-08-14 IG: robust 48h Phase-1 check reminder (launchd one-shot Aug 16 -> verify accounts + CNCP card + notification, self-unloads)
  757. ed1358f 2026-08-14 IG fleet interaction: phased reshare-fleet + comment auto-reply (positivity-filtered, spam+self skip) + reply-fleet + staged launchd plists (phase 1: 5 accounts)
  758. 1079fad 2026-08-14 IG: generic per-account hashtag-reshare engine (all 32 niche accounts, per-account hashtags, DW-vendor credit, same 6/day+dedup+own-exclude rails)
  759. 8ad73fc 2026-08-14 IG: fabric-friday reshare launchd plist (4x/day spaced, cap 6/day) — Steve installs
  760. 0ba22ac 2026-08-14 IG fabric-friday reshare: daily auto-mode — dedup, exclude own posts, hard cap 6/day, business-hours gate; + engagement monitor
  761. 05e1786 2026-08-14 IG: delete-viewer cockpit generator — visual selectable board of old dupes, one-tap open-to-delete + progress tracking
  762. 9cc01ed 2026-08-14 IG fabric-friday reshare: match #fabricfriday posts against DW vendor DB (FileMaker Supplier + registry, 505 names), normalized matching for correct credit, posts via Graph API
  763. 5dec32d 2026-08-14 IG: #fabricfriday reshare tool (hashtag-search picks + sassy credit caption, draft/gated --go); crediting blocked on oEmbed perm/login
  764. abf763c 2026-08-14 IG cadence: 3 posts/day per account, spaced ~3.3h during business hours (was 1/day); batch 4->6
  765. 41aaea0 2026-08-14 IG cadence: exclude @goldleafwallpaper (owned by dedicated RML poster) to end double-serving
  766. 93908bc 2026-08-14 auto-data-snapshot: 2026-08-14T11:23:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  767. 0e01034 2026-08-14 auto-data-snapshot: 2026-08-14T10:52:23 (1 data files) — agents/instagram-agent/public/ig-activity.json
  768. f92f6e2 2026-08-14 IG redo: openclaw deletion driver for originals (probe-first, canary, paced --go, verify-each)
  769. 70e6d07 2026-08-14 IG redo: make driver idempotent/resumable (skip already-reposted keys from redo-results)
  770. 6e37304 2026-08-14 IG redo: caption polish (quote-strip colors, broaden SKU suffix, 429 retry) + redo-last5 driver (dry-run + gated --go)
  771. 285fb06 2026-08-14 IG captions: show name+color+SKU (DW model), remove http link from autoCaption
  772. f9e68db 2026-08-14 auto-data-snapshot: 2026-08-14T08:19:45 (1 data files) — agents/instagram-agent/public/ig-activity.json
  773. d39a8c4 2026-08-13 auto-data-snapshot: 2026-08-13T19:38:43 (1 data files) — agents/instagram-agent/public/ig-activity.json
  774. 36693e6 2026-08-13 auto-data-snapshot: 2026-08-13T19:08:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  775. 7b0cfcd 2026-08-13 auto-data-snapshot: 2026-08-13T18:37:41 (1 data files) — agents/instagram-agent/public/ig-activity.json
  776. 221265d 2026-08-13 auto-data-snapshot: 2026-08-13T18:07:15 (1 data files) — agents/instagram-agent/public/ig-activity.json
  777. 6bfef8e 2026-08-13 auto-data-snapshot: 2026-08-13T17:06:27 (1 data files) — agents/instagram-agent/public/ig-activity.json
  778. 635e4e1 2026-08-13 auto-data-snapshot: 2026-08-13T08:21:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  779. 9218915 2026-08-12 auto-data-snapshot: 2026-08-12T19:37:30 (1 data files) — agents/instagram-agent/public/ig-activity.json
  780. d6ec675 2026-08-12 auto-data-snapshot: 2026-08-12T19:06:56 (1 data files) — agents/instagram-agent/public/ig-activity.json
  781. 5c95fa7 2026-08-12 auto-data-snapshot: 2026-08-12T18:36:17 (1 data files) — agents/instagram-agent/public/ig-activity.json
  782. 012d375 2026-08-12 auto-data-snapshot: 2026-08-12T18:04:53 (1 data files) — agents/instagram-agent/public/ig-activity.json
  783. 6a1df86 2026-08-12 auto-data-snapshot: 2026-08-12T17:03:39 (1 data files) — agents/instagram-agent/public/ig-activity.json
  784. 52237e5 2026-08-12 auto-data-snapshot: 2026-08-12T11:28:02 (1 data files) — agents/instagram-agent/public/ig-activity.json
  785. 001e0e9 2026-08-12 auto-data-snapshot: 2026-08-12T10:57:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  786. 970272b 2026-08-12 IG runbook: add Phase 0b — link the 5 email-discovered owned accounts
  787. 5b914e4 2026-08-12 IG fleet: fold 5 email-discovered owned accounts into manifest + stage themes
  788. 2da8980 2026-08-12 auto-data-snapshot: 2026-08-12T10:26:55 (1 data files) — agents/instagram-agent/public/ig-activity.json
  789. f619a9d 2026-08-12 fix(instagram): correct #36 record — @hospitalityfabrics NOT linked to its Page (Connect never completed); needs IG login, not a role-assign
  790. 0f9872f 2026-08-12 auto-data-snapshot: 2026-08-12T09:56:27 (1 data files) — agents/instagram-agent/accounts.json
  791. 603bf3a 2026-08-12 auto-data-snapshot: 2026-08-12T09:25:42 (1 data files) — agents/instagram-agent/public/ig-activity.json
  792. aa159ab 2026-08-12 chore(instagram): reload registry from live token — 35/35 accounts verified active+postable
  793. 05a2f9e 2026-08-12 auto-data-snapshot: 2026-08-12T08:54:38 (1 data files) — agents/instagram-agent/public/ig-activity.json
  794. 87153f0 2026-08-12 feat(instagram): 23 launch-ready onboarding kits (bio+captions+visual+tags+email), built via 4 parallel subagents
  795. 54d99eb 2026-08-12 docs(instagram): phone-verify decision = Steve's phone manual relay
  796. c76b971 2026-08-12 docs(instagram): openclaw-driven paced fleet-build runbook (phase 0 hospitality fabrics, phase 1 pilot, phase 2 scale)
  797. 10b7695 2026-08-12 feat(instagram): IG fleet build manifest + pre-staged cadence themes for 22 new lines
  798. 344ee9b 2026-08-12 docs(instagram): record hospitalityfabrics Page decision (create Hospitality Fabrics Page, DTD 8/8)
  799. 5f05658 2026-08-12 auto-data-snapshot: 2026-08-12T08:23:24 (1 data files) — agents/instagram-agent/public/ig-activity.json
  800. b83f617 2026-08-12 auto-data-snapshot: 2026-08-12T07:52:17 (1 data files) — agents/instagram-agent/package-lock.json
  801. aa2a34b 2026-08-12 chore: lint fixes (surface local feed write errors, non-blocking intra-batch sleep) + version bump (session close)
  802. 2fa68ee 2026-08-12 daily-cadence: ffepurchasing -> woven texture (broader clean pool)
  803. 5fd4684 2026-08-12 daily-cadence: broaden beverlyhillsvideos/ffepurchasing keywords (narrow pools exhausted, couldn't source)
  804. 8c1fc0a 2026-08-11 auto-data-snapshot: 2026-08-11T13:51:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  805. 40f3825 2026-08-11 auto-data-snapshot: 2026-08-11T13:21:01 (1 data files) — agents/instagram-agent/public/ig-activity.json
  806. f700cdd 2026-08-11 daily-cadence: posting-hours guard (Mon-Sat 08:00-20:00) + draft launchd plist for durable cadence
  807. 1ec2435 2026-08-11 daily-cadence: velocity tripwire (stop batch on 'restricted') + intra-batch pacing
  808. 18ad401 2026-08-11 IG daily cadence: 1 post/day per account, 6 days/week (rest Sun) — ledger-derived coverage, auto-sourced guard-passed products per account theme, sensitive→Cody
  809. f0e553d 2026-08-11 IG captions: strip internal mfr SKU numbers from title (Koroseal '2308790' was leaking)
  810. 4dbe72e 2026-08-11 IG: private-label leak guard — refuse to post products whose image URL/vendor exposes a hidden upstream (luca/momentum/wallquest/etc.)
  811. c9d175d 2026-08-11 auto-data-snapshot: 2026-08-11T11:45:12 (1 data files) — agents/instagram-agent/public/ig-activity.json
  812. cf737ee 2026-08-11 IG post skill: poll container readiness before publish (fixes 'Media ID is not available' race)
  813. 56427de 2026-08-11 auto-data-snapshot: 2026-08-11T10:12:37 (1 data files) — agents/instagram-agent/public/ig-activity.json
  814. eee32bd 2026-08-11 auto-data-snapshot: 2026-08-11T09:10:52 (1 data files) — agents/instagram-agent/public/ig-activity.json
  815. 8fe7c41 2026-08-11 auto-data-snapshot: 2026-08-11T08:39:13 (1 data files) — agents/instagram-agent/public/ig-activity.json
  816. 2d8bec8 2026-08-11 ig-activity: best-effort scp to live marketing.dw after each post (keeps panel fresh)
  817. 37895ae 2026-08-11 IG captions: strip price + raw vendor (was leaking $4.25 memo price); quality + DW-service messaging, per-product variation (anti-spam)
  818. 85c7619 2026-08-10 auto-data-snapshot: 2026-08-10T13:03:09 (1 data files) — agents/instagram-agent/package-lock.json
  819. 02b2ffa 2026-08-10 chore: lint (0 fixes) + refactor (STORY_TTL_MS) + v1.1.0 (session close)
  820. 8a9959f 2026-08-10 IG poster: --product <handle> pulls a real DW product (live storefront) and auto-composes image+caption; verified dry-run on Shakespeare Mural
  821. 5dd450b 2026-08-10 IG poster hardening: carousel (2-10 img) posts, verify/health-sweep, --all throttle, follower-ranked list, account param wired into reel+story (registry-first, legacy env preserved), POSTING.md docs
  822. dfc3f02 2026-08-10 IG: verified inside Business Suite — 35 = complete existing postable fleet; 45 unlinked pages have no IG; only @hospitalityfabrics exists-but-unlinked (parked for Steve)
  823. 0daec04 2026-08-10 IG: linking checklist for the 45 unlinked Pages (tiered by brand value)
  824. 57ebb5d 2026-08-10 IG poster: poll container to FINISHED for images too (fixes 'Media ID is not available'); verified live post to @patterndesignlab
  825. 6b3ec24 2026-08-10 IG multi-account posting: registry + resolver + post-to CLI over 35 linked accounts (shared META token, dry-run-gated)
  826. 564be77 2026-08-10 TK-10395: cap reel container poll at 12x4s so 3x-retry worst case < client 240s
  827. 9897011 2026-08-10 TK-10395: bounded retry-on-2207076 in reel skill (Meta transient media-upload failure)
  828. cbfbf08 2026-08-08 Norma pre-deploy gate: run durable smoke battery before any live restart
  829. f2f2df6 2026-08-08 deploy hygiene (TK-10370): build-then-restart-then-health-gate reload + silence lockfile-root warning
  830. bc9cfde 2026-08-07 auto-data-snapshot: 2026-08-07T18:31:41 (2 data files) — package-lock.json package.json
  831. dd76104 2026-08-07 security: npm audit fix --omit=dev (non-breaking) — resolves 4 vulns (3 moderate, 1 critical/uuid) leaving 4 sharp-libvips highs (need next@16 major bump, gated)
  832. efc419d 2026-08-06 chore: refactor (drop dead testpulse login in api-smoke) + v0.1.4 (session close)
  833. a945908 2026-08-06 test(cycle7 Cody-gate): mutation role-matrix + isolation positive-control
  834. f7e95d8 2026-08-06 test(cycle7): authorization-matrix + tenant-isolation suite (real tenant fixtures)
  835. 2a8a6c7 2026-08-06 test(cycle6 Cody-gate): CRUD tests real org id-space; non-hollow admin E2E
  836. e958e07 2026-08-06 test(cycle6): CRUD lifecycle suite (create->read->update->delete) + admin E2E journey
  837. d26f6c6 2026-08-06 fix(cycle5 Cody-gate): truly-empty-body probe + readJson across 93 routes
  838. 959da8b 2026-08-06 test+fix(cycle5): write-path smoke (216 mutations) + Playwright E2E (3 tiers) + fixes surfaced
  839. 9ba7940 2026-08-06 auto-data-snapshot: 2026-08-06T10:52:46 (2 data files) — package-lock.json package.json
  840. 39264f3 2026-08-06 fix(api)+test: close Cody-gate gaps — all 14 uuid=text casts + org-scoped smoke + deterministic fixture
  841. eb853c3 2026-08-06 fix(api): 4 GET-500s surfaced by api-smoke (onboard/library real; auth-google/clickup status)
  842. 8bbee18 2026-08-06 test(api-smoke): durable fs-enumerated GET sweep over all 271 routes (test:api/test:smoke)
  843. f4c1615 2026-08-06 auto-data-snapshot: 2026-08-06T10:21:57 (1 data files) — package.json
  844. 24209b8 2026-08-05 auto-save: 2026-08-05T14:42:56 (14 files) — app/api/cron/gmail-sync/route.ts app/api/cron/ingest-news/route.ts app/api/geo/advocacy/route.ts app/api/geo/hotspots/route.ts app/api/geo/moveon/route.ts
  845. b98a5b6 2026-08-05 security(yoloforever c1): rate-limit public petition CREATE (anon spam vector Cody reproduced); drop admin /api/petitions from pulse-public middleware bypass (defense-in-depth); +2 regression assertions (20 green)
  846. 89bc532 2026-08-05 test: add green security-regression suite (18 assertions) + wire npm test / npm run test:instance — asserts every 2026-08-05 campaign fix holds
  847. e390f1a 2026-08-05 security(cycle-2): pin retired gemini-2.0-flash -> 2.5-flash (35 files); /api/users admin-only (was staff-readable); rate-limit public petition-sign; retire legacy-token->admin path; guard gmail/send null-org; ingest-news reports failure honestly (no more success:true on 0-inserted)
  848. e0ef009 2026-08-05 security(A-prime): scope login brute-force limiter per (ip,username) to kill tenant-wide lockout DoS; prefer cf-connecting-ip/x-real-ip over forgeable XFF; stop CRON_SECRET falling back to AUTH_PASSWORD
  849. f63804e 2026-08-05 security: fix cycle-1 defects — add requireRole to 5 social routes (were pulse-open), validate norma-imp-by token in impersonate DELETE (privilege-escalation), HMAC-verify registry session (was 403-for-all + crafted-token bypass); add scratch-DB test instance + durable test suite
  850. d9cb4a2 2026-08-05 auto-save: 2026-08-05T13:12:15 (2 files) — scripts/test-instance.sh tests/
  851. df259fc 2026-08-05 login: standard username/password only (remove Google/Apple OAuth); harden /api/auth/login to 400 on non-JSON body
  852. 19d20a6 2026-07-29 SECURITY incident 2026-07-29: agent-base fail-closed on empty AUTH_PASSWORD + bind 127.0.0.1 by default (was the empty-password all-interfaces RCE vector)
  853. 0ecc4bb 2026-07-23 instagram-agent fully LIVE: real token installed, monitor/discover/report un-stubbed (Steve-authorized), Graph v21 metrics fixed
  854. 009cc0e 2026-07-23 auto-save: 2026-07-23T08:19:35 (2 files) — agents/instagram-agent/skills/discover.js agents/instagram-agent/skills/monitor.js
  855. d6a46ba 2026-07-23 auto-save: 2026-07-23T07:19:17 (1 files) — scripts/gmail-backfill.mjs
  856. 71ee990 2026-07-14 instagram-agent: env-configurable Graph host (IG_GRAPH_HOST) — support Facebook-Login flow (page token + IG business id) alongside Instagram-Login
  857. 4296767 2026-07-13 instagram-agent: make reel skill account-aware (close cross-brand IG-token leak)
  858. 4b35b8b 2026-07-13 chore: v0.1.3 (dashboard CSS refactor)
  859. 06efeb4 2026-07-13 refactor(agent-base): hoist static dashboard CSS to a module const
  860. 3f1fb79 2026-07-13 chore: version bump (session close — SSRF guard + security P0 verification)
  861. d89eedb 2026-07-12 docs(security): record P0#1-3 + P1 SSRF remediation as resolved in April audit
  862. 339bfa1 2026-07-12 security(P1): add shared SSRF guard blocking private/reserved/loopback hosts on user-URL fetches
  863. e849e5e 2026-07-12 chore: version bump (session close — Norma platform + agent recovery, login/schema-drift fixes, dashboard)
  864. 56c1819 2026-07-11 Fix tier_credentials schema drift in users + gmail routes
  865. 67b9d9d 2026-07-11 Fix tier_credentials schema drift in auth + impersonate routes
  866. 34faae1 2026-07-11 Fix tier_credentials schema drift in settings CRUD routes
  867. 02aa465 2026-07-11 auto-save: 2026-07-11T08:42:28 (1 files) — app/api/auth/login/route.ts
  868. a56a5b2 2026-07-10 dashboard: harden escaping for attribute context (contrarian gate)
  869. e171109 2026-07-10 Norma dashboard: enrich GET / with insights + media grid (cache-backed)
  870. d5eb7cb 2026-07-10 Norma instagram-agent: add RECOVERY.md (deps-location gotcha, auth, durability)
  871. c3b02e4 2026-07-10 agent-base: fix route shadowing + server-render status dashboard
  872. d870e86 2026-07-10 Norma agents: add read-only status dashboard at GET / (behind auth)
  873. 6bfda49 2026-06-01 Global search: mount on Supervisor + Pulse tiers
  874. d1e1e9f 2026-05-31 fix: add rel=noopener noreferrer to 32 target=_blank links in inbox mockup index; expand .gitignore backup patterns
  875. de055dc 2026-05-30 security: strip hardcoded dw_admin DSN password -> env-first (.mjs straggler). No rotation/deploy.
  876. 351dc6f 2026-05-30 security: strip hardcoded dw_admin DSN password -> env-first/passwordless. No rotation/deploy.
  877. 9f230e8 2026-05-30 security: strip hardcoded dw_admin DSN password -> env-first (DATABASE_URL); passwordless localhost fallback. No rotation/deploy.
  878. d7ebee0 2026-05-28 wire Morning Batch + weekly_intelligence to PM2 cron — fixes 77d/72d stale tables
  879. 1c814a5 2026-05-28 norma-scraper: load .env.local via interpreter_args so SESSION_SECRET reaches the cron — fixes 401 loop
  880. 9da3971 2026-05-21 defensive: explicit body[data-inbox-theme='classic-dense'] selector
  881. e7eb3fb 2026-05-21 feat(theme): hoist InboxThemeBanner + AgeThemeSlider into app/layout.tsx
  882. da7d403 2026-05-20 docs(sessions): log brute-force-protection learnings (commit a934a3b)
  883. a934a3b 2026-05-20 feat(auth): brute-force-resistant login rate-limit (10 fails/15min per IP, 30min lockout)
  884. 27ac398 2026-05-20 tasks: mark #52 (admin impersonation UI) DONE
  885. 983afae 2026-05-20 feat(impersonate): wire the View-as dropdown + Acting-as banner into AppShell
  886. 6427fe3 2026-05-20 session 2026-05-20: log roles+perms+modal-fanout+gmail-per-user+disk-save+admin-union
  887. 491a469 2026-05-20 docs+infra: gmail connect note (password redacted) + linter-touched messages route
  888. 6daaa2a 2026-05-20 fix(theme): apply 32 inbox-theme skins at body level so dropdown clicks visibly re-skin the whole page
  889. 1b1cbbd 2026-05-20 fix(theme): apply inbox-theme skins at body level so dropdown clicks re-skin the whole page immediately
  890. 493c5ca 2026-05-20 feat(theme): full-width inbox-theme banner at top of AppShell
  891. aff9106 2026-05-20 feat(theme): hoist inbox theme switcher to global AppShell header
  892. 52b42ae 2026-05-20 fix(gmail): scope Gmail CRM to current user's mailbox, not hardcoded natalia
  893. 1a1a9c9 2026-05-20 feat(modals): fan out ResizableModal to 22 modals across 15 files
  894. 48c4ff8 2026-05-20 feat(inbox): +16 themes (v17-v32) — total 32 live + dropdown-wired
  895. 66f0f44 2026-05-20 feat(inbox): 10 more theme mockups (v7-v16) + live theme dropdown in GmailCRMTab
  896. c040185 2026-05-20 session 2026-05-20: log roles/perms/modals + infra fires + 4 user seed
  897. 0cc4fc0 2026-05-20 feat(mockups): 6 inbox UI variants — Classic Dense / Notion Cards / Linear Keyboard / Apple Mail / Front Conversation / Hey Zero-Distraction
  898. 0b3e6f5 2026-05-20 feat(modals): shared ResizableModal with full-screen toggle + drag-resize
  899. 364302c 2026-05-20 feat(gmail): per-message Assign-to + per-user read receipts + inline-expand layout
  900. 4cf4812 2026-05-20 feat(auth): intern role + user fields + admin-editable role × feature permissions matrix
  901. cfcf551 2026-05-20 feat(admin): comprehensive API/Token/MCP registry + age-adaptive theme slider
  902. 806aa47 2026-05-20 ux(gmail): land with full-width inbox — default showContacts to false so users see all mail first; Contacts toggle stays in toolbar for outreach drilldown
  903. be67c76 2026-05-20 session 2026-05-20: log 9 task entries (petition debounce, modal video, 4 pay-down todos)
  904. 48eadf2 2026-05-20 docs: modal training one-pager for SDCC staff (companion to walkthrough video)
  905. 4974b87 2026-05-20 fix(editor): set immediatelyRender:false on Tiptap useEditor — Next 15 + React 19 SSR hydration error blocked petition pipeline editor render
  906. e4d293d 2026-05-20 fix(pipeline/reorder): cast org_id param as ::uuid not ::text — pipeline drag-drop was 500-ing for staff role with non-null orgId due to same uuid=text operator mismatch already fixed in pipeline/stats + settings
  907. 8e33265 2026-05-20 petition create: debounce double-submit via useRef guard + 30-min server-side merge window
  908. bb7a05d 2026-05-20 fix(api): cast org_id param as ::uuid not ::text in pipeline/stats + settings
  909. 15fe508 2026-05-20 docs: morning wakeup brief — DB password fix + verification path
  910. 433445a 2026-05-20 fix(pulse-public): silence 401 spam, unblock topics for guests, hide Apple OAuth stub, add sign-in CTA
  911. b7eda89 2026-05-20 fix(types): unblock SocialTab render, IntegrationsTab metadata, credentials rowCount null
  912. 3defa0e 2026-05-19 instagram-agent: enable live reel/story/post publishing via graph.instagram.com (Instagram Login API)
  913. 36f759a 2026-05-13 snapshot: 12 file(s) changed, ~12 modified
  914. e5b64d8 2026-05-06 initial scaffold (gitify-all 2026-05-06)

Authors

Agents used

  • none detected

Skills used

  • /instagram-agent702
  • /ig-activity691
  • /claude16
  • /code16
  • /pulse11
  • /accounts9
  • /posts9
  • /login9
  • /petitions9
  • /route9
  • /auth8
  • /day7
  • /messages7
  • /live6
  • /gmail6
  • /spoonflower5
  • /grants5
  • /mockups5
  • /inbox5
  • /story4
  • /page4
  • /library4
  • /cron4
  • /index4
  • /graph3
  • /calendar3
  • /package-lock3
  • /registry3
  • /send3
  • /staff3

Creative ideas + design notes

Commits with substantial prose (≥120 chars) — the rationale behind each move.

3b66731 · 2026-09-26 · TK-11383: link-drift canary now measures the not-yet-linked accounts
check-link-drift.js dropped every UNLINKED Page, so the two accounts waiting on
Steve's phone (nationalpaperhangers, protestdaily) were unmeasured. That blind
spot was why TK-11383 had to stay a ticket instead of a canary row. Now:
- link-watchlist.json pages resolve to awaiting_link / newly_linked / not_found
  (not_found is NOT-MEASURED and stays WARN)
- enrollment-hold decision split: decided-no (designerschat) is not drift;
  pending-steve or a MISSING decision keeps WARN (fail-closed)
- a corrupt hold or watchlist file exits 2 and gives no verdict
- test-link-drift.mjs: 11 hermetic negative tests, including a contrast proving
  the pre-change detector was blind

Read-only detector. Posts nothing and writes no registry.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Sy7SKYqHt2gwdfTTD3az7V
8f1455a · 2026-09-22 · IG post path: durable jewelry-counter exclusion gate (TK-12012)
Steve directive 2026-09-22: stop posting any Instagram with jewelry counters
(scope = jewelry ONLY; room-setting carousels stay). Wire the vision jewelry
check into the Norma post path so no jewelry-counter image can be published.

- jewelry-gate.js: classify each candidate image at SELECTION time (ollama
  qwen2.5vl free / Gemini fallback), URL/file-keyed cache so vision is called
  once per image. Blocks jewelry:true AND undecidable (fail-closed); never
  drops room:true.
- post-to.js: gate carousel + single feed/story image URLs before publish;
  carousel degrades to single when a slide is dropped, skips when all blocked.

Posting stays DISARMED. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CRkDtx31oCvHHaMfJf9CzT
987ab62 · 2026-09-22 · instagram-agent: add loopback co-listener so 127.0.0.1:9810 answers (TK-12012)
BIND_HOST=100.82.17.107 pinned the single primary bind to the Tailscale IP,
which drops the 127.0.0.1 bind and broke every local consumer (dw-marketing-reels
nightly publish, dw-follow-counts) with connection-refused since 09-21. Add a
guarded second loopback-only listener on the same Express app. Never 0.0.0.0.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CRkDtx31oCvHHaMfJf9CzT
746c031 · 2026-09-20 · security(TK-11783): strip hardcoded Google OAuth secrets from Norma Gmail-search scripts
client_secret (…FrL8) + refresh/access tokens (…hepo) were hardcoded in 3 tracked
scripts and re-committed nightly by the auto-data-snapshot cron (growing exposure).
Moved the values into the gitignored .env.local and switched the scripts to read
process.env.GOOGLE_CLIENT_SECRET / GOOGLE_ACCESS_TOKEN / GOOGLE_REFRESH_TOKEN via a
zero-dependency .env.local loader (no dotenv dep added), with fail-loud guards. No
`|| '<literal>'` fallback — the secret is fully out of tracked source.

- scripts/search-sacbee.js: client_secret + inline access/refresh tokens → env
- scripts/search-latimes-gmail.js: client_secret → env (tokens still from DB)
- scripts/search-kqed.mjs: client_secret → env (tokens still from DB; ESM loader)

Verified: git grep of the tracked tree = 0 literal occurrences; all 3 syntax-OK;
env loader resolves all 3 vars from .env.local (last4 matches removed values, so auth
is unchanged). Public CLIENT_ID left as-is (not a secret).

NOT DONE (stays gated in TK-11783): the secret is still in git HISTORY (history purge)
and the key itself is NOT rotated (Steve's console action). This is code hygiene only —
no rotation, no push, no deploy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A3PFQP7b2cFzSLAN6gB4ZB
e815386 · 2026-09-14 · Stop git bleed: untrack CTA recordings + demo videos, gitignore them (TK-11533)
~1.03GB of cta/rec/*.webm + demos/*.{webm,mp4} were tracked with no gitignore
rule, so every CTA run re-committed video into history (Norma .git = 1.13GiB,
the sole dw-backup-canary FAIL). This --cached untrack keeps all files on disk
and stops future growth. Historical blobs still need a gated filter-repo purge
to reclaim the 1.13GiB (drafted to pending-approval).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0132onhpKJhTymjiFZCPn6ux
51c0305 · 2026-09-13 · TK-11383: bring the PUBLISHER's enrollment hold to parity with the builder
36f4ede hardened build-registry.js to match the hold three ways (registry key,
handle field, ig_user_id) but left daily-cadence.js matching only the registry
key. That made the publisher the WEAKER of the two layers -- and the publisher is
where the irreversible public post happens, so it is the one that must not be
bypassable. Verified in an offline sandbox against three injected bypass shapes:
the old publisher caught 1 of 3, this one catches 3 of 3.

The two shapes the key-only match let through, both of which would have posted
publicly to a held account:
  - PAGE_ID-keyed record with handle:null. The unlisted merge keys an account by
    page_id whenever the Graph edge returns username:null, and a handle lookup
    can never match that.
  - RENAMED account. A handle-keyed hold stops matching the moment the owner
    renames; ig_user_id is immutable and is literally what post-to.js publishes
    to (POST /{ig-user-id}/media_publish).

Also reports hold entries that matched NOTHING -- a typo'd handle is otherwise
indistinguishable from a working denylist. That report is computed from what
actually fired, not by re-scanning the registry, because the held accounts have
already been deleted by then and a re-scan reports every entry that just fired
as "matched nothing": a guard must not misreport its own successful match.

Unchanged and re-verified: corrupt hold file aborts (exit 1), absent hold file
warns loudly and continues, a clean registry drops nothing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XQTf1fpLGZCEv79K8G9Gma
36f4ede · 2026-09-13 · TK-11383: close the allowlist-expansion path to unapproved public IG posting
accounts.json decides who com.steve.dw-ig-cadence posts to PUBLICLY. Two
defects let never-approved accounts reach it. Both were verified by an
injected fault BEFORE fixing, not by a happy-path check.

1. Transient-property gate. @beverlyandhillsdesigns + @filthyrichlivingcom
   are IG-linked and publish-capable today (live content_publishing_limit on
   the shared token). The ONLY thing excluding them was that they sit outside
   Meta's pages_show_list allowlist, so they fell behind --include-unlisted.
   That property is transient, and the FB app-access grant this ticket is
   waiting on Steve for is exactly what removes it -- after which a plain
   `node build-registry.js` would enrol both with no gate at all. The most
   likely next event on this ticket silently armed two brand accounts.
   Both are now on enrollment-hold.json, keyed on identity, so the hold
   survives that expansion. Recorded honestly as never-decided, NOT a revert
   (unlike designerschat/42016d6) -- their enrolment is Steve's open decision.

2. Hold bypass, found while testing 1. The hold was applied only to the
   /me/accounts set; the --include-unlisted merge wrote into the same object
   without consulting it. Measured: with both handles ON the hold list,
   `--print --include-unlisted` still emitted both (37 accounts, "HOLD: 1").
   The flag an operator would reach for defeated the guard.

Hardening from the second-model review (codex 429 spend-capped; Kimi k3):

* Holds match three ways -- normalised key, the account's handle field, and
  ig_user_id. ig_user_id is load-bearing: it is immutable and is what the
  publisher posts to (post-to.js -> /{ig-user-id}/media_publish), while a
  username can be renamed by the owner at any time. It also covers the
  unlisted merge keying an account by page_id when the edge returns
  username:null, which a handle lookup can never match.
* Write-boundary assertion. Both defects were the same shape: a guard that
  ran before a later mutation. Re-applying after each merge only works if
  every future merge site remembers. The assertion re-checks the assembled
  object immediately before serialisation and exits 1 rather than write.
* A hold matching nothing now reports HOLD ARMED instead of being silent --
  a legitimately-not-yet-visible account and a typo'd one looked identical.

Includes a peer session's complementary isEnrolled() change from the same
working tree: enrolment is reported from actual membership in `accounts`,
never asserted from the requested flag (it was durably recording held-out
handles as enrolled:true).

Verified (live accounts.json never written -- --print and an isolated copy):
  --print --include-unlisted              35, all 3 held absent, HOLD: 3
                                          (was 37 / HOLD: 1 -- goes red)
  --print --include-held --include-unlisted  38, all 3 enrolled -- YES path works
  plain --print                           35, same handle set as committed,
                                          no record differs outside volatile counts
  publisher, synthetic 38-account registry  HOLD ENFORCED on all 3, dropped
  guard neutered + real write attempted   exit 1, accounts.json NOT written

Reversible: git revert this commit. Steve's YES/NO decision is untouched;
this removes only the silent path. Enrolling is still one explicit command.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014BUF96kL2o6FoEgNGaojd3
3bdc7a5 · 2026-09-13 · TK-11383: enforce the enrollment hold at the PUBLISHER too, not just the builder
Follow-up to 123570c after a second-model review (Kimi) flagged that a hold
enforced only in build-registry.js is defeated by the very things that bypass
the builder: a hand-edited accounts.json, an `--include-held` build that gets
committed, or an older checkout. The irreversible action — a public post —
happens in daily-cadence.js, which posts to every key of accounts.json. So the
publisher now enforces the SAME enrollment-hold.json independently, right where
the harm would occur: any held handle that somehow reached the registry is
dropped from HANDLES before selection and cannot post.

Failure posture mirrors the builder for consistency: a corrupt hold file fails
CLOSED (aborts the whole run, exit 1 — an untrustworthy denylist must not read
as "no holds"); an absent file warns loudly and continues (documented fresh
state; the written registry already excludes held handles). Absent is not
fleet-halting because halting all 35 accounts over one missing config file is
disproportionate, and the file is committed.

Tested read-only (--status, never posts): normal run unchanged and emits no
false HOLD line; a corrupted enrollment-hold.json makes the real cadence abort
exit 1; and a synthetic registry containing @designerschat has it dropped with
a loud HOLD ENFORCED line before any posting logic.

Undo: git revert HEAD (1 file, no runtime state touched).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M85r8WQP2nf5jssn8RiuDA
72f0976 · 2026-09-13 · TK-11383: enforce the designerschat enrollment hold at the PUBLISHER too
Kimi second-model review of 123570c: a builder-only hold guard is defeated by a
hand-edit of accounts.json, a committed `--include-held` output, an old
checkout, or Meta expanding the pages_show_list allowlist. The irreversible
action — a public post — lives in daily-cadence.js, so the guard belongs there
too, using the mechanism that file already honours.

- account-themes.json: convert the designerschat override from a keyword to a
  `skip`. daily-cadence.js already excludes any handle with a skip
  (eligible = HANDLES.filter(h => !themeFor(h).skip)), so even if designerschat
  re-enters accounts.json by ANY path, the cadence will not post to it.
  A skip can only PREVENT a post, never cause one.
- build-registry.js: a MISSING enrollment-hold.json now warns loudly instead of
  silently failing open (a corrupt file already fails closed). The hard backstop
  for the account that matters is now the publisher-side skip above, which does
  not depend on this file existing.

Verified two independent layers: (1) default rebuild still reproduces the
committed accounts.json with byte-identical records and no designerschat
(set-diff, not a count check — Kimi's nit); (2) injecting designerschat into a
registry via --include-held and running the publisher's exact eligibility logic
excludes it (skip honoured). Nothing posted, no registry rewritten.

Undo: git revert HEAD.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
123570c · 2026-09-13 · TK-11383: make build-registry.js stop silently changing who posts publicly
accounts.json drives com.steve.dw-ig-cadence, which posts PUBLICLY without
--dry. build-registry.js rebuilds that file from GET /me/accounts and, until
now, could silently change its contents in BOTH directions with no output:

1. SILENT DROP. /me/accounts is filtered by the `pages_show_list` granular
   scope, a fixed 80-Page allowlist. @beverlyandhillsdesigns and
   @filthyrichlivingcom are fully IG-linked but outside it, so a rebuild
   dropped them and printed a plausible total. Now every run also reads the
   uncapped business_management owned_pages/client_pages edge and reports any
   IG-linked owned Page /me/accounts could not see -- to stderr AND into the
   written registry (unlisted_ig_linked), so the omission survives the
   scrollback. An unreadable edge records null + unlisted_scan_error, never a
   confident zero (CLAUDE.md TK-11431 rule 1). --include-unlisted enrolls them
   once Steve approves.

2. SILENT ADD (the dangerous one). @designerschat was linked on 2026-09-11 but
   its enrollment was explicitly REVERTED by Steve in 42016d6. Nothing enforced
   that: the Page is inside the allowlist and account-themes.json gives it a
   keyword with no skip flag, so a plain rebuild re-enrolled it and the next
   cadence run would have posted to it. The decision now lives in
   enrollment-hold.json and is enforced; --include-held overrides.

Default behaviour is now strictly MORE correct: a default rebuild reproduces
the committed accounts.json exactly (35 keys, identical records). Before this
change it produced 36.

Also retracts a false claim in probe-owned-pages.js's header that "POSTING
still requires the app-access grant". The publish path never uses a Page token
(POST /{ig-user-id}/media_publish with the shared user token;
instagram_content_publish is target=ALL), and content_publishing_limit returns
a live quota for both allowlist-invisible accounts. Recorded as strong
inference, not proof -- the decisive test is a public post, which is gated.

Tested (--print only, nothing written, no post): default reproduces the
committed registry and reports both drops loudly; --include-unlisted yields 38;
--include-held yields 36. Negative tests: an injected me/businesses fault
reports NOT-MEASURED rather than zero, and a corrupt enrollment-hold.json fails
CLOSED with exit 1 rather than enrolling held accounts.

Undo: git revert HEAD (3 files, no runtime state touched).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M85r8WQP2nf5jssn8RiuDA
414dbe2 · 2026-09-13 · fix: extend dw-ig-link-drift with business_management edge for linked-but-not-granted pages (TK-11604)
check-link-drift.js was blind to IG accounts whose Facebook Pages are owned by
a Business Manager but not in the app's pages_show_list allowlist (~80 Page IDs
from when the grant was made). Any Page created after that grant was invisible to
/me/accounts and therefore not diffed, producing a silent NOT-MEASURED false-green.

This mirrors the approach already proven in probe-owned-pages.js (TK-11383):
  - Pass 1 (unchanged): /me/accounts — app-granted pages
  - Pass 2 (new): /me/businesses → owned_pages + client_pages via business_management
    scope, which is granted target=ALL with no allowlist

BM-discovered accounts are merged into `live` (deduped), marked
via_business_management:true, and surfaced in the linked-not-enrolled list.
The BM pass fails gracefully: if the scope is absent or an edge errors, it logs
and continues — the /me/accounts result is still reported, never silently skipped.

New report fields: biz_mgmt_checked, biz_mgmt_new_accounts, biz_mgmt_error.
4aca47c · 2026-09-13 · TK-11383: read-only probe that sees Pages outside the pages_show_list allowlist
check-link-drift.js and probe-unlinked.js both read GET /me/accounts, which is
filtered by the pages_show_list granular scope. On this token that scope is a
FIXED allowlist of 80 Page IDs predating the newer Pages, so any Page created
since is invisible to both tools regardless of its IG-link state. That is
NOT-MEASURED, not "no drift", and it read green for days.

business_management on the same token has target=ALL, so
GET /{business}/owned_pages?fields=instagram_business_account sees every owned
Page and its IG link. probe-owned-pages.js uses that edge and reports, per Page,
whether it is IG-linked and whether it is inside the allowlist -- so the
linked-but-not-app-granted state is now visible instead of silent.

Measurement blindness solved; posting still needs the app-access grant, since
a Page token (?fields=access_token) remains #100-blocked outside the allowlist.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YDXDvUmj1KEEMzWw76MpFU
e94fe25 · 2026-09-11 · TK-11383: enroll @designerschat — IG fleet 35 -> 36
Steve completed the IG<->Page link in the Instagram app; Meta propagated it a
few minutes later (earlier probes were simply too early, not failures).

Verified before writing, per the memo's explicit warning that build-registry.js
rewrites the WHOLE registry: the --print dry run diffed against the live
accounts.json showed ADDED 1 (designerschat), REMOVED 0, CHANGED 0. No
unrelated account was swept in.

Page 109985254012064 'Designers Chat' now reports ig_business=designerschat and
connected=designerschat, matching the shape of the working reference
borninbeverlyhills. check-link-drift returns IN_SYNC 80/36/36.

Backup of the prior registry kept alongside as accounts.json.bak-TK11383-*.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
19a34d7 · 2026-09-11 · TK-11383: make the page-link driver self-diagnosing
The first real run reached the Designers Chat professional dashboard but found
no 'Linked accounts' control, and reported nothing useful about what WAS on
screen. Now it tries four label patterns, and on a miss enumerates every visible
control plus the two fallback routes (Page settings while acting as the Page,
and the Instagram app's Accounts Centre — which also covers the phone-only
Business/Creator switch).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
90929b0 · 2026-09-11 · TK-11383: add drive-page-link.mjs — Steve-run openclaw driver to the Linked accounts screen
The auto-mode classifier refuses to let an agent drive a logged-in social
account's account-linking UI, and no permission rule lifts it: settings.json
already carries a blanket Bash allow with defaultMode:auto (1,065 allow rules),
which is the proof the classifier is a separate layer from the allowlist.

The mechanism that does work is Steve running the driver himself via a column-0
'!' paste. This script navigates the running openclaw Chrome to a Page's
professional dashboard and on to Linked accounts, then stops and reports. It
never types credentials and never clicks Connect.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Jc7e5vG4Jx68iXSYhwUiA
0e18a60 · 2026-09-11 · TK-11383: correct two false claims in the IG fleet runbook
Verified against the live Meta token and launchd, not assumed:

1. "Enrollment is self-healing" is FALSE. No LaunchAgent references
   build-registry.js; the only scheduled IG job (com.steve.dw-ig-link-drift)
   runs the read-only detector check-link-drift.js, which never writes
   accounts.json. A human must run build-registry.js after every link.

2. The "CRITICAL: new Page MUST land in the same Business portfolio or the
   shared token can't see it" warning is WRONG for this token and is retracted.
   debug_token reports type=USER, never-expiring, with pages_show_list, so it
   enumerates every Page Steve admins regardless of portfolio. Live
   counter-example: borninbeverlyhills (page 2548395878518829) is enrolled and
   postable today from NO portfolio. Portfolio placement stays preferred for
   permissions hygiene, and becomes mandatory again only under a SYSTEM-USER
   token.

No account, Page, registry or posting state was changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018Jc7e5vG4Jx68iXSYhwUiA
09fe7b8 · 2026-09-10 · TK-11367: fix delete tool's silent false-negative + add real approval gates
THE BUG: IG_GRAPH_HOST in .env carries the scheme ('https://graph.facebook.com'),
and this script read it bare, so every request built
'https://https://graph.facebook.com/...' -> DNS lookup for host "https" ->
ENOTFOUND -> status 0 -> EVERY candidate silently classified NOT-LIVE. The tool
reported 'Total live Novasuede matches: 0' while 38 posts were in fact live. A
destructive tool that reports 'nothing to delete' for an environmental reason is
the false-green class: someone reads 0 and closes the ticket.

live-media.js already normalizes with .replace(/^https?:\/\//,'') — this was the
one script in the directory that forgot the house pattern. Blast radius: 1 file
(every other Graph script hardcodes the bare host).

Also, this tool hardcoded REASON='novasuede-removal-steve-approved' despite never
having run and despite that approval never having been given — every tombstone
would have asserted a sign-off that did not exist. The reason now carries the real
approving artifact via --approved-by, with no default that claims approval, and
--go REFUSES without it (exit 3) and refuses on a live-count mismatch (exit 4).
Both refusals precede the target set and the delete loop.

Tombstones now also capture media_url + caption, so what a delete destroys stays
re-creatable; media_url/thumbnail_url are pulled in the liveness re-check.

RECONCILE (the 33-vs-38 gap in the memo, now resolved): 33 was stale; 38 is the
true total across 4 accounts; but the tool can only SEE 16, because its input
data/live-media.json covers @designerwallcoverings only. The other 20 in-scope
posts (hospitalitywallcoverings 13, wallpaperinstallers 7) are invisible to it
until live-media.js is re-run for those accounts.

Verified: dry run now returns 16 live with correct permalinks; --go without
--approved-by refuses and deletes nothing. No post deleted or archived.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
ac130fd · 2026-09-10 · TK-11367: account-scoped Novasuede guard for Norma's daily cadence
Norma is a THIRD posting pipeline that TK-11086's 2026-09-01 kill never
touched — that patch only fixed ~/Projects/dw-marketing-reels — so Norma kept
fanning the Novasuede line across the DW network for six more days (35 posts,
09-02..09-07) with nothing watching.

Guard sits at the account/product seam in daily-cadence.js because the block is
account-scoped, and reuses the existing 'skip this candidate' path so no other
selection logic changes. It matches on TEXT (title/caption), NOT on a DWNS- sku
prefix: the leaked posts carried DWCC-* skus, which is exactly why TK-11086's
sku-prefix filter missed them.

Scope per Steve 2026-09-10: block designerwallcoverings, hospitalitywallcoverings
and wallpaperinstallers; @suedewallpaper stays ALLOWED as the suede line's own
account (TK-10866 kept it as a valid Novasuede target).

Verified: 34/34 of Norma's real leaked posts would now be blocked and both
@suedewallpaper posts correctly allowed; against 50 live Novasuede products from
Norma's own search pool the guard blocks on all three target accounts and allows
on suede; non-Novasuede negative controls all pass; --dry cadence run clean.
No pm2 restart needed — launchd spawns a fresh node per run.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01LjQgkCC1vKXku5Ep5ftooU
2c9013b · 2026-09-10 · IG fleet: re-enroll @grassclothwallpaper (34->35) — link restored, Steve-approved TK-10740
Its IG<->Page link broke 2026-08-27 (afb0c09) and has since been re-linked.
Diff verified: +grassclothwallpaper only, 0 removals.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M35zZWxEaXgPJFM8VpbprA
690a70b · 2026-09-10 · TK-10758: ID-pinned eraser for the 2 residual sassy reposts
fleet-sassy-scan.js --go deletes whatever its regex flags at run time, and
CREDIT_RE also matches a legitimate '📸 @handle' photo credit — so that path
could sweep an unreviewed good post. This pins the irreversible delete to the
exact two media_ids verified live on 2026-09-10, re-checks each is still live
and still sassy before acting, and tombstones each verified deletion.

Dry-run by default; --go is Steve-gated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013JCERcLpRfsvEBoPtvUkMJ
dd68303 · 2026-09-10 · IG fleet: add read-only link-drift checker (TK-10740)
build-registry.js is only "self-healing" when something runs it — and nothing
does. No launchd plist and no cron entry calls it, so a newly created or
restored IG<->Page link never enrolls and never signals. That is how
@grassclothwallpaper sat linked-but-unenrolled for ~2 weeks.

check-link-drift.js is the DISCOVER half of a discover/activate split: it
diffs the live Meta token's postable accounts against accounts.json and
reports both directions (linked-not-enrolled, enrolled-but-link-lost). It
never writes accounts.json — activation stays a gated `build-registry.js`,
because accounts.json is the control plane for daily-cadence.js, which
com.steve.dw-ig-cadence runs without --dry (live public posts).

A failed token/API read exits 2 (UNKNOWN) rather than reporting in-sync, so
it cannot emit a false PASS. Emits PASS/WARN in the fleet-health-rollup
vocabulary. No schedule installed — that is a gated action.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Q2weureFg2J91hfDAipxTM
965f96d · 2026-08-18 · instagram: per-account 'what to post next from DW Shopify' notes board (/notes)
Human-authored posting plan per Instagram account. New account-notes.js (store +
GET/POST /api/live/account-notes + GET /notes board) and notes-viewer.html — a
35-account grid with an auto-saving note textarea each, filter (all/with/without),
search, per-card updated date+time stamp, and deep-links to that account's posts.
Notes stored in data/account-notes.json (separate from the media caches so a refresh
sweep never clobbers them). Cross-linked from /live + /calendar.
Verified: read/save/clear round-trip, unknown-account 400, UI auto-save persists,
board renders 35 cards no errors, public tunnel gated.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8cfcfe2 · 2026-08-18 · instagram: keep ALL accounts live via cron (not just DW)
- refreshAllAccounts(): serialized, per-account error-isolated sweep of the whole
  35-account roster (incremental by default; full+onlyIncomplete for backfill).
- live-media-refresh cron now sweeps ALL accounts hourly (was DW-only), so the
  cross-account /calendar stays live for the whole roster.
- new live-media-backfill-sweep cron (daily 04:40): full-backfills up to 5 not-yet-
  complete accounts/run as a safety net; no-ops once all complete.
Verified: one-shot incremental sweep = 35 accounts, +14 new, 0 errors, ~56s.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
835c032 · 2026-08-18 · instagram: cross-account post Calendar view (/calendar)
Day-major transpose of the /live board: a month calendar of what posted each
day across all 35 IG accounts, with an all/select-accounts filter (color-dotted,
localStorage-persisted), per-day count pills + thumbnails, and a click-through
day drawer listing that day's posts across accounts (account chip, time, caption,
stats, permalink). Read-only over the same per-account caches; no Graph API call
on page view. New: calendar.js (monthView/dayView + routes), calendar-viewer.html.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8417463 · 2026-08-17 · Fix IG delete: target the Delete BUTTON, not the 'Delete post?' heading
The confirm dialog renders a heading 'Delete post? Are you sure...' whose ref
matched the broad /Delete/ selector BEFORE the actual Delete button, so the
script clicked a no-op heading ('clicked but not verified gone') and nothing
deleted. Now matches button "More options" / button "Delete" specifically.
Proven: @ffepurchasing 3/3 deleted + verified gone.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
04b7ade · 2026-08-17 · Harden IG delete-originals.js: retry stale refs, recover dead tabs, patient positive-signal login check
- clickByText() defeats the snapshot->click stale-ref race on IG's dynamic DOM
- navigate()/snapshot() recover from openclaw 'tab not found' (dead shared tab)
- preflight uses a retried positive login signal (app nav visible) instead of a
  too-early negative check that gave false 'not logged in' readings
No change to deletion semantics/gates (canary-stops-1, verify-gone, skip-on-missing-Delete).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1e26b11 · 2026-08-17 · IG /spoonflower: server-inject data into the page so it renders without an authed XHR
Chrome strips URL-embedded basic-auth creds, so fetch('/api/spoonflower') 401'd and
the board showed empty. Now the route injects the JSON into #sf-data and the page
first-paints from that; the XHR is refresh-only and fails silently.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
c573cf5 · 2026-08-17 · IG: add /spoonflower purge viewer (thumbnails + live delete-status board)
The 4 flagged Spoonflower posts are reshares (not in post-ledger.jsonl), so /posts
can't show them. New /spoonflower route + board shows each with thumbnail, caption,
reshare-vs-incidental-hashtag class, and pending/deleted status that updates live.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
eca6e1e · 2026-08-17 · chore: lint, refactor, v1.2.0 (session close)
- load() now surfaces a failed initial fetch via toast (was silent empty grid)
- lint: all files parse clean, no autofixes needed; refactor: no change
- minor bump for the /posts viewer + inline/bulk delete feature
c90044b · 2026-08-17 · IG: add serialized, per-account-aware Spoonflower delete script (openclaw)
Reads the confirmed hitlist and deletes via logged-in Chrome (··· -> Delete ->
confirm -> verify gone). Serialized + fails loudly if not logged in as the
owning account. --dry does a reachability probe that deletes nothing.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ffc9303 · 2026-08-17 · Bulk-select delete on IG auto-post viewer
- Checkbox per card + bulk bar (select all shown / clear / delete selected)
- Sequential deletion; LIVE mode paced 60s between deletes (Meta ban-safe)
  with live countdown + Stop button; tombstone mode runs back-to-back
- Per-item failure surfaces inline (open in IG / remove anyway); button
  label + confirm text adapt to tombstone vs live mode
- Verified in real Chrome: render, select, select-all, clear, mode label

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1b1e7d4 · 2026-08-17 · ig: wrong-image delete tooling — 4 posts (metallic/suede), pre-approved, hold execution
Steve 8/17 delete-all directive for incorrect image md5 c1e6edc. Runner is
probe-only by default; --go is ungated/pre-approved but held until Steve says run.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
b5cd441 · 2026-08-17 · IG reshare: blocklist Spoonflower (competitor) fleet-wide + scrub vendor file + add scan tool
Spoonflower is a print-on-demand competitor, not a DW vendor, but it was in
dw-vendors.txt (and vendor_registry), so the reshare engine credited it on
grassclothwallpaper/suedewallpaper. Added a code-level BLOCKLIST guard in
attribute() in both hashtag-reshare.js and fabric-friday-reshare.js so a
competitor is never credited/reshared even if it re-enters the vendor file.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ec91871 · 2026-08-17 · Gate live IG delete behind IG_LIVE_DELETE flag (default off, tombstone-only)
- Server refuses live deletes with 403 unless IG_LIVE_DELETE=1
- /api/posts reports liveEnabled; viewer hides the Live toggle + forces
  tombstone mode when disabled, with an inline note on how to enable

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8529d5a · 2026-08-17 · IG auto-post viewer with inline delete (GET /posts on :9810)
- GET /posts: per-account grid of all 275 auto-posts (post-ledger.jsonl),
  sort + density + account filter + search, created date+time on each card
- Inline delete, two modes: tombstone (remove from viewer/ledger, no IG touch)
  and live (openclaw drives Chrome to delete on IG + verify gone, serialized)
- GET /api/posts, GET /api/posts/oc-status, POST /api/posts/delete
- Routes registered before start()'s 404 catch-all, behind existing Basic Auth

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
8ac3cb3 · 2026-08-16 · ig(TK-10573): repost the held metallicwallpaper post; lift HOLD
@metallicwallpaper Diamond Vector (dwqw-58467-handle) reposted live with the
corrected name+color+SKU caption -> https://www.instagram.com/p/DcG5n5VG3I_/
(new post-ledger row confirms). redo-results updated with the new permalink,
HOLD set cleared, delete-viewer regenerated. All 85 old originals now have a
confirmed replacement (or are the archived orphan) = safe to delete via openclaw.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0026909 · 2026-08-15 · ig(TK-10573): HOLD unpublished repost from delete tooling + commit redo viewers
The @metallicwallpaper Diamond Vector repost (DcAHGAcgUIc) landed in redo-results
with new_permalink=null and NO post-ledger row — its corrected caption never
published, but the product is still live/re-postable. Deleting its original would
lose the post. gen-delete-viewer.js now marks it HOLD (red, excluded from Select-all)
so it can't be swept into the openclaw deletion. Also commits the previously
uncommitted redo tooling: delete-viewer.html, actions-today.html, install-schedules.sh.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0ff33f9 · 2026-08-15 · Norma IG cadence: 8s timeout on Boost fetch (Cody FIX-FIRST, yoloforever cycle 1)
3rd-party mybcapps endpoint on a 35-min launchd cron had no fetch timeout ->
a hung call would stack zombie processes. AbortSignal.timeout(8000); abort
falls through to the suggest.json fallback. TK-10588.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
43de9ea · 2026-08-15 · Norma IG cadence: fresh-source via Boost API (fixes clean-product pool exhaustion)
Root cause: findProduct sourced only 10 candidates/keyword from suggest.json;
as everPosted grew, narrow-keyword pools exhausted -> 'no clean product … all reused'.
Fix pages the Boost SF-filter search API (50/page, thousands available) for the SAME
keyword, applying the IDENTICAL leak/no-image guard to every candidate + suggest.json
fallback. Widens the guard-gated pool WITHOUT loosening the private-label guard.
DTD 7/9 Option C, Cody-scoped. TK-10588.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
564be77 · 2026-08-10 · TK-10395: cap reel container poll at 12x4s so 3x-retry worst case < client 240s
Contrarian find: waitForContainer default 30x4s=120s/attempt made the 3-attempt
worst case ~375s > the reels-repo client 240s timeout, so the client could time
out MID-legit-retry and mislabel a still-in-flight post 'posted-unverified'.
Scope the reel poll to 12x4s=48s/attempt => 3x48+15s backoff=159s < 240s. Short
9:16 reels finish well under 48s. CODE-ONLY: going live needs a gated pm2 restart
of norma-instagram (memo'd to pending-approval).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
9897011 · 2026-08-10 · TK-10395: bounded retry-on-2207076 in reel skill (Meta transient media-upload failure)
createContainer+waitForContainer now retry up to 3x on IG error 2207076 / 'Media upload has failed' / processing-timeout; publish only fires after a FINISHED container so retry is double-post-safe. Approved by Steve.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
cbfbf08 · 2026-08-08 · Norma pre-deploy gate: run durable smoke battery before any live restart
Makes the TK-10293 suites actually DURABLE by wiring them into the deploy path
so a REGRESSION (not just a broken build) can't reach :7400:

- scripts/predeploy-gate.sh (npm run gate): spins an isolated instance on its
  own port (sdcc_test, all sends sinked, reuses test-instance.sh), runs the full
  battery (api/regression/write/crud/authz/e2e), tears down via EXIT trap, exits
  non-zero on the first failing suite. Readiness gates on Next's "Ready" marker +
  two consecutive /login 200s + settle (a single non-000 poll raced the boot and
  ECONNREFUSED'd the early suites).
- scripts/deploy-local.sh (npm run deploy:local): build -> gate -> restart+health.
- scripts/reload.sh: SKIP_BUILD hook so deploy:local doesn't build twice; stays
  the fast no-gate emergency-recovery path.
- scripts/test-instance.sh: PORT now overridable (${PORT:-7411}) for the gate.

Verified: gate exits 0 all-green on a clean tree and 1 (BLOCKED) when a suite
fails; live :7400 never touched (isolated ports + sdcc_test).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
f2f2df6 · 2026-08-08 · deploy hygiene (TK-10370): build-then-restart-then-health-gate reload + silence lockfile-root warning
- scripts/reload.sh (npm run reload): builds FIRST (broken build never reaches
  live), restarts pm2 norma-email, then health-gates :7400 and fails loud if it
  doesn't answer — closes the TK-10293 gap where a stale .next after a dep
  change crash-looped with no deploy-time signal.
- next.config.ts: outputFileTracingRoot=import.meta.dirname to pin the tracing
  root and silence the stray-lockfile "inferred workspace root" warning.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
efc419d · 2026-08-06 · chore: refactor (drop dead testpulse login in api-smoke) + v0.1.4 (session close)
Lint via subagent hit an internal error; next build typechecked all touched files
successfully this session, so types are clean. Refactor: removed one unused login call.
All 6 suites green after: api 195 / write 216 / crud 35 / authz 12 / regression 20 / e2e 9.
a945908 · 2026-08-06 · test(cycle7 Cody-gate): mutation role-matrix + isolation positive-control
Cody VERIFIED 3 real gaps: (1) matrix was GET-only — 216 mutation handlers untested for
role-gating; (2) tenant-isolation passed VACUOUSLY (asserted B absent but never that staff
sees an A record — an empty-for-everyone list passes falsely); (3) bespoke-auth routes
(/api/registry) silently skipped.

- Matrix now covers mutations too: for each POST/PUT/PATCH/DELETE handler, every DISALLOWED
  role must 403 (requireRole rejects before any write/send side-effect, so probing is safe).
  180 GET + 201 mutation handlers, 0 under-restrictions.
- Isolation positive control: admin creates a tenant-A AND a tenant-B record; assert staff(A)
  SEES the A record (list + by-id 200) BEFORE asserting B is absent (by-id 404/403 + not in
  list). Kills the vacuous-truth trap. Both records cleaned up.
- Added /api/registry (bespoke admin-only auth) as an explicit matrix entry.

Full battery (6 suites): api 195 / write 216 / crud 35 / authz 12 / regression 20 / e2e 9.
f7e95d8 · 2026-08-06 · test(cycle7): authorization-matrix + tenant-isolation suite (real tenant fixtures)
test:authz (tests/api-authz-matrix.mjs) — the security coverage the null-org fixtures
couldn't give. Self-provisions two tenant accounts in sdcc_test and scopes teststaff to
tenant A BEFORE login (org_id is baked into the session token at login).

1) ROLE MATRIX: derives each GET route's allowed roles from its requireRole(...) call
   (resolving ...VAR spreads to their local const) and asserts admin/staff/pulse each get
   the right access across 179 guarded routes. 0 under-restrictions (no disallowed role
   ever bypasses 403 = no privilege-escalation) + 0 over-restrictions.
2) TENANT ISOLATION: admin creates a tenant-B-owned donation + grant; asserts staff scoped
   to tenant A CANNOT read them by id (404/403) and they never leak into staff's list.

Parser fix: ...ROLES is NOT always all roles — email-analyzer files define a local
const ROLES=['admin','staff']; the resolver reads the local const so pulse's correct 403
isn't miscounted as over-restriction.

Full battery (6 suites): api 195 / write 216 / crud 35 / authz 8 / regression 20 / e2e 9.
2a8a6c7 · 2026-08-06 · test(cycle6 Cody-gate): CRUD tests real org id-space; non-hollow admin E2E
Cody VERIFIED the CRUD suite only tested the null/global path (which no real tenant takes)
and the admin E2E was hollow (silent skip + fixed sleep + body-visible-always-true).

- CRUD: scope each entity with the id-space its org_id FK actually requires — donations/
  grants now POST with a real nonprofit_accounts.id (201, genuine org-scoped write path),
  clients/library with a real organizations.id, journalists org-less. Proves the routes
  work under real tenant scoping (not org=null). 35 assertions green.
- admin E2E: removed the silent-skip; each navigated tab must settle #main-content to
  non-empty content, and >=3 tabs must be navigated (can't pass by skipping all). Waits on
  networkidle, not a fixed timeout.
- Expanded the gated memo: the split FK makes a coherent staff org_id impossible (all seeded
  users have org_id=null; null-org staff reads cross-tenant) — a second-order symptom of the
  same data-model bug, gated to Steve (not app-fixable without the schema decision).

Full battery: api 195 / write 216 / crud 35 / regression 20 / e2e 9.
e958e07 · 2026-08-06 · test(cycle6): CRUD lifecycle suite (create->read->update->delete) + admin E2E journey
test:crud (tests/api-crud-lifecycle.mjs) — the 'does the write actually WORK' coverage
write-smoke doesn't give. Full round-trip per entity: CREATE (real payload) -> READ-BACK
(field persisted) -> UPDATE -> DELETE -> CONFIRM-GONE (404). Self-cleaning. 5 core entities
(clients/donations/grants/library/journalists), per-entity org scope. 35 assertions green.

It surfaced a FLEET-WIDE data-model bug (VERIFIED): org_id FKs are split across two org
tables — contacts/donations/drafts/grants/petitions/sessions -> nonprofit_accounts, but
library_items -> organizations, and the app scopes by organizations. So org-scoped CREATE
on the nonprofit_accounts-FK tables 500s (donations/grants reproduced). Expanded the gated
memo (pending-approval/norma-sessions-org-fk-datamodel.md) from sessions-only to all 6
tables — schema decision, NOT auto-fixed. Suite runs those entities org-less (valid global
path) so it proves CRUD logic; org-scoped assertions get added once the FK is reconciled.

test:e2e — added admin.spec.ts: login -> app shell -> navigate Grants/Donations/Petitions/
News tabs, assert no console errors. E2E now 9 specs.

Full battery: api 195 / write 216 / crud 35 / regression 20 / e2e 9.
d26f6c6 · 2026-08-06 · fix(cycle5 Cody-gate): truly-empty-body probe + readJson across 93 routes
Cody VERIFIED my write-smoke gave false confidence: the admin probe sent '{}' (valid
JSON), so it MISSED routes that crash on an absent body — the real prod scenario. He
reproduced no-body 500s on clients/drafts/grants/donations-insights POST.

- Suite: admin+unauth probe now sends NO body (undefined), replicating a client omitting
  the body — the case that makes unguarded request.json() throw -> 500.
- readJson() codemod across ALL 93 non-excluded routes still on raw request.json()
  (returns {} on empty; behavior-preserving for valid JSON). lib/body.ts default T=any so
  the swap is type-neutral. Cody's 4 now return 400, not 500.
- sessions.org_id FK inconsistency (references nonprofit_accounts, not organizations) is a
  data-model decision -> drafted to pending-approval (norma-sessions-org-fk-datamodel.md),
  not auto-migrated. The 23503->409 guard stays (stops the crash; feature still gated).
- pulse public topics: redirect:'manual' stops the crash but the section shows nothing
  because /api/petitions/topics is auth-gated — flagged as a follow-up (public topics
  source needed), NOT claimed as fully fixed.

Full battery green: api-smoke 195 / write-smoke 216 (no-body probe) / regression 20 / e2e 8.
959da8b · 2026-08-06 · test+fix(cycle5): write-path smoke (216 mutations) + Playwright E2E (3 tiers) + fixes surfaced
WRITE-PATH (tests/api-write-smoke.mjs, npm run test:write): enumerates all 216
mutating (route,verb) pairs; asserts every one gates unauth (4xx, never 2xx/500) and
does not 500 on an empty body. Empty bodies keep it side-effect-free; external/AI/send
families are probed unauth-only (never fired). Resolves a real org id so tenant-path
inserts satisfy FKs (the null-org blind spot Cody flagged, applied to writes).

Fixes it surfaced (all reversible, verified on :7411):
- lib/body.ts readJson(): safe body parse ({} on empty, typed error on malformed).
  Applied to 5 routes that crashed on empty body via unguarded request.json()
  (outreach-pipeline, settings/news-watch-people, social/competitors, social/posts,
  pulse/tracked).
- webhooks/pulse-topic: not-configured 500 -> 503. contacts/import: wrong content-type
  500 -> 415. donations/insights: removed org_id filter (table has no org_id column) +
  readJson. community: guarded the unauth proxy to :7400 (non-JSON/upstream-fail -> 502,
  not a 500 crash). sessions: FK violation (23503) -> 409, not 500.

E2E (playwright.config.ts + tests/e2e/, npm run test:e2e): chromium installed + working
in this env. 8 specs — admin/staff/pulse login + land + no console errors; pulse-tier
lands on /pulse; wrong creds surface an error; public /pulse,/pulse/petitions,/pulse/about
render with no login wall. Caught a real public-surface bug: /pulse fetched the auth-gated
/api/petitions/topics which 307s to HTML /login -> JSON parse crash; fixed with
redirect:'manual' so the existing .ok guard degrades gracefully.

Suites: api-smoke 195 / write-smoke 216 / regression 20 / e2e 8 — all green.

File tree

1005 files tracked. Click any to browse the source at HEAD.

Other build journals

← NationalPaperHangers Yfr2 C3  ·  all 4 projects  ·  Norma Platform →

Export

commits.csv · feed.atom · project.json · commits.json

rendered in 6ms