.DS_Store
.idea/*
!.idea/modules.xml
!.idea/chumicro.iml
!.idea/runConfigurations/
!.idea/inspectionProfiles/
.venv/
.tools/
__pycache__/
*.py[cod]
.pytest_cache/
.ruff_cache/
.coverage
coverage.xml
htmlcov/
build/
dist/
site/
.site/
*.egg-info/

# Generated by docs build from support/docs/ and zensical
libraries/*/docs/stylesheets/
libraries/*/docs/img/
libraries/*/docs/assets/
workbench/*/docs/stylesheets/
workbench/*/docs/img/
workbench/*/docs/assets/

.mypy_cache/
.scratch/

# Generated runtime-config msgpack from `chumicro-workspace deploy-example`
# — the `_generated/` build-artifact convention, never committed beside
# the tracked example source.
libraries/*/examples/_generated/

# Pre-upgrade backups of edited curated library trees, written by
# `chumicro-workspace library update` before it replaces a tree —
# tool-managed, never committed; recover local edits from here.
_library-backups/

# Agent-tooling scratch dir (worktrees, per-user settings).  Track only:
# * the `skills` symlink so Claude Code auto-discovers the canonical skills
#   tree at `.github/skills/` from the location it expects (`.claude/skills/`).
# * `settings.json` — team-shared agent permissions for chumicro dev tooling
#   (chumicro-workspace / chumicro-deploy / chumicro-repl).  `.local.json`
#   stays ignored for per-user overrides.
.claude/*
!.claude/agents
!.claude/skills
!.claude/settings.json

# .agents/ — install tree the add-skill tool writes when pulling downloaded
# marketplace skills from `skills-lock.json`.  The canonical, tracked copy of
# every downloaded skill lives under `.github/skills/`; this is a redundant
# per-checkout install tree, so track the manifest plus `.github/skills/` and
# ignore this duplicate.
.agents/

devices.yml

# Legacy: chumicro-dev-config.toml.  Retired in Phase 4 of the unification
# workstream — networking-library functional-test conftests now read from
# workspace.yml via `chumicro_workspace.compose_runtime_config`.  Kept
# gitignored for one cycle so contributors with a left-over copy from the
# pre-Phase-4 era don't accidentally commit it.
chumicro-dev-config.toml

# workspace.yml — workspace machinery (library_sources, deploy_targets,
# quality, environments).  Materialised by ``python scripts/run.py setup``
# from `_workspace_template/workspace.yml` (this repo's specific opinions
# — tracked, ships as the starter) or chumicro-workspace's workbench-owned
# starter.  Gitignored so the auto-populated ``library_sources:`` block
# (paths into a sibling chumicro/ checkout) doesn't reach git.  Root-
# anchored so `_workspace_template/workspace.yml` stays trackable.
/workspace.yml

# secrets.toml — workspace-wide credentials + device defaults that flow
# into runtime_config.msgpack at deploy time.  Materialised on first
# ``setup`` from `_workspace_template/secrets.toml` (this repo's specific
# opinions — tracked, ships as the starter) or the workbench-owned
# starter.  Never committed — contains real wifi passwords / broker auth.
# Root-anchored so `_workspace_template/secrets.toml` stays trackable.
/secrets.toml

# .envrc — direnv hook for per-checkout shell setup (e.g. auto-sourcing
# the venv on cd).  Per-user / per-machine; not part of the canonical
# workflow.
.envrc

# Firmware blobs.  `chumicro-deploy flash-firmware` and friends default
# to `./firmware.bin` for the downloaded image; the file is build /
# board artifact, not source.  Use `.scratch/` for one-off testing or
# pass an explicit destination to keep blobs out of the working tree.
/firmware.bin
firmware-*.bin
*.uf2

