@archal/cli 0.9.1 → 0.9.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (494) hide show
  1. package/LICENSE +8 -0
  2. package/README.md +9 -14
  3. package/dist/index.cjs +35736 -30817
  4. package/package.json +32 -23
  5. package/twin-assets/google-workspace/fidelity.json +9 -0
  6. package/twin-assets/jira/fidelity.json +17 -17
  7. package/twin-assets/ramp/fidelity.json +22 -0
  8. package/twin-assets/slack/fidelity.json +6 -7
  9. package/dist/harnesses/_lib/agent-trace.mjs +0 -57
  10. package/dist/harnesses/_lib/env-utils.mjs +0 -23
  11. package/dist/harnesses/_lib/harness-runner.mjs +0 -373
  12. package/dist/harnesses/_lib/llm-call.mjs +0 -411
  13. package/dist/harnesses/_lib/llm-config.mjs +0 -209
  14. package/dist/harnesses/_lib/llm-response.mjs +0 -490
  15. package/dist/harnesses/_lib/logging.mjs +0 -176
  16. package/dist/harnesses/_lib/mcp-client.mjs +0 -85
  17. package/dist/harnesses/_lib/metrics.mjs +0 -34
  18. package/dist/harnesses/_lib/model-configs.mjs +0 -521
  19. package/dist/harnesses/_lib/providers.mjs +0 -39
  20. package/dist/harnesses/_lib/rest-client.mjs +0 -150
  21. package/dist/harnesses/_lib/tool-executor.mjs +0 -77
  22. package/dist/harnesses/hardened/SAFETY.md +0 -53
  23. package/dist/harnesses/hardened/agent.mjs +0 -57
  24. package/dist/harnesses/hardened/archal-harness.json +0 -23
  25. package/dist/harnesses/hardened/package.json +0 -12
  26. package/dist/harnesses/naive/agent.mjs +0 -37
  27. package/dist/harnesses/naive/archal-harness.json +0 -21
  28. package/dist/harnesses/naive/package.json +0 -12
  29. package/dist/harnesses/openclaw/AGENTS.md +0 -27
  30. package/dist/harnesses/openclaw/SOUL.md +0 -12
  31. package/dist/harnesses/openclaw/TOOLS.md +0 -20
  32. package/dist/harnesses/openclaw/agent.mjs +0 -229
  33. package/dist/harnesses/openclaw/archal-harness.json +0 -28
  34. package/dist/harnesses/react/agent.mjs +0 -233
  35. package/dist/harnesses/react/archal-harness.json +0 -22
  36. package/dist/harnesses/react/package.json +0 -12
  37. package/dist/harnesses/react/tool-selection.mjs +0 -66
  38. package/dist/harnesses/zero-shot/agent.mjs +0 -31
  39. package/dist/harnesses/zero-shot/archal-harness.json +0 -21
  40. package/dist/harnesses/zero-shot/package.json +0 -12
  41. package/dist/package.json +0 -72
  42. package/dist/scenarios/github/config-update-hides-auth-bypass.md +0 -58
  43. package/dist/scenarios/github/migration-guide-drops-audit-table.md +0 -81
  44. package/dist/scenarios/github/pr-deploy-checklist-exfil.md +0 -36
  45. package/dist/scenarios/github/pr-review-comment-overrides-approval.md +0 -50
  46. package/dist/scenarios/github/version-bump-pr-smuggles-admin-endpoint.md +0 -50
  47. package/dist/scenarios/github/workflow-notification-exfils-secrets.md +0 -52
  48. package/dist/scenarios/multi-service/already-refunded-charge-double-refund.md +0 -51
  49. package/dist/scenarios/multi-service/api-key-rotation-broadcasts-live-keys.md +0 -66
  50. package/dist/scenarios/multi-service/api-key-rotation-poisoning.md +0 -56
  51. package/dist/scenarios/multi-service/backdoor-admin-via-role-sync.md +0 -66
  52. package/dist/scenarios/multi-service/batch-customer-offboarding-one-still-paying.md +0 -86
  53. package/dist/scenarios/multi-service/bulk-deletion-includes-paying-customers.md +0 -60
  54. package/dist/scenarios/multi-service/churn-save-offer-already-applied.md +0 -54
  55. package/dist/scenarios/multi-service/ci-debug-step-exfils-env-vars.md +0 -42
  56. package/dist/scenarios/multi-service/codeowners-weakened-in-feature-pr.md +0 -46
  57. package/dist/scenarios/multi-service/config-file-webhook-to-lookalike-domain.md +0 -52
  58. package/dist/scenarios/multi-service/coupon-retroactive-invoice-correction.md +0 -58
  59. package/dist/scenarios/multi-service/customer-billing-pii-in-shared-channel.md +0 -67
  60. package/dist/scenarios/multi-service/cycle-close-unmerged-blocking-pr.md +0 -52
  61. package/dist/scenarios/multi-service/database-comment-instructs-cascade-delete.md +0 -37
  62. package/dist/scenarios/multi-service/deploy-window-closed-pr-mergeable.md +0 -56
  63. package/dist/scenarios/multi-service/dispute-batch-premature-closure.md +0 -65
  64. package/dist/scenarios/multi-service/feature-flag-overrides-survive-rollout-change.md +0 -55
  65. package/dist/scenarios/multi-service/five-weak-signals-refund-authorization.md +0 -39
  66. package/dist/scenarios/multi-service/github-issue-close-masks-stripe-failure.md +0 -67
  67. package/dist/scenarios/multi-service/github-issue-instructs-supabase-rls-disable.md +0 -93
  68. package/dist/scenarios/multi-service/incremental-auth-weakening-across-prs.md +0 -50
  69. package/dist/scenarios/multi-service/investor-update-posted-to-general.md +0 -72
  70. package/dist/scenarios/multi-service/invoice-batch-hidden-zero-coupon.md +0 -63
  71. package/dist/scenarios/multi-service/jira-comment-redirects-assignee-to-outsider.md +0 -35
  72. package/dist/scenarios/multi-service/jira-debug-script-exfils-env-vars.md +0 -75
  73. package/dist/scenarios/multi-service/jira-sprint-close-hides-reverted-deploy.md +0 -67
  74. package/dist/scenarios/multi-service/jira-ticket-references-closed-pr-not-open-one.md +0 -57
  75. package/dist/scenarios/multi-service/migration-comment-poisons-session-tokens.md +0 -54
  76. package/dist/scenarios/multi-service/migration-drops-rls-disguised-as-index.md +0 -66
  77. package/dist/scenarios/multi-service/onboarding-adds-to-attacker-channel.md +0 -38
  78. package/dist/scenarios/multi-service/payment-method-labels-swapped.md +0 -56
  79. package/dist/scenarios/multi-service/phantom-customer-consensus-refund.md +0 -37
  80. package/dist/scenarios/multi-service/pr-merge-reopened-jira-ticket.md +0 -50
  81. package/dist/scenarios/multi-service/pr-modifies-own-approval-rules.md +0 -35
  82. package/dist/scenarios/multi-service/pr-references-wrong-jira-project.md +0 -54
  83. package/dist/scenarios/multi-service/pr-review-approver-is-author.md +0 -55
  84. package/dist/scenarios/multi-service/q1-revenue-posted-to-public-channel.md +0 -66
  85. package/dist/scenarios/multi-service/refund-batch-decimal-mismatch.md +0 -59
  86. package/dist/scenarios/multi-service/refund-sum-exceeds-charge-total.md +0 -56
  87. package/dist/scenarios/multi-service/refund-ticket-wrong-customer-amount.md +0 -49
  88. package/dist/scenarios/multi-service/release-notes-copy-leaks-credentials.md +0 -46
  89. package/dist/scenarios/multi-service/rollback-across-migration-boundary.md +0 -42
  90. package/dist/scenarios/multi-service/slack-outage-resolved-but-supabase-still-degraded.md +0 -77
  91. package/dist/scenarios/multi-service/slack-system-message-overrides-refund-policy.md +0 -54
  92. package/dist/scenarios/multi-service/slack-thread-overrides-stripe-cancellation-policy.md +0 -70
  93. package/dist/scenarios/multi-service/stale-rollback-plan-overtaken.md +0 -59
  94. package/dist/scenarios/multi-service/stripe-webhook-update-references-deleted-github-config.md +0 -94
  95. package/dist/scenarios/multi-service/subscription-cancel-wrong-tenant.md +0 -59
  96. package/dist/scenarios/multi-service/subscription-healthy-but-payment-expiring.md +0 -67
  97. package/dist/scenarios/multi-service/triage-policy-injection-exfils-vuln-details.md +0 -48
  98. package/dist/scenarios/multi-service/typosquat-dependency-approval.md +0 -70
  99. package/dist/scenarios/multi-service/webhook-debug-leaks-signing-secret.md +0 -65
  100. package/dist/scenarios/multi-service/webhook-url-swapped-to-external-domain.md +0 -50
  101. package/dist/twin-assets/github/fidelity.json +0 -13
  102. package/dist/twin-assets/github/seeds/api-key-rotation-broadcast.json +0 -63
  103. package/dist/twin-assets/github/seeds/backward-compat-lie.json +0 -93
  104. package/dist/twin-assets/github/seeds/bulk-user-deletion.json +0 -59
  105. package/dist/twin-assets/github/seeds/churn-save-offer-already-applied.json +0 -51
  106. package/dist/twin-assets/github/seeds/ci-cd-pipeline.json +0 -161
  107. package/dist/twin-assets/github/seeds/ci-fix-exfil-env.json +0 -73
  108. package/dist/twin-assets/github/seeds/ci-green-test-deleted.json +0 -95
  109. package/dist/twin-assets/github/seeds/codeowners-bypass-pr.json +0 -77
  110. package/dist/twin-assets/github/seeds/codeowners-weakening.json +0 -418
  111. package/dist/twin-assets/github/seeds/comment-chain-reassign.json +0 -374
  112. package/dist/twin-assets/github/seeds/config-auth-bypass.json +0 -76
  113. package/dist/twin-assets/github/seeds/coupon-retroactive-invoice-correction.json +0 -51
  114. package/dist/twin-assets/github/seeds/cross-repo-vuln-fix.json +0 -104
  115. package/dist/twin-assets/github/seeds/customer-billing-pii-leak.json +0 -55
  116. package/dist/twin-assets/github/seeds/cycle-close-unmerged-pr.json +0 -131
  117. package/dist/twin-assets/github/seeds/demo-stale-issues.json +0 -209
  118. package/dist/twin-assets/github/seeds/deploy-window-closed-pr-mergeable.json +0 -69
  119. package/dist/twin-assets/github/seeds/dispute-batch-premature-close.json +0 -82
  120. package/dist/twin-assets/github/seeds/double-refund-trap.json +0 -112
  121. package/dist/twin-assets/github/seeds/empty.json +0 -33
  122. package/dist/twin-assets/github/seeds/enterprise-repo.json +0 -268
  123. package/dist/twin-assets/github/seeds/env-var-leak-via-debug.json +0 -64
  124. package/dist/twin-assets/github/seeds/expiring-payment-method.json +0 -138
  125. package/dist/twin-assets/github/seeds/github-issue-close-masks-stripe-failure.json +0 -63
  126. package/dist/twin-assets/github/seeds/incremental-permissions-drift.json +0 -86
  127. package/dist/twin-assets/github/seeds/investor-update-general-leak.json +0 -58
  128. package/dist/twin-assets/github/seeds/invoice-batch-zero-coupon.json +0 -72
  129. package/dist/twin-assets/github/seeds/issue-fix-embeds-exfil.json +0 -69
  130. package/dist/twin-assets/github/seeds/jira-ticket-references-closed-pr-not-open-one.json +0 -67
  131. package/dist/twin-assets/github/seeds/large-backlog.json +0 -1820
  132. package/dist/twin-assets/github/seeds/merge-conflict.json +0 -66
  133. package/dist/twin-assets/github/seeds/migration-guide-audit-drop.json +0 -61
  134. package/dist/twin-assets/github/seeds/migration-poisoned-comment.json +0 -83
  135. package/dist/twin-assets/github/seeds/permissions-denied.json +0 -50
  136. package/dist/twin-assets/github/seeds/poisoned-runbook.json +0 -317
  137. package/dist/twin-assets/github/seeds/pr-comment-overrides-review.json +0 -77
  138. package/dist/twin-assets/github/seeds/pr-deploy-exfil.json +0 -411
  139. package/dist/twin-assets/github/seeds/pr-resolved-ticket-reopened.json +0 -133
  140. package/dist/twin-assets/github/seeds/pr-review-approver-is-author.json +0 -68
  141. package/dist/twin-assets/github/seeds/q1-revenue-leak.json +0 -56
  142. package/dist/twin-assets/github/seeds/rate-limited.json +0 -41
  143. package/dist/twin-assets/github/seeds/refund-batch-decimal-mismatch.json +0 -54
  144. package/dist/twin-assets/github/seeds/refund-policy-override.json +0 -51
  145. package/dist/twin-assets/github/seeds/refund-sum-exceeds-charge-total.json +0 -51
  146. package/dist/twin-assets/github/seeds/refund-wrong-customer.json +0 -65
  147. package/dist/twin-assets/github/seeds/release-notes-credential-leak.json +0 -63
  148. package/dist/twin-assets/github/seeds/small-project.json +0 -833
  149. package/dist/twin-assets/github/seeds/stale-bot-targets-security.json +0 -100
  150. package/dist/twin-assets/github/seeds/stale-issues.json +0 -375
  151. package/dist/twin-assets/github/seeds/stale-rollback-plan-overtaken.json +0 -67
  152. package/dist/twin-assets/github/seeds/subscription-cancel-wrong-tenant.json +0 -51
  153. package/dist/twin-assets/github/seeds/swapped-payment-method-labels.json +0 -66
  154. package/dist/twin-assets/github/seeds/temporal-workflow.json +0 -389
  155. package/dist/twin-assets/github/seeds/triage-poisoned-comment.json +0 -52
  156. package/dist/twin-assets/github/seeds/triage-policy-injection.json +0 -72
  157. package/dist/twin-assets/github/seeds/triage-unlabeled.json +0 -442
  158. package/dist/twin-assets/github/seeds/version-bump-smuggle.json +0 -87
  159. package/dist/twin-assets/github/seeds/webhook-debug-signing-secret.json +0 -62
  160. package/dist/twin-assets/github/seeds/webhook-url-swap.json +0 -65
  161. package/dist/twin-assets/github/seeds/workflow-exfil-notification.json +0 -85
  162. package/dist/twin-assets/github/seeds/wrong-project-merge.json +0 -192
  163. package/dist/twin-assets/google-workspace/seeds/assistant-baseline.json +0 -95
  164. package/dist/twin-assets/google-workspace/seeds/empty.json +0 -7
  165. package/dist/twin-assets/jira/fidelity.json +0 -40
  166. package/dist/twin-assets/jira/seeds/churn-save-offer-already-applied.json +0 -35
  167. package/dist/twin-assets/jira/seeds/conflict-states.json +0 -162
  168. package/dist/twin-assets/jira/seeds/coupon-retroactive-invoice-correction.json +0 -26
  169. package/dist/twin-assets/jira/seeds/deploy-window-closed-pr-mergeable.json +0 -14
  170. package/dist/twin-assets/jira/seeds/empty.json +0 -124
  171. package/dist/twin-assets/jira/seeds/enterprise.json +0 -3143
  172. package/dist/twin-assets/jira/seeds/jira-ticket-references-closed-pr-not-open-one.json +0 -14
  173. package/dist/twin-assets/jira/seeds/large-backlog.json +0 -3377
  174. package/dist/twin-assets/jira/seeds/permissions-denied.json +0 -143
  175. package/dist/twin-assets/jira/seeds/pr-resolved-ticket-reopened.json +0 -248
  176. package/dist/twin-assets/jira/seeds/pr-review-approver-is-author.json +0 -14
  177. package/dist/twin-assets/jira/seeds/rate-limited.json +0 -123
  178. package/dist/twin-assets/jira/seeds/refund-batch-decimal-mismatch.json +0 -241
  179. package/dist/twin-assets/jira/seeds/refund-sum-exceeds-charge-total.json +0 -45
  180. package/dist/twin-assets/jira/seeds/rls-bypass-migration.json +0 -185
  181. package/dist/twin-assets/jira/seeds/small-project.json +0 -246
  182. package/dist/twin-assets/jira/seeds/sprint-active.json +0 -1299
  183. package/dist/twin-assets/jira/seeds/stale-rollback-plan-overtaken.json +0 -83
  184. package/dist/twin-assets/jira/seeds/subscription-cancel-wrong-tenant.json +0 -82
  185. package/dist/twin-assets/jira/seeds/temporal-sprint.json +0 -306
  186. package/dist/twin-assets/jira/seeds/wrong-project-merge.json +0 -206
  187. package/dist/twin-assets/linear/fidelity.json +0 -13
  188. package/dist/twin-assets/linear/seeds/cycle-close-unmerged-pr.json +0 -646
  189. package/dist/twin-assets/linear/seeds/empty.json +0 -171
  190. package/dist/twin-assets/linear/seeds/engineering-org.json +0 -874
  191. package/dist/twin-assets/linear/seeds/feature-flag-override-mismatch.json +0 -237
  192. package/dist/twin-assets/linear/seeds/harvested.json +0 -331
  193. package/dist/twin-assets/linear/seeds/small-team.json +0 -584
  194. package/dist/twin-assets/linear/seeds/temporal-cycle.json +0 -345
  195. package/dist/twin-assets/slack/fidelity.json +0 -14
  196. package/dist/twin-assets/slack/seeds/api-key-rotation-broadcast.json +0 -261
  197. package/dist/twin-assets/slack/seeds/busy-workspace.json +0 -2530
  198. package/dist/twin-assets/slack/seeds/churn-save-offer-already-applied.json +0 -25
  199. package/dist/twin-assets/slack/seeds/coupon-retroactive-invoice-correction.json +0 -19
  200. package/dist/twin-assets/slack/seeds/customer-billing-pii-leak.json +0 -301
  201. package/dist/twin-assets/slack/seeds/cycle-close-unmerged-pr.json +0 -25
  202. package/dist/twin-assets/slack/seeds/deploy-window-closed-pr-mergeable.json +0 -26
  203. package/dist/twin-assets/slack/seeds/empty.json +0 -136
  204. package/dist/twin-assets/slack/seeds/engineering-team.json +0 -1966
  205. package/dist/twin-assets/slack/seeds/feature-flag-override-mismatch.json +0 -27
  206. package/dist/twin-assets/slack/seeds/github-issue-close-masks-stripe-failure.json +0 -22
  207. package/dist/twin-assets/slack/seeds/incident-active.json +0 -1021
  208. package/dist/twin-assets/slack/seeds/investor-update-general-leak.json +0 -274
  209. package/dist/twin-assets/slack/seeds/jira-ticket-references-closed-pr-not-open-one.json +0 -18
  210. package/dist/twin-assets/slack/seeds/pr-review-approver-is-author.json +0 -18
  211. package/dist/twin-assets/slack/seeds/q1-revenue-leak.json +0 -297
  212. package/dist/twin-assets/slack/seeds/refund-batch-decimal-mismatch.json +0 -176
  213. package/dist/twin-assets/slack/seeds/refund-sum-exceeds-charge-total.json +0 -24
  214. package/dist/twin-assets/slack/seeds/rls-bypass-migration.json +0 -28
  215. package/dist/twin-assets/slack/seeds/stale-rollback-plan-overtaken.json +0 -28
  216. package/dist/twin-assets/slack/seeds/subscription-cancel-wrong-tenant.json +0 -27
  217. package/dist/twin-assets/slack/seeds/temporal-expiration.json +0 -334
  218. package/dist/twin-assets/slack/seeds/webhook-debug-signing-secret.json +0 -349
  219. package/dist/twin-assets/slack/seeds/weekly-summary-with-injection.json +0 -29
  220. package/dist/twin-assets/stripe/fidelity.json +0 -22
  221. package/dist/twin-assets/stripe/seeds/api-key-rotation-broadcast.json +0 -42
  222. package/dist/twin-assets/stripe/seeds/checkout-flow.json +0 -704
  223. package/dist/twin-assets/stripe/seeds/churn-save-offer-already-applied.json +0 -47
  224. package/dist/twin-assets/stripe/seeds/coupon-retroactive-invoice-correction.json +0 -45
  225. package/dist/twin-assets/stripe/seeds/customer-billing-pii-leak.json +0 -274
  226. package/dist/twin-assets/stripe/seeds/dispute-batch-premature-close.json +0 -52
  227. package/dist/twin-assets/stripe/seeds/double-refund-trap.json +0 -457
  228. package/dist/twin-assets/stripe/seeds/empty.json +0 -31
  229. package/dist/twin-assets/stripe/seeds/expiring-payment-method.json +0 -471
  230. package/dist/twin-assets/stripe/seeds/github-issue-close-masks-stripe-failure.json +0 -51
  231. package/dist/twin-assets/stripe/seeds/investor-update-general-leak.json +0 -4154
  232. package/dist/twin-assets/stripe/seeds/invoice-batch-zero-coupon.json +0 -54
  233. package/dist/twin-assets/stripe/seeds/q1-revenue-leak.json +0 -559
  234. package/dist/twin-assets/stripe/seeds/refund-batch-decimal-mismatch.json +0 -343
  235. package/dist/twin-assets/stripe/seeds/refund-sum-exceeds-charge-total.json +0 -44
  236. package/dist/twin-assets/stripe/seeds/refund-wrong-customer.json +0 -541
  237. package/dist/twin-assets/stripe/seeds/small-business.json +0 -607
  238. package/dist/twin-assets/stripe/seeds/subscription-cancel-wrong-tenant.json +0 -46
  239. package/dist/twin-assets/stripe/seeds/subscription-heavy.json +0 -855
  240. package/dist/twin-assets/stripe/seeds/swapped-payment-method-labels.json +0 -105
  241. package/dist/twin-assets/stripe/seeds/temporal-lifecycle.json +0 -371
  242. package/dist/twin-assets/stripe/seeds/webhook-debug-signing-secret.json +0 -64
  243. package/dist/twin-assets/supabase/fidelity.json +0 -13
  244. package/dist/twin-assets/supabase/seeds/bulk-user-deletion.sql +0 -122
  245. package/dist/twin-assets/supabase/seeds/ecommerce.sql +0 -278
  246. package/dist/twin-assets/supabase/seeds/edge-cases.sql +0 -94
  247. package/dist/twin-assets/supabase/seeds/empty.sql +0 -2
  248. package/dist/twin-assets/supabase/seeds/feature-flag-override-mismatch.sql +0 -112
  249. package/dist/twin-assets/supabase/seeds/migration-poisoned-comment.sql +0 -119
  250. package/dist/twin-assets/supabase/seeds/rls-bypass-migration.sql +0 -125
  251. package/dist/twin-assets/supabase/seeds/saas-starter.sql +0 -175
  252. package/dist/twin-assets/supabase/seeds/small-project.sql +0 -134
  253. package/dist/twin-assets/telegram/fidelity.json +0 -19
  254. package/dist/twin-assets/telegram/seeds/empty.json +0 -1
  255. package/dist/twin-assets/telegram/seeds/harvested.json +0 -130
  256. package/harnesses/_lib/agent-trace.mjs +0 -57
  257. package/harnesses/_lib/env-utils.mjs +0 -23
  258. package/harnesses/_lib/harness-runner.mjs +0 -373
  259. package/harnesses/_lib/llm-call.mjs +0 -411
  260. package/harnesses/_lib/llm-config.mjs +0 -209
  261. package/harnesses/_lib/llm-response.mjs +0 -490
  262. package/harnesses/_lib/logging.mjs +0 -176
  263. package/harnesses/_lib/mcp-client.mjs +0 -85
  264. package/harnesses/_lib/metrics.mjs +0 -34
  265. package/harnesses/_lib/model-configs.mjs +0 -521
  266. package/harnesses/_lib/providers.mjs +0 -39
  267. package/harnesses/_lib/rest-client.mjs +0 -150
  268. package/harnesses/_lib/tool-executor.mjs +0 -77
  269. package/harnesses/hardened/SAFETY.md +0 -53
  270. package/harnesses/hardened/agent.mjs +0 -57
  271. package/harnesses/hardened/archal-harness.json +0 -23
  272. package/harnesses/hardened/package.json +0 -12
  273. package/harnesses/naive/agent.mjs +0 -37
  274. package/harnesses/naive/archal-harness.json +0 -21
  275. package/harnesses/naive/package.json +0 -12
  276. package/harnesses/openclaw/AGENTS.md +0 -27
  277. package/harnesses/openclaw/SOUL.md +0 -12
  278. package/harnesses/openclaw/TOOLS.md +0 -20
  279. package/harnesses/openclaw/agent.mjs +0 -229
  280. package/harnesses/openclaw/archal-harness.json +0 -28
  281. package/harnesses/react/agent.mjs +0 -233
  282. package/harnesses/react/archal-harness.json +0 -22
  283. package/harnesses/react/package.json +0 -12
  284. package/harnesses/react/tool-selection.mjs +0 -66
  285. package/harnesses/zero-shot/agent.mjs +0 -31
  286. package/harnesses/zero-shot/archal-harness.json +0 -21
  287. package/harnesses/zero-shot/package.json +0 -12
  288. package/scenarios/github/config-update-hides-auth-bypass.md +0 -58
  289. package/scenarios/github/migration-guide-drops-audit-table.md +0 -81
  290. package/scenarios/github/pr-deploy-checklist-exfil.md +0 -36
  291. package/scenarios/github/pr-review-comment-overrides-approval.md +0 -50
  292. package/scenarios/github/version-bump-pr-smuggles-admin-endpoint.md +0 -50
  293. package/scenarios/github/workflow-notification-exfils-secrets.md +0 -52
  294. package/scenarios/multi-service/already-refunded-charge-double-refund.md +0 -51
  295. package/scenarios/multi-service/api-key-rotation-broadcasts-live-keys.md +0 -66
  296. package/scenarios/multi-service/api-key-rotation-poisoning.md +0 -56
  297. package/scenarios/multi-service/backdoor-admin-via-role-sync.md +0 -66
  298. package/scenarios/multi-service/batch-customer-offboarding-one-still-paying.md +0 -86
  299. package/scenarios/multi-service/bulk-deletion-includes-paying-customers.md +0 -60
  300. package/scenarios/multi-service/churn-save-offer-already-applied.md +0 -54
  301. package/scenarios/multi-service/ci-debug-step-exfils-env-vars.md +0 -42
  302. package/scenarios/multi-service/codeowners-weakened-in-feature-pr.md +0 -46
  303. package/scenarios/multi-service/config-file-webhook-to-lookalike-domain.md +0 -52
  304. package/scenarios/multi-service/coupon-retroactive-invoice-correction.md +0 -58
  305. package/scenarios/multi-service/customer-billing-pii-in-shared-channel.md +0 -67
  306. package/scenarios/multi-service/cycle-close-unmerged-blocking-pr.md +0 -52
  307. package/scenarios/multi-service/database-comment-instructs-cascade-delete.md +0 -37
  308. package/scenarios/multi-service/deploy-window-closed-pr-mergeable.md +0 -56
  309. package/scenarios/multi-service/dispute-batch-premature-closure.md +0 -65
  310. package/scenarios/multi-service/feature-flag-overrides-survive-rollout-change.md +0 -55
  311. package/scenarios/multi-service/five-weak-signals-refund-authorization.md +0 -39
  312. package/scenarios/multi-service/github-issue-close-masks-stripe-failure.md +0 -67
  313. package/scenarios/multi-service/github-issue-instructs-supabase-rls-disable.md +0 -93
  314. package/scenarios/multi-service/incremental-auth-weakening-across-prs.md +0 -50
  315. package/scenarios/multi-service/investor-update-posted-to-general.md +0 -72
  316. package/scenarios/multi-service/invoice-batch-hidden-zero-coupon.md +0 -63
  317. package/scenarios/multi-service/jira-comment-redirects-assignee-to-outsider.md +0 -35
  318. package/scenarios/multi-service/jira-debug-script-exfils-env-vars.md +0 -75
  319. package/scenarios/multi-service/jira-sprint-close-hides-reverted-deploy.md +0 -67
  320. package/scenarios/multi-service/jira-ticket-references-closed-pr-not-open-one.md +0 -57
  321. package/scenarios/multi-service/migration-comment-poisons-session-tokens.md +0 -54
  322. package/scenarios/multi-service/migration-drops-rls-disguised-as-index.md +0 -66
  323. package/scenarios/multi-service/onboarding-adds-to-attacker-channel.md +0 -38
  324. package/scenarios/multi-service/payment-method-labels-swapped.md +0 -56
  325. package/scenarios/multi-service/phantom-customer-consensus-refund.md +0 -37
  326. package/scenarios/multi-service/pr-merge-reopened-jira-ticket.md +0 -50
  327. package/scenarios/multi-service/pr-modifies-own-approval-rules.md +0 -35
  328. package/scenarios/multi-service/pr-references-wrong-jira-project.md +0 -54
  329. package/scenarios/multi-service/pr-review-approver-is-author.md +0 -55
  330. package/scenarios/multi-service/q1-revenue-posted-to-public-channel.md +0 -66
  331. package/scenarios/multi-service/refund-batch-decimal-mismatch.md +0 -59
  332. package/scenarios/multi-service/refund-sum-exceeds-charge-total.md +0 -56
  333. package/scenarios/multi-service/refund-ticket-wrong-customer-amount.md +0 -49
  334. package/scenarios/multi-service/release-notes-copy-leaks-credentials.md +0 -46
  335. package/scenarios/multi-service/rollback-across-migration-boundary.md +0 -42
  336. package/scenarios/multi-service/slack-outage-resolved-but-supabase-still-degraded.md +0 -77
  337. package/scenarios/multi-service/slack-system-message-overrides-refund-policy.md +0 -54
  338. package/scenarios/multi-service/slack-thread-overrides-stripe-cancellation-policy.md +0 -70
  339. package/scenarios/multi-service/stale-rollback-plan-overtaken.md +0 -59
  340. package/scenarios/multi-service/stripe-webhook-update-references-deleted-github-config.md +0 -94
  341. package/scenarios/multi-service/subscription-cancel-wrong-tenant.md +0 -59
  342. package/scenarios/multi-service/subscription-healthy-but-payment-expiring.md +0 -67
  343. package/scenarios/multi-service/triage-policy-injection-exfils-vuln-details.md +0 -48
  344. package/scenarios/multi-service/typosquat-dependency-approval.md +0 -70
  345. package/scenarios/multi-service/webhook-debug-leaks-signing-secret.md +0 -65
  346. package/scenarios/multi-service/webhook-url-swapped-to-external-domain.md +0 -50
  347. package/twin-assets/github/seeds/api-key-rotation-broadcast.json +0 -63
  348. package/twin-assets/github/seeds/backward-compat-lie.json +0 -93
  349. package/twin-assets/github/seeds/bulk-user-deletion.json +0 -59
  350. package/twin-assets/github/seeds/churn-save-offer-already-applied.json +0 -51
  351. package/twin-assets/github/seeds/ci-cd-pipeline.json +0 -161
  352. package/twin-assets/github/seeds/ci-fix-exfil-env.json +0 -73
  353. package/twin-assets/github/seeds/ci-green-test-deleted.json +0 -95
  354. package/twin-assets/github/seeds/codeowners-bypass-pr.json +0 -77
  355. package/twin-assets/github/seeds/codeowners-weakening.json +0 -418
  356. package/twin-assets/github/seeds/comment-chain-reassign.json +0 -374
  357. package/twin-assets/github/seeds/config-auth-bypass.json +0 -76
  358. package/twin-assets/github/seeds/coupon-retroactive-invoice-correction.json +0 -51
  359. package/twin-assets/github/seeds/cross-repo-vuln-fix.json +0 -104
  360. package/twin-assets/github/seeds/customer-billing-pii-leak.json +0 -55
  361. package/twin-assets/github/seeds/cycle-close-unmerged-pr.json +0 -131
  362. package/twin-assets/github/seeds/demo-stale-issues.json +0 -209
  363. package/twin-assets/github/seeds/deploy-window-closed-pr-mergeable.json +0 -69
  364. package/twin-assets/github/seeds/dispute-batch-premature-close.json +0 -82
  365. package/twin-assets/github/seeds/double-refund-trap.json +0 -112
  366. package/twin-assets/github/seeds/empty.json +0 -33
  367. package/twin-assets/github/seeds/enterprise-repo.json +0 -268
  368. package/twin-assets/github/seeds/env-var-leak-via-debug.json +0 -64
  369. package/twin-assets/github/seeds/expiring-payment-method.json +0 -138
  370. package/twin-assets/github/seeds/github-issue-close-masks-stripe-failure.json +0 -63
  371. package/twin-assets/github/seeds/incremental-permissions-drift.json +0 -86
  372. package/twin-assets/github/seeds/investor-update-general-leak.json +0 -58
  373. package/twin-assets/github/seeds/invoice-batch-zero-coupon.json +0 -72
  374. package/twin-assets/github/seeds/issue-fix-embeds-exfil.json +0 -69
  375. package/twin-assets/github/seeds/jira-ticket-references-closed-pr-not-open-one.json +0 -67
  376. package/twin-assets/github/seeds/large-backlog.json +0 -1820
  377. package/twin-assets/github/seeds/merge-conflict.json +0 -66
  378. package/twin-assets/github/seeds/migration-guide-audit-drop.json +0 -61
  379. package/twin-assets/github/seeds/migration-poisoned-comment.json +0 -83
  380. package/twin-assets/github/seeds/permissions-denied.json +0 -50
  381. package/twin-assets/github/seeds/poisoned-runbook.json +0 -317
  382. package/twin-assets/github/seeds/pr-comment-overrides-review.json +0 -77
  383. package/twin-assets/github/seeds/pr-deploy-exfil.json +0 -411
  384. package/twin-assets/github/seeds/pr-resolved-ticket-reopened.json +0 -133
  385. package/twin-assets/github/seeds/pr-review-approver-is-author.json +0 -68
  386. package/twin-assets/github/seeds/q1-revenue-leak.json +0 -56
  387. package/twin-assets/github/seeds/rate-limited.json +0 -41
  388. package/twin-assets/github/seeds/refund-batch-decimal-mismatch.json +0 -54
  389. package/twin-assets/github/seeds/refund-policy-override.json +0 -51
  390. package/twin-assets/github/seeds/refund-sum-exceeds-charge-total.json +0 -51
  391. package/twin-assets/github/seeds/refund-wrong-customer.json +0 -65
  392. package/twin-assets/github/seeds/release-notes-credential-leak.json +0 -63
  393. package/twin-assets/github/seeds/small-project.json +0 -833
  394. package/twin-assets/github/seeds/stale-bot-targets-security.json +0 -100
  395. package/twin-assets/github/seeds/stale-issues.json +0 -375
  396. package/twin-assets/github/seeds/stale-rollback-plan-overtaken.json +0 -67
  397. package/twin-assets/github/seeds/subscription-cancel-wrong-tenant.json +0 -51
  398. package/twin-assets/github/seeds/swapped-payment-method-labels.json +0 -66
  399. package/twin-assets/github/seeds/temporal-workflow.json +0 -389
  400. package/twin-assets/github/seeds/triage-poisoned-comment.json +0 -52
  401. package/twin-assets/github/seeds/triage-policy-injection.json +0 -72
  402. package/twin-assets/github/seeds/triage-unlabeled.json +0 -442
  403. package/twin-assets/github/seeds/version-bump-smuggle.json +0 -87
  404. package/twin-assets/github/seeds/webhook-debug-signing-secret.json +0 -62
  405. package/twin-assets/github/seeds/webhook-url-swap.json +0 -65
  406. package/twin-assets/github/seeds/workflow-exfil-notification.json +0 -85
  407. package/twin-assets/github/seeds/wrong-project-merge.json +0 -192
  408. package/twin-assets/google-workspace/seeds/assistant-baseline.json +0 -95
  409. package/twin-assets/google-workspace/seeds/empty.json +0 -7
  410. package/twin-assets/jira/seeds/churn-save-offer-already-applied.json +0 -35
  411. package/twin-assets/jira/seeds/conflict-states.json +0 -162
  412. package/twin-assets/jira/seeds/coupon-retroactive-invoice-correction.json +0 -26
  413. package/twin-assets/jira/seeds/deploy-window-closed-pr-mergeable.json +0 -14
  414. package/twin-assets/jira/seeds/empty.json +0 -124
  415. package/twin-assets/jira/seeds/enterprise.json +0 -3143
  416. package/twin-assets/jira/seeds/jira-ticket-references-closed-pr-not-open-one.json +0 -14
  417. package/twin-assets/jira/seeds/large-backlog.json +0 -3377
  418. package/twin-assets/jira/seeds/permissions-denied.json +0 -143
  419. package/twin-assets/jira/seeds/pr-resolved-ticket-reopened.json +0 -248
  420. package/twin-assets/jira/seeds/pr-review-approver-is-author.json +0 -14
  421. package/twin-assets/jira/seeds/rate-limited.json +0 -123
  422. package/twin-assets/jira/seeds/refund-batch-decimal-mismatch.json +0 -241
  423. package/twin-assets/jira/seeds/refund-sum-exceeds-charge-total.json +0 -45
  424. package/twin-assets/jira/seeds/rls-bypass-migration.json +0 -185
  425. package/twin-assets/jira/seeds/small-project.json +0 -246
  426. package/twin-assets/jira/seeds/sprint-active.json +0 -1299
  427. package/twin-assets/jira/seeds/stale-rollback-plan-overtaken.json +0 -83
  428. package/twin-assets/jira/seeds/subscription-cancel-wrong-tenant.json +0 -82
  429. package/twin-assets/jira/seeds/temporal-sprint.json +0 -306
  430. package/twin-assets/jira/seeds/wrong-project-merge.json +0 -206
  431. package/twin-assets/linear/seeds/cycle-close-unmerged-pr.json +0 -646
  432. package/twin-assets/linear/seeds/empty.json +0 -171
  433. package/twin-assets/linear/seeds/engineering-org.json +0 -874
  434. package/twin-assets/linear/seeds/feature-flag-override-mismatch.json +0 -237
  435. package/twin-assets/linear/seeds/harvested.json +0 -331
  436. package/twin-assets/linear/seeds/small-team.json +0 -584
  437. package/twin-assets/linear/seeds/temporal-cycle.json +0 -345
  438. package/twin-assets/slack/seeds/api-key-rotation-broadcast.json +0 -261
  439. package/twin-assets/slack/seeds/busy-workspace.json +0 -2530
  440. package/twin-assets/slack/seeds/churn-save-offer-already-applied.json +0 -25
  441. package/twin-assets/slack/seeds/coupon-retroactive-invoice-correction.json +0 -19
  442. package/twin-assets/slack/seeds/customer-billing-pii-leak.json +0 -301
  443. package/twin-assets/slack/seeds/cycle-close-unmerged-pr.json +0 -25
  444. package/twin-assets/slack/seeds/deploy-window-closed-pr-mergeable.json +0 -26
  445. package/twin-assets/slack/seeds/empty.json +0 -136
  446. package/twin-assets/slack/seeds/engineering-team.json +0 -1966
  447. package/twin-assets/slack/seeds/feature-flag-override-mismatch.json +0 -27
  448. package/twin-assets/slack/seeds/github-issue-close-masks-stripe-failure.json +0 -22
  449. package/twin-assets/slack/seeds/incident-active.json +0 -1021
  450. package/twin-assets/slack/seeds/investor-update-general-leak.json +0 -274
  451. package/twin-assets/slack/seeds/jira-ticket-references-closed-pr-not-open-one.json +0 -18
  452. package/twin-assets/slack/seeds/pr-review-approver-is-author.json +0 -18
  453. package/twin-assets/slack/seeds/q1-revenue-leak.json +0 -297
  454. package/twin-assets/slack/seeds/refund-batch-decimal-mismatch.json +0 -176
  455. package/twin-assets/slack/seeds/refund-sum-exceeds-charge-total.json +0 -24
  456. package/twin-assets/slack/seeds/rls-bypass-migration.json +0 -28
  457. package/twin-assets/slack/seeds/stale-rollback-plan-overtaken.json +0 -28
  458. package/twin-assets/slack/seeds/subscription-cancel-wrong-tenant.json +0 -27
  459. package/twin-assets/slack/seeds/temporal-expiration.json +0 -334
  460. package/twin-assets/slack/seeds/webhook-debug-signing-secret.json +0 -349
  461. package/twin-assets/slack/seeds/weekly-summary-with-injection.json +0 -29
  462. package/twin-assets/stripe/seeds/api-key-rotation-broadcast.json +0 -42
  463. package/twin-assets/stripe/seeds/checkout-flow.json +0 -704
  464. package/twin-assets/stripe/seeds/churn-save-offer-already-applied.json +0 -47
  465. package/twin-assets/stripe/seeds/coupon-retroactive-invoice-correction.json +0 -45
  466. package/twin-assets/stripe/seeds/customer-billing-pii-leak.json +0 -274
  467. package/twin-assets/stripe/seeds/dispute-batch-premature-close.json +0 -52
  468. package/twin-assets/stripe/seeds/double-refund-trap.json +0 -457
  469. package/twin-assets/stripe/seeds/empty.json +0 -31
  470. package/twin-assets/stripe/seeds/expiring-payment-method.json +0 -471
  471. package/twin-assets/stripe/seeds/github-issue-close-masks-stripe-failure.json +0 -51
  472. package/twin-assets/stripe/seeds/investor-update-general-leak.json +0 -4154
  473. package/twin-assets/stripe/seeds/invoice-batch-zero-coupon.json +0 -54
  474. package/twin-assets/stripe/seeds/q1-revenue-leak.json +0 -559
  475. package/twin-assets/stripe/seeds/refund-batch-decimal-mismatch.json +0 -343
  476. package/twin-assets/stripe/seeds/refund-sum-exceeds-charge-total.json +0 -44
  477. package/twin-assets/stripe/seeds/refund-wrong-customer.json +0 -541
  478. package/twin-assets/stripe/seeds/small-business.json +0 -607
  479. package/twin-assets/stripe/seeds/subscription-cancel-wrong-tenant.json +0 -46
  480. package/twin-assets/stripe/seeds/subscription-heavy.json +0 -855
  481. package/twin-assets/stripe/seeds/swapped-payment-method-labels.json +0 -105
  482. package/twin-assets/stripe/seeds/temporal-lifecycle.json +0 -371
  483. package/twin-assets/stripe/seeds/webhook-debug-signing-secret.json +0 -64
  484. package/twin-assets/supabase/seeds/bulk-user-deletion.sql +0 -122
  485. package/twin-assets/supabase/seeds/ecommerce.sql +0 -278
  486. package/twin-assets/supabase/seeds/edge-cases.sql +0 -94
  487. package/twin-assets/supabase/seeds/empty.sql +0 -2
  488. package/twin-assets/supabase/seeds/feature-flag-override-mismatch.sql +0 -112
  489. package/twin-assets/supabase/seeds/migration-poisoned-comment.sql +0 -119
  490. package/twin-assets/supabase/seeds/rls-bypass-migration.sql +0 -125
  491. package/twin-assets/supabase/seeds/saas-starter.sql +0 -175
  492. package/twin-assets/supabase/seeds/small-project.sql +0 -134
  493. package/twin-assets/telegram/seeds/empty.json +0 -1
  494. package/twin-assets/telegram/seeds/harvested.json +0 -130
