# start temp
# IGNORED IS NOT GONE (2026-09-14). A router admin page saved as a hydrated
# DOM landed in the repo root as deleteme.html, carrying a CSRF token and
# the router's internal hostname, and this line covered only deleteme*.txt.
# It sat untracked through two compiles, one blast from public, and the
# compiler kept reading it into payloads. Widened to every extension, and
# the file was still deleted by hand: a gitignore pattern hides a file from
# git, not from the disk, the compiler, or a probe's glob.

#   Workshop/   -- the JupyterLab root (NOT Pipulate's own root)
#   │            FLAT siblings. Nothing nests. Nothing to get wrong.
#   │
#   ├── corporate/    the org's canon · gitignored · its own private repo
#   ├── personal/     personal · gitignored · your own git repo goes here
#   └── shared/       the ONE folder for handing work to a teammate
#       ├── alice/    one folder per person; you write ONLY your own
#       └── bob/      single-writer partitions = zero merge conflicts

deleteme*
Notebooks/Advanced_Notebooks/Whatsa_Lambda.ipynb
patch
*_true_schema_discovery.json
*.wav
# the walk's two CC0 sounds ship in the repo; assets/sounds/README.md names their sources
!assets/sounds/*.wav
*.tsv
# end temp

Notebooks/data/.onboarded
.env

gmail_token.json
secrets.nix
Notebooks/Untitled.ipynb
test.log
llms.txt
robots.txt
graph-good.json
*sitemap*.xml

# ripgrep filters for good search & replaces with `rg | xargs sed` pattern
assets/js/

_config*.py

#navgraph.json Temp until I figure it out
graph.json
navgraph.json
ideal_hierarchy_master_real.html
semrush_candidates.txt
gsc_velocity.json
show_graph.html

prompt.md
article.txt
# context.txt: the list of files an AI will read. `context` edits it, the
# walk writes it, `compile` reads it (one file since 2026-09-25). The two
# retired names stay ignored so a stale copy in an older checkout is never
# swept into a commit by `m`.
context.txt
adhoc.txt
adhocwalk.txt
combined_prompt.txt
instructions.json

# File-types that should never get into repo
# A walk's URLs (bookmark_import.py's <name>.exports.sh): the trail NAMES the
# variables and this file HOLDS the values, so it never ships -- anywhere in
# the worktree, by pattern, not by which folder it happened to land in.
*.exports.sh
*.bak
*.mp4
*.mov
*.csv
*.gz
*.pkl
*.xlsx
*.sqlite
*.sqlite-shm
*.sqlite-wal
*.mmdb
geoip/

# Pipulate framework stuff
data/
downloads/
logs/
temp/
.ssh/key
.ssh/rot
*kungfu_*.py
foo.txt
service_account.txt
service-account-key.json
whitelabel.txt
# THE DOOR'S ROW (2026-10-02): install.sh writes .door into each install.
# Per-install state, like whitelabel.txt: git status never lists it and
# git add -A never stages it.
.door

# Mac & vendor crap
.cursor/
.DS_Store
# THE CLAUDE CODE PATH (2026-09-28): .claude/skills is a tracked symlink to
# .agents/skills, so a Claude Code session opened here offers the same
# skills behind /; the per-machine file its /skills menu writes is not.
.claude/settings.local.json

# Python, Jupyter Notebook & FastHTML stuff
.ipynb_checkpoints/
.jupyter/
.venv/
__pycache__/
.sesskey

# User-facing notebooks generated on first run
Notebooks/Client_Work/
Notebooks/Deliverables/
Notebooks/Shared/
Notebooks/Playground/
Notebooks/Educational_Notebooks/
# THE THREE TIERS (2026-09-27). Notebooks/corporate/ is the org's canon, a
# private repo mounted here and replaced wholesale; Notebooks/Shared/ and
# Notebooks/Playground/ above are the shared and personal tiers. None of the
# three is ever tracked here: the mechanism is public, the data is not.
Notebooks/corporate/
Notebooks/_config.py
Notebooks/Advanced_Notebooks/01_URLinspector.ipynb
Notebooks/Advanced_Notebooks/02_FAQuilizer.ipynb
Notebooks/Advanced_Notebooks/03_GAPalyzer.ipynb
Notebooks/Advanced_Notebooks/04_VIDeditor.ipynb

Notebooks/imports/core_sauce.py
Notebooks/imports/onboard_sauce.py
Notebooks/imports/faq_writer_sauce.py
Notebooks/imports/url_inspect_sauce.py
Notebooks/imports/gap_analyzer_sauce.py
Notebooks/imports/videditor_sauce.py
# THE WORKSHOP (2026-09-27, deed 1630): Notebooks/ became Workshop/ and
# Playground/ became personal/. Every Notebooks/ line above STAYS, on
# purpose: git renames tracked files only, so a checkout that pulls the
# rename keeps its ignored tiers under Notebooks/ until a hand mv, and a
# sweeping git add -A must not reach them there; and during the move
# itself both trees are ignored. The lines below are the same rules under
# the new name.
Workshop/data/.onboarded
Workshop/Untitled.ipynb
Workshop/Client_Work/
Workshop/Deliverables/
Workshop/Shared/
Workshop/personal/
Workshop/Playground/
Workshop/Educational_Notebooks/
Workshop/corporate/
Workshop/corporate
# A TIER CAN BE A LINK (2026-10-02): git sees a symlink as a file, so a
# pattern ending in / never matches one. corporate already carries both
# spellings; personal and shared carry them now, so a tier cloned to
# ~/repos/<tier> and linked here stays out of git status and out of m.
Workshop/personal
Workshop/shared
# THE THREE TIERS ARE THE WHOLE OF Workshop/ (2026-09-28): corporate/,
# personal/ and shared/, each ignored whole, and nothing else lives there;
# the starter notebooks, imports/, data/ and browser_cache/ sit under
# personal/Notebooks/. Every other Workshop/ line in this file STAYS one
# more release, for a checkout that pulls the move with its old tree in
# place. shared/ is the lowercase twin of Shared/ above.
Workshop/shared/
Workshop/_config.py
Workshop/Onboarding.ipynb
Workshop/Advanced_Notebooks/Whatsa_Lambda.ipynb
Workshop/Advanced_Notebooks/01_URLinspector.ipynb
Workshop/Advanced_Notebooks/02_FAQuilizer.ipynb
Workshop/Advanced_Notebooks/03_GAPalyzer.ipynb
Workshop/Advanced_Notebooks/04_VIDeditor.ipynb
Workshop/imports/core_sauce.py
Workshop/imports/onboard_sauce.py
Workshop/imports/faq_writer_sauce.py
Workshop/imports/url_inspect_sauce.py
Workshop/imports/gap_analyzer_sauce.py
Workshop/imports/videditor_sauce.py

# Python packaging and build artifacts
build/
dist/
*.egg-info/
*.whl

# PyPI publishing artifacts
.pytest_cache/
.tox/
htmlcov/
.coverage

# AI Keychain persistent memory - survives application resets

# Browser automation outputs - keep these local only
# CACHE HOLDS WHAT THE PAGE HELD. A `?URL` capture of an authenticated admin
# form lands every rendered field value on disk here, credentials included
# (2026-09-11: a live basic-auth blob and a crawler token in one seo.md).
# Gitignored is not scrubbed: these files are readable by anything with the
# path, and a `!` probe that globs them can lift a value straight into a
# payload. Grep before widening a probe's glob.
browser_cache/

# Browser automation temp scripts - disposable one-offs
*_automation_summary.txt
*_automation_targets.py
*_beautiful_dom.html
*_screenshot.png
*_source.html

# Directory rotation test files - development use only
browser_cache/test_rotation_data/

# Voice synthesis models - auto-downloaded as needed
piper_models/
Notebooks/Onboarding.ipynb

# THE QA ARCHIVE ZIP (2026-09-29): the canonical newest, generated on every
# successful compile and named for the door that explains it
qamy.ai.zip
# Rotated snapshots (qamy.ai_<deed>-<hash8>.zip); pruned to newest 20
qamy.ai_*.zip
# The two names before 2026-09-29. The old snapshots age out of the same
# rotation and foo.zip is removed by hand once; neither is ever committed.
foo.zip
foo-*.zip
