Document owner: Qeetoto Limited Last reviewed: March 2026 Version: 1.0 Classification: Internal
This document describes the Software Development Lifecycle (SDLC) controls in place for the ConsentWise platform (consentwise.io). It is intended to provide evidence of a controlled, auditable development process aligned with the requirements of:
The scope covers all changes to the ConsentWise Jekyll website hosted on GitHub Pages, managed within the GitHub repository texashedgeem/consentwise.
All changes follow a linear, gated lifecycle:
Backlog (Jira)
↓
Feature branch created
↓
Development with commit traceability
↓
Pre-commit hook validation
↓
Pull request opened
↓
Automated CI tests (Playwright)
↓
Peer review and approval
↓
Merge to main
↓
Automated release and deployment (GitHub Pages)
↓
Release notes generated
No change reaches production without passing every gate.
All development work is tracked in Jira (project: CWPD, instance: open-banking.atlassian.net).
| Level | Type | Purpose |
|---|---|---|
| 1 | Initiative | Business objective grouping multiple epics |
| 2 | Epic | A cohesive deliverable within an initiative |
| 3 | Story | A single unit of work, completable in one branch/PR |
Every commit references its Jira story ticket using the enforced commit format (see Section 5). This creates a bidirectional audit trail:
| Branch | Purpose | Direct commits allowed? |
|---|---|---|
main |
Production-ready code, auto-deployed to GitHub Pages | No — protected |
feature/CWPD-NNN-* |
One branch per Jira story | Yes |
Branch protection rules on main:
All commits must follow the Conventional Commits specification with mandatory Jira ticket reference:
TYPE(CWPD-NNN): short description
Valid types: feat |
fix |
docs |
test |
ci |
chore |
style |
refactor |
This format is automatically enforced by the pre-commit hook at .githooks/commit-msg. Non-compliant commits are rejected at the point of commit, before code can reach the remote repository.
The hook must be activated on each clone: git config core.hooksPath .githooks (documented in CONTRIBUTING.md).
Functional tests are written using Playwright and reside in tests/e2e/. Tests run in headless Chromium against the Jekyll development server.
| Command | Purpose |
|---|---|
npm test |
Run full test suite |
npm run test:report |
Open HTML test report |
Tests run automatically on every pull request via GitHub Actions (.github/workflows/ci.yml). The pipeline:
A PR cannot be merged if CI is failing.
Tests validate functional behaviour of key user-facing pages. New pages and features require accompanying tests before a story can be considered complete.
All changes require a peer review via GitHub pull request before merging to main.
| Control | Implementation |
|---|---|
| Minimum reviewers | 1 approving review required |
| Self-approval | Not permitted — PR authors cannot approve their own PRs (GitHub platform control) |
| Stale review dismissal | Approvals are dismissed if new commits are pushed after approval |
| Review scope | Reviewer is responsible for verifying code correctness, security, and adherence to standards |
Deployment is continuous and automatic:
main triggers a GitHub Pages deploymentEvery merge to main triggers the release workflow (.github/workflows/release.yml), which automatically:
feat commits → minor version bump (e.g. v1.1.0 → v1.2.0)CWPD-NNN reference to the corresponding Jira storyThis provides a complete, immutable record of every production release, linking business requirements (Jira) to the technical changes delivered.
The table below maps implemented controls to relevant framework requirements.
| Control | Implementation | ISO 27001:2022 | SOC 1 | DORA |
|---|---|---|---|---|
| Work item tracking | Jira CWPD project | A.8.32 | CC8.1 | Art. 11 |
| Commit traceability | Conventional commits + pre-commit hook | A.8.32 | CC8.1 | Art. 11 |
| Branch protection | GitHub branch protection on main |
A.8.32 | CC8.1 | Art. 11 |
| Automated testing | Playwright via GitHub Actions CI | A.8.29 | CC8.1 | Art. 25 |
| Peer review | PR approval required, no self-approval | A.8.32 | CC8.1 | Art. 11 |
| Automated deployment | GitHub Pages on merge to main | A.8.32 | CC4.2 | Art. 11 |
| Release audit trail | GitHub Releases with Jira links | A.8.32 | CC8.1 | Art. 11 |
| Documented procedures | CONTRIBUTING.md, SDLC.md | A.5.37 | CC2.2 | Art. 11 |
| Version | Date | Author | Changes |
|---|---|---|---|
| 1.0 | March 2026 | Qeetoto Limited | Initial release |