Skip to content

docs: remove retired docs and correct stale instructions - #1410

Merged
frahlg merged 1 commit into
masterfrom
docs/cleanup-stale
Sep 24, 2026
Merged

frahlg merged 1 commit into
masterfrom
docs/cleanup-stale

Conversation

@frahlg

@frahlg frahlg commented Sep 24, 2026

Copy link
Copy Markdown
Member

Why

The owner asked to clear out documentation that is no longer current. A read-only audit checked every Markdown file against master: code, scripts, workflows and inbound links. It found docs describing retired things (the Docker updater as current, Parquet history, the Python optimizer, Home Link, CalDAV, the Pi image) and some that tell people to do something impossible or unsafe on native 0.x.

Removed

  • docs/sungrow-observe-pilot.md: duplicates srcfl/device-drivers packages/v1/sungrow/PILOT.md. No inbound links.
  • docs/recover-failed-rollback.sv.md: a one-off runbook for the July old-line incident fixed by Fix rollback data safety and legacy recovery #583. The operations pointer and the brand allowlist entry go with it.
  • docs/adr/0005-outbound-site-link.md: superseded by ADR 0006, and Home Link is gone, like ADRs 0001–0004 before it. ADR 0006 now names it without a link.
  • docs/caldav-integration.md: its one live instruction (move calendar events to ready-by schedules; a caldav section is ignored with a warning) now sits in upgrade-from-legacy.md.
  • The brand allowlist entry for a docs/superpowers/plans/… file that does not exist.

Unsafe or impossible instructions, corrected

  • Installing:
    • linux-packages.md: the manual /opt/ftw/ftw + ftw.service install bypassed the release slots (ADR 0007 decision 14). It now points to the installer.
    • operations.md: the installer came from master with an old tag. It now uses the same-tag installer.
  • Rolling back: operations.md said "roll back through the update UI" and "pin the previous image tag". It now names ftw rollback, the launcher's offline rollback, and FTW_VERSION for Docker 0.x.
  • Restore: in backup-and-restore.md, the revert path was /var/lib/.ftw-pre-restore-…, which RevertContents refuses. It is now /var/lib/ftw/.ftw-pre-restore-…. A native restore section was added, and restore-full-backup.sh is marked old line (it needs docker-compose.yml).
  • Support file: native-beta.md said POST /api/support/dump; the route is GET.
  • Setup guides (5 languages): step 6 now says not to use the username ftw, which the installer refuses. "Or updating" is dropped from the protected-routes hint.
  • Nova: ./ftw nova-claim does not work on native, where ftw on PATH is the CLI. The docs now run the release's Core binary as ftw in /var/lib/ftw and restart the service. This is derived from nova_claim.go; not run against Nova.
  • API token: FTW_API_TOKEN now has native (systemd drop-in) and Docker 0.x (environment:) instructions; only the old compose passed it.

Stale descriptions, updated

  • architecture.md: storage is plain SQLite buckets (10 s for 7 days, 1 min for 90 days, 1 h for 5 years, plus the ledger). No Parquet is written, and diagnostics are kept 7 days. Releases are the package, the launcher and slots; the sidecar belongs to the frozen line. The CalDAV example is removed.
  • development.md: the Python optimizer, venv and 3.11 text is gone. Make targets are checked against the Makefile, and the root compose is described as the frozen line, with Docker 0.x in deploy/docker.
  • operations.md and backup-and-restore.md: lead with native, then Docker 0.x, with the older Docker line clearly marked. The Swedish backup summary is rewritten around ftw backup.
  • self-update.md: the ftwctl.py migrate-native pilot is labelled as not the user migration path.
  • README, CONTRIBUTING and VISION:
    • release cadence (weekly betas; stable after a week on the home box and one other site);
    • the Home Assistant add-on is on the 3.x line;
    • no Parquet;
    • Docker updates rebuild from the release package.
  • Roadmap: the 12 September review is condensed to what still steers work: the table of existing work and the delivery order, with delivery 1 marked done. The run log and the instructions to close PRs that are now closed are gone.
  • Smaller fixes: safety.md, device-repository.md (Settings → Devices, not the Update Center), and ADR 0007 (no longer "until implemented"; ftw update --retry instead of an unimplemented --backup-dir).

Code (patch changeset)

  • Error message: the missing-worker error told operators to "run the ftw-optimizer sidecar (see docs/self-update.md)". It now says the release package's Energyplan worker is missing and the built-in Go planner is used. Its tests are updated.
  • Comments: comments citing a nonexistent "docs/safety.md §8" or FTW_UPDATER_SOCKET in self-update.md are fixed.

Left alone

Evidence

  • Links: a check of every relative link and #anchor in all Markdown files (except CHANGELOG) finds 0 broken.
  • Brand check: passes under the CI locale (LC_ALL=C.UTF-8). Under my local sv locale, comm complains about sort order.
  • Other checks: check-no-planning-docs.sh and npm test (630) pass, and so do go test ./internal/mpc ./internal/control.

🤖 Generated with Claude Code

https://claude.ai/code/session_01MuerPFZFG88kgu8sWVHeq7

A read-only audit checked every doc against master. This removes what
only describes retired things and corrects what now tells people to do
something impossible or unsafe.

Removed: the Sungrow observe pilot (lives in device-drivers), the July
failed-rollback runbook for the old Docker line, ADR 0005 (superseded,
Home Link gone) and the CalDAV note, folded into upgrade-from-legacy.

Corrected: a manual install that bypassed the release slots, rollback
through an update UI native does not have, a restore revert path that
Core refuses, the support dump method, the setup guides' username (the
installer refuses an account named ftw), Nova claiming on native, the
storage description (plain SQLite buckets, no Parquet), the Python
optimizer and sidecar, the old release cadence, and a dated roadmap
review condensed to what still steers work. Code pointers to removed
docs are fixed, and the missing-worker error no longer tells operators
to run a sidecar that is gone.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01MuerPFZFG88kgu8sWVHeq7
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-24T17:57:52.321519Z a4d8ceb PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@frahlg
frahlg merged commit ad0bdd0 into master Sep 24, 2026
16 checks passed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: a4d8ceb556

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

// `exec: ... not found in $PATH`.
var errOptimizerWorkerMissing = errors.New(
"optimizer worker interpreter not found on PATH; this core build has no bundled Python optimizer — run the ftw-optimizer sidecar (see docs/self-update.md)")
"optimizer worker not found; the Energyplan worker from the release package is missing, so the built-in Go planner is used")

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Do not claim the Go fallback always runs

When the worker is missing on a batteryless site, a site with multiple storages/EVs, or one with per-storage efficiencies, coreDPModelError prevents the Go DP fallback and service.go keeps the previous plan instead. This error is exposed through component health and support reports, so the new text tells operators that the built-in planner is being used even though no new plan was produced; keep the transport error neutral and report fallback use only after Service actually selects it.

AGENTS.md reference: AGENTS.md:L22-L25

Useful? React with 👍 / 👎.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant