CI / extension-version (push) Successful in 3s
CI / lint (push) Successful in 3s
Build images / sign-extension (push) Successful in 4s
Build images / build-agent (push) Successful in 7s
Build images / build-ml (push) Successful in 8s
Build images / build-web (push) Successful in 6s
Build images / smoke-web (push) Skipped
Build images / promote (push) Skipped
CI / frontend-build (push) Successful in 24s
CI / backend-lint-and-test (push) Successful in 32s
CI / integration (push) Successful in 2m12s
C0 characterized Patreon's `/api/members` from a live capture of the operator's own session. That capture is worth keeping — re-capturing means re-authenticating by hand, and it is the ground truth the characterization (Scribe note #3886) gets re-checked against when a platform's shape is suspected to have drifted. It cannot be committed. It carries the operator's creator list, pledge amounts, and — inside the `card` resources the web app's include set pulls — the account's own email address. So: a directory that is ignored wholesale rather than by filename, so the next capture is covered by this rule instead of needing a line somebody has to remember to add. Two details that are the point rather than incidental: * The ignore is written as `captures/*` plus a negation for README.md, NOT as `captures/`. Git does not descend into an excluded DIRECTORY, so a negation for a file inside one never takes effect — the README would have been silently ignored along with everything else, and the convention would not have survived a fresh clone. * The README states plainly that SANITIZED fixtures belong in git, elsewhere under tests/fixtures/. The raw capture exists to derive those from and to re-check against; it is not the thing tests should load. The ignore rule landed before the capture file did, deliberately: a payload with an email address in it should never be sitting in the working tree un-ignored, however briefly. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LNXXULQDjVZmbuNa2G9mD9
92 lines
2.2 KiB
Plaintext
92 lines
2.2 KiB
Plaintext
# FabledRulebook-required (agent-authored specs/plans live local only)
|
|
docs/superpowers/specs/
|
|
docs/superpowers/plans/
|
|
|
|
# Secrets and environment
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.secret
|
|
*.key
|
|
*.pem
|
|
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
.pytest_cache/
|
|
.mypy_cache/
|
|
.ruff_cache/
|
|
.coverage
|
|
.coverage.*
|
|
htmlcov/
|
|
.tox/
|
|
*.egg-info/
|
|
build/
|
|
dist/
|
|
venv/
|
|
.venv/
|
|
|
|
# Node / Vue / Vite
|
|
frontend/node_modules/
|
|
frontend/dist/
|
|
frontend/.vite/
|
|
frontend/coverage/
|
|
*.log
|
|
npm-debug.log*
|
|
yarn-debug.log*
|
|
yarn-error.log*
|
|
.pnpm-debug.log
|
|
|
|
# Firefox extension build artifacts (lands in FC-3)
|
|
extension/*.xpi
|
|
extension/web-ext-artifacts/
|
|
|
|
# Runtime volumes (must never be tracked) — anchored to repo root so they
|
|
# don't accidentally match Python package dirs like backend/app/models/
|
|
/images/
|
|
/import/
|
|
/downloads/
|
|
/models/
|
|
/postgres_data/
|
|
/redis_data/
|
|
|
|
# IDE / OS
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Claude Code per-user local overrides (shared .claude/settings.json is OK to commit)
|
|
.claude/settings.local.json
|
|
# Transient scheduler lock/state (committed by accident in 3f30327)
|
|
.claude/scheduled_tasks.lock
|
|
.claude/scheduled_tasks*.json
|
|
|
|
# Alembic / DB scratch
|
|
alembic/versions/__pycache__/
|
|
*.sqlite
|
|
*.sqlite-journal
|
|
.superpowers/
|
|
|
|
# Raw platform captures (milestone 387 C0 and successors). These are real
|
|
# authenticated API responses taken from the operator's own account, so they
|
|
# carry account data — creator lists, pledge amounts, and (in Patreon's case)
|
|
# the account email inside the `card` resources. They are kept locally because
|
|
# re-capturing means re-authenticating by hand, and they are the ground truth a
|
|
# characterization gets re-checked against.
|
|
#
|
|
# The whole directory is ignored, not one filename, so a future capture is
|
|
# covered by this rule instead of needing a new line somebody has to remember.
|
|
#
|
|
# SANITIZED fixtures derived from these DO belong in git — put them somewhere
|
|
# else (tests/fixtures/, not here), with the account data stripped.
|
|
# Ignore the CONTENTS, not the directory: git does not descend into an
|
|
# excluded directory, so a negation for a file inside one never takes effect.
|
|
# Writing it this way lets README.md be committed while everything else here
|
|
# stays out.
|
|
tests/fixtures/captures/*
|
|
!tests/fixtures/captures/README.md
|