@mriekki/lean 0.4.4 → 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 (22) hide show
  1. package/assets/components.json +3 -3
  2. package/assets/core/distribution.json +5 -0
  3. package/assets/deployment/distribution.json +2 -0
  4. package/assets/generated/ASSEMBLY.json +48 -13
  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/process/DEPLOYMENT_ENABLEMENT.md +108 -71
  8. package/assets/generated/core/core/process/LEAN_ENGINEERING_GUIDE.md +317 -0
  9. package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +324 -0
  10. package/assets/generated/core/core/skills/deploy/SKILL.md +164 -121
  11. package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +223 -250
  12. package/assets/generated/core/core/skills/docs/SKILL.md +116 -0
  13. package/assets/generated/core/core/skills/next-step/SKILL.md +15 -10
  14. package/assets/generated/core/core/skills/tear-down/SKILL.md +101 -61
  15. package/assets/generated/core/core/templates/ADR_TEMPLATE.md +41 -0
  16. package/assets/generated/core/tools/docs_site/docs_site.py +382 -0
  17. package/assets/generated/deployment/src/lean_poc_deployment/entrypoint.py +5 -1
  18. package/assets/generated/deployment/src/lean_poc_deployment/local_cli.py +112 -0
  19. package/assets/generated/deployment/src/lean_poc_deployment/local_runtime.py +523 -0
  20. package/assets/generated/deployment/src/lean_poc_deployment/teardown.py +49 -35
  21. package/assets/generated/deployment/src/lean_poc_deployment/teardown_cli.py +31 -12
  22. package/package.json +1 -1
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: docs
3
+ description: "Open or inspect the repository's current Lean project documentation site, ownership/authority map, and DB/System evidence freshness without creating a new workflow gate."
4
+ argument-hint: "[open|check|build]"
5
+ user-invocable: true
6
+ disable-model-invocation: true
7
+ ---
8
+
9
+ # Project Docs
10
+
11
+ `/docs` is the front door to repository documentation. It is read-only with respect to project prose unless the human explicitly asks to edit documentation.
12
+
13
+ ## Purpose
14
+
15
+ Use `/docs` to:
16
+
17
+ - open the local project documentation site;
18
+ - inspect documentation ownership/authority;
19
+ - find the correct product, architecture, engineering, operations, learning, or ADR document;
20
+ - see whether disposable System/DB evidence views are current, stale, unknown, or absent;
21
+ - keep `/db-lab` and `/system-lab` easy to discover.
22
+
23
+ Markdown remains canonical. The site is a generated local projection.
24
+
25
+ ## Default behavior
26
+
27
+ When invoked without a mode:
28
+
29
+ 1. Read `docs/lean-docs.json` when present.
30
+ 2. Verify the documentation viewer exists at `tools/lean-docs/docs-site.py`.
31
+ 3. If it exists, use the repository-local Python/runtime convention to run:
32
+
33
+ ```text
34
+ python tools/lean-docs/docs-site.py serve --root .
35
+ ```
36
+
37
+ The viewer binds to loopback only and writes disposable output under `.lean/`.
38
+
39
+ If the tool is unavailable, do not invent installation support. Fall back to a concise documentation map from repository Markdown and mention that the local viewer is unavailable in the current accepted baseline.
40
+
41
+ ## Modes
42
+
43
+ ### `/docs open`
44
+
45
+ Equivalent to the default behavior.
46
+
47
+ ### `/docs check`
48
+
49
+ Do not open a browser. Inspect:
50
+
51
+ - `docs/lean-docs.json` validity when present;
52
+ - missing listed documents;
53
+ - ownership/authority declarations;
54
+ - current Git commit;
55
+ - System Lab cache freshness when evidence exists;
56
+ - DB Lab cache availability/freshness only when evidence supports a conclusion.
57
+
58
+ Do not treat a missing optional Lean-managed document as project corruption when Bootstrap generation and reusable-package application are still distinct phases.
59
+
60
+ ### `/docs build`
61
+
62
+ Generate the disposable site without serving it:
63
+
64
+ ```text
65
+ python tools/lean-docs/docs-site.py build --root . --out .lean/docs-site
66
+ ```
67
+
68
+ This is a local derived artifact and should not normally be committed.
69
+
70
+ ## Current-by-default evidence
71
+
72
+ System Lab can reconstruct architecture from repository evidence. The docs viewer may best-effort prepare the current System Lab projection when it starts and the tool is present.
73
+
74
+ Database Lab is stricter: do not guess a database path. Show an existing DB projection or hand off to `/db-lab`; automatic generation is allowed only when a safe local development/test database path is already explicit.
75
+
76
+ Never create a database, apply migrations, mutate application data, or inspect Production merely to populate documentation.
77
+
78
+ ## Ownership
79
+
80
+ Respect `docs/lean-docs.json`:
81
+
82
+ - `project` — project-owned prose and ADRs;
83
+ - `lean` — reusable managed reference/process material;
84
+ - `generated-evidence` — disposable projections.
85
+
86
+ Do not silently rewrite `project` documents during `/docs` just because code changed. Surface likely documentation impact instead.
87
+
88
+ ## ADR behavior
89
+
90
+ If current evidence reveals a consequential architecture choice that lacks a durable decision record, `/docs` may recommend creating an ADR from `docs/templates/ADR_TEMPLATE.md`.
91
+
92
+ Recommendation is not approval. Do not invent or accept the decision for the human.
93
+
94
+ ## Output when not opening the site
95
+
96
+ Prefer a compact result such as:
97
+
98
+ ```text
99
+ PROJECT DOCS
100
+
101
+ Entry: PROJECT_BRIEF.md
102
+ Product authority: docs/product/PRODUCT_BRIEF.md
103
+ Work-item authority: docs/work-items/...
104
+ Current commit: abc1234
105
+
106
+ System evidence: CURRENT / STALE / NOT GENERATED
107
+ Database evidence: CURRENT / STALE / AVAILABLE-FRESHNESS-UNKNOWN / NOT GENERATED
108
+
109
+ Useful:
110
+ - /system-lab
111
+ - /db-lab
112
+ - /code-walkthrough
113
+ - /learning-review
114
+ ```
115
+
116
+ Documentation status is not a delivery gate unless an approved work item explicitly requires documentation as acceptance evidence.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: next-step
3
- description: Read-only orientation over work-item, Git, review, PR, PR CI, merge, post-merge default-branch CI, deployment readiness, and deployment handoff state.
3
+ description: Read-only orientation over work-item, Git, review, PR, PR CI, merge, post-merge default-branch CI, deployment readiness, deployment handoff state, and optional documentation/learning surfaces.
4
4
  argument-hint: "[optional work-item ID or external key]"
