@metasession.co/devaudit-cli 0.3.12 → 0.3.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/index.js +53 -4
  2. package/dist/index.js.map +1 -1
  3. package/package.json +2 -2
  4. package/scripts/upload-evidence.sh +55 -1
  5. package/sdlc/files/_common/0-project-setup.md +10 -4
  6. package/sdlc/files/_common/Periodic_Security_Review_Schedule.md +5 -5
  7. package/sdlc/files/_common/README_TEMPLATE.md +8 -8
  8. package/sdlc/files/_common/Test_Architecture.md +15 -15
  9. package/sdlc/files/_common/Test_Plan_TEMPLATE.md +13 -13
  10. package/sdlc/files/_common/Test_Policy.md +2 -2
  11. package/sdlc/files/_common/Test_Strategy.md +10 -10
  12. package/sdlc/files/_common/governance/ai-disclosure.md.template +3 -3
  13. package/sdlc/files/_common/governance/dpia.md.template +3 -3
  14. package/sdlc/files/_common/governance/incident-report.md.template +3 -3
  15. package/sdlc/files/_common/governance/nil-incident-report.md.template +1 -1
  16. package/sdlc/files/_common/governance/periodic-review.md.template +3 -3
  17. package/sdlc/files/_common/governance/risk-register.md.template +1 -1
  18. package/sdlc/files/_common/governance/ropa.md.template +2 -2
  19. package/sdlc/files/_common/joining-an-existing-project.md +4 -4
  20. package/sdlc/files/_common/scripts/check-host-deployment.sh +107 -0
  21. package/sdlc/files/_common/scripts/check-host-deployment.test.sh +119 -0
  22. package/sdlc/files/_common/scripts/check-release-pr-scope.sh +95 -0
  23. package/sdlc/files/_common/scripts/check-release-pr-scope.test.sh +137 -0
  24. package/sdlc/files/_common/scripts/close-out-release.sh +175 -54
  25. package/sdlc/files/_common/scripts/close-out-release.test.sh +90 -0
  26. package/sdlc/files/_common/scripts/extract-release-metadata.sh +27 -0
  27. package/sdlc/files/_common/scripts/extract-release-metadata.test.sh +13 -1
  28. package/sdlc/files/_common/scripts/generate-bundled-changes.sh +311 -64
  29. package/sdlc/files/_common/scripts/generate-bundled-changes.test.sh +133 -82
  30. package/sdlc/files/_common/scripts/generate-housekeeping-release-ticket.sh +18 -9
  31. package/sdlc/files/_common/scripts/generate-housekeeping-release-ticket.test.sh +66 -0
  32. package/sdlc/files/_common/scripts/generate-security-summary.sh +14 -5
  33. package/sdlc/files/_common/scripts/generate-security-summary.test.sh +57 -0
  34. package/sdlc/files/_common/scripts/prepare-release-pr.sh +44 -4
  35. package/sdlc/files/_common/scripts/render-test-cycles.sh +227 -0
  36. package/sdlc/files/_common/scripts/render-test-cycles.test.sh +107 -0
  37. package/sdlc/files/_common/scripts/report-release-check.sh +86 -0
  38. package/sdlc/files/_common/scripts/report-release-check.test.sh +97 -0
  39. package/sdlc/files/_common/scripts/report-test-cycle.sh +344 -0
  40. package/sdlc/files/_common/scripts/submit-bundle-manifest.sh +100 -0
  41. package/sdlc/files/_common/scripts/submit-bundle-manifest.test.sh +138 -0
  42. package/sdlc/files/_common/scripts/upload-evidence.sh +24 -0
  43. package/sdlc/files/_common/scripts/validate-compliance-artifacts.sh +16 -0
  44. package/sdlc/files/_common/scripts/validate-compliance-artifacts.test.sh +14 -0
  45. package/sdlc/files/_common/scripts/validate-test-summary.test.sh +4 -4
  46. package/sdlc/files/_common/skills/adr-author/SKILL.md +2 -2
  47. package/sdlc/files/_common/skills/e2e-test-engineer/SKILL.md +2 -2
  48. package/sdlc/files/_common/skills/e2e-test-engineer/references/bootstrap.md +5 -5
  49. package/sdlc/files/_common/skills/governance-doc-author/references/incident-classification.md +1 -1
  50. package/sdlc/files/_common/skills/requirements-aligner/SKILL.md +4 -4
  51. package/sdlc/files/_common/skills/sdlc-implementer/SKILL.md +21 -2
  52. package/sdlc/files/_common/skills/sdlc-implementer/references/change-request-loop.md +1 -1
  53. package/sdlc/files/_common/skills/sdlc-implementer/references/compliance-constraints.md +7 -14
  54. package/sdlc/files/ci/ci.yml.template +119 -28
  55. package/sdlc/files/ci/close-out-release.yml.template +7 -4
  56. package/sdlc/files/ci/compliance-evidence.yml.template +230 -20
  57. package/sdlc/files/ci/feature-e2e.yml.template +84 -1
  58. package/sdlc/files/ci/post-deploy-prod.yml.template +189 -6
  59. package/sdlc/files/ci/python/ci.yml.template +60 -12
  60. package/sdlc/files/ci/quality-gates-provenance.yml.template +123 -28
  61. package/sdlc/package.json +1 -1
  62. package/sdlc/src/bin/devaudit-sdlc.js +44 -2
  63. package/sdlc/src/blueprints/1-plan-requirement.raw.md +6 -1
  64. package/sdlc/src/blueprints/2-implement-and-test.raw.md +1 -1
  65. package/sdlc/src/blueprints/3-compile-evidence.raw.md +34 -20
  66. package/sdlc/src/blueprints/4-submit-for-review.raw.md +2 -2
  67. package/sdlc/src/blueprints/5-deploy-main.raw.md +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@metasession.co/devaudit-cli",
