vault: session notes 2026-07-14

This commit is contained in:
Jared Swanson 2026-07-14 14:18:38 -04:00
parent bcec53adbb
commit dc6f4faf0c
2 changed files with 20 additions and 0 deletions

View File

@ -8,6 +8,7 @@ tags:
- domain/llm
source: cc-os
date: 2026-06-08
last_updated: 2026-07-14
---
# Installation & First Run
@ -139,6 +140,18 @@ graphify . --mode deep # more aggressive INFERRED edge extraction
> Add a `.graphifyignore` file (same syntax as `.gitignore`) at your repo root to exclude folders like `node_modules/`, `dist/`, or generated files from the graph. `[github]`
### How graphify resolves ignore files (verified against installed source)
Read directly from the installed `graphifyy` 0.8.31 package, `graphify/detect.py``_load_graphifyignore()` (lines 682717) and `_is_ignored()` (720+). These supersede the widely-repeated claim that **"graphify does not honor `.gitignore`"**, which is now stale. `[source]`
1. **It DOES fall back to `.gitignore`.** Per directory, graphify prefers `.graphifyignore`; if that file is absent it reads that directory's `.gitignore` instead (`detect.py:707711`, added for upstream issue #945). A repo with a `.gitignore` and no `.graphifyignore` is therefore **not** unprotected. `[source]`
2. **The real trap is shadowing, not blindness.** The lookup is `if .graphifyignore not exists: use .gitignore` — an **either/or per directory, never a merge**. Adding a `.graphifyignore` to a directory makes graphify stop reading that directory's `.gitignore` entirely. So a short, partial `.graphifyignore` can *silently re-expose* everything `.gitignore` was keeping out (`node_modules/`, `dist/`, build caches) — the exact blow-up a `.graphifyignore` is usually added to prevent. **A `.graphifyignore` must be self-sufficient: it replaces `.gitignore`, it does not extend it.** `[source]`
3. **Only the ancestor chain is consulted.** It walks from the nearest VCS root *down to the scan root* — ancestors of where you point it, not a recursive descent. Running `graphify extract .` at a repo root reads **exactly one** ignore file (the root's). Nested per-subdirectory `.gitignore` files deeper in the tree are **never** honored — unlike git itself. `[source]`
4. **Dialect is true gitignore**, not fnmatch: last-match-wins, `!` negation, and gitignore's parent-exclusion rule (a `!` cannot re-include a file whose ancestor directory is already excluded) — `_parse_gitignore_line()` (645666), `_is_ignored()` (720+). `[source]`
---
## 5. What you get and where it lands

View File

@ -100,3 +100,10 @@ tags: [scope/global, type/log]
**Reason:** prompt_input_exit
**Vault notes touched:**
(none)
## Session — 2026-07-14T18:17:30Z
**Project:** /home/jared/dev/ruby-gems/credvault
**Reason:** prompt_input_exit
**Vault notes touched:**
(none)