@mriekki/lean 0.4.4 → 0.4.6

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 +326 -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 +512 -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@mriekki/lean",
4
- "version": "0.4.4",
4
+ "version": "0.4.6",
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": "c2d9538cdbb5ddb46527133fefae698e25a6e603",
17
+ "commit": "52905468c06fe39caa491a15a77e33cd400a60d9",
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": "2763e604c20e64720d7de71fa93a88d99677be36",
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",
4
+ "version": "0.4.6",
5
5
  "components": {
6
6
  "core": {
7
7
  "repository": "mriekki/lean-agentic-core",
8
- "commit": "c2d9538cdbb5ddb46527133fefae698e25a6e603",
8
+ "commit": "52905468c06fe39caa491a15a77e33cd400a60d9",
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": "398b4734db1af4139e8395fc30dddd3fd45aaa76b4f5c5ce9c4b286c456d9430"
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": "9d2d596fb9fc6c6f8afcc68ca6e4c94b2c50b396f3d970ef26797ae51cb03202"
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": "833b015a795dee2fa8eaefd8b7ea7dda42951390846cf3bc8c2c2eb2ea3451bf"
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": "02a58ae52cab8b6b11734a8d4217bf7f7c9b11bcd7b35e4a2e16dfb8af8bce34"
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": "259c0091672d79b7bc799f92cb21a4143af2951a4f2556794263237dfb7e7d7b"
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": "8826be8f97c5dab673c050c5ae7f959c5959871c401b0b3b7e6869660e669d93"
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": "3b59c5984ecb51ac48efb40e7e2e24c1971db947d6eefa5dc3671254ca984af7"
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": "8dc0773a245ed23089caa02a1a2f0dd5670710646d446d190406ae47a85da4c6"
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": "50ea30f5d42f71176a74a642123089c6e246f2da616e0c0bba2f16168d2c15c9"
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": "2763e604c20e64720d7de71fa93a88d99677be36",
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": "5161aec6d5a1fc684894a1011b3d577868cedaa7039ea647862a4628067fabd8"
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": "edcf921aa92988176b756abf4bbc9b0b83ae1d855b6e8d487b67aaad7727cb55"
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": "ec1271db5f57135189892e87f2df3ffc5fcb6e763ff1eb9604bc4e50788c3325"
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
- - Keep secret values out of tracked Markdown.
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 have multiple named deployment environments, such as Staging and Production. Each environment owns its own confirmed machine/target binding, readiness evidence, data/backup state, credentials, and deployment policy.
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
- The workflow discovers current state and continues from the furthest safe point. The human does not need to choose separate `discovery`, `enable`, or `resume` modes.
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
- Omit the environment from `status` to summarize all configured named environments without automatically probing every remote machine.
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
- Older invocations that include a deployment-enabler ID and/or `discovery`, `enable`, or `resume` may be normalized for compatibility, but they are not the normal interface.
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
- ## Human-facing readiness model
36
+ Current placement classes include:
26
37
 
27
- The workflow should ask about simple environment-machine facts before exposing deployment-tool internals.
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
- Human-facing facts normally include:
43
+ Do not ask remote-machine questions until `remote-target` is actually the selected placement.
30
44
 
31
- - environment name/role;
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
- Internal Deployment Kit concepts such as logical target name / `targetName`, SSH alias, profile path, identity path, known-hosts path, address override, and trust-record storage should be discovered, reused, or derived whenever possible. They are not normal first questions.
47
+ A one-machine local/demo topology is normal.
38
48
 
39
- If existing configuration is present, show the known simple facts and ask the human to confirm them before remote checks. Do not make the human reconstruct already-recorded values.
49
+ For current `workstation-container` support, readiness focuses on:
40
50
 
41
- If setup is partial, show what is known and ask only for the smallest missing fact or authorization.
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
- If setup is absent, start with the selected machine's hostname or IP address, then ask one additional simple fact at a time only when required.
58
+ It does not require SSH, a hostname, target profile, host trust, Caddy, Avahi, or a second computer.
44
59
 
45
- ## Discover, confirm, verify, continue
60
+ The adapter's current exposure is loopback. Do not silently widen it to LAN/public sharing.
46
61
 
47
- Normal readiness cadence is:
62
+ ## Remote-target readiness
63
+
64
+ For remote placement, retain the strict target/access model:
48
65
 
49
66
  ```text
50
- select environment
51
- → inspect existing local/repository setup
52
- → show simple known facts
53
- → human confirms or corrects them
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
- The next readiness invocation re-discovers current state and resumes automatically. It does not require a new mode word after discovery or repair.
73
+ Human-facing facts normally include hostname/IP, deployment user, non-default port, and target OS when relevant.
63
74
 
64
- Remote probing does not occur merely to build the initial local summary.
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
- Address discovery is not host trust. When SSH is used, unknown or changed host identity stops access; readiness must not recover by disabling host-key verification, silently enrolling new trust, scanning/selecting another host, weakening network controls, or redirecting to another environment.
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
- ## Readiness writes versus deployment writes
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
- Readiness may perform bounded prerequisite/setup writes when separately authorized and supported by repository tooling, such as:
81
+ ## Deferred readiness
71
82
 
72
- - local environment binding;
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
- Readiness does **not** hide application deployment inside environment preparation.
85
+ ```text
86
+ DEPLOYMENT INTENTIONALLY DEFERRED
87
+ ```
81
88
 
82
- Application container/process deployment, release-specific migration, application route registration, live application health/readiness, live smoke validation, and release-specific deployment/rollback evidence belong to `/deploy` when the repository's deployment contract includes them.
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
- This distinction prevents a first-deploy deadlock: readiness proves that the environment can safely accept the selected artifact; `/deploy` creates and validates the live application state.
91
+ ## Managed-service boundary
85
92
 
86
- ## Pre-deploy versus post-deploy evidence
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
- Pre-deploy readiness may require:
95
+ No provider credentials or provisioning should occur merely because a deployment outcome is public/shareable.
89
96
 
90
- - verified machine/target binding and host identity;
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
- Do not require first-deploy evidence that can only exist after the selected artifact is deployed, such as live route resolution, live application health, smoke success, deployed release identity, or execution-backed rollback evidence for that release.
99
+ Two logical environments may intentionally share one physical failure domain.
102
100
 
103
- `/deploy` establishes those post-deploy facts and reports them from repository/tool evidence.
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
- ## Existing and new workstations
103
+ ```text
104
+ TOPOLOGY NOTE
106
105
 
107
- On an already-configured workstation, successful strict verification means onboarding/setup questions are skipped.
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
- On a partially configured workstation, diagnose the exact missing state and repair only that state after the applicable bounded authorization.
111
+ Production backup/recovery/security/deploy/destructive gates remain stronger regardless of colocation.
110
112
 
111
- On a fresh workstation, guide the minimum required profile/key/agent/trust/binding setup using the approved repository/Deployment-Kit commands. Reuse an already-valid developer-to-machine relationship across POCs when policy/tooling permits; do not create duplicate credentials simply because a new POC uses the same box.
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 is environment-specific. Readiness of Staging does not prove Production is ready, and failure of one environment must never cause fallback to another environment or machine.
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 deployment, artifact, backup, recovery, and Human-in-the-Loop policy where required. It does not use a separate readiness command.
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 the selected environment is ready to deploy, the repeatable deployment entry point is:
160
+ Once ready:
120
161
 
121
162
  ```text
122
163
  /deploy <environment>
123
164
  ```
124
165
 
125
- `/deploy` verifies the selected environment/target/artifact evidence, presents the applicable write gate immediately before execution, delegates deterministic deployment mechanics, and then verifies repository-defined live route/readiness/smoke/deployment evidence.
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.