docs: README matches the shipped API #17

Merged
Breadway merged 2 commits from fix/readme-touchups into main 2026-10-14 08:47:34 +08:00
Owner

Docs follow-up to the merged breadbug stack: drop the '(in later releases)' qualifier (grouping and the triage inbox are live), document the two follow flows and the token rotation on retry, list BREADBUG_BOARD_TOKEN alongside the token file, and fix a missing blank line before the backup section.

Verified: README-only change, no code touched.

Docs follow-up to the merged breadbug stack: drop the '(in later releases)' qualifier (grouping and the triage inbox are live), document the two follow flows and the token rotation on retry, list BREADBUG_BOARD_TOKEN alongside the token file, and fix a missing blank line before the backup section. Verified: README-only change, no code touched.
docs: README matches the shipped API
All checks were successful
check / check (push) Successful in 39s
50d72f27e9
Drop the '(in later releases)' qualifier (grouping and the triage inbox are
live), document the two follow flows and the token rotation on retry, list
BREADBUG_BOARD_TOKEN alongside the token file, and fix a missing blank line
before the backup section.
Author
Owner

Independent exact-head review: CHANGES REQUESTED at 50d72f27e9. Base main 9e133df0b3. Complete actual PR diff README only, +4/-4; all file and PR list pages exhausted, unique branch/card link.

Criterion mapping:

  • Grouping and triage already implemented: PASS. app.rs:281-370 calls rescrub/storage/cluster assignment; admin.rs inbox/detail and triage.rs score. HTTP intake and admin tests pass.
  • Both follow flows and retry token rotation: PARTIAL, error wording FAIL. app.rs:494-623 and db.rs:1500-1520 implement reporter deletion-token and subscriber install flows plus atomic rotation; all 8 follow tests pass.
  • BREADBUG_BOARD_TOKEN alternative: PASS, config.rs:163-177 reads token file first then env fallback.
  • Backup heading spacing and README-only scope: PASS, full diff and git diff --check.
  • Every README claim matches shipped code: FAIL for errors and CSRF below. Other source-backed claims checked against routes app.rs:149-162, intake/deletion/status handlers, db.rs public_status/progress/release mapping, notice peek/ack/wait handlers, schema fixtures, admin render/actions, lifecycle promote/growth/fix/regression, config defaults and variables, Dockerfile/compose isolation and ports, and packaging/backup.py. Deployment instructions referring to DNS/Caddy and client configuration are external operator prerequisites, not verified live deployment claims; no remote access or deployment performed.

Actionable checklist:

  • README.md:14: qualify wrong-token 403. A well-formed wrong deletion token PLUS a valid install header succeeds through subscriber fallback (src/app.rs:537-546; tests/follow.rs:245-284 explicitly expects 201). Document fallback, 403 without it, and 400 for missing/malformed credentials (app.rs:508-524). Do not change working server behavior merely to fit the prose.
  • README.md:27: replace every POST needs CSRF with authenticated cookie-session action POSTs need CSRF. Bearer-authenticated actions are exempt (admin.rs:149-179), and login_submit:204-230 requires no CSRF. This mismatch is pre-existing but falls within the requested every-claim audit.

Independent cargo test --locked: 161 passed across all suites, including real HTTP routing/SQLite behavior, follow, intake, admin, feedback contract, notices and lifecycle mock-board tests. python3 -m unittest discover -s packaging -p test_*.py: 1 passed. Required check check / check (push): success on exact head, Actions run 83 job 0; read check.yml, only clippy/test/backup privacy and no release workflow. No configured branch protection checks; existing authenticated reviews/comments empty.

Defects filed as BUG-35, confidence high. Keep PR 17 and fix/readme-touchups; move BUG-34 to todo for rework. Merge authorization exists but acceptance failed, so NOT merged. Fresh exact-head review required.

