taskledger 0.6.2__tar.gz → 0.6.3__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.
- {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/pre-commit.yml +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +6 -0
- taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/audit/commit-audit.yaml +135 -0
- taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/entries/entry-0001.md +40 -0
- taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/release.md +26 -0
- {taskledger-0.6.2/taskledger.egg-info → taskledger-0.6.3}/PKG-INFO +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/changelog.md +8 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/command_contract.md +10 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/full_task_cycle.md +10 -5
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/usage.md +8 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/scripts/find_code_clones.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/skills/taskledger/SKILL.md +4 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/implementation_checks/implementation-checks.feature +5 -13
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/_version.py +3 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/locks.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/repair.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/storage.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli.py +26 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_archive.py +2 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_common.py +29 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_implement.py +4 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_ledger.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_misc.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_plan.py +10 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_storage.py +4 -2
- taskledger-0.6.3/taskledger/domain/__init__.py +2 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/agent_logging.py +3 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/agent_transcripts.py +11 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/change_tracking.py +10 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/check_tracking.py +8 -5
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/command_runner.py +5 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor.py +7 -7
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor_checks/project_scan.py +9 -7
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor_checks/task_checks.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/git_sync.py +11 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/handoff.py +5 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/implementation_flow.py +13 -9
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/lock_inventory.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/navigation.py +4 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_input.py +4 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_materialization.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/planning_flow.py +1 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/runtime_info.py +4 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_archive.py +5 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_collections.py +4 -6
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_export.py +1 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_lifecycle.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_repair.py +8 -10
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_reports.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/tasks.py +12 -6
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/tree.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/usage.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/validation_flow.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/worker_context.py +4 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/index_cache.py +7 -9
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/layout_migration.py +4 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/migrations.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/paths.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_config.py +7 -6
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_context.py +1 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/repos.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/task_store.py +9 -7
- {taskledger-0.6.2 → taskledger-0.6.3/taskledger.egg-info}/PKG-INFO +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/SOURCES.txt +3 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/scm_file_list.json +3 -0
- taskledger-0.6.3/taskledger.egg-info/scm_version.json +8 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/conftest.py +9 -9
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_agent_command_logging.py +32 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_agent_session_protocol.py +9 -7
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_command_example_linter.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_compact_mutation_output.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_doctor.py +23 -23
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_domain_policies.py +23 -23
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_help_subprocess.py +1 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_implementation_checks.py +165 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_import_boundaries.py +6 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_indexes_cache_recovery.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ledgercore_compat.py +4 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_search.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_service_boundaries.py +6 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_report.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_sibling_storage.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_workspace_snapshot.py +1 -1
- taskledger-0.6.2/taskledger/domain/__init__.py +0 -2
- taskledger-0.6.2/taskledger.egg-info/scm_version.json +0 -8
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/building_blocks/block-0083.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/concepts/concept-0081.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/runtime/runtime-0076.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/runtime/runtime-0084.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/document-state.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0001.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0002.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0003.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0004.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0005.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0006.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0007.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0008.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0009.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0010.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0011.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0012.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0029.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0030.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0031.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0032.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0033.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0034.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0040.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0041.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0042.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0043.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0044.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0045.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0082.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0085.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0086.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0016.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0017.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0018.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0019.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0020.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0021.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0022.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0023.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0046.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0047.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0048.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0049.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0050.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0051.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/deployment/deploy-0039.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0061.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0062.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0063.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0064.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0065.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0066.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0067.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0068.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0069.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0070.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0071.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0072.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0073.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0052.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0053.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0054.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0055.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0056.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/requirements/content-0013.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/requirements/content-0014.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/requirements/content-0015.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0057.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0058.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0059.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0060.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0035.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0036.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0037.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0038.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0074.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0075.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0077.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0078.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0087.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0088.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/stakeholders/content-0079.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/stakeholders/content-0080.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0024.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0025.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0026.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0027.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0028.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/source-state.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/storage.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.archledger.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.codecrate.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-api-md-9eddf4dc.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-architecture-taskledger-split-md-63034c0d.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-command-contract-md-abe6f6d9.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-full-task-cycle-md-721181f0.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-multi-repo-md-929e47a9.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-public-surface-md-c1b8772f.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-service-boundary-whitelist-md-800b76f5.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-sync-md-a29422f3.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-transfer-md-f8532303.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-usage-md-72376d0b.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/scan.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/source-index.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/storage.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/codecov.yml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/python-publish.yml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/tests.yml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.gitignore +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/ledger.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/.ledger-project.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/config.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0001.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0002.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0003.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0004.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0005.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0006.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0007.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0008.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0009.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0010.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0011.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0012.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0013.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0014.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0015.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0016.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0017.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0018.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0019.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0020.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0021.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0022.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0023.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/release.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0001.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0002.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0003.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0004.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0005.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/release.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0001.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0002.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0003.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0004.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/release.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/write.lock +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/task/config.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/taskledger/.ledger-project.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/taskledger/config.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.planledger.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.pre-commit-config.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.readthedocs.yaml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/.ruff.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/AGENTS.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/API.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/ARCHITECTURE.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/LICENSE +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/Makefile +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/README.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/Makefile +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/api.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/architecture_taskledger_split.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/build.sh +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/conf.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/documentation_freshness.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/index.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/multi_repo.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/public_surface.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/release_checklist.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/requirements.txt +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/service_boundary_whitelist.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/sync.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/docs/transfer.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/pyproject.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/requirements/manifest.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/setup.cfg +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specmason.toml +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/README.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/UNMAPPED_TESTS.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/evidence/.gitkeep +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/evidence/taskledger-test-feature-coverage.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/.gitkeep +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/active_task/active-task.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/actor_harness_state/actor-harness-state.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/actor_resolution/actor-resolution.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/agent_command_logging/agent-command-logging.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/agent_session_protocol/agent-session-protocol.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/atomic_fast_io/atomic-fast-io.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/cli_command_contract/cli-command-contract.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/cli_import_resilience/cli-import-resilience.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/code_reviews/code-reviews.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/command_example_linter/command-example-linter.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/command_inventory/command-inventory.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/command_runner/command-runner.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/compact_mutation_output/compact-mutation-output.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/config_cli/config-cli.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/delta_remaining_contracts/delta-remaining-contracts.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/docs_and_skill/docs-and-skill.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/doctor/doctor.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/domain_policies/domain-policies.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/event_logging_config/event-logging-config.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/events/events.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/file_link_snapshots/file-link-snapshots.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/find_code_clones_script/find-code-clones-script.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/handoff_lifecycle/handoff-lifecycle.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/help_subprocess/help-subprocess.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/implementation_change_scan/implementation-change-scan.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/json_contracts/json-contracts.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/legacy_cleanup_contracts/legacy-cleanup-contracts.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/lifecycle_policies/lifecycle-policies.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/lock_diagnostics/lock-diagnostics.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/locks_audit/locks-audit.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/models_v1_schema/models-v1-schema.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/monitor/monitor.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/next_action_expired_lock/next-action-expired-lock.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/no_log_feature/no-log-feature.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_approval_contract/plan-approval-contract.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_lint/plan-lint.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_review/plan-review.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_revision_workflow/plan-revision-workflow.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_todo_materialization/plan-todo-materialization.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/project_root_config/project-root-config.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/question_add_many/question-add-many.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/question_filter_answers/question-filter-answers.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/question_plan_regeneration/question-plan-regeneration.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/ready_work/ready-work.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/release_changelog/release-changelog.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/search/search.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/service_boundaries/service-boundaries.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/services_dashboard/services-dashboard.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/sidecar_collections/sidecar-collections.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_bundle_layout/storage-bundle-layout.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_common/storage-common.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_init/storage-init.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_migration/storage-migration.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_repos/storage-repos.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_sync/storage-sync.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/sync_git/sync-git.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_archive/archive.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_events/events.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_markdown_export/markdown-export.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_report/report.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_branch_scoped_ledgers/taskledger-branch-scoped-ledgers.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_cli_api_parity/taskledger-cli-api-parity.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_v2_cli/taskledger-v2-cli.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_v2_exchange/taskledger-v2-exchange.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/tasks_service_static/tasks-service-static.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/todo_implementation_gate/todo-implementation-gate.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/trace/trace.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/tree_command/tree-command.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/usage_cli/usage-cli.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_cli/worker-pipeline-cli.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_config/worker-pipeline-config.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_context/worker-pipeline-context.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_handoff/worker-pipeline-handoff.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_plan_template/worker-pipeline-plan-template.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_todos/worker-pipeline-todos.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/workflow_guidance/workflow-guidance.feature +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/manifest.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/mappings/.gitkeep +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/mappings/intentional-unmapped.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/.gitkeep +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/coverage.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/coverage.md +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/mappings.json +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/__init__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/__main__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/__init__.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/config.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/handoff.py +4 -4
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/introductions.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/plans.py +15 -15
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/project.py +3 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/questions.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/releases.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/reviews.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/search.py +2 -2
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/sync.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/task_runs.py +13 -13
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/tasks.py +31 -31
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_actor.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_config.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_help.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_migrate.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_pipeline.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_question.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_ref.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_release.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_review.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_runtime.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_sync.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_task.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_trace.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_validate.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/command_inventory.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/compat/__init__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/compat/ledgercore.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/_model_utils.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/active_state.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/actor.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/change.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/check.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/event.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/handoff.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/lock.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/models.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/plan.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/policies.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/question.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/release.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/review.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/run.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/sidecars.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/states.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/task.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/errors.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/exchange.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/ids.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/launcher.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/migrations/__init__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/migrations/hooks.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/py.typed +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/refs.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/search.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/__init__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/actors.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/code_review.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/dashboard.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor_checks/migration_checks.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/event_logging.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/file_links.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/git_utils.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/handoff_lifecycle.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/lock_diagnostics.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/monitor.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/next_action_logic.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/next_action_model.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/next_action_payload.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/phase5_lock_transfer.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_editing.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_hash.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_lint.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_review.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/ready_work.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/releases.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/run_store.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/storage_locations.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/storage_migration.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_events.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_queries.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/trace.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/validation.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/worker_pipeline.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/workflow_guidance.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/workspace_snapshot.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/__init__.py +3 -3
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/agent_logs.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/atomic.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/common.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/events.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/frontmatter.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/indexes.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/init.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledger_config.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledger_local_config.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledger_manifest.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledgercore_backend.py +10 -10
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/locks.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/meta.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_binding.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_identity.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/sidecar_index.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/task_ids.py +1 -1
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/task_index.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/taskledger_migration.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/toml_edit.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/worker_pipeline_config.py +5 -5
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/yaml_store.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/timeutils.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/dependency_links.txt +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/entry_points.txt +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/requires.txt +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/top_level.txt +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/__init__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/support/__init__.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/support/builders.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/support/fake_command_runner.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_active_task.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_actor_harness_state.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_actor_resolution.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_atomic_fast_io.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_config_split.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_layout_migration.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_mount_paths.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_project_boundary.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_project_context.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_cli_command_contract.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_cli_import_resilience.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_cli_runner_compatibility.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_code_reviews.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_command_inventory.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_command_runner.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_config_cli.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_delta_remaining_contracts.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_docs_and_skill.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_error_contracts.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_event_logging_config.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_events.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_file_link_snapshots.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_find_code_clones_script.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_handoff_lifecycle.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_implementation_change_scan.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_indexes.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_json_contracts.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ledger_manifest_mutation.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ledgercore_dependency.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_legacy_cleanup_contracts.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_lifecycle_policies.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_lock_diagnostics.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_lock_inventory.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_locks_audit.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_models_v1_schema.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_monitor.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_next_action_expired_lock.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_no_log_feature.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_performance_caching.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_approval_contract.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_input.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_input_cli.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_lint.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_review.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_revision_workflow.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_todo_materialization.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_project_root_config.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_question_add_many.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_question_filter_answers.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_question_plan_regeneration.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ready_work.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_release_changelog.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_resource_refs.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_runtime_info.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_services_dashboard.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_shared_tool_ledger_storage.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_sidecar_collections.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_bundle_layout.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_common.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_init.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_migration.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_migration_coordinator.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_repos.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_sync.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_where_repair.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_yaml_store.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_sync_git.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_archive.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_events.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_ids.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_markdown_export.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_branch_scoped_ledgers.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_canonical_sync.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_cli_api_parity.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_adapter.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_context.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_migration_topology.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_sync.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_migration_v3.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_sibling_migration.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_storage_commands_v3.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_v2_cli.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_v2_exchange.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_tasks_service_static.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_todo_implementation_gate.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_trace.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_tree_command.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_usage_cli.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_validation_git_snapshot_recovery.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_cli.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_config.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_context.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_handoff.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_plan_template.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_todos.py +0 -0
- {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_workflow_guidance.py +0 -0
{taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl
RENAMED
|
@@ -20,3 +20,9 @@
|
|
|
20
20
|
{"data":{"added_source_refs":[],"fields":["summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0002","event":"entry.updated","event_id":"event-0020","record_revisions":{"entry:v0.6.2/entry-0002":2},"release_version":"v0.6.2","schema_version":2}
|
|
21
21
|
{"data":{"added_source_refs":[],"fields":["summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0003","event":"entry.updated","event_id":"event-0021","record_revisions":{"entry:v0.6.2/entry-0003":2},"release_version":"v0.6.2","schema_version":2}
|
|
22
22
|
{"data":{"released_at":"2026-08-15"},"event":"release.finalized","event_id":"event-0022","record_revisions":{"release:v0.6.2":6},"release_version":"v0.6.2","schema_version":2}
|
|
23
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0023","record_revisions":{"release:v0.6.3":1},"release_version":"v0.6.3","schema_version":2}
|
|
24
|
+
{"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0024","record_revisions":{"release:v0.6.3":2},"release_version":"v0.6.3","schema_version":2}
|
|
25
|
+
{"data":{"row_count":1},"event":"audit.created","event_id":"event-0025","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.6.3","schema_version":2}
|
|
26
|
+
{"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0026","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.3","schema_version":2}
|
|
27
|
+
{"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0027","record_revisions":{"commit_audit_sheet":3,"entry:v0.6.3/entry-0001":1,"release:v0.6.3":3},"release_version":"v0.6.3","schema_version":2}
|
|
28
|
+
{"data":{"released_at":"2026-08-19"},"event":"release.finalized","event_id":"event-0028","record_revisions":{"release:v0.6.3":4},"release_version":"v0.6.3","schema_version":2}
|
taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/audit/commit-audit.yaml
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
object_type: commit_audit_sheet
|
|
3
|
+
versioning:
|
|
4
|
+
schema_version: 1
|
|
5
|
+
revision: 3
|
|
6
|
+
release_version: v0.6.3
|
|
7
|
+
git_base_ref: v0.6.2
|
|
8
|
+
git_base_sha: 196a79e85e7abf1296637bec7500c689011e054d
|
|
9
|
+
git_head_ref: HEAD
|
|
10
|
+
git_head_sha: 713acfa2be8891f88d889121dd769656443947f3
|
|
11
|
+
git_range: 196a79e85e7abf1296637bec7500c689011e054d..713acfa2be8891f88d889121dd769656443947f3
|
|
12
|
+
commit_count: 1
|
|
13
|
+
rows:
|
|
14
|
+
- sha: 713acfa2be8891f88d889121dd769656443947f3
|
|
15
|
+
source_ref: git:713acfa2be8891f88d889121dd769656443947f3
|
|
16
|
+
short_sha: 713acfa
|
|
17
|
+
changed_paths:
|
|
18
|
+
- docs/command_contract.md
|
|
19
|
+
- docs/full_task_cycle.md
|
|
20
|
+
- docs/usage.md
|
|
21
|
+
- scripts/find_code_clones.py
|
|
22
|
+
- skills/taskledger/SKILL.md
|
|
23
|
+
- specs/behavior/features/implementation_checks/implementation-checks.feature
|
|
24
|
+
- taskledger/api/__init__.py
|
|
25
|
+
- taskledger/api/config.py
|
|
26
|
+
- taskledger/api/handoff.py
|
|
27
|
+
- taskledger/api/introductions.py
|
|
28
|
+
- taskledger/api/locks.py
|
|
29
|
+
- taskledger/api/plans.py
|
|
30
|
+
- taskledger/api/project.py
|
|
31
|
+
- taskledger/api/questions.py
|
|
32
|
+
- taskledger/api/repair.py
|
|
33
|
+
- taskledger/api/reviews.py
|
|
34
|
+
- taskledger/api/search.py
|
|
35
|
+
- taskledger/api/storage.py
|
|
36
|
+
- taskledger/api/task_runs.py
|
|
37
|
+
- taskledger/api/tasks.py
|
|
38
|
+
- taskledger/cli.py
|
|
39
|
+
- taskledger/cli_archive.py
|
|
40
|
+
- taskledger/cli_common.py
|
|
41
|
+
- taskledger/cli_implement.py
|
|
42
|
+
- taskledger/cli_ledger.py
|
|
43
|
+
- taskledger/cli_misc.py
|
|
44
|
+
- taskledger/cli_plan.py
|
|
45
|
+
- taskledger/cli_storage.py
|
|
46
|
+
- taskledger/domain/__init__.py
|
|
47
|
+
- taskledger/services/agent_logging.py
|
|
48
|
+
- taskledger/services/agent_transcripts.py
|
|
49
|
+
- taskledger/services/change_tracking.py
|
|
50
|
+
- taskledger/services/check_tracking.py
|
|
51
|
+
- taskledger/services/command_runner.py
|
|
52
|
+
- taskledger/services/doctor.py
|
|
53
|
+
- taskledger/services/doctor_checks/project_scan.py
|
|
54
|
+
- taskledger/services/doctor_checks/task_checks.py
|
|
55
|
+
- taskledger/services/git_sync.py
|
|
56
|
+
- taskledger/services/handoff.py
|
|
57
|
+
- taskledger/services/implementation_flow.py
|
|
58
|
+
- taskledger/services/lock_inventory.py
|
|
59
|
+
- taskledger/services/navigation.py
|
|
60
|
+
- taskledger/services/next_action_logic.py
|
|
61
|
+
- taskledger/services/plan_input.py
|
|
62
|
+
- taskledger/services/plan_materialization.py
|
|
63
|
+
- taskledger/services/planning_flow.py
|
|
64
|
+
- taskledger/services/runtime_info.py
|
|
65
|
+
- taskledger/services/task_archive.py
|
|
66
|
+
- taskledger/services/task_collections.py
|
|
67
|
+
- taskledger/services/task_export.py
|
|
68
|
+
- taskledger/services/task_lifecycle.py
|
|
69
|
+
- taskledger/services/task_repair.py
|
|
70
|
+
- taskledger/services/task_reports.py
|
|
71
|
+
- taskledger/services/tasks.py
|
|
72
|
+
- taskledger/services/tree.py
|
|
73
|
+
- taskledger/services/usage.py
|
|
74
|
+
- taskledger/services/validation_flow.py
|
|
75
|
+
- taskledger/services/worker_context.py
|
|
76
|
+
- taskledger/storage/__init__.py
|
|
77
|
+
- taskledger/storage/index_cache.py
|
|
78
|
+
- taskledger/storage/layout_migration.py
|
|
79
|
+
- taskledger/storage/ledgercore_backend.py
|
|
80
|
+
- taskledger/storage/migrations.py
|
|
81
|
+
- taskledger/storage/paths.py
|
|
82
|
+
- taskledger/storage/project_config.py
|
|
83
|
+
- taskledger/storage/project_context.py
|
|
84
|
+
- taskledger/storage/repos.py
|
|
85
|
+
- taskledger/storage/task_ids.py
|
|
86
|
+
- taskledger/storage/task_store.py
|
|
87
|
+
- taskledger/storage/worker_pipeline_config.py
|
|
88
|
+
- tests/conftest.py
|
|
89
|
+
- tests/test_agent_command_logging.py
|
|
90
|
+
- tests/test_agent_session_protocol.py
|
|
91
|
+
- tests/test_command_example_linter.py
|
|
92
|
+
- tests/test_compact_mutation_output.py
|
|
93
|
+
- tests/test_doctor.py
|
|
94
|
+
- tests/test_domain_policies.py
|
|
95
|
+
- tests/test_help_subprocess.py
|
|
96
|
+
- tests/test_implementation_checks.py
|
|
97
|
+
- tests/test_import_boundaries.py
|
|
98
|
+
- tests/test_indexes_cache_recovery.py
|
|
99
|
+
- tests/test_ledgercore_compat.py
|
|
100
|
+
- tests/test_search.py
|
|
101
|
+
- tests/test_service_boundaries.py
|
|
102
|
+
- tests/test_task_report.py
|
|
103
|
+
- tests/test_taskledger_sibling_storage.py
|
|
104
|
+
- tests/test_workspace_snapshot.py
|
|
105
|
+
stats:
|
|
106
|
+
files_changed: 0
|
|
107
|
+
insertions: 675
|
|
108
|
+
deletions: 383
|
|
109
|
+
inspected: true
|
|
110
|
+
inspected_paths:
|
|
111
|
+
- taskledger/cli.py
|
|
112
|
+
- taskledger/cli_common.py
|
|
113
|
+
- taskledger/cli_implement.py
|
|
114
|
+
- taskledger/cli_plan.py
|
|
115
|
+
- taskledger/services/agent_logging.py
|
|
116
|
+
- taskledger/services/command_runner.py
|
|
117
|
+
- taskledger/services/implementation_flow.py
|
|
118
|
+
- tests/test_agent_command_logging.py
|
|
119
|
+
- tests/test_implementation_checks.py
|
|
120
|
+
- docs/command_contract.md
|
|
121
|
+
- docs/full_task_cycle.md
|
|
122
|
+
- docs/usage.md
|
|
123
|
+
observed_behavior:
|
|
124
|
+
Managed plan and implement command wrappers now preserve the
|
|
125
|
+
exact child argv, execute from the CLI invocation directory or explicit root,
|
|
126
|
+
capture stdout and stderr in structured results, show those streams in human mode,
|
|
127
|
+
and record the child cwd in managed command logs. Focused tests cover argv, cwd,
|
|
128
|
+
human output, JSON output, and transcript logging.
|
|
129
|
+
public_impact: public
|
|
130
|
+
decision: accepted
|
|
131
|
+
evidence_subject: "feat: improve transcript logging"
|
|
132
|
+
target_entry_id: entry-0001
|
|
133
|
+
notes:
|
|
134
|
+
The remaining changed paths are import/export ordering, formatting, lint
|
|
135
|
+
cleanup, and supporting refactors without separate release-note behavior.
|
taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/entries/entry-0001.md
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release_entry
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 1
|
|
7
|
+
entry_id: entry-0001
|
|
8
|
+
release_version: v0.6.3
|
|
9
|
+
kind: changed
|
|
10
|
+
summary:
|
|
11
|
+
Improved managed commands to preserve child arguments, working directories,
|
|
12
|
+
output, and execution context
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- git:713acfa2be8891f88d889121dd769656443947f3
|
|
18
|
+
paths:
|
|
19
|
+
- taskledger/cli.py
|
|
20
|
+
- taskledger/cli_common.py
|
|
21
|
+
- taskledger/cli_implement.py
|
|
22
|
+
- taskledger/cli_plan.py
|
|
23
|
+
- taskledger/services/agent_logging.py
|
|
24
|
+
- taskledger/services/command_runner.py
|
|
25
|
+
- taskledger/services/implementation_flow.py
|
|
26
|
+
- tests/test_agent_command_logging.py
|
|
27
|
+
- tests/test_implementation_checks.py
|
|
28
|
+
- docs/command_contract.md
|
|
29
|
+
- docs/full_task_cycle.md
|
|
30
|
+
- docs/usage.md
|
|
31
|
+
issues: []
|
|
32
|
+
prs: []
|
|
33
|
+
sources: []
|
|
34
|
+
contributors: []
|
|
35
|
+
breaking: false
|
|
36
|
+
internal: false
|
|
37
|
+
order: 1
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
Planning and implementation command results and managed command logs now expose the child working directory and captured stdout/stderr. Human mode emits captured streams, while JSON mode keeps them in the result envelope.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 4
|
|
7
|
+
version: v0.6.3
|
|
8
|
+
status: released
|
|
9
|
+
title: Release v0.6.3
|
|
10
|
+
released_at: "2026-08-19"
|
|
11
|
+
previous_version: v0.6.2
|
|
12
|
+
cancel_reason: null
|
|
13
|
+
superseded_by: null
|
|
14
|
+
changelog_file: docs/changelog.md
|
|
15
|
+
boundary_ref: null
|
|
16
|
+
source_refs: []
|
|
17
|
+
source_count: null
|
|
18
|
+
entry_count: 1
|
|
19
|
+
artifact_count: 0
|
|
20
|
+
git_base_ref: v0.6.2
|
|
21
|
+
git_base_sha: 196a79e85e7abf1296637bec7500c689011e054d
|
|
22
|
+
git_head_ref: HEAD
|
|
23
|
+
git_head_sha: 713acfa2be8891f88d889121dd769656443947f3
|
|
24
|
+
git_range: 196a79e85e7abf1296637bec7500c689011e054d..713acfa2be8891f88d889121dd769656443947f3
|
|
25
|
+
git_commit_count: 1
|
|
26
|
+
---
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
> **Generated by releaseledger.** Manual edits may be overwritten. Update releaseledger entries and rebuild this file instead.
|
|
4
4
|
|
|
5
|
+
## [v0.6.3] - 2026-08-19
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Improved managed commands to preserve child arguments, working directories, output, and execution context
|
|
10
|
+
|
|
11
|
+
<!-- generated by releaseledger -->
|
|
12
|
+
|
|
5
13
|
## [v0.6.2] - 2026-08-15
|
|
6
14
|
|
|
7
15
|
### Changed
|
|
@@ -443,7 +443,16 @@ to a durable non-active stage rather than directly re-entering an active stage.
|
|
|
443
443
|
## Managed command wrappers
|
|
444
444
|
|
|
445
445
|
`plan command` and `implement command` mirror the inner command exit code by
|
|
446
|
-
default.
|
|
446
|
+
default. Both wrappers pass the argument vector after `--` to the child without a
|
|
447
|
+
shell. They execute the child from the CLI invocation directory, or the explicit
|
|
448
|
+
`--root` directory, even when Taskledger discovers an ancestor workspace root for
|
|
449
|
+
ledger state, artifacts, and logs.
|
|
450
|
+
|
|
451
|
+
Captured stdout and stderr are included in the command result. Human mode emits
|
|
452
|
+
those streams before the recorded-command summary, while JSON mode keeps them only
|
|
453
|
+
inside the single JSON result envelope. The result and managed-shell log also record
|
|
454
|
+
the child cwd. `--allow-failure` changes only the wrapper exit code; the recorded
|
|
455
|
+
child exit code and failed check remain unchanged.
|
|
447
456
|
|
|
448
457
|
Use `--allow-failure` when you intentionally want to record a non-zero inner
|
|
449
458
|
exit code while returning wrapper exit code `0`:
|
|
@@ -118,10 +118,12 @@ taskledger plan command -- pytest tests/test_parser.py -q
|
|
|
118
118
|
taskledger plan command -- python -m compileall taskledger
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
-
`plan command` records command exit code and
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
`plan command` records command exit code, stdout, stderr, and actual child cwd in
|
|
122
|
+
planning diagnostics. It passes the inner argv without a shell and runs from the CLI
|
|
123
|
+
invocation directory. Workspace discovery may use an ancestor for Taskledger state,
|
|
124
|
+
but it must not change the managed child's cwd. With transcript logging enabled, the
|
|
125
|
+
same output is also captured in the ledger-level command transcript. Use it to build
|
|
126
|
+
evidence into the plan before proposal.
|
|
125
127
|
|
|
126
128
|
## 6. Materialize Todos And Approve
|
|
127
129
|
|
|
@@ -188,7 +190,10 @@ taskledger implement status
|
|
|
188
190
|
```
|
|
189
191
|
|
|
190
192
|
Use `implement command` when you want taskledger to record a command run as
|
|
191
|
-
part of implementation.
|
|
193
|
+
part of implementation. It preserves the inner argv, runs from the CLI invocation
|
|
194
|
+
directory, and records the child cwd, exit code, stdout, and stderr. In human mode,
|
|
195
|
+
captured child output is shown before the command summary. In JSON mode, streams stay
|
|
196
|
+
inside the result envelope. With transcript logging enabled, it also records managed
|
|
192
197
|
stdout/stderr in the task transcript. Use `implement deviation` when the
|
|
193
198
|
implementation differs from the approved plan.
|
|
194
199
|
|
|
@@ -593,10 +593,14 @@ taskledger implement command --allow-failure -- python -c "raise SystemExit(7)"
|
|
|
593
593
|
```
|
|
594
594
|
|
|
595
595
|
When `[agent_logging].enabled = true` in `.ledger/taskledger/config.toml`, `taskledger`
|
|
596
|
-
records CLI invocations and managed command outputs.
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
596
|
+
records CLI invocations and managed command outputs. Both managed wrappers execute
|
|
597
|
+
the exact argv after `--` without a shell and from the CLI invocation directory, or
|
|
598
|
+
the explicit `--root` directory. Taskledger may discover an ancestor workspace for
|
|
599
|
+
ledger state, but that does not change the child's cwd. Human mode displays captured
|
|
600
|
+
stdout/stderr before the summary. JSON mode contains stdout/stderr and cwd only in
|
|
601
|
+
the result object. Keep logging opt-in because stdout/stderr may contain sensitive
|
|
602
|
+
data. Route task-relevant commands through `plan command` and `implement command`
|
|
603
|
+
so their output is included in task transcripts and reports.
|
|
600
604
|
|
|
601
605
|
> taskledger context --for implementation --format markdown
|
|
602
606
|
> taskledger implement start
|
|
@@ -119,7 +119,7 @@ def _normalized_windows(
|
|
|
119
119
|
if len(normalized) < min_lines:
|
|
120
120
|
return []
|
|
121
121
|
windows: list[tuple[int, tuple[str, ...]]] = []
|
|
122
|
-
for offset in range(
|
|
122
|
+
for offset in range(len(normalized) - min_lines + 1):
|
|
123
123
|
start_line = normalized[offset][0]
|
|
124
124
|
body = tuple(item[1] for item in normalized[offset : offset + min_lines])
|
|
125
125
|
windows.append((start_line, body))
|
|
@@ -281,7 +281,9 @@ The plan file should use version ids like `plan-v1`, `plan-v2` in references. Do
|
|
|
281
281
|
- Make the code changes
|
|
282
282
|
- `taskledger implement change --path ... --kind edit --summary "..."`
|
|
283
283
|
- Run verification through `taskledger implement command -- ...` so exit code and output are recorded.
|
|
284
|
-
- `implement command`
|
|
284
|
+
- Managed `plan command` and `implement command` pass argv after `--` without a shell and run from the CLI invocation directory, or explicit `--root` directory. Workspace discovery does not change the child cwd.
|
|
285
|
+
- Human mode emits captured child stdout/stderr before the summary. JSON mode keeps stdout/stderr and the actual child cwd inside the result envelope.
|
|
286
|
+
- Both wrappers mirror the inner command exit code by default. Use `--allow-failure` when you intentionally want to record a non-zero inner command without failing the wrapper command; the recorded child failure remains unchanged.
|
|
285
287
|
- Mark each todo done only after the relevant command or inspection evidence exists: `taskledger todo done <todo-id> --evidence "check-NNNN exited 0"`.
|
|
286
288
|
- Optional: add `--source planner|implementer|user` to override the inferred source, though this is rarely needed.
|
|
287
289
|
6. `taskledger implement checklist` after each meaningful change to track progress.
|
|
@@ -393,7 +395,7 @@ taskledger validate check --criterion ac-0001 --status pass --evidence "pytest t
|
|
|
393
395
|
- Log every meaningful implementation change with `taskledger implement change`.
|
|
394
396
|
- Record deviations from the approved plan with `taskledger implement deviation`.
|
|
395
397
|
- Mark todos done with evidence: `taskledger todo done <todo-id> --evidence "pytest -q"`.
|
|
396
|
-
- When transcript logging is enabled in project config, run task-relevant commands through `taskledger plan command -- ...` or `taskledger implement command -- ...` so stdout/stderr becomes durable transcript evidence.
|
|
398
|
+
- When transcript logging is enabled in project config, run task-relevant commands through `taskledger plan command -- ...` or `taskledger implement command -- ...` so stdout/stderr becomes durable transcript evidence. The managed result and shell log include the actual child cwd.
|
|
397
399
|
- Do not paste secrets into command arguments, evidence strings, or expected command output when transcript logging is enabled.
|
|
398
400
|
- Use `taskledger handoff create --mode implementation|validation --intended-actor agent --intended-harness codex` when switching actor or harness.
|
|
399
401
|
- Use `taskledger handoff claim handoff-0001` before continuing work from a handoff.
|
|
@@ -43,18 +43,10 @@ Feature: Implementation Checks
|
|
|
43
43
|
@req-REQ-0026 @ac-AC-0321
|
|
44
44
|
Example: Human Output Shows Check
|
|
45
45
|
Given the pytest test setup is prepared
|
|
46
|
-
When
|
|
46
|
+
When managed command execution is exercised
|
|
47
47
|
Then r.exit_code equals 0
|
|
48
48
|
Then 'recorded check check-' is in r.output
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
When failed command creates failed check is executed
|
|
54
|
-
Then r.exit_code equals 1
|
|
55
|
-
|
|
56
|
-
@req-REQ-0026 @ac-AC-0315
|
|
57
|
-
Example: Allow Failure Records Check
|
|
58
|
-
Given the pytest test setup is prepared
|
|
59
|
-
When allow failure records check is executed
|
|
60
|
-
Then r.exit_code equals 0
|
|
49
|
+
Then child stdout and stderr are visible in human output
|
|
50
|
+
Then the managed result reports the actual child cwd
|
|
51
|
+
Then the child receives the exact argv after --
|
|
52
|
+
Then planning and implementation wrappers use the same execution contract
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '0.6.
|
|
22
|
-
__version_tuple__ = version_tuple = (0, 6,
|
|
21
|
+
__version__ = version = '0.6.3'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 6, 3)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'gecce3598f'
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
from taskledger.services.tasks import break_lock, list_locks, show_lock
|
|
2
2
|
from taskledger.storage.task_store import load_active_locks
|
|
3
3
|
|
|
4
|
-
__all__ = ["
|
|
4
|
+
__all__ = ["break_lock", "list_locks", "load_active_locks", "show_lock"]
|
|
@@ -122,7 +122,7 @@ def storage_validate(
|
|
|
122
122
|
"reason": f"Mount {mount_name} not found",
|
|
123
123
|
}
|
|
124
124
|
)
|
|
125
|
-
except Exception:
|
|
125
|
+
except Exception: # noqa: BLE001, S110
|
|
126
126
|
pass # Best effort for strict checks
|
|
127
127
|
valid = bool(report is not None and report.valid)
|
|
128
128
|
if strict:
|
|
@@ -271,7 +271,7 @@ def _register_optional_group(
|
|
|
271
271
|
try:
|
|
272
272
|
module = importlib.import_module(module_name)
|
|
273
273
|
register = getattr(module, register_name)
|
|
274
|
-
except Exception as exc:
|
|
274
|
+
except Exception as exc: # noqa: BLE001
|
|
275
275
|
_register_failed_group_placeholder(
|
|
276
276
|
app,
|
|
277
277
|
error=_optional_group_failure(
|
|
@@ -390,7 +390,7 @@ def _command_from_tokens(argv: tuple[str, ...]) -> str:
|
|
|
390
390
|
if token in _ROOT_OPTIONS_WITH_VALUE:
|
|
391
391
|
index += 2
|
|
392
392
|
continue
|
|
393
|
-
if token.startswith("--cwd="
|
|
393
|
+
if token.startswith(("--cwd=", "--root=")):
|
|
394
394
|
index += 1
|
|
395
395
|
continue
|
|
396
396
|
if token.startswith("-"):
|
|
@@ -443,7 +443,9 @@ def _usage_error_remediation(
|
|
|
443
443
|
"or `taskledger doctor indexes` for focused diagnostics."
|
|
444
444
|
),
|
|
445
445
|
]
|
|
446
|
-
extra_match = re.search(
|
|
446
|
+
extra_match = re.search(
|
|
447
|
+
r"unexpected extra argument \(([^)]+)\)", message, re.IGNORECASE
|
|
448
|
+
)
|
|
447
449
|
if extra_match is None:
|
|
448
450
|
return remediation
|
|
449
451
|
extra = extra_match.group(1).strip()
|
|
@@ -577,7 +579,12 @@ def main(
|
|
|
577
579
|
# discovery, config loading, and agent-log recording overhead.
|
|
578
580
|
argv = tuple(sys.argv[1:])
|
|
579
581
|
if _is_help_or_introspection(argv):
|
|
580
|
-
|
|
582
|
+
current = Path.cwd().resolve()
|
|
583
|
+
ctx.obj = CLIState(
|
|
584
|
+
cwd=current,
|
|
585
|
+
json_output=json_output,
|
|
586
|
+
command_cwd=current,
|
|
587
|
+
)
|
|
581
588
|
return
|
|
582
589
|
|
|
583
590
|
if cwd is not None and root is not None and cwd != root:
|
|
@@ -606,15 +613,24 @@ def main(
|
|
|
606
613
|
except LaunchError as exc:
|
|
607
614
|
if is_tolerant:
|
|
608
615
|
# For tolerant commands, use the raw cwd without failing
|
|
609
|
-
ctx.obj = CLIState(
|
|
616
|
+
ctx.obj = CLIState(
|
|
617
|
+
cwd=raw_cwd,
|
|
618
|
+
json_output=json_output,
|
|
619
|
+
command_cwd=raw_cwd,
|
|
620
|
+
)
|
|
610
621
|
return
|
|
611
|
-
ctx.obj = CLIState(
|
|
622
|
+
ctx.obj = CLIState(
|
|
623
|
+
cwd=raw_cwd,
|
|
624
|
+
json_output=json_output,
|
|
625
|
+
command_cwd=raw_cwd,
|
|
626
|
+
)
|
|
612
627
|
emit_error(ctx, exc)
|
|
613
628
|
raise typer.Exit(code=launch_error_exit_code(exc)) from exc
|
|
614
629
|
ctx.obj = CLIState(
|
|
615
630
|
cwd=resolved_cwd,
|
|
616
631
|
json_output=json_output,
|
|
617
632
|
runtime=CommandRuntime(workspace_root=resolved_cwd),
|
|
633
|
+
command_cwd=raw_cwd,
|
|
618
634
|
)
|
|
619
635
|
from taskledger.services.agent_logging import start_cli_recorder
|
|
620
636
|
|
|
@@ -743,8 +759,10 @@ def init_command(
|
|
|
743
759
|
payload,
|
|
744
760
|
human="\n".join(
|
|
745
761
|
[
|
|
746
|
-
|
|
747
|
-
|
|
762
|
+
(
|
|
763
|
+
"initialized taskledger: "
|
|
764
|
+
f"{payload.get('root', payload.get('project_root', '?'))}"
|
|
765
|
+
),
|
|
748
766
|
f"project name: {payload['project_name']}",
|
|
749
767
|
*[f"- {item}" for item in cast(list[str], payload["created"])],
|
|
750
768
|
]
|
|
@@ -37,20 +37,14 @@ class ArchiveImportRequest:
|
|
|
37
37
|
def looks_like_archive_output_target(value: str) -> bool:
|
|
38
38
|
candidate = value.strip()
|
|
39
39
|
lowered = candidate.lower()
|
|
40
|
-
if (
|
|
41
|
-
lowered.endswith(".tar.gz")
|
|
42
|
-
or lowered.endswith(".tgz")
|
|
43
|
-
or lowered.endswith(".json")
|
|
44
|
-
):
|
|
40
|
+
if lowered.endswith((".tar.gz", ".tgz", ".json")):
|
|
45
41
|
return True
|
|
46
42
|
path = Path(candidate)
|
|
47
43
|
if path.is_absolute():
|
|
48
44
|
return True
|
|
49
45
|
if "/" in candidate or "\\" in candidate:
|
|
50
46
|
return True
|
|
51
|
-
|
|
52
|
-
return True
|
|
53
|
-
return False
|
|
47
|
+
return path.parent != Path(".")
|
|
54
48
|
|
|
55
49
|
|
|
56
50
|
def resolve_archive_export_request(
|
|
@@ -80,6 +80,11 @@ class CLIState:
|
|
|
80
80
|
cwd: Path
|
|
81
81
|
json_output: bool
|
|
82
82
|
runtime: CommandRuntime | None = None
|
|
83
|
+
command_cwd: Path | None = None
|
|
84
|
+
|
|
85
|
+
@property
|
|
86
|
+
def managed_command_cwd(self) -> Path:
|
|
87
|
+
return self.command_cwd or self.cwd
|
|
83
88
|
|
|
84
89
|
|
|
85
90
|
TaskOption = Annotated[
|
|
@@ -291,6 +296,26 @@ def emit_payload(
|
|
|
291
296
|
typer.echo(human)
|
|
292
297
|
|
|
293
298
|
|
|
299
|
+
def emit_managed_command_streams(
|
|
300
|
+
ctx: typer.Context,
|
|
301
|
+
payload: dict[str, object],
|
|
302
|
+
) -> None:
|
|
303
|
+
state = cli_state_from_context(ctx)
|
|
304
|
+
if state.json_output:
|
|
305
|
+
return
|
|
306
|
+
|
|
307
|
+
stdout = payload.get("stdout")
|
|
308
|
+
stderr = payload.get("stderr")
|
|
309
|
+
if isinstance(stdout, str) and stdout:
|
|
310
|
+
typer.echo(stdout, nl=False)
|
|
311
|
+
if not stdout.endswith("\n"):
|
|
312
|
+
typer.echo()
|
|
313
|
+
if isinstance(stderr, str) and stderr:
|
|
314
|
+
typer.echo(stderr, err=True, nl=False)
|
|
315
|
+
if not stderr.endswith("\n"):
|
|
316
|
+
typer.echo(err=True)
|
|
317
|
+
|
|
318
|
+
|
|
294
319
|
def emit_error(
|
|
295
320
|
ctx: typer.Context,
|
|
296
321
|
error: Exception | str,
|
|
@@ -659,8 +684,10 @@ def _default_remediation(exit_code: int) -> list[str]:
|
|
|
659
684
|
return {
|
|
660
685
|
2: ["Review the invalid input or command usage and retry."],
|
|
661
686
|
3: [
|
|
662
|
-
|
|
663
|
-
|
|
687
|
+
(
|
|
688
|
+
"Check the requested resource or move through the required workflow "
|
|
689
|
+
"gate before retrying."
|
|
690
|
+
)
|
|
664
691
|
],
|
|
665
692
|
4: ["Inspect the active lock or break it explicitly if it is stale."],
|
|
666
693
|
5: ["Inspect the external command or service failure and retry."],
|
|
@@ -304,10 +304,14 @@ def command_command(
|
|
|
304
304
|
state.cwd,
|
|
305
305
|
task.id,
|
|
306
306
|
argv=argv,
|
|
307
|
+
command_cwd=state.managed_command_cwd,
|
|
307
308
|
)
|
|
308
309
|
except LaunchError as exc:
|
|
309
310
|
emit_error(ctx, exc)
|
|
310
311
|
raise typer.Exit(code=launch_error_exit_code(exc)) from exc
|
|
312
|
+
from taskledger.cli_common import emit_managed_command_streams
|
|
313
|
+
|
|
314
|
+
emit_managed_command_streams(ctx, payload)
|
|
311
315
|
check_data: dict[str, object] = payload.get("check") or {} # type: ignore[assignment]
|
|
312
316
|
emit_payload(
|
|
313
317
|
ctx,
|
|
@@ -119,7 +119,7 @@ def ledger_list_command(ctx: typer.Context) -> None:
|
|
|
119
119
|
active_data = load_yaml_object(
|
|
120
120
|
active_yaml, "active task state", missing="empty"
|
|
121
121
|
)
|
|
122
|
-
except Exception:
|
|
122
|
+
except Exception: # noqa: BLE001, S110
|
|
123
123
|
pass
|
|
124
124
|
active_id = active_data.get("task_id") if active_data else None
|
|
125
125
|
entries.append(
|
|
@@ -453,7 +453,7 @@ def ledger_doctor_command(ctx: typer.Context) -> None:
|
|
|
453
453
|
),
|
|
454
454
|
}
|
|
455
455
|
)
|
|
456
|
-
except Exception as exc:
|
|
456
|
+
except Exception as exc: # noqa: BLE001
|
|
457
457
|
issues.append(
|
|
458
458
|
{"check": "active_task_check", "status": "warn", "message": str(exc)}
|
|
459
459
|
)
|
|
@@ -137,7 +137,7 @@ def _next_todo_or_finish_command(progress: dict[str, object]) -> str:
|
|
|
137
137
|
return "taskledger implement finish --summary SUMMARY"
|
|
138
138
|
|
|
139
139
|
|
|
140
|
-
def register_todo_v2_commands(app: typer.Typer) -> None:
|
|
140
|
+
def register_todo_v2_commands(app: typer.Typer) -> None:
|
|
141
141
|
@app.command("add")
|
|
142
142
|
def add_command(
|
|
143
143
|
ctx: typer.Context,
|