5
5
  user-invocable: true
6
6
  disable-model-invocation: true
@@ -68,7 +68,7 @@ Use only states supported by observed evidence.
68
68
 
69
69
  Do not add a separate final-PR-acceptance state when the PR still exactly matches the already accepted local implementation. In that normal case, `/deliver` combines final acceptance and merge into the single `MERGE_READY` decision. If PR evidence changed materially, describe the required final PR review explicitly before returning to `MERGE_READY`.
70
70
 
71
- Do not add learning-only states such as `CODE_WALKTHROUGH_PENDING`. Optional coaching and labs do not change engineering delivery state.
71
+ Do not add learning- or documentation-only states such as `CODE_WALKTHROUGH_PENDING` or `DOCS_UPDATE_PENDING`. Optional coaching, labs, and project documentation do not change engineering delivery state unless the approved work item explicitly makes documentation acceptance evidence.
72
72
 
73
73
  ## 3. Output
74
74
 
@@ -88,11 +88,12 @@ OPTIONS
88
88
 
89
89
  Only show relevant options. `/next-step` orients; it does not become another workflow database.
90
90
 
91
- ## 4. Optional learning choices
91
+ ## 4. Optional documentation and learning choices
92
92
 
93
- When implementation is stable enough to learn from and the human appears interested in understanding the code, `/next-step` may offer learning choices without making them gates:
93
+ When implementation is stable enough to understand or document, `/next-step` may offer these choices without making them gates:
94
94
 
95
95
  ```text
96
+ /docs [open|check|build] — project documentation map/site and evidence freshness [READ ONLY]
96
97
  /code-walkthrough <scope> — guided changed-file explanation [READ ONLY]
97
98
  /learning-review <scope> — understanding assessment [READ ONLY]
98
99
  /coach <topic> — focused concept coaching [READ ONLY]
@@ -100,13 +101,17 @@ When implementation is stable enough to learn from and the human appears interes
100
101
  /system-lab [changes <work-item>] — current architecture/runtime/failure/design evidence [READ ONLY]
101
102
  ```
102
103
 
