@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.
Files changed (35) hide show
  1. package/assets/components.json +3 -3
  2. package/assets/core/distribution.json +8 -0
  3. package/assets/deployment/distribution.json +2 -0
  4. package/assets/generated/ASSEMBLY.json +73 -23
  5. package/assets/generated/core/core/instructions/lean-docs.instructions.md +33 -2
  6. package/assets/generated/core/core/instructions/lean-workflow.instructions.md +42 -0
  7. package/assets/generated/core/core/learning/DIAGRAM_GUIDE.md +46 -6
  8. package/assets/generated/core/core/learning/ENGINEERING_LEARNING_WORKBOOK.md +29 -6
  9. package/assets/generated/core/core/learning/LEARNING_MAP.md +37 -2
  10. package/assets/generated/core/core/learning/LEARNING_PROGRESS.md +15 -7
  11. package/assets/generated/core/core/learning/SYSTEM_DESIGN_DRILLS.md +299 -19
  12. package/assets/generated/core/core/process/COACHING_GUIDE.md +35 -2
  13. package/assets/generated/core/core/process/DATABASE_LEARNING_WORKBENCH.md +153 -102
  14. package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +108 -71
  15. package/assets/generated/core/core/process/LEAN_ENGINEERING_GUIDE.md +317 -0
  16. package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +324 -0
  17. package/assets/generated/core/core/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md +520 -0
  18. package/assets/generated/core/core/skills/coach/SKILL.md +31 -4
  19. package/assets/generated/core/core/skills/db-lab/SKILL.md +59 -16
  20. package/assets/generated/core/core/skills/deliver/SKILL.md +77 -5
  21. package/assets/generated/core/core/skills/deploy/SKILL.md +164 -121
  22. package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +223 -250
  23. package/assets/generated/core/core/skills/docs/SKILL.md +116 -0
  24. package/assets/generated/core/core/skills/next-step/SKILL.md +21 -6
  25. package/assets/generated/core/core/skills/system-lab/SKILL.md +333 -0
  26. package/assets/generated/core/core/skills/tear-down/SKILL.md +101 -61
  27. package/assets/generated/core/core/templates/ADR_TEMPLATE.md +41 -0
  28. package/assets/generated/core/tools/docs_site/docs_site.py +382 -0
  29. package/assets/generated/core/tools/system_lab/system_workbench.py +243 -0
  30. package/assets/generated/deployment/src/lean_poc_deployment/entrypoint.py +5 -1
  31. package/assets/generated/deployment/src/lean_poc_deployment/local_cli.py +112 -0
  32. package/assets/generated/deployment/src/lean_poc_deployment/local_runtime.py +523 -0
  33. package/assets/generated/deployment/src/lean_poc_deployment/teardown.py +49 -35
  34. package/assets/generated/deployment/src/lean_poc_deployment/teardown_cli.py +31 -12
  35. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: deploy
3
- description: "Guided deployment orchestration for a configured named environment. Verifies pre-deploy readiness, selects the exact target/artifact, preserves tool-specific authorization, delegates deterministic execution, and validates the resulting live deployment."
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 normal human-facing deployment interface once deployment engineering is delivered and the selected environment is **ready to deploy**.
11
+ `/deploy` is the human-facing deployment interface once the selected logical environment is ready to deploy.
12
12
 
13
- Core owns interaction, validation, target safety, Human-in-the-Loop authorization, and evidence-oriented orchestration. Repository-provided deployment tooling owns deployment mechanics.
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 establish provenance
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
- - `LEAN_BASELINE.json` when the repository is package-managed;
24
- - `DEPLOYMENT_BASELINE.json` when present;
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 checkout-local target bindings;
27
- - selected environment pre-deploy readiness evidence;
28
- - approved release/artifact policy;
29
- - repository-provided deployment entry point and its authorization contract;
30
- - expected developer-workstation and target operating systems.
31
-
32
- Do not assume configuration filenames, target OS, SSH aliases, container runtime, or release format unless the repository establishes them.
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
- over reconstructing Deployment Kit commands by hand or requiring a separate Kit checkout.
46
+ Do not require a separate Deployment Kit checkout.
41
47
 
