fix(gitignore): keep helper locks, temps and backups out of --vault - #189
Merged
chuycepeda merged 2 commits intoSep 29, 2026
Merged
Conversation
aios-commit --vault adds untracked files through --exclude-standard, so .gitignore is its only filter. The locks and temp files that aios-note-append and aios-snapshot write beside a note, and the backup route-insight.py keeps, were not excluded, so a --vault commit could carry them. Also ignore .superpowers/, the vendored skills' working state. A regression suite drives the real aios-commit --vault in a scratch repo, with a control run that has no .gitignore. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Member
|
Thank you, Matías. This shipped in v0.8.6 (merged via #195). The control run without a .gitignore is what made this test worth having. We also checked the operator-section merge in /aios:update against a real vault: your new rules land above the marker, and operators' own rules below it are untouched. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
.gitignore(framework section, above the operator marker) now ignores the runtime files AIOS's own helpers write inside the vault tree:aios-note-append<note>.aios-lock/(mutex with apidfile) ·<note>.aiostmp(atomic write)aios-snapshot.aios-snapshot.lock/·.aios-snapshot.<pid>.tmp(in the snapshot dir)route-insight.py<file>.routebak-<timestamp>(pre-write backup, kept on success)<lock>.reclaim/(proposed in #187; harmless if that does not land).superpowers/(their own docs ask for it to be ignored)Why
aios-commit --vaultadds untracked files withls-files --others --exclude-standard, so.gitignoreis its only filter. None of these files were excluded. A--vaultcommit made while a helper held its lock, or afterroute-insight.pykept a backup, carried them next to the real change. Observed on a live vault: a close-of-day commit carried tworoute-insightbackups of an observed file.The fix lives in
.gitignorerather than in the sweep's exclusion list, so it also covers plaingit statusandgit add.Proof
New suite
tests/gitignore-helper-artifacts.test.sh, registered inprimitivesand in the bash 3.2 lane:.gitignore, a realaios-commit --vault --no-pushcommits all 8 in-vault artifacts..gitignore, the same commit carries the 4 notes and snapshots (day note, observed file, two same-day snapshots) and none of the 8 artifacts. Paths include folders with spaces..superpowers/rule also holds at the repo root and does not swallowskills/superpowers/./bin/bash)main.gitignoretests/changelog-entry-shape.test.shtests/*.test.shbatteryclaude -pcheck inheadless-allowlisthung locally and was skipped)The changelog's cleanup command,
git ls-files -ci --exclude-standard, was checked on git 2.24: against six tracked artifacts and four notes, including three with lookalike names such asaios-snapshot.lock.mdandguide.aiostmp.md, it listed exactly the six artifacts.Not in this PR
route-insight.pynames its backup from the file's mtime at one-second precision, so two routings of the same file within one second would overwrite the first backup. That predates this change and is separate from whether the backup reaches git.🤖 Generated with Claude Code