103
- Prefer `/code-walkthrough` when the user wants to understand what changed across an implementation. Prefer `/db-lab` when the question depends on concrete schema/query/index/ORM evidence. Prefer `/system-lab` when it depends on architecture, runtime flows, APIs, dependencies, failure behavior, scale, messaging, observability, security, deployment, testing, or system-design tradeoffs.
104
+ Prefer `/docs` when the user wants the coherent project briefing, documentation map, ADR/architecture/operations references, or current DB/System projection status. Prefer `/code-walkthrough` when the user wants to understand what changed across an implementation. Prefer `/db-lab` when the question depends on concrete schema/query/index/ORM evidence. Prefer `/system-lab` when it depends on architecture, runtime flows, APIs, dependencies, failure behavior, scale, messaging, observability, security, deployment, testing, or system-design tradeoffs.
104
105
 
105
- When a known work-item diff materially touches one of those evidence areas, make the corresponding `changes <work-item>` option visibly relevant. Do not claim a runtime or physical-schema change solely because a file was touched.
106
+ When a known work-item diff materially touches documentation-sensitive areas, make the impact visible without inventing a gate. Examples include public contracts, architecture/dependencies, persistence/schema, deployment/environments, developer workflow, test strategy, or a consequential architecture tradeoff that may deserve an ADR.
106
107
 
107
- Labs inspect current evidence when invoked. Do not tell the human to refresh or rebuild a generated diagram.
108
+ Safe generated projections may be prepared automatically. Do not silently rewrite project-owned prose or accept an ADR on the human's behalf merely because implementation evidence changed.
108
109
 
109
- Do not recommend any learning activity as mandatory before `/deliver`.
110
+ When a known work-item diff materially touches a DB/System evidence area, make the corresponding `changes <work-item>` option visibly relevant. Do not claim a runtime or physical-schema change solely because a file was touched.
111
+
112
+ Labs inspect current evidence when invoked. Do not tell the human to refresh, rebuild, or manually synchronize a generated diagram.
113
+
114
+ Do not recommend any documentation or learning activity as mandatory before `/deliver` unless the approved work item explicitly requires it.
110
115
 
111
116
  ## 5. Delivery handoff
112
117
 
@@ -148,7 +153,7 @@ Never merge from `/next-step` merely because CI is green.
148
153
  After merge:
149
154
  - if required default-branch CI is pending, return to `/deliver` to resume observation/finalization;
150
155
  - if failed, inspect/diagnose;
151
- - if green and branch finalization is safe/complete, report delivery complete and optional relevant learning follow-ups without changing the delivery state.
156
+ - if green and branch finalization is safe/complete, report delivery complete and optional relevant documentation/learning follow-ups without changing the delivery state.
152
157
 
153
158
  ## 6. Deployment handoff
154
159
 
@@ -182,4 +187,4 @@ Do not infer readiness of one environment from another. Production is never an i
182
187
 
183
188
  Do not auto-run Reviewer, auto-run learning activities, auto-merge, auto-deploy, pin/select a model, or maintain duplicate workflow state outside Git/GitHub and the configured work-item/readiness authority.
184
189
 
185
- Generating a disposable read-only learning workbench is not the same as auto-running a learning activity or proving understanding. `/deliver` may prepare such artifacts best-effort after successful delivery when safe and relevant; learning itself remains optional.
190
+ Generating a disposable read-only documentation or learning workbench is not the same as performing a learning activity, approving documentation prose, or proving understanding. `/deliver` may prepare such artifacts best-effort after successful delivery when safe and relevant; learning itself remains optional.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: tear-down
3
- description: "Guided destructive environment cleanup for local, Staging, Production, or all supported POC scopes. Preserves exact ownership boundaries, separate Production-data authorization, and delegates deletion mechanics to repository-provided tooling."
4
- argument-hint: "[local|staging|production|all]"
3
+ description: "Guided destructive cleanup for local state, one exact named logical environment, or all explicitly configured POC environments. Preserves ownership boundaries and separate Production-data authorization."
4
+ argument-hint: "[local|<environment>|all]"
5
5
  user-invocable: true
6
6
  disable-model-invocation: true
7
7
  ---
@@ -10,129 +10,169 @@ disable-model-invocation: true
10
10
 
11
11
  `/tear-down` is the human-facing destructive cleanup workflow for repository-owned POC environments and local runtime state.
12
12
 
13
- The skill owns scope selection, read-only preflight, destructive preview, and Human-in-the-Loop authorization. Repository-provided deployment tooling owns teardown mechanics.
13
+ The skill owns scope selection, read-only preflight, destructive preview, and Human-in-the-Loop authorization. Repository-provided deployment tooling owns deletion mechanics.
14
+
15
+ Logical environments are not limited to Staging and Production. A repository may define `demo`, `qa`, `staging`, `production`, or another safe named environment.
14
16
 
