@metasession.co/devaudit-cli 0.3.13 → 0.3.15
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 +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/sdlc/files/_common/scripts/check-release-pr-scope.sh +11 -0
- package/sdlc/files/_common/scripts/check-release-pr-scope.test.sh +42 -1
- package/sdlc/files/_common/scripts/generate-bundled-changes.sh +13 -4
- package/sdlc/files/_common/scripts/generate-bundled-changes.test.sh +5 -0
- package/sdlc/files/_common/scripts/report-release-check.sh +86 -0
- package/sdlc/files/_common/scripts/report-release-check.test.sh +97 -0
- package/sdlc/files/_common/scripts/standalone-housekeeping-release.sh +98 -0
- package/sdlc/files/_common/scripts/standalone-housekeeping-release.test.sh +45 -0
- package/sdlc/files/_common/skills/sdlc-implementer/SKILL.md +9 -13
- package/sdlc/files/ci/ci.yml.template +69 -12
- package/sdlc/files/ci/compliance-evidence.yml.template +45 -49
- package/sdlc/files/ci/post-deploy-prod.yml.template +181 -24
- package/sdlc/package.json +1 -1
- package/sdlc/src/blueprints/5-deploy-main.raw.md +23 -50
|
@@ -45,13 +45,13 @@ gh pr merge [PR-NUMBER] --merge --delete-branch=false
|
|
|
45
45
|
|
|
46
46
|
**Do NOT delete `develop`** — it's the permanent working branch.
|
|
47
47
|
|
|
48
|
-
### Step 2:
|
|
48
|
+
### Step 2: Preserve GitFlow
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
Normal release synchronization is performed by the portal-dispatched close-out
|
|
51
|
+
PR after the release reaches `released`; do not directly merge the release
|
|
52
|
+
branch into the integration branch. A real hotfix is the exception: after its
|
|
53
|
+
reviewed merge to the release branch, open the mandatory `backmerge/*` PR to the
|
|
54
|
+
integration branch and merge it only after terminal-green checks.
|
|
55
55
|
|
|
56
56
|
### Step 3: Verify Production Deployment
|
|
57
57
|
|
|
@@ -149,11 +149,11 @@ The backend stores both with reviewer identity, SHA, and timestamp. This satisfi
|
|
|
149
149
|
|
|
150
150
|
#### Steps
|
|
151
151
|
|
|
152
|
-
1. Wait for `post-deploy-prod.yml` to complete
|
|
152
|
+
1. Wait for `post-deploy-prod.yml` to complete successfully **and** for its host-deployment check to confirm terminal success for the merged SHA.
|
|
153
153
|
2. Open the release in DevAudit: `https://[DEVAUDIT_BASE_URL]/projects/[PROJECT_SLUG]/releases/[releaseId]`.
|
|
154
|
-
3. Review the
|
|
154
|
+
3. Review the production deployment and smoke cycle records, their evidence, and any post-deploy actions logged in the release ticket. Do not approve while either cycle or the host deployment remains queued/in progress.
|
|
155
155
|
4. Click **Approve Production** — status transitions to `prod_approved`.
|
|
156
|
-
5. Click **Mark as Released** — status transitions to `released`.
|
|
156
|
+
5. Click **Mark as Released** — status transitions to `released`. This dispatches the automated close-out flow.
|
|
157
157
|
|
|
158
158
|
If the smoke results look wrong or a manual verification fails, click **Reject** on the production approval and follow the Rollback procedure below before retrying.
|
|
159
159
|
|
|
@@ -161,41 +161,21 @@ If the smoke results look wrong or a manual verification fails, click **Reject**
|
|
|
161
161
|
|
|
162
162
|
`approval.mode` is checked again here. `dual_actor` means the post-deploy approver must differ from the release creator. `solo_with_gap` accepts self-approval but records the control gap. `auto_low_risk` allows LOW-risk requirements to auto-advance through both transitions on workflow completion; MEDIUM/HIGH always require a human click.
|
|
163
163
|
|
|
164
|
-
### Step 6:
|
|
165
|
-
|
|
166
|
-
> **Automated path (preferred).** Run the synced helper instead of doing this by hand — it flips the ticket Status → `RELEASED` (+ backlinks the release PR and records the sign-off), flips the matching `RTM.md` row, and `git mv`s the ticket to `approved-releases/`, then stages the changes for you to commit:
|
|
167
|
-
>
|
|
168
|
-
> ```bash
|
|
169
|
-
> ./scripts/close-out-release.sh REQ-XXX --release-pr <release-PR-#>
|
|
170
|
-
> git add -A && git commit -m "docs(compliance): close out REQ-XXX release ticket (RELEASED)" && git push origin develop
|
|
171
|
-
> ```
|
|
172
|
-
>
|
|
173
|
-
> It is **idempotent** (a no-op if already closed out) and, when `DEVAUDIT_API_KEY` + `DEVAUDIT_BASE_URL` are set, **refuses** unless the portal reports the release as `released` (so you can't flip the local tree ahead of the Production approval). The `close-out-release.yml` workflow runs the same script automatically when the portal marks a release released (and is `workflow_dispatch`-able for catch-up). The manual steps below are the fallback / reference for what the script does.
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
mv compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md compliance/approved-releases/
|
|
177
|
-
```
|
|
164
|
+
### Step 6: Automated Close-out (Tracked Requirements Only)
|
|
178
165
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
166
|
+
When the portal status becomes `released`, it dispatches `release-closed` to the
|
|
167
|
+
consumer repository. `close-out-release.yml` then opens a
|
|
168
|
+
`chore/close-out-REQ-XXX` PR to the configured integration branch. That PR is
|
|
169
|
+
the canonical reconciliation record: it updates the RTM, moves the release
|
|
170
|
+
ticket to `approved-releases/`, and moves manifest-listed absorbed predecessors
|
|
171
|
+
to `superseded-releases/`.
|
|
183
172
|
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
| [date] | PROD post-deploy verification | [who] | Health + security checks passed on PROD |
|
|
191
|
-
```
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
git add compliance/RTM.md compliance/approved-releases/ compliance/evidence/REQ-XXX/
|
|
195
|
-
git rm compliance/pending-releases/RELEASE-TICKET-REQ-XXX.md 2>/dev/null
|
|
196
|
-
git commit -m "compliance: [REQ-XXX] approved and deployed - PR #[number]"
|
|
197
|
-
git push origin develop
|
|
198
|
-
```
|
|
173
|
+
Review and merge the close-out PR after its required checks are terminal green
|
|
174
|
+
on its current head SHA. It is an administrative reconciliation PR, not a new
|
|
175
|
+
production release. If the dispatch did not arrive, manually dispatch the
|
|
176
|
+
Release Close-out workflow. Run `scripts/close-out-release.sh` locally only for
|
|
177
|
+
documented recovery or historical catch-up; never create a normal direct
|
|
178
|
+
close-out commit on a protected branch.
|
|
199
179
|
|
|
200
180
|
### Step 7: Close the GitHub Issue
|
|
201
181
|
|
|
@@ -207,17 +187,10 @@ gh issue close [ISSUE-NUMBER] --comment "Implemented in PR #[PR-NUMBER] (REQ-XXX
|
|
|
207
187
|
|
|
208
188
|
This is the final traceability link: Issue → Requirement → PR → Deployment → Issue closed.
|
|
209
189
|
|
|
210
|
-
### Step 8: Final Sync
|
|
211
|
-
|
|
212
|
-
```bash
|
|
213
|
-
git checkout main && git merge develop --no-edit && git push origin main
|
|
214
|
-
git checkout develop
|
|
215
|
-
```
|
|
216
|
-
|
|
217
190
|
## Rollback
|
|
218
191
|
|
|
219
192
|
1. **Hosting dashboard:** Redeploy previous version
|
|
220
|
-
2. **Git:** `
|
|
193
|
+
2. **Git:** create `hotfix/revert-REQ-XXX` from the release branch, revert the merge, and open a reviewed PR to the release branch. After terminal-green checks and merge, open the mandatory backmerge PR to integration.
|
|
221
194
|
3. **Document:** Add rollback entry to release ticket audit trail
|
|
222
195
|
4. **Correlate with incident (DevAudit-Installer#210 §10a):** If the rollback was triggered by a post-deploy smoke failure, the `post-deploy-prod.yml` workflow files an incident issue with the `incident` label. Reference this incident in the rollback commit message (`Fixes #N` or a comment on the issue) so the incident report captures the containment action. This ensures `incident-export.yml` exports the full incident timeline including the rollback.
|
|
223
196
|
|