agent-postmortem 0.3.4__tar.gz

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 (546) hide show
  1. agent_postmortem-0.3.4/.claude-plugin/marketplace.json +14 -0
  2. agent_postmortem-0.3.4/.github/ISSUE_TEMPLATE/bug_report.yml +54 -0
  3. agent_postmortem-0.3.4/.github/ISSUE_TEMPLATE/confusing_output.yml +55 -0
  4. agent_postmortem-0.3.4/.github/ISSUE_TEMPLATE/detector_request.yml +38 -0
  5. agent_postmortem-0.3.4/.github/ISSUE_TEMPLATE/run_shape_not_covered.yml +70 -0
  6. agent_postmortem-0.3.4/.github/ISSUE_TEMPLATE/wrong_verdict.yml +70 -0
  7. agent_postmortem-0.3.4/.github/PULL_REQUEST_TEMPLATE.md +11 -0
  8. agent_postmortem-0.3.4/.github/workflows/ci.yml +48 -0
  9. agent_postmortem-0.3.4/.github/workflows/release.yml +83 -0
  10. agent_postmortem-0.3.4/.gitignore +12 -0
  11. agent_postmortem-0.3.4/CHANGELOG.md +460 -0
  12. agent_postmortem-0.3.4/CLAUDE.md +74 -0
  13. agent_postmortem-0.3.4/CONTRIBUTING.md +112 -0
  14. agent_postmortem-0.3.4/LICENSE +21 -0
  15. agent_postmortem-0.3.4/PKG-INFO +264 -0
  16. agent_postmortem-0.3.4/README.md +241 -0
  17. agent_postmortem-0.3.4/docs/DESIGN.md +7092 -0
  18. agent_postmortem-0.3.4/plugin/.claude-plugin/plugin.json +13 -0
  19. agent_postmortem-0.3.4/plugin/README.md +57 -0
  20. agent_postmortem-0.3.4/plugin/hooks/hooks.json +60 -0
  21. agent_postmortem-0.3.4/plugin/hooks/run.sh +417 -0
  22. agent_postmortem-0.3.4/plugin/skills/postmortem/SKILL.md +118 -0
  23. agent_postmortem-0.3.4/plugin/skills/rescue/SKILL.md +117 -0
  24. agent_postmortem-0.3.4/pyproject.toml +55 -0
  25. agent_postmortem-0.3.4/scripts/check-privacy.sh +108 -0
  26. agent_postmortem-0.3.4/scripts/export-public.sh +95 -0
  27. agent_postmortem-0.3.4/src/agent_postmortem/__init__.py +9 -0
  28. agent_postmortem-0.3.4/src/agent_postmortem/argerrors.py +160 -0
  29. agent_postmortem-0.3.4/src/agent_postmortem/claims.py +43 -0
  30. agent_postmortem-0.3.4/src/agent_postmortem/cli.py +2278 -0
  31. agent_postmortem-0.3.4/src/agent_postmortem/commands.py +1543 -0
  32. agent_postmortem-0.3.4/src/agent_postmortem/config.py +435 -0
  33. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000001.jsonl +5 -0
  34. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000001.meta.json +8 -0
  35. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000002.jsonl +2 -0
  36. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000002.meta.json +8 -0
  37. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000003.jsonl +5 -0
  38. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000003.meta.json +8 -0
  39. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000004.jsonl +2 -0
  40. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000004.meta.json +8 -0
  41. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/journal.jsonl +7 -0
  42. agent_postmortem-0.3.4/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +4 -0
  43. agent_postmortem-0.3.4/src/agent_postmortem/detectors/__init__.py +98 -0
  44. agent_postmortem-0.3.4/src/agent_postmortem/detectors/attempt_failed.py +261 -0
  45. agent_postmortem-0.3.4/src/agent_postmortem/detectors/base.py +319 -0
  46. agent_postmortem-0.3.4/src/agent_postmortem/detectors/bash_backgrounded.py +72 -0
  47. agent_postmortem-0.3.4/src/agent_postmortem/detectors/bash_timeout.py +94 -0
  48. agent_postmortem-0.3.4/src/agent_postmortem/detectors/claim_contradiction.py +251 -0
  49. agent_postmortem-0.3.4/src/agent_postmortem/detectors/classifier_unavailable.py +73 -0
  50. agent_postmortem-0.3.4/src/agent_postmortem/detectors/codex_unavailable.py +102 -0
  51. agent_postmortem-0.3.4/src/agent_postmortem/detectors/codex_write_denied.py +100 -0
  52. agent_postmortem-0.3.4/src/agent_postmortem/detectors/git_cwd_mismatch.py +74 -0
  53. agent_postmortem-0.3.4/src/agent_postmortem/detectors/mislabeled_kill.py +164 -0
  54. agent_postmortem-0.3.4/src/agent_postmortem/detectors/missing_artifact.py +159 -0
  55. agent_postmortem-0.3.4/src/agent_postmortem/detectors/permission_denied.py +99 -0
  56. agent_postmortem-0.3.4/src/agent_postmortem/detectors/silent_retry.py +163 -0
  57. agent_postmortem-0.3.4/src/agent_postmortem/detectors/structured_output_failure.py +91 -0
  58. agent_postmortem-0.3.4/src/agent_postmortem/detectors/tool_json_error.py +77 -0
  59. agent_postmortem-0.3.4/src/agent_postmortem/detectors/wasted_time.py +125 -0
  60. agent_postmortem-0.3.4/src/agent_postmortem/detectors/workflow_failed.py +62 -0
  61. agent_postmortem-0.3.4/src/agent_postmortem/disclosure.py +931 -0
  62. agent_postmortem-0.3.4/src/agent_postmortem/hooks/model_allocation_guard.mjs +248 -0
  63. agent_postmortem-0.3.4/src/agent_postmortem/hooks_cli.py +1269 -0
  64. agent_postmortem-0.3.4/src/agent_postmortem/ledger.py +624 -0
  65. agent_postmortem-0.3.4/src/agent_postmortem/markers.py +505 -0
  66. agent_postmortem-0.3.4/src/agent_postmortem/models.py +815 -0
  67. agent_postmortem-0.3.4/src/agent_postmortem/observe.py +792 -0
  68. agent_postmortem-0.3.4/src/agent_postmortem/reader.py +4611 -0
  69. agent_postmortem-0.3.4/src/agent_postmortem/redact.py +1981 -0
  70. agent_postmortem-0.3.4/src/agent_postmortem/report.py +3010 -0
  71. agent_postmortem-0.3.4/src/agent_postmortem/rescue.py +2096 -0
  72. agent_postmortem-0.3.4/src/agent_postmortem/returns.py +499 -0
  73. agent_postmortem-0.3.4/src/agent_postmortem/rules.py +627 -0
  74. agent_postmortem-0.3.4/src/agent_postmortem/severity.py +275 -0
  75. agent_postmortem-0.3.4/src/agent_postmortem/state.py +1261 -0
  76. agent_postmortem-0.3.4/src/agent_postmortem/trend.py +391 -0
  77. agent_postmortem-0.3.4/src/agent_postmortem/watch.py +973 -0
  78. agent_postmortem-0.3.4/tests/conftest.py +37 -0
  79. agent_postmortem-0.3.4/tests/fixtures/README.md +534 -0
  80. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/demo__share.txt +366 -0
  81. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rescue_plan__local.txt +2239 -0
  82. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rescue_plan__raw.txt +2239 -0
  83. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rescue_plan__share.txt +2239 -0
  84. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rescue_status__local.txt +718 -0
  85. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rescue_status__raw.txt +718 -0
  86. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rescue_status__share.txt +718 -0
  87. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules__local.txt +46 -0
  88. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules__raw.txt +46 -0
  89. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules__share.txt +46 -0
  90. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_all__local.txt +66 -0
  91. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_all__raw.txt +66 -0
  92. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_all__share.txt +66 -0
  93. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_propose__local.txt +80 -0
  94. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_propose__raw.txt +80 -0
  95. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_propose__share.txt +80 -0
  96. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_review__local.txt +52 -0
  97. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_review__raw.txt +52 -0
  98. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_review__share.txt +52 -0
  99. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_show__local.txt +16 -0
  100. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_show__raw.txt +16 -0
  101. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/rules_show__share.txt +16 -0
  102. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/run__local.txt +5913 -0
  103. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/run__raw.txt +5913 -0
  104. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/run__share.txt +5913 -0
  105. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/scan__local.txt +649 -0
  106. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/scan__raw.txt +649 -0
  107. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/scan__share.txt +649 -0
  108. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/scan_all__local.txt +649 -0
  109. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/scan_all__raw.txt +649 -0
  110. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/scan_all__share.txt +649 -0
  111. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/trend__local.txt +518 -0
  112. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/trend__raw.txt +518 -0
  113. agent_postmortem-0.3.4/tests/fixtures/golden/schema3/trend__share.txt +518 -0
  114. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000001.jsonl +4 -0
  115. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000001.meta.json +1 -0
  116. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000002.jsonl +3 -0
  117. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000002.meta.json +1 -0
  118. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000003.jsonl +3 -0
  119. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000003.meta.json +1 -0
  120. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000004.jsonl +3 -0
  121. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000004.meta.json +1 -0
  122. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000005.jsonl +5 -0
  123. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000005.meta.json +1 -0
  124. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000006.jsonl +3 -0
  125. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000006.meta.json +1 -0
  126. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000008.jsonl +5 -0
  127. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000008.meta.json +1 -0
  128. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000009.jsonl +5 -0
  129. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000009.meta.json +1 -0
  130. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000010.jsonl +5 -0
  131. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000010.meta.json +1 -0
  132. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000011.jsonl +4 -0
  133. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000011.meta.json +1 -0
  134. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/journal.jsonl +22 -0
  135. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000001.jsonl +3 -0
  136. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000001.meta.json +8 -0
  137. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000002.jsonl +3 -0
  138. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000002.meta.json +8 -0
  139. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000003.jsonl +3 -0
  140. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000003.meta.json +8 -0
  141. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000004.jsonl +3 -0
  142. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000004.meta.json +8 -0
  143. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000005.jsonl +3 -0
  144. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000005.meta.json +8 -0
  145. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000006.jsonl +3 -0
  146. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000006.meta.json +8 -0
  147. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000007.jsonl +3 -0
  148. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000007.meta.json +8 -0
  149. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a1.jsonl +3 -0
  150. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a1.meta.json +8 -0
  151. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a2.jsonl +3 -0
  152. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a2.meta.json +8 -0
  153. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a3.jsonl +3 -0
  154. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a3.meta.json +8 -0
  155. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a4.jsonl +3 -0
  156. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a4.meta.json +8 -0
  157. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_causes/journal.jsonl +23 -0
  158. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000001.jsonl +2 -0
  159. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000001.meta.json +8 -0
  160. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000002.jsonl +2 -0
  161. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000002.meta.json +8 -0
  162. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/agent-afb10000000000001.jsonl +2 -0
  163. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/agent-afb10000000000001.meta.json +8 -0
  164. agent_postmortem-0.3.4/tests/fixtures/runs/attempt_failed_retry_tail/journal.jsonl +8 -0
  165. agent_postmortem-0.3.4/tests/fixtures/runs/bash_backgrounded_timeout/agent-ac300000000000001.jsonl +6 -0
  166. agent_postmortem-0.3.4/tests/fixtures/runs/bash_backgrounded_timeout/agent-ac300000000000001.meta.json +8 -0
  167. agent_postmortem-0.3.4/tests/fixtures/runs/bash_backgrounded_timeout/journal.jsonl +3 -0
  168. agent_postmortem-0.3.4/tests/fixtures/runs/claim_contradiction/journal.jsonl +23 -0
  169. agent_postmortem-0.3.4/tests/fixtures/runs/clean_run/agent-ac100000000000001.jsonl +5 -0
  170. agent_postmortem-0.3.4/tests/fixtures/runs/clean_run/agent-ac100000000000001.meta.json +8 -0
  171. agent_postmortem-0.3.4/tests/fixtures/runs/clean_run/agent-ac100000000000002.jsonl +4 -0
  172. agent_postmortem-0.3.4/tests/fixtures/runs/clean_run/agent-ac100000000000002.meta.json +8 -0
  173. agent_postmortem-0.3.4/tests/fixtures/runs/clean_run/journal.jsonl +5 -0
  174. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000001.jsonl +4 -0
  175. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000001.meta.json +8 -0
  176. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000002.jsonl +2 -0
  177. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000002.meta.json +8 -0
  178. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000003.jsonl +4 -0
  179. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000003.meta.json +8 -0
  180. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000004.jsonl +6 -0
  181. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/agent-ae100000000000004.meta.json +8 -0
  182. agent_postmortem-0.3.4/tests/fixtures/runs/codex_unavailable/journal.jsonl +9 -0
  183. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/agent-ac500000000000001.jsonl +4 -0
  184. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/agent-ac500000000000001.meta.json +8 -0
  185. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/agent-ac500000000000002.jsonl +4 -0
  186. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/agent-ac500000000000002.meta.json +8 -0
  187. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/agent-ac500000000000003.jsonl +4 -0
  188. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/agent-ac500000000000003.meta.json +8 -0
  189. agent_postmortem-0.3.4/tests/fixtures/runs/codex_write_denied/journal.jsonl +7 -0
  190. agent_postmortem-0.3.4/tests/fixtures/runs/evidence_noise/agent-acf00000000000001.jsonl +5 -0
  191. agent_postmortem-0.3.4/tests/fixtures/runs/evidence_noise/agent-acf00000000000001.meta.json +8 -0
  192. agent_postmortem-0.3.4/tests/fixtures/runs/evidence_noise/journal.jsonl +2 -0
  193. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ae300000000000001.jsonl +4 -0
  194. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ae300000000000001.meta.json +1 -0
  195. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000001.jsonl +4 -0
  196. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000001.meta.json +8 -0
  197. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000002.jsonl +4 -0
  198. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000002.meta.json +8 -0
  199. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/journal.jsonl +4 -0
  200. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/agent-ae200000000000001.jsonl +2 -0
  201. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/agent-ae200000000000001.meta.json +8 -0
  202. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/journal.jsonl +2 -0
  203. agent_postmortem-0.3.4/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +6 -0
  204. agent_postmortem-0.3.4/tests/fixtures/runs/incomplete_journal/agent-ad000000000000001.jsonl +2 -0
  205. agent_postmortem-0.3.4/tests/fixtures/runs/incomplete_journal/agent-ad000000000000001.meta.json +8 -0
  206. agent_postmortem-0.3.4/tests/fixtures/runs/incomplete_journal/journal.jsonl +4 -0
  207. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000001.jsonl +2 -0
  208. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000001.meta.json +8 -0
  209. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000003.jsonl +2 -0
  210. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000003.meta.json +8 -0
  211. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000004.jsonl +2 -0
  212. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000004.meta.json +8 -0
  213. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/journal.jsonl +9 -0
  214. agent_postmortem-0.3.4/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +3 -0
  215. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_orphan_failed/journal.jsonl +2 -0
  216. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad200000000000001.jsonl +2 -0
  217. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad200000000000001.meta.json +8 -0
  218. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad300000000000001.jsonl +2 -0
  219. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad300000000000001.meta.json +8 -0
  220. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000001.jsonl +2 -0
  221. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000001.meta.json +8 -0
  222. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000002.jsonl +2 -0
  223. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000002.meta.json +8 -0
  224. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000001.jsonl +3 -0
  225. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000001.meta.json +8 -0
  226. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000002.jsonl +2 -0
  227. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000002.meta.json +8 -0
  228. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000001.jsonl +2 -0
  229. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000001.meta.json +8 -0
  230. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000002.jsonl +2 -0
  231. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000002.meta.json +8 -0
  232. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad700000000000001.jsonl +2 -0
  233. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad700000000000001.meta.json +8 -0
  234. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad800000000000001.jsonl +3 -0
  235. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/agent-ad800000000000001.meta.json +8 -0
  236. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_resolved/journal.jsonl +20 -0
  237. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_unresolved/agent-ad900000000000001.jsonl +2 -0
  238. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_unresolved/agent-ad900000000000001.meta.json +8 -0
  239. agent_postmortem-0.3.4/tests/fixtures/runs/journal_state_unresolved/journal.jsonl +3 -0
  240. agent_postmortem-0.3.4/tests/fixtures/runs/missing_artifact/agent-ac600000000000001.jsonl +2 -0
  241. agent_postmortem-0.3.4/tests/fixtures/runs/missing_artifact/agent-ac600000000000001.meta.json +8 -0
  242. agent_postmortem-0.3.4/tests/fixtures/runs/missing_artifact/agent-ac600000000000002.jsonl +2 -0
  243. agent_postmortem-0.3.4/tests/fixtures/runs/missing_artifact/agent-ac600000000000002.meta.json +8 -0
  244. agent_postmortem-0.3.4/tests/fixtures/runs/missing_artifact/journal.jsonl +5 -0
  245. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_a0000000-001/journal.jsonl +1 -0
  246. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a1111111111111111.jsonl +5 -0
  247. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a1111111111111111.meta.json +1 -0
  248. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a2222222222222222.jsonl +4 -0
  249. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a2222222222222222.meta.json +1 -0
  250. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/journal.jsonl +4 -0
  251. agent_postmortem-0.3.4/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_c0000000-003/journal.jsonl +1 -0
  252. agent_postmortem-0.3.4/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/agent-ad100000000000001.jsonl +2 -0
  253. agent_postmortem-0.3.4/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/agent-ad100000000000001.meta.json +1 -0
  254. agent_postmortem-0.3.4/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/journal.jsonl +3 -0
  255. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000001.jsonl +4 -0
  256. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000001.meta.json +8 -0
  257. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000002.jsonl +4 -0
  258. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000002.meta.json +8 -0
  259. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000003.jsonl +4 -0
  260. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000003.meta.json +8 -0
  261. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000004.jsonl +2 -0
  262. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000004.meta.json +8 -0
  263. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000005.jsonl +4 -0
  264. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/agent-af000000000000005.meta.json +8 -0
  265. agent_postmortem-0.3.4/tests/fixtures/runs/self_reference/journal.jsonl +11 -0
  266. agent_postmortem-0.3.4/tests/fixtures/runs/session_bridge_only/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +1 -0
  267. agent_postmortem-0.3.4/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000001.jsonl +4 -0
  268. agent_postmortem-0.3.4/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000001.meta.json +1 -0
  269. agent_postmortem-0.3.4/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000002.jsonl +4 -0
  270. agent_postmortem-0.3.4/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000002.meta.json +1 -0
  271. agent_postmortem-0.3.4/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +6 -0
  272. agent_postmortem-0.3.4/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-aca00000000000001.jsonl +4 -0
  273. agent_postmortem-0.3.4/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-aca00000000000001.meta.json +1 -0
  274. agent_postmortem-0.3.4/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +2 -0
  275. agent_postmortem-0.3.4/tests/fixtures/runs/session_dedup/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +4 -0
  276. agent_postmortem-0.3.4/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac900000000000001.jsonl +4 -0
  277. agent_postmortem-0.3.4/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac900000000000001.meta.json +1 -0
  278. agent_postmortem-0.3.4/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +4 -0
  279. agent_postmortem-0.3.4/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acc00000000000001.jsonl +3 -0
  280. agent_postmortem-0.3.4/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acc00000000000001.meta.json +1 -0
  281. agent_postmortem-0.3.4/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +3 -0
  282. agent_postmortem-0.3.4/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acb00000000000001.jsonl +3 -0
  283. agent_postmortem-0.3.4/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acb00000000000001.meta.json +1 -0
  284. agent_postmortem-0.3.4/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +4 -0
  285. agent_postmortem-0.3.4/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acd00000000000001.jsonl +3 -0
  286. agent_postmortem-0.3.4/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acd00000000000001.meta.json +1 -0
  287. agent_postmortem-0.3.4/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +2 -0
  288. agent_postmortem-0.3.4/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ace00000000000001.jsonl +3 -0
  289. agent_postmortem-0.3.4/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ace00000000000001.meta.json +1 -0
  290. agent_postmortem-0.3.4/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +2 -0
  291. agent_postmortem-0.3.4/tests/fixtures/runs/structured_output_corrupt/agent-ac400000000000001.jsonl +6 -0
  292. agent_postmortem-0.3.4/tests/fixtures/runs/structured_output_corrupt/agent-ac400000000000001.meta.json +8 -0
  293. agent_postmortem-0.3.4/tests/fixtures/runs/structured_output_corrupt/journal.jsonl +3 -0
  294. agent_postmortem-0.3.4/tests/g_corpus_support.py +449 -0
  295. agent_postmortem-0.3.4/tests/g_helpers.py +207 -0
  296. agent_postmortem-0.3.4/tests/g_independent_return.py +415 -0
  297. agent_postmortem-0.3.4/tests/n3b_helpers.py +80 -0
  298. agent_postmortem-0.3.4/tests/n3b_planted.py +166 -0
  299. agent_postmortem-0.3.4/tests/n4_reference_commands.py +1412 -0
  300. agent_postmortem-0.3.4/tests/n4b2_helpers.py +158 -0
  301. agent_postmortem-0.3.4/tests/n5b_helpers.py +217 -0
  302. agent_postmortem-0.3.4/tests/n5c1_helpers.py +236 -0
  303. agent_postmortem-0.3.4/tests/n5c2_helpers.py +168 -0
  304. agent_postmortem-0.3.4/tests/n6_helpers.py +214 -0
  305. agent_postmortem-0.3.4/tests/privacy_rules.py +521 -0
  306. agent_postmortem-0.3.4/tests/rule_fixtures.py +166 -0
  307. agent_postmortem-0.3.4/tests/synthetic-ids.txt +547 -0
  308. agent_postmortem-0.3.4/tests/test_attempt_facts.py +535 -0
  309. agent_postmortem-0.3.4/tests/test_attempt_failed.py +314 -0
  310. agent_postmortem-0.3.4/tests/test_attribution.py +448 -0
  311. agent_postmortem-0.3.4/tests/test_bug_report.py +203 -0
  312. agent_postmortem-0.3.4/tests/test_claim_contradiction.py +391 -0
  313. agent_postmortem-0.3.4/tests/test_cli_smoke.py +998 -0
  314. agent_postmortem-0.3.4/tests/test_codex_unavailable.py +234 -0
  315. agent_postmortem-0.3.4/tests/test_config.py +270 -0
  316. agent_postmortem-0.3.4/tests/test_deep_lines.py +406 -0
  317. agent_postmortem-0.3.4/tests/test_detectors_base.py +141 -0
  318. agent_postmortem-0.3.4/tests/test_detectors_core.py +408 -0
  319. agent_postmortem-0.3.4/tests/test_detectors_registry.py +147 -0
  320. agent_postmortem-0.3.4/tests/test_detectors_tooling.py +997 -0
  321. agent_postmortem-0.3.4/tests/test_disclosure_primitives.py +2709 -0
  322. agent_postmortem-0.3.4/tests/test_empty_state.py +198 -0
  323. agent_postmortem-0.3.4/tests/test_export.py +369 -0
  324. agent_postmortem-0.3.4/tests/test_export_public.py +122 -0
  325. agent_postmortem-0.3.4/tests/test_fa_commit_no_id.py +318 -0
  326. agent_postmortem-0.3.4/tests/test_fa_fork.py +448 -0
  327. agent_postmortem-0.3.4/tests/test_fa_generations.py +373 -0
  328. agent_postmortem-0.3.4/tests/test_fa_path_token.py +424 -0
  329. agent_postmortem-0.3.4/tests/test_fa_return_boundary.py +137 -0
  330. agent_postmortem-0.3.4/tests/test_fa_wasted.py +316 -0
  331. agent_postmortem-0.3.4/tests/test_fb_here.py +323 -0
  332. agent_postmortem-0.3.4/tests/test_fb_live_now.py +279 -0
  333. agent_postmortem-0.3.4/tests/test_fb_rescue_live.py +404 -0
  334. agent_postmortem-0.3.4/tests/test_fc_fix10_redact.py +368 -0
  335. agent_postmortem-0.3.4/tests/test_fc_fix11_redact.py +150 -0
  336. agent_postmortem-0.3.4/tests/test_fc_fix12_redact.py +109 -0
  337. agent_postmortem-0.3.4/tests/test_fc_fix1_commit.py +118 -0
  338. agent_postmortem-0.3.4/tests/test_fc_fix1_launch.py +73 -0
  339. agent_postmortem-0.3.4/tests/test_fc_fix1_poll.py +103 -0
  340. agent_postmortem-0.3.4/tests/test_fc_fix1_redact.py +280 -0
  341. agent_postmortem-0.3.4/tests/test_fc_fix2_launch.py +144 -0
  342. agent_postmortem-0.3.4/tests/test_fc_fix2_poll.py +147 -0
  343. agent_postmortem-0.3.4/tests/test_fc_fix2_redact.py +116 -0
  344. agent_postmortem-0.3.4/tests/test_fc_fix3_redact.py +230 -0
  345. agent_postmortem-0.3.4/tests/test_fc_fix4_fuzz.py +98 -0
  346. agent_postmortem-0.3.4/tests/test_fc_fix4_lexer.py +596 -0
  347. agent_postmortem-0.3.4/tests/test_fc_fix4_redact.py +509 -0
  348. agent_postmortem-0.3.4/tests/test_fc_fix4_sinks.py +306 -0
  349. agent_postmortem-0.3.4/tests/test_fc_fix5_lexer.py +402 -0
  350. agent_postmortem-0.3.4/tests/test_fc_fix5_redact.py +453 -0
  351. agent_postmortem-0.3.4/tests/test_fc_fix5_sinks.py +135 -0
  352. agent_postmortem-0.3.4/tests/test_fc_fix6_fuzz.py +111 -0
  353. agent_postmortem-0.3.4/tests/test_fc_fix6_hook.py +133 -0
  354. agent_postmortem-0.3.4/tests/test_fc_fix6_lexer.py +243 -0
  355. agent_postmortem-0.3.4/tests/test_fc_fix6_redact.py +543 -0
  356. agent_postmortem-0.3.4/tests/test_fc_fix6_sinks.py +401 -0
  357. agent_postmortem-0.3.4/tests/test_fc_fix6b_title.py +93 -0
  358. agent_postmortem-0.3.4/tests/test_fc_fix7_e2e.py +120 -0
  359. agent_postmortem-0.3.4/tests/test_fc_fix7_fuzz.py +122 -0
  360. agent_postmortem-0.3.4/tests/test_fc_fix7_redact.py +383 -0
  361. agent_postmortem-0.3.4/tests/test_fc_fix7_sinks.py +373 -0
  362. agent_postmortem-0.3.4/tests/test_fc_fix7_title.py +329 -0
  363. agent_postmortem-0.3.4/tests/test_fc_fix8_e2e.py +64 -0
  364. agent_postmortem-0.3.4/tests/test_fc_fix8_fuzz.py +150 -0
  365. agent_postmortem-0.3.4/tests/test_fc_fix8_redact.py +412 -0
  366. agent_postmortem-0.3.4/tests/test_fc_fix8_sinks.py +381 -0
  367. agent_postmortem-0.3.4/tests/test_fc_fix9_e2e.py +68 -0
  368. agent_postmortem-0.3.4/tests/test_fc_fix9_fuzz.py +93 -0
  369. agent_postmortem-0.3.4/tests/test_fc_fix9_redact.py +530 -0
  370. agent_postmortem-0.3.4/tests/test_fc_fix9_sinks.py +47 -0
  371. agent_postmortem-0.3.4/tests/test_fc_help.py +119 -0
  372. agent_postmortem-0.3.4/tests/test_fc_scan.py +227 -0
  373. agent_postmortem-0.3.4/tests/test_fc_table.py +420 -0
  374. agent_postmortem-0.3.4/tests/test_fc_wording.py +608 -0
  375. agent_postmortem-0.3.4/tests/test_field_v03.py +1285 -0
  376. agent_postmortem-0.3.4/tests/test_field_v03_more.py +830 -0
  377. agent_postmortem-0.3.4/tests/test_filter_scope.py +386 -0
  378. agent_postmortem-0.3.4/tests/test_fixa_discovery.py +249 -0
  379. agent_postmortem-0.3.4/tests/test_fixa_enqueue.py +115 -0
  380. agent_postmortem-0.3.4/tests/test_fixa_reader.py +575 -0
  381. agent_postmortem-0.3.4/tests/test_g_a1_hooks.py +317 -0
  382. agent_postmortem-0.3.4/tests/test_g_a1_return.py +421 -0
  383. agent_postmortem-0.3.4/tests/test_g_b1.py +339 -0
  384. agent_postmortem-0.3.4/tests/test_g_c.py +557 -0
  385. agent_postmortem-0.3.4/tests/test_g_commit_sentences.py +208 -0
  386. agent_postmortem-0.3.4/tests/test_g_commits.py +92 -0
  387. agent_postmortem-0.3.4/tests/test_g_consumers.py +406 -0
  388. agent_postmortem-0.3.4/tests/test_g_corpus.py +192 -0
  389. agent_postmortem-0.3.4/tests/test_g_denied.py +255 -0
  390. agent_postmortem-0.3.4/tests/test_g_failed.py +77 -0
  391. agent_postmortem-0.3.4/tests/test_g_here.py +190 -0
  392. agent_postmortem-0.3.4/tests/test_g_hooks.py +163 -0
  393. agent_postmortem-0.3.4/tests/test_g_registry.py +59 -0
  394. agent_postmortem-0.3.4/tests/test_g_rescue.py +149 -0
  395. agent_postmortem-0.3.4/tests/test_g_return.py +762 -0
  396. agent_postmortem-0.3.4/tests/test_g_selfreport.py +249 -0
  397. agent_postmortem-0.3.4/tests/test_hooks_benchmark.py +273 -0
  398. agent_postmortem-0.3.4/tests/test_hooks_cli.py +1310 -0
  399. agent_postmortem-0.3.4/tests/test_journal_malformed_fields.py +121 -0
  400. agent_postmortem-0.3.4/tests/test_journal_state.py +187 -0
  401. agent_postmortem-0.3.4/tests/test_launch_docs.py +94 -0
  402. agent_postmortem-0.3.4/tests/test_model_allocation_guard.py +122 -0
  403. agent_postmortem-0.3.4/tests/test_n1_markers.py +563 -0
  404. agent_postmortem-0.3.4/tests/test_n1_parent_index.py +1050 -0
  405. agent_postmortem-0.3.4/tests/test_n2_lifecycle.py +1104 -0
  406. agent_postmortem-0.3.4/tests/test_n3b_apply.py +335 -0
  407. agent_postmortem-0.3.4/tests/test_n3b_canonical_ids.py +61 -0
  408. agent_postmortem-0.3.4/tests/test_n3b_context.py +71 -0
  409. agent_postmortem-0.3.4/tests/test_n3b_demo.py +183 -0
  410. agent_postmortem-0.3.4/tests/test_n3b_first_line.py +112 -0
  411. agent_postmortem-0.3.4/tests/test_n3b_fixa_dedupe.py +72 -0
  412. agent_postmortem-0.3.4/tests/test_n3b_fixa_demo.py +39 -0
  413. agent_postmortem-0.3.4/tests/test_n3b_fixa_local_path.py +63 -0
  414. agent_postmortem-0.3.4/tests/test_n3b_fixa_names.py +112 -0
  415. agent_postmortem-0.3.4/tests/test_n3b_fixa_paths_c4.py +95 -0
  416. agent_postmortem-0.3.4/tests/test_n3b_fixa_paths_c6.py +47 -0
  417. agent_postmortem-0.3.4/tests/test_n3b_fixa_paths_s10.py +23 -0
  418. agent_postmortem-0.3.4/tests/test_n3b_fixa_paths_s4.py +58 -0
  419. agent_postmortem-0.3.4/tests/test_n3b_fixa_titles.py +57 -0
  420. agent_postmortem-0.3.4/tests/test_n3b_fixb_hook_group.py +118 -0
  421. agent_postmortem-0.3.4/tests/test_n3b_fixb_noident_pointer.py +78 -0
  422. agent_postmortem-0.3.4/tests/test_n3b_fixb_repr_tokens.py +51 -0
  423. agent_postmortem-0.3.4/tests/test_n3b_fixb_rescue_c1.py +131 -0
  424. agent_postmortem-0.3.4/tests/test_n3b_fixb_run_ids.py +149 -0
  425. agent_postmortem-0.3.4/tests/test_n3b_fixb_traversal.py +114 -0
  426. agent_postmortem-0.3.4/tests/test_n3b_fixr2_ids.py +153 -0
  427. agent_postmortem-0.3.4/tests/test_n3b_fixr2_paths.py +134 -0
  428. agent_postmortem-0.3.4/tests/test_n3b_fixr2_raw_dupes.py +100 -0
  429. agent_postmortem-0.3.4/tests/test_n3b_fixr2_schema2_hostile.py +125 -0
  430. agent_postmortem-0.3.4/tests/test_n3b_flags.py +110 -0
  431. agent_postmortem-0.3.4/tests/test_n3b_handler_errors.py +200 -0
  432. agent_postmortem-0.3.4/tests/test_n3b_hooks.py +225 -0
  433. agent_postmortem-0.3.4/tests/test_n3b_local_path.py +143 -0
  434. agent_postmortem-0.3.4/tests/test_n3b_local_scrub.py +113 -0
  435. agent_postmortem-0.3.4/tests/test_n3b_parser_errors.py +226 -0
  436. agent_postmortem-0.3.4/tests/test_n3b_part2_slow_path.py +130 -0
  437. agent_postmortem-0.3.4/tests/test_n3b_part3_sinks.py +75 -0
  438. agent_postmortem-0.3.4/tests/test_n3b_pointers.py +171 -0
  439. agent_postmortem-0.3.4/tests/test_n3b_reader.py +175 -0
  440. agent_postmortem-0.3.4/tests/test_n3b_rescue.py +394 -0
  441. agent_postmortem-0.3.4/tests/test_n3b_residual_sinks.py +161 -0
  442. agent_postmortem-0.3.4/tests/test_n3b_rules_trend.py +182 -0
  443. agent_postmortem-0.3.4/tests/test_n3b_run_fallback.py +188 -0
  444. agent_postmortem-0.3.4/tests/test_n3b_run_local.py +201 -0
  445. agent_postmortem-0.3.4/tests/test_n3b_run_noncanonical_agent.py +102 -0
  446. agent_postmortem-0.3.4/tests/test_n3b_run_path_matrix.py +96 -0
  447. agent_postmortem-0.3.4/tests/test_n3b_run_share.py +150 -0
  448. agent_postmortem-0.3.4/tests/test_n3b_scan.py +193 -0
  449. agent_postmortem-0.3.4/tests/test_n3b_slow_path.py +102 -0
  450. agent_postmortem-0.3.4/tests/test_n3b_watch.py +270 -0
  451. agent_postmortem-0.3.4/tests/test_n4a_base_repo.py +161 -0
  452. agent_postmortem-0.3.4/tests/test_n4a_commit_grammar.py +621 -0
  453. agent_postmortem-0.3.4/tests/test_n4a_lexer.py +367 -0
  454. agent_postmortem-0.3.4/tests/test_n4a_measure.py +207 -0
  455. agent_postmortem-0.3.4/tests/test_n4a_readonly.py +237 -0
  456. agent_postmortem-0.3.4/tests/test_n4a_rows.py +275 -0
  457. agent_postmortem-0.3.4/tests/test_n4a_write_grammar.py +180 -0
  458. agent_postmortem-0.3.4/tests/test_n4b1_discovery.py +679 -0
  459. agent_postmortem-0.3.4/tests/test_n4b1_reader_facts.py +703 -0
  460. agent_postmortem-0.3.4/tests/test_n4b1_schema2.py +105 -0
  461. agent_postmortem-0.3.4/tests/test_n4b2_forms.py +238 -0
  462. agent_postmortem-0.3.4/tests/test_n4b2_measure.py +170 -0
  463. agent_postmortem-0.3.4/tests/test_n4b2_population.py +448 -0
  464. agent_postmortem-0.3.4/tests/test_n4b2_reasons.py +409 -0
  465. agent_postmortem-0.3.4/tests/test_n4b2_repo_groups.py +282 -0
  466. agent_postmortem-0.3.4/tests/test_n4b2_rows.py +482 -0
  467. agent_postmortem-0.3.4/tests/test_n4fixb_c3.py +69 -0
  468. agent_postmortem-0.3.4/tests/test_n4fixb_differential.py +318 -0
  469. agent_postmortem-0.3.4/tests/test_n4fixb_minor.py +100 -0
  470. agent_postmortem-0.3.4/tests/test_n4fixb_s3.py +135 -0
  471. agent_postmortem-0.3.4/tests/test_n4fixb_s4.py +106 -0
  472. agent_postmortem-0.3.4/tests/test_n4fixb_s5_s10.py +280 -0
  473. agent_postmortem-0.3.4/tests/test_n4fixc_a4.py +370 -0
  474. agent_postmortem-0.3.4/tests/test_n4fixd_a5.py +496 -0
  475. agent_postmortem-0.3.4/tests/test_n4fixe_a5.py +155 -0
  476. agent_postmortem-0.3.4/tests/test_n5_schema3_goldens.py +451 -0
  477. agent_postmortem-0.3.4/tests/test_n5a1_schema3.py +713 -0
  478. agent_postmortem-0.3.4/tests/test_n5a2_docs.py +54 -0
  479. agent_postmortem-0.3.4/tests/test_n5b_detectors.py +574 -0
  480. agent_postmortem-0.3.4/tests/test_n5b_inputs.py +344 -0
  481. agent_postmortem-0.3.4/tests/test_n5b_severity.py +328 -0
  482. agent_postmortem-0.3.4/tests/test_n5b_verdict.py +408 -0
  483. agent_postmortem-0.3.4/tests/test_n5c1_gaps.py +508 -0
  484. agent_postmortem-0.3.4/tests/test_n5c1_look.py +243 -0
  485. agent_postmortem-0.3.4/tests/test_n5c1_observation_export.py +240 -0
  486. agent_postmortem-0.3.4/tests/test_n5c1_observe.py +440 -0
  487. agent_postmortem-0.3.4/tests/test_n5c1_rescue.py +174 -0
  488. agent_postmortem-0.3.4/tests/test_n5c1_returned.py +235 -0
  489. agent_postmortem-0.3.4/tests/test_n5c1_work_at_risk.py +424 -0
  490. agent_postmortem-0.3.4/tests/test_n5c2_exit_codes.py +410 -0
  491. agent_postmortem-0.3.4/tests/test_n5c2_misc.py +344 -0
  492. agent_postmortem-0.3.4/tests/test_n5c2_status_repos.py +618 -0
  493. agent_postmortem-0.3.4/tests/test_n5fix1_misc.py +182 -0
  494. agent_postmortem-0.3.4/tests/test_n5fix1_plan.py +388 -0
  495. agent_postmortem-0.3.4/tests/test_n5fix1_returned.py +206 -0
  496. agent_postmortem-0.3.4/tests/test_n5fix1_severity.py +74 -0
  497. agent_postmortem-0.3.4/tests/test_n5fix1_status.py +228 -0
  498. agent_postmortem-0.3.4/tests/test_n6_alias_state.py +220 -0
  499. agent_postmortem-0.3.4/tests/test_n6_cwd.py +246 -0
  500. agent_postmortem-0.3.4/tests/test_n6_docs.py +45 -0
  501. agent_postmortem-0.3.4/tests/test_n6_fix1.py +220 -0
  502. agent_postmortem-0.3.4/tests/test_n6_here_run.py +147 -0
  503. agent_postmortem-0.3.4/tests/test_n6_here_scan.py +141 -0
  504. agent_postmortem-0.3.4/tests/test_n6_pins.py +126 -0
  505. agent_postmortem-0.3.4/tests/test_n6_resolve.py +239 -0
  506. agent_postmortem-0.3.4/tests/test_n6_roundtrip.py +139 -0
  507. agent_postmortem-0.3.4/tests/test_n6_stderr.py +177 -0
  508. agent_postmortem-0.3.4/tests/test_n7_detectors.py +75 -0
  509. agent_postmortem-0.3.4/tests/test_n8_fix1.py +471 -0
  510. agent_postmortem-0.3.4/tests/test_n8_fix2.py +63 -0
  511. agent_postmortem-0.3.4/tests/test_n8_k1_killed.py +67 -0
  512. agent_postmortem-0.3.4/tests/test_n8_k2_what_to_do.py +63 -0
  513. agent_postmortem-0.3.4/tests/test_n8_k3_precursor.py +238 -0
  514. agent_postmortem-0.3.4/tests/test_n8_k4_rescue.py +684 -0
  515. agent_postmortem-0.3.4/tests/test_n8_k5_watch.py +773 -0
  516. agent_postmortem-0.3.4/tests/test_n8_k6_rules.py +363 -0
  517. agent_postmortem-0.3.4/tests/test_n9_docs.py +246 -0
  518. agent_postmortem-0.3.4/tests/test_n9_release_gate.py +440 -0
  519. agent_postmortem-0.3.4/tests/test_no_lazy_fetch.py +63 -0
  520. agent_postmortem-0.3.4/tests/test_no_write_surface.py +296 -0
  521. agent_postmortem-0.3.4/tests/test_observe.py +947 -0
  522. agent_postmortem-0.3.4/tests/test_plugin.py +856 -0
  523. agent_postmortem-0.3.4/tests/test_privacy.py +453 -0
  524. agent_postmortem-0.3.4/tests/test_privacy_matrix.py +637 -0
  525. agent_postmortem-0.3.4/tests/test_r1_scan_risk_parity.py +184 -0
  526. agent_postmortem-0.3.4/tests/test_reader.py +1309 -0
  527. agent_postmortem-0.3.4/tests/test_reader_session.py +396 -0
  528. agent_postmortem-0.3.4/tests/test_readme.py +217 -0
  529. agent_postmortem-0.3.4/tests/test_redact.py +752 -0
  530. agent_postmortem-0.3.4/tests/test_rel_demo.py +69 -0
  531. agent_postmortem-0.3.4/tests/test_rel_scan_all.py +132 -0
  532. agent_postmortem-0.3.4/tests/test_rendered_privacy.py +623 -0
  533. agent_postmortem-0.3.4/tests/test_report_session.py +148 -0
  534. agent_postmortem-0.3.4/tests/test_report_v2.py +450 -0
  535. agent_postmortem-0.3.4/tests/test_rescue.py +1227 -0
  536. agent_postmortem-0.3.4/tests/test_rules.py +453 -0
  537. agent_postmortem-0.3.4/tests/test_rules_propose.py +269 -0
  538. agent_postmortem-0.3.4/tests/test_rules_review.py +349 -0
  539. agent_postmortem-0.3.4/tests/test_scan_triage.py +1044 -0
  540. agent_postmortem-0.3.4/tests/test_state.py +681 -0
  541. agent_postmortem-0.3.4/tests/test_tooling_agent_scope.py +113 -0
  542. agent_postmortem-0.3.4/tests/test_trend.py +336 -0
  543. agent_postmortem-0.3.4/tests/test_watch.py +1474 -0
  544. agent_postmortem-0.3.4/tests/test_wheel.py +128 -0
  545. agent_postmortem-0.3.4/tests/test_workflows.py +79 -0
  546. agent_postmortem-0.3.4/uv.lock +107 -0
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "agent-postmortem",
3
+ "description": "The agent-postmortem plugin for Claude Code: it reads the Claude Code logs already on your machine and tells you which agent's 'done' you can't trust, and what to run next. Claude Code only.",
4
+ "owner": {
5
+ "name": "zeyusuntt"
6
+ },
7
+ "plugins": [
8
+ {
9
+ "name": "agent-postmortem",
10
+ "source": "./plugin",
11
+ "description": "Reads the Claude Code logs already on your machine and tells you which agent's 'done' you can't trust, and what to run next."
12
+ }
13
+ ]
14
+ }
@@ -0,0 +1,54 @@
1
+ name: Crash or error
2
+ description: agent-postmortem crashed, printed an error, or failed to install. For a wrong verdict or confusing output, use those templates.
3
+ title: "[bug]: "
4
+ labels: ["bug"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for filing a bug. The most useful thing you can attach is the
10
+ redacted bug report for the run that triggered it:
11
+
12
+ ```
13
+ agent-postmortem run <id> --bug-report
14
+ ```
15
+
16
+ Redacted: paths, ids, emails, account names, agent names. Evidence
17
+ lines are pointers and marker codes only (no transcript text) at
18
+ the default level. Do not add `--local`, `--raw`, or `--evidence`
19
+ for a report you post here. Read the whole output before posting
20
+ it anyway.
21
+ - type: textarea
22
+ attributes:
23
+ label: What happened
24
+ description: What you expected instead, and what you saw.
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ attributes:
29
+ label: Bug report output
30
+ description: |
31
+ The output of `agent-postmortem run <id> --bug-report` for the run
32
+ that shows the problem, at the default level. Paths, ids, emails,
33
+ account names, and agent names are already redacted, and evidence
34
+ lines carry no transcript text. Read it before pasting.
35
+ render: markdown
36
+ validations:
37
+ required: false
38
+ - type: input
39
+ attributes:
40
+ label: agent-postmortem version
41
+ description: Output of `agent-postmortem --version`.
42
+ validations:
43
+ required: true
44
+ - type: input
45
+ attributes:
46
+ label: Claude Code version
47
+ description: Output of `claude --version`.
48
+ validations:
49
+ required: true
50
+ - type: input
51
+ attributes:
52
+ label: Python version and OS
53
+ validations:
54
+ required: true
@@ -0,0 +1,55 @@
1
+ name: Confusing output
2
+ description: A line or section you could not understand or act on, even though it may be correct.
3
+ title: "[output]: "
4
+ labels: ["confusing-output"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Output that is right but unclear is still a bug. Copy the confusing part
10
+ from the default-level output; if the whole run helps, attach:
11
+
12
+ ```
13
+ agent-postmortem run <run-id> --bug-report
14
+ ```
15
+
16
+ It is redacted by default and carries no transcript text. Read it before
17
+ posting. Do not add `--local`, `--raw` or `--evidence`, and never paste a
18
+ raw transcript here.
19
+ - type: textarea
20
+ attributes:
21
+ label: The confusing line or section
22
+ description: Copied from the default-level output of `run`, `scan`, `rescue`, `watch` or a hook message.
23
+ validations:
24
+ required: true
25
+ - type: textarea
26
+ attributes:
27
+ label: What you expected it to tell you
28
+ description: What you were trying to decide, and what would have made the next step clear.
29
+ validations:
30
+ required: true
31
+ - type: textarea
32
+ attributes:
33
+ label: Bug report output
34
+ description: The output of `agent-postmortem run <run-id> --bug-report`, at the default level.
35
+ render: markdown
36
+ validations:
37
+ required: false
38
+ - type: input
39
+ attributes:
40
+ label: Claude Code version
41
+ description: Output of `claude --version`.
42
+ validations:
43
+ required: true
44
+ - type: input
45
+ attributes:
46
+ label: agent-postmortem version
47
+ description: Output of `agent-postmortem --version`.
48
+ validations:
49
+ required: true
50
+ - type: checkboxes
51
+ attributes:
52
+ label: Privacy
53
+ options:
54
+ - label: I pasted only default-level output (no `--local`, `--raw` or `--evidence`) and no transcript text.
55
+ required: true
@@ -0,0 +1,38 @@
1
+ name: Detector request
2
+ description: Propose a new failure pattern for agent-postmortem to detect.
3
+ title: "[detector]: "
4
+ labels: ["detector-request"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ A good detector request pins down an observable pattern in the run
10
+ data (journal, meta, or transcript), not just a symptom you noticed
11
+ once. See `docs/DESIGN.md` section 4.3 for what an existing detector
12
+ looks like and section 6 for the fixture format.
13
+ - type: textarea
14
+ attributes:
15
+ label: The failure pattern
16
+ description: What silently went wrong, and how you'd recognize it from the run data alone.
17
+ validations:
18
+ required: true
19
+ - type: textarea
20
+ attributes:
21
+ label: Evidence
22
+ description: |
23
+ The output of `agent-postmortem run <id> --bug-report` for a run
24
+ that shows the pattern, at the default level (redacted, no
25
+ transcript text), plus the shape of the evidence in your own words,
26
+ for example "the last user entry is the interrupt sentence and the
27
+ journal has a second started event for the same key". Never paste a
28
+ raw transcript, a `journal.jsonl` line, a real session id or an
29
+ absolute path.
30
+ render: markdown
31
+ validations:
32
+ required: false
33
+ - type: textarea
34
+ attributes:
35
+ label: What rule would have prevented it
36
+ description: If this became a suggested rule (docs/DESIGN.md section 9), what should it say?
37
+ validations:
38
+ required: false
@@ -0,0 +1,70 @@
1
+ name: My run shape isn't covered
2
+ description: You run Claude Code in a way the tool does not read yet (claude -p, background subagents, claude --bg, agent teams, SendMessage, or another shape).
3
+ title: "[run shape]: "
4
+ labels: ["run-shape"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ The README's "What it covers" table lists the shapes the tool handles
10
+ today. Support for a new shape is built from real runs of that shape,
11
+ so a report from you is the most useful thing there is. Attach the
12
+ default-level bug report for one such run:
13
+
14
+ ```
15
+ agent-postmortem run <run-id> --bug-report
16
+ ```
17
+
18
+ It is redacted by default and carries no transcript text. Read it before
19
+ posting. Do not add `--local`, `--raw` or `--evidence`, and never paste a
20
+ raw transcript here. If more detail is needed, we will ask for counts or
21
+ a synthetic reproduction, never for your transcripts.
22
+ - type: dropdown
23
+ attributes:
24
+ label: Run shape
25
+ options:
26
+ - claude -p (headless)
27
+ - Background subagents (run_in_background)
28
+ - claude --bg session
29
+ - Agent team
30
+ - Cross-session messages (SendMessage)
31
+ - Other
32
+ validations:
33
+ required: true
34
+ - type: textarea
35
+ attributes:
36
+ label: What went wrong in that run
37
+ description: What you saw, for example an agent that said "done" but whose work was missing, a killed agent, or a job that never finished, and how you found out.
38
+ validations:
39
+ required: true
40
+ - type: textarea
41
+ attributes:
42
+ label: How the run was launched
43
+ description: The command or setup in general terms (flags, hooks, tools). No prompts and no transcript text.
44
+ validations:
45
+ required: true
46
+ - type: textarea
47
+ attributes:
48
+ label: Bug report output
49
+ description: The output of `agent-postmortem run <run-id> --bug-report`, at the default level.
50
+ render: markdown
51
+ validations:
52
+ required: false
53
+ - type: input
54
+ attributes:
55
+ label: Claude Code version
56
+ description: Output of `claude --version`.
57
+ validations:
58
+ required: true
59
+ - type: input
60
+ attributes:
61
+ label: agent-postmortem version
62
+ description: Output of `agent-postmortem --version`.
63
+ validations:
64
+ required: true
65
+ - type: checkboxes
66
+ attributes:
67
+ label: Privacy
68
+ options:
69
+ - label: I pasted only default-level output (no `--local`, `--raw` or `--evidence`) and no transcript text.
70
+ required: true
@@ -0,0 +1,70 @@
1
+ name: Wrong verdict
2
+ description: agent-postmortem said something about a run that the run does not show (a kill, a retry, a failure, a "done", or a work-at-risk line).
3
+ title: "[verdict]: "
4
+ labels: ["wrong-verdict"]
5
+ body:
6
+ - type: markdown
7
+ attributes:
8
+ value: |
9
+ Thanks for checking the tool against what really happened. Attach the
10
+ default-level bug report for the run:
11
+
12
+ ```
13
+ agent-postmortem run <run-id> --bug-report
14
+ ```
15
+
16
+ It is redacted by default: paths, ids, emails, account names and agent
17
+ names are replaced, and evidence is pointers and marker codes only, with
18
+ no transcript text. Read it before posting. Do not add `--local`,
19
+ `--raw` or `--evidence`, and never paste a raw transcript or a
20
+ `journal.jsonl` line here.
21
+ - type: textarea
22
+ attributes:
23
+ label: What the tool said
24
+ description: The verdict, story or line you think is wrong, copied from the default-level output.
25
+ validations:
26
+ required: true
27
+ - type: textarea
28
+ attributes:
29
+ label: What actually happened
30
+ description: What really happened in that run, and how you know (in your own words, not transcript text).
31
+ validations:
32
+ required: true
33
+ - type: textarea
34
+ attributes:
35
+ label: Bug report output
36
+ description: The output of `agent-postmortem run <run-id> --bug-report`, at the default level.
37
+ render: markdown
38
+ validations:
39
+ required: false
40
+ - type: dropdown
41
+ attributes:
42
+ label: Run shape
43
+ options:
44
+ - Workflow tool run
45
+ - Session with subagents
46
+ - claude -p (headless)
47
+ - Background subagents (run_in_background)
48
+ - claude --bg session
49
+ - Agent team
50
+ - Other
51
+ validations:
52
+ required: true
53
+ - type: input
54
+ attributes:
55
+ label: Claude Code version
56
+ description: Output of `claude --version`.
57
+ validations:
58
+ required: true
59
+ - type: input
60
+ attributes:
61
+ label: agent-postmortem version
62
+ description: Output of `agent-postmortem --version`.
63
+ validations:
64
+ required: true
65
+ - type: checkboxes
66
+ attributes:
67
+ label: Privacy
68
+ options:
69
+ - label: I pasted only default-level output (no `--local`, `--raw` or `--evidence`) and no transcript text.
70
+ required: true
@@ -0,0 +1,11 @@
1
+ ## What this changes and why
2
+
3
+ <!-- One or two sentences. Verdict first: what did not work before, what does now. -->
4
+
5
+ ## Checklist
6
+
7
+ - [ ] Tests were written first (a failing test, then the code that makes it pass), and `uv run pytest` is green.
8
+ - [ ] `uv run ruff check .` is clean.
9
+ - [ ] Privacy check passes: `uv run pytest tests/test_privacy.py` (and, if this touches git history or ref names, `scripts/check-privacy.sh`).
10
+ - [ ] `docs/DESIGN.md` was updated in this same PR if the code departs from what it currently says.
11
+ - [ ] Any fixture added or changed under `tests/fixtures/` or `src/agent_postmortem/demo/` is fully synthetic (fake session id, fake paths, no real prompt text).
@@ -0,0 +1,48 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ permissions:
8
+ contents: read
9
+
10
+ jobs:
11
+ test:
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ os: [ubuntu-latest, macos-latest]
16
+ python-version: ["3.11", "3.12", "3.13"]
17
+ runs-on: ${{ matrix.os }}
18
+ steps:
19
+ - uses: actions/checkout@v4
20
+
21
+ - name: Install uv
22
+ uses: astral-sh/setup-uv@v3
23
+ with:
24
+ python-version: ${{ matrix.python-version }}
25
+
26
+ - name: Install dependencies
27
+ run: uv sync --extra dev
28
+
29
+ - name: Lint
30
+ run: uv run ruff check .
31
+
32
+ - name: Test
33
+ run: uv run pytest
34
+
35
+ - name: Build
36
+ run: uv build
37
+
38
+ - name: Privacy check (tree and built artifacts)
39
+ run: scripts/check-privacy.sh --tree --artifacts dist/
40
+
41
+ - name: Validate Claude Code plugin and marketplace manifests
42
+ run: |
43
+ if command -v claude >/dev/null 2>&1; then
44
+ claude plugin validate --strict ./plugin
45
+ claude plugin validate --strict .
46
+ else
47
+ echo "claude CLI not present on this runner; skipping plugin validation."
48
+ fi
@@ -0,0 +1,83 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: read
10
+
11
+ jobs:
12
+ build:
13
+ runs-on: ubuntu-latest
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v3
19
+ with:
20
+ python-version: "3.13"
21
+
22
+ - name: Install dependencies
23
+ run: uv sync --extra dev
24
+
25
+ - name: Test
26
+ run: uv run pytest
27
+
28
+ - name: Build
29
+ run: uv build
30
+
31
+ - name: Privacy check (built artifacts)
32
+ run: scripts/check-privacy.sh --tree --artifacts dist/
33
+
34
+ - name: Upload dist
35
+ uses: actions/upload-artifact@v4
36
+ with:
37
+ name: dist
38
+ path: dist/
39
+
40
+ github-release:
41
+ needs: build
42
+ runs-on: ubuntu-latest
43
+ permissions:
44
+ contents: write
45
+ steps:
46
+ - uses: actions/checkout@v4
47
+
48
+ - name: Download dist
49
+ uses: actions/download-artifact@v4
50
+ with:
51
+ name: dist
52
+ path: dist/
53
+
54
+ - name: Release notes from CHANGELOG
55
+ run: |
56
+ version="${GITHUB_REF_NAME#v}"
57
+ awk -v v="$version" 'index($0, "## [" v "]") == 1 {f = 1; next} /^## \[/ {if (f) exit} f' CHANGELOG.md > notes.md
58
+ test -s notes.md
59
+
60
+ - name: Create the GitHub release
61
+ env:
62
+ GH_TOKEN: ${{ github.token }}
63
+ run: gh release create "$GITHUB_REF_NAME" dist/* --verify-tag --title "$GITHUB_REF_NAME" --notes-file notes.md
64
+
65
+ publish:
66
+ # PyPI publishing waits for the trusted publisher (CONTRIBUTING.md). Until the repository
67
+ # variable PUBLISH_PYPI is set to 'true', a tag builds and makes the GitHub release, and
68
+ # this job is skipped rather than failed.
69
+ needs: build
70
+ if: vars.PUBLISH_PYPI == 'true'
71
+ runs-on: ubuntu-latest
72
+ environment: pypi
73
+ permissions:
74
+ id-token: write
75
+ steps:
76
+ - name: Download dist
77
+ uses: actions/download-artifact@v4
78
+ with:
79
+ name: dist
80
+ path: dist/
81
+
82
+ - name: Publish to PyPI
83
+ uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,12 @@
1
+ __pycache__/
2
+ *.pyc
3
+ .venv/
4
+ dist/
5
+ build/
6
+ *.egg-info/
7
+ .pytest_cache/
8
+ .DS_Store
9
+ docs/review-*.md.tmp
10
+
11
+ .reviews/
12
+ tests/privacy-denylist.local