@mriekki/lean 0.4.3 → 0.4.5
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/assets/components.json +3 -3
- package/assets/core/distribution.json +8 -0
- package/assets/deployment/distribution.json +2 -0
- package/assets/generated/ASSEMBLY.json +73 -23
- package/assets/generated/core/core/instructions/lean-docs.instructions.md +33 -2
- package/assets/generated/core/core/instructions/lean-workflow.instructions.md +42 -0
- package/assets/generated/core/core/learning/DIAGRAM_GUIDE.md +46 -6
- package/assets/generated/core/core/learning/ENGINEERING_LEARNING_WORKBOOK.md +29 -6
- package/assets/generated/core/core/learning/LEARNING_MAP.md +37 -2
- package/assets/generated/core/core/learning/LEARNING_PROGRESS.md +15 -7
- package/assets/generated/core/core/learning/SYSTEM_DESIGN_DRILLS.md +299 -19
- package/assets/generated/core/core/process/COACHING_GUIDE.md +35 -2
- package/assets/generated/core/core/process/DATABASE_LEARNING_WORKBENCH.md +153 -102
- package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +108 -71
- package/assets/generated/core/core/process/LEAN_ENGINEERING_GUIDE.md +317 -0
- package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +324 -0
- package/assets/generated/core/core/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md +520 -0
- package/assets/generated/core/core/skills/coach/SKILL.md +31 -4
- package/assets/generated/core/core/skills/db-lab/SKILL.md +59 -16
- package/assets/generated/core/core/skills/deliver/SKILL.md +77 -5
- package/assets/generated/core/core/skills/deploy/SKILL.md +164 -121
- package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +223 -250
- package/assets/generated/core/core/skills/docs/SKILL.md +116 -0
- package/assets/generated/core/core/skills/next-step/SKILL.md +21 -6
- package/assets/generated/core/core/skills/system-lab/SKILL.md +333 -0
- package/assets/generated/core/core/skills/tear-down/SKILL.md +101 -61
- package/assets/generated/core/core/templates/ADR_TEMPLATE.md +41 -0
- package/assets/generated/core/tools/docs_site/docs_site.py +382 -0
- package/assets/generated/core/tools/system_lab/system_workbench.py +243 -0
- package/assets/generated/deployment/src/lean_poc_deployment/entrypoint.py +5 -1
- package/assets/generated/deployment/src/lean_poc_deployment/local_cli.py +112 -0
- package/assets/generated/deployment/src/lean_poc_deployment/local_runtime.py +523 -0
- package/assets/generated/deployment/src/lean_poc_deployment/teardown.py +49 -35
- package/assets/generated/deployment/src/lean_poc_deployment/teardown_cli.py +31 -12
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: deploy
|
|
3
|
-
description: "Guided deployment orchestration for a
|
|
3
|
+
description: "Guided deployment orchestration for a named logical environment. Verifies topology/readiness, selects the exact placement/target/artifact, preserves tool-specific authorization, delegates deterministic execution, and validates resulting evidence."
|
|
4
4
|
argument-hint: "[environment] [release-or-artifact]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
disable-model-invocation: true
|
|
@@ -8,28 +8,34 @@ disable-model-invocation: true
|
|
|
8
8
|
|
|
9
9
|
# Deploy
|
|
10
10
|
|
|
11
|
-
`/deploy` is the
|
|
11
|
+
`/deploy` is the human-facing deployment interface once the selected logical environment is ready to deploy.
|
|
12
12
|
|
|
13
|
-
Core owns interaction, validation,
|
|
13
|
+
Core owns interaction, validation, topology safety, Human-in-the-Loop authorization, and evidence-oriented orchestration. Repository-provided deployment tooling owns mechanics.
|
|
14
14
|
|
|
15
|
-
Do not implement Docker, SSH, route, migration, or application deployment logic directly in this skill when an approved repository command exists.
|
|
15
|
+
Do not implement Docker, SSH, provider API, route, migration, or application deployment logic directly in this skill when an approved repository command exists.
|
|
16
16
|
|
|
17
|
-
## 1. Begin read-only and
|
|
18
|
-
|
|
19
|
-
Invocation starts read-only.
|
|
17
|
+
## 1. Begin read-only and resolve provenance/topology
|
|
20
18
|
|
|
21
19
|
Read only the minimum repository context needed to identify:
|
|
22
20
|
|
|
23
|
-
- `
|
|
24
|
-
- `DEPLOYMENT_BASELINE.json` when
|
|
21
|
+
- `POC_BOOTSTRAP.json` deployment topology when present;
|
|
22
|
+
- `LEAN_BASELINE.json` / `DEPLOYMENT_BASELINE.json` when package-managed;
|
|
25
23
|
- approved deployment/release requirements;
|
|
26
|
-
- configured named environments and
|
|
27
|
-
- selected environment
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
Do not assume
|
|
24
|
+
- configured named environments and their role/purpose;
|
|
25
|
+
- selected environment placement, isolation, exposure, binding state, adapter, failure domain;
|
|
26
|
+
- selected environment readiness evidence;
|
|
27
|
+
- approved artifact/release policy;
|
|
28
|
+
- repository-provided deployment entry point and exact authorization contract.
|
|
29
|
+
|
|
30
|
+
Do not assume:
|
|
31
|
+
|
|
32
|
+
- deployment means remote SSH;
|
|
33
|
+
- a second computer exists;
|
|
34
|
+
- a home/trusted LAN exists;
|
|
35
|
+
- Staging or Production exists;
|
|
36
|
+
- Staging and Production use separate machines;
|
|
37
|
+
- a managed provider is supported;
|
|
38
|
+
- a deferred environment is an error.
|
|
33
39
|
|
|
34
40
|
When `DEPLOYMENT_BASELINE.json` identifies the standard Lean POC Deployment Kit and its generated entry point exists, prefer the repository-distributed interface such as:
|
|
35
41
|
|
|
@@ -37,187 +43,223 @@ When `DEPLOYMENT_BASELINE.json` identifies the standard Lean POC Deployment Kit
|
|
|
37
43
|
tools/lean-deployment/lean-poc-deploy.py
|
|
38
44
|
```
|
|
39
45
|
|
|
40
|
-
|
|
46
|
+
Do not require a separate Deployment Kit checkout.
|
|
41
47
|
|
|
42
|
-
If package/component
|
|
48
|
+
If package/component managed files are drifted or the selected environment has unresolved pre-deploy blockers, stop and route to `/lean-update`, `/upstream-fix`, the deployment work item, or `/deployment-readiness <environment>`.
|
|
43
49
|
|
|
44
|
-
|
|
50
|
+
## 2. Select one logical environment explicitly
|
|
45
51
|
|
|
46
|
-
|
|
52
|
+
If no environment is named, enumerate repository-defined environments and ask the human to select one.
|
|
47
53
|
|
|
48
|
-
|
|
54
|
+
Rules:
|
|
49
55
|
|
|
50
|
-
|
|
56
|
+
- never silently default to Production;
|
|
57
|
+
- never reuse a remembered prior selection as Production authorization;
|
|
58
|
+
- never fall back to another environment/placement/host/provider because deployment fails;
|
|
59
|
+
- environment selection chooses scope but never authorizes the write.
|
|
51
60
|
|
|
52
|
-
|
|
61
|
+
If the selected environment is explicitly deferred, do not call that an invalid repository state. Report:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
DEPLOYMENT NOT BOUND YET
|
|
65
|
+
|
|
66
|
+
Environment: <name>
|
|
67
|
+
Placement: DEFERRED
|
|
68
|
+
|
|
69
|
+
This POC can continue development/CI/docs/learning, but there is no current deployment executor for this environment.
|
|
70
|
+
|
|
71
|
+
NEXT
|
|
72
|
+
/deployment-readiness <environment>
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Do not provision or guess infrastructure inside `/deploy`.
|
|
76
|
+
|
|
77
|
+
## 3. Branch by placement/adapter
|
|
53
78
|
|
|
54
|
-
|
|
55
|
-
- never use a remembered prior selection as implicit production authorization;
|
|
56
|
-
- never fall back from one environment to another because discovery, access, readiness, or deployment failed;
|
|
57
|
-
- if a named environment is not configured, fail explicitly and route to `/deployment-readiness <environment>`;
|
|
58
|
-
- selecting an environment chooses scope but does not authorize the deployment write.
|
|
79
|
+
### A. Workstation container
|
|
59
80
|
|
|
60
|
-
|
|
81
|
+
For a current reusable topology such as:
|
|
82
|
+
|
|
83
|
+
```text
|
|
84
|
+
placement: workstation
|
|
85
|
+
isolation: container
|
|
86
|
+
exposure: loopback
|
|
87
|
+
adapter: workstation-container
|
|
88
|
+
```
|
|
61
89
|
|
|
62
|
-
|
|
90
|
+
use the repository-distributed local deployment command, for example:
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
lean-poc-deploy local ...
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Verify placement-relevant facts only:
|
|
97
|
+
|
|
98
|
+
- current workstation Docker/runtime availability/readiness evidence;
|
|
99
|
+
- exact immutable image/artifact;
|
|
100
|
+
- selected local environment identity;
|
|
101
|
+
- host/runtime port and health path when owned by project configuration;
|
|
102
|
+
- local Lean ownership/port collision plan;
|
|
103
|
+
- persistence requirements when applicable;
|
|
104
|
+
- Production policy when this logical environment is Production.
|
|
105
|
+
|
|
106
|
+
Do **not** resolve SSH hostnames, target profiles, host keys, Caddy routes, or remote OS for a workstation environment.
|
|
107
|
+
|
|
108
|
+
Current reusable workstation-container support is loopback-only. Do not widen to `0.0.0.0`, LAN, tunnel, or public exposure as an implicit convenience. A shareable/public outcome needs another supported placement/adapter.
|
|
109
|
+
|
|
110
|
+
### B. Remote target
|
|
111
|
+
|
|
112
|
+
For a remote target, preserve the strict machine/identity model:
|
|
63
113
|
|
|
64
114
|
```text
|
|
65
115
|
named environment
|
|
66
|
-
→
|
|
67
|
-
→
|
|
68
|
-
→ current address discovery
|
|
116
|
+
→ explicit logical target binding
|
|
117
|
+
→ current address/discovery
|
|
69
118
|
→ independently verified host identity
|
|
70
119
|
```
|
|
71
120
|
|
|
72
|
-
|
|
121
|
+
Before deployment:
|
|
73
122
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
-
|
|
77
|
-
- show the confirmed hostname/address when appropriate rather than asking the human to reconstruct an internal `targetName`;
|
|
78
|
-
- use the repository-approved stable internal target/profile rather than a guessed transient address;
|
|
79
|
-
- preserve enrolled host-key verification independently of current IP;
|
|
123
|
+
- verify the environment resolves to the exact target established by readiness;
|
|
124
|
+
- show the confirmed hostname/address when helpful instead of forcing an internal `targetName` on the user;
|
|
125
|
+
- preserve strict independently verified host trust;
|
|
80
126
|
- stop on unknown/changed host identity;
|
|
81
|
-
- never bypass host-key checks,
|
|
82
|
-
- verify
|
|
127
|
+
- never scan/select another host, bypass host-key checks, or weaken network controls as recovery;
|
|
128
|
+
- verify target OS/runtime compatibility required by the installed adapter.
|
|
129
|
+
|
|
130
|
+
A single physical target may host multiple logical environments. Keep their runtime/container, route, data, evidence, and authorization scopes distinct.
|
|
131
|
+
|
|
132
|
+
When the selected environment shares a physical `failureDomain` with another environment, surface that fact before the write. If Production is involved, say explicitly that host-level Production isolation is not demonstrated.
|
|
133
|
+
|
|
134
|
+
Trusted-LAN `.local` routing conventions apply only when the selected repository topology/adapter uses them. Do not project home-LAN assumptions onto public VPS, VPN/private, or other remote topologies.
|
|
135
|
+
|
|
136
|
+
### C. Managed service
|
|
83
137
|
|
|
84
|
-
|
|
138
|
+
Use only a repository/catalog-provided provider adapter.
|
|
85
139
|
|
|
86
|
-
|
|
140
|
+
If no implemented adapter exists, stop with `CATALOG GAP / PLANNED` rather than constructing provider commands from model knowledge.
|
|
141
|
+
|
|
142
|
+
Never ask for or store provider credentials unless the installed adapter defines the exact credential boundary and readiness/deployment contract.
|
|
87
143
|
|
|
88
144
|
## 4. Resolve the repository-provided launcher
|
|
89
145
|
|
|
90
|
-
Prefer the canonical
|
|
146
|
+
Prefer the canonical deployment interface established by current baselines/configuration.
|
|
91
147
|
|
|
92
|
-
|
|
148
|
+
Launcher choice depends on placement/adapter:
|
|
93
149
|
|
|
94
|
-
|
|
150
|
+
- workstation-container → repository-distributed local adapter;
|
|
151
|
+
- remote-target → repository-distributed remote adapter;
|
|
152
|
+
- managed-service → provider-specific adapter only when actually installed/supported;
|
|
153
|
+
- deferred → no launcher; route back to readiness.
|
|
95
154
|
|
|
96
|
-
|
|
155
|
+
PowerShell/shell wrappers are acceptable only when the repository defines them as the approved front end to the same deterministic contract.
|
|
97
156
|
|
|
98
|
-
If the approved launcher is absent,
|
|
157
|
+
If the approved launcher is absent, drifted, or unsupported on the current workstation/placement, stop rather than inventing mechanics.
|
|
99
158
|
|
|
100
|
-
## 5. Resolve
|
|
159
|
+
## 5. Resolve exact artifact identity
|
|
101
160
|
|
|
102
|
-
Use
|
|
161
|
+
Use repository-approved policy for the selected logical environment.
|
|
103
162
|
|
|
104
|
-
For
|
|
163
|
+
For Production require the approved formal immutable release/artifact evidence when the project requires it.
|
|
105
164
|
|
|
106
|
-
For non-
|
|
165
|
+
For non-Production, use only broader artifact policy explicitly allowed by the repository. Do not invent relaxed Staging/Demo semantics.
|
|
107
166
|
|
|
108
|
-
When promoting
|
|
167
|
+
When promoting across environments, prefer the exact same immutable artifact/digest where the repository's promotion policy requires or recommends that.
|
|
109
168
|
|
|
110
|
-
If readiness
|
|
169
|
+
If readiness preceded the final artifact, re-check artifact-specific prerequisites now when read-only checks are sufficient. Do not force a ceremonial readiness rerun when topology facts are unchanged.
|
|
111
170
|
|
|
112
|
-
## 6. Build the deterministic
|
|
171
|
+
## 6. Build the deterministic plan
|
|
113
172
|
|
|
114
|
-
Use repository-provided tooling to construct
|
|
173
|
+
Use repository-provided tooling to construct/inspect the exact plan when supported.
|
|
115
174
|
|
|
116
|
-
The plan may include
|
|
175
|
+
The plan may include only operations defined by the selected adapter/repository, for example:
|
|
117
176
|
|
|
118
177
|
```text
|
|
119
|
-
|
|
178
|
+
optional backup/safety check
|
|
120
179
|
→ release-specific migration
|
|
121
180
|
→ application/container deployment
|
|
122
|
-
→
|
|
181
|
+
→ route or loopback-port publication
|
|
123
182
|
→ health/readiness verification
|
|
124
183
|
→ smoke validation
|
|
125
184
|
→ deployment evidence capture
|
|
126
185
|
```
|
|
127
186
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
Route registration, migration, and other application/release-specific writes are deployment operations when they are part of the repository's deterministic deployment contract. They are not hidden `/deployment-readiness` side effects.
|
|
187
|
+
Placement changes which operations are meaningful. A workstation loopback deployment does not need Caddy/SSH; a remote route deployment may.
|
|
131
188
|
|
|
132
|
-
Application rollback execution, database restore/destructive recovery, target rebinding, unrelated
|
|
189
|
+
Application rollback execution, database restore/destructive recovery, target/provider rebinding, unrelated provisioning, and environment tear-down remain separate decisions unless the installed deterministic deployment contract explicitly includes a bounded safe rollback for the failed deployment itself.
|
|
133
190
|
|
|
134
|
-
## 7. Preserve
|
|
191
|
+
## 7. Preserve exact authorization contracts
|
|
135
192
|
|
|
136
|
-
Core
|
|
193
|
+
Core consequence labels do not replace stricter installed-tool phrases.
|
|
137
194
|
|
|
138
|
-
|
|
195
|
+
Examples the standard Deployment Kit may require include:
|
|
139
196
|
|
|
140
197
|
```text
|
|
198
|
+
[LOCAL APP DEPLOY]
|
|
141
199
|
[APP DEPLOY WRITE]
|
|
142
200
|
[PRODUCTION APP DEPLOY]
|
|
143
201
|
```
|
|
144
202
|
|
|
145
|
-
|
|
203
|
+
Resolve the exact phrase from the installed tool/version. Do not hardcode an example when the installed contract differs.
|
|
146
204
|
|
|
147
|
-
Authorization applies only to the exact environment,
|
|
205
|
+
Authorization applies only to the exact logical environment, placement/target/provider, artifact, reviewed plan/evidence, and operation shown. Any material change requires renewed review/authorization.
|
|
148
206
|
|
|
149
|
-
|
|
207
|
+
Production remains Production regardless of physical placement. A Production container on a shared VPS or workstation still requires the Production deployment gate; topology limitations are additional evidence, not a reason to weaken it.
|
|
150
208
|
|
|
151
|
-
## 8. Present
|
|
209
|
+
## 8. Present a topology-aware preview
|
|
152
210
|
|
|
153
|
-
Before the modifying command show
|
|
211
|
+
Before the modifying command show non-secret facts appropriate to the placement:
|
|
154
212
|
|
|
155
213
|
```text
|
|
156
214
|
DEPLOYMENT READY
|
|
157
215
|
|
|
158
216
|
Environment: <name>
|
|
159
|
-
Role:
|
|
160
|
-
|
|
161
|
-
|
|
217
|
+
Role/Purpose: <...>
|
|
218
|
+
Placement: <workstation|remote-target|managed-service>
|
|
219
|
+
Isolation: <...>
|
|
220
|
+
Exposure: <...>
|
|
221
|
+
Failure domain: <known value / not recorded>
|
|
222
|
+
Target/Machine/Provider: <only when applicable>
|
|
162
223
|
Launcher: <repository-provided command>
|
|
163
224
|
Deployment baseline: <exact commit/distribution when present>
|
|
164
225
|
Release/artifact: <verified immutable identity>
|
|
165
|
-
Pre-deploy
|
|
166
|
-
Planned
|
|
167
|
-
Required authorization: <exact
|
|
168
|
-
Post-deploy validation: route/
|
|
226
|
+
Pre-deploy blockers: NONE
|
|
227
|
+
Planned operations: <tool-defined summary>
|
|
228
|
+
Required authorization: <exact installed phrase>
|
|
229
|
+
Post-deploy validation: <placement-relevant health/route/smoke/evidence>
|
|
169
230
|
```
|
|
170
231
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
For a non-production deployment ask for one bounded authorization covering the exact reviewed plan and required tool phrase.
|
|
232
|
+
For workstation placement, replace Machine/Target OS with local Docker/loopback facts; do not display fake remote fields.
|
|
174
233
|
|
|
175
|
-
For
|
|
234
|
+
For colocated environments include the shared-failure-domain warning in the preview.
|
|
176
235
|
|
|
177
|
-
|
|
178
|
-
[PRODUCTION WRITE]
|
|
179
|
-
```
|
|
236
|
+
For Production include `[PRODUCTION WRITE]` consequence visibility plus the exact installed Production phrase.
|
|
180
237
|
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
## 9. Execute only the approved script contract
|
|
238
|
+
## 9. Execute only the approved deterministic contract
|
|
184
239
|
|
|
185
240
|
After authorization invoke only the repository-provided launcher with the explicitly selected environment and approved artifact inputs.
|
|
186
241
|
|
|
187
|
-
Do not perform unrelated
|
|
188
|
-
|
|
189
|
-
If the script reports missing prerequisites, identity mismatch, unexpected target OS, lock contention, migration failure, readiness failure, stale plan/evidence, or another blocker, stop according to the repository contract. Never redirect to another environment or host.
|
|
190
|
-
|
|
191
|
-
If a failure occurs after a partial deployment, use only repository/tool-defined safe failure handling. Do not improvise destructive rollback or database recovery.
|
|
192
|
-
|
|
193
|
-
## 10. Verify live deployment and record outcome
|
|
242
|
+
Do not perform unrelated provisioning, target rebinding, firewall changes, credential creation, exposure widening, destructive recovery, restore, or environment tear-down unless those are explicitly inside the reviewed deterministic contract.
|
|
194
243
|
|
|
195
|
-
|
|
244
|
+
If the tool reports missing prerequisites, identity mismatch, port/route collision, unsupported placement, lock contention, migration failure, readiness failure, stale evidence, or another blocker, stop. Never redirect to another environment, host, provider, or wider exposure.
|
|
196
245
|
|
|
197
|
-
|
|
246
|
+
## 10. Validate live evidence
|
|
198
247
|
|
|
199
|
-
|
|
200
|
-
- exact deployed release/artifact identity;
|
|
201
|
-
- container/process running state;
|
|
202
|
-
- application readiness/health result;
|
|
203
|
-
- smoke-test result;
|
|
204
|
-
- release-specific migration outcome;
|
|
205
|
-
- deployment evidence/current-release identity;
|
|
206
|
-
- rollback/recovery compatibility evidence when the repository contract can establish it non-destructively.
|
|
248
|
+
After execution, use repository-provided inventory/health/route/smoke/evidence commands when available.
|
|
207
249
|
|
|
208
|
-
|
|
250
|
+
Placement-relevant evidence may include:
|
|
209
251
|
|
|
210
|
-
-
|
|
211
|
-
-
|
|
212
|
-
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
- rollback/recovery
|
|
252
|
+
- exact deployed artifact identity;
|
|
253
|
+
- application container/process running state;
|
|
254
|
+
- loopback health for workstation deployment;
|
|
255
|
+
- remote route registration/resolution when applicable;
|
|
256
|
+
- application readiness/health;
|
|
257
|
+
- smoke result;
|
|
258
|
+
- migration result;
|
|
259
|
+
- current release/deployment evidence;
|
|
260
|
+
- safe rollback/recovery compatibility evidence when the installed contract can establish it non-destructively.
|
|
219
261
|
|
|
220
|
-
Do not report success merely because a command returned or a container
|
|
262
|
+
Do not report success merely because a command returned or a container started if stronger health evidence is required.
|
|
221
263
|
|
|
222
264
|
A successful deployment may be summarized as:
|
|
223
265
|
|
|
@@ -225,13 +267,14 @@ A successful deployment may be summarized as:
|
|
|
225
267
|
DEPLOYMENT VALIDATED
|
|
226
268
|
|
|
227
269
|
Environment: <name>
|
|
270
|
+
Placement: <...>
|
|
228
271
|
Artifact: <exact immutable identity>
|
|
229
|
-
Route: READY / NOT APPLICABLE
|
|
272
|
+
Endpoint/Route: READY / LOOPBACK / NOT APPLICABLE
|
|
230
273
|
Application health: READY
|
|
231
|
-
Smoke: PASSED
|
|
274
|
+
Smoke: PASSED / NOT REQUIRED
|
|
232
275
|
Deployment evidence: RECORDED / VERIFIED
|
|
233
276
|
```
|
|
234
277
|
|
|
235
|
-
For a Staging-to-Production
|
|
278
|
+
For a Staging-to-Production flow, human Staging validation may be evidence for later promotion; it never authorizes Production deployment.
|
|
236
279
|
|
|
237
|
-
|
|
280
|
+
Rollback execution, destructive database restore/recovery, and tear-down remain separate when the repository contract keeps them separate.
|