Transfer archives
Transfer archives are portable taskledger state bundles for moving work between machines and harnesses.
What transfer archives include
Current-ledger durable records (tasks, plans, questions, runs, changes, todos, links, requirements, events, releases, handoffs).
Project identity metadata: -
project.uuid(safety identity) -project.name(human-facing label) -project.slug(filename/report slug) -project.ledger_ref(exported ledger)Optional run artifacts under
artifacts/when--include-run-artifactsis set.
Artifact file-size policy
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.
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.
Filename policy
When no output path is passed to taskledger export, taskledger writes into
the resolved workspace root:
taskledger-export-{project_slug}-{ledger_ref}-{timestamp}.tar.gz
For task-scoped exports, the same workspace-root default applies:
taskledger-task-{project_slug}-{ledger_ref}-{task_id}-{timestamp}.tar.gz
project_slug comes from project_name (or workspace fallback). Import
safety still depends on UUID checks, not name matching.
Single-task transfer from a config-only checkout
# fresh checkout on another PC
taskledger init
taskledger task create "Fix import edge case" --slug fix-import-edge-case --description "..."
# ... normal plan/implement/validate workflow ...
taskledger export task-0040
# main dev repo
taskledger import ./taskledger-task-planledger-main-task-0040-20260509T101500Z.tar.gz
taskledger task list
taskledger task show task-0040
Rules:
Keep the project UUID in the schema-3
.ledger/ledger.tomlmanifest.Inspect resolved data and index mounts with
taskledger storage where.Run
taskledger initafter cloning when the configured mounts are absent.taskledger export --task TASK_REFandtaskledger export TASK_REFexport task-scoped archives.taskledger exportandtaskledger importare root-level archive transfer commands, separate from Git sync.Task-scoped import is additive by default; if the task id already exists locally, import renumbers and reports an id map.
--replaceis for full-state replacement, not the normal single-task workflow.Task IDs are allocated from the active ledger’s task and tombstone inventory; imports do not restore a persisted counter.
Use the explicit Taskledger Git sync commands when you want to synchronize the UUID-scoped sibling data directory between PCs.
Dry-run import
Use taskledger import --dry-run to validate archive or JSON payload imports
without mutating local state:
taskledger import ./taskledger-transfer.tar.gz --dry-run
taskledger import ./taskledger-export.json --dry-run
Lock policy and next action
Imported runtime locks are quarantined by default. After import, follow:
taskledger next-action
taskledger implement resume --reason "Continue imported implementation."
Canonical identity
Archive identity comes from the shared Ledger manifest. Mutable ledger state remains in the canonical data mount. Physical mount paths are not part of the archive record schema.