Independent exact-head review: CHANGES REQUESTED at 50d72f27e9afb1d9d95b0124e8f34eb81f9af69e. Base main 9e133df0b32aaf690f46985f69ba1c7bb282ffd9. Complete actual PR diff README only, +4/-4; all file and PR list pages exhausted, unique branch/card link. Criterion mapping: - Grouping and triage already implemented: PASS. app.rs:281-370 calls rescrub/storage/cluster assignment; admin.rs inbox/detail and triage.rs score. HTTP intake and admin tests pass. - Both follow flows and retry token rotation: PARTIAL, error wording FAIL. app.rs:494-623 and db.rs:1500-1520 implement reporter deletion-token and subscriber install flows plus atomic rotation; all 8 follow tests pass. - BREADBUG_BOARD_TOKEN alternative: PASS, config.rs:163-177 reads token file first then env fallback. - Backup heading spacing and README-only scope: PASS, full diff and git diff --check. - Every README claim matches shipped code: FAIL for errors and CSRF below. Other source-backed claims checked against routes app.rs:149-162, intake/deletion/status handlers, db.rs public_status/progress/release mapping, notice peek/ack/wait handlers, schema fixtures, admin render/actions, lifecycle promote/growth/fix/regression, config defaults and variables, Dockerfile/compose isolation and ports, and packaging/backup.py. Deployment instructions referring to DNS/Caddy and client configuration are external operator prerequisites, not verified live deployment claims; no remote access or deployment performed. Actionable checklist: - [ ] README.md:14: qualify wrong-token 403. A well-formed wrong deletion token PLUS a valid install header succeeds through subscriber fallback (src/app.rs:537-546; tests/follow.rs:245-284 explicitly expects 201). Document fallback, 403 without it, and 400 for missing/malformed credentials (app.rs:508-524). Do not change working server behavior merely to fit the prose. - [ ] README.md:27: replace every POST needs CSRF with authenticated cookie-session action POSTs need CSRF. Bearer-authenticated actions are exempt (admin.rs:149-179), and login_submit:204-230 requires no CSRF. This mismatch is pre-existing but falls within the requested every-claim audit. Independent cargo test --locked: 161 passed across all suites, including real HTTP routing/SQLite behavior, follow, intake, admin, feedback contract, notices and lifecycle mock-board tests. python3 -m unittest discover -s packaging -p test_*.py: 1 passed. Required check check / check (push): success on exact head, Actions run 83 job 0; read check.yml, only clippy/test/backup privacy and no release workflow. No configured branch protection checks; existing authenticated reviews/comments empty. Defects filed as BUG-35, confidence high. Keep PR 17 and fix/readme-touchups; move BUG-34 to todo for rework. Merge authorization exists but acceptance failed, so NOT merged. Fresh exact-head review required.
Author
Owner

Independent exact-head review: CHANGES REQUESTED at 50d72f27e9. Base main 9e133df0b3. Complete actual PR diff README only, +4/-4; all file and PR list pages exhausted, unique branch/card link.

Criterion mapping:

  • Grouping and triage already implemented: PASS. app.rs:281-370 calls rescrub/storage/cluster assignment; admin.rs inbox/detail and triage.rs score. HTTP intake and admin tests pass.
  • Both follow flows and retry token rotation: PARTIAL, error wording FAIL. app.rs:494-623 and db.rs:1500-1520 implement reporter deletion-token and subscriber install flows plus atomic rotation; all 8 follow tests pass.
  • BREADBUG_BOARD_TOKEN alternative: PASS, config.rs:163-177 reads token file first then env fallback.
  • Backup heading spacing and README-only scope: PASS, full diff and git diff --check.
  • Every README claim matches shipped code: FAIL for errors and CSRF below. Other source-backed claims checked against routes app.rs:149-162, intake/deletion/status handlers, db.rs public_status/progress/release mapping, notice peek/ack/wait handlers, schema fixtures, admin render/actions, lifecycle promote/growth/fix/regression, config defaults and variables, Dockerfile/compose isolation and ports, and packaging/backup.py. Deployment instructions referring to DNS/Caddy and client configuration are external operator prerequisites, not verified live deployment claims; no remote access or deployment performed.

Actionable checklist:

  • README.md:14: qualify wrong-token 403. A well-formed wrong deletion token PLUS a valid install header succeeds through subscriber fallback (src/app.rs:537-546; tests/follow.rs:245-284 explicitly expects 201). Document fallback, 403 without it, and 400 for missing/malformed credentials (app.rs:508-524). Do not change working server behavior merely to fit the prose.
  • README.md:27: replace every POST needs CSRF with authenticated cookie-session action POSTs need CSRF. Bearer-authenticated actions are exempt (admin.rs:149-179), and login_submit:204-230 requires no CSRF. This mismatch is pre-existing but falls within the requested every-claim audit.

Independent cargo test --locked: 161 passed across all suites, including real HTTP routing/SQLite behavior, follow, intake, admin, feedback contract, notices and lifecycle mock-board tests. python3 -m unittest discover -s packaging -p test_*.py: 1 passed. Required check check / check (push): success on exact head, Actions run 83 job 0; read check.yml, only clippy/test/backup privacy and no release workflow. No configured branch protection checks; existing authenticated reviews/comments empty.