15
17
  Do not implement Docker, filesystem, route, database, registry, or host cleanup directly in the skill when an approved repository command exists.
16
18
 
17
19
  ## 1. Begin read-only
18
20
 
19
- Invocation starts read-only.
20
-
21
21
  Read only the minimum repository context needed to identify:
22
22
 
23
- - the repository's approved tear-down entry point;
24
- - the canonical repository/application identity used by that entry point;
25
- - configured Staging and Production environment-to-target bindings when those scopes are available;
26
- - the exact local image/package identity used to identify POC-owned local Docker state;
27
- - the currently supported tear-down scopes and their ownership boundaries.
23
+ - approved tear-down entry point and installed Deployment Kit version/baseline when applicable;
24
+ - canonical repository/application identity;
25
+ - repository-defined logical environments, their roles/purposes, and explicit target bindings;
26
+ - which selected environments are Production-class;
27
+ - exact local image/package identity used for POC-owned workstation Docker cleanup;
28
+ - supported tear-down scopes and ownership boundaries.
29
+
30
+ Do not assume:
28
31
 
29
- Do not assume script paths, container names, volume names, environment bindings, target addresses, or package coordinates unless the repository establishes them.
32
+ - Staging/Production are the only environments;
33
+ - Staging and Production use separate physical machines;
34
+ - `all` always means exactly local + Staging + Production;
35
+ - a local package exists;
36
+ - remote target addresses/aliases;
37
+ - container/volume names not established by the deterministic tool.
30
38
 
31
- If the repository does not provide an approved deterministic tear-down command for the requested scope, stop. Do not improvise destructive shell commands.
39
+ If the repository does not provide an approved deterministic command for the requested destructive scope, stop. Do not improvise shell commands.
32
40
 
33
- ## 2. Select the scope explicitly
41
+ ## 2. Select exact scope
34
42
 
35
- Supported generic scope names are:
43
+ Generic scope model:
36
44
 
37
45
  ```text
38
46
  local
39
- staging
40
- production
47
+ <one exact repository-defined named environment>
41
48
  all
42
49
  ```
43
50
 
44
- If the invocation did not name a scope, present only scopes the current repository actually supports and ask the human to select one.
51
+ If no scope is named, present only scopes the current repository actually supports.
45
52
 
46
53
  Rules:
47
54
 
48
- - never silently default to `production` or `all`;
49
- - never infer destructive scope from a previous deployment or prior conversation;
50
- - never widen a requested scope after a failure;
51
- - `all` means all supported tear-down scopes for this one repository/POC, not machine-wide cleanup;
52
- - selecting a scope does not itself authorize deletion.
55
+ - never silently default to a Production environment or `all`;
56
+ - never infer destructive scope from a prior deploy/conversation;
57
+ - never widen scope after failure;
58
+ - `all` means all explicitly configured/supplied scopes for this one POC, never machine-wide cleanup;
59
+ - selecting scope never authorizes deletion.
60
+
61
+ A named environment is independently targetable even when multiple environments share one physical target/failure domain.
62
+
63
+ If a named environment is unsupported/unconfigured, fail explicitly rather than falling back to another environment on the same host.
53
64
 
54
- If a named scope is unsupported or not configured, fail explicitly.
65
+ ## 3. Resolve ownership and Production classification
55
66
 
56
- ## 3. Resolve exact ownership and target evidence
67
+ Before an authorization gate, resolve non-secret ownership/evidence required by the installed tear-down contract.
68
+
69
+ For local cleanup identify the exact POC-owned local runtime/package boundary.
70
+
71
+ For each selected remote environment identify:
72
+
73
+ ```text
74
+ environment name
75
+ role/purpose (including Production classification)
76
+ configured logical target
77
+ repository/application identity
78
+ ownership markers required by the deterministic tool
79
+ ```
57
80
 
58
- Before presenting an authorization gate, resolve the non-secret ownership evidence required by the repository's tear-down contract.
81
+ The literal environment name `production` should be treated as Production when the installed Deployment Kit does so for compatibility. Repositories may also classify another named environment as Production; pass that classification only through the installed tool's supported contract (for example `--production-environment <name>`).
59
82
 
