Repository navigation
[feature] enablement: ensure consuming repos ignore the .meshloop/ store #44
Description
Background & Problem Statement
The first meshloop plan in a consuming repository creates the local store at <repo>/.meshloop/state.sqlite (default_db in crates/meshloop-cli/src/compose.rs:86). Nothing in the enablement or installation flow tells the target repository to ignore it. Meshloop's own .gitignore has /.meshloop/ and **/.meshloop/, but consuming repositories don't get that.
Seen on 0.3.0 in smota/holoself: after one meshloop plan, git status showed ?? .meshloop/. A broad git add . would have committed the SQLite store, with its WAL/SHM files, and its run history (objectives, task descriptions, attempt records) to a public repository. Worktrees are fine: default_worktree_base puts them in the sibling directory ../.meshloop-worktrees/<repo>, outside the repository.
docs/install.md:112 mentions where the database lives, but neither meshloop bundle --dest . nor the install steps add, suggest or check an ignore rule.
Proposed Solution
Make ignoring the store part of enabling Meshloop in a repository, without silently editing user files:
meshloop bundle --dest <repo>(the enablement step): check whether.meshloop/is ignored (git check-ignore -q .meshloop/state.sqlite). If it isn't, either append a marked block to<repo>/.gitignorewith a flag (for example--gitignore), or print the exact line to add and report it in the JSON output asgitignore: missing.- First store creation: when
plan/runcreates.meshloop/inside a Git work tree and the path is not ignored, write.meshloop/.gitignorecontaining*. This is self-contained, never touches the user's root.gitignore, and protects the store even when the bundle step was skipped. Report it once on stderr. meshloop doctor: add a check, e.g.store_ignored: true|false, with the remediation line.- Docs: add the ignore step to
docs/install.md/docs/start.mdnext to the database location.
Requirements
- A fresh repository that runs
meshloop plannever shows.meshloop/as untracked. - The root
.gitignoreis modified only with explicit consent (flag or prompt), and the block is idempotent and marked. -
doctor --jsonreports whether the store path is ignored. - A custom
--dbpath outside the work tree is not flagged.
Acceptance criteria
- Test: temporary Git repo,
meshloop plan --fixture-only …→git status --porcelaindoes not list.meshloop/. - Test:
bundle --dest <tmp-repo>without the flag leaves.gitignorebyte-identical and reportsgitignore: missing. With the flag, it appends the block once, and a rerun makes no change. - Test:
doctor --jsonreturnsstore_ignored: falsebefore andtrueafter. - Install docs list the step.
🤖 Generated with Claude Code
Activity
smota commentedon Oct 7, 2026
Workflow status — claimed by Claude Code (Opus 5.5 orchestrator).
work/store-ignore-plan-retry(baseorigin/main@ 2769f08), shared with [feature] enablement: ensure consuming repos ignore the .meshloop/ store #44/[bug] plan: prompt omits TaskGraph schema (tier values), malformed graph is not retried or preserved #45.smota commentedon Oct 7, 2026
Workflow status — implementation done; PR #49 (branch
work/store-ignore-plan-retry@ dbfe0b1). Local clippy/test/xtask check pass; CI pending. Next owner: independent reviewer.