Summary
Under a split FM_HOME (operational home set to a different directory than the FirstMate
repo — a documented mode, and the norm for secondmate homes), the default tasks-axi backlog
backend resolves to the repo's data/ instead of $FM_HOME/data/, so backlog mutations
can land in the wrong directory.
Details
The tracked .tasks.toml at the repo root pins a repo-relative path:
[markdown]
path = "data/backlog.md"
archive = "data/done-archive.md"
But FirstMate's operational data lives at $FM_HOME/data/ when FM_HOME is set (per the
layout docs: state/, data/, config/, projects/ come from $FM_HOME). A relative
data/backlog.md resolves against the repo/CWD, not $FM_HOME, so tasks-axi reads/writes
<repo>/data/backlog.md while the rest of FirstMate reads $FM_HOME/data/backlog.md.
Evidence
On a split-home setup (FM_HOME=.../share/tkt-env/firstmate, repo elsewhere), the repo's own
data/ already contained a stray captain.md — i.e. a write had previously landed in the
repo data dir rather than the $FM_HOME one, confirming the split-brain is live, not
theoretical. Session start reported backlog.md ABSENT because it looked in $FM_HOME/data/
while nothing there existed yet.
Impact
- On any split-
FM_HOME instance — including every secondmate home (each has its own
FM_HOME) — the tasks-axi backend can diverge from the backlog FirstMate actually reads.
- Worked around this run by hand-creating
$FM_HOME/data/backlog.md.
Suggested fix
Resolve the markdown backend path against $FM_HOME, not the repo/CWD — e.g. generate/point
.tasks.toml at an absolute $FM_HOME/data/backlog.md, or have FirstMate pass the resolved
$FM_HOME/data path to the backend, so the backlog file is unambiguous under a split home.
🤖 Claude Code · claude-opus-4-8 · 2026-07-15
Summary
Under a split
FM_HOME(operational home set to a different directory than the FirstMaterepo — a documented mode, and the norm for secondmate homes), the default
tasks-axibacklogbackend resolves to the repo's
data/instead of$FM_HOME/data/, so backlog mutationscan land in the wrong directory.
Details
The tracked
.tasks.tomlat the repo root pins a repo-relative path:But FirstMate's operational data lives at
$FM_HOME/data/whenFM_HOMEis set (per thelayout docs:
state/,data/,config/,projects/come from$FM_HOME). A relativedata/backlog.mdresolves against the repo/CWD, not$FM_HOME, sotasks-axireads/writes<repo>/data/backlog.mdwhile the rest of FirstMate reads$FM_HOME/data/backlog.md.Evidence
On a split-home setup (
FM_HOME=.../share/tkt-env/firstmate, repo elsewhere), the repo's owndata/already contained a straycaptain.md— i.e. a write had previously landed in therepo data dir rather than the
$FM_HOMEone, confirming the split-brain is live, nottheoretical. Session start reported
backlog.mdABSENT because it looked in$FM_HOME/data/while nothing there existed yet.
Impact
FM_HOMEinstance — including every secondmate home (each has its ownFM_HOME) — the tasks-axi backend can diverge from the backlog FirstMate actually reads.$FM_HOME/data/backlog.md.Suggested fix
Resolve the markdown backend path against
$FM_HOME, not the repo/CWD — e.g. generate/point.tasks.tomlat an absolute$FM_HOME/data/backlog.md, or have FirstMate pass the resolved$FM_HOME/datapath to the backend, so the backlog file is unambiguous under a split home.