-
Enter the phase. state.json → phase: "integration_sprint":
.scrum/scripts/update-state-phase.sh integration_sprint
(No-op when already there on re-entry.)
Codebase-audit pre-flight re-check (mandatory, thin). The
whole-repo codebase-audit (4 axes) IS the Sprint-end cross-review
ceremony (context (a)) and runs every Sprint, so by now the codebase
has already been audited and its Critical/High findings filed as
PBIs. This step is a cheap re-check, not a fresh full audit: run
the codebase-audit skill
with context=integration_entry. It verifies (i) the latest audit
report is fresh — .scrum/reviews/codebase-audit-s{N}.md exists for
the final development Sprint (N = numeric sprint number from
sprint.json.id) — and (ii) no open (non-done) [codebase-audit:*]
Critical/High PBI remains in backlog.json. Both hold → proceed to
Step 2. Report stale/missing → it runs a fresh audit now; any
unresolved Critical/High → it sets the phase to backlog_created
and stops here (the Integration Sprint resumes after the
defect-fix loop). This closes the hole where an audit PBI was filed
but never fixed before integration.
-
Spawn the testing Developer teammate(s) via the
spawn-teammates skill (1–2 for testing). The Developer(s) run
Steps 3–6.
-
Delegate the smoke-test skill and wait for completion (do
NOT proceed early). This confirms the existing test assets still
pass (regression) and records the base categories in
.scrum/test-results.json. passed_with_skips is not a failure —
continue.
-
Design the test cases — follow
references/test-case-design.md.
Derive a test-case matrix from every enabled spec applying the
per-category derivation rules (boundary values + equivalence
partitioning for interfaces, decision tables for business rules,
state-transition coverage for workflows, screen-flow + form
boundaries + journeys for UI, stub scenarios for external
integration), and write it to
.scrum/integration-tests/<sprint-id>/test-cases.md with a
spec ⇄ case traceability table. The uncovered list MUST be empty
or carry an explicit per-item waiver rationale.
-
Build stubs for non-reproducible external interfaces — follow
references/stub-construction.md.
Enumerate the external interfaces that cannot be exercised locally,
map each from its S-022 contract, and implement stubs under
tests/stubs/. Connection switching is by environment variable —
never embed a stub branch in product code.
-
Automate and execute — follow
references/test-automation.md.
Implement API cases in tests/integration/ (project test library)
and UI cases in tests/e2e/ (Playwright code); run them. Only
cases that cannot be automated fall back to Claude-driven probes
(Playwright MCP / Chrome DevTools MCP with logged evidence), then to
a human-manual checklist. Record verdicts through
.scrum/scripts/record-test-result.sh under categories
integration_api / integration_ui / design_coverage /
manual_probe, and report the automation rate. Once the tests are
green, commit the test assets (tests/integration/, tests/e2e/,
tests/stubs/) to the target project's main worktree — the sole
sanctioned path is
.scrum/scripts/commit-integration-tests.sh "<message>", which
refuses to commit anything outside the test-asset set. When a test
runner configuration file (e.g. pytest.ini, playwright.config.ts)
must be committed alongside the assets, pass it via --allow <path>
and state the path and reason in the Step 7 SM report.
-
Quality gate + SM report (combined overall_status across smoke
- integration + design-coverage categories):