Defects filed as BUG-35, confidence high. Keep PR 17 and fix/readme-touchups; move BUG-34 to todo for rework. Merge authorization exists but acceptance failed, so NOT merged. Fresh exact-head review required.

Independent exact-head review: CHANGES REQUESTED at 50d72f27e9afb1d9d95b0124e8f34eb81f9af69e. Base main 9e133df0b32aaf690f46985f69ba1c7bb282ffd9. Complete actual PR diff README only, +4/-4; all file and PR list pages exhausted, unique branch/card link. Criterion mapping: - Grouping and triage already implemented: PASS. app.rs:281-370 calls rescrub/storage/cluster assignment; admin.rs inbox/detail and triage.rs score. HTTP intake and admin tests pass. - Both follow flows and retry token rotation: PARTIAL, error wording FAIL. app.rs:494-623 and db.rs:1500-1520 implement reporter deletion-token and subscriber install flows plus atomic rotation; all 8 follow tests pass. - BREADBUG_BOARD_TOKEN alternative: PASS, config.rs:163-177 reads token file first then env fallback. - Backup heading spacing and README-only scope: PASS, full diff and git diff --check. - Every README claim matches shipped code: FAIL for errors and CSRF below. Other source-backed claims checked against routes app.rs:149-162, intake/deletion/status handlers, db.rs public_status/progress/release mapping, notice peek/ack/wait handlers, schema fixtures, admin render/actions, lifecycle promote/growth/fix/regression, config defaults and variables, Dockerfile/compose isolation and ports, and packaging/backup.py. Deployment instructions referring to DNS/Caddy and client configuration are external operator prerequisites, not verified live deployment claims; no remote access or deployment performed. Actionable checklist: - [ ] README.md:14: qualify wrong-token 403. A well-formed wrong deletion token PLUS a valid install header succeeds through subscriber fallback (src/app.rs:537-546; tests/follow.rs:245-284 explicitly expects 201). Document fallback, 403 without it, and 400 for missing/malformed credentials (app.rs:508-524). Do not change working server behavior merely to fit the prose. - [ ] README.md:27: replace every POST needs CSRF with authenticated cookie-session action POSTs need CSRF. Bearer-authenticated actions are exempt (admin.rs:149-179), and login_submit:204-230 requires no CSRF. This mismatch is pre-existing but falls within the requested every-claim audit. Independent cargo test --locked: 161 passed across all suites, including real HTTP routing/SQLite behavior, follow, intake, admin, feedback contract, notices and lifecycle mock-board tests. python3 -m unittest discover -s packaging -p test_*.py: 1 passed. Required check check / check (push): success on exact head, Actions run 83 job 0; read check.yml, only clippy/test/backup privacy and no release workflow. No configured branch protection checks; existing authenticated reviews/comments empty. Defects filed as BUG-35, confidence high. Keep PR 17 and fix/readme-touchups; move BUG-34 to todo for rework. Merge authorization exists but acceptance failed, so NOT merged. Fresh exact-head review required.
docs: describe follow credential errors and admin CSRF scope exactly
All checks were successful
check / check (push) Successful in 2m47s
eeaa2cfc9d
A wrong deletion token falls back to a valid install id and is followed
as that subscriber, so 403 only applies with no valid install. Missing
or malformed credentials return 400.

CSRF applies to cookie-session admin POSTs. Bearer-authenticated actions
and the sign-in form are not CSRF-checked.
Author
Owner

Review repair for the BUG-34 review (BUG-35), new head eeaa2cf9d9b8c7b6f1bf048f2ba00e8f317ab55. README.md only.

  • Follow (line 14): a well-formed deletion token that does not match, with no valid install id, returns 403. A non-matching token sent with a valid X-Breadbug-Install is followed as that subscriber (201/200, as tests/follow.rs covers). Missing or malformed credentials return 400.
  • Admin CSRF (line 27): cookie-session POSTs to admin actions need the page CSRF token. Bearer-authenticated actions skip it, and /admin/login is not CSRF-checked (no session yet; it is rate limited instead).

