@metasession.co/devaudit-cli 0.3.11 → 0.3.13
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.
- package/dist/index.js +94 -6
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/scripts/upload-evidence.sh +55 -1
- package/sdlc/ai-rules/SDLC_RULES.md +27 -7
- package/sdlc/files/_common/0-project-setup.md +13 -7
- package/sdlc/files/_common/Periodic_Security_Review_Schedule.md +5 -5
- package/sdlc/files/_common/README_TEMPLATE.md +8 -8
- package/sdlc/files/_common/Test_Architecture.md +15 -15
- package/sdlc/files/_common/Test_Plan_TEMPLATE.md +13 -13
- package/sdlc/files/_common/Test_Policy.md +2 -2
- package/sdlc/files/_common/Test_Strategy.md +10 -10
- package/sdlc/files/_common/governance/ai-disclosure.md.template +3 -3
- package/sdlc/files/_common/governance/dpia.md.template +3 -3
- package/sdlc/files/_common/governance/incident-report.md.template +3 -3
- package/sdlc/files/_common/governance/nil-incident-report.md.template +1 -1
- package/sdlc/files/_common/governance/periodic-review.md.template +3 -3
- package/sdlc/files/_common/governance/risk-register.md.template +1 -1
- package/sdlc/files/_common/governance/ropa.md.template +2 -2
- package/sdlc/files/_common/joining-an-existing-project.md +4 -4
- package/sdlc/files/_common/scripts/check-host-deployment.sh +107 -0
- package/sdlc/files/_common/scripts/check-host-deployment.test.sh +119 -0
- package/sdlc/files/_common/scripts/check-release-pr-scope.sh +95 -0
- package/sdlc/files/_common/scripts/check-release-pr-scope.test.sh +137 -0
- package/sdlc/files/_common/scripts/close-out-release.sh +175 -54
- package/sdlc/files/_common/scripts/close-out-release.test.sh +90 -0
- package/sdlc/files/_common/scripts/extract-release-metadata.sh +65 -0
- package/sdlc/files/_common/scripts/extract-release-metadata.test.sh +38 -0
- package/sdlc/files/_common/scripts/generate-bundled-changes.sh +307 -58
- package/sdlc/files/_common/scripts/generate-bundled-changes.test.sh +128 -78
- package/sdlc/files/_common/scripts/generate-housekeeping-release-ticket.sh +18 -9
- package/sdlc/files/_common/scripts/generate-housekeeping-release-ticket.test.sh +66 -0
- package/sdlc/files/_common/scripts/generate-security-summary.sh +14 -5
- package/sdlc/files/_common/scripts/generate-security-summary.test.sh +57 -0
- package/sdlc/files/_common/scripts/prepare-release-pr.sh +44 -4
- package/sdlc/files/_common/scripts/render-test-cycles.sh +227 -0
- package/sdlc/files/_common/scripts/render-test-cycles.test.sh +107 -0
- package/sdlc/files/_common/scripts/report-test-cycle.sh +344 -0
- package/sdlc/files/_common/scripts/submit-bundle-manifest.sh +100 -0
- package/sdlc/files/_common/scripts/submit-bundle-manifest.test.sh +138 -0
- package/sdlc/files/_common/scripts/upload-evidence.sh +55 -1
- package/sdlc/files/_common/scripts/upload-evidence.test.sh +119 -0
- package/sdlc/files/_common/scripts/validate-compliance-artifacts.sh +169 -2
- package/sdlc/files/_common/scripts/validate-compliance-artifacts.test.sh +169 -0
- package/sdlc/files/_common/scripts/validate-test-summary.test.sh +4 -4
- package/sdlc/files/_common/skills/adr-author/SKILL.md +2 -2
- package/sdlc/files/_common/skills/e2e-test-engineer/SKILL.md +2 -2
- package/sdlc/files/_common/skills/e2e-test-engineer/references/bootstrap.md +5 -5
- package/sdlc/files/_common/skills/governance-doc-author/references/incident-classification.md +1 -1
- package/sdlc/files/_common/skills/requirements-aligner/SKILL.md +4 -4
- package/sdlc/files/_common/skills/sdlc-implementer/SKILL.md +57 -3
- package/sdlc/files/_common/skills/sdlc-implementer/references/change-request-loop.md +1 -1
- package/sdlc/files/_common/skills/sdlc-implementer/references/compliance-constraints.md +7 -14
- package/sdlc/files/ci/check-release-approval.yml.template +18 -28
- package/sdlc/files/ci/ci.yml.template +95 -35
- package/sdlc/files/ci/close-out-release.yml.template +7 -4
- package/sdlc/files/ci/compliance-evidence.yml.template +234 -49
- package/sdlc/files/ci/feature-e2e.yml.template +84 -1
- package/sdlc/files/ci/post-deploy-prod.yml.template +59 -4
- package/sdlc/files/ci/python/ci.yml.template +60 -12
- package/sdlc/files/ci/quality-gates-provenance.yml.template +123 -28
- package/sdlc/package.json +1 -1
- package/sdlc/src/bin/devaudit-sdlc.js +44 -2
- package/sdlc/src/blueprints/1-plan-requirement.raw.md +6 -1
- package/sdlc/src/blueprints/2-implement-and-test.raw.md +1 -1
- package/sdlc/src/blueprints/3-compile-evidence.raw.md +102 -20
- package/sdlc/src/blueprints/4-submit-for-review.raw.md +3 -3
- package/sdlc/src/blueprints/5-deploy-main.raw.md +2 -2
|
@@ -36,7 +36,7 @@ If you are an AI agent reading this file, you are strictly prohibited from manua
|
|
|
36
36
|
**Markdown stays in git. Binary and JSON evidence goes to DevAudit.**
|
|
37
37
|
|
|
38
38
|
| Artifact | Store in | Why |
|
|
39
|
-
|
|
39
|
+
| ---------- | ---------- | ----- |
|
|
40
40
|
| `compliance/RTM.md` | Git | Source of truth, version history, PR-reviewable |
|
|
41
41
|
| `compliance/evidence/REQ-XXX/test-scope.md` | Git | Planning artifact, reviewed in PRs |
|
|
42
42
|
| `compliance/evidence/REQ-XXX/implementation-plan.md` | Git | Design decisions artifact (MEDIUM/HIGH risk), reviewed in PRs |
|
|
@@ -60,7 +60,7 @@ CI uploads are scoped to a **release record** in DevAudit, keyed by `(project, v
|
|
|
60
60
|
The templated workflows derive the release version from the **latest commit on the branch** via `scripts/derive-release-version.sh`:
|
|
61
61
|
|
|
62
62
|
| Commit shape | Release version |
|
|
63
|
-
|
|
63
|
+
| --- | --- |
|
|
64
64
|
| Subject `[REQ-037] feat(...)` | `REQ-037` |
|
|
65
65
|
| Subject `feat(...)` + body `Ref: REQ-037` | `REQ-037` |
|
|
66
66
|
| Subject contains multiple tags (e.g. `[REQ-037][REQ-038]`) | First match wins → `REQ-037` |
|
|
@@ -75,7 +75,7 @@ If you need a separate release container for a sub-piece of work — e.g. carvin
|
|
|
75
75
|
A release is classified by its version pattern. **Most of this doc walks the tracked path** (a REQ-XXX-tagged release for a single requirement). For develop pushes that don't carry a REQ tag — typically `docs:`, `chore:`, `ci:`, `build:`, `test:`, `compliance:`, `revert:` — the version-deriver falls back to a bare date and the release is **housekeeping**.
|
|
76
76
|
|
|
77
77
|
| Shape | Version pattern | Triggered by | Per-REQ ceremony |
|
|
78
|
-
|
|
78
|
+
| --- | --- | --- | --- |
|
|
79
79
|
| **Tracked** | `REQ-037`, `REQ-046-FIX`, etc. | A `feat`/`fix`/`refactor`/`perf` commit (REQ tag required by commitlint) | Yes — full Steps 1-9 |
|
|
80
80
|
| **Housekeeping** | `v2026.06.04` (bare date, optionally `.N`) | A push containing only REQ-exempt commit types | **No** per-REQ artefacts; the portal auto-skips test-scope, test-plan, implementation-plan, and test-execution-summary completeness checks |
|
|
81
81
|
|
|
@@ -84,7 +84,7 @@ A release is classified by its version pattern. **Most of this doc walks the tra
|
|
|
84
84
|
Housekeeping releases **skip** the per-requirement evidence (no REQ → no `compliance/evidence/REQ-XXX/` folder) but **still produce two release-scoped artefacts**:
|
|
85
85
|
|
|
86
86
|
| Artefact | Tracked path | Housekeeping path | Auto-generated by CI? |
|
|
87
|
-
|
|
87
|
+
| --- | --- | --- | --- |
|
|
88
88
|
| Release ticket | `compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md` (Step 8) | `compliance/pending-releases/RELEASE-TICKET-<version>.md` (e.g. `RELEASE-TICKET-v2026.06.04.md`) | **Yes** — `generate-housekeeping-release-ticket.sh` runs after `derive-release-version.sh` and emits a stub the operator reviews + signs off |
|
|
89
89
|
| Security summary | `compliance/evidence/REQ-XXX/security-summary.md` (Step 4) | `compliance/security-summary-<version>.md` at the compliance root (release-scoped, not REQ-scoped) | **Yes** — `generate-security-summary.sh` scrapes the SAST + dep-audit gate JSON and emits a stub with an operator sign-off block |
|
|
90
90
|
|
|
@@ -168,7 +168,7 @@ Records the design-time decisions before listing run results — what was tested
|
|
|
168
168
|
## Gate Results
|
|
169
169
|
|
|
170
170
|
| Gate | Result | Details |
|
|
171
|
-
|
|
171
|
+
| ------ | -------- | --------- |
|
|
172
172
|
| TypeScript | PASS | 0 errors |
|
|
173
173
|
| SAST | PASS | [N] findings ([N] baseline) |
|
|
174
174
|
| Dependency Audit | PASS | [N] unaccepted high/critical |
|
|
@@ -180,7 +180,7 @@ Records the design-time decisions before listing run results — what was tested
|
|
|
180
180
|
Required when E2E gate result is `SKIPPED`. Optional when no accepted skips exist.
|
|
181
181
|
|
|
182
182
|
| Spec | Test | REQ/AC | Classification | Resolution attempted | Approved by | Rationale |
|
|
183
|
-
|
|
183
|
+
| ------ | ------ | -------- | --------------- | --------------------- | ------------- | ---------- |
|
|
184
184
|
| e2e/foo.spec.ts | "AC3: bar dialog" | REQ-XXX/AC3 | intentional_non_applicability | N/A — API-only change | [operator] | API-only change, no UI surface |
|
|
185
185
|
|
|
186
186
|
Rules:
|
|
@@ -191,11 +191,38 @@ Rules:
|
|
|
191
191
|
|
|
192
192
|
## Test Cycles
|
|
193
193
|
|
|
194
|
-
|
|
195
|
-
|-------|--------|-------------|------------|----------|------|
|
|
196
|
-
| #1 | [run_id] | [PASS/FAIL] | [N/N] | [N%] | [YYYY-MM-DD] |
|
|
194
|
+
Prefer the first-class release-journey / cycle API when the portal exposes it. Generate the table from the API response rather than inferring cycles from uploaded files:
|
|
197
195
|
|
|
198
|
-
|
|
196
|
+
```bash
|
|
197
|
+
# Example:
|
|
198
|
+
curl -s -H "Authorization: Bearer ${DEVAUDIT_API_KEY}" \
|
|
199
|
+
"${DEVAUDIT_BASE_URL%/}/api/projects/<slug>/releases/REQ-XXX/journey" \
|
|
200
|
+
> /tmp/release-journey.json
|
|
201
|
+
bash scripts/render-test-cycles.sh /tmp/release-journey.json
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
The helper renders a first-class table when `.cycles[]` is present, and falls back to legacy `testCycleId` grouping when the portal has not yet rolled out cycle records.
|
|
205
|
+
|
|
206
|
+
| Source Release | SDLC Stage | Cycle | Kind | Outcome | Workflow / Run | Related Evidence | Incident / Remediation | Date |
|
|
207
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
208
|
+
| REQ-XXX | 2 implement_test | #1 | quality_gate | passed | [Quality Gates](https://github.com/example/repo/actions/runs/123) (run 123, attempt 1) | quality-gates.json | None | 2026-07-16 11:03:00 |
|
|
209
|
+
| REQ-XXX | 2 implement_test | #2 | e2e | passed | [E2E Regression](https://github.com/example/repo/actions/runs/124) (run 124, attempt 2) | e2e-results.json, screenshots.zip | Incident #501 fixed in PR #507 | 2026-07-16 11:19:00 |
|
|
210
|
+
| REQ-089 | 4 uat_review | #1 | uat | passed | [UAT Review](https://devaudit.example/releases/REQ-089) | uat-checklist.md | None | 2026-07-16 12:02:00 |
|
|
211
|
+
|
|
212
|
+
**Final assessment:** [First-class cycle records show all stage cycles passed / N cycles failed — see incidents]
|
|
213
|
+
|
|
214
|
+
## Bundled Release Context
|
|
215
|
+
|
|
216
|
+
Required when `compliance/pending-releases/BUNDLED-CHANGES-REQ-XXX.md` exists for this REQ.
|
|
217
|
+
|
|
218
|
+
- **Core tracked release:** [REQ-XXX + what the tracked change itself delivers]
|
|
219
|
+
- **Absorbed predecessor releases:** [versions or `None`]
|
|
220
|
+
- **Absorbed non-release work:** [follow-up PRs, housekeeping, CI fixes, process fixes, docs-only release-path work — include issue/PR/commit references]
|
|
221
|
+
- **Why bundled here:** [release re-anchoring / CI fix / framework sync / housekeeping consolidation / review-window consolidation]
|
|
222
|
+
- **Evidence impact:** [which test/security results prove the core REQ vs which ones simply keep the broader release train green]
|
|
223
|
+
- **Reviewer impact:** [how the approval scope is broader than the core REQ alone]
|
|
224
|
+
- **Security / risk impact:** [`None beyond core REQ` or explicit impact]
|
|
225
|
+
- **Reference:** `compliance/pending-releases/BUNDLED-CHANGES-REQ-XXX.md`
|
|
199
226
|
|
|
200
227
|
## Test Changes in This Release
|
|
201
228
|
|
|
@@ -211,13 +238,13 @@ Rules:
|
|
|
211
238
|
## Test Plan Coverage
|
|
212
239
|
|
|
213
240
|
| Acceptance Criterion | Status | Test |
|
|
214
|
-
|
|
241
|
+
| --------------------- | -------- | ------ |
|
|
215
242
|
| [From test-plan.md] | PASS | `[spec-file]::[test-name]` |
|
|
216
243
|
|
|
217
244
|
## Evidence Locations
|
|
218
245
|
|
|
219
246
|
| Evidence | Location |
|
|
220
|
-
|
|
247
|
+
| ---------- | ---------- |
|
|
221
248
|
| E2E results | DevAudit: [project]/REQ-XXX/e2e-results.json |
|
|
222
249
|
| SAST results | DevAudit: [project]/REQ-XXX/sast-results.json |
|
|
223
250
|
| Dependency audit | DevAudit: [project]/REQ-XXX/dependency-audit.json |
|
|
@@ -287,6 +314,17 @@ cat > compliance/evidence/REQ-XXX/security-summary.md << EOF
|
|
|
287
314
|
**SAST High/Critical Findings:** 0
|
|
288
315
|
**Dependency Audit High/Critical:** 0
|
|
289
316
|
Evidence uploaded to DevAudit project: [PROJECT_SLUG]
|
|
317
|
+
|
|
318
|
+
## Bundled Release Context
|
|
319
|
+
[Only include this section when `BUNDLED-CHANGES-REQ-XXX.md` exists.]
|
|
320
|
+
- **Core tracked release:** [REQ-XXX]
|
|
321
|
+
- **Absorbed predecessor releases:** [versions or `None`]
|
|
322
|
+
- **Absorbed non-release work:** [template sync / CI fix / housekeeping / predecessor release absorbed]
|
|
323
|
+
- **Why bundled here:** [why the non-core work ships in this cut]
|
|
324
|
+
- **Evidence impact:** [what shared gate/security evidence now covers]
|
|
325
|
+
- **Reviewer impact:** [how the review scope broadens beyond the core REQ]
|
|
326
|
+
- **Security / risk impact:** [core REQ impact + whether any absorbed work changes the security posture]
|
|
327
|
+
- **Reference:** `compliance/pending-releases/BUNDLED-CHANGES-REQ-XXX.md`
|
|
290
328
|
EOF
|
|
291
329
|
```
|
|
292
330
|
|
|
@@ -335,7 +373,7 @@ No incidents or defects were discovered during the test cycle for release `<vers
|
|
|
335
373
|
## Sign-off
|
|
336
374
|
|
|
337
375
|
| Role | Name | Date |
|
|
338
|
-
|
|
376
|
+
| --- | --- | --- |
|
|
339
377
|
| Test lead | REPLACE — assign | REPLACE |
|
|
340
378
|
| Engineering lead | REPLACE — assign | REPLACE |
|
|
341
379
|
EOF
|
|
@@ -365,6 +403,17 @@ ai_contributors:
|
|
|
365
403
|
## Summary
|
|
366
404
|
[Brief description of what the AI tool was used for]
|
|
367
405
|
|
|
406
|
+
## Bundled Release Context
|
|
407
|
+
[Only include this section when `BUNDLED-CHANGES-REQ-XXX.md` exists.]
|
|
408
|
+
- **Core tracked release:** [REQ-XXX]
|
|
409
|
+
- **Absorbed predecessor releases:** [versions or `None`]
|
|
410
|
+
- **Absorbed non-release work:** [follow-up PRs / housekeeping / CI fixes / process fixes]
|
|
411
|
+
- **Why bundled here:** [release re-anchoring / CI fix / framework sync / housekeeping consolidation]
|
|
412
|
+
- **Evidence impact:** [which AI-authored artefacts changed because of the bundle]
|
|
413
|
+
- **Reviewer impact:** [how the approval scope broadens beyond the core REQ]
|
|
414
|
+
- **Security / risk impact:** [`None beyond core REQ` or explicit impact]
|
|
415
|
+
- **Reference:** `compliance/pending-releases/BUNDLED-CHANGES-REQ-XXX.md`
|
|
416
|
+
|
|
368
417
|
## Code Generated By AI
|
|
369
418
|
- [list files]
|
|
370
419
|
|
|
@@ -445,7 +494,7 @@ The test-scope artefact carries an **SRS-ID cross-reference table** so each test
|
|
|
445
494
|
## SRS coverage
|
|
446
495
|
|
|
447
496
|
| Test (file) | AC | SRS item |
|
|
448
|
-
|
|
497
|
+
| --- | --- | --- |
|
|
449
498
|
| e2e/admin-order-flow.spec.ts | AC1 | REQ-ORDER-005 |
|
|
450
499
|
| services/order-service.test.ts | AC2 | REQ-INV-010 |
|
|
451
500
|
| e2e/incident-dashboard.spec.ts | AC9 | REQ-OPS-001 |
|
|
@@ -487,10 +536,23 @@ Create `compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md`:
|
|
|
487
536
|
## Summary
|
|
488
537
|
[1-3 sentences]
|
|
489
538
|
|
|
539
|
+
## Bundled Changes
|
|
540
|
+
|
|
541
|
+
Required when `compliance/pending-releases/BUNDLED-CHANGES-REQ-XXX.md` exists or when predecessor bare-date releases are being superseded into this REQ.
|
|
542
|
+
|
|
543
|
+
- **Core tracked release:** [REQ-XXX]
|
|
544
|
+
- **Absorbed predecessor releases:** [versions or `None`]
|
|
545
|
+
- **Absorbed non-release work:** [PR numbers / short descriptions / commit ranges]
|
|
546
|
+
- **Why bundled here:** [release re-anchoring / CI fix / framework sync / housekeeping consolidation]
|
|
547
|
+
- **Evidence impact:** [which release reports/evidence are broader because of the bundle]
|
|
548
|
+
- **Reviewer impact:** [how the approval scope is broader than the core REQ alone]
|
|
549
|
+
- **Security / risk impact:** [`None beyond core REQ` or explicit impact]
|
|
550
|
+
- **Reference:** `compliance/pending-releases/BUNDLED-CHANGES-REQ-XXX.md`
|
|
551
|
+
|
|
490
552
|
## AI Contributors
|
|
491
553
|
|
|
492
554
|
| Tool | Version | Session | Commits | Date Range |
|
|
493
|
-
|
|
555
|
+
| ------ | --------- | --------- | --------- | ------------ |
|
|
494
556
|
| [tool / none] | [version] | [session id] | [N] | [YYYY-MM-DD to YYYY-MM-DD] |
|
|
495
557
|
|
|
496
558
|
**Handoffs:** [None / list — see `ai-agent-handoff.md` if applicable]
|
|
@@ -509,13 +571,13 @@ Create `compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md`:
|
|
|
509
571
|
|
|
510
572
|
## Test Evidence
|
|
511
573
|
| Test Type | Count | Passed | Failed | Evidence Location |
|
|
512
|
-
|
|
574
|
+
| ----------- | ------- | -------- | -------- | ------------------- |
|
|
513
575
|
| E2E (Playwright) | [N] | [N] | 0 | DevAudit portal: [PROJECT_SLUG]/REQ-XXX |
|
|
514
576
|
| Unit | [N] | [N] | 0 | DevAudit portal: [PROJECT_SLUG]/REQ-XXX |
|
|
515
577
|
|
|
516
578
|
## Security Evidence
|
|
517
579
|
| Check | Result | Evidence Location |
|
|
518
|
-
|
|
580
|
+
| ------- | -------- | ------------------- |
|
|
519
581
|
| SAST | 0 high/critical | DevAudit portal: [PROJECT_SLUG]/REQ-XXX |
|
|
520
582
|
| Dependency Audit | 0 high/critical | DevAudit portal: [PROJECT_SLUG]/REQ-XXX |
|
|
521
583
|
| Access Control | [PASS/N/A] | Git: `compliance/evidence/REQ-XXX/security-summary.md` |
|
|
@@ -536,7 +598,7 @@ Create `compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md`:
|
|
|
536
598
|
## Post-Deploy Actions
|
|
537
599
|
|
|
538
600
|
| Type | Script / Command | Target | Required | Notes |
|
|
539
|
-
|
|
601
|
+
| ------ | ----------------- | -------- | ---------- | ------- |
|
|
540
602
|
| — | None | — | — | No post-deploy actions required |
|
|
541
603
|
|
|
542
604
|
<!-- Replace the "None" row above with actual actions if this release requires them:
|
|
@@ -564,7 +626,7 @@ Create `compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md`:
|
|
|
564
626
|
|
|
565
627
|
## Audit Trail
|
|
566
628
|
| Date | Action | Actor | Notes |
|
|
567
|
-
|
|
629
|
+
| ------ | -------- | ------- | ------- |
|
|
568
630
|
| [date] | Requirement created | [who] | Risk: [level] |
|
|
569
631
|
| [date] | Implementation completed | [who] | [details] |
|
|
570
632
|
| [date] | AI code reviewed | [reviewer] | [files] |
|
|
@@ -591,6 +653,26 @@ If using DevAudit, commit only compliance documents (RTM, release ticket, test s
|
|
|
591
653
|
- [ ] `compliance/evidence/REQ-XXX/security-summary.md`
|
|
592
654
|
- [ ] `compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md`
|
|
593
655
|
|
|
656
|
+
```bash
|
|
657
|
+
# Phase 3 completion guard — do not proceed to Phase 4 / release PR
|
|
658
|
+
# creation while any required tracked-release artefact is missing.
|
|
659
|
+
MISSING=0
|
|
660
|
+
for f in \
|
|
661
|
+
compliance/evidence/REQ-XXX/test-scope.md \
|
|
662
|
+
compliance/evidence/REQ-XXX/test-plan.md \
|
|
663
|
+
compliance/evidence/REQ-XXX/test-execution-summary.md \
|
|
664
|
+
compliance/evidence/REQ-XXX/security-summary.md \
|
|
665
|
+
compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md
|
|
666
|
+
do
|
|
667
|
+
[ -f "$f" ] || { echo "MISSING: $f"; MISSING=1; }
|
|
668
|
+
done
|
|
669
|
+
[ "$MISSING" -eq 0 ] || {
|
|
670
|
+
echo "Fix missing files before proceeding to Phase 4."
|
|
671
|
+
echo "test-execution-summary.md satisfies the portal's Test Reports gate."
|
|
672
|
+
exit 1
|
|
673
|
+
}
|
|
674
|
+
```
|
|
675
|
+
|
|
594
676
|
```bash
|
|
595
677
|
# DevAudit projects — commit + push compliance docs
|
|
596
678
|
git add compliance/RTM.md compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md \
|
|
@@ -726,7 +808,7 @@ The script:
|
|
|
726
808
|
Required environment variables for the scripted path:
|
|
727
809
|
|
|
728
810
|
| Var | What it is | Where to set |
|
|
729
|
-
|
|
811
|
+
| --- | --- | --- |
|
|
730
812
|
| `DEVAUDIT_USER_TOKEN` | Personal Access Token (`mctok_…`) attributed to the running user | Issue at `/settings/tokens`; store as a repo secret for CI or `.env` for local |
|
|
731
813
|
| `DEVAUDIT_API_KEY` | Project-scoped API key (existing) | Already set for evidence uploads |
|
|
732
814
|
| `DEVAUDIT_BASE_URL` | DevAudit URL | Resolved by CI templates; locally read from `sdlc-config.json devaudit.base_url` |
|
|
@@ -38,7 +38,7 @@ The PR is the **merge request**, not the development workspace. Develop on `deve
|
|
|
38
38
|
|
|
39
39
|
When you create the PR, CI runs automatically — GitHub Actions re-executes the verification gates (TypeScript, SAST, dependency audit, E2E) independently. The `Release Approval Gate` workflow (renamed from `UAT Approval Gate` in sdlc-v1.22.0) also runs, verifying the release has been approved in DevAudit. This produces tamper-resistant evidence verified by GitHub's infrastructure.
|
|
40
40
|
|
|
41
|
-
> **Note:** The Release Approval Gate check will fail initially if the release hasn't been approved in DevAudit yet. This is expected. After approving the release in DevAudit (Stage 3 Step 11), re-run the `Release Approval Gate` workflow from GitHub Actions (or use `workflow_dispatch`) to
|
|
41
|
+
> **Note:** The Release Approval Gate check will fail initially if the release hasn't been approved in DevAudit yet. This is expected. After approving the release in DevAudit (Stage 3 Step 11), re-run the `Release Approval Gate` workflow from GitHub Actions (or use `workflow_dispatch`) to create a fresh passing `DevAudit Release Approval` check on the approved PR head SHA. The PR cannot be merged until this check passes — it is a required status check.
|
|
42
42
|
|
|
43
43
|
What happens next depends on the risk level of the requirements in the PR:
|
|
44
44
|
|
|
@@ -121,7 +121,7 @@ gh pr create --base main --head develop --title "type: description" --body "$(ca
|
|
|
121
121
|
## Test Results (Local — Comprehensive)
|
|
122
122
|
|
|
123
123
|
| Gate | Result | Details |
|
|
124
|
-
|
|
124
|
+
| ------ | -------- | --------- |
|
|
125
125
|
| E2E Tests | [N]/[N] passed | Spec files: [list spec files that ran] |
|
|
126
126
|
| TypeScript | 0 errors | `npx tsc --noEmit` |
|
|
127
127
|
| SAST | 0 high/critical | [N] rules scanned, [N] files |
|
|
@@ -148,7 +148,7 @@ CI runs automatically on this PR. The following gates must pass before merge:
|
|
|
148
148
|
|
|
149
149
|
### Where to Find Test Results
|
|
150
150
|
| Source | Location | What It Shows |
|
|
151
|
-
|
|
151
|
+
| -------- | ---------- | --------------- |
|
|
152
152
|
| **CI status** | Green/red icons on PR commits | Pass/fail for each gate (independent, tamper-resistant) |
|
|
153
153
|
| **CI E2E comment** | PR comments (automated) | E2E pass/fail with commit SHA |
|
|
154
154
|
| **DevAudit evidence** | [View evidence on DevAudit](https://[DevAudit-URL]/projects/[PROJECT_SLUG]/requirements/REQ-XXX) | Playwright report, SAST results, dependency audit |
|
|
@@ -88,7 +88,7 @@ If the release ticket says "No post-deploy actions required", skip to Step 4.
|
|
|
88
88
|
Production verification is **read-only and non-destructive**. It confirms the deployment succeeded and the application is accessible. It does NOT exercise application logic.
|
|
89
89
|
|
|
90
90
|
| Allowed (read-only) | NOT allowed (destructive) |
|
|
91
|
-
|
|
91
|
+
| --------------------- | -------------------------- |
|
|
92
92
|
| Health checks (HTTP GET) | E2E tests (Playwright) |
|
|
93
93
|
| Public endpoint status codes | Database operations |
|
|
94
94
|
| Security header inspection | API mutations (POST/PUT/DELETE) |
|
|
@@ -226,7 +226,7 @@ git checkout develop
|
|
|
226
226
|
If the project uses separate UAT and Production environments:
|
|
227
227
|
|
|
228
228
|
| Environment | Branch | Auto-deploy | Purpose |
|
|
229
|
-
|
|
229
|
+
| ------------- | -------- | ------------- | --------- |
|
|
230
230
|
| UAT | `develop` | Yes | Pre-PR verification — CI evidence uploaded to DevAudit, reviewed and approved before PR |
|
|
231
231
|
| Production | `main` | Yes | Live deployment after PR approval — post-deploy evidence captured and uploaded to DevAudit |
|
|
232
232
|
|