3
- "version": "0.3.12",
3
+ "version": "0.3.14",
4
4
  "description": "DevAudit CLI — installs, syncs, and operates the Metasession SDLC across consumer projects.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -33,7 +33,7 @@
33
33
  },
34
34
  "dependencies": {
35
35
  "@clack/prompts": "^0.8.2",
36
- "@metasession.co/devaudit-plugin-sdk": "^0.3.12",
36
+ "@metasession.co/devaudit-plugin-sdk": "^0.3.14",
37
37
  "ajv": "^8.20.0",
38
38
  "commander": "^12.1.0",
39
39
  "consola": "^3.2.3",
@@ -47,6 +47,14 @@
47
47
  # portal group evidence by test cycle per
48
48
  # ISO/IEC/IEEE 29119-3. Optional — older
49
49
  # portals ignore the field (no error).
50
+ # --evidence-scope <scope> Evidence ownership scope: release | stage |
51
+ # cycle | approval. Forwarded as
52
+ # `evidenceScope`; optional and ignored by
53
+ # older portals.
54
+ # --test-cycle-record-id <id> First-class portal cycle UUID. Requires
55
+ # `--evidence-scope cycle`. Forwarded as
56
+ # `testCycleRecordId`; preserved alongside
57
+ # legacy `--test-cycle` during dual-write.
50
58
  #
51
59
  # Required environment variables:
52
60
  # DEVAUDIT_BASE_URL e.g. https://meta-comply-production.up.railway.app
@@ -98,6 +106,10 @@ CHANGE_TYPE=""
98
106
  GATE_STATUS=""
99
107
  SDLC_STAGE=""
100
108
  TEST_CYCLE=""
109
+ EVIDENCE_SCOPE=""
110
+ TEST_CYCLE_RECORD_ID=""
111
+ SENTINEL_CONTENT=""
112
+ COMMIT_TIMESTAMP=""
101
113
  # Repeatable `--meta-key key=value` accumulator. Each pair gets merged
102
114
  # into the metadata JSON sent to the portal. Used by the screenshot
103
115
  # upload loop to pass `origin=feature|regression` from the per-PNG
@@ -125,6 +137,8 @@ while [ "$#" -gt 0 ]; do
125
137
  --gate-status) GATE_STATUS="$2"; shift 2 ;;
126
138
  --sdlc-stage) SDLC_STAGE="$2"; shift 2 ;;
127
139
  --test-cycle) TEST_CYCLE="$2"; shift 2 ;;
140
+ --evidence-scope) EVIDENCE_SCOPE="$2"; shift 2 ;;
141
+ --test-cycle-record-id) TEST_CYCLE_RECORD_ID="$2"; shift 2 ;;
128
142
  # --meta-key key=value (repeatable). Merged into the metadata JSON
129
143
  # before posting. Validates the `key=value` shape; rejects bare
130
144
  # keys without `=`.
@@ -152,6 +166,14 @@ if [ -n "$SDLC_STAGE" ] && ! [[ "$SDLC_STAGE" =~ ^[1-5]$ ]]; then
152
166
  echo "Error: --sdlc-stage must be an integer 1-5 (got: $SDLC_STAGE)"
153
167
  exit 1
154
168
  fi
169
+ if [ -n "$EVIDENCE_SCOPE" ] && ! [[ "$EVIDENCE_SCOPE" =~ ^(release|stage|cycle|approval)$ ]]; then
170
+ echo "Error: --evidence-scope must be one of: release, stage, cycle, approval"
171
+ exit 1
172
+ fi
173
+ if [ -n "$TEST_CYCLE_RECORD_ID" ] && [ "$EVIDENCE_SCOPE" != "cycle" ]; then
174
+ echo "Error: --test-cycle-record-id requires --evidence-scope cycle"
175
+ exit 1
176
+ fi
155
177
 
156
178
  if [ -z "${DEVAUDIT_BASE_URL:-}" ]; then
157
179
  echo "Error: DEVAUDIT_BASE_URL environment variable is required"
@@ -202,6 +224,28 @@ probe_base_url_drift() {
202
224
  }
203
225
  probe_base_url_drift
204
226
 
227
+ is_tracked_change_type() {
228
+ case "${1:-}" in
229
+ feat|fix|refactor|perf|compliance|revert) return 0 ;;
230
+ *) return 1 ;;
231
+ esac
232
+ }
233
+
234
+ resolve_sentinel_context() {
235
+ if ! is_tracked_change_type "$CHANGE_TYPE"; then
236
+ return 0
237
+ fi
238
+ if [ -f ".sdlc-implementer-invoked" ]; then
239
+ SENTINEL_CONTENT=$(cat .sdlc-implementer-invoked)
240
+ fi
241
+ local git_target="HEAD"
242
+ if [ -n "$GIT_SHA" ]; then
243
+ git_target="$GIT_SHA"
244
+ fi
245
+ COMMIT_TIMESTAMP=$(git show -s --format=%cI "$git_target" 2>/dev/null || true)
246
+ }
247
+ resolve_sentinel_context
248
+
205
249
  # --- Build metadata JSON ---
206
250
  # Assemble entries first; only emit `{ ... }` if at least one field is
207
251
  # set. Each entry is a `"key":"value"` JSON pair with the value
@@ -213,6 +257,7 @@ META_ENTRIES=()
213
257
  [ -n "$GIT_SHA" ] && META_ENTRIES+=("\"gitSha\":\"$(json_escape "$GIT_SHA")\"")