I re-read the rest of the touched text against the code at this head (the follow status codes, the board token env vars, the backup script's retention and replace behaviour, the CSP). No other inaccuracies found. Checks: the diff is README-only, no em dashes, and cargo test --locked passes across all suites.

Review repair for the BUG-34 review (BUG-35), new head eeaa2cf9d9b8c7b6f1bf048f2ba00e8f317ab55. README.md only. - Follow (line 14): a well-formed deletion token that does not match, with no valid install id, returns 403. A non-matching token sent with a valid `X-Breadbug-Install` is followed as that subscriber (201/200, as tests/follow.rs covers). Missing or malformed credentials return 400. - Admin CSRF (line 27): cookie-session POSTs to admin actions need the page CSRF token. Bearer-authenticated actions skip it, and `/admin/login` is not CSRF-checked (no session yet; it is rate limited instead). I re-read the rest of the touched text against the code at this head (the follow status codes, the board token env vars, the backup script's retention and replace behaviour, the CSP). No other inaccuracies found. Checks: the diff is README-only, no em dashes, and `cargo test --locked` passes across all suites.
Author
Owner

Independent exact-head review: PASS at eeaa2cfc9d. Base main 9e133df0b3. Complete actual PR diff is README-only (+8/-5 across both commits, single file); all file and PR list pages exhausted; unique branch and card link (BUG-34); BUG-35 repair commit included in this head.

Criterion mapping:

  • Grouping and triage live, qualifier dropped: PASS. README now states grouping and triage inbox without the later-releases qualifier; intake grouping and triage scoring are merged and live in this codebase.
  • Two follow flows plus retry rotation: PASS. README documents reporter deletion-token flow and subscriber install flow, first follow 201 and retry rotation 200 with new follow_token. Code src/app.rs follow_report implements both plus atomic replace; tests/follow.rs reporter_follows_with_the_deletion_token and a_lost_follow_response_can_be_recovered cover them.
  • Follow 403 vs install fallback vs 400 (BUG-35a): PASS. README now says 403 only for a well-formed non-matching deletion token with no valid install id, notes a non-matching token plus valid X-Breadbug-Install is followed as that subscriber, and 400 when neither well-formed credential is sent. Matches src/app.rs:508-546 exactly (64-hex token filter, valid_install_id filter, 400 when both absent, 403 only without install fallback). Test at tests/follow.rs:245-284 asserts 403 without install and 201 with install.
  • CSRF scope (BUG-35b): PASS. README now says cookie-session POSTs to admin actions need the page CSRF token, bearer-authenticated actions skip it, and /admin/login is not CSRF-checked (rate limited instead). Matches src/admin.rs:149-179 (bearer yields Session csrf None; csrf_ok true for None) with csrf_ok enforced at all 7 action handlers (lines 600-839), and login_submit:204-230 has a login limiter and no CSRF check.
  • BREADBUG_BOARD_TOKEN alternative: PASS. src/config.rs:163-177 reads token file first, env fallback second; README lists both.
  • Backup heading spacing and README-only scope: PASS. Patch adds the blank line before the backup section; git diff --stat shows README.md only; git diff --check clean; no em dashes.

Independent evidence in isolated worktree at ~/.worktrees/breadbug-server/review-17 (detached at exact head): cargo test --locked 161 passed 0 failed; python3 -m unittest discover -s packaging 1 passed; cargo clippy --all-targets --locked clean. Required check check / check (push): success on exact head (Actions run 84, combined state success). No branch protection rules configured; no outstanding reviews (reviews endpoint empty); prior changes-requested comments 4439/4440 addressed by repair commit eeaa2cf and comment 4469.

Merge authorized, so merging this exact head next and confirming merged flag plus SHA.

Independent exact-head review: PASS at eeaa2cfc9d9b8c7b6f1bf048f2ba00e8f317ab55. Base main 9e133df0b32aaf690f46985f69ba1c7bb282ffd9. Complete actual PR diff is README-only (+8/-5 across both commits, single file); all file and PR list pages exhausted; unique branch and card link (BUG-34); BUG-35 repair commit included in this head. Criterion mapping: - Grouping and triage live, qualifier dropped: PASS. README now states grouping and triage inbox without the later-releases qualifier; intake grouping and triage scoring are merged and live in this codebase. - Two follow flows plus retry rotation: PASS. README documents reporter deletion-token flow and subscriber install flow, first follow 201 and retry rotation 200 with new follow_token. Code src/app.rs follow_report implements both plus atomic replace; tests/follow.rs reporter_follows_with_the_deletion_token and a_lost_follow_response_can_be_recovered cover them. - Follow 403 vs install fallback vs 400 (BUG-35a): PASS. README now says 403 only for a well-formed non-matching deletion token with no valid install id, notes a non-matching token plus valid X-Breadbug-Install is followed as that subscriber, and 400 when neither well-formed credential is sent. Matches src/app.rs:508-546 exactly (64-hex token filter, valid_install_id filter, 400 when both absent, 403 only without install fallback). Test at tests/follow.rs:245-284 asserts 403 without install and 201 with install. - CSRF scope (BUG-35b): PASS. README now says cookie-session POSTs to admin actions need the page CSRF token, bearer-authenticated actions skip it, and /admin/login is not CSRF-checked (rate limited instead). Matches src/admin.rs:149-179 (bearer yields Session csrf None; csrf_ok true for None) with csrf_ok enforced at all 7 action handlers (lines 600-839), and login_submit:204-230 has a login limiter and no CSRF check. - BREADBUG_BOARD_TOKEN alternative: PASS. src/config.rs:163-177 reads token file first, env fallback second; README lists both. - Backup heading spacing and README-only scope: PASS. Patch adds the blank line before the backup section; git diff --stat shows README.md only; git diff --check clean; no em dashes. Independent evidence in isolated worktree at ~/.worktrees/breadbug-server/review-17 (detached at exact head): cargo test --locked 161 passed 0 failed; python3 -m unittest discover -s packaging 1 passed; cargo clippy --all-targets --locked clean. Required check check / check (push): success on exact head (Actions run 84, combined state success). No branch protection rules configured; no outstanding reviews (reviews endpoint empty); prior changes-requested comments 4439/4440 addressed by repair commit eeaa2cf and comment 4469. Merge authorized, so merging this exact head next and confirming merged flag plus SHA.
Author
Owner

Independent exact-head re-review: PASS at eeaa2cfc9d (PR 17, base 9e133df). README-only diff. Every touched claim verified against code at the head: follow 403/400/install-fallback wording matches src/app.rs:508-546 and tests/follow.rs; CSRF scope matches src/admin.rs:149-179 plus action handlers and login_submit; board token env matches src/config.rs:163-177. Independent cargo test --locked 161 passed, packaging test 1 passed, clippy clean. Required check check / check (push) success on exact head (run 84). Review persisted on PR as issuecomment-4580. Merge authorized; merging next. Not moving to done (coordinator verifies integration).

Independent exact-head re-review: PASS at eeaa2cfc9d9b8c7b6f1bf048f2ba00e8f317ab55 (PR 17, base 9e133df). README-only diff. Every touched claim verified against code at the head: follow 403/400/install-fallback wording matches src/app.rs:508-546 and tests/follow.rs; CSRF scope matches src/admin.rs:149-179 plus action handlers and login_submit; board token env matches src/config.rs:163-177. Independent cargo test --locked 161 passed, packaging test 1 passed, clippy clean. Required check check / check (push) success on exact head (run 84). Review persisted on PR as issuecomment-4580. Merge authorized; merging next. Not moving to done (coordinator verifies integration).
Author
Owner

Integration result: PR 17 merged at 8669888d64 (merge of reviewed head eeaa2cf, base 9e133df). Awaiting verification of integrated behavior by coordinator; leaving card in place, not moving to done.

Integration result: PR 17 merged at 8669888d64d421782f05c0fd154745b57b1c946d (merge of reviewed head eeaa2cf, base 9e133df). Awaiting verification of integrated behavior by coordinator; leaving card in place, not moving to done.
Author
Owner

Integration result: merged at 8669888d64 (reviewed head eeaa2cf, base 9e133df, required check success). BUG-34 and BUG-35 noted merged=true with this SHA; cards left for coordinator verification, not moved to done.

Integration result: merged at 8669888d64d421782f05c0fd154745b57b1c946d (reviewed head eeaa2cf, base 9e133df, required check success). BUG-34 and BUG-35 noted merged=true with this SHA; cards left for coordinator verification, not moved to done.
Author
Owner

Verified on integrated main 8669888 (merge of PR17): parents are the reviewed base 9e133df and head eeaa2cfc, so the tree equals the reviewed head; check success on the merge SHA; README-only change confirmed in the reviewed diff.

Verified on integrated main 8669888 (merge of PR17): parents are the reviewed base 9e133df and head eeaa2cfc, so the tree equals the reviewed head; check success on the merge SHA; README-only change confirmed in the reviewed diff.
Sign in to join this conversation.
No reviewers
No labels
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
Breadway/breadbug-server!17
No description provided.