agent-postmortem 0.4.0__tar.gz → 0.5.0__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 (607) hide show
  1. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/CHANGELOG.md +98 -0
  2. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/PKG-INFO +11 -7
  3. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/README.md +10 -6
  4. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/docs/DESIGN.md +533 -34
  5. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/plugin/.claude-plugin/plugin.json +1 -1
  6. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/plugin/README.md +22 -1
  7. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/plugin/hooks/hooks.json +23 -0
  8. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/plugin/hooks/run.sh +56 -4
  9. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/pyproject.toml +1 -1
  10. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/__init__.py +1 -1
  11. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/cli.py +169 -9
  12. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/commands.py +535 -5
  13. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/entry.py +11 -1
  14. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/hook_gate.py +106 -14
  15. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/hooks_cli.py +629 -28
  16. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/ledger.py +3 -1
  17. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/live.py +395 -18
  18. agent_postmortem-0.5.0/src/agent_postmortem/pre_bash.py +274 -0
  19. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/report.py +6 -1
  20. agent_postmortem-0.5.0/src/agent_postmortem/stalls.py +205 -0
  21. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/state.py +19 -8
  22. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/status.py +271 -19
  23. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/watch.py +19 -1
  24. agent_postmortem-0.5.0/src/agent_postmortem/watcher.py +413 -0
  25. agent_postmortem-0.5.0/src/agent_postmortem/workers.py +443 -0
  26. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/synthetic-ids.txt +1 -0
  27. agent_postmortem-0.5.0/tests/test_e48_commit_ids_behind_a_prefix.py +276 -0
  28. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fa_commit_no_id.py +6 -4
  29. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_help.py +4 -1
  30. agent_postmortem-0.5.0/tests/test_four_workers_report.py +553 -0
  31. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_plugin.py +122 -0
  32. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_post_tool.py +202 -20
  33. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_commit_grammar.py +27 -4
  34. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixb_differential.py +47 -8
  35. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n9_docs.py +3 -3
  36. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_no_write_surface.py +48 -24
  37. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_plugin.py +21 -5
  38. agent_postmortem-0.5.0/tests/test_pre_bash.py +189 -0
  39. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_privacy_matrix.py +65 -1
  40. agent_postmortem-0.5.0/tests/test_release_050_review.py +471 -0
  41. agent_postmortem-0.5.0/tests/test_resumed_subagent_notice.py +164 -0
  42. agent_postmortem-0.5.0/tests/test_stall_hook.py +239 -0
  43. agent_postmortem-0.5.0/tests/test_stalls.py +849 -0
  44. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_status_commands.py +2 -1
  45. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_status_disclosure.py +1 -1
  46. agent_postmortem-0.5.0/tests/test_stop_deadline.py +241 -0
  47. agent_postmortem-0.5.0/tests/test_stop_watch.py +733 -0
  48. agent_postmortem-0.5.0/tests/test_watch_pipe.py +143 -0
  49. agent_postmortem-0.5.0/tests/test_worker_notice.py +1055 -0
  50. agent_postmortem-0.5.0/tests/test_worker_rows.py +375 -0
  51. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/uv.lock +1 -1
  52. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.claude-plugin/marketplace.json +0 -0
  53. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  54. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/ISSUE_TEMPLATE/confusing_output.yml +0 -0
  55. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/ISSUE_TEMPLATE/detector_request.yml +0 -0
  56. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/ISSUE_TEMPLATE/run_shape_not_covered.yml +0 -0
  57. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/ISSUE_TEMPLATE/wrong_verdict.yml +0 -0
  58. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  59. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/workflows/ci.yml +0 -0
  60. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.github/workflows/release.yml +0 -0
  61. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/.gitignore +0 -0
  62. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/CLAUDE.md +0 -0
  63. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/CONTRIBUTING.md +0 -0
  64. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/LICENSE +0 -0
  65. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/hatch_build.py +0 -0
  66. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/plugin/skills/postmortem/SKILL.md +0 -0
  67. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/plugin/skills/rescue/SKILL.md +0 -0
  68. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/scripts/check-privacy.sh +0 -0
  69. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/scripts/export-public.sh +0 -0
  70. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/scripts/live_fault_injection.py +0 -0
  71. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/scripts/live_replay.py +0 -0
  72. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/scripts/scan_cache_check.py +0 -0
  73. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/argerrors.py +0 -0
  74. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/claims.py +0 -0
  75. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/config.py +0 -0
  76. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000001.jsonl +0 -0
  77. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000001.meta.json +0 -0
  78. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000002.jsonl +0 -0
  79. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000002.meta.json +0 -0
  80. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000003.jsonl +0 -0
  81. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000003.meta.json +0 -0
  82. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000004.jsonl +0 -0
  83. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000004.meta.json +0 -0
  84. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/journal.jsonl +0 -0
  85. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  86. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/__init__.py +0 -0
  87. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/attempt_failed.py +0 -0
  88. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/base.py +0 -0
  89. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/bash_backgrounded.py +0 -0
  90. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/bash_timeout.py +0 -0
  91. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/claim_contradiction.py +0 -0
  92. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/classifier_unavailable.py +0 -0
  93. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/codex_unavailable.py +0 -0
  94. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/codex_write_denied.py +0 -0
  95. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/git_cwd_mismatch.py +0 -0
  96. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/mislabeled_kill.py +0 -0
  97. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/missing_artifact.py +0 -0
  98. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/permission_denied.py +0 -0
  99. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/silent_retry.py +0 -0
  100. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/structured_output_failure.py +0 -0
  101. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/tool_json_error.py +0 -0
  102. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/wasted_time.py +0 -0
  103. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/detectors/workflow_failed.py +0 -0
  104. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/disclosure.py +0 -0
  105. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/hooks/model_allocation_guard.mjs +0 -0
  106. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/markers.py +0 -0
  107. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/models.py +0 -0
  108. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/observe.py +0 -0
  109. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/reader.py +0 -0
  110. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/redact.py +0 -0
  111. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/rescue.py +0 -0
  112. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/returns.py +0 -0
  113. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/rules.py +0 -0
  114. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/severity.py +0 -0
  115. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/statusline.py +0 -0
  116. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/src/agent_postmortem/trend.py +0 -0
  117. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/conftest.py +0 -0
  118. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/README.md +0 -0
  119. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/demo__share.txt +0 -0
  120. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rescue_plan__local.txt +0 -0
  121. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rescue_plan__raw.txt +0 -0
  122. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rescue_plan__share.txt +0 -0
  123. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rescue_status__local.txt +0 -0
  124. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rescue_status__raw.txt +0 -0
  125. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rescue_status__share.txt +0 -0
  126. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules__local.txt +0 -0
  127. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules__raw.txt +0 -0
  128. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules__share.txt +0 -0
  129. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_all__local.txt +0 -0
  130. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_all__raw.txt +0 -0
  131. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_all__share.txt +0 -0
  132. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_propose__local.txt +0 -0
  133. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_propose__raw.txt +0 -0
  134. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_propose__share.txt +0 -0
  135. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_review__local.txt +0 -0
  136. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_review__raw.txt +0 -0
  137. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_review__share.txt +0 -0
  138. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_show__local.txt +0 -0
  139. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_show__raw.txt +0 -0
  140. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/rules_show__share.txt +0 -0
  141. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/run__local.txt +0 -0
  142. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/run__raw.txt +0 -0
  143. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/run__share.txt +0 -0
  144. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/scan__local.txt +0 -0
  145. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/scan__raw.txt +0 -0
  146. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/scan__share.txt +0 -0
  147. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/scan_all__local.txt +0 -0
  148. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/scan_all__raw.txt +0 -0
  149. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/scan_all__share.txt +0 -0
  150. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/trend__local.txt +0 -0
  151. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/trend__raw.txt +0 -0
  152. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/golden/schema3/trend__share.txt +0 -0
  153. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000001.jsonl +0 -0
  154. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000001.meta.json +0 -0
  155. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000002.jsonl +0 -0
  156. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000002.meta.json +0 -0
  157. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000003.jsonl +0 -0
  158. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000003.meta.json +0 -0
  159. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000004.jsonl +0 -0
  160. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000004.meta.json +0 -0
  161. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000005.jsonl +0 -0
  162. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000005.meta.json +0 -0
  163. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000006.jsonl +0 -0
  164. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000006.meta.json +0 -0
  165. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000008.jsonl +0 -0
  166. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000008.meta.json +0 -0
  167. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000009.jsonl +0 -0
  168. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000009.meta.json +0 -0
  169. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000010.jsonl +0 -0
  170. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000010.meta.json +0 -0
  171. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000011.jsonl +0 -0
  172. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000011.meta.json +0 -0
  173. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/journal.jsonl +0 -0
  174. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000001.jsonl +0 -0
  175. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000001.meta.json +0 -0
  176. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000002.jsonl +0 -0
  177. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000002.meta.json +0 -0
  178. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000003.jsonl +0 -0
  179. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000003.meta.json +0 -0
  180. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000004.jsonl +0 -0
  181. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000004.meta.json +0 -0
  182. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000005.jsonl +0 -0
  183. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000005.meta.json +0 -0
  184. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000006.jsonl +0 -0
  185. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000006.meta.json +0 -0
  186. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000007.jsonl +0 -0
  187. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000007.meta.json +0 -0
  188. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a1.jsonl +0 -0
  189. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a1.meta.json +0 -0
  190. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a2.jsonl +0 -0
  191. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a2.meta.json +0 -0
  192. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a3.jsonl +0 -0
  193. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a3.meta.json +0 -0
  194. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a4.jsonl +0 -0
  195. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a4.meta.json +0 -0
  196. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_causes/journal.jsonl +0 -0
  197. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000001.jsonl +0 -0
  198. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000001.meta.json +0 -0
  199. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000002.jsonl +0 -0
  200. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000002.meta.json +0 -0
  201. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afb10000000000001.jsonl +0 -0
  202. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afb10000000000001.meta.json +0 -0
  203. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/attempt_failed_retry_tail/journal.jsonl +0 -0
  204. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/bash_backgrounded_timeout/agent-ac300000000000001.jsonl +0 -0
  205. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/bash_backgrounded_timeout/agent-ac300000000000001.meta.json +0 -0
  206. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/bash_backgrounded_timeout/journal.jsonl +0 -0
  207. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/claim_contradiction/journal.jsonl +0 -0
  208. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/clean_run/agent-ac100000000000001.jsonl +0 -0
  209. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/clean_run/agent-ac100000000000001.meta.json +0 -0
  210. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/clean_run/agent-ac100000000000002.jsonl +0 -0
  211. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/clean_run/agent-ac100000000000002.meta.json +0 -0
  212. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/clean_run/journal.jsonl +0 -0
  213. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000001.jsonl +0 -0
  214. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000001.meta.json +0 -0
  215. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000002.jsonl +0 -0
  216. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000002.meta.json +0 -0
  217. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000003.jsonl +0 -0
  218. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000003.meta.json +0 -0
  219. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000004.jsonl +0 -0
  220. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000004.meta.json +0 -0
  221. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_unavailable/journal.jsonl +0 -0
  222. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000001.jsonl +0 -0
  223. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000001.meta.json +0 -0
  224. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000002.jsonl +0 -0
  225. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000002.meta.json +0 -0
  226. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000003.jsonl +0 -0
  227. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000003.meta.json +0 -0
  228. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/codex_write_denied/journal.jsonl +0 -0
  229. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/evidence_noise/agent-acf00000000000001.jsonl +0 -0
  230. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/evidence_noise/agent-acf00000000000001.meta.json +0 -0
  231. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/evidence_noise/journal.jsonl +0 -0
  232. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ae300000000000001.jsonl +0 -0
  233. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ae300000000000001.meta.json +0 -0
  234. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000001.jsonl +0 -0
  235. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000001.meta.json +0 -0
  236. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000002.jsonl +0 -0
  237. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000002.meta.json +0 -0
  238. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/journal.jsonl +0 -0
  239. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/agent-ae200000000000001.jsonl +0 -0
  240. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/agent-ae200000000000001.meta.json +0 -0
  241. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/journal.jsonl +0 -0
  242. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  243. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/incomplete_journal/agent-ad000000000000001.jsonl +0 -0
  244. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/incomplete_journal/agent-ad000000000000001.meta.json +0 -0
  245. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/incomplete_journal/journal.jsonl +0 -0
  246. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000001.jsonl +0 -0
  247. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000001.meta.json +0 -0
  248. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000003.jsonl +0 -0
  249. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000003.meta.json +0 -0
  250. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000004.jsonl +0 -0
  251. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000004.meta.json +0 -0
  252. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/journal.jsonl +0 -0
  253. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  254. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_orphan_failed/journal.jsonl +0 -0
  255. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad200000000000001.jsonl +0 -0
  256. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad200000000000001.meta.json +0 -0
  257. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad300000000000001.jsonl +0 -0
  258. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad300000000000001.meta.json +0 -0
  259. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000001.jsonl +0 -0
  260. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000001.meta.json +0 -0
  261. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000002.jsonl +0 -0
  262. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000002.meta.json +0 -0
  263. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000001.jsonl +0 -0
  264. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000001.meta.json +0 -0
  265. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000002.jsonl +0 -0
  266. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000002.meta.json +0 -0
  267. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000001.jsonl +0 -0
  268. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000001.meta.json +0 -0
  269. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000002.jsonl +0 -0
  270. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000002.meta.json +0 -0
  271. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad700000000000001.jsonl +0 -0
  272. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad700000000000001.meta.json +0 -0
  273. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad800000000000001.jsonl +0 -0
  274. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/agent-ad800000000000001.meta.json +0 -0
  275. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_resolved/journal.jsonl +0 -0
  276. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_unresolved/agent-ad900000000000001.jsonl +0 -0
  277. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_unresolved/agent-ad900000000000001.meta.json +0 -0
  278. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/journal_state_unresolved/journal.jsonl +0 -0
  279. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/missing_artifact/agent-ac600000000000001.jsonl +0 -0
  280. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/missing_artifact/agent-ac600000000000001.meta.json +0 -0
  281. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/missing_artifact/agent-ac600000000000002.jsonl +0 -0
  282. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/missing_artifact/agent-ac600000000000002.meta.json +0 -0
  283. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/missing_artifact/journal.jsonl +0 -0
  284. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_a0000000-001/journal.jsonl +0 -0
  285. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a1111111111111111.jsonl +0 -0
  286. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a1111111111111111.meta.json +0 -0
  287. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a2222222222222222.jsonl +0 -0
  288. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a2222222222222222.meta.json +0 -0
  289. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/journal.jsonl +0 -0
  290. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_c0000000-003/journal.jsonl +0 -0
  291. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/agent-ad100000000000001.jsonl +0 -0
  292. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/agent-ad100000000000001.meta.json +0 -0
  293. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/journal.jsonl +0 -0
  294. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000001.jsonl +0 -0
  295. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000001.meta.json +0 -0
  296. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000002.jsonl +0 -0
  297. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000002.meta.json +0 -0
  298. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000003.jsonl +0 -0
  299. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000003.meta.json +0 -0
  300. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000004.jsonl +0 -0
  301. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000004.meta.json +0 -0
  302. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000005.jsonl +0 -0
  303. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/agent-af000000000000005.meta.json +0 -0
  304. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/self_reference/journal.jsonl +0 -0
  305. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_bridge_only/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  306. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000001.jsonl +0 -0
  307. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000001.meta.json +0 -0
  308. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000002.jsonl +0 -0
  309. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000002.meta.json +0 -0
  310. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  311. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-aca00000000000001.jsonl +0 -0
  312. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-aca00000000000001.meta.json +0 -0
  313. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  314. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_dedup/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  315. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac900000000000001.jsonl +0 -0
  316. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac900000000000001.meta.json +0 -0
  317. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  318. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acc00000000000001.jsonl +0 -0
  319. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acc00000000000001.meta.json +0 -0
  320. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  321. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acb00000000000001.jsonl +0 -0
  322. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acb00000000000001.meta.json +0 -0
  323. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  324. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acd00000000000001.jsonl +0 -0
  325. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acd00000000000001.meta.json +0 -0
  326. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  327. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ace00000000000001.jsonl +0 -0
  328. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ace00000000000001.meta.json +0 -0
  329. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
  330. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/structured_output_corrupt/agent-ac400000000000001.jsonl +0 -0
  331. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/structured_output_corrupt/agent-ac400000000000001.meta.json +0 -0
  332. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/fixtures/runs/structured_output_corrupt/journal.jsonl +0 -0
  333. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/g_corpus_support.py +0 -0
  334. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/g_helpers.py +0 -0
  335. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/g_independent_return.py +0 -0
  336. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/live_helpers.py +0 -0
  337. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n3b_helpers.py +0 -0
  338. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n3b_planted.py +0 -0
  339. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n4_reference_commands.py +0 -0
  340. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n4b2_helpers.py +0 -0
  341. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n5b_helpers.py +0 -0
  342. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n5c1_helpers.py +0 -0
  343. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n5c2_helpers.py +0 -0
  344. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/n6_helpers.py +0 -0
  345. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/privacy_rules.py +0 -0
  346. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/rule_fixtures.py +0 -0
  347. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_attempt_facts.py +0 -0
  348. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_attempt_failed.py +0 -0
  349. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_attribution.py +0 -0
  350. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_bug_report.py +0 -0
  351. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_build_identity.py +0 -0
  352. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_claim_contradiction.py +0 -0
  353. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_cli_smoke.py +0 -0
  354. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_codex_unavailable.py +0 -0
  355. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_config.py +0 -0
  356. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_deep_lines.py +0 -0
  357. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_detectors_base.py +0 -0
  358. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_detectors_core.py +0 -0
  359. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_detectors_registry.py +0 -0
  360. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_detectors_tooling.py +0 -0
  361. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_disclosure_primitives.py +0 -0
  362. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_empty_state.py +0 -0
  363. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_export.py +0 -0
  364. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_export_public.py +0 -0
  365. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fa_fork.py +0 -0
  366. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fa_generations.py +0 -0
  367. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fa_path_token.py +0 -0
  368. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fa_return_boundary.py +0 -0
  369. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fa_wasted.py +0 -0
  370. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_failed_meaning.py +0 -0
  371. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fb_here.py +0 -0
  372. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fb_live_now.py +0 -0
  373. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fb_rescue_live.py +0 -0
  374. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix10_redact.py +0 -0
  375. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix11_redact.py +0 -0
  376. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix12_redact.py +0 -0
  377. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix1_commit.py +0 -0
  378. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix1_launch.py +0 -0
  379. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix1_poll.py +0 -0
  380. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix1_redact.py +0 -0
  381. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix2_launch.py +0 -0
  382. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix2_poll.py +0 -0
  383. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix2_redact.py +0 -0
  384. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix3_redact.py +0 -0
  385. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix4_fuzz.py +0 -0
  386. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix4_lexer.py +0 -0
  387. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix4_redact.py +0 -0
  388. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix4_sinks.py +0 -0
  389. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix5_lexer.py +0 -0
  390. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix5_redact.py +0 -0
  391. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix5_sinks.py +0 -0
  392. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix6_fuzz.py +0 -0
  393. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix6_hook.py +0 -0
  394. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix6_lexer.py +0 -0
  395. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix6_redact.py +0 -0
  396. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix6_sinks.py +0 -0
  397. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix6b_title.py +0 -0
  398. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix7_e2e.py +0 -0
  399. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix7_fuzz.py +0 -0
  400. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix7_redact.py +0 -0
  401. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix7_sinks.py +0 -0
  402. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix7_title.py +0 -0
  403. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix8_e2e.py +0 -0
  404. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix8_fuzz.py +0 -0
  405. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix8_redact.py +0 -0
  406. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix8_sinks.py +0 -0
  407. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix9_e2e.py +0 -0
  408. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix9_fuzz.py +0 -0
  409. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix9_redact.py +0 -0
  410. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_fix9_sinks.py +0 -0
  411. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_scan.py +0 -0
  412. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_table.py +0 -0
  413. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fc_wording.py +0 -0
  414. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_field_v03.py +0 -0
  415. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_field_v03_more.py +0 -0
  416. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_filter_scope.py +0 -0
  417. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fixa_discovery.py +0 -0
  418. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fixa_enqueue.py +0 -0
  419. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fixa_reader.py +0 -0
  420. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_fork_hook_identity.py +0 -0
  421. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_a1_hooks.py +0 -0
  422. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_a1_return.py +0 -0
  423. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_b1.py +0 -0
  424. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_c.py +0 -0
  425. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_commit_sentences.py +0 -0
  426. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_commits.py +0 -0
  427. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_consumers.py +0 -0
  428. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_corpus.py +0 -0
  429. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_denied.py +0 -0
  430. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_failed.py +0 -0
  431. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_here.py +0 -0
  432. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_hooks.py +0 -0
  433. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_registry.py +0 -0
  434. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_rescue.py +0 -0
  435. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_return.py +0 -0
  436. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_g_selfreport.py +0 -0
  437. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_hooks_benchmark.py +0 -0
  438. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_hooks_cli.py +0 -0
  439. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_journal_malformed_fields.py +0 -0
  440. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_journal_state.py +0 -0
  441. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_launch_docs.py +0 -0
  442. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_branch_review.py +0 -0
  443. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_hooks.py +0 -0
  444. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_nested_return.py +0 -0
  445. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_post_tool_review.py +0 -0
  446. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_release_review.py +0 -0
  447. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_replay.py +0 -0
  448. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_review_fixes.py +0 -0
  449. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_scan.py +0 -0
  450. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_scan_cache.py +0 -0
  451. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_session.py +0 -0
  452. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_status.py +0 -0
  453. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_statusline.py +0 -0
  454. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_store.py +0 -0
  455. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_watch_cli.py +0 -0
  456. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_watch_workflow.py +0 -0
  457. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_live_words_doc.py +0 -0
  458. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_model_allocation_guard.py +0 -0
  459. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n1_markers.py +0 -0
  460. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n1_parent_index.py +0 -0
  461. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n2_lifecycle.py +0 -0
  462. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_apply.py +0 -0
  463. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_canonical_ids.py +0 -0
  464. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_context.py +0 -0
  465. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_demo.py +0 -0
  466. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_first_line.py +0 -0
  467. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_dedupe.py +0 -0
  468. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_demo.py +0 -0
  469. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_local_path.py +0 -0
  470. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_names.py +0 -0
  471. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_paths_c4.py +0 -0
  472. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_paths_c6.py +0 -0
  473. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_paths_s10.py +0 -0
  474. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_paths_s4.py +0 -0
  475. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixa_titles.py +0 -0
  476. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixb_hook_group.py +0 -0
  477. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixb_noident_pointer.py +0 -0
  478. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixb_repr_tokens.py +0 -0
  479. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixb_rescue_c1.py +0 -0
  480. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixb_run_ids.py +0 -0
  481. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixb_traversal.py +0 -0
  482. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixr2_ids.py +0 -0
  483. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixr2_paths.py +0 -0
  484. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixr2_raw_dupes.py +0 -0
  485. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_fixr2_schema2_hostile.py +0 -0
  486. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_flags.py +0 -0
  487. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_handler_errors.py +0 -0
  488. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_hooks.py +0 -0
  489. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_local_path.py +0 -0
  490. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_local_scrub.py +0 -0
  491. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_parser_errors.py +0 -0
  492. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_part2_slow_path.py +0 -0
  493. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_part3_sinks.py +0 -0
  494. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_pointers.py +0 -0
  495. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_reader.py +0 -0
  496. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_rescue.py +0 -0
  497. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_residual_sinks.py +0 -0
  498. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_rules_trend.py +0 -0
  499. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_run_fallback.py +0 -0
  500. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_run_local.py +0 -0
  501. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_run_noncanonical_agent.py +0 -0
  502. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_run_path_matrix.py +0 -0
  503. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_run_share.py +0 -0
  504. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_scan.py +0 -0
  505. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_slow_path.py +0 -0
  506. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n3b_watch.py +0 -0
  507. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_base_repo.py +0 -0
  508. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_lexer.py +0 -0
  509. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_measure.py +0 -0
  510. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_readonly.py +0 -0
  511. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_rows.py +0 -0
  512. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4a_write_grammar.py +0 -0
  513. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b1_discovery.py +0 -0
  514. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b1_reader_facts.py +0 -0
  515. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b1_schema2.py +0 -0
  516. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b2_forms.py +0 -0
  517. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b2_measure.py +0 -0
  518. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b2_population.py +0 -0
  519. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b2_reasons.py +0 -0
  520. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b2_repo_groups.py +0 -0
  521. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4b2_rows.py +0 -0
  522. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixb_c3.py +0 -0
  523. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixb_minor.py +0 -0
  524. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixb_s3.py +0 -0
  525. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixb_s4.py +0 -0
  526. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixb_s5_s10.py +0 -0
  527. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixc_a4.py +0 -0
  528. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixd_a5.py +0 -0
  529. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n4fixe_a5.py +0 -0
  530. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5_schema3_goldens.py +0 -0
  531. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5a1_schema3.py +0 -0
  532. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5a2_docs.py +0 -0
  533. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5b_detectors.py +0 -0
  534. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5b_inputs.py +0 -0
  535. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5b_severity.py +0 -0
  536. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5b_verdict.py +0 -0
  537. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_gaps.py +0 -0
  538. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_look.py +0 -0
  539. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_observation_export.py +0 -0
  540. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_observe.py +0 -0
  541. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_rescue.py +0 -0
  542. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_returned.py +0 -0
  543. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c1_work_at_risk.py +0 -0
  544. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c2_exit_codes.py +0 -0
  545. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c2_misc.py +0 -0
  546. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5c2_status_repos.py +0 -0
  547. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5fix1_misc.py +0 -0
  548. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5fix1_plan.py +0 -0
  549. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5fix1_returned.py +0 -0
  550. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5fix1_severity.py +0 -0
  551. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n5fix1_status.py +0 -0
  552. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_alias_state.py +0 -0
  553. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_cwd.py +0 -0
  554. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_docs.py +0 -0
  555. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_fix1.py +0 -0
  556. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_here_run.py +0 -0
  557. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_here_scan.py +0 -0
  558. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_pins.py +0 -0
  559. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_resolve.py +0 -0
  560. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_roundtrip.py +0 -0
  561. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n6_stderr.py +0 -0
  562. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n7_detectors.py +0 -0
  563. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_fix1.py +0 -0
  564. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_fix2.py +0 -0
  565. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_k1_killed.py +0 -0
  566. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_k2_what_to_do.py +0 -0
  567. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_k3_precursor.py +0 -0
  568. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_k4_rescue.py +0 -0
  569. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_k5_watch.py +0 -0
  570. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n8_k6_rules.py +0 -0
  571. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_n9_release_gate.py +0 -0
  572. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_no_lazy_fetch.py +0 -0
  573. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_observe.py +0 -0
  574. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_privacy.py +0 -0
  575. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_r1_scan_risk_parity.py +0 -0
  576. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_reader.py +0 -0
  577. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_reader_session.py +0 -0
  578. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_readme.py +0 -0
  579. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_redact.py +0 -0
  580. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rel_demo.py +0 -0
  581. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rel_scan_all.py +0 -0
  582. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_release_review.py +0 -0
  583. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_removed_worktree.py +0 -0
  584. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rendered_privacy.py +0 -0
  585. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_report_session.py +0 -0
  586. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_report_v2.py +0 -0
  587. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rescue.py +0 -0
  588. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rescue_brief_scope.py +0 -0
  589. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rules.py +0 -0
  590. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rules_propose.py +0 -0
  591. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rules_propose_cache.py +0 -0
  592. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_rules_review.py +0 -0
  593. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_run_id_errors.py +0 -0
  594. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_scan_own_marker.py +0 -0
  595. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_scan_totals_window.py +0 -0
  596. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_scan_triage.py +0 -0
  597. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_share_label_case.py +0 -0
  598. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_state.py +0 -0
  599. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_status_workflows.py +0 -0
  600. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_story_plurals.py +0 -0
  601. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_tooling_agent_scope.py +0 -0
  602. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_transcript_cache.py +0 -0
  603. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_transcript_memo.py +0 -0
  604. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_trend.py +0 -0
  605. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_watch.py +0 -0
  606. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_wheel.py +0 -0
  607. {agent_postmortem-0.4.0 → agent_postmortem-0.5.0}/tests/test_workflows.py +0 -0
