Files
chemenu/.gitignore
T
torbenandClaude Code cceb9a7bfe
CI / verify (push) Successful in 8m41s
CI / pwsh (push) Successful in 2m44s
Release / release (push) Successful in 35s
Release / wiki-mirror (push) Skipped
intake: several configured intake channels (mcp, folder, command) all end in quarantine/ (was mcp-upload/), and upload collect pulls the synced-folder and command channels into it (#213); 10.0.0-beta.11
Files changed:
- .gitignore
- CHANGES.md
- VERSION
- docs/explanation/architecture.md
- docs/explanation/pipeline-rationale.md
- docs/how-to/README.md
- docs/how-to/back-up-to-a-synced-folder.md
- docs/how-to/collect-from-a-synced-folder.md
- docs/how-to/ingest-a-source.md
- docs/how-to/set-up-the-mcp-server.md
- docs/reference/commands/README.md
- docs/reference/commands/git.md
- docs/reference/commands/instance-health.md
- docs/reference/commands/raw-material-and-uploads.md
- docs/reference/configuration.md
- instructions/gates.md
- instructions/ingest-queue.md
- instructions/mcp-read-server.md
- instructions/migrations/10.0.0-settings-tiers.md
- instructions/wiki-ingest/SKILL.md
- raw/CONTRACT.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/cli_contract.py
- tools/chemenu/collect.py
- tools/chemenu/commands/backup_cmd.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/raw/pending.py
- tools/chemenu/commands/upload_cmd.py
- tools/chemenu/config.py
- tools/chemenu/config_shapes.py
- tools/chemenu/legacy_settings.py
- tools/chemenu/mcp/server.py
- tools/chemenu/reference_doc.py
- tools/chemenu/tests/test_backup.py
- tools/chemenu/tests/test_collect.py
- tools/chemenu/tests/test_config_shapes.py
- tools/chemenu/tests/test_doctor.py
- tools/chemenu/tests/test_legacy_settings.py
- tools/chemenu/tests/test_mcp_server.py
- tools/chemenu/tests/test_upload.py
- tools/chemenu/tests/test_upload_cmd.py
- tools/chemenu/upload.py

Co-Authored-By: Claude Code <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SnAJ7Z3CpVD3PRbN73QtU2
2026-10-12 22:04:18 +02:00

202 lines
7.0 KiB
Plaintext

# Chemenu - .gitignore
#
# Rule for this file: `raw/`, `kb/`, `work/` and `sites/` are the repository's content, and
# a pattern that silently excludes one of their files is a data-loss bug - the
# wiki keeps reporting the file as covered while `publish` never commits it.
# So:
# 1. Anything repo-local (build output, toolchain state) is anchored with a
# leading `/` so it only matches at the repo root.
# 2. Directory patterns (`foo/`) must ALWAYS be anchored: git cannot
# re-include a file whose parent directory is excluded, so the negation
# block at the bottom cannot rescue it.
# 3. The negation block at the bottom is the backstop for file patterns.
# 4. `reports/` is the exception in the other direction: it holds derived
# output that must stay OUT of git, so its rule is required rather than
# forbidden.
# `tools/wikitool docs verify` enforces all of this with canary probes in both
# directions.
# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
# Editor directories and files
/.idea/
/.vscode/
*.swp
*.swo
# Temporary files
*.tmp
*.temp
*~
# Logs (but keep kb/log.md)
*.log
!kb/log.md
# Local environment files
.env
.env.local
.env.*.local
# Build artifacts
*.exe
*.dll
*.so
*.o
*.a
__pycache__/
*.pyc
*.pyo
*.pyd
# Node.js
/node_modules/
/package-lock.json
npm-debug.log*
# Python
/venv/
/.venv/
/env/
/.env/
/tools/.venv/
/tools/.pytest_cache/
# wikitool session-scoped iteration/cost budget state (see AGENTS.md
# "Gates") - local, per-session, never committed
/tools/.wikitool_session/
# `wikitool raw capture`/`raw status` git cache (see raw/CONTRACT.md "Getting a
# repository in") - one bare repository per captured URL, refetched on demand.
# Derived and per-checkout; never committed, never shipped.
/tools/.wikitool_capture/
# Go
/go.mod
/go.sum
/bin/
# IDE
*.iml
*.ipr
*.iws
# Obsidian (if used locally)
/.obsidian/
# Backup files
*.bak
*.backup
*.orig
# System files
/core
/tags
/TAGS
# Generated lint reports. Derived output: the structural half is recomputable
# from the tree at any commit, so committing it would create a second, drifting
# copy. The contract explaining that is the one file that must survive.
/reports/*
!/reports/CONTRACT.md
# Per-checkout environment notes (harness, skills, MCP servers, connectors,
# remotes - see AGENTS.md "Environment"). Optional, and specific to one
# working copy: two clones of this repo are two different environments, so
# committing one clone's answers would hand the other a file that is wrong
# rather than missing. The `.template` beside it is tracked and ships with
# `dist export`; this anchored pattern deliberately does not match it.
/ENVIRONMENT.md
# The four per-feature settings files of earlier versions (publish-remote allowlist,
# telemetry, MCP `submit` limits, task tracker). Nothing reads them any more -
# `wikitool config migrate` moves them into the tiered settings below - but
# until it has run they may still hold a credential, so a leftover stays out of
# `publish`'s `git add -A`.
/.wikitool-remotes.json
/.wikitool-telemetry.json
/.wikitool-upload.json
/.wikitool-tasks.json
# Tool paths recorded by the preflight (tools/preflight.sh / .ps1, see
# instructions/preflight.md): the absolute paths of python, git, rg - and pwsh
# on Windows - as this machine has them. Per-checkout for the plainest reason of
# all: a path on one computer means nothing on another. Absent means the
# preflight has not run, and `tools/wikitool` refuses to start (exit 42).
/.wikitool-tools.json
# The checkout tier of the settings (tools/chemenu/settings.py): what is true
# only for this clone on this machine. Its committed counterpart, `wikitool.json`,
# holds the instance tier and must stay tracked - `docs verify` checks both.
# Secrets are in neither file; both hold only references to them.
/.wikitool-local.json
# Live-suite tracker profiles (Gitea #156): one file per tracker of the user's own that the
# live suite may be pointed at (`CHEMENU_LIVE_PROFILE=<name>`,
# instructions/dev/tracker-testing.md). They hold references to credentials, never the
# values, and are per-checkout for the same reason as `.wikitool-local.json`. A directory pattern, anchored: nothing in it is
# ever tracked, so no negation has to rescue anything.
/.wikitool-tasks.d/
# Coverage output from `pytest --cov` (see .gitea/workflows/ci.yml). Derived,
# like reports/: recomputable from any commit, and `publish` runs `git add -A`,
# so an unignored htmlcov/ would commit itself on the next content publish.
/tools/.coverage
/tools/.coverage.*
/tools/coverage.xml
/tools/htmlcov/
# Published skills. `instructions/<name>/SKILL.md` is the source; these two
# directories are copies made by `wikitool instructions sync` for the harnesses
# that read them (`.agents/` for Copilot/Codex/Vibe, `.claude/` for Claude
# Code). Committing a copy would create the same drifting second copy the
# reports rule exists to prevent. A fresh clone publishes them once - see
# instructions/bootstrap.md.
/.agents/skills/
/.claude/skills/
# Ingest inbox (see raw/CONTRACT.md "Getting a file in"). A human
# drops a file here - no subdirectory carries any meaning any more, an old
# one is merely tolerated and ignored; `wikitool raw accept` promotes it into
# `raw/`, computing the date-sharded directory and any bundle from what was
# passed in one call. Unlike raw/ itself this must NEVER be committed - the
# promotion is what makes a file immutable, not the drop.
#
# File pattern, not directory pattern (Gitea #88): `/incoming/` used to
# exclude the directory itself, and rule 2 above means the negation block at
# the bottom could never re-include a file whose parent was already gone -
# so a fresh clone never had the directory at all, only
# `instructions/bootstrap.md` recreating it by hand. `/incoming/*` excludes
# everything inside instead, so `!/incoming/.gitkeep` right below actually
# applies: that one anchor file is trackable and ships with every clone.
# Nothing else dropped here is rescued by the same rule.
/incoming/*
!/incoming/.gitkeep
# The quarantine of the intake channels (see raw/CONTRACT.md "Getting a file in
# from outside" and tools/chemenu/upload.py). Material that came from a caller
# that is not this terminal - the MCP `submit` tool, a synced folder, a program
# of this checkout - before a human has reviewed any of it: stronger than
# `incoming/` above, not merely uncommitted but read by no command in the
# ordinary pipeline. Unlike `incoming/` above (Gitea #88), this one keeps the
# directory form and gets no `.gitkeep`: the directory is created on demand by
# the one function that is allowed to write into it, together with its own
# `.gitignore`, so a checkout that never arms a channel never gets one. Never
# anchored back open by the content backstop below, same as `incoming/`.
/quarantine/
# Content backstop - keep this block last. Nothing under raw/, kb/, work/ or sites/ may
# be excluded by a pattern above; see the header note for why directory patterns
# still have to be anchored rather than relying on these negations.
!raw/**
!kb/**
!work/**
!sites/**