agent-postmortem 0.3.4__tar.gz → 0.3.5__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.
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/CHANGELOG.md +17 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/CONTRIBUTING.md +14 -16
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/PKG-INFO +11 -9
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/README.md +8 -6
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/docs/DESIGN.md +12 -9
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/plugin/.claude-plugin/plugin.json +1 -1
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/plugin/README.md +4 -3
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/plugin/hooks/run.sh +16 -8
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/plugin/skills/postmortem/SKILL.md +1 -1
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/pyproject.toml +3 -3
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/__init__.py +1 -1
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_launch_docs.py +15 -10
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n9_docs.py +3 -3
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_plugin.py +42 -11
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/uv.lock +1 -1
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.claude-plugin/marketplace.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/confusing_output.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/detector_request.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/run_shape_not_covered.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/wrong_verdict.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/workflows/ci.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/workflows/release.yml +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.gitignore +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/CLAUDE.md +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/LICENSE +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/plugin/hooks/hooks.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/plugin/skills/rescue/SKILL.md +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/scripts/check-privacy.sh +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/scripts/export-public.sh +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/argerrors.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/claims.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/cli.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/commands.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/config.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000003.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000004.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/agent-ac200000000000004.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-d30/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/demo/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/__init__.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/attempt_failed.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/base.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/bash_backgrounded.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/bash_timeout.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/claim_contradiction.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/classifier_unavailable.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/codex_unavailable.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/codex_write_denied.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/git_cwd_mismatch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/mislabeled_kill.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/missing_artifact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/permission_denied.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/silent_retry.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/structured_output_failure.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/tool_json_error.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/wasted_time.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/workflow_failed.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/disclosure.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/hooks/model_allocation_guard.mjs +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/hooks_cli.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/ledger.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/markers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/models.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/observe.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/reader.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/report.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/rescue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/returns.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/rules.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/severity.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/state.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/trend.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/watch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/conftest.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/README.md +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/demo__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rescue_plan__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rescue_plan__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rescue_plan__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rescue_status__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rescue_status__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rescue_status__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_all__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_all__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_all__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_propose__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_propose__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_propose__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_review__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_review__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_review__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_show__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_show__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/rules_show__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/run__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/run__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/run__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/scan__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/scan__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/scan__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/scan_all__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/scan_all__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/scan_all__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/trend__local.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/trend__raw.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/golden/schema3/trend__share.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000003.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000004.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000004.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000005.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000005.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000006.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000006.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000008.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000008.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000009.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000009.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000010.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000010.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000011.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/agent-af200000000000011.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_facts/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af0/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000003.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000004.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000004.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000005.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000005.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000006.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000006.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000007.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af100000000000007.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a1.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a1.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a2.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a2.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a3.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a3.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a4.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/agent-af1000000000000a4.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_causes/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afa10000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afb10000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/agent-afb10000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/attempt_failed_retry_tail/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/bash_backgrounded_timeout/agent-ac300000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/bash_backgrounded_timeout/agent-ac300000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/bash_backgrounded_timeout/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/claim_contradiction/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/clean_run/agent-ac100000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/clean_run/agent-ac100000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/clean_run/agent-ac100000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/clean_run/agent-ac100000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/clean_run/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000003.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000004.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/agent-ae100000000000004.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_unavailable/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/agent-ac500000000000003.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/codex_write_denied/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/evidence_noise/agent-acf00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/evidence_noise/agent-acf00000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/evidence_noise/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ae300000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ae300000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/agent-ae100000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-710/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/agent-ae200000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/agent-ae200000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-720/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/hook_session/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/incomplete_journal/agent-ad000000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/incomplete_journal/agent-ad000000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/incomplete_journal/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/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
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/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
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/agent-aee00000000000004.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/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
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-af1/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_malformed_fields/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_orphan_failed/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad200000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad200000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad300000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad300000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad400000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad500000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad600000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad700000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad700000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad800000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/agent-ad800000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_resolved/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_unresolved/agent-ad900000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_unresolved/agent-ad900000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/journal_state_unresolved/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/missing_artifact/agent-ac600000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/missing_artifact/agent-ac600000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/missing_artifact/agent-ac600000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/missing_artifact/agent-ac600000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/missing_artifact/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_a0000000-001/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a1111111111111111.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a1111111111111111.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a2222222222222222.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/agent-a2222222222222222.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_b0000000-002/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/reader_minimal/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_c0000000-003/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/agent-ad100000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/agent-ad100000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/redaction_adversarial/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/workflows/wf_00000000-960/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000003.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000003.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000004.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000004.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000005.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/agent-af000000000000005.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/self_reference/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_bridge_only/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000002.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac700000000000002.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_clean/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-aca00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-aca00000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_compaction/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_dedup/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac900000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ac900000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_envelope/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acc00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acc00000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_human_interrupt/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acb00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acb00000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_parent_stop/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acd00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-acd00000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_unattributed_long/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ace00000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000/subagents/agent-ace00000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/session_unattributed_short/-home-user-project/00000000-0000-4000-8000-000000000000.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/structured_output_corrupt/agent-ac400000000000001.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/structured_output_corrupt/agent-ac400000000000001.meta.json +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/fixtures/runs/structured_output_corrupt/journal.jsonl +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/g_corpus_support.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/g_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/g_independent_return.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n3b_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n3b_planted.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n4_reference_commands.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n4b2_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n5b_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n5c1_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n5c2_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/n6_helpers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/privacy_rules.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/rule_fixtures.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/synthetic-ids.txt +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_attempt_facts.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_attempt_failed.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_attribution.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_bug_report.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_claim_contradiction.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_cli_smoke.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_codex_unavailable.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_config.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_deep_lines.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_detectors_base.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_detectors_core.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_detectors_registry.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_detectors_tooling.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_disclosure_primitives.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_empty_state.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_export.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_export_public.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fa_commit_no_id.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fa_fork.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fa_generations.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fa_path_token.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fa_return_boundary.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fa_wasted.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fb_here.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fb_live_now.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fb_rescue_live.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix10_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix11_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix12_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix1_commit.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix1_launch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix1_poll.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix1_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix2_launch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix2_poll.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix2_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix3_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix4_fuzz.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix4_lexer.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix4_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix4_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix5_lexer.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix5_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix5_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix6_fuzz.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix6_hook.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix6_lexer.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix6_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix6_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix6b_title.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix7_e2e.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix7_fuzz.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix7_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix7_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix7_title.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix8_e2e.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix8_fuzz.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix8_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix8_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix9_e2e.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix9_fuzz.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix9_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_fix9_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_help.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_scan.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_table.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fc_wording.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_field_v03.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_field_v03_more.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_filter_scope.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fixa_discovery.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fixa_enqueue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_fixa_reader.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_a1_hooks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_a1_return.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_b1.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_c.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_commit_sentences.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_commits.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_consumers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_corpus.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_denied.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_failed.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_here.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_hooks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_registry.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_rescue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_return.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_g_selfreport.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_hooks_benchmark.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_hooks_cli.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_journal_malformed_fields.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_journal_state.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_model_allocation_guard.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n1_markers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n1_parent_index.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n2_lifecycle.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_apply.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_canonical_ids.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_context.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_demo.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_first_line.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_dedupe.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_demo.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_local_path.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_names.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_paths_c4.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_paths_c6.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_paths_s10.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_paths_s4.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixa_titles.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixb_hook_group.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixb_noident_pointer.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixb_repr_tokens.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixb_rescue_c1.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixb_run_ids.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixb_traversal.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixr2_ids.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixr2_paths.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixr2_raw_dupes.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_fixr2_schema2_hostile.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_flags.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_handler_errors.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_hooks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_local_path.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_local_scrub.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_parser_errors.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_part2_slow_path.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_part3_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_pointers.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_reader.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_rescue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_residual_sinks.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_rules_trend.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_run_fallback.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_run_local.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_run_noncanonical_agent.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_run_path_matrix.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_run_share.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_scan.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_slow_path.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n3b_watch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_base_repo.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_commit_grammar.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_lexer.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_measure.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_readonly.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_rows.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4a_write_grammar.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b1_discovery.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b1_reader_facts.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b1_schema2.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b2_forms.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b2_measure.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b2_population.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b2_reasons.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b2_repo_groups.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4b2_rows.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixb_c3.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixb_differential.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixb_minor.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixb_s3.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixb_s4.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixb_s5_s10.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixc_a4.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixd_a5.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n4fixe_a5.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5_schema3_goldens.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5a1_schema3.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5a2_docs.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5b_detectors.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5b_inputs.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5b_severity.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5b_verdict.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_gaps.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_look.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_observation_export.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_observe.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_rescue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_returned.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c1_work_at_risk.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c2_exit_codes.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c2_misc.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5c2_status_repos.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5fix1_misc.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5fix1_plan.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5fix1_returned.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5fix1_severity.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n5fix1_status.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_alias_state.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_cwd.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_docs.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_fix1.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_here_run.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_here_scan.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_pins.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_resolve.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_roundtrip.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n6_stderr.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n7_detectors.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_fix1.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_fix2.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_k1_killed.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_k2_what_to_do.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_k3_precursor.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_k4_rescue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_k5_watch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n8_k6_rules.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_n9_release_gate.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_no_lazy_fetch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_no_write_surface.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_observe.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_privacy.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_privacy_matrix.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_r1_scan_risk_parity.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_reader.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_reader_session.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_readme.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_redact.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rel_demo.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rel_scan_all.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rendered_privacy.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_report_session.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_report_v2.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rescue.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rules.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rules_propose.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_rules_review.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_scan_triage.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_state.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_tooling_agent_scope.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_trend.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_watch.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_wheel.py +0 -0
- {agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/tests/test_workflows.py +0 -0
|
@@ -5,6 +5,23 @@ 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.3.5]
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- The PyPI summary is the positioning line the plugin already uses: it reads the Claude Code
|
|
13
|
+
logs already on your machine and tells you which agent's "done" you can't trust. The package
|
|
14
|
+
is classified as Alpha, matching the README's status line, and the README's license badge
|
|
15
|
+
links to the LICENSE file by full URL, so it also works on the PyPI page. PyPI version and
|
|
16
|
+
Python version badges join the CI and license badges.
|
|
17
|
+
- Installs come from PyPI now. The README's first command is `uvx agent-postmortem scan`, and
|
|
18
|
+
Quick start, the plugin README and the `/postmortem` skill say `uv tool install
|
|
19
|
+
agent-postmortem`. No git is needed.
|
|
20
|
+
- The plugin installs its CLI from PyPI at the plugin's own version. It falls back to the
|
|
21
|
+
matching GitHub tag only if that install fails, for example in the minutes between a release
|
|
22
|
+
reaching GitHub and reaching PyPI. Both attempts share the one 60-second deadline the single
|
|
23
|
+
install had. The missing-CLI hint says `uv tool install agent-postmortem`.
|
|
24
|
+
|
|
8
25
|
## [0.3.4]
|
|
9
26
|
|
|
10
27
|
### Fixed
|
|
@@ -70,22 +70,20 @@ sets.
|
|
|
70
70
|
|
|
71
71
|
Releases are cut by pushing a `v*` tag, which `.github/workflows/release.yml`
|
|
72
72
|
picks up: it runs the tests, builds the wheel and sdist, runs the privacy
|
|
73
|
-
check against them,
|
|
74
|
-
that version's CHANGELOG section
|
|
75
|
-
(
|
|
76
|
-
and so does the plugin
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
and plugin/hooks/run.sh back to PyPI in one release (tests/test_launch_docs.py
|
|
88
|
-
and tests/test_plugin.py pin them).
|
|
73
|
+
check against them, makes the GitHub release with the built files and
|
|
74
|
+
that version's CHANGELOG section, and publishes both files to PyPI through a
|
|
75
|
+
trusted publisher (no API token is stored in this repository). Users install
|
|
76
|
+
from PyPI (`uv tool install agent-postmortem`), and so does the plugin, pinned
|
|
77
|
+
to its own version, with the matching GitHub tag as a fallback for the minutes
|
|
78
|
+
between the tag and the PyPI upload (tests/test_launch_docs.py and
|
|
79
|
+
tests/test_plugin.py pin these install lines).
|
|
80
|
+
|
|
81
|
+
The publish job runs only while the repository variable `PUBLISH_PYPI` is
|
|
82
|
+
`true` (Settings, Secrets and variables, Actions, Variables); without it the
|
|
83
|
+
job is skipped, not failed. If a release's publish was skipped, set the
|
|
84
|
+
variable, re-run the release workflow for that tag (Actions, Release, the
|
|
85
|
+
tag's run, Re-run all jobs), and check that installing `agent-postmortem`
|
|
86
|
+
from PyPI gives that version.
|
|
89
87
|
|
|
90
88
|
One-time trusted-publisher setup on pypi.org, before the first tagged
|
|
91
89
|
release:
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agent-postmortem
|
|
3
|
-
Version: 0.3.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.3.5
|
|
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
|
|
7
7
|
Project-URL: Changelog, https://github.com/zeyusuntt/agent-postmortem/blob/main/CHANGELOG.md
|
|
8
8
|
License: MIT
|
|
9
9
|
License-File: LICENSE
|
|
10
|
-
Classifier: Development Status ::
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
11
|
Classifier: Environment :: Console
|
|
12
12
|
Classifier: Intended Audience :: Developers
|
|
13
13
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -30,15 +30,17 @@ agent-postmortem reads the transcripts Claude Code already wrote under `~/.claud
|
|
|
30
30
|
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
31
|
|
|
32
32
|
```
|
|
33
|
-
uvx
|
|
33
|
+
uvx agent-postmortem scan
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
That runs the
|
|
36
|
+
That runs the latest release from PyPI with [uv](https://docs.astral.sh/uv/), which fetches Python 3.11 or later if you don't have it; nothing else to install. On a machine with no runs yet it says where it looked and suggests `agent-postmortem demo`.
|
|
37
37
|
|
|
38
38
|
The command-line tool is local and read-only: Python standard library only, no LLM, no network access, and it never changes your files, transcripts, commits, or branches. (The Claude Code plugin's one network action, installing that tool, is described under Privacy; Limits notes two rare git index modes in which git's own `status` still updates its bookkeeping.) What it covers, below, lists the run shapes it handles and the ones it does not yet. Status: alpha, used so far on the maintainer's own machines. Claude Code only.
|
|
39
39
|
|
|
40
40
|
[](https://github.com/zeyusuntt/agent-postmortem/actions/workflows/ci.yml)
|
|
41
|
-
[](https://pypi.org/project/agent-postmortem/)
|
|
42
|
+
[](https://pypi.org/project/agent-postmortem/)
|
|
43
|
+
[](https://github.com/zeyusuntt/agent-postmortem/blob/main/LICENSE)
|
|
42
44
|
|
|
43
45
|
```
|
|
44
46
|
RUN wf_00000000-d30 DEGRADED ended 2026-01-06 19:55Z
|
|
@@ -96,10 +98,10 @@ If you run one of the partial or not-yet shapes, please open a ["my run shape is
|
|
|
96
98
|
|
|
97
99
|
## Quick start
|
|
98
100
|
|
|
99
|
-
Install the command-line tool from
|
|
101
|
+
Install the command-line tool from PyPI with [uv](https://docs.astral.sh/uv/) (it fetches Python 3.11 or later if you don't have it), then try it:
|
|
100
102
|
|
|
101
103
|
```
|
|
102
|
-
uv tool install
|
|
104
|
+
uv tool install agent-postmortem
|
|
103
105
|
agent-postmortem demo
|
|
104
106
|
agent-postmortem scan
|
|
105
107
|
agent-postmortem run <run-id>
|
|
@@ -245,7 +247,7 @@ Paths inside free text (finding titles, diagnostics, error messages, and at `--l
|
|
|
245
247
|
|
|
246
248
|
State lives in `$XDG_STATE_HOME/agent-postmortem/`, or `~/.local/state/agent-postmortem/` if that variable is unset: `state.json` (which findings a session already reported, and the rules the 0.1 `apply` command wrote, now read-only history), plus `secret` and `aliases.json` for the aliases. All three are mode 0600. The secret and the registry are never printed; `trend` shows the applied-rule history from `state.json` at the active level. If a command prints `stable aliases unavailable` on stderr, that output named everything `agent-1`, `agent-2`, and so on instead of by alias; nothing is repaired automatically, because a new secret would change every alias. Remove both `secret` and `aliases.json` to start over with new aliases.
|
|
247
249
|
|
|
248
|
-
The plugin's one network action happens on `SessionStart` only: when it has not installed a CLI into its own data directory and no `agent-postmortem` on `PATH` passes its protocol check, it installs the CLI from
|
|
250
|
+
The plugin's one network action happens on `SessionStart` only: when it has not installed a CLI into its own data directory and no `agent-postmortem` on `PATH` passes its protocol check, it installs the CLI from PyPI at the plugin's own version, or from the matching GitHub tag if that install fails, into that data directory, retrying at most once every 24 hours on failure; opt out by setting `AGENT_POSTMORTEM_NO_AUTO_INSTALL=1`, or by installing the CLI yourself first.
|
|
249
251
|
|
|
250
252
|
## How it was built
|
|
251
253
|
|
|
@@ -7,15 +7,17 @@ agent-postmortem reads the transcripts Claude Code already wrote under `~/.claud
|
|
|
7
7
|
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
8
|
|
|
9
9
|
```
|
|
10
|
-
uvx
|
|
10
|
+
uvx agent-postmortem scan
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
That runs the
|
|
13
|
+
That runs the latest release from PyPI with [uv](https://docs.astral.sh/uv/), which fetches Python 3.11 or later if you don't have it; nothing else to install. On a machine with no runs yet it says where it looked and suggests `agent-postmortem demo`.
|
|
14
14
|
|
|
15
15
|
The command-line tool is local and read-only: Python standard library only, no LLM, no network access, and it never changes your files, transcripts, commits, or branches. (The Claude Code plugin's one network action, installing that tool, is described under Privacy; Limits notes two rare git index modes in which git's own `status` still updates its bookkeeping.) What it covers, below, lists the run shapes it handles and the ones it does not yet. Status: alpha, used so far on the maintainer's own machines. Claude Code only.
|
|
16
16
|
|
|
17
17
|
[](https://github.com/zeyusuntt/agent-postmortem/actions/workflows/ci.yml)
|
|
18
|
-
[](https://pypi.org/project/agent-postmortem/)
|
|
19
|
+
[](https://pypi.org/project/agent-postmortem/)
|
|
20
|
+
[](https://github.com/zeyusuntt/agent-postmortem/blob/main/LICENSE)
|
|
19
21
|
|
|
20
22
|
```
|
|
21
23
|
RUN wf_00000000-d30 DEGRADED ended 2026-01-06 19:55Z
|
|
@@ -73,10 +75,10 @@ If you run one of the partial or not-yet shapes, please open a ["my run shape is
|
|
|
73
75
|
|
|
74
76
|
## Quick start
|
|
75
77
|
|
|
76
|
-
Install the command-line tool from
|
|
78
|
+
Install the command-line tool from PyPI with [uv](https://docs.astral.sh/uv/) (it fetches Python 3.11 or later if you don't have it), then try it:
|
|
77
79
|
|
|
78
80
|
```
|
|
79
|
-
uv tool install
|
|
81
|
+
uv tool install agent-postmortem
|
|
80
82
|
agent-postmortem demo
|
|
81
83
|
agent-postmortem scan
|
|
82
84
|
agent-postmortem run <run-id>
|
|
@@ -222,7 +224,7 @@ Paths inside free text (finding titles, diagnostics, error messages, and at `--l
|
|
|
222
224
|
|
|
223
225
|
State lives in `$XDG_STATE_HOME/agent-postmortem/`, or `~/.local/state/agent-postmortem/` if that variable is unset: `state.json` (which findings a session already reported, and the rules the 0.1 `apply` command wrote, now read-only history), plus `secret` and `aliases.json` for the aliases. All three are mode 0600. The secret and the registry are never printed; `trend` shows the applied-rule history from `state.json` at the active level. If a command prints `stable aliases unavailable` on stderr, that output named everything `agent-1`, `agent-2`, and so on instead of by alias; nothing is repaired automatically, because a new secret would change every alias. Remove both `secret` and `aliases.json` to start over with new aliases.
|
|
224
226
|
|
|
225
|
-
The plugin's one network action happens on `SessionStart` only: when it has not installed a CLI into its own data directory and no `agent-postmortem` on `PATH` passes its protocol check, it installs the CLI from
|
|
227
|
+
The plugin's one network action happens on `SessionStart` only: when it has not installed a CLI into its own data directory and no `agent-postmortem` on `PATH` passes its protocol check, it installs the CLI from PyPI at the plugin's own version, or from the matching GitHub tag if that install fails, into that data directory, retrying at most once every 24 hours on failure; opt out by setting `AGENT_POSTMORTEM_NO_AUTO_INSTALL=1`, or by installing the CLI yourself first.
|
|
226
228
|
|
|
227
229
|
## How it was built
|
|
228
230
|
|
|
@@ -6377,9 +6377,12 @@ internal deadline as `check`.
|
|
|
6377
6377
|
|
|
6378
6378
|
On SessionStart, if no compatible CLI resolves and `uv` is on PATH and
|
|
6379
6379
|
`AGENT_POSTMORTEM_NO_AUTO_INSTALL` is unset, `run.sh` runs `uv tool install
|
|
6380
|
+
"agent-postmortem==<version in plugin.json>" --python 3.11+` from PyPI, and only if that
|
|
6381
|
+
install fails, `uv tool install
|
|
6380
6382
|
"git+https://github.com/zeyusuntt/agent-postmortem@v<version in plugin.json>" --python
|
|
6381
|
-
3.11+` (
|
|
6382
|
-
|
|
6383
|
+
3.11+` (0.3.5: PyPI first; the tag covers the minutes between a release reaching GitHub
|
|
6384
|
+
and reaching PyPI, and needs git besides uv; both attempts run inside the one 60 s
|
|
6385
|
+
deadline below; the missing-CLI hint names `uv tool install agent-postmortem`) (`UV_TOOL_DIR`
|
|
6383
6386
|
and `UV_TOOL_BIN_DIR` both pointed at `$DATA_DIR`, 7.2's one data
|
|
6384
6387
|
directory, so the installed shim lands at `$DATA_DIR/bin/agent-postmortem`,
|
|
6385
6388
|
exactly where resolution step (1) looks) under the same process-group-kill
|
|
@@ -6704,7 +6707,7 @@ later events go positional).
|
|
|
6704
6707
|
|
|
6705
6708
|
### 8.1 Package
|
|
6706
6709
|
|
|
6707
|
-
`pyproject.toml`: name `agent-postmortem`, version `0.3.
|
|
6710
|
+
`pyproject.toml`: name `agent-postmortem`, version `0.3.5`, console scripts
|
|
6708
6711
|
`agent-postmortem` and `postmortem`, `requires-python >= 3.11`, no runtime
|
|
6709
6712
|
dependencies, `[project.optional-dependencies].dev = ["pytest>=8",
|
|
6710
6713
|
"ruff>=0.6"]`, classifiers, URLs (Homepage, Issues, Changelog). The wheel
|
|
@@ -6754,8 +6757,8 @@ check of the artifacts), then a `github-release` job (`permissions: contents: wr
|
|
|
6754
6757
|
`gh release create <tag> dist/* --verify-tag` with that version's CHANGELOG section as
|
|
6755
6758
|
notes) and a publish job with `environment: pypi`, `permissions: id-token: write`,
|
|
6756
6759
|
`pypa/gh-action-pypi-publish@release/v1` that runs only when the repository variable
|
|
6757
|
-
`PUBLISH_PYPI` is `true` (
|
|
6758
|
-
|
|
6760
|
+
`PUBLISH_PYPI` is `true` (a tag must never turn the release red when publishing is
|
|
6761
|
+
switched off; a skipped job is not a failure; PyPI publishing is on from 0.3.4). Both workflows declare a
|
|
6759
6762
|
top-level `permissions: contents: read` so every job is read-only by
|
|
6760
6763
|
default regardless of the repository's own token-permission setting; the
|
|
6761
6764
|
publish job's own `id-token: write` is layered on top of that at the job
|
|
@@ -6769,14 +6772,14 @@ pypi.org and the TestPyPI dry run.
|
|
|
6769
6772
|
First screen, in order (from 0.3.3): name; the question the tool answers
|
|
6770
6773
|
("Which 'done' in your last Claude Code run can't you trust?"); one paragraph on
|
|
6771
6774
|
what it reads, what it reports and that it is local and read-only; one dated number
|
|
6772
|
-
from a named version's scan; `uvx
|
|
6773
|
-
|
|
6775
|
+
from a named version's scan; `uvx agent-postmortem scan` (from PyPI, 0.3.5; 0.3.3 and
|
|
6776
|
+
0.3.4 used the tagged GitHub release while PyPI was not yet working); the status paragraph; badges (CI, license; PyPI version and Python versions only once a
|
|
6774
6777
|
PyPI release exists, since a badge for a missing release renders broken),
|
|
6775
6778
|
the demo output as a fenced code block (not a screenshot: it must stay text,
|
|
6776
6779
|
so it can be diffed against a live `agent-postmortem demo` run -- 8.2,
|
|
6777
6780
|
tests/test_readme.py), the install command that works for the current
|
|
6778
|
-
distribution (
|
|
6779
|
-
|
|
6781
|
+
distribution (`uv tool install agent-postmortem` from PyPI from 0.3.5; a
|
|
6782
|
+
GitHub install with `uv tool install git+...` in 0.3.3 and 0.3.4), a command table
|
|
6780
6783
|
listing exactly which commands take `--json` and which take `--no-redact`.
|
|
6781
6784
|
Then "What it covers", before Quick start: one table of run shapes and failure
|
|
6782
6785
|
kinds, each marked covered, partial or not yet, as checked against the upstream issue
|
|
@@ -41,15 +41,16 @@ On `SessionStart`, if the plugin has not installed a CLI into its own data
|
|
|
41
41
|
directory and no `agent-postmortem` on your `PATH` passes its protocol check
|
|
42
42
|
(`agent-postmortem hook capabilities` answers protocol 1), and
|
|
43
43
|
[`uv`](https://docs.astral.sh/uv/) is on your `PATH`, the plugin installs
|
|
44
|
-
the version pinned in the plugin manifest from
|
|
45
|
-
|
|
44
|
+
the version pinned in the plugin manifest from PyPI, or from the matching
|
|
45
|
+
GitHub tag if that install fails (that fallback needs `git`), retrying at
|
|
46
|
+
most once every 24
|
|
46
47
|
hours on failure, and writes what happened to a log file instead of your
|
|
47
48
|
terminal. This is the plugin's only network access.
|
|
48
49
|
|
|
49
50
|
Opt out by setting `AGENT_POSTMORTEM_NO_AUTO_INSTALL=1` (in your shell
|
|
50
51
|
profile, or wherever you set environment variables for Claude Code), or by
|
|
51
52
|
installing the CLI yourself ahead of time with
|
|
52
|
-
`uv tool install
|
|
53
|
+
`uv tool install agent-postmortem`.
|
|
53
54
|
|
|
54
55
|
## The `/postmortem` skill
|
|
55
56
|
|
|
@@ -40,7 +40,9 @@ fi
|
|
|
40
40
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd)"
|
|
41
41
|
PLUGIN_ROOT="$(cd "$SCRIPT_DIR/.." >/dev/null 2>&1 && pwd)"
|
|
42
42
|
PLUGIN_JSON="$PLUGIN_ROOT/.claude-plugin/plugin.json"
|
|
43
|
-
# The CLI install
|
|
43
|
+
# The CLI install sources (docs/DESIGN.md 7.3): PyPI at the plugin version first, then the
|
|
44
|
+
# public repository at the tag v<plugin version> if that install fails.
|
|
45
|
+
PYPI_PACKAGE="agent-postmortem"
|
|
44
46
|
GIT_SOURCE="git+https://github.com/zeyusuntt/agent-postmortem"
|
|
45
47
|
|
|
46
48
|
# docs/DESIGN.md 7.2's D9: one data directory, derived once, used for
|
|
@@ -325,8 +327,8 @@ _print_missing_cli_hint_if_due() {
|
|
|
325
327
|
if _modified_within_a_day "$marker"; then
|
|
326
328
|
return 0
|
|
327
329
|
fi
|
|
328
|
-
printf '{"systemMessage": "agent-postmortem CLI not found; run: uv tool install %s
|
|
329
|
-
"$
|
|
330
|
+
printf '{"systemMessage": "agent-postmortem CLI not found; run: uv tool install %s"}\n' \
|
|
331
|
+
"$PYPI_PACKAGE"
|
|
330
332
|
: >"$marker" 2>/dev/null
|
|
331
333
|
}
|
|
332
334
|
|
|
@@ -353,16 +355,22 @@ _maybe_install() {
|
|
|
353
355
|
pinned_version="$(_plugin_version)"
|
|
354
356
|
[ -n "$pinned_version" ] || return 0
|
|
355
357
|
|
|
356
|
-
#
|
|
357
|
-
|
|
358
|
+
# PyPI at the plugin version first; the matching GitHub tag only if that install fails
|
|
359
|
+
# (for example in the minutes between a release reaching GitHub and reaching PyPI). Both
|
|
360
|
+
# run under the one 60-second deadline the single install had, so the hook's time budget
|
|
361
|
+
# is unchanged.
|
|
362
|
+
pypi_source="$PYPI_PACKAGE==$pinned_version"
|
|
363
|
+
git_source="$GIT_SOURCE@v$pinned_version"
|
|
358
364
|
{
|
|
359
|
-
printf '%s attempting: uv tool install %s\n' \
|
|
360
|
-
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$
|
|
365
|
+
printf '%s attempting: uv tool install %s (fallback: %s)\n' \
|
|
366
|
+
"$(date -u +%Y-%m-%dT%H:%M:%SZ)" "$pypi_source" "$git_source"
|
|
361
367
|
} >>"$install_log" 2>/dev/null
|
|
362
368
|
|
|
363
369
|
mkdir -p "$DATA_DIR/bin" 2>/dev/null
|
|
364
370
|
UV_TOOL_DIR="$DATA_DIR" UV_TOOL_BIN_DIR="$DATA_DIR/bin" \
|
|
365
|
-
_run_with_deadline 60
|
|
371
|
+
_run_with_deadline 60 sh -c \
|
|
372
|
+
'uv tool install "$1" --python 3.11+ || uv tool install "$2" --python 3.11+' \
|
|
373
|
+
sh "$pypi_source" "$git_source" \
|
|
366
374
|
</dev/null >>"$install_log" 2>&1
|
|
367
375
|
}
|
|
368
376
|
|
|
@@ -114,5 +114,5 @@ Bash tool.
|
|
|
114
114
|
`--no-redact` only if the user asks to see raw paths or session ids, and
|
|
115
115
|
say so when you do.
|
|
116
116
|
- If the CLI is missing entirely, tell the user to run
|
|
117
|
-
`uv tool install
|
|
117
|
+
`uv tool install agent-postmortem` and stop; do not try to install it
|
|
118
118
|
yourself.
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agent-postmortem"
|
|
3
|
-
version = "0.3.
|
|
4
|
-
description = "
|
|
3
|
+
version = "0.3.5"
|
|
4
|
+
description = "Reads the Claude Code logs already on your machine and tells you which agent's 'done' you can't trust, and what to run next."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
7
7
|
requires-python = ">=3.11"
|
|
8
8
|
dependencies = []
|
|
9
9
|
classifiers = [
|
|
10
|
-
"Development Status ::
|
|
10
|
+
"Development Status :: 3 - Alpha",
|
|
11
11
|
"Environment :: Console",
|
|
12
12
|
"Intended Audience :: Developers",
|
|
13
13
|
"License :: OSI Approved :: MIT License",
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"""README first screen, coverage table and issue templates for the public launch (DESIGN 8.4).
|
|
2
2
|
|
|
3
|
-
The first screen asks the question the tool answers and gives the PyPI
|
|
4
|
-
fallback; "What it covers" states coverage honestly (covered, partial, not yet) before Quick
|
|
3
|
+
The first screen asks the question the tool answers and gives the one-command PyPI run (0.3.5); "What it covers" states coverage honestly (covered, partial, not yet) before Quick
|
|
5
4
|
start; every issue template asks for default-level `--bug-report` output and the Claude Code
|
|
6
5
|
version, and never for a raw transcript.
|
|
7
6
|
"""
|
|
@@ -32,11 +31,12 @@ def _section(text: str, heading: str) -> str:
|
|
|
32
31
|
return match.group(1)
|
|
33
32
|
|
|
34
33
|
|
|
35
|
-
def
|
|
34
|
+
def test_first_screen_asks_the_question_and_gives_the_pypi_command():
|
|
36
35
|
head = "\n".join(README.splitlines()[:16])
|
|
37
36
|
assert 'Which "done" in your last Claude Code run can\'t you trust?' in head
|
|
38
|
-
assert
|
|
39
|
-
assert
|
|
37
|
+
assert "\nuvx agent-postmortem scan\n" in head
|
|
38
|
+
assert GIT_SOURCE not in head
|
|
39
|
+
assert "coming" not in head
|
|
40
40
|
assert "13 of 166 workflow runs" in head
|
|
41
41
|
|
|
42
42
|
|
|
@@ -79,13 +79,18 @@ def test_no_issue_template_asks_for_transcript_lines():
|
|
|
79
79
|
assert "transcript line that shows" not in text, path.name
|
|
80
80
|
|
|
81
81
|
|
|
82
|
-
def
|
|
83
|
-
"""
|
|
84
|
-
|
|
85
|
-
r"uv tool install \"?agent-postmortem(?![\w.-]*@)")
|
|
82
|
+
def test_user_facing_install_lines_use_pypi():
|
|
83
|
+
"""0.3.5: PyPI works, so no install line a stranger reads points at the GitHub tag.
|
|
84
|
+
The plugin's own fallback to the tag is code in run.sh, tested in test_plugin.py."""
|
|
86
85
|
for path in USER_FACING:
|
|
86
|
+
if path.name == "run.sh":
|
|
87
|
+
continue
|
|
87
88
|
text = path.read_text(encoding="utf-8")
|
|
88
|
-
assert not
|
|
89
|
+
assert f"{GIT_SOURCE}@" not in text, f"{path.name} still installs from the GitHub tag"
|
|
90
|
+
quick_start = _section(README, "Quick start")
|
|
91
|
+
assert "\nuv tool install agent-postmortem\n" in quick_start
|
|
92
|
+
for path in (REPO_ROOT / "plugin" / "README.md", REPO_ROOT / "plugin" / "skills" / "postmortem" / "SKILL.md"):
|
|
93
|
+
assert "uv tool install agent-postmortem" in path.read_text(encoding="utf-8"), path.name
|
|
89
94
|
|
|
90
95
|
|
|
91
96
|
def test_every_github_tag_named_in_user_facing_text_is_the_package_version():
|
|
@@ -96,11 +96,11 @@ def test_changelog_unreleased_entry_is_first_and_grouped():
|
|
|
96
96
|
assert "http" not in entry
|
|
97
97
|
|
|
98
98
|
|
|
99
|
-
def
|
|
99
|
+
def test_the_package_version_is_0_3_5():
|
|
100
100
|
pyproject = (REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8")
|
|
101
101
|
init = (REPO_ROOT / "src" / "agent_postmortem" / "__init__.py").read_text(encoding="utf-8")
|
|
102
|
-
assert re.search(r'^version = "0\.3\.
|
|
103
|
-
assert '__version__ = "0.3.
|
|
102
|
+
assert re.search(r'^version = "0\.3\.5"', pyproject, re.M)
|
|
103
|
+
assert '__version__ = "0.3.5"' in init
|
|
104
104
|
|
|
105
105
|
|
|
106
106
|
# ---- DESIGN ----
|
|
@@ -72,6 +72,9 @@ POSITIONING = (
|
|
|
72
72
|
)
|
|
73
73
|
REPOSITORY_URL = "https://github.com/zeyusuntt/agent-postmortem"
|
|
74
74
|
GIT_SOURCE = f"git+{REPOSITORY_URL}"
|
|
75
|
+
# docs/DESIGN.md 7.3 (0.3.5): the CLI comes from PyPI, pinned to the plugin version; the
|
|
76
|
+
# matching GitHub tag is the fallback when that install fails.
|
|
77
|
+
PYPI_SPEC = "agent-postmortem=="
|
|
75
78
|
|
|
76
79
|
|
|
77
80
|
def _manifest_version() -> str:
|
|
@@ -107,17 +110,17 @@ def test_plugin_version_equals_package_version():
|
|
|
107
110
|
assert plugin["version"] == package_version
|
|
108
111
|
|
|
109
112
|
|
|
110
|
-
def
|
|
113
|
+
def test_pyproject_plugin_and_package_versions_are_all_0_3_5():
|
|
111
114
|
"""docs/DESIGN.md 7.1's D1: the literal, not just mutual equality --
|
|
112
115
|
a version bump that only kept two of the three in sync would still
|
|
113
116
|
pass a pure-equality check."""
|
|
114
117
|
pyproject = tomllib.loads((REPO_ROOT / "pyproject.toml").read_text(encoding="utf-8"))
|
|
115
|
-
assert pyproject["project"]["version"] == "0.3.
|
|
118
|
+
assert pyproject["project"]["version"] == "0.3.5"
|
|
116
119
|
plugin = _load_json(PLUGIN_ROOT / ".claude-plugin" / "plugin.json")
|
|
117
|
-
assert plugin["version"] == "0.3.
|
|
120
|
+
assert plugin["version"] == "0.3.5"
|
|
118
121
|
import agent_postmortem
|
|
119
122
|
|
|
120
|
-
assert agent_postmortem.__version__ == "0.3.
|
|
123
|
+
assert agent_postmortem.__version__ == "0.3.5"
|
|
121
124
|
|
|
122
125
|
|
|
123
126
|
def test_pyproject_declares_agent_postmortem_as_primary_and_postmortem_as_alias():
|
|
@@ -372,10 +375,7 @@ def test_run_sh_prints_the_missing_cli_hint_once_a_day(tmp_path):
|
|
|
372
375
|
assert second.returncode == 0, second.stderr
|
|
373
376
|
hint = json.loads(first.stdout)
|
|
374
377
|
assert hint == {
|
|
375
|
-
"systemMessage":
|
|
376
|
-
"agent-postmortem CLI not found; run: uv tool install "
|
|
377
|
-
f"{GIT_SOURCE}@v{_manifest_version()}"
|
|
378
|
-
)
|
|
378
|
+
"systemMessage": "agent-postmortem CLI not found; run: uv tool install agent-postmortem"
|
|
379
379
|
}
|
|
380
380
|
assert second.stdout == ""
|
|
381
381
|
|
|
@@ -407,15 +407,46 @@ def test_run_sh_attempts_install_once_on_session_start_when_uv_is_on_path(tmp_pa
|
|
|
407
407
|
assert second.returncode == 0, second.stderr
|
|
408
408
|
invocations = uv_log.read_text(encoding="utf-8").splitlines() if uv_log.exists() else []
|
|
409
409
|
assert len(invocations) == 1, f"expected exactly one uv invocation, got {invocations!r}"
|
|
410
|
-
#
|
|
411
|
-
#
|
|
412
|
-
pinned = f"{
|
|
410
|
+
# 0.3.5: PyPI first, pinned to the plugin version; a PyPI install that succeeds is the
|
|
411
|
+
# only one attempted.
|
|
412
|
+
pinned = f"{PYPI_SPEC}{_manifest_version()}"
|
|
413
413
|
assert invocations[0].startswith(f"tool install {pinned} ")
|
|
414
414
|
install_log = plugin_data / "install.log"
|
|
415
415
|
assert install_log.exists()
|
|
416
416
|
assert f"uv tool install {pinned}" in install_log.read_text(encoding="utf-8")
|
|
417
417
|
|
|
418
418
|
|
|
419
|
+
_FAKE_UV_FAILS_ON_PYPI = r"""#!/usr/bin/env bash
|
|
420
|
+
echo "$@" >> "$AGENT_POSTMORTEM_TEST_UV_LOG"
|
|
421
|
+
case "$*" in
|
|
422
|
+
*agent-postmortem==*) exit 1 ;;
|
|
423
|
+
esac
|
|
424
|
+
exit 0
|
|
425
|
+
"""
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
def test_run_sh_falls_back_to_the_matching_github_tag_when_the_pypi_install_fails(tmp_path):
|
|
429
|
+
uv_bin = tmp_path / "uv-bin"
|
|
430
|
+
uv_log = tmp_path / "uv-invocations.log"
|
|
431
|
+
_write_fake_cli(uv_bin, "uv", _FAKE_UV_FAILS_ON_PYPI)
|
|
432
|
+
plugin_data = tmp_path / "plugin-data"
|
|
433
|
+
|
|
434
|
+
result = _run_run_sh(
|
|
435
|
+
"session-start", path_entries=[str(uv_bin)], plugin_data=plugin_data,
|
|
436
|
+
stdin='{"source": "startup"}', extra_env={"AGENT_POSTMORTEM_TEST_UV_LOG": str(uv_log)},
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
assert result.returncode == 0, result.stderr
|
|
440
|
+
invocations = uv_log.read_text(encoding="utf-8").splitlines()
|
|
441
|
+
version = _manifest_version()
|
|
442
|
+
assert len(invocations) == 2, f"expected PyPI then the GitHub tag, got {invocations!r}"
|
|
443
|
+
assert invocations[0].startswith(f"tool install {PYPI_SPEC}{version} ")
|
|
444
|
+
assert invocations[1].startswith(f"tool install {GIT_SOURCE}@v{version} ")
|
|
445
|
+
log = (plugin_data / "install.log").read_text(encoding="utf-8")
|
|
446
|
+
assert f"uv tool install {PYPI_SPEC}{version}" in log
|
|
447
|
+
assert f"{GIT_SOURCE}@v{version}" in log
|
|
448
|
+
|
|
449
|
+
|
|
419
450
|
def test_run_sh_never_installs_when_no_auto_install_is_set(tmp_path):
|
|
420
451
|
uv_bin = tmp_path / "uv-bin"
|
|
421
452
|
uv_log = tmp_path / "uv-invocations.log"
|
|
File without changes
|
|
File without changes
|
{agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/confusing_output.yml
RENAMED
|
File without changes
|
{agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/detector_request.yml
RENAMED
|
File without changes
|
{agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/.github/ISSUE_TEMPLATE/run_shape_not_covered.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/__init__.py
RENAMED
|
File without changes
|
{agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/attempt_failed.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_postmortem-0.3.4 → agent_postmortem-0.3.5}/src/agent_postmortem/detectors/bash_timeout.py
RENAMED
|
File without changes
|
|
File without changes
|