Skip to content

v0.6.12

Choose a tag to compare

@daus95 daus95 released this 17 Aug 11:30
· 57 commits to main since this release
41994e1

Fixes the QA convergence guard v0.6.11 shipped a better message for, but that could still trip on evidence it had already used.

Fixed

  • The QA loop guard no longer re-strikes a regression it already counted. Its pattern rules scanned an epic's whole QA history for a feature that failed, was fixed, was re-verified, and is failing again — so once a feature regressed once, every later round it stayed failing re-found that same old gap and scored another strike. An epic then tripped on "2 rounds in a row showing it" when only the first round actually showed anything, turning qa_loop_strikes into "one regression plus N-1 ordinary consecutive failures" and spending exactly the tolerance that limit exists to provide.

    Seen on a live epic: a feature failed round 1, passed rounds 2-3, regressed in round 4 (a genuine strike), then round 5 flagged it again for an unrelated new defect that broke nothing — and was struck a second time for round 4's already-counted gap. A regression now counts only when the re-verification is the round immediately before it, and a round identical to the one right before it is no longer read as the epic "coming back around" to an earlier state. Genuine oscillation still trips on the second strike as before, and standing still is still bounded by max_qa_fail_rounds.

Changed

  • Fix sessions now see the epic's earlier QA reports, not just the newest one. A session told only what the latest round found can reroute control flow around a code path an earlier round already had to fix, bringing that finding straight back — the single most common way an epic starts cycling through QA in the first place. The older reports are now listed (oldest first) as settled findings to check new changes against and to leave a guarding test behind for, explicitly not as work to redo.
  • The convergence halt's diagnosis hint now also names a spec that never settled the question, not only a contradiction between two reports. Its first branch used to ask only whether the two rounds "ask for opposite things" — which doesn't fit the common case where each round is internally consistent and simply turns on something the spec never addressed. Both need the same response: a ruling written into the epic's spec or Architecture Principles.

Full changelog: https://github.com/daus95/tempa/blob/v0.6.12/CHANGELOG.md