42
- If package/component baseline integrity is known to be drifted, deployment engineering is incomplete, or a selected environment has unresolved **pre-deploy** blockers, stop and route to `/lean-update`, `/upstream-fix`, the deployment work item, or `/deployment-readiness <environment>` as appropriate.
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
- Do not block a first deployment merely because live route resolution, application health, smoke results, deployed-release identity, or release-specific rollback evidence do not exist yet. Those are produced by this deployment flow.
50
+ ## 2. Select one logical environment explicitly
45
51
 
46
- ## 2. Select an environment explicitly
52
+ If no environment is named, enumerate repository-defined environments and ask the human to select one.
47
53
 
48
- If the invocation did not name an environment, enumerate only environments configured for this checkout and ask the human to select one.
54
+ Rules:
49
55
 
50
- Show enough non-secret identity to distinguish them.
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
- Rules:
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
- - never silently default to `production`;
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
- ## 3. Resolve and verify the machine/target binding
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
- Keep the human-facing identity simple while preserving the stronger internal model:
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
- → confirmed machine hostname/address
67
- → configured target/profile binding
68
- → current address discovery
116
+ → explicit logical target binding
117
+ → current address/discovery
69
118
  → independently verified host identity
70
119
  ```
71
120
 
72
- Address discovery is not host trust.
121
+ Before deployment:
73
122
 
74
- Before remote deployment:
75
-
76
- - verify the selected environment resolves to the configured machine/target established by readiness;
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, silently enroll new trust, scan/select another host, or weaken network controls as recovery;
82
- - verify actual target OS compatibility before target-specific behavior.
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
- Changing an environment's machine/target binding is readiness/configuration work, not deployment fallback.
138
+ Use only a repository/catalog-provided provider adapter.
85
139
 
86
- Keep private keys, passphrases, credentials, copied trust databases, and other secret values out of repository configuration and logs.
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 repository-provided deployment interface established by the current deployment baseline.
146
+ Prefer the canonical deployment interface established by current baselines/configuration.
91
147
 
92
- For package-generated Deployment Kit consumers this normally means the generated Python entry point plus its distributed modules. Do not require a sibling Deployment Kit clone for normal deployment.
148
+ Launcher choice depends on placement/adapter:
93
149
 
94
- A repository may additionally provide PowerShell/shell wrappers. Use them only when the repository defines them as the approved interface or when they intentionally wrap the same deterministic contract.
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
- Launcher choice may depend on developer workstation OS; target behavior depends on selected target OS. Do not confuse those dimensions.
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, locally drifted, or unsupported on the current workstation/target, stop rather than inventing deployment mechanics.
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 release/artifact identity
159
+ ## 5. Resolve exact artifact identity
101
160
 
102
- Use the repository's approved policy for the selected environment.
161
+ Use repository-approved policy for the selected logical environment.
103
162
 
104
- For production require the approved formal release/artifact evidence, including immutable identity when required.
163
+ For Production require the approved formal immutable release/artifact evidence when the project requires it.
105
164
 
106
- For non-production, use only the broader artifact policy explicitly allowed by the repository. Do not invent relaxed staging semantics.
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 a tested artifact to production, prefer the exact same immutable artifact/digest rather than rebuilding it.
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 was completed before the final release/artifact existed, re-check the selected artifact and any artifact-specific pre-deploy prerequisites now. Do not force a separate readiness ceremony when the remaining check can be performed read-only and the environment facts have not materially changed.
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 deployment plan
171
+ ## 6. Build the deterministic plan
113
172
 
114
- Use repository-provided tooling to construct or inspect the exact plan when supported.
173
+ Use repository-provided tooling to construct/inspect the exact plan when supported.
115
174
 
116
- The plan may include, according to the repository contract:
175
+ The plan may include only operations defined by the selected adapter/repository, for example:
117
176
 
118
177
  ```text