@@ -5,6 +5,104 @@ All notable changes to this project are documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.5.0]
9
+
10
+ 0.5 tells a session about the workers it launched, with nothing to arm. Claude Code records a
11
+ background session's state in its job file and tells nobody: a worker sat 8.5 hours on a
12
+ permission prompt while the session that launched it heard nothing. Now that session reads one
13
+ line at its next tool call or prompt, and an idle session is woken for it. This needs the plugin;
14
+ without it, `status` and `scan` print the same reasons when someone runs them.
15
+
16
+ ### Added
17
+
18
+ - Worker notice. The plugin reads the `claude --bg` in the session's own Bash call and follows
19
+ that worker from then on: `WORKER night-run (a1b2c3d4) blocked 15m: waiting for a permission
20
+ approval (approve Entering worktree). A person must approve it: claude attach a1b2c3d4`. A
21
+ permission prompt, a question, a first prompt never sent, an API error, a failure and a worker
22
+ idle on a stuck command each have their own line, told once per change at the next tool call
23
+ or prompt, ahead of anything else the hook has to say. A worker that delivered gets a one-line
24
+ note with no problem word. The worker's own words are never printed: only the name its launch
25
+ printed, the short id and a permission's tool. A worker that finishes on its own schedule is
26
+ told finishing twice, then not until trouble. A first look after an upgrade tells trouble from
27
+ the last 24 hours and deliveries from the last 10 minutes, and records the rest silently. A
28
+ launch by a subagent, by another session or by a Bash call that ran in the background is not
29
+ linked; `status` and `scan` still list those workers.
30
+ - Idle wake. Every Stop starts a watcher (`hook stop-watch`, an `asyncRewake` hook) when the
31
+ session has a worker or a running command to follow, and it wakes an idle session with the
32
+ same line. It checks every 20 s, wakes at most once per 5 minutes, leaves as soon as the session
33
+ acts again, and gives a worker's own report 2 minutes to arrive before it wakes for a delivery.
34
+ A session is never woken for a line it could not record as told, and any error exits without
35
+ waking it. It needs Claude Code 2.1.314 or later, a reboot loses it until the next Stop, and
36
+ `AGENT_POSTMORTEM_WAKE=0` turns it off. A running session starts it after `/reload-plugins` or
37
+ a restart; the per-call line does not need either.
38
+ - Reason classes in `status` and `scan`. A BLOCKED row says what the session waits for
39
+ (`waiting for a permission approval`, `waiting for an answer`, `stopped on an API error`, `the
40
+ reason is not recorded`) and `dispatched by this session` when it did, those rows first. A
41
+ worker that delivered and waits on a decision has its own DELIVERED row. `--local` adds the
42
+ tool and the command that helps (`-> claude attach <id>`, `-> claude logs <id>`), `status
43
+ --json` adds `class` and `mine`, and `--local` adds `label` and `short`. Another session's row
44
+ older than 3 days folds into one count line.
45
+ - `scan` lists under NEEDS ATTENTION every background session waiting on a person or failed in
46
+ the last day, read at scan time and whatever `--since` says, the caller's own workers first. One
47
+ that delivered is not listed. `scan --json` gains `blocked` only when one is listed.
48
+ - Stall checks. A background command whose output has not changed for 30 minutes, or whose output
49
+ ends in codex's "Reading additional input from stdin..." for 2 minutes, is told once through a
50
+ COMMAND line at the next tool call or prompt. `status` prints a STALLED row and `scan` lists the
51
+ session first under NEEDS ATTENTION when its process is alive, its turn ended 30 minutes ago and
52
+ nothing is set to wake it. The BACKGROUND line counts such a session as stalled, not working. A
53
+ command under a real `timeout`, a timer by any path to `sleep`, or one carrying the marker
54
+ `# postmortem: silent-wait` is quiet by design, and only the stdin rule still speaks for it. So
55
+ is `perl -e 'alarm N; exec @ARGV' ...` or `'alarm shift; exec @ARGV' N ...`, in that exact shape
56
+ with only exact, literal steps around it. Any other wrapper is told once, in words that say it
57
+ may be fine: a loose rule would silence the only alarm for a real hang.
58
+ - Codex stdin warning. `hook pre-bash` warns before a background `codex exec` with no stdin
59
+ redirect runs: codex reads stdin to its end when it is not a terminal, and one review hung
60
+ 26 hours that way.
61
+ - A Stop with a background command still running asks the session to arm a deadline, once per
62
+ command, wherever the idle watcher would not catch a hang: an interactive session, an older
63
+ Claude Code or plugin, or a command whose output the watcher cannot read (`> "$LOG"`).
64
+ A Monitor or a wake that can still fire counts as that deadline.
65
+ - A background session whose subagents and workflows have all ended, with no `status`, `scan`,
66
+ `run` or `watch` of this tool since, is reminded once at a Stop with nothing else to say to run
67
+ `status` before reporting done. An interactive session gets none, and
68
+ `AGENT_POSTMORTEM_WATCH_HINT=0` turns it off.
69
+ - At a session start with nothing else to say, at most once a day, the plugin says so when the
70
+ `agent-postmortem` on PATH is older than the plugin and its newer hooks stay silent. `hook
71
+ capabilities` lists `hooks`, and an older CLI is never started for `stop-watch`.
72
+
73
+ ### Changed
74
+
75
+ - A tool call with nothing new starts about a third faster: 26 ms down to 15 ms for the CLI on Linux,
76
+ measured in a container. It no longer loads `dataclasses`, `tempfile`, `secrets` or `datetime`,
77
+ nor OpenSSL where Python has its builtin sha256, and that call uses none of them. Every tool call
78
+ of every session pays this.
79
+ - `watch` flushes every line. A Monitor reads it through a pipe, where block buffering delivered
80
+ nothing until the run ended. It also stops quietly when its reader closes the pipe.
81
+ - `watch --session`, `status` and `scan` read a worker's `tempo` before its `state`, which is
82
+ written only when a turn ends: a worker on a permission prompt reads `state: working, tempo:
83
+ blocked`, and one given a new prompt reads `state: blocked, tempo: active`.
84
+ - The top-level help names `watch --session` and a background worker's blocked or needs-input
85
+ state.
86
+ - In a session that is itself a background worker, `status` lists only the rows it launched and
87
+ ends the count line with `; this session launched <n>, scan lists the rest`. `--json` keeps every
88
+ row with its owner, and if it launched a worker whose id it never saw, all rows stay.
89
+
90
+ ### Fixed
91
+
92
+ - `status` no longer keeps a finished subagent as RUNNING. A subagent resumed by a message ends
93
+ with a notice naming only its task, no tool-use id, and the live read dropped it, so the first
94
+ notice stood while the transcript grew past it. It now counts when the task is a subagent this
95
+ session launched.
96
+ - A commit's id is read per segment of the shell command. When an assignment or expansion
97
+ elsewhere in the command made the whole command unplaced, an agent's printed summary line was
98
+ dropped and its COMMITS read `?`. Substitutions that spell a commit still read `?`.
99
+ - A Monitor no longer gets the deadline request (Claude Code lists it as a plain shell task, so a
100
+ Monitor is now known from the session's own Monitor calls), and a deliberately silent wait no
101
+ longer reads as hung and suggests stopping it.
102
+ - On CI the hook-speed test compares a nothing-new call with a bare start of the same interpreter
103
+ in interleaved rounds. A shared runner read 152 ms against the 150 ms budget on a correct
104
+ build; the 150 ms test still runs where CI is unset.
105
+
8
106
  ## [0.4.0]
9
107
 
10
108
  0.4 adds live mode: the tool checks a subagent's "done" the moment it returns, and tells the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agent-postmortem
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: 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.
5
5
  Project-URL: Homepage, https://github.com/zeyusuntt/agent-postmortem
6
6
  Project-URL: Issues, https://github.com/zeyusuntt/agent-postmortem/issues
@@ -23,9 +23,13 @@ Description-Content-Type: text/markdown
23
23
 
24
24
  # agent-postmortem
25
25
 
26
- Which "done" in your last Claude Code run can't you trust?
26
+ Claude Code records the state. The plugin tells you.
27
27
 
28
- agent-postmortem reads the transcripts Claude Code already wrote under `~/.claude/projects` and, for every Workflow run and every session with subagents, says which agents were killed (in a Workflow, often quietly started over), which never returned, which said "done" while their own result said otherwise, and which files and commits that left at risk. Then it lists at most 3 next steps. No setup, no proxy, no LLM, no network access, and it never changes your files.
28
+ One night a background worker sat 8.5 hours on a permission prompt. Its job file said `blocked` and `approve Entering worktree`, the session that launched it heard nothing, and its agent list showed the worker as idle. With the plugin, that session reads this at its next tool call, and an idle session is woken for it: `WORKER night-run (a1b2c3d4) blocked 15m: waiting for a permission approval (approve Entering worktree). A person must approve it: claude attach a1b2c3d4`.
29
+
30
+ Nothing has to be armed. The plugin reads the `claude --bg` in the session's own Bash call and follows that worker from then on. A permission prompt, a question, an API error, a failure, or a worker idle on a command that never ends is told once per change, and a worker that delivered gets a one-line note. `AGENT_POSTMORTEM_WAKE=0` keeps a session from being woken.
31
+
32
+ Which "done" in your last Claude Code run can't you trust? agent-postmortem reads the transcripts Claude Code already wrote under `~/.claude/projects` and, for every Workflow run and every session with subagents, says which agents were killed (in a Workflow, often quietly started over), which never returned, which said "done" while their own result said otherwise, and which files and commits that left at risk. Then it lists at most 3 next steps. No setup, no proxy, no LLM, no network access, and it never changes your files.
29
33
 
30
34
  On the maintainer's machine (scan 2026-10-27, 0.3.2), 13 of 166 workflow runs launched at least one agent's task a second time, and 10.2 hours went to retries and to attempts that ended without a result.
31
35
 
@@ -90,7 +94,7 @@ Coverage today, checked against the failure reports in Claude Code's issue track
90
94
  | Subagents that never returned | covered | WORK AT RISK says `unknown` instead of `none`, and names them |
91
95
  | `claude -p` (headless) | partial | killed and unreturned subagents show; with the plugin, a foreground subagent that returns on an error or without its prompted output file is reported at once. The process's own exit status (for example exit 0 with `result: success` after a kill) is not in the transcript, so the tool cannot see it |
92
96
  | Background subagents (`run_in_background`) | partial | killed and unreturned ones show; a "completed" that arrived while the agent's own background work was still running, or with a tool call that never got a result, is not flagged yet |
93
- | `claude --bg` sessions | partial | each job's session is read like any session; `watch --session` and `status` pass the job's own state (working, blocked, done, stopped) through as Claude Code records it, and a resumed session hears which of its subagents never returned. Work still in flight inside the job is not modeled |
97
+ | `claude --bg` sessions | partial | with the plugin, the session that launched a worker is told each change at its next tool call or prompt and woken when idle (permission prompt, question, API error, failure, a stuck command, delivered). `status` and `scan` give the same reason when someone runs them, and `watch --session` prints each state change. Not linked: a launch by a subagent, by another session, or by a Bash call that itself ran in the background; `status` and `scan` still list those. "No report past its expected time" is not covered, since nothing records an expected time |
94
98
  | Agent teams | not yet | teammates and their idle or blocked states are not modeled |
95
99
  | Cross-session messages (`SendMessage`) | not yet | whether a message was delivered is not checked |
96
100
 
@@ -140,7 +144,7 @@ Verdict: 0.3 stops guessing. Severity, the WORK AT RISK block, and the run's end
140
144
  | `agent-postmortem rescue status <run-id>` | Print what the main session's own transcript shows was run and observed after the run ended. Reports only what it saw, never a confirmation that a check passed. |
141
145
  | `agent-postmortem watch <run-id>` | Follow one running workflow: print START, then KILL, FAILED, OK (a result came back), and QUIET as they happen, then DONE or LIMIT. DONE comes the moment the session's own record says the run ended, or after a grace period once every journal key is resolved. Read-only, designed to be a Claude Code Monitor command. |
142
146
  | `agent-postmortem watch --session [<session-id>]` | Follow one session while it runs, for a Claude Code Monitor: a line only when a subagent is interrupted with nothing in the session to explain it, fails after changing files, or returns while its own last entry says otherwise, plus background-session state changes. With no id it follows the session you are in. |
143
- | `agent-postmortem status [<session-id>]` | One snapshot of a session: its subagents running, returned, interrupted or failed, what an interrupted one changed, returns its own transcript contradicts, and the background sessions' states. Reads only what was appended since the last call. |
147
+ | `agent-postmortem status [<session-id>]` | One snapshot of a session: its subagents running, returned, interrupted or failed, what an interrupted one changed, returns its own transcript contradicts, and the background sessions' states with what each waits for and whether this session dispatched it (a session that is itself a background worker lists only the rows it launched). Reads only what was appended since the last call. |
144
148
  | `agent-postmortem statusline subagents` | A `subagentStatusLine` command: adds a fact to a row of Claude Code's subagent panel and leaves every other row as Claude Code draws it. |
145
149
  | `agent-postmortem hook <event>` | Claude Code plugin hook entry point; reads hook JSON from stdin. |
146
150
 
@@ -190,7 +194,7 @@ Install the command-line tool first (Quick start above), so the plugin finds it
190
194
  /plugin install agent-postmortem@agent-postmortem
191
195
  ```
192
196
 
193
- Its hooks shell out to the same CLI, never touch a run directory, and never fail a turn. After every tool call and on every prompt they check the session's own subagents: one that was interrupted with nothing in the session to explain it, failed after changing files, or returned while its own transcript contradicts the return is reported to the agent at its next tool call, once. A call with nothing new prints nothing. On `SessionStart` they summarize any run that finished since you last looked, and a resumed session hears which of its own subagents never returned. On `Stop` and `StopFailure` they check every subagent and workflow unit spawned so far and print a finding the moment it is detected, not only at session end. On `SessionEnd` they run the read-only tooling checks over the main thread itself. On a `Workflow` launch they register the run immediately, so it is tracked even before its own directory exists, and hand the session the `watch` command to arm as a Monitor. Two skills come with it: `/postmortem` for the verdict and `/rescue` for the bounded rescue protocol.
197
+ Its hooks shell out to the same CLI, never touch a run directory, and never fail a turn. After every tool call and on every prompt they read the job files of the workers this session launched with `claude --bg` and tell each change once, in a `WORKER` line that says the state, the reason and what helps; at each Stop a watcher starts if there is something to follow, and it wakes the session when it has gone idle. It checks every 20 s, wakes at most once per 5 minutes, and leaves when the session acts again. It needs Claude Code 2.1.314 or later, a session already running starts it after `/reload-plugins` or a restart, and `AGENT_POSTMORTEM_WAKE=0` turns it off. After every tool call and on every prompt the hooks also check the session's own subagents: one that was interrupted with nothing in the session to explain it, failed after changing files, or returned while its own transcript contradicts the return is reported to the agent at its next tool call, once. A call with nothing new prints nothing. On `SessionStart` they summarize any run that finished since you last looked, and a resumed session hears which of its own subagents never returned. On `Stop` and `StopFailure` they check every subagent and workflow unit spawned so far and print a finding the moment it is detected, not only at session end. On `SessionEnd` they run the read-only tooling checks over the main thread itself. On a `Workflow` launch they register the run immediately, so it is tracked even before its own directory exists, and hand the session the `watch` command to arm as a Monitor. Two skills come with it: `/postmortem` for the verdict and `/rescue` for the bounded rescue protocol.
194
198
 
195
199
  For your own view, add the subagent panel command to `~/.claude/settings.json`, at the top level:
196
200
 
@@ -280,7 +284,7 @@ It was built across two Claude Code Workflow runs, and those same runs are among
280
284
 
281
285
  ## Limits
282
286
 
283
- The formats this tool parses are internal to Claude Code, not a published API, and were observed on versions 2.1.251 to 2.1.312; a future version can change them without notice. A few transcript entry types first seen in 2.1.285 to 2.1.310 (`tools-used`, `relocated`, `agent-setting`, `history-suppression`, `continued-in`) are not interpreted yet, so an attempt whose transcript holds one reads as "the tool cannot see all of what was written". Claude Code deletes transcripts older than 30 days by default (the `cleanupPeriodDays` setting), and with them the history `scan`, `trend` and `rules propose` read; raise that setting to keep more. A session's retries are not observable the way a workflow's are: a session has no cache key to compare attempts against, so `silent_retry` never fires on one. Whether a main-session interrupt was a human pressing Escape is not knowable from the transcript, so it is never attributed, only recorded as a limit. Tested on macOS and Linux only. The repository check (`run --observe`, `rescue status`) uses `git status` to inspect paths, with every filter driver switched off and no network transport allowed; in a repository with a sparse index or a split index, git's own `status` can still store a cached tree object or refresh the shared index file's timestamps, without changing tracked content, commits, or branches.
287
+ The formats this tool parses are internal to Claude Code, not a published API, and were observed on versions 2.1.251 to 2.1.318; a future version can change them without notice. A few transcript entry types first seen in 2.1.285 to 2.1.310 (`tools-used`, `relocated`, `agent-setting`, `history-suppression`, `continued-in`) are not interpreted yet, so an attempt whose transcript holds one reads as "the tool cannot see all of what was written". Claude Code deletes transcripts older than 30 days by default (the `cleanupPeriodDays` setting), and with them the history `scan`, `trend` and `rules propose` read; raise that setting to keep more. A session's retries are not observable the way a workflow's are: a session has no cache key to compare attempts against, so `silent_retry` never fires on one. Whether a main-session interrupt was a human pressing Escape is not knowable from the transcript, so it is never attributed, only recorded as a limit. Tested on macOS and Linux only. The repository check (`run --observe`, `rescue status`) uses `git status` to inspect paths, with every filter driver switched off and no network transport allowed; in a repository with a sparse index or a split index, git's own `status` can still store a cached tree object or refresh the shared index file's timestamps, without changing tracked content, commits, or branches.
284
288
 
285
289
  ## Contributing
286
290
 
@@ -1,8 +1,12 @@
1
1
  # agent-postmortem
2
2
 
3
- Which "done" in your last Claude Code run can't you trust?
3
+ Claude Code records the state. The plugin tells you.
4
4
 
5
- agent-postmortem reads the transcripts Claude Code already wrote under `~/.claude/projects` and, for every Workflow run and every session with subagents, says which agents were killed (in a Workflow, often quietly started over), which never returned, which said "done" while their own result said otherwise, and which files and commits that left at risk. Then it lists at most 3 next steps. No setup, no proxy, no LLM, no network access, and it never changes your files.
5
+ One night a background worker sat 8.5 hours on a permission prompt. Its job file said `blocked` and `approve Entering worktree`, the session that launched it heard nothing, and its agent list showed the worker as idle. With the plugin, that session reads this at its next tool call, and an idle session is woken for it: `WORKER night-run (a1b2c3d4) blocked 15m: waiting for a permission approval (approve Entering worktree). A person must approve it: claude attach a1b2c3d4`.
6
+
7
+ Nothing has to be armed. The plugin reads the `claude --bg` in the session's own Bash call and follows that worker from then on. A permission prompt, a question, an API error, a failure, or a worker idle on a command that never ends is told once per change, and a worker that delivered gets a one-line note. `AGENT_POSTMORTEM_WAKE=0` keeps a session from being woken.
8
+
9
+ Which "done" in your last Claude Code run can't you trust? agent-postmortem reads the transcripts Claude Code already wrote under `~/.claude/projects` and, for every Workflow run and every session with subagents, says which agents were killed (in a Workflow, often quietly started over), which never returned, which said "done" while their own result said otherwise, and which files and commits that left at risk. Then it lists at most 3 next steps. No setup, no proxy, no LLM, no network access, and it never changes your files.
6
10
 
7
11
  On the maintainer's machine (scan 2026-10-27, 0.3.2), 13 of 166 workflow runs launched at least one agent's task a second time, and 10.2 hours went to retries and to attempts that ended without a result.
8
12
 
@@ -67,7 +71,7 @@ Coverage today, checked against the failure reports in Claude Code's issue track
67
71
  | Subagents that never returned | covered | WORK AT RISK says `unknown` instead of `none`, and names them |
68
72
  | `claude -p` (headless) | partial | killed and unreturned subagents show; with the plugin, a foreground subagent that returns on an error or without its prompted output file is reported at once. The process's own exit status (for example exit 0 with `result: success` after a kill) is not in the transcript, so the tool cannot see it |
69
73
  | Background subagents (`run_in_background`) | partial | killed and unreturned ones show; a "completed" that arrived while the agent's own background work was still running, or with a tool call that never got a result, is not flagged yet |
70
- | `claude --bg` sessions | partial | each job's session is read like any session; `watch --session` and `status` pass the job's own state (working, blocked, done, stopped) through as Claude Code records it, and a resumed session hears which of its subagents never returned. Work still in flight inside the job is not modeled |
74
+ | `claude --bg` sessions | partial | with the plugin, the session that launched a worker is told each change at its next tool call or prompt and woken when idle (permission prompt, question, API error, failure, a stuck command, delivered). `status` and `scan` give the same reason when someone runs them, and `watch --session` prints each state change. Not linked: a launch by a subagent, by another session, or by a Bash call that itself ran in the background; `status` and `scan` still list those. "No report past its expected time" is not covered, since nothing records an expected time |
71
75
  | Agent teams | not yet | teammates and their idle or blocked states are not modeled |
72
76
  | Cross-session messages (`SendMessage`) | not yet | whether a message was delivered is not checked |
73
77
 
@@ -117,7 +121,7 @@ Verdict: 0.3 stops guessing. Severity, the WORK AT RISK block, and the run's end
117
121
  | `agent-postmortem rescue status <run-id>` | Print what the main session's own transcript shows was run and observed after the run ended. Reports only what it saw, never a confirmation that a check passed. |
118
122
  | `agent-postmortem watch <run-id>` | Follow one running workflow: print START, then KILL, FAILED, OK (a result came back), and QUIET as they happen, then DONE or LIMIT. DONE comes the moment the session's own record says the run ended, or after a grace period once every journal key is resolved. Read-only, designed to be a Claude Code Monitor command. |
119
123
  | `agent-postmortem watch --session [<session-id>]` | Follow one session while it runs, for a Claude Code Monitor: a line only when a subagent is interrupted with nothing in the session to explain it, fails after changing files, or returns while its own last entry says otherwise, plus background-session state changes. With no id it follows the session you are in. |
120
- | `agent-postmortem status [<session-id>]` | One snapshot of a session: its subagents running, returned, interrupted or failed, what an interrupted one changed, returns its own transcript contradicts, and the background sessions' states. Reads only what was appended since the last call. |
124
+ | `agent-postmortem status [<session-id>]` | One snapshot of a session: its subagents running, returned, interrupted or failed, what an interrupted one changed, returns its own transcript contradicts, and the background sessions' states with what each waits for and whether this session dispatched it (a session that is itself a background worker lists only the rows it launched). Reads only what was appended since the last call. |
121
125
  | `agent-postmortem statusline subagents` | A `subagentStatusLine` command: adds a fact to a row of Claude Code's subagent panel and leaves every other row as Claude Code draws it. |
122
126
  | `agent-postmortem hook <event>` | Claude Code plugin hook entry point; reads hook JSON from stdin. |
123
127
 
@@ -167,7 +171,7 @@ Install the command-line tool first (Quick start above), so the plugin finds it
167
171
  /plugin install agent-postmortem@agent-postmortem
168
172
  ```
169
173
 
170
- Its hooks shell out to the same CLI, never touch a run directory, and never fail a turn. After every tool call and on every prompt they check the session's own subagents: one that was interrupted with nothing in the session to explain it, failed after changing files, or returned while its own transcript contradicts the return is reported to the agent at its next tool call, once. A call with nothing new prints nothing. On `SessionStart` they summarize any run that finished since you last looked, and a resumed session hears which of its own subagents never returned. On `Stop` and `StopFailure` they check every subagent and workflow unit spawned so far and print a finding the moment it is detected, not only at session end. On `SessionEnd` they run the read-only tooling checks over the main thread itself. On a `Workflow` launch they register the run immediately, so it is tracked even before its own directory exists, and hand the session the `watch` command to arm as a Monitor. Two skills come with it: `/postmortem` for the verdict and `/rescue` for the bounded rescue protocol.
174
+ Its hooks shell out to the same CLI, never touch a run directory, and never fail a turn. After every tool call and on every prompt they read the job files of the workers this session launched with `claude --bg` and tell each change once, in a `WORKER` line that says the state, the reason and what helps; at each Stop a watcher starts if there is something to follow, and it wakes the session when it has gone idle. It checks every 20 s, wakes at most once per 5 minutes, and leaves when the session acts again. It needs Claude Code 2.1.314 or later, a session already running starts it after `/reload-plugins` or a restart, and `AGENT_POSTMORTEM_WAKE=0` turns it off. After every tool call and on every prompt the hooks also check the session's own subagents: one that was interrupted with nothing in the session to explain it, failed after changing files, or returned while its own transcript contradicts the return is reported to the agent at its next tool call, once. A call with nothing new prints nothing. On `SessionStart` they summarize any run that finished since you last looked, and a resumed session hears which of its own subagents never returned. On `Stop` and `StopFailure` they check every subagent and workflow unit spawned so far and print a finding the moment it is detected, not only at session end. On `SessionEnd` they run the read-only tooling checks over the main thread itself. On a `Workflow` launch they register the run immediately, so it is tracked even before its own directory exists, and hand the session the `watch` command to arm as a Monitor. Two skills come with it: `/postmortem` for the verdict and `/rescue` for the bounded rescue protocol.
171
175
 
172
176
  For your own view, add the subagent panel command to `~/.claude/settings.json`, at the top level:
173
177
 
@@ -257,7 +261,7 @@ It was built across two Claude Code Workflow runs, and those same runs are among
257
261
 
258
262
  ## Limits
259
263
 
260
- The formats this tool parses are internal to Claude Code, not a published API, and were observed on versions 2.1.251 to 2.1.312; a future version can change them without notice. A few transcript entry types first seen in 2.1.285 to 2.1.310 (`tools-used`, `relocated`, `agent-setting`, `history-suppression`, `continued-in`) are not interpreted yet, so an attempt whose transcript holds one reads as "the tool cannot see all of what was written". Claude Code deletes transcripts older than 30 days by default (the `cleanupPeriodDays` setting), and with them the history `scan`, `trend` and `rules propose` read; raise that setting to keep more. A session's retries are not observable the way a workflow's are: a session has no cache key to compare attempts against, so `silent_retry` never fires on one. Whether a main-session interrupt was a human pressing Escape is not knowable from the transcript, so it is never attributed, only recorded as a limit. Tested on macOS and Linux only. The repository check (`run --observe`, `rescue status`) uses `git status` to inspect paths, with every filter driver switched off and no network transport allowed; in a repository with a sparse index or a split index, git's own `status` can still store a cached tree object or refresh the shared index file's timestamps, without changing tracked content, commits, or branches.
264
+ The formats this tool parses are internal to Claude Code, not a published API, and were observed on versions 2.1.251 to 2.1.318; a future version can change them without notice. A few transcript entry types first seen in 2.1.285 to 2.1.310 (`tools-used`, `relocated`, `agent-setting`, `history-suppression`, `continued-in`) are not interpreted yet, so an attempt whose transcript holds one reads as "the tool cannot see all of what was written". Claude Code deletes transcripts older than 30 days by default (the `cleanupPeriodDays` setting), and with them the history `scan`, `trend` and `rules propose` read; raise that setting to keep more. A session's retries are not observable the way a workflow's are: a session has no cache key to compare attempts against, so `silent_retry` never fires on one. Whether a main-session interrupt was a human pressing Escape is not knowable from the transcript, so it is never attributed, only recorded as a limit. Tested on macOS and Linux only. The repository check (`run --observe`, `rescue status`) uses `git status` to inspect paths, with every filter driver switched off and no network transport allowed; in a repository with a sparse index or a split index, git's own `status` can still store a cached tree object or refresh the shared index file's timestamps, without changing tracked content, commits, or branches.
261
265
 
262
266
  ## Contributing
263
267