docs(draft): correct stale "backup schedules not exposed by the API" claim (#72) #80

Merged
dan-claude-bot merged 1 commit from docs/draft-backup-api-honesty into main 2026-07-16 15:43:18 +00:00
dan-claude-bot commented 2026-07-16 14:56:25 +00:00 (Migrated from github.com)

Part of #72 (the stale-text action item).

draft.ts still tells the operator, in three places, that a database's backup schedule "is not exposed by Coolify's API" and is "create-time-only in cast":

  • the backup uncaptured flag (draft.ts:594),
  • its surrounding comment, and
  • the NO_API_COVERAGE table row.

#51 disproved both. GET /databases/{uuid}/backups answers, and diff and apply now read and write the schedule. The audit calls this the #51 failure mode repeating — a defect filed as a limitation does not get fixed. docs/semantics.md was already corrected when #51 landed (it explicitly notes "this line used to say … and #51 disproved"); this PR brings draft.ts's three copies in line.

What is still true, now said accurately: the draft path (inventory --emit-draft) does not yet read /backups, so no backup: block is captured and a rebuild from a draft still has no backups until the operator declares one — not because the API cannot express it.

Text-only, no behavior change. npm run check clean · tests pass.

Scope note: the audit's stale-text item also lists the service hostnames and which GitHub App clones a repo NO_API_COVERAGE rows. Those are removed as part of the functional PRs that make them wrong (service urls; GitHub-App binding via source_id), so they are intentionally left to those PRs to avoid conflicting edits to the same table.

🤖 Generated with Claude Code

Part of #72 (the stale-text action item). `draft.ts` still tells the operator, in three places, that a database's backup schedule **"is not exposed by Coolify's API"** and is **"create-time-only in cast"**: - the `backup` uncaptured flag (`draft.ts:594`), - its surrounding comment, and - the `NO_API_COVERAGE` table row. **#51 disproved both.** `GET /databases/{uuid}/backups` answers, and `diff` and `apply` now read and write the schedule. The audit calls this the #51 failure mode repeating — *a defect filed as a limitation does not get fixed*. `docs/semantics.md` was already corrected when #51 landed (it explicitly notes "this line used to say … and #51 disproved"); this PR brings draft.ts's three copies in line. **What is still true, now said accurately:** the *draft path* (`inventory --emit-draft`) does not yet read `/backups`, so no `backup:` block is captured and a rebuild from a draft still has no backups until the operator declares one — **not** because the API cannot express it. Text-only, no behavior change. `npm run check` clean · tests pass. > **Scope note:** the audit's stale-text item also lists the `service hostnames` and `which GitHub App clones a repo` `NO_API_COVERAGE` rows. Those are removed as part of the functional PRs that make them wrong (service `urls`; GitHub-App binding via `source_id`), so they are intentionally left to those PRs to avoid conflicting edits to the same table. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: heavy-duty/cast#80
No description provided.