119
- pre-deploy backup or safety check
178
+ optional backup/safety check
120
179
  → release-specific migration
121
180
  → application/container deployment
122
- → application route registration/update
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
- Do not add operations the repository/tool does not define.
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 host provisioning, and environment tear-down remain separate decisions unless the approved deployment contract explicitly defines a safe bounded automatic rollback for the failed deployment itself.
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 the deployment tool's exact authorization contract
191
+ ## 7. Preserve exact authorization contracts
135
192
 
136
- Core may describe consequence classes using labels such as `[REMOTE WRITE]` and `[PRODUCTION WRITE]`, but those labels do not replace a stricter exact authorization phrase required by the repository-provided deployment tool.
193
+ Core consequence labels do not replace stricter installed-tool phrases.
137
194
 
138
- For example, the standard Deployment Kit may require operation-specific phrases such as:
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
- The exact phrase must be resolved from the installed repository/tool contract. Do not hardcode an example phrase when the installed version requires a different one.
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, verified target, artifact, plan/evidence, and operation shown. If any materially changes, stop and require renewed review/authorization.
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
- No requirements approval, code review, PR merge, CI pass, environment selection, prior deployment, or readiness result implicitly authorizes a deployment write.
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 the deployment preview and gate
209
+ ## 8. Present a topology-aware preview
152
210
 
153
- Before the modifying command show the resolved non-secret facts:
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: <production|non-production>
160
- Machine: <confirmed hostname/address>
161
- Target OS: <verified>
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 readiness blockers: NONE
166
- Planned deployment operations: <repository/tool-defined summary>
167
- Required authorization: <exact tool phrase or repository gate>
168
- Post-deploy validation: route/health/smoke/evidence checks that will run after the write
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
- Include an internal target/profile label only when it materially helps disambiguate the exact machine or tool plan. Do not make that identifier the primary human-facing identity.
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 production require the project's explicit production deployment gate and the exact installed tool phrase. Keep the consequence visible as:
234
+ For colocated environments include the shared-failure-domain warning in the preview.
176
235
 
177
- ```text
178
- [PRODUCTION WRITE]
179
- ```
236
+ For Production include `[PRODUCTION WRITE]` consequence visibility plus the exact installed Production phrase.
180
237
 
181
- Do not translate a generic `approve` into a broader tool-specific phrase unless the user clearly authorized the exact reviewed deployment operation represented by that phrase.
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 host provisioning, target rebinding, firewall changes, credential creation, destructive recovery, database restore, or other out-of-band writes as part of `/deploy` unless they are explicitly inside the reviewed deterministic deployment contract.
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
- After execution, use repository-provided inventory, route, readiness, health, smoke, and evidence commands when available.
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
- For a first deployment, this is where evidence such as the following becomes meaningful:
246
+ ## 10. Validate live evidence
198
247
 
199
- - application route registration and client-resolvable route behavior when verifiable from the approved surface;
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
- Report only evidence-backed outcomes:
250
+ Placement-relevant evidence may include:
209
251
 
210
- - selected environment;
211
- - verified machine/target identity;
212
- - deployment baseline/tool identity when relevant;
213
- - release/artifact identity;
214
- - deployment result;
215
- - route result when applicable;
216
- - readiness/health/smoke result;
217
- - migration result when applicable;
218
- - rollback/recovery capability/evidence when applicable.
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/process started if stronger readiness evidence is required.
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 promotion flow, the repository may require a human Staging validation/attestation after this technical validation. That validation is evidence for later Production promotion; it does not itself authorize Production deployment.
278
+ For a Staging-to-Production flow, human Staging validation may be evidence for later promotion; it never authorizes Production deployment.
236
279
 
237
- Application rollback execution, database restore/destructive recovery, and environment tear-down remain separate decisions when the repository contract makes them separate.
280
+ Rollback execution, destructive database restore/recovery, and tear-down remain separate when the repository contract keeps them separate.