60
- For local cleanup, this should identify the exact POC-owned local runtime/package boundary. For remote environments, this should identify the exact named environment, configured logical target, repository/application identity, and any ownership markers the deterministic tear-down tool verifies.
83
+ Physical colocation never merges ownership. `staging` cleanup must not remove `production` because both bind to the same VPS.
61
84
 
62
- Preserve the repository's shared-resource boundary. Normal POC tear-down must not broaden into deletion of shared platform infrastructure, unrelated POCs, workstation trust/credentials, or registry packages unless the repository defines a separate explicit lifecycle operation for those resources.
85
+ Preserve shared-resource boundaries. Normal POC tear-down must not broaden into shared platform infrastructure, unrelated POCs/environments, workstation trust/credentials, or registry packages unless a separate explicit lifecycle operation owns those resources.
63
86
 
64
- If ownership is ambiguous, a target binding changed, host identity cannot be verified, or the underlying tool reports mismatched ownership, stop without deletion.
87
+ If ownership is ambiguous, a binding/evidence set changed, host identity cannot be verified where required, or the tool reports mismatched ownership, stop without deletion.
65
88
 
66
- ## 4. Present the destructive preview
89
+ ## 4. Present exact destructive preview
67
90
 
68
- Before authorization, show what will be removed and what will be preserved using the repository's actual contract.
91
+ Show what will be removed and preserved using current repository/tool evidence.
69
92
 
70
- A typical preview is:
93
+ Example:
71
94
 
72
95
  ```text
73
96
  TEAR-DOWN READY
74
97
 
75
- Scope: <local|staging|production|all>
98
+ Scope: <local|demo|staging|production|other|all>
76
99
  Repository/app: <verified identity>
77
- Staging target: <verified logical target or not selected>
78
- Production target: <verified logical target or not selected>
79
- Local package/runtime identity: <exact identity or not selected>
100
+ Selected environments:
101
+ <env> → <logical target> — <Production/non-Production>
102
+ Local package/runtime: <exact identity or NOT SELECTED>
80
103
 
81
104
  Will remove:
82
- <repository-supported owned resources>
105
+ <tool/repository-supported owned resources for exactly these scopes>
83
106
 
84
107
  Will preserve:
85
- <shared/unrelated resources established by the repository contract>
108
+ <shared/unrelated environments/resources>
86
109
  ```
87
110
 
88
- For Deployment-Kit consumers, expected behavior includes:
111
+ For current Deployment-Kit consumers:
89
112
 
90
- - `local` — exact-package local containers/images and Docker-managed anonymous volumes attached to those owned containers;
91
- - `staging` — the owned Staging route, runtime, release/evidence state, persistent application data, and backups;
92
- - `production` — the owned Production route, runtime, release/evidence state, persistent application data, and backups;
93
- - `all` — Staging + Production + local for the selected POC only.
113
+ - `local` — exact-package local containers/images and Docker-managed anonymous volumes attached to those exact containers;
114
+ - `<environment>` — only that exact owned route/runtime/release/evidence/persistent-data/backup scope;
115
+ - `all` — all explicitly supplied named environment bindings plus optional exact-package local state when supplied.
94
116
 
95
- Do not promise deletion of named/shared Docker volumes or other resources unless the repository has an independent ownership model that safely proves they belong to this POC.
117
+ Do not promise deletion of named/shared Docker volumes or other resources unless independent ownership can be proven.
96
118
 
97
- ## 5. Require the destructive authorization gate
119
+ When selected logical environments share one physical target, say so in the preview so the user can verify that the deletion set remains environment-scoped.
98
120
 
99
- Every modifying tear-down requires one explicit bounded authorization for the exact previewed scope and evidence:
121
+ ## 5. Authorization gates
122
+
123
+ Every modifying tear-down requires:
100
124
 
101
125
  ```text
102
126
  [POC TEAR DOWN]
103
127
  ```
104
128
 
105
- For `production` or `all`, persistent Production data is part of the requested destructive scope. Require an additional independent authorization:
129
+ Additionally, whenever **any selected environment is Production-class**, require:
106
130
 
107
131
  ```text
108
132
  [PRODUCTION DATA DELETE]
109
133
  ```
110
134
 
111
- The Production-data authorization is required even when Production was previously deployed, tested, approved, or selected. Deployment authorization does not authorize data deletion.
135
+ Do not tie the Production-data gate only to literal scope strings `production` or `all`. It depends on the resolved deletion set and Production classification.
136
+
137
+ Deployment authorization, prior testing, CI, merge approval, environment selection, and physical colocation do not authorize persistent Production data deletion.
138
+
139
+ If repository/app identity, selected environments, Production classification, target binding, ownership evidence, or deletion set changes after preview, require renewed review/authorization.
140
+
141
+ ## 6. Execute only repository-provided command
142
+
143
+ After exact authorization, invoke only the approved tear-down command with the exact selected scopes and resolved inputs.
112
144
 
