🐝

QA Proof Report

Autonomous release verification · what was actually tested before this sprint ships.
Board
DEMO · sprint 4
Environment
stage.coinyield.demo
Run
#0042 · 20:14 UTC
Agent model
claude-opus-4-8
Duration
6m 12s
Queue drained
3 / 3 tickets
3
Verified
2
Passed
1
Bug found
1
Needs human
DEMO-101 · Story
Recalculate payout when the term is changed
✓ PASS

Acceptance criteria

  • Changing the term dropdown updates the estimated payout without a page reload
  • APR label reflects the selected term in months

What the agent did

  1. Opened stage.coinyield.demo, waited for the calculator to render
  2. Read initial payout for BTC · 1000 · 6 mo → captured baseline
  3. Selected term 12 months via [data-testid=term-select]
  4. Asserted payout re-computed without navigation and APR label changed to · 12 mo

Evidence

before · 6 mo
Term6 months
1,026.00 BTC
5.2% APR · 6 mo
after · 12 mo
Term12 months
1,052.00 BTC
5.2% APR · 12 mo
✓ recalculated live, no reload
DEMO-102 · Story
Coin selector should default to BTC on load
✓ PASS

Acceptance criteria

  • On first render the coin dropdown has Bitcoin (BTC) selected
  • Payout is calculated with the BTC APR before any user interaction

What the agent did

  1. Loaded the page fresh (cleared state), read [data-testid=coin-select] value on render
  2. Asserted selected value is BTC and APR label shows 5.2% APR with no clicks

Evidence

on load · no interaction
CoinBitcoin — BTC
1,026.00 BTC
5.2% APR · 6 mo
✓ defaults to BTC
DEMO-103 · Bug
Reject non-positive amount and show an error
✕ FAIL

Acceptance criteria

  • Entering 0 or a negative amount shows the validation error
  • Payout is not calculated for a non-positive amount

What the agent did

  1. Entered -1000 into [data-testid=amount-input]
  2. Expected: error [data-testid=error-msg] visible, payout stays
  3. Observed: no error shown, payout computed a negative value

Evidence

input · −1000
Amount−1000
−1,026.00 BTC
5.2% APR · 6 mo
✕ expected error, none shown — negative payout accepted
Bug confirmed. Negative amounts are accepted and produce a negative payout. The input guard checks only isNaN(amt), not amt <= 0, so validation for zero/negative values never fires. Ticket moved to Needs Human; merge blocked. Suggested fix: reject amt <= 0 and show [data-testid=error-msg].

⚠ Not covered / residual risk (honest scope)

Generated autonomously by 🐝 QA Agent · setup done for you by a QA Lead run #0042 · claude-opus-4-8