@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.
- package/assets/components.json +3 -3
- package/assets/core/distribution.json +5 -0
- package/assets/deployment/distribution.json +2 -0
- package/assets/generated/ASSEMBLY.json +48 -13
- 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/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/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 +15 -10
- 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/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
package/assets/components.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/lean",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.5",
|
|
5
5
|
"defaultProfile": "greenfield-poc",
|
|
6
6
|
"profiles": {
|
|
7
7
|
"greenfield-poc": {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"components": {
|
|
15
15
|
"core": {
|
|
16
16
|
"repository": "mriekki/lean-agentic-core",
|
|
17
|
-
"commit": "
|
|
17
|
+
"commit": "68f3f45e663cab535c5a9544cf4efe2f048f8f34",
|
|
18
18
|
"version": "1.13.0",
|
|
19
19
|
"distribution": "greenfield-workspace",
|
|
20
20
|
"descriptor": "assets/core/distribution.json",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
},
|
|
24
24
|
"deployment": {
|
|
25
25
|
"repository": "mriekki/lean-poc-deployment-kit",
|
|
26
|
-
"commit": "
|
|
26
|
+
"commit": "bfe07aac1809d4cf41428fba9fdbcfe6a5e85470",
|
|
27
27
|
"distribution": "greenfield-poc",
|
|
28
28
|
"descriptor": "assets/deployment/distribution.json",
|
|
29
29
|
"sourceRoot": "assets/generated/deployment",
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
{"source":"core/skills/coach/SKILL.md","destination":".github/skills/coach/SKILL.md"},
|
|
27
27
|
{"source":"core/skills/db-lab/SKILL.md","destination":".github/skills/db-lab/SKILL.md"},
|
|
28
28
|
{"source":"core/skills/system-lab/SKILL.md","destination":".github/skills/system-lab/SKILL.md"},
|
|
29
|
+
{"source":"core/skills/docs/SKILL.md","destination":".github/skills/docs/SKILL.md"},
|
|
29
30
|
{"source":"core/skills/code-walkthrough/SKILL.md","destination":".github/skills/code-walkthrough/SKILL.md"},
|
|
30
31
|
{"source":"core/skills/learning-review/SKILL.md","destination":".github/skills/learning-review/SKILL.md"},
|
|
31
32
|
{"source":"core/process/WORK_ITEM_MODEL.md","destination":"docs/process/WORK_ITEM_MODEL.md"},
|
|
@@ -37,11 +38,14 @@
|
|
|
37
38
|
{"source":"core/process/COACHING_GUIDE.md","destination":"docs/process/COACHING_GUIDE.md"},
|
|
38
39
|
{"source":"core/process/DATABASE_LEARNING_WORKBENCH.md","destination":"docs/process/DATABASE_LEARNING_WORKBENCH.md"},
|
|
39
40
|
{"source":"core/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md","destination":"docs/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md"},
|
|
41
|
+
{"source":"core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md","destination":"docs/process/PROJECT_DOCUMENTATION_FRAMEWORK.md"},
|
|
42
|
+
{"source":"core/process/LEAN_ENGINEERING_GUIDE.md","destination":"docs/lean/LEAN_ENGINEERING_GUIDE.md"},
|
|
40
43
|
{"source":"core/process/SETUP_ACCEPTANCE_CHECKLIST.md","destination":"docs/process/SETUP_ACCEPTANCE_CHECKLIST.md"},
|
|
41
44
|
{"source":"core/templates/PULL_REQUEST_TEMPLATE.md","destination":".github/PULL_REQUEST_TEMPLATE.md"},
|
|
42
45
|
{"source":"core/templates/PRODUCT_BRIEF_TEMPLATE.md","destination":"docs/templates/PRODUCT_BRIEF_TEMPLATE.md"},
|
|
43
46
|
{"source":"core/templates/FEATURE_BRIEF_TEMPLATE.md","destination":"docs/templates/FEATURE_BRIEF_TEMPLATE.md"},
|
|
44
47
|
{"source":"core/templates/REQUIREMENTS_TEMPLATE.md","destination":"docs/templates/REQUIREMENTS_TEMPLATE.md"},
|
|
48
|
+
{"source":"core/templates/ADR_TEMPLATE.md","destination":"docs/templates/ADR_TEMPLATE.md"},
|
|
45
49
|
{"source":"core/learning/ENGINEERING_LEARNING_WORKBOOK.md","destination":"learning/ENGINEERING_LEARNING_WORKBOOK.md"},
|
|
46
50
|
{"source":"core/learning/LEARNING_MAP.md","destination":"learning/LEARNING_MAP.md"},
|
|
47
51
|
{"source":"core/learning/LEARNING_PROGRESS.md","destination":"learning/LEARNING_PROGRESS.md"},
|
|
@@ -52,6 +56,7 @@
|
|
|
52
56
|
{"source":"core/learning/RESOURCE_CATALOG.md","destination":"learning/RESOURCE_CATALOG.md"},
|
|
53
57
|
{"source":"tools/db_lab/sqlite_workbench.py","destination":"tools/lean-db-lab/sqlite-workbench.py"},
|
|
54
58
|
{"source":"tools/system_lab/system_workbench.py","destination":"tools/lean-system-lab/system-workbench.py"},
|
|
59
|
+
{"source":"tools/docs_site/docs_site.py","destination":"tools/lean-docs/docs-site.py"},
|
|
55
60
|
{"source":"tools/package/check_baseline.py","destination":"tools/lean-core/check-core-baseline.py"},
|
|
56
61
|
{"source":"tools/package/check_upstream.py","destination":"tools/lean-core/check-core-upstream.py"}
|
|
57
62
|
]
|
|
@@ -9,6 +9,8 @@
|
|
|
9
9
|
{"source": "src/lean_poc_deployment/app_cli.py", "destination": "tools/lean-deployment/lean_poc_deployment/app_cli.py"},
|
|
10
10
|
{"source": "src/lean_poc_deployment/app_runtime.py", "destination": "tools/lean-deployment/lean_poc_deployment/app_runtime.py"},
|
|
11
11
|
{"source": "src/lean_poc_deployment/app_runtime_remote.py", "destination": "tools/lean-deployment/lean_poc_deployment/app_runtime_remote.py"},
|
|
12
|
+
{"source": "src/lean_poc_deployment/local_cli.py", "destination": "tools/lean-deployment/lean_poc_deployment/local_cli.py"},
|
|
13
|
+
{"source": "src/lean_poc_deployment/local_runtime.py", "destination": "tools/lean-deployment/lean_poc_deployment/local_runtime.py"},
|
|
12
14
|
{"source": "src/lean_poc_deployment/box_platform.py", "destination": "tools/lean-deployment/lean_poc_deployment/box_platform.py"},
|
|
13
15
|
{"source": "src/lean_poc_deployment/box_platform_assets.py", "destination": "tools/lean-deployment/lean_poc_deployment/box_platform_assets.py"},
|
|
14
16
|
{"source": "src/lean_poc_deployment/box_platform_remote.py", "destination": "tools/lean-deployment/lean_poc_deployment/box_platform_remote.py"},
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/lean",
|
|
4
|
-
"version": "0.4.
|
|
4
|
+
"version": "0.4.5",
|
|
5
5
|
"components": {
|
|
6
6
|
"core": {
|
|
7
7
|
"repository": "mriekki/lean-agentic-core",
|
|
8
|
-
"commit": "
|
|
8
|
+
"commit": "68f3f45e663cab535c5a9544cf4efe2f048f8f34",
|
|
9
9
|
"version": "1.13.0",
|
|
10
10
|
"distribution": "greenfield-workspace",
|
|
11
11
|
"files": [
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
{
|
|
28
28
|
"source": "core/instructions/lean-workflow.instructions.md",
|
|
29
29
|
"destination": ".github/instructions/lean-workflow.instructions.md",
|
|
30
|
-
"sha256": "
|
|
30
|
+
"sha256": "5f82d6709ad5382235bc83efdfdb031d1b97ff1050fa476db81c7753c8140054"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"source": "core/instructions/lean-docs.instructions.md",
|
|
34
34
|
"destination": ".github/instructions/lean-docs.instructions.md",
|
|
35
|
-
"sha256": "
|
|
35
|
+
"sha256": "f8b73ec5ae1e12fdd98db4ee2c404b0b770e78248bfadc827d00eefda4d5eaf5"
|
|
36
36
|
},
|
|
37
37
|
{
|
|
38
38
|
"source": "core/skills/define-feature/SKILL.md",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
{
|
|
63
63
|
"source": "core/skills/next-step/SKILL.md",
|
|
64
64
|
"destination": ".github/skills/next-step/SKILL.md",
|
|
65
|
-
"sha256": "
|
|
65
|
+
"sha256": "94a7b7c0ec56a1772439dd0fc9b7adec1d48a67978c2bce5ab0cbe88d7ef74f0"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"source": "core/skills/deliver/SKILL.md",
|
|
@@ -102,17 +102,17 @@
|
|
|
102
102
|
{
|
|
103
103
|
"source": "core/skills/deployment-readiness/SKILL.md",
|
|
104
104
|
"destination": ".github/skills/deployment-readiness/SKILL.md",
|
|
105
|
-
"sha256": "
|
|
105
|
+
"sha256": "411fa4c918715679afc8636bd0e6503c1427688af213bd37cea4ba4920a678db"
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
"source": "core/skills/deploy/SKILL.md",
|
|
109
109
|
"destination": ".github/skills/deploy/SKILL.md",
|
|
110
|
-
"sha256": "
|
|
110
|
+
"sha256": "3a118753fba9f3e529062b98adfba4df5e76842027421a75f4beeac9d6bc247b"
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
"source": "core/skills/tear-down/SKILL.md",
|
|
114
114
|
"destination": ".github/skills/tear-down/SKILL.md",
|
|
115
|
-
"sha256": "
|
|
115
|
+
"sha256": "ac9dca37648dbd7ee1fa3b7117d136628cce5f8293a2c15d64f2ebcb8e788692"
|
|
116
116
|
},
|
|
117
117
|
{
|
|
118
118
|
"source": "core/skills/coach/SKILL.md",
|
|
@@ -129,6 +129,11 @@
|
|
|
129
129
|
"destination": ".github/skills/system-lab/SKILL.md",
|
|
130
130
|
"sha256": "1ec8c3f46cca6e2e72be1a85aae1adad0c32872e531d80baf12b1e49f2b780fc"
|
|
131
131
|
},
|
|
132
|
+
{
|
|
133
|
+
"source": "core/skills/docs/SKILL.md",
|
|
134
|
+
"destination": ".github/skills/docs/SKILL.md",
|
|
135
|
+
"sha256": "6edc48f28394ca99ea0e2a2abfa46901896199717a7a6b071028a43e56f327b7"
|
|
136
|
+
},
|
|
132
137
|
{
|
|
133
138
|
"source": "core/skills/code-walkthrough/SKILL.md",
|
|
134
139
|
"destination": ".github/skills/code-walkthrough/SKILL.md",
|
|
@@ -152,7 +157,7 @@
|
|
|
152
157
|
{
|
|
153
158
|
"source": "core/process/DEPLOYMENT_ENABLEMENT.md",
|
|
154
159
|
"destination": "docs/process/DEPLOYMENT_ENABLEMENT.md",
|
|
155
|
-
"sha256": "
|
|
160
|
+
"sha256": "987f6e68a2ab58d23388127fae2318b385ef86de389fc616c1e40b48c0ff3b07"
|
|
156
161
|
},
|
|
157
162
|
{
|
|
158
163
|
"source": "core/process/HUMAN_GATES.md",
|
|
@@ -184,6 +189,16 @@
|
|
|
184
189
|
"destination": "docs/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md",
|
|
185
190
|
"sha256": "eb0f613717d6bfdaecbb9d3a8ecb6323fa27331e429f5c5781c5c5a0289a8091"
|
|
186
191
|
},
|
|
192
|
+
{
|
|
193
|
+
"source": "core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md",
|
|
194
|
+
"destination": "docs/process/PROJECT_DOCUMENTATION_FRAMEWORK.md",
|
|
195
|
+
"sha256": "e6697c8d9bc346e8c8229625fc422b869a6428a083e4fee717b97d17afde7b03"
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
"source": "core/process/LEAN_ENGINEERING_GUIDE.md",
|
|
199
|
+
"destination": "docs/lean/LEAN_ENGINEERING_GUIDE.md",
|
|
200
|
+
"sha256": "85e18e8c00bfab8e05e9e5dbea0a74238b345d08634cf459ae2c3efe455e311a"
|
|
201
|
+
},
|
|
187
202
|
{
|
|
188
203
|
"source": "core/process/SETUP_ACCEPTANCE_CHECKLIST.md",
|
|
189
204
|
"destination": "docs/process/SETUP_ACCEPTANCE_CHECKLIST.md",
|
|
@@ -209,6 +224,11 @@
|
|
|
209
224
|
"destination": "docs/templates/REQUIREMENTS_TEMPLATE.md",
|
|
210
225
|
"sha256": "ec85cc723071edb01f09acca41e20e9833afe21d06d103b39dfcdbfb59a31aed"
|
|
211
226
|
},
|
|
227
|
+
{
|
|
228
|
+
"source": "core/templates/ADR_TEMPLATE.md",
|
|
229
|
+
"destination": "docs/templates/ADR_TEMPLATE.md",
|
|
230
|
+
"sha256": "f802ae066438642de9a4948980a4ab48c4cb68309fa5de16d48b08415a1a31fb"
|
|
231
|
+
},
|
|
212
232
|
{
|
|
213
233
|
"source": "core/learning/ENGINEERING_LEARNING_WORKBOOK.md",
|
|
214
234
|
"destination": "learning/ENGINEERING_LEARNING_WORKBOOK.md",
|
|
@@ -259,6 +279,11 @@
|
|
|
259
279
|
"destination": "tools/lean-system-lab/system-workbench.py",
|
|
260
280
|
"sha256": "25b507bacb05b938bee299bcb44a5476a6fc5ecb9143f5561773adc7ff987fcc"
|
|
261
281
|
},
|
|
282
|
+
{
|
|
283
|
+
"source": "tools/docs_site/docs_site.py",
|
|
284
|
+
"destination": "tools/lean-docs/docs-site.py",
|
|
285
|
+
"sha256": "d8516175150b48b85b2a0b8013d5790b78bdd6eb6de73ab8dce9ed8e32e2dc68"
|
|
286
|
+
},
|
|
262
287
|
{
|
|
263
288
|
"source": "tools/package/check_baseline.py",
|
|
264
289
|
"destination": "tools/lean-core/check-core-baseline.py",
|
|
@@ -273,7 +298,7 @@
|
|
|
273
298
|
},
|
|
274
299
|
"deployment": {
|
|
275
300
|
"repository": "mriekki/lean-poc-deployment-kit",
|
|
276
|
-
"commit": "
|
|
301
|
+
"commit": "bfe07aac1809d4cf41428fba9fdbcfe6a5e85470",
|
|
277
302
|
"distribution": "greenfield-poc",
|
|
278
303
|
"files": [
|
|
279
304
|
{
|
|
@@ -306,6 +331,16 @@
|
|
|
306
331
|
"destination": "tools/lean-deployment/lean_poc_deployment/app_runtime_remote.py",
|
|
307
332
|
"sha256": "f3ccde6ed3c6e5fe185a9a0f032a5c924fa0906e3619e12d0ad6228c1210f8ec"
|
|
308
333
|
},
|
|
334
|
+
{
|
|
335
|
+
"source": "src/lean_poc_deployment/local_cli.py",
|
|
336
|
+
"destination": "tools/lean-deployment/lean_poc_deployment/local_cli.py",
|
|
337
|
+
"sha256": "9c658c0409da3c6297ad349035bccb263a587cd6d9b07a9796ccbb7cdb6676f9"
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"source": "src/lean_poc_deployment/local_runtime.py",
|
|
341
|
+
"destination": "tools/lean-deployment/lean_poc_deployment/local_runtime.py",
|
|
342
|
+
"sha256": "82cf795733b59f4591515396be65317da4e515fde19874e3c5851bcff412d84d"
|
|
343
|
+
},
|
|
309
344
|
{
|
|
310
345
|
"source": "src/lean_poc_deployment/box_platform.py",
|
|
311
346
|
"destination": "tools/lean-deployment/lean_poc_deployment/box_platform.py",
|
|
@@ -334,7 +369,7 @@
|
|
|
334
369
|
{
|
|
335
370
|
"source": "src/lean_poc_deployment/entrypoint.py",
|
|
336
371
|
"destination": "tools/lean-deployment/lean_poc_deployment/entrypoint.py",
|
|
337
|
-
"sha256": "
|
|
372
|
+
"sha256": "8275c22ad1f9e3420630e773039902136ab036882f924b68f10ae5f602cae739"
|
|
338
373
|
},
|
|
339
374
|
{
|
|
340
375
|
"source": "src/lean_poc_deployment/errors.py",
|
|
@@ -404,12 +439,12 @@
|
|
|
404
439
|
{
|
|
405
440
|
"source": "src/lean_poc_deployment/teardown.py",
|
|
406
441
|
"destination": "tools/lean-deployment/lean_poc_deployment/teardown.py",
|
|
407
|
-
"sha256": "
|
|
442
|
+
"sha256": "114b6e29725caaf105e67b5407de9a21c4ae9a9bfdc965bd4a0f1e91c316d011"
|
|
408
443
|
},
|
|
409
444
|
{
|
|
410
445
|
"source": "src/lean_poc_deployment/teardown_cli.py",
|
|
411
446
|
"destination": "tools/lean-deployment/lean_poc_deployment/teardown_cli.py",
|
|
412
|
-
"sha256": "
|
|
447
|
+
"sha256": "93abb9350f1b06b0d53b38dff47030ecec982aed2455e9ddc4be12d70bfb6c3f"
|
|
413
448
|
},
|
|
414
449
|
{
|
|
415
450
|
"source": "src/lean_poc_deployment/teardown_remote.py",
|
|
@@ -4,11 +4,42 @@ applyTo: "**/*.md"
|
|
|
4
4
|
|
|
5
5
|
# Lean Documentation Rules
|
|
6
6
|
|
|
7
|
-
Respect `.github/lean-workspace.json` and existing repository documentation.
|
|
7
|
+
Respect `.github/lean-workspace.json`, `docs/lean-docs.json` when present, and existing repository documentation.
|
|
8
|
+
|
|
9
|
+
## Authority
|
|
8
10
|
|
|
9
11
|
- Do not create Product/Feature Briefs when the profile says they are unused.
|
|
10
12
|
- Do not create duplicate requirement authorities.
|
|
13
|
+
- `PROJECT_BRIEF.md` is a project briefing/navigation surface unless the repository explicitly says otherwise; do not let it silently compete with the accepted product/work-item authority.
|
|
11
14
|
- Label experimental/supplemental briefs clearly.
|
|
12
15
|
- Do not assume a Jira Epic is a Feature Brief.
|
|
13
16
|
- Prefer one useful combined requirements artifact over a conveyor belt of docs when local requirements are appropriate.
|
|
14
|
-
|
|
17
|
+
|
|
18
|
+
## Ownership
|
|
19
|
+
|
|
20
|
+
When `docs/lean-docs.json` is present, preserve its ownership boundary:
|
|
21
|
+
|
|
22
|
+
- `project` — project-owned prose/decisions; update only when the current change actually owns that documentation.
|
|
23
|
+
- `lean` — reusable Lean-managed material; update through the controlled reusable-package/baseline path rather than hand-diverging it in consumers.
|
|
24
|
+
- `generated-evidence` — disposable projections reconstructed from current evidence; do not hand-edit or treat them as requirements.
|
|
25
|
+
|
|
26
|
+
ADRs are project-owned decisions. Do not create or approve an architectural decision on the human's behalf merely because implementation evidence suggests one.
|
|
27
|
+
|
|
28
|
+
## Generated views
|
|
29
|
+
|
|
30
|
+
- Markdown is canonical; the local documentation website is a projection.
|
|
31
|
+
- DB/System diagrams are current-by-default projections. Do not tell the developer to maintain, rebuild, or manually synchronize generated diagrams.
|
|
32
|
+
- Keep disposable site/lab output under `.lean/` or another repository-approved ignored cache path by default.
|
|
33
|
+
- A generated view may report `CURRENT`, `STALE`, `AVAILABLE / FRESHNESS UNKNOWN`, or `NOT GENERATED`; do not claim freshness without supporting evidence.
|
|
34
|
+
- Repository/runtime/database evidence outranks stale generated views.
|
|
35
|
+
|
|
36
|
+
## Change impact
|
|
37
|
+
|
|
38
|
+
When a change materially affects public contracts, architecture, persistence, deployment/environments, developer workflow, testing strategy, or an architectural tradeoff, surface the likely documentation impact. Safe generated projections may be rebuilt automatically; human/project-authored prose should not be silently rewritten merely because code changed.
|
|
39
|
+
|
|
40
|
+
Documentation follow-up is non-blocking unless the work item's acceptance criteria explicitly require documentation.
|
|
41
|
+
|
|
42
|
+
## Safety
|
|
43
|
+
|
|
44
|
+
- Keep sensitive values out of tracked Markdown, documentation manifests, and generated site data.
|
|
45
|
+
- Preserve evidence labels and uncertainty rather than turning inference into authoritative architecture facts.
|
|
@@ -34,4 +34,46 @@ After implementation review and local human acceptance, manually invoking `/deli
|
|
|
34
34
|
|
|
35
35
|
Changed PR evidence re-opens the relevant review gate. Merge never implies production-deployment authorization.
|
|
36
36
|
|
|
37
|
+
## Post-delivery documentation and learning handoff
|
|
38
|
+
|
|
39
|
+
After engineering delivery is complete, documentation impact and learning are **non-blocking follow-ups**, not new delivery states or gates.
|
|
40
|
+
|
|
41
|
+
Use the accepted work-item/PR diff conservatively to classify likely documentation impact. Examples:
|
|
42
|
+
|
|
43
|
+
- public API/contract changes may affect architecture/runtime/API narrative;
|
|
44
|
+
- services, dependencies, messaging, caches, auth, observability, deployment topology, or failure handling may affect System evidence;
|
|
45
|
+
- entities, migrations, schema/DDL, ORM, queries, constraints, or indexes may affect DB evidence;
|
|
46
|
+
- environment/deployment changes may affect operations docs;
|
|
47
|
+
- durable developer/test workflow changes may affect engineering docs;
|
|
48
|
+
- a consequential architectural tradeoff may deserve an ADR recommendation.
|
|
49
|
+
|
|
50
|
+
A changed file proves relevant evidence was touched; it does not by itself prove a runtime or physical-schema change.
|
|
51
|
+
|
|
52
|
+
When the relevant tools exist and prerequisites are safe, `/deliver` may best-effort prepare **disposable** evidence/site projections under:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
.lean/docs-cache/system/
|
|
56
|
+
.lean/docs-cache/database/
|
|
57
|
+
.lean/docs-site/
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
System evidence may be reconstructed from the current repository. Database evidence may be generated automatically only when a safe local development/test database path is already explicit; never guess a path merely to populate docs.
|
|
61
|
+
|
|
62
|
+
If `tools/lean-docs/docs-site.py` exists, a build of the local documentation projection may follow safe lab preparation. Failure to build docs or a lab projection does not change `DELIVERY COMPLETE`.
|
|
63
|
+
|
|
64
|
+
Do not silently rewrite project-owned narrative or approve/create an ADR solely because implementation evidence changed. Instead surface a compact `DOCUMENTATION IMPACT` handoff, for example:
|
|
65
|
+
|
|
66
|
+
```text
|
|
67
|
+
DOCUMENTATION IMPACT
|
|
68
|
+
|
|
69
|
+
✓ Project brief: no material change detected
|
|
70
|
+
★ System evidence: changed; current projection prepared
|
|
71
|
+
★ Database evidence: changed; /db-lab recommended
|
|
72
|
+
○ ADR consideration: new synchronous external dependency introduced
|
|
73
|
+
|
|
74
|
+
/docs — explore the current project documentation
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Use only claims supported by observed evidence. Keep `/docs`, `/db-lab`, `/system-lab`, `/code-walkthrough`, and `/learning-review` visible when useful, but never require them solely to complete engineering delivery.
|
|
78
|
+
|
|
37
79
|
Do not pin or automatically escalate models.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Deployment enablement is the guided operational lane between delivered deployment engineering and `/deploy`.
|
|
4
4
|
|
|
5
|
-
A repository may
|
|
5
|
+
A **logical environment is not a physical computer**. A repository may define `demo`, `staging`, `production`, or other named environments; one developer may use only a workstation, several environments may share one VPS, or a desired deployment may remain explicitly deferred.
|
|
6
6
|
|
|
7
7
|
The normal human-facing entry point is state-driven:
|
|
8
8
|
|
|
@@ -10,120 +10,157 @@ The normal human-facing entry point is state-driven:
|
|
|
10
10
|
/deployment-readiness <environment>
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
For a read-only local overview use:
|
|
13
|
+
Read-only overview:
|
|
16
14
|
|
|
17
15
|
```text
|
|
18
16
|
/deployment-readiness status [environment]
|
|
19
17
|
```
|
|
20
18
|
|
|
21
|
-
|
|
19
|
+
The workflow discovers current topology/state and continues from the furthest safe point. The human does not choose separate `discovery`, `enable`, or `resume` modes.
|
|
20
|
+
|
|
21
|
+
## Topology before machine questions
|
|
22
|
+
|
|
23
|
+
Resolve these independently when repository evidence provides them:
|
|
22
24
|
|
|
23
|
-
|
|
25
|
+
```text
|
|
26
|
+
environment name / role / purpose
|
|
27
|
+
placement
|
|
28
|
+
isolation
|
|
29
|
+
exposure
|
|
30
|
+
binding state
|
|
31
|
+
adapter
|
|
32
|
+
target/provider binding
|
|
33
|
+
failure domain
|
|
34
|
+
```
|
|
24
35
|
|
|
25
|
-
|
|
36
|
+
Current placement classes include:
|
|
26
37
|
|
|
27
|
-
|
|
38
|
+
- `workstation` — local execution; current reusable container adapter is loopback-only;
|
|
39
|
+
- `remote-target` — an explicitly bound remote machine/target;
|
|
40
|
+
- `managed-service` — only when a provider-specific adapter actually exists;
|
|
41
|
+
- `deferred` — desired deployment exists but no current target/provider binding is selected.
|
|
28
42
|
|
|
29
|
-
|
|
43
|
+
Do not ask remote-machine questions until `remote-target` is actually the selected placement.
|
|
30
44
|
|
|
31
|
-
|
|
32
|
-
- hostname or IP address;
|
|
33
|
-
- SSH/deployment user when applicable;
|
|
34
|
-
- non-default SSH port when applicable;
|
|
35
|
-
- target OS when known.
|
|
45
|
+
## Workstation readiness
|
|
36
46
|
|
|
37
|
-
|
|
47
|
+
A one-machine local/demo topology is normal.
|
|
38
48
|
|
|
39
|
-
|
|
49
|
+
For current `workstation-container` support, readiness focuses on:
|
|
40
50
|
|
|
41
|
-
|
|
51
|
+
- local Docker/runtime availability;
|
|
52
|
+
- repository-distributed local deployment tooling;
|
|
53
|
+
- exact immutable artifact/image identity;
|
|
54
|
+
- local port/container ownership and health configuration;
|
|
55
|
+
- persistence prerequisites where relevant;
|
|
56
|
+
- Production policy if the logical environment is Production.
|
|
42
57
|
|
|
43
|
-
|
|
58
|
+
It does not require SSH, a hostname, target profile, host trust, Caddy, Avahi, or a second computer.
|
|
44
59
|
|
|
45
|
-
|
|
60
|
+
The adapter's current exposure is loopback. Do not silently widen it to LAN/public sharing.
|
|
46
61
|
|
|
47
|
-
|
|
62
|
+
## Remote-target readiness
|
|
63
|
+
|
|
64
|
+
For remote placement, retain the strict target/access model:
|
|
48
65
|
|
|
49
66
|
```text
|
|
50
|
-
|
|
51
|
-
→
|
|
52
|
-
→
|
|
53
|
-
→
|
|
54
|
-
→ authorize read-only connectivity/identity verification
|
|
55
|
-
→ run repository/Deployment-Kit doctor/verify checks
|
|
56
|
-
→ reuse working access OR repair only missing setup OR onboard a new workstation
|
|
57
|
-
→ verify target/platform/security/artifact/registry/data prerequisites
|
|
58
|
-
→ ENVIRONMENT READY TO DEPLOY
|
|
59
|
-
→ /deploy <environment>
|
|
67
|
+
named environment
|
|
68
|
+
→ explicit target binding
|
|
69
|
+
→ current address/discovery
|
|
70
|
+
→ independently verified host identity
|
|
60
71
|
```
|
|
61
72
|
|
|
62
|
-
|
|
73
|
+
Human-facing facts normally include hostname/IP, deployment user, non-default port, and target OS when relevant.
|
|
63
74
|
|
|
64
|
-
|
|
75
|
+
Internal target/profile/SSH/trust paths should be discovered, reused, or derived whenever possible rather than pushed onto the human as first questions.
|
|
65
76
|
|
|
66
|
-
|
|
77
|
+
If existing configuration is present, show known facts for confirmation. If partial, ask only for the smallest missing fact. If absent, start with the actual machine/address rather than an internal target identifier.
|
|
67
78
|
|
|
68
|
-
|
|
79
|
+
Remote probing requires explicit read-only authorization. Address discovery never substitutes for cryptographic host identity. Unknown/changed SSH identity fails closed.
|
|
69
80
|
|
|
70
|
-
|
|
81
|
+
## Deferred readiness
|
|
71
82
|
|
|
72
|
-
|
|
73
|
-
- key/agent/trust setup;
|
|
74
|
-
- target-side access setup;
|
|
75
|
-
- runtime/platform prerequisite setup;
|
|
76
|
-
- data/backup directory preparation;
|
|
77
|
-
- firewall preparation;
|
|
78
|
-
- registry credential setup.
|
|
83
|
+
A deferred placement is intentional configuration state:
|
|
79
84
|
|
|
80
|
-
|
|
85
|
+
```text
|
|
86
|
+
DEPLOYMENT INTENTIONALLY DEFERRED
|
|
87
|
+
```
|
|
81
88
|
|
|
82
|
-
|
|
89
|
+
It must not block repository generation, local development, CI, documentation, or learning. Readiness should explain the next material decision—choose/configure a supported target/provider adapter—without guessing infrastructure or asking for secrets.
|
|
83
90
|
|
|
84
|
-
|
|
91
|
+
## Managed-service boundary
|
|
85
92
|
|
|
86
|
-
|
|
93
|
+
Managed hosting is adapter-specific. General model knowledge may recommend a provider, but absent a live catalog/implementation contract it remains `CATALOG GAP`/planned.
|
|
87
94
|
|
|
88
|
-
|
|
95
|
+
No provider credentials or provisioning should occur merely because a deployment outcome is public/shareable.
|
|
89
96
|
|
|
90
|
-
|
|
91
|
-
- actual target OS/architecture and supported runtime/platform;
|
|
92
|
-
- validated/available route names and collision checks;
|
|
93
|
-
- approved immutable artifact identity;
|
|
94
|
-
- registry/artifact access readiness;
|
|
95
|
-
- persistence/data/backup prerequisites;
|
|
96
|
-
- migration capability;
|
|
97
|
-
- deployment locking capability;
|
|
98
|
-
- rollback/recovery capability and boundaries;
|
|
99
|
-
- stronger Production backup/recovery prerequisites when applicable.
|
|
97
|
+
## Colocated environments
|
|
100
98
|
|
|
101
|
-
|
|
99
|
+
Two logical environments may intentionally share one physical failure domain.
|
|
102
100
|
|
|
103
|
-
|
|
101
|
+
Keep their targetable scope, runtime/container, route, data, readiness evidence, and authorization independent. When Staging and Production share one target, surface:
|
|
104
102
|
|
|
105
|
-
|
|
103
|
+
```text
|
|
104
|
+
TOPOLOGY NOTE
|
|
106
105
|
|
|
107
|
-
|
|
106
|
+
Staging and Production are logically isolated but share one physical
|
|
107
|
+
failure domain. This may fit POC cost/learning goals, but it does not
|
|
108
|
+
demonstrate host-level Production isolation.
|
|
109
|
+
```
|
|
108
110
|
|
|
109
|
-
|
|
111
|
+
Production backup/recovery/security/deploy/destructive gates remain stronger regardless of colocation.
|
|
110
112
|
|
|
111
|
-
|
|
113
|
+
## Readiness cadence
|
|
114
|
+
|
|
115
|
+
```text
|
|
116
|
+
select environment
|
|
117
|
+
→ resolve topology
|
|
118
|
+
→ inspect placement-relevant local state
|
|
119
|
+
→ show/confirm known facts
|
|
120
|
+
→ authorize relevant read-only verification
|
|
121
|
+
→ repair only missing prerequisites under explicit write gates
|
|
122
|
+
→ ENVIRONMENT READY TO DEPLOY
|
|
123
|
+
→ /deploy <environment>
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
For workstation placement there is no remote-access stage. For deferred placement the workflow intentionally stops before verification/provisioning.
|
|
127
|
+
|
|
128
|
+
## Readiness writes versus deployment writes
|
|
129
|
+
|
|
130
|
+
Readiness may perform bounded setup writes when separately authorized and supported by installed tooling, such as local configuration, SSH key/agent/trust setup, target-side access setup, runtime/platform preparation, data/backup directories, firewall preparation, or registry/provider credential configuration.
|
|
131
|
+
|
|
132
|
+
Readiness does **not** hide application deployment inside setup.
|
|
133
|
+
|
|
134
|
+
Application runtime deployment, release-specific migration, route/port publication, live health/readiness, smoke validation, and release-specific evidence belong to `/deploy` when the installed adapter defines them.
|
|
135
|
+
|
|
136
|
+
## Pre-deploy versus post-deploy evidence
|
|
137
|
+
|
|
138
|
+
Readiness proves only facts that can exist before deployment, such as:
|
|
139
|
+
|
|
140
|
+
- logical environment/topology selection;
|
|
141
|
+
- supported adapter availability;
|
|
142
|
+
- local Docker readiness or verified remote target/identity depending on placement;
|
|
143
|
+
- target OS/runtime when applicable;
|
|
144
|
+
- artifact identity/access;
|
|
145
|
+
- route/port ownership availability;
|
|
146
|
+
- persistence/backup/migration prerequisites;
|
|
147
|
+
- deployment lock/recovery capability;
|
|
148
|
+
- stronger Production prerequisites.
|
|
149
|
+
|
|
150
|
+
First-deploy live route, health, smoke, deployed-release identity, and release-specific rollback evidence are post-deploy facts owned by `/deploy`.
|
|
112
151
|
|
|
113
152
|
## Environment independence
|
|
114
153
|
|
|
115
|
-
Readiness
|
|
154
|
+
Readiness of one logical environment never proves another environment ready—even if both share one physical target.
|
|
155
|
+
|
|
156
|
+
Failure of one environment never redirects to another environment, machine, provider, or wider exposure.
|
|
116
157
|
|
|
117
|
-
Production remains a role with stronger
|
|
158
|
+
Production remains a logical role/policy with stronger gates, not a separate readiness command or a requirement for a dedicated physical computer.
|
|
118
159
|
|
|
119
|
-
Once
|
|
160
|
+
Once ready:
|
|
120
161
|
|
|
121
162
|
```text
|
|
122
163
|
/deploy <environment>
|
|
123
164
|
```
|
|
124
165
|
|
|
125
|
-
`/deploy` verifies
|
|
126
|
-
|
|
127
|
-
A Production deployment remains separately authorized and never becomes implicit because readiness passed. A non-production remote deployment still requires the repository/tool's bounded remote-write authorization.
|
|
128
|
-
|
|
129
|
-
Remote read-only authorization never implies permission for writes. Secret values stay out of tracked documentation and logs. Database restore/destructive recovery remains a separate decision when data safety warrants it.
|
|
166
|
+
`/deploy` verifies current topology/target/artifact evidence, presents the exact installed-tool authorization gate, delegates deterministic mechanics, and verifies placement-relevant live evidence.
|