Skip to content

background_tasks: settings form accepts unbounded numeric values and gives no save feedback #270

Closed

Description

@antosubash

Found by QA on a live app: the BackgroundTasks module settings form accepts retention_days=-5 and max_retries=999999999 — both save with HTTP 200 and persist (silent corruption; values were restored after the test). Numeric fields need ge/le bounds in the settings schema. Additionally, saving valid settings shows no success toast/feedback (P3 UX), and the invite form accepts an obviously invalid email without warning on the 'Send invites' tab.

Pre-existing on main (not related to PR #267); found during its QA cycle.

https://claude.ai/code/session_01HMniW4BEhpumUTFnWZVKVc

Activity

  1. added
    bugSomething isn't working
    pi-readyApproved for the headless Pi worker
    pi-workingThe headless Pi worker is implementing this issue
    and removed
    pi-readyApproved for the headless Pi worker
    on Aug 21, 2026
  2. antosubash commented on Aug 21, 2026

    @antosubash
    OwnerAuthor

    🤖 Claimed. I am creating an isolated worktree from origin/main and starting implementation.

  3. added
    pi-pr-openThe headless Pi worker opened a draft pull request
    and removed
    pi-workingThe headless Pi worker is implementing this issue
    on Aug 21, 2026
  4. antosubash commented on Aug 21, 2026

    @antosubash
    OwnerAuthor

    ✅ Draft pull request opened: #279

    Implementation summary

    • Added bounds: retention_days 1–3650 and max_retries 0–100.
    • Invalid values now return 422 without persistence.
    • Added “Settings saved” success toast.
    • Added pre-submit invite email validation, warning, and disabled submission for invalid addresses.
    • Added Python and React regression tests.

    Changed areas

    • Background task settings schema and documentation.
    • Settings module save feedback.
    • Users invite form validation.
    • Vitest/module test configuration and package metadata.

    Verification

    • uv run pytest ... — 251 passed.
    • npm test -- --run — 110 passed.
    • make gen-pages && make lint — passed.
    • make doctor — 0 errors; one pre-existing SM003 AuditLog warning.
    • git diff --check — passed.

    Visual evidence: none; UI behavior covered by component tests.

    Risks/blockers: none known.

  5. added
    pi-visualCapture local Playwright evidence under .qa
    pi-blockedThe headless Pi worker needs human help
    on Aug 21, 2026
  6. antosubash commented on Aug 22, 2026

    @antosubash
    OwnerAuthor

    ⛔ Blocked.

    Pi CI repair failed: Visual sandbox requires a private writable runtime directory at /run/user/1000

  7. antosubash commented on Aug 22, 2026

    @antosubash
    OwnerAuthor

    ⛔ Blocked.

    • Feedback /pi verify gif: attempted workflow recording and completed asserted visual checks.
    • BLOCKED: playwright-cli video-start could not record because Playwright FFmpeg is missing at /home/anto/.cache/ms-playwright/ffmpeg-1011/ffmpeg-linux. No WebM/GIF was fabricated.
    • Screenshot verification passed for bounds validation, persistent save feedback, and desktop/mobile invite validation.

    Evidence: .qa/issues/270/pr-279/runs/20260822T214026Z/report.md
    Diagnostics and exact recording failure: .qa/issues/270/pr-279/runs/20260822T214026Z/playwright.log

    Checks: app launch/authentication and asserted Playwright workflow passed; git diff --check passed.

    Visual evidence captured locally under ignored .qa/issues/270/pr-279/runs/20260822T214026Z:

    • 01-desktop-bounded-settings-validation.png
    • 02-desktop-settings-save-feedback.png
    • 03-desktop-invalid-invite-warning.png
    • 04-mobile-invalid-invite-warning.png
    • report.md
    • requests.txt
    • snapshot.txt
  8. added
    pi-blockedThe headless Pi worker needs human help
    and removed
    pi-blockedThe headless Pi worker needs human help
    on Aug 22, 2026
  9. antosubash commented on Aug 23, 2026

    @antosubash
    OwnerAuthor

    ⛔ Blocked.

    • Feedback: add QA result to PR.
    • BLOCKED: I cannot post PR comments; GitHub writes are controller-owned.
    • Ready-to-post result: QA passed: bounds validation, persistent save feedback, and desktop/mobile invite validation. GIF source: .qa/issues/270/pr-279/runs/20260822T214553Z/workflow.webm.
    • Report: .qa/issues/270/pr-279/runs/20260822T214553Z/report.md
    • Check: git diff --check passed; worktree is clean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingpi-pr-openThe headless Pi worker opened a draft pull requestpi-visualCapture local Playwright evidence under .qa

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions