Skip to documentation
ScrumPulseDocumentation
v2.0 docsSign in
Developers

Testing and contributing

Run the repository’s validation suites and make additive changes without weakening safety controls.

Last updated August 7, 2026

Backend and engine tests#

From the repository root:

python3 -m compileall -q dashboard execution scripts
python3 -m pytest execution dashboard/api -q

Run a focused test file while developing, then run the full suite before opening a pull request.

Dashboard checks#

cd dashboard/web
npm ci
npm run lint
npx tsc --noEmit
npm run build

The repository also defines Cypress end-to-end tests:

npm run cypress:run

End-to-end tests may require Clerk or the test-only auth bypass plus a reachable API. Report skipped tests separately from passed tests.

Production readiness#

python scripts/check_production_readiness.py --strict

Run this with placeholder-free deployment variables in a secure environment. Do not print secret values in CI logs.

Contribution rules#

The repository governance favors additive changes and treats board writes, Jira synchronization, backlog creation, state mapping, environment loading, and automation workflows as protected areas.

Before changing protected behavior:

  1. Reproduce the verified bug or define the approved feature.
  2. Preserve existing scripts, environment contracts, and UI behavior when possible.
  3. Add or update tests for the safety boundary.
  4. Keep dry-run as the default.
  5. Document new variables and operator steps.
  6. Record findings, risks, no-change boundaries, and confidence in agent-reports/.

Update documentation#

Articles live in dashboard/web/content/docs/. Add a Markdown file with this frontmatter:

---
title: Article title
description: One sentence used in search and metadata.
section: User guides
order: 60
updated: August 7, 2026
---

Use a supported section name, start article sections at ##, use exact UI labels, and run the dashboard build. Navigation, search indexing, article metadata, breadcrumbs, and previous/next links are generated from the content.