214
258
  [ -n "$CI_RUN_ID" ] && META_ENTRIES+=("\"ciRunId\":\"$(json_escape "$CI_RUN_ID")\"")
215
259
  [ -n "$BRANCH" ] && META_ENTRIES+=("\"branch\":\"$(json_escape "$BRANCH")\"")
260
+ [ -n "$COMMIT_TIMESTAMP" ] && META_ENTRIES+=("\"commitTimestamp\":\"$(json_escape "$COMMIT_TIMESTAMP")\"")
216
261
  for KV in "${META_KEYS[@]}"; do
217
262
  KEY="${KV%%=*}"
218
263
  VAL="${KV#*=}"
@@ -337,8 +382,13 @@ upload_presigned() {
337
382
  \"evidenceCategory\": \"${EVIDENCE_CATEGORY}\",
338
383
  \"releaseTitle\": \"${RELEASE_TITLE}\",
339
384
  \"releaseSummary\": \"${RELEASE_SUMMARY}\",
385
+ \"changeType\": \"${CHANGE_TYPE}\",
340
386
  \"sdlcStage\": \"${SDLC_STAGE}\",
341
- \"testCycleId\": \"${TEST_CYCLE}\"
387
+ \"testCycleId\": \"${TEST_CYCLE}\",
388
+ \"evidenceScope\": \"${EVIDENCE_SCOPE}\",
389
+ \"testCycleRecordId\": \"${TEST_CYCLE_RECORD_ID}\",
390
+ \"sentinelContent\": $(jq -Rn --arg v "$SENTINEL_CONTENT" '$v'),
391
+ \"commitTimestamp\": \"${COMMIT_TIMESTAMP}\"
342
392
  }") || curl_exit=$?
343
393
  curl_exit=${curl_exit:-0}