113
- If the resolved repository/app identity, target binding, ownership evidence, or deletion set materially changes after the preview, stop and require renewed review and authorization.
145
+ For generalized Deployment Kit consumers this may include repeated explicit environment bindings such as:
114
146
 
115
- ## 6. Execute only the approved repository command
147
+ ```text
148
+ --environment-target demo=<target>
149
+ --environment-target staging=<target>
150
+ --environment-target production=<target>
151
+ ```
152
+
153
+ and, when needed for a non-literal Production environment:
116
154
 
117
- After the required authorization phrase or phrases are explicitly provided, invoke only the repository-approved tear-down command with the exact selected scope and resolved inputs.
155
+ ```text
156
+ --production-environment prod-east
157
+ ```
118
158
 
119
- Pass authorization through only when the repository command expects the same bounded contract. Do not translate one approval into broader deletion authority.
159
+ Do not manually substitute another binding format if the installed version has a different contract; inspect the distributed tool/help/docs first.
120
160
 
121
- Do not add machine-wide Docker prune, shared-network removal, shared Caddy/Avahi removal, unrelated branch/repository cleanup, registry-package deletion, host reprovisioning, target rebinding, or secret/trust cleanup unless those operations are separately defined and explicitly authorized by the repository.
161
+ Never add machine-wide Docker prune, shared-network/Caddy/Avahi removal, unrelated environment cleanup, registry-package deletion, host reprovisioning, target rebinding, or secret/trust deletion unless separately defined and explicitly authorized.
122
162
 
123
- If the deterministic command stops partway through `all`, report the completed and remaining scopes. Do not compensate by manually deleting the remainder.
163
+ If an aggregate `all` operation stops partway, report completed/remaining scopes. Do not manually compensate by deleting the rest.
124
164
 
125
- ## 7. Verify and report the outcome
165
+ ## 7. Verify/report outcome
126
166
 
127
- Use repository-provided evidence/status commands when available. Report only what the evidence supports, including:
167
+ Use repository-provided evidence/status commands when available. Report only supported evidence:
128
168
 
129
169
  - requested scope;
130
170
  - repository/application identity;
131
- - environments/targets actually processed;
132
- - local runtime state actually processed;
133
- - whether persistent Production data was included;
171
+ - exact logical environments/targets processed;
172
+ - Production-class environments included;
173
+ - local runtime state processed;
134
174
  - removed versus already-absent resources;
135
- - any failure point or remaining scope after a partial stop;
136
- - confirmation that shared/unrelated resources were preserved when the repository provides evidence for that claim.
175
+ - failure point/remaining scopes after a partial stop;
176
+ - preservation of shared/unrelated resources only when evidence supports it.
137
177
 
138
- The operation should remain safe to rerun for already-absent owned resources when the repository's tear-down contract says it is idempotent.
178
+ The operation should remain safe to rerun for already-absent owned resources when the installed tear-down contract is idempotent.
@@ -0,0 +1,41 @@
1
+ # ADR-NNN — <Decision title>
2
+
3
+ Status: **PROPOSED**
4
+
5
+ Date: `<YYYY-MM-DD>`
6
+
7
+ ## Context
8
+
9
+ What engineering/product constraint or tradeoff requires a durable decision?
10
+
11
+ ## Decision
12
+
13
+ What was decided?
14
+
15
+ Do not mark an ADR accepted until the human/repository process has actually accepted the decision.
16
+
17
+ ## Alternatives considered
18
+
19
+ - `<alternative>` — why it was considered and why it was not selected.
20
+ - `<alternative>` — why it was considered and why it was not selected.
21
+
22
+ ## Tradeoffs / consequences
23
+
24
+ ### Benefits
25
+
26
+ - `<benefit>`
27
+
28
+ ### Costs / risks
29
+
30
+ - `<cost or risk>`
31
+
32
+ ## Evidence / links
33
+
34
+ - Work item: `<ID or link>`
35
+ - Relevant code/config: `<path>`
36
+ - System Lab scenario/component: `<reference when useful>`
37
+ - Other docs: `<link>`
38
+
39
+ ## Follow-up / review trigger
40
+
41
+ What future condition should cause this decision to be revisited?