breadcrumbs/CLAUDE.md
Breadway 9009404536
All checks were successful
check / check (push) Successful in 36s
Wire breadcrumbs into the bread event fabric (app id crumbs)
The watch daemon publishes bread.crumbs.profile.changed and
bread.crumbs.health.changed on real transitions (not every poll tick)
and honors bread.command.crumbs.set_profile via the existing
state::set_profile path. BreadClient is fail-silent: if breadd is
down, breadcrumbs behaves exactly as before.

Document the contract in EVENTS.md. CLAUDE.md now points at
CONTRIBUTING (single-trunk, no three-branch model), bakery, and
EVENTS.md.
2026-08-15 21:38:16 +08:00

2.5 KiB

CLAUDE.md — Repo hygiene

Scope: this file covers repo hygiene — branching, remotes, CI, cleanup. It is not project documentation.

This repo follows the branch/release workflow documented in CONTRIBUTING.md — read and follow it for any git, branch, or release work here (the single-trunk model, feature/x/fix/x branch naming, how RC tags work, etc). Don't improvise a different workflow. The short version: there is one long-lived branch, main — no dev or beta branch exists. main auto-publishes a dev-track build on every push. "Beta" and "stable" are both just tags, not branches: push a vX.Y.Z-rc.N tag to publish a beta-track build, push a plain vX.Y.Z tag to cut the signed stable release. "Freezing" for stabilization means pausing pushes to main, not moving a branch. This replaced an earlier three-branch (dev/beta/main) model after main was found to have silently rotted out of sync with dev/beta across most repos in this ecosystem — a manual "merge beta into main monthly" step nobody reliably did across a dozen-plus repos. Collapsing to one branch removes the class of bug; there's nothing left that can fall out of sync.

Remotes

  • origin — Forgejo (git.breadway.dev via Hestia, SSH) — authoritative.
  • github — GitHub mirror. Push both when publishing. Agents push origin only; the GitHub remote auto-mirrors.

Distribution

  • Bakery-only. bakery.toml is the product manifest; there is no packaging/arch/PKGBUILD in this repo.
  • Tracks: bakery track set {dev,beta,stable} then bakery update breadcrumbs (or bakery update --all). See CONTRIBUTING.md and bread-ecosystem's docs/release-channels.md.

Events

  • Bread bus contract: EVENTS.md. App id is crumbs.
  • Fail-silent: breadcrumbs behaves the same whether breadd is running or not. Commands (bread.command.crumbs.*) are only received while breadcrumbs watch / the user systemd unit is up.

CI

  • check.yml — clippy + cargo test --release on feature/** and fix/**.
  • dev-release.yml — triggered on push to main (dev-track bakery publish).
  • rc-release.yml — triggered on any vX.Y.Z-rc.N tag push (beta track).
  • release.yml — triggered on any other v* tag push (signed stable).

All CI runs on a self-hosted runner. No build/lint/test CI runs on ordinary commits or PRs to main beyond the dev-track workflow above.

Don't

  • Don't embed credentials in remote URLs — SSH or a credential helper only.
  • Don't invent bread command verbs that have no real breadcrumbs feature behind them. See EVENTS.md.