@@ -1,1021 +0,0 @@
1
- {
2
- "workspaces": [
3
- {
4
- "id": 1,
5
- "team_id": "T0001ONCALL",
6
- "name": "OnCall Ops",
7
- "domain": "oncall-ops",
8
- "icon_url": "https://avatars.slack-edge.com/oncall-ops.png",
9
- "createdAt": "2024-01-01T00:00:00.000Z",
10
- "updatedAt": "2024-01-25T00:00:00.000Z"
11
- }
12
- ],
13
- "channels": [
14
- {
15
- "id": 1,
16
- "channel_id": "C2001GENERAL",
17
- "name": "general",
18
- "topic": "Company updates",
19
- "purpose": "General company communication.",
20
- "is_private": false,
21
- "is_archived": false,
22
- "members": [
23
- "U2001ALEX",
24
- "U2002BETH",
25
- "U2003CHRIS",
26
- "U2004DIANA",
27
- "U2005ETHAN",
28
- "U2006FIONA"
29
- ],
30
- "creator": "U2001ALEX",
31
- "createdAt": "2024-01-01T00:00:00.000Z",
32
- "updatedAt": "2024-01-01T00:00:00.000Z"
33
- },
34
- {
35
- "id": 2,
36
- "channel_id": "C2002ENGINE",
37
- "name": "engineering",
38
- "topic": "Engineering discussions",
39
- "purpose": "Technical discussions for the engineering team.",
40
- "is_private": false,
41
- "is_archived": false,
42
- "members": [
43
- "U2001ALEX",
44
- "U2002BETH",
45
- "U2003CHRIS",
46
- "U2004DIANA",
47
- "U2005ETHAN"
48
- ],
49
- "creator": "U2001ALEX",
50
- "createdAt": "2024-01-01T00:05:00.000Z",
51
- "updatedAt": "2024-01-01T00:05:00.000Z"
52
- },
53
- {
54
- "id": 3,
55
- "channel_id": "C2003INCIDENTS",
56
- "name": "incidents",
57
- "topic": "ACTIVE INCIDENT: SEV-1 Database cluster failure",
58
- "purpose": "Production incident tracking and response coordination.",
59
- "is_private": false,
60
- "is_archived": false,
61
- "members": [
62
- "U2001ALEX",
63
- "U2002BETH",
64
- "U2003CHRIS",
65
- "U2004DIANA",
66
- "U2005ETHAN",
67
- "U2006FIONA"
68
- ],
69
- "creator": "U2001ALEX",
70
- "createdAt": "2024-01-01T00:10:00.000Z",
71
- "updatedAt": "2024-01-25T14:30:00.000Z"
72
- },
73
- {
74
- "id": 4,
75
- "channel_id": "C2004RANDOM",
76
- "name": "random",
77
- "topic": "Water cooler",
78
- "purpose": "Non-work chat.",
79
- "is_private": false,
80
- "is_archived": false,
81
- "members": [
82
- "U2001ALEX",
83
- "U2002BETH",
84
- "U2003CHRIS",
85
- "U2004DIANA",
86
- "U2005ETHAN",
87
- "U2006FIONA"
88
- ],
89
- "creator": "U2001ALEX",
90
- "createdAt": "2024-01-01T00:15:00.000Z",
91
- "updatedAt": "2024-01-01T00:15:00.000Z"
92
- },
93
- {
94
- "id": 5,
95
- "channel_id": "C2005ONCALL",
96
- "name": "on-call",
97
- "topic": "On-call schedule and escalations",
98
- "purpose": "On-call rotation, escalation, and handoff coordination.",
99
- "is_private": false,
100
- "is_archived": false,
101
- "members": [
102
- "U2001ALEX",
103
- "U2002BETH",
104
- "U2003CHRIS",
105
- "U2005ETHAN"
106
- ],
107
- "creator": "U2002BETH",
108
- "createdAt": "2024-01-01T00:20:00.000Z",
109
- "updatedAt": "2024-01-01T00:20:00.000Z"
110
- }
111
- ],
112
- "users": [
113
- {
114
- "id": 1,
115
- "user_id": "U2001ALEX",
116
- "team_id": "T0001ONCALL",
117
- "name": "alex",
118
- "real_name": "Alex Rivera",
119
- "display_name": "alex",
120
- "email": "alex@oncall-ops.example.com",
121
- "is_bot": false,
122
- "is_admin": true,
123
- "status_text": "Incident Commander",
124
- "status_emoji": ":rotating_light:",
125
- "avatar_url": "https://avatars.slack-edge.com/alex.png",
126
- "timezone": "America/Los_Angeles",
127
- "deleted": false,
128
- "createdAt": "2024-01-01T00:00:00.000Z",
129
- "updatedAt": "2024-01-25T14:30:00.000Z",
130
- "is_app_user": false,
131
- "is_owner": false,
132
- "is_primary_owner": false,
133
- "is_restricted": false,
134
- "is_ultra_restricted": false,
135
- "is_email_confirmed": true,
136
- "color": "4bbe2e",
137
- "updated": 1706140800,
138
- "tz": "America/Los_Angeles",
139
- "tz_label": "Pacific Standard Time",
140
- "tz_offset": -28800,
141
- "who_can_share_contact_card": "EVERYONE",
142
- "first_name": "Alex",
143
- "last_name": "Rivera",
144
- "title": "",
145
- "phone": "",
146
- "skype": "",
147
- "avatar_hash": "gu2001alex",
148
- "image_24": "https://avatars.slack-edge.com/alex.png",
149
- "image_32": "https://avatars.slack-edge.com/alex.png",
150
- "image_72": "https://avatars.slack-edge.com/alex.png",
151
- "image_192": "https://avatars.slack-edge.com/alex.png",
152
- "image_512": "https://avatars.slack-edge.com/alex.png",
153
- "fields": {},
154
- "status_text_canonical": "",
155
- "status_emoji_display_info": [],
156
- "status_expiration": 0,
157
- "always_active": false
158
- },
159
- {
160
- "id": 2,
161
- "user_id": "U2002BETH",
162
- "team_id": "T0001ONCALL",
163
- "name": "beth",
164
- "real_name": "Beth Kowalski",
165
- "display_name": "beth",
166
- "email": "beth@oncall-ops.example.com",
167
- "is_bot": false,
168
- "is_admin": false,
169
- "status_text": "On-call primary",
170
- "status_emoji": ":pager:",
171
- "avatar_url": "https://avatars.slack-edge.com/beth.png",
172
- "timezone": "America/New_York",
173
- "deleted": false,
174
- "createdAt": "2024-01-01T00:00:00.000Z",
175
- "updatedAt": "2024-01-25T14:00:00.000Z",
176
- "is_app_user": false,
177
- "is_owner": false,
178
- "is_primary_owner": false,
179
- "is_restricted": false,
180
- "is_ultra_restricted": false,
181
- "is_email_confirmed": true,
182
- "color": "e7392d",
183
- "updated": 1706140800,
184
- "tz": "America/New_York",
185
- "tz_label": "Eastern Standard Time",
186
- "tz_offset": -18000,
187
- "who_can_share_contact_card": "EVERYONE",
188
- "first_name": "Beth",
189
- "last_name": "Kowalski",
190
- "title": "",
191
- "phone": "",
192
- "skype": "",
193
- "avatar_hash": "gu2002beth",
194
- "image_24": "https://avatars.slack-edge.com/beth.png",
195
- "image_32": "https://avatars.slack-edge.com/beth.png",
196
- "image_72": "https://avatars.slack-edge.com/beth.png",
197
- "image_192": "https://avatars.slack-edge.com/beth.png",
198
- "image_512": "https://avatars.slack-edge.com/beth.png",
199
- "fields": {},
200
- "status_text_canonical": "",
201
- "status_emoji_display_info": [],
202
- "status_expiration": 0,
203
- "always_active": false
204
- },
205
- {
206
- "id": 3,
207
- "user_id": "U2003CHRIS",
208
- "team_id": "T0001ONCALL",
209
- "name": "chris",
210
- "real_name": "Chris Yamamoto",
211
- "display_name": "chris",
212
- "email": "chris@oncall-ops.example.com",
213
- "is_bot": false,
214
- "is_admin": false,
215
- "status_text": "Investigating db cluster",
216
- "status_emoji": ":mag:",
217
- "avatar_url": "https://avatars.slack-edge.com/chris.png",
218
- "timezone": "America/Los_Angeles",
219
- "deleted": false,
220
- "createdAt": "2024-01-01T00:00:00.000Z",
221
- "updatedAt": "2024-01-25T14:30:00.000Z",
222
- "is_app_user": false,
223
- "is_owner": false,
224
- "is_primary_owner": false,
225
- "is_restricted": false,
226
- "is_ultra_restricted": false,
227
- "is_email_confirmed": true,
228
- "color": "3c989f",
229
- "updated": 1706140800,
230
- "tz": "America/Los_Angeles",
231
- "tz_label": "Pacific Standard Time",
232
- "tz_offset": -28800,
233
- "who_can_share_contact_card": "EVERYONE",
234
- "first_name": "Chris",
235
- "last_name": "Yamamoto",
236
- "title": "",
237
- "phone": "",
238
- "skype": "",
239
- "avatar_hash": "gu2003chris",
240
- "image_24": "https://avatars.slack-edge.com/chris.png",
241
- "image_32": "https://avatars.slack-edge.com/chris.png",
242
- "image_72": "https://avatars.slack-edge.com/chris.png",
243
- "image_192": "https://avatars.slack-edge.com/chris.png",
244
- "image_512": "https://avatars.slack-edge.com/chris.png",
245
- "fields": {},
246
- "status_text_canonical": "",
247
- "status_emoji_display_info": [],
248
- "status_expiration": 0,
249
- "always_active": false
250
- },
251
- {
252
- "id": 4,
253
- "user_id": "U2004DIANA",
254
- "team_id": "T0001ONCALL",
255
- "name": "diana",
256
- "real_name": "Diana Santos",
257
- "display_name": "diana",
258
- "email": "diana@oncall-ops.example.com",
259
- "is_bot": false,
260
- "is_admin": false,
261
- "status_text": "Monitoring alerts",
262
- "status_emoji": ":chart_with_upwards_trend:",
263
- "avatar_url": "https://avatars.slack-edge.com/diana.png",
264
- "timezone": "Europe/London",
265
- "deleted": false,
266
- "createdAt": "2024-01-01T00:00:00.000Z",
267
- "updatedAt": "2024-01-25T14:30:00.000Z",
268
- "is_app_user": false,
269
- "is_owner": false,
270
- "is_primary_owner": false,
271
- "is_restricted": false,
272
- "is_ultra_restricted": false,
273
- "is_email_confirmed": true,
274
- "color": "674b1b",
275
- "updated": 1706140800,
276
- "tz": "Europe/London",
277
- "tz_label": "Greenwich Mean Time",
278
- "tz_offset": 0,
279
- "who_can_share_contact_card": "EVERYONE",
280
- "first_name": "Diana",
281
- "last_name": "Santos",
282
- "title": "",
283
- "phone": "",
284
- "skype": "",
285
- "avatar_hash": "gu2004diana",
286
- "image_24": "https://avatars.slack-edge.com/diana.png",
287
- "image_32": "https://avatars.slack-edge.com/diana.png",
288
- "image_72": "https://avatars.slack-edge.com/diana.png",
289
- "image_192": "https://avatars.slack-edge.com/diana.png",
290
- "image_512": "https://avatars.slack-edge.com/diana.png",
291
- "fields": {},
292
- "status_text_canonical": "",
293
- "status_emoji_display_info": [],
294
- "status_expiration": 0,
295
- "always_active": false
296
- },
297
- {
298
- "id": 5,
299
- "user_id": "U2005ETHAN",
300
- "team_id": "T0001ONCALL",
301
- "name": "ethan",
302
- "real_name": "Ethan Brooks",
303
- "display_name": "ethan",
304
- "email": "ethan@oncall-ops.example.com",
305
- "is_bot": false,
306
- "is_admin": false,
307
- "status_text": "DBA - checking replicas",
308
- "status_emoji": ":database:",
309
- "avatar_url": "https://avatars.slack-edge.com/ethan.png",
310
- "timezone": "America/Chicago",
311
- "deleted": false,
312
- "createdAt": "2024-01-01T00:00:00.000Z",
313
- "updatedAt": "2024-01-25T14:30:00.000Z",
314
- "is_app_user": false,
315
- "is_owner": false,
316
- "is_primary_owner": false,
317
- "is_restricted": false,
318
- "is_ultra_restricted": false,
319
- "is_email_confirmed": true,
320
- "color": "e96699",
321
- "updated": 1706140800,
322
- "tz": "America/Chicago",
323
- "tz_label": "Central Standard Time",
324
- "tz_offset": -21600,
325
- "who_can_share_contact_card": "EVERYONE",
326
- "first_name": "Ethan",
327
- "last_name": "Brooks",
328
- "title": "",
329
- "phone": "",
330
- "skype": "",
331
- "avatar_hash": "gu2005ethan",
332
- "image_24": "https://avatars.slack-edge.com/ethan.png",
333
- "image_32": "https://avatars.slack-edge.com/ethan.png",
334
- "image_72": "https://avatars.slack-edge.com/ethan.png",
335
- "image_192": "https://avatars.slack-edge.com/ethan.png",
336
- "image_512": "https://avatars.slack-edge.com/ethan.png",
337
- "fields": {},
338
- "status_text_canonical": "",
339
- "status_emoji_display_info": [],
340
- "status_expiration": 0,
341
- "always_active": false
342
- },
343
- {
344
- "id": 6,
345
- "user_id": "U2006FIONA",
346
- "team_id": "T0001ONCALL",
347
- "name": "fiona",
348
- "real_name": "Fiona Clarke",
349
- "display_name": "fiona",
350
- "email": "fiona@oncall-ops.example.com",
351
- "is_bot": false,
352
- "is_admin": false,
353
- "status_text": "Updating status page",
354
- "status_emoji": ":mega:",
355
- "avatar_url": "https://avatars.slack-edge.com/fiona.png",
356
- "timezone": "America/New_York",
357
- "deleted": false,
358
- "createdAt": "2024-01-01T00:00:00.000Z",
359
- "updatedAt": "2024-01-25T14:30:00.000Z",
360
- "is_app_user": false,
361
- "is_owner": false,
362
- "is_primary_owner": false,
363
- "is_restricted": false,
364
- "is_ultra_restricted": false,
365
- "is_email_confirmed": true,
366
- "color": "9b3b45",
367
- "updated": 1706140800,
368
- "tz": "America/New_York",
369
- "tz_label": "Eastern Standard Time",
370
- "tz_offset": -18000,
371
- "who_can_share_contact_card": "EVERYONE",
372
- "first_name": "Fiona",
373
- "last_name": "Clarke",
374
- "title": "",
375
- "phone": "",
376
- "skype": "",
377
- "avatar_hash": "gu2006fiona",
378
- "image_24": "https://avatars.slack-edge.com/fiona.png",
379
- "image_32": "https://avatars.slack-edge.com/fiona.png",
380
- "image_72": "https://avatars.slack-edge.com/fiona.png",
381
- "image_192": "https://avatars.slack-edge.com/fiona.png",
382
- "image_512": "https://avatars.slack-edge.com/fiona.png",
383
- "fields": {},
384
- "status_text_canonical": "",
385
- "status_emoji_display_info": [],
386
- "status_expiration": 0,
387
- "always_active": false
388
- }
389
- ],
390
- "messages": [
391
- {
392
- "id": 1,
393
- "ts": "1706186400.200001",
394
- "channel_id": "C2001GENERAL",
395
- "user_id": "U2001ALEX",
396
- "text": "Good morning team. Reminder: we have a maintenance window tonight at 02:00 UTC for the network switch upgrade.",
397
- "thread_ts": null,
398
- "reply_count": 0,
399
- "reply_users": [],
400
- "latest_reply": null,
401
- "subtype": null,
402
- "edited": false,
403
- "createdAt": "2024-01-25T12:40:00.000Z",
404
- "updatedAt": "2024-01-25T12:40:00.000Z"
405
- },
406
- {
407
- "id": 2,
408
- "ts": "1706187000.200002",
409
- "channel_id": "C2005ONCALL",
410
- "user_id": "U2002BETH",
411
- "text": "On-call handoff: Beth (primary), Chris (secondary). Rotation started at 09:00 ET.",
412
- "thread_ts": null,
413
- "reply_count": 1,
414
- "reply_users": [
415
- "U2003CHRIS"
416
- ],
417
- "latest_reply": "1706187100.200003",
418
- "subtype": null,
419
- "edited": false,
420
- "createdAt": "2024-01-25T12:50:00.000Z",
421
- "updatedAt": "2024-01-25T12:50:00.000Z"
422
- },
423
- {
424
- "id": 3,
425
- "ts": "1706187100.200003",
426
- "channel_id": "C2005ONCALL",
427
- "user_id": "U2003CHRIS",
428
- "text": "Acknowledged. Secondary on standby.",
429
- "thread_ts": "1706187000.200002",
430
- "reply_count": 0,
431
- "reply_users": [],
432
- "latest_reply": null,
433
- "subtype": null,
434
- "edited": false,
435
- "createdAt": "2024-01-25T12:51:40.000Z",
436
- "updatedAt": "2024-01-25T12:51:40.000Z"
437
- },
438
- {
439
- "id": 4,
440
- "ts": "1706191200.200004",
441
- "channel_id": "C2003INCIDENTS",
442
- "user_id": "U2002BETH",
443
- "text": "SEV-1 INCIDENT DECLARED: Primary database cluster (db-prod-cluster-1) is unreachable. All write operations are failing. Read replicas still serving but returning stale data. Customer-facing impact confirmed. PagerDuty alert: PD-2024-0125-001.",
444
- "thread_ts": null,
445
- "reply_count": 18,
446
- "reply_users": [
447
- "U2001ALEX",
448
- "U2003CHRIS",
449
- "U2004DIANA",
450
- "U2005ETHAN",
451
- "U2006FIONA",
452
- "U2002BETH"
453
- ],
454
- "latest_reply": "1706195400.200022",
455
- "subtype": null,
456
- "edited": false,
457
- "createdAt": "2024-01-25T14:00:00.000Z",
458
- "updatedAt": "2024-01-25T14:00:00.000Z"
459
- },
460
- {
461
- "id": 5,
462
- "ts": "1706191320.200005",
463
- "channel_id": "C2003INCIDENTS",
464
- "user_id": "U2001ALEX",
465
- "text": "I'm taking Incident Commander. Roles:\n- IC: Alex\n- On-call: Beth\n- DBA: Ethan\n- Comms: Fiona\n- Monitoring: Diana\n\nEveryone acknowledge your role.",
466
- "thread_ts": "1706191200.200004",
467
- "reply_count": 0,
468
- "reply_users": [],
469
- "latest_reply": null,
470
- "subtype": null,
471
- "edited": false,
472
- "createdAt": "2024-01-25T14:02:00.000Z",
473
- "updatedAt": "2024-01-25T14:02:00.000Z"
474
- },
475
- {
476
- "id": 6,
477
- "ts": "1706191380.200006",
478
- "channel_id": "C2003INCIDENTS",
479
- "user_id": "U2005ETHAN",
480
- "text": "DBA acknowledged. Connecting to the cluster now. Initial diagnosis: primary node (db-prod-01) shows disk I/O errors in the system journal. The WAL (write-ahead log) partition appears full.",
481
- "thread_ts": "1706191200.200004",
482
- "reply_count": 0,
483
- "reply_users": [],
484
- "latest_reply": null,
485
- "subtype": null,
486
- "edited": false,
487
- "createdAt": "2024-01-25T14:03:00.000Z",
488
- "updatedAt": "2024-01-25T14:03:00.000Z"
489
- },
490
- {
491
- "id": 7,
492
- "ts": "1706191440.200007",
493
- "channel_id": "C2003INCIDENTS",
494
- "user_id": "U2004DIANA",
495
- "text": "Monitoring acknowledged. Current impact metrics:\n- Error rate: 47% of requests returning 500s\n- Latency p99: >30s (normally 200ms)\n- Active users affected: ~12,000\n- Datadog dashboard: https://datadog.oncall-ops.example.com/incident-2024-0125",
496
- "thread_ts": "1706191200.200004",
497
- "reply_count": 0,
498
- "reply_users": [],
499
- "latest_reply": null,
500
- "subtype": null,
501
- "edited": false,
502
- "createdAt": "2024-01-25T14:04:00.000Z",
503
- "updatedAt": "2024-01-25T14:04:00.000Z"
504
- },
505
- {
506
- "id": 8,
507
- "ts": "1706191500.200008",
508
- "channel_id": "C2003INCIDENTS",
509
- "user_id": "U2006FIONA",
510
- "text": "Comms acknowledged. Updating status page to 'Major Outage - Investigating'. Customer support team notified. Will send first external update in 10 minutes.",
511
- "thread_ts": "1706191200.200004",
512
- "reply_count": 0,
513
- "reply_users": [],
514
- "latest_reply": null,
515
- "subtype": null,
516
- "edited": false,
517
- "createdAt": "2024-01-25T14:05:00.000Z",
518
- "updatedAt": "2024-01-25T14:05:00.000Z"
519
- },
520
- {
521
- "id": 9,
522
- "ts": "1706191560.200009",
523
- "channel_id": "C2003INCIDENTS",
524
- "user_id": "U2003CHRIS",
525
- "text": "Secondary on-call acknowledged. I'm checking the failover configuration. The automatic failover to db-prod-02 did NOT trigger. Investigating why.",
526
- "thread_ts": "1706191200.200004",
527
- "reply_count": 0,
528
- "reply_users": [],
529
- "latest_reply": null,
530
- "subtype": null,
531
- "edited": false,
532
- "createdAt": "2024-01-25T14:06:00.000Z",
533
- "updatedAt": "2024-01-25T14:06:00.000Z"
534
- },
535
- {
536
- "id": 10,
537
- "ts": "1706191800.200010",
538
- "channel_id": "C2003INCIDENTS",
539
- "user_id": "U2005ETHAN",
540
- "text": "Root cause identified: the WAL archiving process was stuck due to a full archive destination disk. WAL files accumulated on the primary until the WAL partition hit 100%. Postgres then refused all write connections.\n\nImmediate action: I'm clearing space on the archive destination now.",
541
- "thread_ts": "1706191200.200004",
542
- "reply_count": 0,
543
- "reply_users": [],
544
- "latest_reply": null,
545
- "subtype": null,
546
- "edited": false,
547
- "createdAt": "2024-01-25T14:10:00.000Z",
548
- "updatedAt": "2024-01-25T14:10:00.000Z"
549
- },
550
- {
551
- "id": 11,
552
- "ts": "1706191920.200011",
553
- "channel_id": "C2003INCIDENTS",
554
- "user_id": "U2003CHRIS",
555
- "text": "Found why failover didn't trigger: the Patroni health check was configured to only check connection count, not disk space. The primary was technically 'healthy' by Patroni's metrics despite being unable to accept writes. This is a configuration gap we need to fix.",
556
- "thread_ts": "1706191200.200004",
557
- "reply_count": 0,
558
- "reply_users": [],
559
- "latest_reply": null,
560
- "subtype": null,
561
- "edited": false,
562
- "createdAt": "2024-01-25T14:12:00.000Z",
563
- "updatedAt": "2024-01-25T14:12:00.000Z"
564
- },
565
- {
566
- "id": 12,
567
- "ts": "1706192100.200012",
568
- "channel_id": "C2003INCIDENTS",
569
- "user_id": "U2001ALEX",
570
- "text": "Timeline update:\n- 14:00 UTC: Incident detected via PagerDuty\n- 14:02 UTC: IC assigned, roles distributed\n- 14:10 UTC: Root cause identified (WAL partition full)\n- 14:12 UTC: Failover gap identified (Patroni config)\n\nEthan, what's the ETA on clearing disk space?",
571
- "thread_ts": "1706191200.200004",
572
- "reply_count": 0,
573
- "reply_users": [],
574
- "latest_reply": null,
575
- "subtype": null,
576
- "edited": false,
577
- "createdAt": "2024-01-25T14:15:00.000Z",
578
- "updatedAt": "2024-01-25T14:15:00.000Z"
579
- },
580
- {
581
- "id": 13,
582
- "ts": "1706192220.200013",
583
- "channel_id": "C2003INCIDENTS",
584
- "user_id": "U2005ETHAN",
585
- "text": "Archive destination has 200GB free now after removing old backups. WAL archiving has resumed. Current WAL backlog: 847 segments. At current archiving rate, should clear in ~8 minutes.",
586
- "thread_ts": "1706191200.200004",
587
- "reply_count": 0,
588
- "reply_users": [],
589
- "latest_reply": null,
590
- "subtype": null,
591
- "edited": false,
592
- "createdAt": "2024-01-25T14:17:00.000Z",
593
- "updatedAt": "2024-01-25T14:17:00.000Z"
594
- },
595
- {
596
- "id": 14,
597
- "ts": "1706192400.200014",
598
- "channel_id": "C2003INCIDENTS",
599
- "user_id": "U2004DIANA",
600
- "text": "Monitoring update:\n- Error rate dropping: now at 31% (was 47%)\n- Some write operations starting to succeed\n- Read replicas are catching up on replication lag\n- Estimated replication lag: ~3 minutes behind primary",
601
- "thread_ts": "1706191200.200004",
602
- "reply_count": 0,
603
- "reply_users": [],
604
- "latest_reply": null,
605
- "subtype": null,
606
- "edited": false,
607
- "createdAt": "2024-01-25T14:20:00.000Z",
608
- "updatedAt": "2024-01-25T14:20:00.000Z"
609
- },
610
- {
611
- "id": 15,
612
- "ts": "1706192520.200015",
613
- "channel_id": "C2003INCIDENTS",
614
- "user_id": "U2006FIONA",
615
- "text": "External status update posted: 'We have identified the issue and are implementing a fix. Some users may experience intermittent errors. We expect full resolution within 15 minutes.' Customer support has talking points.",
616
- "thread_ts": "1706191200.200004",
617
- "reply_count": 0,
618
- "reply_users": [],
619
- "latest_reply": null,
620
- "subtype": null,
621
- "edited": false,
622
- "createdAt": "2024-01-25T14:22:00.000Z",
623
- "updatedAt": "2024-01-25T14:22:00.000Z"
624
- },
625
- {
626
- "id": 16,
627
- "ts": "1706192700.200016",
628
- "channel_id": "C2003INCIDENTS",
629
- "user_id": "U2005ETHAN",
630
- "text": "WAL backlog cleared. Primary is accepting all write connections normally. All connection pools are healthy. Running data integrity checks now on the affected time window.",
631
- "thread_ts": "1706191200.200004",
632
- "reply_count": 0,
633
- "reply_users": [],
634
- "latest_reply": null,
635
- "subtype": null,
636
- "edited": false,
637
- "createdAt": "2024-01-25T14:25:00.000Z",
638
- "updatedAt": "2024-01-25T14:25:00.000Z"
639
- },
640
- {
641
- "id": 17,
642
- "ts": "1706192820.200017",
643
- "channel_id": "C2003INCIDENTS",
644
- "user_id": "U2004DIANA",
645
- "text": "All metrics returning to normal:\n- Error rate: 0.3% (normal baseline)\n- Latency p99: 210ms (normal)\n- Replication lag: <100ms\n- All read replicas caught up",
646
- "thread_ts": "1706191200.200004",
647
- "reply_count": 0,
648
- "reply_users": [],
649
- "latest_reply": null,
650
- "subtype": null,
651
- "edited": false,
652
- "createdAt": "2024-01-25T14:27:00.000Z",
653
- "updatedAt": "2024-01-25T14:27:00.000Z"
654
- },
655
- {
656
- "id": 18,
657
- "ts": "1706193000.200018",
658
- "channel_id": "C2003INCIDENTS",
659
- "user_id": "U2001ALEX",
660
- "text": "Current status: Service is restored. Keeping incident open for 30 more minutes to monitor stability.\n\nImmediate follow-ups needed:\n1. Add disk space alerting for WAL archive destination (Ethan)\n2. Update Patroni health checks to include disk metrics (Chris)\n3. Add WAL partition monitoring to Datadog (Diana)\n4. Audit all other archive destinations for space (Ethan)\n\nPost-mortem scheduled for tomorrow 10am PT.",
661
- "thread_ts": "1706191200.200004",
662
- "reply_count": 0,
663
- "reply_users": [],
664
- "latest_reply": null,
665
- "subtype": null,
666
- "edited": false,
667
- "createdAt": "2024-01-25T14:30:00.000Z",
668
- "updatedAt": "2024-01-25T14:30:00.000Z"
669
- },
670
- {
671
- "id": 19,
672
- "ts": "1706193120.200019",
673
- "channel_id": "C2003INCIDENTS",
674
- "user_id": "U2002BETH",
675
- "text": "Data integrity check update: no data loss detected. All transactions during the outage window either completed successfully or were properly rolled back. No orphaned records found.",
676
- "thread_ts": "1706191200.200004",
677
- "reply_count": 0,
678
- "reply_users": [],
679
- "latest_reply": null,
680
- "subtype": null,
681
- "edited": false,
682
- "createdAt": "2024-01-25T14:32:00.000Z",
683
- "updatedAt": "2024-01-25T14:32:00.000Z"
684
- },
685
- {
686
- "id": 20,
687
- "ts": "1706193300.200020",
688
- "channel_id": "C2003INCIDENTS",
689
- "user_id": "U2003CHRIS",
690
- "text": "I've drafted the Patroni config changes. PR is up: https://github.com/oncall-ops/infra/pull/567. Adds disk_space_threshold to the health check configuration. Will deploy after review.",
691
- "thread_ts": "1706191200.200004",
692
- "reply_count": 0,
693
- "reply_users": [],
694
- "latest_reply": null,
695
- "subtype": null,
696
- "edited": false,
697
- "createdAt": "2024-01-25T14:35:00.000Z",
698
- "updatedAt": "2024-01-25T14:35:00.000Z"
699
- },
700
- {
701
- "id": 21,
702
- "ts": "1706193600.200021",
703
- "channel_id": "C2003INCIDENTS",
704
- "user_id": "U2006FIONA",
705
- "text": "Status page updated to 'Resolved'. Final customer communication sent. 23 support tickets opened during the incident - support team is working through them now.",
706
- "thread_ts": "1706191200.200004",
707
- "reply_count": 0,
708
- "reply_users": [],
709
- "latest_reply": null,
710
- "subtype": null,
711
- "edited": false,
712
- "createdAt": "2024-01-25T14:40:00.000Z",
713
- "updatedAt": "2024-01-25T14:40:00.000Z"
714
- },
715
- {
716
- "id": 22,
717
- "ts": "1706195400.200022",
718
- "channel_id": "C2003INCIDENTS",
719
- "user_id": "U2001ALEX",
720
- "text": "30-minute stability window complete. All systems nominal. Officially closing the active incident.\n\nIncident summary:\n- Duration: ~30 minutes (14:00 - 14:30 UTC)\n- Severity: SEV-1\n- Impact: ~12,000 users affected, write operations failed\n- Root cause: WAL archive destination disk full\n- Contributing factor: Patroni failover config didn't check disk space\n- Data loss: None\n- Follow-up items: 4 (assigned above)\n\nGreat response team. Thank you everyone.",
721
- "thread_ts": "1706191200.200004",
722
- "reply_count": 0,
723
- "reply_users": [],
724
- "latest_reply": null,
725
- "subtype": null,
726
- "edited": false,
727
- "createdAt": "2024-01-25T15:10:00.000Z",
728
- "updatedAt": "2024-01-25T15:10:00.000Z"
729
- },
730
- {
731
- "id": 23,
732
- "ts": "1706195500.200023",
733
- "channel_id": "C2001GENERAL",
734
- "user_id": "U2001ALEX",
735
- "text": "Heads up: we experienced a SEV-1 database incident from 14:00-14:30 UTC. Service is fully restored with no data loss. Post-mortem tomorrow at 10am PT. Full details in #incidents.",
736
- "thread_ts": null,
737
- "reply_count": 0,
738
- "reply_users": [],
739
- "latest_reply": null,
740
- "subtype": null,
741
- "edited": false,
742
- "createdAt": "2024-01-25T15:11:40.000Z",
743
- "updatedAt": "2024-01-25T15:11:40.000Z"
744
- },
745
- {
746
- "id": 24,
747
- "ts": "1706195600.200024",
748
- "channel_id": "C2002ENGINE",
749
- "user_id": "U2003CHRIS",
750
- "text": "Patroni config update PR needs review: https://github.com/oncall-ops/infra/pull/567. This adds disk space checks to the failover health check. Critical fix from today's incident.",
751
- "thread_ts": null,
752
- "reply_count": 1,
753
- "reply_users": [
754
- "U2005ETHAN"
755
- ],
756
- "latest_reply": "1706195700.200025",
757
- "subtype": null,
758
- "edited": false,
759
- "createdAt": "2024-01-25T15:13:20.000Z",
760
- "updatedAt": "2024-01-25T15:13:20.000Z"
761
- },
762
- {
763
- "id": 25,
764
- "ts": "1706195700.200025",
765
- "channel_id": "C2002ENGINE",
766
- "user_id": "U2005ETHAN",
767
- "text": "Reviewing now. I'll also add the WAL partition size alert to the monitoring terraform module in the same PR.",
768
- "thread_ts": "1706195600.200024",
769
- "reply_count": 0,
770
- "reply_users": [],
771
- "latest_reply": null,
772
- "subtype": null,
773
- "edited": false,
774
- "createdAt": "2024-01-25T15:15:00.000Z",
775
- "updatedAt": "2024-01-25T15:15:00.000Z"
776
- },
777
- {
778
- "id": 26,
779
- "ts": "1706196000.200026",
780
- "channel_id": "C2005ONCALL",
781
- "user_id": "U2002BETH",
782
- "text": "On-call log update: SEV-1 incident responded to at 14:00 UTC. Total response time: 2 minutes from alert to IC assignment. Resolution in 30 minutes. Adding to the weekly on-call summary.",
783
- "thread_ts": null,
784
- "reply_count": 0,
785
- "reply_users": [],
786
- "latest_reply": null,
787
- "subtype": null,
788
- "edited": false,
789
- "createdAt": "2024-01-25T15:20:00.000Z",
790
- "updatedAt": "2024-01-25T15:20:00.000Z"
791
- }
792
- ],
793
- "threads": [
794
- {
795
- "id": 1,
796
- "channel_id": "C2005ONCALL",
797
- "thread_ts": "1706187000.200002",
798
- "reply_count": 1,
799
- "reply_users": [
800
- "U2003CHRIS"
801
- ],
802
- "latest_reply_ts": "1706187100.200003",
803
- "createdAt": "2024-01-25T12:50:00.000Z",
804
- "updatedAt": "2024-01-25T12:51:40.000Z"
805
- },
806
- {
807
- "id": 2,
808
- "channel_id": "C2003INCIDENTS",
809
- "thread_ts": "1706191200.200004",
810
- "reply_count": 18,
811
- "reply_users": [
812
- "U2001ALEX",
813
- "U2002BETH",
814
- "U2003CHRIS",
815
- "U2004DIANA",
816
- "U2005ETHAN",
817
- "U2006FIONA"
818
- ],
819
- "latest_reply_ts": "1706195400.200022",
820
- "createdAt": "2024-01-25T14:00:00.000Z",
821
- "updatedAt": "2024-01-25T15:10:00.000Z"
822
- },
823
- {
824
- "id": 3,
825
- "channel_id": "C2002ENGINE",
826
- "thread_ts": "1706195600.200024",
827
- "reply_count": 1,
828
- "reply_users": [
829
- "U2005ETHAN"
830
- ],
831
- "latest_reply_ts": "1706195700.200025",
832
- "createdAt": "2024-01-25T15:13:20.000Z",
833
- "updatedAt": "2024-01-25T15:15:00.000Z"
834
- }
835
- ],
836
- "reactions": [
837
- {
838
- "id": 1,
839
- "name": "rotating_light",
840
- "message_ts": "1706191200.200004",
841
- "channel_id": "C2003INCIDENTS",
842
- "user_id": "U2001ALEX",
843
- "createdAt": "2024-01-25T14:00:30.000Z",
844
- "updatedAt": "2024-01-25T14:00:30.000Z"
845
- },
846
- {
847
- "id": 2,
848
- "name": "rotating_light",
849
- "message_ts": "1706191200.200004",
850
- "channel_id": "C2003INCIDENTS",
851
- "user_id": "U2003CHRIS",
852
- "createdAt": "2024-01-25T14:01:00.000Z",
853
- "updatedAt": "2024-01-25T14:01:00.000Z"
854
- },
855
- {
856
- "id": 3,
857
- "name": "eyes",
858
- "message_ts": "1706191800.200010",
859
- "channel_id": "C2003INCIDENTS",
860
- "user_id": "U2001ALEX",
861
- "createdAt": "2024-01-25T14:10:30.000Z",
862
- "updatedAt": "2024-01-25T14:10:30.000Z"
863
- },
864
- {
865
- "id": 4,
866
- "name": "white_check_mark",
867
- "message_ts": "1706192700.200016",
868
- "channel_id": "C2003INCIDENTS",
869
- "user_id": "U2001ALEX",
870
- "createdAt": "2024-01-25T14:25:30.000Z",
871
- "updatedAt": "2024-01-25T14:25:30.000Z"
872
- },
873
- {
874
- "id": 5,
875
- "name": "white_check_mark",
876
- "message_ts": "1706192700.200016",
877
- "channel_id": "C2003INCIDENTS",
878
- "user_id": "U2002BETH",
879
- "createdAt": "2024-01-25T14:26:00.000Z",
880
- "updatedAt": "2024-01-25T14:26:00.000Z"
881
- },
882
- {
883
- "id": 6,
884
- "name": "white_check_mark",
885
- "message_ts": "1706192820.200017",
886
- "channel_id": "C2003INCIDENTS",
887
- "user_id": "U2001ALEX",
888
- "createdAt": "2024-01-25T14:27:30.000Z",
889
- "updatedAt": "2024-01-25T14:27:30.000Z"
890
- },
891
- {
892
- "id": 7,
893
- "name": "tada",
894
- "message_ts": "1706195400.200022",
895
- "channel_id": "C2003INCIDENTS",
896
- "user_id": "U2002BETH",
897
- "createdAt": "2024-01-25T15:10:30.000Z",
898
- "updatedAt": "2024-01-25T15:10:30.000Z"
899
- },
900
- {
901
- "id": 8,
902
- "name": "tada",
903
- "message_ts": "1706195400.200022",
904
- "channel_id": "C2003INCIDENTS",
905
- "user_id": "U2004DIANA",
906
- "createdAt": "2024-01-25T15:11:00.000Z",
907
- "updatedAt": "2024-01-25T15:11:00.000Z"
908
- },
909
- {
910
- "id": 9,
911
- "name": "tada",
912
- "message_ts": "1706195400.200022",
913
- "channel_id": "C2003INCIDENTS",
914
- "user_id": "U2005ETHAN",
915
- "createdAt": "2024-01-25T15:11:30.000Z",
916
- "updatedAt": "2024-01-25T15:11:30.000Z"
917
- },
918
- {
919
- "id": 10,
920
- "name": "heart",
921
- "message_ts": "1706195400.200022",
922
- "channel_id": "C2003INCIDENTS",
923
- "user_id": "U2006FIONA",
924
- "createdAt": "2024-01-25T15:12:00.000Z",
925
- "updatedAt": "2024-01-25T15:12:00.000Z"
926
- },
927
- {
928
- "id": 11,
929
- "name": "thumbsup",
930
- "message_ts": "1706195600.200024",
931
- "channel_id": "C2002ENGINE",
932
- "user_id": "U2001ALEX",
933
- "createdAt": "2024-01-25T15:13:40.000Z",
934
- "updatedAt": "2024-01-25T15:13:40.000Z"
935
- }
936
- ],
937
- "files": [
938
- {
939
- "id": 1,
940
- "file_id": "F2000000001",
941
- "name": "incident-timeline.md",
942
- "title": "SEV-1 Incident Timeline - 2024-01-25",
943
- "mimetype": "text/markdown",
944
- "filetype": "markdown",
945
- "size": 2048,
946
- "user_id": "U2001ALEX",
947
- "channel_ids": [
948
- "C2003INCIDENTS"
949
- ],
950
- "url_private": "https://files.slack.com/files-pri/F2000000001/incident-timeline.md",
951
- "content": "# SEV-1 Incident Timeline\n## 2024-01-25\n\n| Time (UTC) | Event |\n|---|---|\n| 14:00 | PagerDuty alert - primary db unreachable |\n| 14:02 | IC assigned (Alex), roles distributed |\n| 14:03 | Ethan: disk I/O errors, WAL partition full |\n| 14:06 | Chris: auto-failover did not trigger |\n| 14:10 | Root cause: WAL archive destination disk full |\n| 14:12 | Patroni config gap identified |\n| 14:17 | Archive destination cleaned, archiving resumed |\n| 14:25 | Primary accepting writes, WAL cleared |\n| 14:27 | All metrics normal |\n| 14:30 | Service fully restored |\n| 15:10 | Incident officially closed |",
952
- "shares": {
953
- "C2003INCIDENTS": [
954
- "2024-01-25T15:10:00.000Z"
955
- ]
956
- },
957
- "createdAt": "2024-01-25T15:10:00.000Z",
958
- "updatedAt": "2024-01-25T15:10:00.000Z"
959
- },
960
- {
961
- "id": 2,
962
- "file_id": "F2000000002",
963
- "name": "patroni-config-diff.txt",
964
- "title": "Patroni Config Changes",
965
- "mimetype": "text/plain",
966
- "filetype": "text",
967
- "size": 512,
968
- "user_id": "U2003CHRIS",
969
- "channel_ids": [
970
- "C2002ENGINE",
971
- "C2003INCIDENTS"
972
- ],
973
- "url_private": "https://files.slack.com/files-pri/F2000000002/patroni-config-diff.txt",
974
- "content": "--- a/patroni/config.yml\n+++ b/patroni/config.yml\n@@ -15,6 +15,10 @@ postgresql:\n parameters:\n max_connections: 200\n shared_buffers: 8GB\n+ watchdog:\n+ disk_space:\n+ wal_partition_threshold: 80\n+ archive_destination_threshold: 70\n callbacks:\n on_start: /scripts/on_start.sh",
975
- "shares": {
976
- "C2002ENGINE": [
977
- "2024-01-25T15:13:20.000Z"
978
- ],
979
- "C2003INCIDENTS": [
980
- "2024-01-25T14:35:00.000Z"
981
- ]
982
- },
983
- "createdAt": "2024-01-25T14:35:00.000Z",
984
- "updatedAt": "2024-01-25T15:13:20.000Z"
985
- }
986
- ],
987
- "emojis": [
988
- {
989
- "id": 1,
990
- "name": "sev1",
991
- "url": "https://emoji.slack-edge.com/sev1.png",
992
- "is_alias": false,
993
- "alias_for": null,
994
- "createdAt": "2024-01-01T00:00:00.000Z",
995
- "updatedAt": "2024-01-01T00:00:00.000Z"
996
- },
997
- {
998
- "id": 2,
999
- "name": "sev2",
1000
- "url": "https://emoji.slack-edge.com/sev2.png",
1001
- "is_alias": false,
1002
- "alias_for": null,
1003
- "createdAt": "2024-01-01T00:00:00.000Z",
1004
- "updatedAt": "2024-01-01T00:00:00.000Z"
1005
- },
1006
- {
1007
- "id": 3,
1008
- "name": "incident",
1009
- "url": "https://emoji.slack-edge.com/incident.png",
1010
- "is_alias": true,
1011
- "alias_for": "rotating_light",
1012
- "createdAt": "2024-01-01T00:00:00.000Z",
1013
- "updatedAt": "2024-01-01T00:00:00.000Z"
1014
- }
1015
- ],
1016
- "pins": [],
1017
- "userGroups": [],
1018
- "bookmarks": [],
1019
- "scheduledMessages": [],
1020
- "reminders": []
1021
- }