taskledger 0.6.6__tar.gz → 0.6.8__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.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +11 -0
- taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/audit/commit-audit.yaml +87 -0
- taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/entries/entry-0001.md +53 -0
- taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/release.md +27 -0
- taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/audit/commit-audit.yaml +79 -0
- taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/entries/entry-0001.md +31 -0
- taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/release.md +27 -0
- {taskledger-0.6.6/taskledger.egg-info → taskledger-0.6.8}/PKG-INFO +7 -1
- {taskledger-0.6.6 → taskledger-0.6.8}/README.md +6 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/changelog.md +16 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/command_contract.md +3 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/full_task_cycle.md +7 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/sync.md +4 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/transfer.md +6 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/usage.md +3 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/skills/taskledger/SKILL.md +2 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/_version.py +3 -3
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/config.py +12 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_validate.py +10 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/check.py +20 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/sidecars.py +5 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/exchange.py +59 -8
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/agent_logging.py +14 -9
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/change_tracking.py +16 -3
- taskledger-0.6.8/taskledger/services/check_reuse.py +240 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/check_tracking.py +12 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor.py +26 -0
- taskledger-0.6.8/taskledger/services/doctor_checks/artifact_checks.py +83 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor_checks/task_checks.py +15 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/git_sync.py +28 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/handoff.py +90 -19
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/implementation_flow.py +28 -3
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/tasks.py +32 -4
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/validation_flow.py +70 -4
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/workflow_guidance.py +8 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/agent_logs.py +6 -1
- taskledger-0.6.8/taskledger/storage/artifact_policy.py +106 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_config.py +29 -2
- {taskledger-0.6.6 → taskledger-0.6.8/taskledger.egg-info}/PKG-INFO +7 -1
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/SOURCES.txt +12 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/scm_file_list.json +12 -0
- taskledger-0.6.8/taskledger.egg-info/scm_version.json +8 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_actor_resolution.py +1 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_agent_command_logging.py +12 -0
- taskledger-0.6.8/tests/test_artifact_policy.py +63 -0
- taskledger-0.6.8/tests/test_check_reuse.py +229 -0
- taskledger-0.6.8/tests/test_check_reuse_context.py +77 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_config_cli.py +25 -2
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_doctor.py +61 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_implementation_checks.py +26 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_models_v1_schema.py +1 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_project_root_config.py +19 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_sync_git.py +36 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_v2_exchange.py +14 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_validation_command.py +45 -0
- taskledger-0.6.6/taskledger.egg-info/scm_version.json +0 -8
- {taskledger-0.6.6 → taskledger-0.6.8}/.codecrate.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/codecov.yml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/pre-commit.yml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/python-publish.yml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/tests.yml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.gitignore +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/.archledger-migration-20260821T090309Z/config.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/config.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/building_blocks/block-0083.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/concepts/concept-0081.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/runtime/runtime-0076.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/runtime/runtime-0084.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/document-state.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/migrations/20260821T090309Z-ledgercore-0.4-repository-storage.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/migrations/migration-cbe21be3f9dc3db4b03f6366.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0002.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0003.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0004.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0005.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0006.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0007.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0008.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0009.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0010.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0011.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0012.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0029.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0030.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0031.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0032.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0033.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0034.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0040.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0041.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0042.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0043.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0044.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0045.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0082.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0085.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0086.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0016.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0017.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0018.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0019.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0020.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0021.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0022.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0023.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0046.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0047.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0048.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0049.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0050.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0051.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/deployment/deploy-0039.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0061.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0062.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0063.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0064.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0065.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0066.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0067.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0068.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0069.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0070.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0071.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0072.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0073.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0052.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0053.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0054.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0055.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0056.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/requirements/content-0013.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/requirements/content-0014.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/requirements/content-0015.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0057.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0058.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0059.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0060.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0035.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0036.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0037.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0038.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0074.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0075.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0077.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0078.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0087.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0088.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/stakeholders/content-0079.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/stakeholders/content-0080.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0024.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0025.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0026.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0027.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0028.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/source-state.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/storage.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/migrations/migration-66baa70bad8a0bb5ae852133.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/config.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-api-md-9eddf4dc.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-architecture-taskledger-split-md-63034c0d.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-command-contract-md-abe6f6d9.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-full-task-cycle-md-721181f0.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-multi-repo-md-929e47a9.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-public-surface-md-c1b8772f.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-service-boundary-whitelist-md-800b76f5.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-sync-md-a29422f3.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-transfer-md-f8532303.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-usage-md-72376d0b.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/scan.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/source-index.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/storage.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/ledger.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/migrations/documentledger-bb67fdd8e51cff33.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/config.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0002.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0003.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0004.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0005.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0006.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0007.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0008.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0009.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0010.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0011.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0012.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0013.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0014.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0015.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0016.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0017.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0018.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0019.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0020.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0021.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0022.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0023.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0002.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0003.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0004.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0005.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0002.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0003.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0004.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/audit/commit-audit.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/audit/commit-audit.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/entries/entry-0002.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/entries/entry-0003.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/audit/commit-audit.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/entries/entry-0002.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/entries/entry-0003.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.6/audit/commit-audit.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.6/entries/entry-0001.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.6/release.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/write.lock +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/task/config.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/taskledger/.ledger-project.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/taskledger/config.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.planledger.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.pre-commit-config.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.readthedocs.yaml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/.ruff.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/AGENTS.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/API.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/LICENSE +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/Makefile +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/Makefile +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/api.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/architecture.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/architecture_taskledger_split.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/build.sh +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/conf.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/documentation_freshness.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/index.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/multi_repo.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/public_surface.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/release_checklist.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/requirements.txt +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/docs/service_boundary_whitelist.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/pyproject.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/requirements/manifest.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/scripts/find_code_clones.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/setup.cfg +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specmason.toml +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/README.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/UNMAPPED_TESTS.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/evidence/.gitkeep +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/evidence/taskledger-test-feature-coverage.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/.gitkeep +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/active_task/active-task.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/actor_harness_state/actor-harness-state.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/actor_resolution/actor-resolution.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/agent_command_logging/agent-command-logging.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/agent_session_protocol/agent-session-protocol.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/atomic_fast_io/atomic-fast-io.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/cli_command_contract/cli-command-contract.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/cli_import_resilience/cli-import-resilience.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/code_reviews/code-reviews.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/command_example_linter/command-example-linter.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/command_inventory/command-inventory.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/command_runner/command-runner.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/compact_mutation_output/compact-mutation-output.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/config_cli/config-cli.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/delta_remaining_contracts/delta-remaining-contracts.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/docs_and_skill/docs-and-skill.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/doctor/doctor.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/domain_policies/domain-policies.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/event_logging_config/event-logging-config.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/events/events.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/file_link_snapshots/file-link-snapshots.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/find_code_clones_script/find-code-clones-script.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/handoff_lifecycle/handoff-lifecycle.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/help_subprocess/help-subprocess.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/implementation_change_scan/implementation-change-scan.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/implementation_checks/implementation-checks.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/json_contracts/json-contracts.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/legacy_cleanup_contracts/legacy-cleanup-contracts.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/lifecycle_policies/lifecycle-policies.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/lock_diagnostics/lock-diagnostics.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/locks_audit/locks-audit.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/models_v1_schema/models-v1-schema.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/monitor/monitor.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/next_action_expired_lock/next-action-expired-lock.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/no_log_feature/no-log-feature.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_approval_contract/plan-approval-contract.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_lint/plan-lint.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_review/plan-review.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_revision_workflow/plan-revision-workflow.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_todo_materialization/plan-todo-materialization.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/project_root_config/project-root-config.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/question_add_many/question-add-many.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/question_filter_answers/question-filter-answers.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/question_plan_regeneration/question-plan-regeneration.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/ready_work/ready-work.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/release_changelog/release-changelog.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/search/search.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/service_boundaries/service-boundaries.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/services_dashboard/services-dashboard.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/sidecar_collections/sidecar-collections.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_bundle_layout/storage-bundle-layout.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_common/storage-common.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_init/storage-init.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_migration/storage-migration.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_repos/storage-repos.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_sync/storage-sync.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/sync_git/sync-git.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_archive/archive.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_events/events.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_markdown_export/markdown-export.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_report/report.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_branch_scoped_ledgers/taskledger-branch-scoped-ledgers.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_cli_api_parity/taskledger-cli-api-parity.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_v2_cli/taskledger-v2-cli.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_v2_exchange/taskledger-v2-exchange.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/tasks_service_static/tasks-service-static.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/todo_implementation_gate/todo-implementation-gate.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/trace/trace.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/tree_command/tree-command.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/usage_cli/usage-cli.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_cli/worker-pipeline-cli.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_config/worker-pipeline-config.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_context/worker-pipeline-context.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_handoff/worker-pipeline-handoff.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_plan_template/worker-pipeline-plan-template.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_todos/worker-pipeline-todos.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/workflow_guidance/workflow-guidance.feature +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/manifest.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/mappings/.gitkeep +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/mappings/intentional-unmapped.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/.gitkeep +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/coverage.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/coverage.md +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/mappings.json +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/__main__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/handoff.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/introductions.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/locks.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/plans.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/project.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/questions.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/releases.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/repair.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/reviews.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/search.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/storage.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/sync.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/task_runs.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/tasks.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_actor.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_archive.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_common.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_config.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_help.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_implement.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_ledger.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_migrate.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_misc.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_pipeline.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_plan.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_question.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_ref.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_release.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_review.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_runtime.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_storage.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_sync.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_task.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_trace.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/command_inventory.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/compat/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/compat/ledgercore.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/_model_utils.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/active_state.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/actor.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/change.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/event.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/handoff.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/lock.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/models.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/plan.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/policies.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/question.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/release.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/review.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/run.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/states.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/task.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/errors.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/ids.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/launcher.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/migrations/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/migrations/hooks.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/py.typed +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/refs.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/search.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/actors.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/agent_transcripts.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/code_review.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/command_runner.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/dashboard.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor_checks/migration_checks.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor_checks/project_scan.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/event_logging.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/file_links.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/git_utils.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/handoff_lifecycle.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/lock_diagnostics.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/lock_inventory.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/monitor.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/navigation.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/next_action_logic.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/next_action_model.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/next_action_payload.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/phase5_lock_transfer.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_editing.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_hash.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_input.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_lint.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_materialization.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_review.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/planning_flow.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/ready_work.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/releases.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/run_store.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/runtime_info.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/storage_locations.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/storage_migration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_archive.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_collections.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_events.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_export.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_lifecycle.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_queries.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_repair.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_reports.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/trace.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/tree.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/usage.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/validation.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/worker_context.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/worker_pipeline.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/workspace_snapshot.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/atomic.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/common.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/events.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/frontmatter.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/index_cache.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/indexes.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/init.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/layout_migration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledger_config.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledger_local_config.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledger_manifest.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledgercore_backend.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/locks.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/meta.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/migrations.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/paths.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_binding.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_context.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_identity.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/repos.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/sidecar_index.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/task_ids.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/task_index.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/task_store.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/taskledger_migration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/toml_edit.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/worker_pipeline_config.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/yaml_store.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/timeutils.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/dependency_links.txt +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/entry_points.txt +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/requires.txt +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/top_level.txt +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/conftest.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/support/__init__.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/support/builders.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/support/fake_command_runner.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_active_task.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_actor_harness_state.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_agent_session_protocol.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_atomic_fast_io.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_config_split.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_layout_migration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_mount_paths.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_project_boundary.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_project_context.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_cli_command_contract.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_cli_import_resilience.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_cli_runner_compatibility.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_code_reviews.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_command_example_linter.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_command_inventory.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_command_runner.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_compact_mutation_output.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_delta_remaining_contracts.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_docs_and_skill.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_domain_policies.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_error_contracts.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_event_logging_config.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_events.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_file_link_snapshots.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_find_code_clones_script.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_handoff_lifecycle.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_help_subprocess.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_implementation_change_scan.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_import_boundaries.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_indexes.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_indexes_cache_recovery.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_json_contracts.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ledger_manifest_mutation.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ledgercore_compat.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ledgercore_dependency.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_legacy_cleanup_contracts.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_lifecycle_policies.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_lock_diagnostics.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_lock_inventory.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_locks_audit.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_monitor.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_next_action_expired_lock.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_no_log_feature.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_performance_caching.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_approval_contract.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_input.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_input_cli.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_lint.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_review.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_revision_workflow.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_todo_materialization.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_question_add_many.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_question_filter_answers.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_question_plan_regeneration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ready_work.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_release_changelog.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_resource_refs.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_runtime_info.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_search.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_service_boundaries.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_services_dashboard.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_shared_tool_ledger_storage.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_sidecar_collections.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_bundle_layout.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_common.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_init.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_migration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_migration_coordinator.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_repos.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_sync.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_where_repair.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_yaml_store.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_archive.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_events.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_ids.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_markdown_export.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_report.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_branch_scoped_ledgers.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_canonical_sync.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_cli_api_parity.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_adapter.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_context.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_migration_topology.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_sync.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_migration_v3.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_sibling_migration.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_sibling_storage.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_storage_commands_v3.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_v2_cli.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_tasks_service_static.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_todo_implementation_gate.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_trace.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_tree_command.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_usage_cli.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_validation_git_snapshot_recovery.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_cli.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_config.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_context.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_handoff.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_plan_template.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_todos.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_workflow_guidance.py +0 -0
- {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_workspace_snapshot.py +0 -0
{taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl
RENAMED
|
@@ -44,3 +44,14 @@
|
|
|
44
44
|
{"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0044","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.6","schema_version":2}
|
|
45
45
|
{"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0045","record_revisions":{"commit_audit_sheet":3,"entry:v0.6.6/entry-0001":1,"release:v0.6.6":3},"release_version":"v0.6.6","schema_version":2}
|
|
46
46
|
{"data":{"released_at":"2026-09-04"},"event":"release.finalized","event_id":"event-0046","record_revisions":{"release:v0.6.6":4},"release_version":"v0.6.6","schema_version":2}
|
|
47
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0047","record_revisions":{"release:v0.6.7":1},"release_version":"v0.6.7","schema_version":2}
|
|
48
|
+
{"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-0048","record_revisions":{"release:v0.6.7":2},"release_version":"v0.6.7","schema_version":2}
|
|
49
|
+
{"data":{"row_count":1},"event":"audit.created","event_id":"event-0049","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.6.7","schema_version":2}
|
|
50
|
+
{"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0050","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.7","schema_version":2}
|
|
51
|
+
{"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0051","record_revisions":{"commit_audit_sheet":3,"entry:v0.6.7/entry-0001":1,"release:v0.6.7":3},"release_version":"v0.6.7","schema_version":2}
|
|
52
|
+
{"data":{"released_at":"2026-09-09"},"event":"release.finalized","event_id":"event-0052","record_revisions":{"release:v0.6.7":4},"release_version":"v0.6.7","schema_version":2}
|
|
53
|
+
{"data":{"status":"planned"},"event":"release.created","event_id":"event-0053","record_revisions":{"release:v0.6.8":1},"release_version":"v0.6.8","schema_version":2}
|
|
54
|
+
{"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-0054","record_revisions":{"release:v0.6.8":2},"release_version":"v0.6.8","schema_version":2}
|
|
55
|
+
{"data":{"row_count":1},"event":"audit.created","event_id":"event-0055","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.6.8","schema_version":2}
|
|
56
|
+
{"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0056","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.8","schema_version":2}
|
|
57
|
+
{"data":{"kind":"added","status":"accepted"},"entry_id":"entry-0001","event":"entry.added","event_id":"event-0057","record_revisions":{"entry:v0.6.8/entry-0001":1,"release:v0.6.8":3},"release_version":"v0.6.8","schema_version":2}
|
taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/audit/commit-audit.yaml
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
object_type: commit_audit_sheet
|
|
3
|
+
versioning:
|
|
4
|
+
schema_version: 1
|
|
5
|
+
revision: 3
|
|
6
|
+
release_version: v0.6.7
|
|
7
|
+
git_base_ref: v0.6.6
|
|
8
|
+
git_base_sha: f7c915cf9d515ab1c15bdffeb73162340d7534df
|
|
9
|
+
git_head_ref: HEAD
|
|
10
|
+
git_head_sha: 562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
11
|
+
git_range: f7c915cf9d515ab1c15bdffeb73162340d7534df..562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
12
|
+
commit_count: 1
|
|
13
|
+
rows:
|
|
14
|
+
- sha: 562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
15
|
+
source_ref: git:562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
16
|
+
short_sha: 562fc87
|
|
17
|
+
changed_paths:
|
|
18
|
+
- README.md
|
|
19
|
+
- docs/command_contract.md
|
|
20
|
+
- docs/sync.md
|
|
21
|
+
- docs/transfer.md
|
|
22
|
+
- docs/usage.md
|
|
23
|
+
- taskledger/api/config.py
|
|
24
|
+
- taskledger/exchange.py
|
|
25
|
+
- taskledger/services/agent_logging.py
|
|
26
|
+
- taskledger/services/change_tracking.py
|
|
27
|
+
- taskledger/services/doctor.py
|
|
28
|
+
- taskledger/services/doctor_checks/artifact_checks.py
|
|
29
|
+
- taskledger/services/git_sync.py
|
|
30
|
+
- taskledger/services/implementation_flow.py
|
|
31
|
+
- taskledger/services/tasks.py
|
|
32
|
+
- taskledger/services/validation_flow.py
|
|
33
|
+
- taskledger/storage/agent_logs.py
|
|
34
|
+
- taskledger/storage/artifact_policy.py
|
|
35
|
+
- taskledger/storage/project_config.py
|
|
36
|
+
- tests/test_agent_command_logging.py
|
|
37
|
+
- tests/test_artifact_policy.py
|
|
38
|
+
- tests/test_config_cli.py
|
|
39
|
+
- tests/test_doctor.py
|
|
40
|
+
- tests/test_project_root_config.py
|
|
41
|
+
- tests/test_sync_git.py
|
|
42
|
+
- tests/test_taskledger_v2_exchange.py
|
|
43
|
+
- tests/test_validation_command.py
|
|
44
|
+
stats:
|
|
45
|
+
files_changed: 0
|
|
46
|
+
insertions: 700
|
|
47
|
+
deletions: 33
|
|
48
|
+
inspected: true
|
|
49
|
+
inspected_paths:
|
|
50
|
+
- README.md
|
|
51
|
+
- docs/command_contract.md
|
|
52
|
+
- docs/sync.md
|
|
53
|
+
- docs/transfer.md
|
|
54
|
+
- docs/usage.md
|
|
55
|
+
- taskledger/api/config.py
|
|
56
|
+
- taskledger/exchange.py
|
|
57
|
+
- taskledger/services/agent_logging.py
|
|
58
|
+
- taskledger/services/change_tracking.py
|
|
59
|
+
- taskledger/services/doctor.py
|
|
60
|
+
- taskledger/services/doctor_checks/artifact_checks.py
|
|
61
|
+
- taskledger/services/git_sync.py
|
|
62
|
+
- taskledger/services/implementation_flow.py
|
|
63
|
+
- taskledger/services/tasks.py
|
|
64
|
+
- taskledger/services/validation_flow.py
|
|
65
|
+
- taskledger/storage/agent_logs.py
|
|
66
|
+
- taskledger/storage/artifact_policy.py
|
|
67
|
+
- taskledger/storage/project_config.py
|
|
68
|
+
- tests/test_agent_command_logging.py
|
|
69
|
+
- tests/test_artifact_policy.py
|
|
70
|
+
- tests/test_config_cli.py
|
|
71
|
+
- tests/test_doctor.py
|
|
72
|
+
- tests/test_project_root_config.py
|
|
73
|
+
- tests/test_sync_git.py
|
|
74
|
+
- tests/test_taskledger_v2_exchange.py
|
|
75
|
+
- tests/test_validation_command.py
|
|
76
|
+
observed_behavior:
|
|
77
|
+
Added a shared artifact-size policy that bounds stored command
|
|
78
|
+
output to a configurable limit capped at 20,000,000 bytes, preserves UTF-8-safe
|
|
79
|
+
head/tail excerpts with truncation metadata, rejects oversized existing artifacts
|
|
80
|
+
during doctor, export/import, and managed Git sync, and documents the policy with
|
|
81
|
+
regression coverage.
|
|
82
|
+
public_impact: public
|
|
83
|
+
decision: accepted
|
|
84
|
+
stale: false
|
|
85
|
+
evidence_subject: "feat: limit artifact file size"
|
|
86
|
+
target_entry_id: entry-0001
|
|
87
|
+
notes: ""
|
taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/entries/entry-0001.md
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
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.7
|
|
9
|
+
kind: added
|
|
10
|
+
summary:
|
|
11
|
+
Added configurable artifact limits with UTF-8-safe truncation across command
|
|
12
|
+
evidence, archives, doctor, and Git sync
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- git:562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
18
|
+
paths:
|
|
19
|
+
- README.md
|
|
20
|
+
- docs/command_contract.md
|
|
21
|
+
- docs/sync.md
|
|
22
|
+
- docs/transfer.md
|
|
23
|
+
- docs/usage.md
|
|
24
|
+
- taskledger/api/config.py
|
|
25
|
+
- taskledger/exchange.py
|
|
26
|
+
- taskledger/services/agent_logging.py
|
|
27
|
+
- taskledger/services/change_tracking.py
|
|
28
|
+
- taskledger/services/doctor.py
|
|
29
|
+
- taskledger/services/doctor_checks/artifact_checks.py
|
|
30
|
+
- taskledger/services/git_sync.py
|
|
31
|
+
- taskledger/services/implementation_flow.py
|
|
32
|
+
- taskledger/services/tasks.py
|
|
33
|
+
- taskledger/services/validation_flow.py
|
|
34
|
+
- taskledger/storage/agent_logs.py
|
|
35
|
+
- taskledger/storage/artifact_policy.py
|
|
36
|
+
- taskledger/storage/project_config.py
|
|
37
|
+
- tests/test_agent_command_logging.py
|
|
38
|
+
- tests/test_artifact_policy.py
|
|
39
|
+
- tests/test_config_cli.py
|
|
40
|
+
- tests/test_doctor.py
|
|
41
|
+
- tests/test_project_root_config.py
|
|
42
|
+
- tests/test_sync_git.py
|
|
43
|
+
- tests/test_taskledger_v2_exchange.py
|
|
44
|
+
- tests/test_validation_command.py
|
|
45
|
+
issues: []
|
|
46
|
+
prs: []
|
|
47
|
+
sources:
|
|
48
|
+
- git:562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
49
|
+
contributors: []
|
|
50
|
+
breaking: false
|
|
51
|
+
internal: false
|
|
52
|
+
order: 1
|
|
53
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 4
|
|
7
|
+
version: v0.6.7
|
|
8
|
+
status: released
|
|
9
|
+
history_state: curated
|
|
10
|
+
title: Release v0.6.7
|
|
11
|
+
released_at: "2026-09-09"
|
|
12
|
+
previous_version: v0.6.6
|
|
13
|
+
cancel_reason: null
|
|
14
|
+
superseded_by: null
|
|
15
|
+
changelog_file: null
|
|
16
|
+
boundary_ref: null
|
|
17
|
+
source_refs: []
|
|
18
|
+
source_count: null
|
|
19
|
+
entry_count: 1
|
|
20
|
+
artifact_count: 0
|
|
21
|
+
git_base_ref: v0.6.6
|
|
22
|
+
git_base_sha: f7c915cf9d515ab1c15bdffeb73162340d7534df
|
|
23
|
+
git_head_ref: HEAD
|
|
24
|
+
git_head_sha: 562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
25
|
+
git_range: f7c915cf9d515ab1c15bdffeb73162340d7534df..562fc8796f821e312877f0c5b2aa09f5daddb138
|
|
26
|
+
git_commit_count: 1
|
|
27
|
+
---
|
taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/audit/commit-audit.yaml
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
object_type: commit_audit_sheet
|
|
3
|
+
versioning:
|
|
4
|
+
schema_version: 1
|
|
5
|
+
revision: 2
|
|
6
|
+
release_version: v0.6.8
|
|
7
|
+
git_base_ref: v0.6.7
|
|
8
|
+
git_base_sha: fa5b2b7720d3f05530e32e8389b7286e6fb186b1
|
|
9
|
+
git_head_ref: HEAD
|
|
10
|
+
git_head_sha: b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
11
|
+
git_range: fa5b2b7720d3f05530e32e8389b7286e6fb186b1..b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
12
|
+
commit_count: 1
|
|
13
|
+
rows:
|
|
14
|
+
- sha: b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
15
|
+
source_ref: git:b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
16
|
+
short_sha: b567742
|
|
17
|
+
changed_paths:
|
|
18
|
+
- docs/command_contract.md
|
|
19
|
+
- docs/full_task_cycle.md
|
|
20
|
+
- skills/taskledger/SKILL.md
|
|
21
|
+
- taskledger/cli_validate.py
|
|
22
|
+
- taskledger/domain/check.py
|
|
23
|
+
- taskledger/domain/sidecars.py
|
|
24
|
+
- taskledger/services/check_reuse.py
|
|
25
|
+
- taskledger/services/check_tracking.py
|
|
26
|
+
- taskledger/services/doctor_checks/task_checks.py
|
|
27
|
+
- taskledger/services/handoff.py
|
|
28
|
+
- taskledger/services/implementation_flow.py
|
|
29
|
+
- taskledger/services/tasks.py
|
|
30
|
+
- taskledger/services/validation_flow.py
|
|
31
|
+
- taskledger/services/workflow_guidance.py
|
|
32
|
+
- tests/test_actor_resolution.py
|
|
33
|
+
- tests/test_check_reuse.py
|
|
34
|
+
- tests/test_check_reuse_context.py
|
|
35
|
+
- tests/test_doctor.py
|
|
36
|
+
- tests/test_implementation_checks.py
|
|
37
|
+
- tests/test_models_v1_schema.py
|
|
38
|
+
stats:
|
|
39
|
+
files_changed: 0
|
|
40
|
+
insertions: 841
|
|
41
|
+
deletions: 20
|
|
42
|
+
inspected: true
|
|
43
|
+
inspected_paths:
|
|
44
|
+
- docs/command_contract.md
|
|
45
|
+
- docs/full_task_cycle.md
|
|
46
|
+
- skills/taskledger/SKILL.md
|
|
47
|
+
- taskledger/cli_validate.py
|
|
48
|
+
- taskledger/domain/check.py
|
|
49
|
+
- taskledger/domain/sidecars.py
|
|
50
|
+
- taskledger/services/check_reuse.py
|
|
51
|
+
- taskledger/services/check_tracking.py
|
|
52
|
+
- taskledger/services/doctor_checks/task_checks.py
|
|
53
|
+
- taskledger/services/handoff.py
|
|
54
|
+
- taskledger/services/implementation_flow.py
|
|
55
|
+
- taskledger/services/tasks.py
|
|
56
|
+
- taskledger/services/validation_flow.py
|
|
57
|
+
- taskledger/services/workflow_guidance.py
|
|
58
|
+
- tests/test_actor_resolution.py
|
|
59
|
+
- tests/test_check_reuse.py
|
|
60
|
+
- tests/test_check_reuse_context.py
|
|
61
|
+
- tests/test_doctor.py
|
|
62
|
+
- tests/test_implementation_checks.py
|
|
63
|
+
- tests/test_models_v1_schema.py
|
|
64
|
+
observed_behavior:
|
|
65
|
+
Passing implementation command checks now record workspace snapshot
|
|
66
|
+
provenance, and validators can explicitly reuse those checks only when the implementation
|
|
67
|
+
and current workspace snapshots match exactly. Validation records the reused check
|
|
68
|
+
reference, while handoff context identifies reusable, stale, and unknown provenance
|
|
69
|
+
checks.
|
|
70
|
+
public_impact: public
|
|
71
|
+
decision: accepted
|
|
72
|
+
stale: false
|
|
73
|
+
evidence_subject:
|
|
74
|
+
"feat: improved implementation check handling to reduce amount
|
|
75
|
+
of tests needed for verification"
|
|
76
|
+
target_entry_key: implementation-check-evidence-reuse
|
|
77
|
+
notes:
|
|
78
|
+
Reviewed the implementation, validation, handoff, CLI, documentation, and
|
|
79
|
+
focused regression tests in this commit.
|
taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/entries/entry-0001.md
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
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.8
|
|
9
|
+
kind: added
|
|
10
|
+
summary:
|
|
11
|
+
Added explicit reuse of passing implementation checks as validation evidence
|
|
12
|
+
when final and current workspace snapshots match
|
|
13
|
+
status: accepted
|
|
14
|
+
audience: null
|
|
15
|
+
scopes: []
|
|
16
|
+
source_refs:
|
|
17
|
+
- git:b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
18
|
+
paths:
|
|
19
|
+
- taskledger/cli_validate.py
|
|
20
|
+
- taskledger/services/check_reuse.py
|
|
21
|
+
- taskledger/services/validation_flow.py
|
|
22
|
+
- taskledger/services/handoff.py
|
|
23
|
+
- docs/command_contract.md
|
|
24
|
+
issues: []
|
|
25
|
+
prs: []
|
|
26
|
+
sources: []
|
|
27
|
+
contributors: []
|
|
28
|
+
breaking: false
|
|
29
|
+
internal: false
|
|
30
|
+
order: 1
|
|
31
|
+
---
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 2
|
|
3
|
+
object_type: release
|
|
4
|
+
versioning:
|
|
5
|
+
schema_version: 1
|
|
6
|
+
revision: 3
|
|
7
|
+
version: v0.6.8
|
|
8
|
+
status: planned
|
|
9
|
+
history_state: curated
|
|
10
|
+
title: Release v0.6.8
|
|
11
|
+
released_at: null
|
|
12
|
+
previous_version: v0.6.7
|
|
13
|
+
cancel_reason: null
|
|
14
|
+
superseded_by: null
|
|
15
|
+
changelog_file: null
|
|
16
|
+
boundary_ref: null
|
|
17
|
+
source_refs: []
|
|
18
|
+
source_count: null
|
|
19
|
+
entry_count: 1
|
|
20
|
+
artifact_count: 0
|
|
21
|
+
git_base_ref: v0.6.7
|
|
22
|
+
git_base_sha: fa5b2b7720d3f05530e32e8389b7286e6fb186b1
|
|
23
|
+
git_head_ref: HEAD
|
|
24
|
+
git_head_sha: b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
25
|
+
git_range: fa5b2b7720d3f05530e32e8389b7286e6fb186b1..b5677429bc9b8209d918456cfb6a30fd11ce4970
|
|
26
|
+
git_commit_count: 1
|
|
27
|
+
---
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taskledger
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.8
|
|
4
4
|
Summary: Durable project-state storage and CLI for coding workflows
|
|
5
5
|
Author: Taskledger Contributors
|
|
6
6
|
Maintainer: Holger Nahrstaedt
|
|
@@ -837,6 +837,12 @@ Import safety still relies on `project_uuid`, not the name/slug.
|
|
|
837
837
|
- `--no-include-bodies` strips record body text (`body` / `context_body`) from exported payloads.
|
|
838
838
|
- `--include-run-artifacts` embeds task and agent-log artifact files under `artifacts/` in the archive.
|
|
839
839
|
|
|
840
|
+
## Artifact file-size policy
|
|
841
|
+
|
|
842
|
+
Taskledger-owned artifact files are bounded to prevent command output from creating very large ledger blobs. The default and hard ceiling is 20,000,000 bytes per artifact; configure a lower `artifact_max_bytes` value when needed. Oversized command evidence keeps a UTF-8-safe head and tail with an explicit truncation marker, while command execution and exit-code semantics remain unchanged.
|
|
843
|
+
|
|
844
|
+
Archive import/export applies the same policy, and `taskledger doctor` reports legacy oversized artifacts without reading their contents. `taskledger sync git push` performs a preflight before committing or pushing. Taskledger does not use Git LFS or rewrite Git history; repair existing blobs separately.
|
|
845
|
+
|
|
840
846
|
Cross-machine imports preserve durable task/run data, but imported runtime locks
|
|
841
847
|
are quarantined by default. After importing an in-progress implementation,
|
|
842
848
|
run:
|
|
@@ -784,6 +784,12 @@ Import safety still relies on `project_uuid`, not the name/slug.
|
|
|
784
784
|
- `--no-include-bodies` strips record body text (`body` / `context_body`) from exported payloads.
|
|
785
785
|
- `--include-run-artifacts` embeds task and agent-log artifact files under `artifacts/` in the archive.
|
|
786
786
|
|
|
787
|
+
## Artifact file-size policy
|
|
788
|
+
|
|
789
|
+
Taskledger-owned artifact files are bounded to prevent command output from creating very large ledger blobs. The default and hard ceiling is 20,000,000 bytes per artifact; configure a lower `artifact_max_bytes` value when needed. Oversized command evidence keeps a UTF-8-safe head and tail with an explicit truncation marker, while command execution and exit-code semantics remain unchanged.
|
|
790
|
+
|
|
791
|
+
Archive import/export applies the same policy, and `taskledger doctor` reports legacy oversized artifacts without reading their contents. `taskledger sync git push` performs a preflight before committing or pushing. Taskledger does not use Git LFS or rewrite Git history; repair existing blobs separately.
|
|
792
|
+
|
|
787
793
|
Cross-machine imports preserve durable task/run data, but imported runtime locks
|
|
788
794
|
are quarantined by default. After importing an in-progress implementation,
|
|
789
795
|
run:
|
|
@@ -2,6 +2,22 @@
|
|
|
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.8] - Unreleased
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added explicit reuse of passing implementation checks as validation evidence when final and current workspace snapshots match
|
|
10
|
+
|
|
11
|
+
<!-- generated by releaseledger -->
|
|
12
|
+
|
|
13
|
+
## [v0.6.7] - 2026-09-09
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Added configurable artifact limits with UTF-8-safe truncation across command evidence, archives, doctor, and Git sync
|
|
18
|
+
|
|
19
|
+
<!-- generated by releaseledger -->
|
|
20
|
+
|
|
5
21
|
## [v0.6.6] - 2026-09-04
|
|
6
22
|
|
|
7
23
|
### Added
|
|
@@ -178,6 +178,8 @@ Rules:
|
|
|
178
178
|
|
|
179
179
|
- `validate command -- ...` records managed validation command evidence during an active validation run.
|
|
180
180
|
- A non-zero validation command does not create a `ValidationCheck`; explicitly classify and record criteria with `validate check`.
|
|
181
|
+
- A passing implementation command may be adopted explicitly as validation evidence with `validate check --from-implementation-check CHECK_ID` only when Taskledger reports an exact final/current workspace snapshot match.
|
|
182
|
+
- This is evidence reuse, not a generic command cache. Rerun validation when fresh execution or external runtime state matters.
|
|
181
183
|
|
|
182
184
|
## Archive import lock policy
|
|
183
185
|
|
|
@@ -451,6 +453,7 @@ shell. They execute the child from the CLI invocation directory, or the explicit
|
|
|
451
453
|
`--root` directory, even when Taskledger discovers an ancestor workspace root for
|
|
452
454
|
ledger state, artifacts, and logs.
|
|
453
455
|
|
|
456
|
+
Managed command artifacts are bounded by the project `artifact_max_bytes` setting, defaulting to the 20,000,000-byte hard ceiling. Oversized persisted evidence is marked and retains both its beginning and end; only the durable artifact is truncated, not the child command's exit code or CLI stdout/stderr contract.
|
|
454
457
|
`validate command` uses the same managed execution behavior during an active validation run, but records command evidence only. It never automatically maps a non-zero child exit to a criterion result.
|
|
455
458
|
|
|
456
459
|
Managed commands preserve the caller environment, but resolve child executable lookup
|
|
@@ -265,6 +265,13 @@ taskledger validate finish --result passed --summary "Parser fix validated with
|
|
|
265
265
|
```
|
|
266
266
|
|
|
267
267
|
Use `taskledger validate command -- ...` to preserve validation command cwd, output, exit status, and transcript evidence. A non-zero command is not automatically a failed acceptance criterion. If the command is a malformed probe or setup failure, correct it and rerun before recording criterion status. Only record `fail` after the target behavior was evaluated and failed.
|
|
268
|
+
When implementation checks have exact tested-state provenance, validation context and status may identify them as reusable. Record that decision explicitly, for example:
|
|
269
|
+
|
|
270
|
+
```bash
|
|
271
|
+
taskledger validate check --criterion ac-0001 --status pass --from-implementation-check check-0002 --details "Reused passing implementation evidence on the exact current snapshot."
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
`validate command` always executes its child command normally; it does not silently reuse implementation results.
|
|
268
275
|
|
|
269
276
|
### If validation finds a bug
|
|
270
277
|
|
|
@@ -81,6 +81,10 @@ report project-local vs outside-project dirty paths. `sync git push` commits
|
|
|
81
81
|
repository-wide changes by design to match the standard Git workflow. Use
|
|
82
82
|
`sync git cd` for advanced manual inspection or conflict resolution.
|
|
83
83
|
|
|
84
|
+
## Artifact preflight
|
|
85
|
+
|
|
86
|
+
`taskledger sync git push` checks Taskledger-owned artifact files before staging or committing. It refuses any existing file over the configured `artifact_max_bytes` limit and reports the paths, sizes, limit, and `taskledger doctor` remediation. Plain `git push` remains outside Taskledger's control, and Taskledger does not rewrite history or use Git LFS.
|
|
87
|
+
|
|
84
88
|
For manual conflict resolution or debugging:
|
|
85
89
|
|
|
86
90
|
```bash
|
|
@@ -13,6 +13,12 @@ machines and harnesses.
|
|
|
13
13
|
\- `project.ledger_ref` (exported ledger)
|
|
14
14
|
- Optional run artifacts under `artifacts/` when `--include-run-artifacts` is set.
|
|
15
15
|
|
|
16
|
+
## Artifact file-size policy
|
|
17
|
+
|
|
18
|
+
Taskledger-owned artifact files default to a 20,000,000-byte hard ceiling. Projects may lower this with `artifact_max_bytes`, but cannot configure an unlimited or larger value. Oversized command output is stored as a UTF-8-safe head/tail excerpt with an explicit byte-count marker; the managed command's output and exit code are unchanged.
|
|
19
|
+
|
|
20
|
+
Import/export enforce the same limit. Run `taskledger doctor` to find existing oversized files; `taskledger sync git push` refuses them before creating a commit. This does not rewrite existing Git history or use Git LFS.
|
|
21
|
+
|
|
16
22
|
## Filename policy
|
|
17
23
|
|
|
18
24
|
When no output path is passed to `taskledger export`, taskledger writes into
|
|
@@ -762,6 +762,9 @@ Export include flags are content-affecting:
|
|
|
762
762
|
- `--no-include-bodies` removes record body fields from the exported payload.
|
|
763
763
|
- `--include-run-artifacts` embeds artifact files under `artifacts/` in the archive.
|
|
764
764
|
|
|
765
|
+
## Artifact file-size policy
|
|
766
|
+
|
|
767
|
+
Taskledger-owned artifact files are limited to 20,000,000 bytes by default and may only be lowered with `artifact_max_bytes`. Oversized command evidence retains its head and tail and includes a deterministic truncation marker; it does not change command execution or exit-code behavior. Import/export, doctor, and Taskledger-managed Git push enforce the same policy. Existing Git history is not rewritten and Git LFS is not used.
|
|
765
768
|
Cross-machine imports preserve durable task/run records but quarantine imported
|
|
766
769
|
runtime locks by default. For an imported in-progress implementation, run:
|
|
767
770
|
|
|
@@ -357,6 +357,7 @@ linked-file drift checks.
|
|
|
357
357
|
2. `taskledger validate start`
|
|
358
358
|
3. Check `taskledger validate status` to see current validation state and blockers.
|
|
359
359
|
4. Run verification with `taskledger validate command -- ...` whenever practical.
|
|
360
|
+
- If a passing implementation check is reported reusable for the exact current snapshot, a validator may cite it explicitly with `--from-implementation-check CHECK_ID` instead of rerunning that command.
|
|
360
361
|
5. Record criterion results: `taskledger validate check --criterion ac-0001 --status pass|fail|warn|not_run --evidence "..."`
|
|
361
362
|
6. Optionally waive criteria with user authority: `taskledger validate waive --criterion ac-0001 --reason "..."`.
|
|
362
363
|
7. Check `taskledger validate status` again to confirm all mandatory gates pass.
|
|
@@ -397,6 +398,7 @@ not interpret those references.
|
|
|
397
398
|
taskledger link add --url specs/behavior/features/checkout/payment.feature --label "behavior spec"
|
|
398
399
|
taskledger file link specs/behavior/features/checkout/payment.feature --kind doc --label "behavior spec"
|
|
399
400
|
taskledger validate check --criterion ac-0001 --status pass --evidence "pytest tests/test_checkout_payment.py::test_payment_flow"
|
|
401
|
+
taskledger validate check --criterion ac-0001 --status pass --from-implementation-check check-0002 --details "Reused exact-snapshot implementation evidence"
|
|
400
402
|
```
|
|
401
403
|
|
|
402
404
|
## Required logging
|
|
@@ -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.8'
|
|
22
|
+
__version_tuple__ = version_tuple = (0, 6, 8)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g4f9cd16f0'
|
|
@@ -116,6 +116,13 @@ _CONFIG_KEY_HELP: tuple[ConfigKeyHelp, ...] = (
|
|
|
116
116
|
"boolean",
|
|
117
117
|
default_value=_DEFAULT_CONFIG.default_save_run_reports,
|
|
118
118
|
),
|
|
119
|
+
ConfigKeyHelp(
|
|
120
|
+
"artifact_max_bytes",
|
|
121
|
+
"Maximum stored size of a Taskledger-owned artifact file; may only lower "
|
|
122
|
+
"the hard ceiling.",
|
|
123
|
+
"integer",
|
|
124
|
+
default_value=_DEFAULT_CONFIG.artifact_max_bytes,
|
|
125
|
+
),
|
|
119
126
|
ConfigKeyHelp(
|
|
120
127
|
"default_source_max_chars",
|
|
121
128
|
"Per-source character budget for context composition.",
|
|
@@ -601,6 +608,11 @@ def config_set(workspace_root: Path, *, key: str, value_text: str) -> dict[str,
|
|
|
601
608
|
target[segment] = table()
|
|
602
609
|
target = target[segment]
|
|
603
610
|
target[segments[-1]] = value
|
|
611
|
+
from taskledger.storage.project_config import _validate_project_config_overrides
|
|
612
|
+
|
|
613
|
+
_validate_project_config_overrides(
|
|
614
|
+
tomllib.loads(dumps(document)), context.config_path
|
|
615
|
+
)
|
|
604
616
|
atomic_write_text(context.config_path, dumps(document))
|
|
605
617
|
after = config_get(workspace_root, key=key)["value"]
|
|
606
618
|
else:
|
|
@@ -248,6 +248,7 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
|
|
|
248
248
|
details: str | None,
|
|
249
249
|
evidence: list[str] | None,
|
|
250
250
|
task_ref: str | None,
|
|
251
|
+
implementation_check_refs: list[str] | None,
|
|
251
252
|
) -> None:
|
|
252
253
|
state = cli_state_from_context(ctx)
|
|
253
254
|
try:
|
|
@@ -260,6 +261,7 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
|
|
|
260
261
|
status=status,
|
|
261
262
|
details=details,
|
|
262
263
|
evidence=tuple(evidence or ()),
|
|
264
|
+
implementation_check_refs=tuple(implementation_check_refs or ()),
|
|
263
265
|
)
|
|
264
266
|
except LaunchError as exc:
|
|
265
267
|
emit_error(ctx, exc)
|
|
@@ -272,6 +274,13 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
|
|
|
272
274
|
criterion: Annotated[str, typer.Option("--criterion")],
|
|
273
275
|
status: Annotated[str, typer.Option("--status")] = "pass",
|
|
274
276
|
evidence: Annotated[list[str] | None, typer.Option("--evidence")] = None,
|
|
277
|
+
implementation_check_refs: Annotated[
|
|
278
|
+
list[str] | None,
|
|
279
|
+
typer.Option(
|
|
280
|
+
"--from-implementation-check",
|
|
281
|
+
help="Explicitly adopt reusable implementation check evidence.",
|
|
282
|
+
),
|
|
283
|
+
] = None,
|
|
275
284
|
name: Annotated[str | None, typer.Option("--name")] = None,
|
|
276
285
|
details: Annotated[str | None, typer.Option("--details")] = None,
|
|
277
286
|
task_ref: TaskOption = None,
|
|
@@ -284,6 +293,7 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
|
|
|
284
293
|
details=details,
|
|
285
294
|
evidence=evidence,
|
|
286
295
|
task_ref=task_ref,
|
|
296
|
+
implementation_check_refs=implementation_check_refs,
|
|
287
297
|
)
|
|
288
298
|
|
|
289
299
|
@app.command("finish")
|
|
@@ -30,6 +30,12 @@ class ImplementationCheckRecord:
|
|
|
30
30
|
command: str
|
|
31
31
|
argv: tuple[str, ...] = ()
|
|
32
32
|
exit_code: int | None = None
|
|
33
|
+
cwd: str | None = None
|
|
34
|
+
workspace_git_commit: str | None = None
|
|
35
|
+
workspace_content_hash: str | None = None
|
|
36
|
+
workspace_paths_hash: str | None = None
|
|
37
|
+
workspace_entry_count: int | None = None
|
|
38
|
+
workspace_snapshot_format: str | None = None
|
|
33
39
|
status: Literal["passed", "failed", "unknown"] = "unknown"
|
|
34
40
|
category: Literal[
|
|
35
41
|
"test", "lint", "format", "typecheck", "build", "security", "other"
|
|
@@ -54,6 +60,12 @@ class ImplementationCheckRecord:
|
|
|
54
60
|
"command": self.command,
|
|
55
61
|
"argv": list(self.argv),
|
|
56
62
|
"exit_code": self.exit_code,
|
|
63
|
+
"cwd": self.cwd,
|
|
64
|
+
"workspace_git_commit": self.workspace_git_commit,
|
|
65
|
+
"workspace_content_hash": self.workspace_content_hash,
|
|
66
|
+
"workspace_paths_hash": self.workspace_paths_hash,
|
|
67
|
+
"workspace_entry_count": self.workspace_entry_count,
|
|
68
|
+
"workspace_snapshot_format": self.workspace_snapshot_format,
|
|
57
69
|
"status": self.status,
|
|
58
70
|
"category": self.category,
|
|
59
71
|
"summary": self.summary,
|
|
@@ -86,6 +98,14 @@ class ImplementationCheckRecord:
|
|
|
86
98
|
timestamp=_optional_string(data.get("timestamp")) or utc_now_iso(),
|
|
87
99
|
command=_string_value(data, "command"),
|
|
88
100
|
argv=_string_tuple(data.get("argv")),
|
|
101
|
+
cwd=_optional_string(data.get("cwd")),
|
|
102
|
+
workspace_git_commit=_optional_string(data.get("workspace_git_commit")),
|
|
103
|
+
workspace_content_hash=_optional_string(data.get("workspace_content_hash")),
|
|
104
|
+
workspace_paths_hash=_optional_string(data.get("workspace_paths_hash")),
|
|
105
|
+
workspace_entry_count=_optional_int(data.get("workspace_entry_count")),
|
|
106
|
+
workspace_snapshot_format=_optional_string(
|
|
107
|
+
data.get("workspace_snapshot_format")
|
|
108
|
+
),
|
|
89
109
|
exit_code=_optional_int(data.get("exit_code")),
|
|
90
110
|
status=cast(Literal["passed", "failed", "unknown"], status),
|
|
91
111
|
category=cast(
|
|
@@ -386,6 +386,7 @@ class ValidationCheck:
|
|
|
386
386
|
status: ValidationCheckStatus = "pass"
|
|
387
387
|
details: str | None = None
|
|
388
388
|
evidence: tuple[str, ...] = ()
|
|
389
|
+
implementation_check_refs: tuple[str, ...] = ()
|
|
389
390
|
waiver: CriterionWaiver | None = None
|
|
390
391
|
|
|
391
392
|
def to_dict(self) -> dict[str, object]:
|
|
@@ -397,6 +398,7 @@ class ValidationCheck:
|
|
|
397
398
|
"details": self.details,
|
|
398
399
|
"evidence": list(self.evidence),
|
|
399
400
|
"waiver": self.waiver.to_dict() if self.waiver is not None else None,
|
|
401
|
+
"implementation_check_refs": list(self.implementation_check_refs),
|
|
400
402
|
}
|
|
401
403
|
return payload
|
|
402
404
|
|
|
@@ -423,6 +425,9 @@ class ValidationCheck:
|
|
|
423
425
|
status=status,
|
|
424
426
|
details=_optional_string(data.get("details")),
|
|
425
427
|
evidence=_string_tuple(data.get("evidence")),
|
|
428
|
+
implementation_check_refs=_string_tuple(
|
|
429
|
+
data.get("implementation_check_refs")
|
|
430
|
+
),
|
|
426
431
|
waiver=CriterionWaiver.from_dict(data.get("waiver")),
|
|
427
432
|
)
|
|
428
433
|
|