Data directory from the environment: $ISMAP_DATA, so a checkout or worktree needs no hand-made data symlink #240
Labels
No labels
blocked
claude-wip
map-report
map:is
map:se
needs-review
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
art/ismap#240
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
data/is a gitignored symlink to/stuff/ismap-data/data, the download cache shared between the accounts on this machine (AGENTS.md, data/ conventions). Every human checkout here has the link. A bob-agent session worktree does not, so every import there fails.The link is a property of checkouts on this machine, not of the repository. Committing it would force one machine's layout on anyone else who clones the repo, so the location should come from the environment instead.
How configurable it is today
Barely:
DATA_DIR = data(Makefile:1), but only 4 places use it: the BDOT10k paths and one download rule.data/...paths across 11 files underconf/, most of them in*/downloads.yaml.fetch.go,arcgis.go,clms.go,geotorget.go,lastkajen.go,trafiklab.go,staging.go'sfile,databases:).data/.Making every one of those paths configurable is a large change for no gain. Keeping
./dataas the one name everything uses, and creating it from a machine setting, is a small one.Proposal
When
./datadoes not exist (as a directory or as a link), and the environment names a location, create./dataas a link to it:$ISMAP_DATA, if set.$HOME/ismap-data, if it exists, as a fallback that needs no environment set up at all.data/is an ordinary directory, created on first fetch, exactly as today.Do it in two places:
main, so direct runs (importer/importer acceptance conf/<cc>/, which the review loop's texts use) are covered.$(DATA_DIR)depend on, somakeand itscurl-based download targets are covered.Rules:
./data. If it is a link to somewhere other than$ISMAP_DATA, print a warning and leave it alone./data), so it never makes a checkout or a session worktree dirty.Docs: the
data/paragraph in AGENTS.md describes the variable instead of the symlink; README's setup section gets one line; the comment at the top ofimporter/sharedtree.gonames the variable.How it is used here
art,claude): setISMAP_DATA=/stuff/ismap-data/datain the shell profile, or keep the existing links, which keep working.ISMAP_DATAthrough project environment variables (art/bob-agent#884), and the importer creates the link on first use in each worktree. Once art/bob-agent#885 (worktree setup command) lands, the link can instead be made when the worktree is created, so the first command a session runs already sees it.Test plan
data+ISMAP_DATAset → link created to it;datais a directory → untouched;datais a link elsewhere → untouched, with a warning;git worktreewithISMAP_DATAset,importer/importer acceptance conf/gr/runs without a hand-made link.🤖 Generated with Claude Code