Skip to content

Simplify forest to single-user scale

Date: 2026-08-17

Forest 1.0 shipped with surface built for a fleet it does not have: a decorative TUI, Sentry/webhook/metrics/analytics observability, feature flags with a raw-logs escape hatch, a circuit breaker with env-tunable thresholds, a migration path from the pre-1.0 single-file layout, a write-only schema config field, a polars dependency for reading small CSV manifests, and a 53-file test suite grown as a session ledger. The tool has one author and no external users; every one of those surfaces cost maintenance while serving nobody.

A repo-wide audit cut all of it. Forest now keeps only what the single-user CLI actually exercises:

  • Bare forest prints the command help (click's no-args-is-help) instead of launching a TUI; the TUI and its scenery renderer are gone.
  • The pre-1.0 root forest.yaml layout and forest checkout adopt are unsupported. A root config without a workspace registry reads "No forest project found" — re-init and re-push instead of migrating.
  • Sync entries recorded before content hashing (no file_hashes) read as stale outright and heal on the next push; the size-based legacy checksum is deleted.
  • Logs are always scrubbed; there is no flag to disable redaction.
  • Multi-unit transfers abort after 5 consecutive unit failures — a constant, not an env knob. Retries and backoff remain env-tunable.
  • Manifests load via stdlib csv as lists of string dicts; polars, textual, the sentry extra, pylint, vulture, pytest-rerunfailures, and pytest-asyncio are gone from the dependency tree.
  • The test suite is consolidated into one file per module or command family (18 files) with shared fixture builders in conftest.

Any of these can return behind a real need from a real workflow; the audit's rule was that speculative scale is not a need.