/develop + QA: run the full browser suite at phase boundaries, not after every unit and every fix round #38
Labels
No labels
component:adapters
component:lifecycle
component:qa
component:setup
component:shared
component:worktrees
phase/accepted
phase/backlog
phase/deployed
phase/developing
phase/integrating
phase/planning
phase/qa
phase/requirements
phase/uat
priority:critical
priority:critical
priority:high
priority:high
priority:low
priority:low
priority:medium
priority:medium
type:bug
type:chore
type:docs
type:feature
type:infra
type:tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
jbr870/devwork-skills#38
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Rank 1 of 13 in #37 · est. saving ~2h per feature of this size
Evidence
The full Playwright suite (~21 min, 469 tests) ran seven times across feature #230:
/developWU-6/integrategateSix of seven returned a byte-identical
469 passed, 3 skipped, 0 failed. The seventh was anunrelated load-sensitive spec (verity#222) that passed in isolation. Total: 2h 29m — 19% of the
feature's active time — to establish seven times that no sibling spec had broken.
What happens now
/developruns the full browser suite as part of its per-unit and cross-unit verification, and theQA playbook re-runs it after every fix round. Neither rule distinguishes "the feature's own specs"
from "the whole suite".
Proposed change
Split the browser gate in two, in
develop/SKILL.mdand the QA playbook:/develop, end of QA, and/integrate.Three full runs instead of seven, with the regression signal preserved at every point where work
leaves a phase.
Acceptance
/meta-amend outcome — amended
Addressed together with #41 as one two-tier gate policy (as #41 asked), commit
7f75154onmain.Verified at HEAD
Both halves still held at
7453ac5:develop/SKILL.mdImplementer prompt: "4. Run the full test suite to check for regressions" + checklist "Full test suite passes (no regressions)" — no distinction between the feature's specs and the whole suite.fix-workflow.md§4 "Run Full Test Suite … run the complete test suite" andtest-workflow.md§5 "Run the project's full test suite" — fired after every fix round.domains/code.mdwas worse than the issue recorded: its fixer ran the full suite after every individual issue (step 5), plus again after all issues.qa-playbook.md§2 already carried the principle for domains ("Re-validate the stage, not the world") but said nothing about the deterministic suites, so the workflows above overrode it in practice.The amendment
Two tiers, named explicitly, with the boundary each fires at:
/dev:develop3.7 cross-unit, the QA sweep, and/dev:integrateStep 3.Plus one rule that makes three runs actually reachable: QA does not re-prove the previous phase's exit — it inherits a HEAD
/dev:develop's cross-unit gate already ran wide against, checked the way §7 checks the sweep (against the recorded HEAD; if HEAD moved, the wide run is owed again).How a run is scoped stays a project declaration (workspace filter, path/pattern argument, tag) — no scoping mechanism is hardcoded, and "run whole" is written as the explicit fallback, never the default.
Files:
develop/SKILL.md(tier definition at the top of Phase 3; Implementer process step 4; Implementer verification checklist; 3.7 named as the wide tier),_shared/procedures/qa-playbook.md§2,_shared/procedures/fix-workflow.md§4 + report template,_shared/procedures/test-workflow.md§5,_shared/domains/code.mdfixer.Gate
scripts/lint-conventions.sh— clean (117 helper scripts, 690 fence lines, 202 shipped-tree files).Desk-check against the originating scenario (verity #230)
Replaying the recorded run against the amended text:
/developWU-6 per-unit/developcross-unit (3.7)/integrategateAnd the vitest half: the full workspace suite ran 7× across six work units; under the narrow per-unit gate it runs once, at 3.7. Both issues' numeric acceptance criteria are met, and the two qualitative ones ("a unit that touches two packages runs both"; "the narrow run still fails the unit if the feature's own specs regress") are stated in the text rather than implied.
What validates it next
A desk-check, not a run. The next dogfooded feature that decomposes into more than two work units is what proves the per-unit narrow gate actually catches a regression it is supposed to catch — watch for a WU that closes green under the narrow gate and then fails at 3.7.