344
394
  if [ "$curl_exit" -eq 0 ] && [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then
@@ -503,6 +553,10 @@ for FILE in "${FILES[@]}"; do
503
553
  [ -n "$GATE_STATUS" ] && CURL_ARGS+=(-F "gateStatus=${GATE_STATUS}")
504
554
  [ -n "$SDLC_STAGE" ] && CURL_ARGS+=(-F "sdlcStage=${SDLC_STAGE}")
505
555
  [ -n "$TEST_CYCLE" ] && CURL_ARGS+=(-F "testCycleId=${TEST_CYCLE}")
556
+ [ -n "$EVIDENCE_SCOPE" ] && CURL_ARGS+=(-F "evidenceScope=${EVIDENCE_SCOPE}")
557
+ [ -n "$TEST_CYCLE_RECORD_ID" ] && CURL_ARGS+=(-F "testCycleRecordId=${TEST_CYCLE_RECORD_ID}")
558
+ [ -n "$SENTINEL_CONTENT" ] && CURL_ARGS+=(-F "sentinelContent=${SENTINEL_CONTENT}")
559
+ [ -n "$COMMIT_TIMESTAMP" ] && CURL_ARGS+=(-F "commitTimestamp=${COMMIT_TIMESTAMP}")
506
560
 
507
561
  ATTEMPT=1
508
562
  BACKOFF=$INITIAL_BACKOFF_SECONDS
@@ -108,12 +108,12 @@ cat > compliance/RTM.md << 'EOF'
108
108
  ## Part A: Baseline Requirements
109
109
 
110
110
  | ID | Requirement | Source | Status |
111
- |---|---|---|---|
111
+ | --- | --- | --- | --- |
112
112
 
113
113
  ## Part B: Change Request Traceability
114
114
 
115
115
  | REQ-ID | Issue | Risk | Evidence | Status | PR | Reviewer | AI-tool |
116
- |--------|-------|------|----------|--------|-----|----------|---------|
116
+ | -------- | ------- | ------ | ---------- | -------- | ----- | ---------- | --------- |
117
117
  EOF
118
118
 
119
119
  # Commit
@@ -122,6 +122,12 @@ git commit -m "compliance: initialize compliance directory structure"
122
122
  git push origin develop
123
123
  ```
124
124
 
125
+ If any RTM or release-evidence table cell needs literal pipe characters, escape
126
+ them as `\|` rather than writing bare `|`. Typical cases are regexes
127
+ (`stop\|unsubscribe\|opt-out`) and enum examples
128
+ (`open\|in_progress\|closed`). Bare pipes inside a markdown table cell are read
129
+ as extra columns and trigger false-positive MD056/MD060 lint errors.
130
+
125
131
  ---
126
132
 
127
133
  ## Step 4: CI Pipeline Configuration
@@ -131,7 +137,7 @@ This is the **independent verification gate**. Tests run locally during developm
131
137
  ### What CI Must Run
132
138
 
133
139
  | Pipeline | Trigger | Jobs | Purpose |
134
- |---|---|---|---|
140
+ | --- | --- | --- | --- |
135
141
  | CI | Push to `develop` | TypeScript + SAST + dependency audit + E2E + build | Quality gates + independent verification |
136
142
  | Deploy | Merge to `main` | Auto-deploy to hosting platform | Production release |
137
143
 
@@ -389,7 +395,7 @@ If any step fails, fix the configuration before starting real work.
389
395
  ## Setup Checklist
390
396
 
391
397
  | Step | Status |
392
- |---|---|
398
+ | --- | --- |
393
399
  | Repository created | [ ] |
394
400
  | `develop` branch created | [ ] |
395
401
  | Production environment configured (auto-deploy from `main`) | [ ] |
@@ -21,7 +21,7 @@ This schedule applies to all Metasession products and client engagements. Projec
21
21
  ## Schedule Overview
22
22
 
23
23
  | Activity | Frequency | Owner | Evidence Location |
24
- |---|---|---|---|
24
+ | --- | --- | --- | --- |
25
25
  | Full codebase SAST review | Quarterly | QA / Security Lead | `compliance/evidence/periodic/sast-quarterly/` |
26
26
  | Dependency deep audit | Quarterly | QA / Security Lead | `compliance/evidence/periodic/dependency-audit/` |
27
27
  | Access control review | Quarterly | QA / Security Lead | `compliance/evidence/periodic/access-control/` |
@@ -103,7 +103,7 @@ This schedule applies to all Metasession products and client engagements. Projec
103
103
  **Remediation SLAs:**
104
104
 
105
105
  | Severity | Deadline |
106
- |---|---|
106
+ | --- | --- |
107
107
  | Critical | 7 days |
108
108
  | High | 30 days |
109
109
  | Medium | 90 days |
@@ -133,7 +133,7 @@ RTO and RPO targets are defined per project in their Test Plans.
133
133
  ## Unscheduled Triggers
134
134
 
135
135
  | Event | Triggered Activity |
136
- |---|---|
136
+ | --- | --- |
137
137
  | Security incident or breach | Full SAST + pen test + access control review |
138
138
  | Critical CVE in direct dependency | Immediate audit + patch |
139
139
  | Significant architecture change | Access control review + SAST |
@@ -146,7 +146,7 @@ RTO and RPO targets are defined per project in their Test Plans.
146
146
  ## Compliance Framework Mapping
147
147
 
148
148
  | Framework | Control | Covered By |
149
- |---|---|---|
149
+ | --- | --- | --- |
150
150
  | SOC 2 (CC7.1) | System monitoring | Quarterly SAST + audit log review |
151
151
  | SOC 2 (CC6.1) | Logical access | Quarterly access control review |
152
152
  | SOC 2 (CC8.1) | Change management | Per-feature pipeline + quarterly reviews |
@@ -160,7 +160,7 @@ RTO and RPO targets are defined per project in their Test Plans.
160
160
  ## Document Control
161
161
 
162
162
  | Version | Date | Author | Changes |
163
- |---|---|---|---|
163
+ | --- | --- | --- | --- |
164
164
  | 1.0 | March 2026 | Engineering Leadership | Initial schedule |
165
165
  | 1.1 | March 2026 | Engineering Leadership | Updated document references for clean boundary split |
166
166
 
@@ -9,7 +9,7 @@
9
9
  ### Tier 1 — Universal (Metasession-wide)
10
10
 
11
11
  | Document | Owns |
12
- |----------|------|
12
+ | ---------- | ------ |
13
13
  | **Test Policy** | Why we test, commitments, AI governance, roles, accountability |
14
14
  | **Test Strategy** | How we approach testing — methodology, risk classification, security, AI protocol |
15
15
  | **Test Architecture** | What we build with — tools, patterns, code standards, CI config |
@@ -18,7 +18,7 @@
18
18
  ### Tier 2 — Project-Specific
19
19
 
20
20
  | Document | Purpose |
21
- |----------|---------|
21
+ | ---------- | --------- |
22
22
  | **Project Setup** | One-time: repository, CI, compliance configuration |
23
23
  | **Test Plan** | Environment, test suites, exit criteria, AI config, evidence |
24
24
  | **Workflows 0-5** | Operational pipeline procedures |
@@ -43,7 +43,7 @@
43
43
  ## Quick Reference
44
44
 
45
45
  | Scenario | Workflows |
46
- |----------|-----------|
46
+ | ---------- | ----------- |
47
47
  | New project setup | 0 (once) |
48
48
  | New feature (tracked) | 1 → 2 → 3 → 4 → (CI + review) → 5 |
49
49
  | Bug fix / docs / config | 2 → 4 → (CI + review) → 5 |
@@ -51,7 +51,7 @@
51
51
  ## Mandatory Gates
52
52
 
53
53
  | Gate | Local | CI (PR) | Threshold |
54
- |------|-------|---------|-----------|
54
+ | ------ | ------- | --------- | ----------- |
55
55
  | TypeScript | Yes | Yes | 0 errors |
56
56
  | SAST | Yes | Yes | 0 high/critical |
57
57
  | Dependencies | Yes | Yes | 0 high/critical |
@@ -61,7 +61,7 @@
61
61
  ## Risk Levels
62
62
 
63
63
  | Level | Extra Requirements |
64
- |-------|-------------------|
64
+ | ------- | ------------------- |
65
65
  | Low | Standard gates |
66
66
  | Medium | + access control + audit log testing |
67
67
  | High | + pen test consideration + independent review |
@@ -71,7 +71,7 @@ AI in Medium/High categories raises risk one level.
71
71
  ## CI/CD
72
72
 
73
73
  | Trigger | What Runs |
74
- |---------|-----------|
74
+ | --------- | ----------- |
75
75
  | Push to `develop` | TypeScript + build |
76
76
  | PR to `main` | TypeScript + SAST + deps + E2E (unauthenticated) |
77
77
  | Merge to `main` | Auto-deploy |
@@ -289,7 +289,7 @@ DevAudit is the centralised compliance evidence portal for all Metasession proje
289
289
  Evidence artifacts are uploaded to DevAudit instead of being committed to git.
290
290
 
291
291
  | Before (git-based) | After (DevAudit) |
292
- |---------------------|---------------------|
292
+ | --------------------- | --------------------- |
293
293
  | `cp e2e-results.json compliance/evidence/REQ-XXX/` | CLI script or CI uploads to DevAudit |
294
294
  | `git add compliance/evidence/REQ-XXX/` | Binary artifacts excluded via `.gitignore` |
295
295
  | Evidence only visible to repo collaborators | Evidence visible to anyone with an access grant |
@@ -428,7 +428,7 @@ For one-off reviews, generate a time-limited share link instead of creating an a
428
428
  Add these to your GitHub repository (Settings → Secrets and variables → Actions):
429
429
 
430
430
  | Setting | Tab | Value | Source |
431
- |--------|-----|-------|--------|
431
+ | -------- | ----- | ------- | -------- |
432
432
  | `DEVAUDIT_BASE_URL` | Variables | The deployed DevAudit URL, e.g. `https://devaudit.metasession.co` | The hosting team |
433
433
  | `DEVAUDIT_API_KEY` | Secrets | Project-scoped API key (`mc_…`) with `uploader` role | DevAudit → Project Settings → API Keys → New key |
434
434
 
@@ -54,7 +54,7 @@ These standards apply to all Metasession products, client engagements, and inter
54
54
  ### Unit Layer (Foundation)
55
55
 
56
56
  | Attribute | Standard |
57
- |---|---|
57
+ | --- | --- |
58
58
  | Coverage | Minimum 70% for critical modules |
59
59
  | Speed | Suite completes in < 30 seconds |
60
60
  | Scope | Individual functions, methods, components in isolation |
@@ -63,7 +63,7 @@ These standards apply to all Metasession products, client engagements, and inter
63
63
  ### Integration Layer (Middle)
64
64
 
65
65
  | Attribute | Standard |
66
- |---|---|
66
+ | --- | --- |
67
67
  | Coverage | Minimum 80% of integration points |
68
68
  | Scope | Component interactions, service integrations, API contracts |
69
69
  | Data | In-memory databases or MSW for API mocking |
@@ -71,7 +71,7 @@ These standards apply to all Metasession products, client engagements, and inter
71
71
  ### E2E Layer (Top)
72
72
 
73
73
  | Attribute | Standard |
74
- |---|---|
74
+ | --- | --- |
75
75
  | Coverage | 100% of critical user paths |
76
76
  | Scope | Complete user journeys from UI to database |
77
77
  | Browser support | Chromium, Firefox, WebKit |
@@ -80,7 +80,7 @@ These standards apply to all Metasession products, client engagements, and inter
80
80
  ### Additional Layers
81
81
 
82
82
  | Layer | Standard |
83
- |---|---|
83
+ | --- | --- |
84
84
  | Security | SAST, SCA, DAST (see Section 3) |
85
85
  | Performance | Load and stress testing before major releases |
86
86
  | Accessibility | WCAG 2.1 AA for public-facing features |
@@ -93,7 +93,7 @@ These standards apply to all Metasession products, client engagements, and inter
93
93
  ### Test Frameworks
94
94
 
95
95
  | Purpose | Tool | Notes |
96
- |---|---|---|
96
+ | --- | --- | --- |
97
97
  | Unit testing (TS/JS) | Jest or Vitest | Project chooses one |
98
98
  | Unit testing (Python) | pytest | |
99
99
  | Component testing | React Testing Library | |
@@ -105,7 +105,7 @@ These standards apply to all Metasession products, client engagements, and inter
105
105
  ### Test Management
106
106
 
107
107
  | Purpose | Tool |
108
- |---|---|
108
+ | --- | --- |
109
109
  | Test case management | Qase |
110
110
  | CI/CD | GitHub Actions |
111
111
  | Reporting | Playwright HTML Reporter, JUnit XML |
@@ -113,7 +113,7 @@ These standards apply to all Metasession products, client engagements, and inter
113
113
  ### Security Testing
114
114
 
115
115
  | Purpose | Tool | When |
116
- |---|---|---|
116
+ | --- | --- | --- |
117
117
  | SAST (static analysis) | Semgrep and/or SonarQube | Every commit |
118
118
  | SCA (dependency scanning) | Snyk | Every commit |
119
119
  | Dependency updates | Dependabot | Continuous |
@@ -123,14 +123,14 @@ These standards apply to all Metasession products, client engagements, and inter
123
123
  ### Performance Testing
124
124
 
125
125
  | Purpose | Tool |
126
- |---|---|
126
+ | --- | --- |
127
127
  | Load testing | Artillery |
128
128
  | Web performance | Lighthouse |
129
129
 
130
130
  ### Development Tooling
131
131
 
132
132
  | Purpose | Tool |
133
- |---|---|
133
+ | --- | --- |
134
134
  | Git hooks | Husky |
135
135
  | Commit linting | commitlint (Conventional Commits) |
136
136
  | Code linting | ESLint |
@@ -200,7 +200,7 @@ Products must implement:
200
200
  ### Strategy by Test Level
201
201
 
202
202
  | Test Level | Data Strategy | Rationale |
203
- |---|---|---|
203
+ | --- | --- | --- |
204
204
  | Unit | Mocked data | Fast, predictable |
205
205
  | Integration | In-memory DB or MSW | Isolated, controlled |
206
206
  | E2E (local) | Test database (Docker) | Real behavior, containerized |
@@ -230,7 +230,7 @@ Products must implement:
230
230
  All products implement these stages in order:
231
231
 
232
232
  | Stage | Purpose | Exit Criteria |
233
- |---|---|---|
233
+ | --- | --- | --- |
234
234
  | 1. Lint | ESLint + Prettier validation | 0 errors |
235
235
  | 2. Type Check | Strict compilation | 0 errors |
236
236
  | 3. Unit Tests | Component-level testing with coverage | Meets coverage target |
@@ -290,7 +290,7 @@ npm pkg set scripts.prepare="husky"
290
290
  ## 8. Artifact Storage
291
291
 
292
292
  | Artifact | Storage | Retention |
293
- |---|---|---|
293
+ | --- | --- | --- |
294
294
  | Test results (HTML) | GitHub Actions artifacts | 90 days |
295
295
  | Screenshots | GitHub Actions artifacts | 90 days |
296
296
  | Videos | GitHub Actions artifacts | 90 days |
@@ -315,7 +315,7 @@ npm pkg set scripts.prepare="husky"
315
315
  ### Naming Conventions
316
316
 
317
317
  | File Type | Pattern | Example |
318
- |---|---|---|
318
+ | --- | --- | --- |
319
319
  | Unit tests | `*.test.ts`, `*.test.tsx` | `auth.test.ts` |
320
320
  | Integration tests | `*.integration.test.ts` | `api.integration.test.ts` |
321
321
  | E2E tests | `*.spec.ts` | `login.spec.ts` |
@@ -410,7 +410,7 @@ module.exports = {
410
410
  ## 11. Coverage & Quality Thresholds
411
411
 
412
412
  | Metric | Target |
413
- |---|---|
413
+ | --- | --- |
414
414
  | Unit test coverage (critical modules) | 70% minimum |
415
415
  | Integration point coverage | 80% minimum |
416
416
  | Critical user path E2E coverage | 100% |
@@ -448,7 +448,7 @@ Each product creates a product-specific Test Plan that:
448
448
  ## Document Control
449
449
 
450
450
  | Version | Date | Author | Changes |
451
- |---|---|---|---|
451
+ | --- | --- | --- | --- |
452
452
  | 1.0 | January 2026 | QA Team | Initial creation |
453
453
  | 2.0 | March 2026 | QA Team | Clean boundary split — removed compliance/governance content (now in Policy), removed methodology content (now in Strategy). Architecture now owns tools, patterns, code standards, CI config only. Added security tooling table. |
454
454
 
@@ -21,7 +21,7 @@ For tools, patterns, and code standards: Test Architecture.
21
21
  ## Project Overview
22
22
 
23
23
  | Attribute | Value |
24
- |---|---|
24
+ | --- | --- |
25
25
  | Application | [PROJECT NAME — brief description] |
26
26
  | Stack | [e.g., TypeScript, Next.js, MongoDB, Socket.IO] |
27
27
  | Hosting | [e.g., Railway, Vercel, AWS] (auto-deploy from `main`) |
@@ -48,7 +48,7 @@ Develop-main with develop branch (per Test Strategy branching patterns):
48
48
  ### E2E Tests (Playwright)
49
49
 
50
50
  | Attribute | Value |
51
- |---|---|
51
+ | --- | --- |
52
52
  | Framework | Playwright (per Test Architecture standard) |
53
53
  | Test count | [TOTAL] tests across [N] projects |
54
54
  | Unauthenticated (CI) | [COUNT] (run in CI on PR to main) |
@@ -59,7 +59,7 @@ Develop-main with develop branch (per Test Strategy branching patterns):
59
59
  ### Unit Tests
60
60
 
61
61
  | Attribute | Value |
62
- |---|---|
62
+ | --- | --- |
63
63
  | Framework | [Jest / Vitest] |
64
64
  | Coverage target | 70% for critical modules |
65
65
  | Run command | [e.g., npx vitest run] |
@@ -73,7 +73,7 @@ npx tsc --noEmit # 0 errors required
73
73
  ### SAST Scanning
74
74
 
75
75
  | Attribute | Value |
76
- |---|---|
76
+ | --- | --- |
77
77
  | Tool | Semgrep (per Test Architecture) |
78
78
  | Config | auto |
79
79
  | Scan scope | [e.g., src/] |
@@ -103,7 +103,7 @@ npm audit --audit-level=high
103
103
  ### Exit (Before PR)
104
104
 
105
105
  | Gate | Local | CI (PR) | Threshold |
106
- |---|---|---|---|
106
+ | --- | --- | --- | --- |
107
107
  | TypeScript | Yes | Yes | 0 errors |
108
108
  | SAST (high/critical) | Yes | Yes | 0 findings |
109
109
  | Dependencies (high/critical) | Yes | Yes | 0 vulnerabilities |
@@ -114,7 +114,7 @@ npm audit --audit-level=high
114
114
  Additional for Medium/High risk (per Test Strategy risk matrix):
115
115
 
116
116
  | Gate | Threshold |
117
- |---|---|
117
+ | --- | --- |
118
118
  | Access control tests | RBAC endpoints return correct 401/403 |
119
119
  | Audit log tests | Auditable actions produce log entries |
120
120
 
@@ -125,7 +125,7 @@ Additional for Medium/High risk (per Test Strategy risk matrix):
125
125
  ### Pipeline Configuration
126
126
 
127
127
  | Trigger | What Runs | Independent Evidence |
128
- |---|---|---|
128
+ | --- | --- | --- |
129
129
  | Push to `develop` | TypeScript check + build | Compilation clean |
130
130
  | PR to `main` | TypeScript + SAST + dependency audit + E2E (unauthenticated) | All gates independently verified by GitHub |
131
131
  | Merge to `main` | Auto-deploy to hosting platform | Deployment triggered |
@@ -159,13 +159,13 @@ Both required. Local proves comprehensive testing. CI proves it independently.
159
159
  Per Test Policy AI governance:
160
160
 
161
161
  | Tool | Permitted Use |
162
- |---|---|
162
+ | --- | --- |
163
163
  | [e.g., Claude (Anthropic) — Opus 4.6, Sonnet 4.6] | [e.g., Code generation, test generation, documentation, review] |
164
164
 
165
165
  Documentation requirements (per Test Strategy AI methodology):
166
166
 
167
167
  | Risk | Commit | Evidence | Prompts |
168
- |---|---|---|---|
168
+ | --- | --- | --- | --- |
169
169
  | Low | `Co-Authored-By` tag | Not required | Not required |
170
170
  | Medium | Same | Summary in evidence dir | Summary |
171
171
  | High | Same | Detailed record | Detailed |
@@ -224,7 +224,7 @@ compliance/
224
224
  Every tracked requirement gets a `test-scope.md` created during the PLAN stage **before implementation**. Scope scales with risk:
225
225
 
226
226
  | Risk | Content |
227
- |---|---|
227
+ | --- | --- |
228
228
  | Low | Standard gates + acceptance criteria. A few lines. |
229
229
  | Medium | Above + targeted testing (access control, audit logging, dependency review), validation approach. Half a page. |
230
230
  | High | Above + security testing detail, independent review plan, pen test consideration, business validation, AI detail. One page. |
@@ -258,7 +258,7 @@ curl -s [PRODUCTION_URL]/[NONEXISTENT_ENDPOINT]
258
258
  ## Disaster Recovery
259
259
 
260
260
  | Metric | Target |
261
- |---|---|
261
+ | --- | --- |
262
262
  | RTO | [e.g., 4 hours] |
263
263
  | RPO | [e.g., 24 hours] |
264
264
 
@@ -292,7 +292,7 @@ Annual pen test scope: [PRODUCTION_URL], API endpoints, auth mechanism, [databas
292
292
  ## Workflow Files
293
293
 
294
294
  | # | File | Purpose |
295
- |---|---|---|
295
+ | --- | --- | --- |
296
296
  | 0 | `0-project-setup.md` | One-time: repository, CI, compliance setup |
297
297
  | 1 | `1-plan-requirement.md` | Create REQ, classify risk, generate test scope |
298
298
  | 2 | `2-implement-and-test.md` | Code, commit, run all local gates |
@@ -305,7 +305,7 @@ Annual pen test scope: [PRODUCTION_URL], API endpoints, auth mechanism, [databas
305
305
  ## Document Control
306
306
 
307
307
  | Version | Date | Author | Changes |
308
- |---|---|---|---|
308
+ | --- | --- | --- | --- |
309
309
  | 1.0 | [DATE] | [AUTHOR] | Initial plan |
310
310
 
311
311
  **Parent Documents:** Test Policy, Test Strategy, Test Architecture, Periodic Security Review Schedule (in devaudit/sdlc/files/)
@@ -114,7 +114,7 @@ AI-generated code presents risks distinct from human-authored code:
114
114
  ### Permitted AI Tools
115
115
 
116
116
  | Tool | Permitted Use | Restrictions |
117
- |---|---|---|
117
+ | --- | --- | --- |
118
118
  | Claude (Anthropic) | Code generation, test generation, documentation, review assistance | No deployment without human review |
119
119
  | GitHub Copilot | Inline code suggestions | Same review requirements as any AI-generated code |
120
120
 
@@ -275,7 +275,7 @@ Project Test Plans (per product)
275
275
  ## Document Control
276
276
 
277
277
  | Version | Date | Author | Changes |
278
- |---|---|---|---|
278
+ | --- | --- | --- | --- |
279
279
  | 1.0 | January 2026 | Engineering Leadership | Initial creation |
280
280
  | 2.0 | March 2026 | Engineering Leadership | Added AI governance, security commitments |
281
281
  | 3.0 | March 2026 | Engineering Leadership | Clean boundary split — removed content now owned by Test Strategy (methodology) and Test Architecture (tooling) |
@@ -43,7 +43,7 @@ End-to-end validation of complete user workflows from UI to database. Primary re
43
43
  Full E2E regression on every PR is expensive — a 30+ minute wait per release-PR blocks velocity for diminishing marginal safety once smoke covers the headline flows. The framework's gating model maps the existing MoSCoW prioritisation onto three tiers, each gated at a different point in the workflow:
44
44
 
45
45
  | Tier | Location | When it runs | Wall-clock target | Audit role |
46
- |---|---|---|---|---|
46
+ | --- | --- | --- | --- | --- |
47
47
  | **smoke** | `e2e/smoke/*.spec.ts` | every push to `$INTEGRATION_BRANCH` (via `ci.yml`) | ~3–5 min | fast feedback on every change |
48
48
  | **critical** | `e2e/smoke/` + `e2e/critical/*.spec.ts` | PR-to-`$RELEASE_BRANCH` (via `e2e-regression.yml`) | ~10–15 min | release-readiness Must gate |
49
49
  | **regression** | all `e2e/**/*.spec.ts` | nightly + push-to-`$RELEASE_BRANCH` + `workflow_dispatch` | ~35 min (or your project's full pack) | full audit trail + drift catch |
@@ -105,7 +105,7 @@ Specific tools implementing these gates are defined in the Test Architecture.
105
105
  Defined in the Periodic Security Review Schedule:
106
106
 
107
107
  | Activity | Frequency |
108
- |---|---|
108
+ | --- | --- |
109
109
  | Full codebase SAST review | Quarterly |
110
110
  | Dependency deep audit | Quarterly |
111
111
  | Access control review | Quarterly |
@@ -117,7 +117,7 @@ Defined in the Periodic Security Review Schedule:
117
117
  ### Remediation SLAs
118
118
 
119
119
  | Severity | Per-Commit Gate | Periodic Finding |
120
- |---|---|---|
120
+ | --- | --- | --- |
121
121
  | Critical | Block merge, fix immediately | 7 days |
122
122
  | High | Block merge, fix immediately | 30 days |
123
123
  | Medium | Document and plan remediation | 90 days |
@@ -134,7 +134,7 @@ This section implements the AI governance commitments from the Test Policy with
134
134
  AI involvement is a factor in risk classification:
135
135
 
136
136
  | Code Category | Base Risk | AI Adjustment |
137
- |---|---|---|
137
+ | --- | --- | --- |
138
138
  | Internal tools, no regulated data | Low | Remains Low |
139
139
  | User-facing features, API changes, PII handling | Medium | Remains Medium |
140
140
  | Auth, payments, RBAC, crypto, data validation | High | Remains High |
@@ -145,7 +145,7 @@ AI involvement is a factor in risk classification:
145
145
  **Review scope by risk level:**
146
146
 
147
147
  | Risk Level | Reviewer | Focus |
148
- |---|---|---|
148
+ | --- | --- | --- |
149
149
  | Low | Any team member with domain knowledge | Functional correctness, obvious security issues |
150
150
  | Medium | Developer experienced in affected area | Above + security implications, dependency validation |
151
151
  | High | Senior developer + security-aware review | Above + independent verification, threat modeling |
@@ -174,7 +174,7 @@ Incremental AI-assisted edits follow standard testing gates.
174
174
  ### AI Documentation Requirements
175
175
 
176
176
  | Risk Level | Commit Tag | Evidence | Prompts |
177
- |---|---|---|---|
177
+ | --- | --- | --- | --- |
178
178
  | Low | `Co-Authored-By` tag | Not required | Not required |
179
179
  | Medium | `Co-Authored-By` tag | Summary of generation | Summary of prompts |
180
180
  | High | `Co-Authored-By` tag | Detailed AI record | Detailed prompts and outputs |
@@ -196,7 +196,7 @@ Risk level is determined at planning time for each requirement:
196
196
  ### Testing Depth by Risk Level
197
197
 
198
198
  | Activity | Low | Medium | High |
199
- |---|---|---|---|
199
+ | --- | --- | --- | --- |
200
200
  | Unit tests | Required | Required | Required |
201
201
  | Integration tests | As applicable | Required | Required |
202
202
  | E2E tests | Critical paths | Full coverage | Full coverage |
@@ -312,7 +312,7 @@ Tracked requirements include: `Ref: REQ-XXX`
312
312
  ### Required Artifact Types
313
313
 
314
314
  | Category | Artifacts |
315
- |---|---|
315
+ | --- | --- |
316
316
  | Planning | Test Policy, Test Strategy, Project Test Plans |
317
317
  | Specification | BDD feature files, test case specifications, security scenarios |
318
318
  | Execution | Test logs, CI/CD logs, SAST/SCA reports, AI use records, defect reports |
@@ -323,7 +323,7 @@ Tracked requirements include: `Ref: REQ-XXX`
323
323
  ## Agile Artifact Mapping
324
324
 
325
325
  | ISO Artifact | Metasession Implementation |
326
- |---|---|
326
+ | --- | --- |
327
327
  | Test Policy | This document hierarchy (Policy + Strategy + Architecture) |
328
328
  | Requirements Specification | Product backlog with acceptance criteria |
329
329
  | Test Plan | Project-specific Test Plan + sprint planning |
@@ -363,7 +363,7 @@ Sprint retrospectives, quarterly metric reviews, and incident lessons learned fe
363
363
  ## Document Control
364
364
 
365
365
  | Version | Date | Author | Changes |
366
- |---|---|---|---|
366
+ | --- | --- | --- | --- |
367
367
  | 1.0 | January 2026 | QA Team | Initial creation |
368
368
  | 2.0 | March 2026 | QA Team | Added AI methodology, security methodology, V&V |
369
369
  | 3.0 | March 2026 | QA Team | Clean boundary split — moved specific tools, code patterns, CI config to Test Architecture. Strategy now owns methodology only. |
@@ -54,7 +54,7 @@ risk_class: "REPLACE — minimal | limited | high | unacceptable"
54
54
  Add one row per AI tool / model / API. Delete this template row before your first audit.
55
55
 
56
56
  | Tool / model | Vendor | Use case | Inputs (data classes) | Outputs | Risk class | Provider docs |
57
- |---|---|---|---|---|---|---|
57
+ | --- | --- | --- | --- | --- | --- | --- |
58
58
  | REPLACE — e.g. GPT-4o | OpenAI | Code suggestion in IDE | Source code, no PII | Code suggestions | Limited | https://… |
59
59
  | REPLACE | | | | | | |
60
60
 
@@ -91,7 +91,7 @@ Add one row per AI tool / model / API. Delete this template row before your firs
91
91
  ## 9. Sign-off
92
92
 
93
93
  | Role | Name | Date |
94
- |---|---|---|
94
+ | --- | --- | --- |
95
95
  | Provider responsible | REPLACE | REPLACE |
96
96
  | AI compliance reviewer | REPLACE | REPLACE |
97
97
 
@@ -104,5 +104,5 @@ Add one row per AI tool / model / API. Delete this template row before your firs
104
104
  ## Review log
105
105
 
106
106
  | Date | Reviewer | Changes |
107
- |---|---|---|
107
+ | --- | --- | --- |
108
108
  | REPLACE — YYYY-MM-DD | REPLACE | Initial AI disclosure authored from starter template |