@mriekki/lean 0.2.1 → 0.3.1
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/README.md +16 -4
- package/assets/components.json +3 -3
- package/assets/core/distribution.json +2 -2
- package/assets/generated/ASSEMBLY.json +18 -18
- package/assets/generated/core/core/agents/reviewer.agent.md +1 -1
- package/assets/generated/core/core/instructions/lean-workflow.instructions.md +3 -1
- package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +94 -0
- package/assets/generated/core/core/process/HUMAN_GATES.md +5 -3
- package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +4 -2
- package/assets/generated/core/core/process/PR_WORKFLOW.md +4 -2
- package/assets/generated/core/core/skills/deliver/SKILL.md +19 -11
- package/assets/generated/core/core/skills/deploy/SKILL.md +14 -11
- package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +369 -0
- package/assets/generated/core/core/skills/next-step/SKILL.md +8 -2
- package/assets/generated/core/core/skills/start-work/SKILL.md +17 -7
- package/package.json +1 -1
- package/assets/generated/core/core/process/PRODUCTION_ENABLEMENT.md +0 -59
- package/assets/generated/core/core/skills/production-readiness/SKILL.md +0 -357
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ The umbrella package writes `LEAN_BASELINE.json` while preserving component-nati
|
|
|
47
47
|
- install/update never require private GitHub access.
|
|
48
48
|
- no install/update lifecycle hook mutates a consumer repository; changes occur only when the user invokes the Lean CLI.
|
|
49
49
|
- one preflight plan covers all selected components; an unsafe component blocks the entire apply.
|
|
50
|
-
- package publication is separate from merging
|
|
50
|
+
- package publication is separate from merging a release PR and requires one explicit exact-version publication action.
|
|
51
51
|
|
|
52
52
|
## Current scope
|
|
53
53
|
|
|
@@ -55,7 +55,21 @@ The package currently starts with the `greenfield-poc` consumer profile. Existin
|
|
|
55
55
|
|
|
56
56
|
## Package assembly and release
|
|
57
57
|
|
|
58
|
-
|
|
58
|
+
For normal releases in the Lean Platform VS Code workspace, use:
|
|
59
|
+
|
|
60
|
+
```text
|
|
61
|
+
/release-lean [version | patch | minor | major]
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The repo-local skill resolves accepted component commits, prepares the version/pin/descriptor update, runs local verification, creates the release PR, waits for the package-PR merge gate, verifies post-merge `main` CI, then stops once at the exact npm publication gate.
|
|
65
|
+
|
|
66
|
+
After publication approval it triggers `.github/workflows/npm-publish.yml`. The workflow reconstructs the package from the exact private component pins, runs the deterministic release preparation, publishes the exact tarball directly with npm Trusted Publishing (OIDC), and automatically verifies the registry identity plus a neutral-directory `npx` smoke check.
|
|
67
|
+
|
|
68
|
+
The normal flow does not use staged npm publication or a long-lived npm publish token. An existing stage-only trusted publisher must be migrated once to allow direct `npm publish` from `npm-publish.yml`; `/release-lean` guides that bounded one-time setup.
|
|
69
|
+
|
|
70
|
+
Before merging a release PR, verify the local npm maintainer login and trusted-publisher relationship; the release skill explains npm's browser/2FA reauthorization if `npm trust list` returns `EOTP`. GitHub Actions publication uses OIDC, not a manually managed npm token. See `docs/RELEASE_PROCESS.md` for the operator setup.
|
|
71
|
+
|
|
72
|
+
The underlying release-candidate command remains available for diagnostics:
|
|
59
73
|
|
|
60
74
|
```powershell
|
|
61
75
|
Set-Location D:\Projects\lean-platform
|
|
@@ -66,6 +80,4 @@ node .\scripts\prepare-release.mjs `
|
|
|
66
80
|
|
|
67
81
|
Release preparation verifies exact `origin/main`, runs the complete test suite, refuses dirty canonical source checkouts, assembles and verifies the pinned assets, compares two independent `npm pack` SHA-256 values, and smoke-tests the packed CLI from a clean temporary install. The resulting tarball and `RELEASE_MANIFEST.json` are written under `dist/release/`.
|
|
68
82
|
|
|
69
|
-
The first npm version was staged manually and required explicit 2FA approval before becoming public. Current releases use `.github/workflows/npm-stage.yml` with npm Trusted Publishing (OIDC) to stage future versions without a long-lived npm publish token; human 2FA approval remains the final publication gate.
|
|
70
|
-
|
|
71
83
|
See `docs/RELEASE_PROCESS.md` for the full release contract.
|
package/assets/components.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/lean",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.1",
|
|
5
5
|
"defaultProfile": "greenfield-poc",
|
|
6
6
|
"profiles": {
|
|
7
7
|
"greenfield-poc": {
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"components": {
|
|
15
15
|
"core": {
|
|
16
16
|
"repository": "mriekki/lean-agentic-core",
|
|
17
|
-
"commit": "
|
|
18
|
-
"version": "1.
|
|
17
|
+
"commit": "009572aa4c61ad9a45ec5473b6affc984d6faac0",
|
|
18
|
+
"version": "1.12.0",
|
|
19
19
|
"distribution": "greenfield-workspace",
|
|
20
20
|
"descriptor": "assets/core/distribution.json",
|
|
21
21
|
"sourceRoot": "assets/generated/core",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
{"source":"core/skills/core-sync/SKILL.md","destination":".github/skills/core-sync/SKILL.md"},
|
|
21
21
|
{"source":"core/skills/upstream-fix/SKILL.md","destination":".github/skills/upstream-fix/SKILL.md"},
|
|
22
22
|
{"source":"core/skills/wait-what/SKILL.md","destination":".github/skills/wait-what/SKILL.md"},
|
|
23
|
-
{"source":"core/skills/
|
|
23
|
+
{"source":"core/skills/deployment-readiness/SKILL.md","destination":".github/skills/deployment-readiness/SKILL.md"},
|
|
24
24
|
{"source":"core/skills/deploy/SKILL.md","destination":".github/skills/deploy/SKILL.md"},
|
|
25
25
|
{"source":"core/skills/tear-down/SKILL.md","destination":".github/skills/tear-down/SKILL.md"},
|
|
26
26
|
{"source":"core/skills/coach/SKILL.md","destination":".github/skills/coach/SKILL.md"},
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
{"source":"core/skills/learning-review/SKILL.md","destination":".github/skills/learning-review/SKILL.md"},
|
|
29
29
|
{"source":"core/process/WORK_ITEM_MODEL.md","destination":"docs/process/WORK_ITEM_MODEL.md"},
|
|
30
30
|
{"source":"core/process/PR_WORKFLOW.md","destination":"docs/process/PR_WORKFLOW.md"},
|
|
31
|
-
{"source":"core/process/
|
|
31
|
+
{"source":"core/process/DEPLOYMENT_ENABLEMENT.md","destination":"docs/process/DEPLOYMENT_ENABLEMENT.md"},
|
|
32
32
|
{"source":"core/process/HUMAN_GATES.md","destination":"docs/process/HUMAN_IN_LOOP_GATES.md"},
|
|
33
33
|
{"source":"core/process/GUIDED_NEXT_STEPS.md","destination":"docs/process/GUIDED_NEXT_STEPS.md"},
|
|
34
34
|
{"source":"core/process/INTERACTIVE_SESSION_GUIDE.md","destination":"docs/process/INTERACTIVE_SESSION_GUIDE.md"},
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"package": "@mriekki/lean",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.3.1",
|
|
5
5
|
"components": {
|
|
6
6
|
"core": {
|
|
7
7
|
"repository": "mriekki/lean-agentic-core",
|
|
8
|
-
"commit": "
|
|
9
|
-
"version": "1.
|
|
8
|
+
"commit": "009572aa4c61ad9a45ec5473b6affc984d6faac0",
|
|
9
|
+
"version": "1.12.0",
|
|
10
10
|
"distribution": "greenfield-workspace",
|
|
11
11
|
"files": [
|
|
12
12
|
{
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
{
|
|
18
18
|
"source": "core/agents/reviewer.agent.md",
|
|
19
19
|
"destination": ".github/agents/reviewer.agent.md",
|
|
20
|
-
"sha256": "
|
|
20
|
+
"sha256": "c999281aeab6fd17ea308d581a7e931a06d7b93f33871915605956643c7b22ff"
|
|
21
21
|
},
|
|
22
22
|
{
|
|
23
23
|
"source": "core/agents/coach.agent.md",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
{
|
|
28
28
|
"source": "core/instructions/lean-workflow.instructions.md",
|
|
29
29
|
"destination": ".github/instructions/lean-workflow.instructions.md",
|
|
30
|
-
"sha256": "
|
|
30
|
+
"sha256": "398b4734db1af4139e8395fc30dddd3fd45aaa76b4f5c5ce9c4b286c456d9430"
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
"source": "core/instructions/lean-docs.instructions.md",
|
|
@@ -57,17 +57,17 @@
|
|
|
57
57
|
{
|
|
58
58
|
"source": "core/skills/start-work/SKILL.md",
|
|
59
59
|
"destination": ".github/skills/start-work/SKILL.md",
|
|
60
|
-
"sha256": "
|
|
60
|
+
"sha256": "43c10278bd715ec95f3aa8d4ed4a2a4b51aa9fc6484e1fda572037381e663de4"
|
|
61
61
|
},
|
|
62
62
|
{
|
|
63
63
|
"source": "core/skills/next-step/SKILL.md",
|
|
64
64
|
"destination": ".github/skills/next-step/SKILL.md",
|
|
65
|
-
"sha256": "
|
|
65
|
+
"sha256": "0fac7b36f62039341c7536ff1516387efd4b6b32885dceb58d59510480ff9d6b"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"source": "core/skills/deliver/SKILL.md",
|
|
69
69
|
"destination": ".github/skills/deliver/SKILL.md",
|
|
70
|
-
"sha256": "
|
|
70
|
+
"sha256": "bb31e292a57372c6f64f627035652632b474f1ebcaab604eded57d730825af8a"
|
|
71
71
|
},
|
|
72
72
|
{
|
|
73
73
|
"source": "core/skills/cleanup-branches/SKILL.md",
|
|
@@ -100,14 +100,14 @@
|
|
|
100
100
|
"sha256": "9b5968158992681837071b60465682a887540b1fdab510861ed739ffa996fbdb"
|
|
101
101
|
},
|
|
102
102
|
{
|
|
103
|
-
"source": "core/skills/
|
|
104
|
-
"destination": ".github/skills/
|
|
105
|
-
"sha256": "
|
|
103
|
+
"source": "core/skills/deployment-readiness/SKILL.md",
|
|
104
|
+
"destination": ".github/skills/deployment-readiness/SKILL.md",
|
|
105
|
+
"sha256": "5e4f50c9ab696b16e677fc6e4be3f581ac912e7b15c077b376457d00c01c1623"
|
|
106
106
|
},
|
|
107
107
|
{
|
|
108
108
|
"source": "core/skills/deploy/SKILL.md",
|
|
109
109
|
"destination": ".github/skills/deploy/SKILL.md",
|
|
110
|
-
"sha256": "
|
|
110
|
+
"sha256": "e34b29d3d19945b6317adb9e5796895dc75f249015ec9708fd256ab7e0ca0c5f"
|
|
111
111
|
},
|
|
112
112
|
{
|
|
113
113
|
"source": "core/skills/tear-down/SKILL.md",
|
|
@@ -137,17 +137,17 @@
|
|
|
137
137
|
{
|
|
138
138
|
"source": "core/process/PR_WORKFLOW.md",
|
|
139
139
|
"destination": "docs/process/PR_WORKFLOW.md",
|
|
140
|
-
"sha256": "
|
|
140
|
+
"sha256": "78859425a8f6efadf33fd2708e940ae2aebe2ce0f4d02d63c8ec0cbdf60f6b20"
|
|
141
141
|
},
|
|
142
142
|
{
|
|
143
|
-
"source": "core/process/
|
|
144
|
-
"destination": "docs/process/
|
|
145
|
-
"sha256": "
|
|
143
|
+
"source": "core/process/DEPLOYMENT_ENABLEMENT.md",
|
|
144
|
+
"destination": "docs/process/DEPLOYMENT_ENABLEMENT.md",
|
|
145
|
+
"sha256": "a57819ce9e52227df8260d789fb6911721aac0e391a53e711fbb27d7a17b3245"
|
|
146
146
|
},
|
|
147
147
|
{
|
|
148
148
|
"source": "core/process/HUMAN_GATES.md",
|
|
149
149
|
"destination": "docs/process/HUMAN_IN_LOOP_GATES.md",
|
|
150
|
-
"sha256": "
|
|
150
|
+
"sha256": "ac6ab2343728679d2ae50e9872b4b2f52a49605a2ea7ed17d806a839da4376c1"
|
|
151
151
|
},
|
|
152
152
|
{
|
|
153
153
|
"source": "core/process/GUIDED_NEXT_STEPS.md",
|
|
@@ -157,7 +157,7 @@
|
|
|
157
157
|
{
|
|
158
158
|
"source": "core/process/INTERACTIVE_SESSION_GUIDE.md",
|
|
159
159
|
"destination": "docs/process/INTERACTIVE_SESSION_GUIDE.md",
|
|
160
|
-
"sha256": "
|
|
160
|
+
"sha256": "15d47509919e83786ada6df1e5482bd9f73ca4955cda66287f6d6b1f9722c853"
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
"source": "core/process/COACHING_GUIDE.md",
|
|
@@ -82,4 +82,4 @@ When implementation is READY and the human accepts the meaningful local diff, ex
|
|
|
82
82
|
|
|
83
83
|
Do not vaguely say `merge when ready`.
|
|
84
84
|
|
|
85
|
-
If the delivered work item owns
|
|
85
|
+
If the delivered work item owns deployment engineering, successful engineering delivery may later hand off to `/deployment-readiness <deployment-enabler-ID> enable [environment]`; Reviewer readiness never authorizes remote or production deployment.
|
|
@@ -18,10 +18,12 @@ Once a bounded action is authorized, routine mechanics inside that scope should
|
|
|
18
18
|
|
|
19
19
|
For implementation, establish the repository-appropriate short-lived work branch as routine setup once implementation itself is authorized; do not add a separate branch-creation gate when branch policy/naming and scope are clear.
|
|
20
20
|
|
|
21
|
-
Continuous modes such as `/grill-me`, `/grill-with-docs`, `/refine-requirements`, `/coach`, `/learning-review`, and `/
|
|
21
|
+
Continuous modes such as `/grill-me`, `/grill-with-docs`, `/refine-requirements`, `/coach`, `/learning-review`, and `/deployment-readiness` continue until stopped or naturally complete.
|
|
22
22
|
|
|
23
23
|
During interactive questioning, prefer concise choice-first options for genuinely bounded human decisions, including `Other / specify` and `Not sure — recommend one` when appropriate. Keep factual/environment-specific values and questions intended to elicit the human's own framing, reasoning, debugging approach, design rationale, or understanding open-ended unless options are later useful as scaffolding.
|
|
24
24
|
|
|
25
|
+
For deployment readiness, inspect existing non-secret configuration before asking setup questions. Show already-known simple machine facts such as hostname/address, deployment user, port, and target OS for confirmation. Ask only for missing or conflicting facts. Keep deployment-tool implementation identifiers such as logical target names, `targetName`, SSH aliases, profile paths, and trust-file paths internal unless troubleshooting or genuine ambiguity requires them.
|
|
26
|
+
|
|
25
27
|
Shared managed code keeps its canonical owner. When a consumer contains `CORE_BASELINE.json` or `DEPLOYMENT_BASELINE.json`, treat those baselines as ownership evidence. A temporary edit to a shared-managed consumer file may be used to diagnose or prove a reusable defect, but it is not the canonical deliverable.
|
|
26
28
|
|
|
27
29
|
Before consumer delivery, run available managed-baseline integrity checks. If Core- or Deployment-Kit-managed files have unexplained local drift, stop before staging/commit/push and route the reusable change through `/upstream-fix`. Fix the owning canonical repository, deliver/merge it there under normal gates, then adopt the exact accepted shared commit back into the consumer through the appropriate sync mechanism and retest in consumer context.
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# Deployment Enablement
|
|
2
|
+
|
|
3
|
+
Deployment enablement is the guided operational lane between delivered deployment engineering and `/deploy`.
|
|
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.
|
|
6
|
+
|
|
7
|
+
Use:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
/deployment-readiness [deployment-enabler-ID] discovery [environment]
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
to discover environment setup early, and:
|
|
14
|
+
|
|
15
|
+
```text
|
|
16
|
+
/deployment-readiness [deployment-enabler-ID] enable [environment]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
after deployment engineering is reviewed, delivered, merged, and applicable default-branch CI/policy evidence is satisfactory.
|
|
20
|
+
|
|
21
|
+
For a read-only local overview use:
|
|
22
|
+
|
|
23
|
+
```text
|
|
24
|
+
/deployment-readiness [deployment-enabler-ID] status [environment]
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Omit the environment from `status` to summarize all configured named environments without automatically probing every remote machine.
|
|
28
|
+
|
|
29
|
+
## Human-facing readiness model
|
|
30
|
+
|
|
31
|
+
The workflow should ask about simple environment-machine facts before exposing deployment-tool internals.
|
|
32
|
+
|
|
33
|
+
Human-facing facts normally include:
|
|
34
|
+
|
|
35
|
+
- environment name/role;
|
|
36
|
+
- hostname or IP address;
|
|
37
|
+
- SSH/deployment user when applicable;
|
|
38
|
+
- non-default SSH port when applicable;
|
|
39
|
+
- target OS when known.
|
|
40
|
+
|
|
41
|
+
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.
|
|
42
|
+
|
|
43
|
+
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.
|
|
44
|
+
|
|
45
|
+
If setup is partial, show what is known and ask only for the smallest missing fact or authorization.
|
|
46
|
+
|
|
47
|
+
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.
|
|
48
|
+
|
|
49
|
+
## Discover, confirm, verify
|
|
50
|
+
|
|
51
|
+
Normal readiness cadence is:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
select environment
|
|
55
|
+
→ inspect existing local/repository setup
|
|
56
|
+
→ show simple known facts
|
|
57
|
+
→ human confirms or corrects them
|
|
58
|
+
→ authorize read-only connectivity/identity verification
|
|
59
|
+
→ run repository/Deployment-Kit doctor/verify checks
|
|
60
|
+
→ reuse working access OR repair only missing setup OR onboard a new workstation
|
|
61
|
+
→ verify remaining runtime/security/data/release prerequisites
|
|
62
|
+
→ environment READY
|
|
63
|
+
→ /deploy <environment>
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Remote probing does not occur merely to build the initial local summary.
|
|
67
|
+
|
|
68
|
+
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.
|
|
69
|
+
|
|
70
|
+
## Existing and new workstations
|
|
71
|
+
|
|
72
|
+
On an already-configured workstation, successful strict verification means onboarding/setup questions are skipped.
|
|
73
|
+
|
|
74
|
+
On a partially configured workstation, diagnose the exact missing state and repair only that state after the applicable bounded authorization.
|
|
75
|
+
|
|
76
|
+
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.
|
|
77
|
+
|
|
78
|
+
## Environment independence
|
|
79
|
+
|
|
80
|
+
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.
|
|
81
|
+
|
|
82
|
+
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.
|
|
83
|
+
|
|
84
|
+
Once the selected environment is ready, the repeatable deployment entry point is:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
/deploy <environment>
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`/deploy` verifies the selected environment/target/artifact evidence, dispatches to repository-provided tooling, and presents the applicable write gate immediately before execution.
|
|
91
|
+
|
|
92
|
+
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.
|
|
93
|
+
|
|
94
|
+
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.
|
|
@@ -20,6 +20,8 @@ A human gate is meaningful only when the human understands what is being approve
|
|
|
20
20
|
|
|
21
21
|
Do not gate routine mechanics individually after a bounded action is already authorized.
|
|
22
22
|
|
|
23
|
+
Missing access to GitHub admin policy metadata is not itself a human gate. Use configured workflow/check results, PR mergeability, repository documentation, and any observable enforced policy as evidence. Do not ask the human to open GitHub Settings and transcribe branch-protection/ruleset check names merely to continue; ask only when unavailable policy information creates a material unresolved decision at merge, release, or another consequential action.
|
|
24
|
+
|
|
23
25
|
## Implementation branch setup
|
|
24
26
|
|
|
25
27
|
Once implementation itself is authorized, creating/switching to the repository-appropriate short-lived work branch is routine setup, not a separate decision gate, when branch policy/naming and work-item scope are clear and the operation preserves the worktree without history rewriting.
|
|
@@ -50,7 +52,7 @@ Do not separately ask `Create branch?`, `Commit?`, `Push?`, `Create PR?`, or `Ch
|
|
|
50
52
|
|
|
51
53
|
## Combined final acceptance + merge gate
|
|
52
54
|
|
|
53
|
-
When the PR head/diff still exactly represents the implementation the human already accepted locally, Reviewer is READY,
|
|
55
|
+
When the PR head/diff still exactly represents the implementation the human already accepted locally, Reviewer is READY, configured PR CI is green, any additional observable repository-required checks are satisfied, and repository policy/mergeability are satisfactory, final PR acceptance and merge authorization may be combined into one meaningful choice:
|
|
54
56
|
|
|
55
57
|
```text
|
|
56
58
|
Merge and finalize delivery [HUMAN ACCEPTANCE + GITHUB/GIT WRITE]
|
|
@@ -59,8 +61,8 @@ Merge and finalize delivery [HUMAN ACCEPTANCE + GITHUB/GIT WRITE]
|
|
|
59
61
|
That explicit choice covers only the observed PR and its normal short-lived delivered branch. It authorizes:
|
|
60
62
|
- final acceptance of the PR as observed,
|
|
61
63
|
- merge using the approved repository strategy,
|
|
62
|
-
- observation/recheck of
|
|
63
|
-
- safe finalization of that delivered short-lived branch after
|
|
64
|
+
- observation/recheck of applicable post-merge default-branch CI/policy,
|
|
65
|
+
- safe finalization of that delivered short-lived branch after that CI/policy evidence is satisfied.
|
|
64
66
|
|
|
65
67
|
It does not authorize deleting any other branch, bypassing changed evidence, or deploying to production.
|
|
66
68
|
|
|
@@ -8,7 +8,7 @@ The following modes are continuous after the human explicitly enters them:
|
|
|
8
8
|
/refine-requirements
|
|
9
9
|
/coach
|
|
10
10
|
/learning-review
|
|
11
|
-
/
|
|
11
|
+
/deployment-readiness
|
|
12
12
|
```
|
|
13
13
|
|
|
14
14
|
Default cadence:
|
|
@@ -42,6 +42,8 @@ Keep questions open-ended when predefined choices would weaken the purpose of th
|
|
|
42
42
|
|
|
43
43
|
If an open-ended reasoning question stalls, options/hints may be introduced as scaffolding after the initial attempt. Do not manufacture bounded choices merely to make every question look structured.
|
|
44
44
|
|
|
45
|
+
For deployment readiness, discover existing local/repository configuration before asking factual questions. Show known simple environment/machine facts for confirmation and ask only for missing or conflicting facts. Do not lead with deployment-tool implementation identifiers such as `targetName`, SSH aliases, profile paths, or trust-file paths when the workflow can discover, reuse, or derive them.
|
|
46
|
+
|
|
45
47
|
Do not repeatedly ask `Do you want to continue?`.
|
|
46
48
|
|
|
47
49
|
Stop when:
|
|
@@ -53,7 +55,7 @@ Stop when:
|
|
|
53
55
|
|
|
54
56
|
Continuous conversation never implies permission for unrelated file, Git, external-system, remote, or production writes.
|
|
55
57
|
|
|
56
|
-
For modifying sessions such as requirement refinement or
|
|
58
|
+
For modifying sessions such as requirement refinement or deployment-readiness documentation, one explicit session-level authorization may cover focused updates within the defined scope; do not re-ask after every answer.
|
|
57
59
|
|
|
58
60
|
Compound action skills may also define their own bounded authorization. In particular, manually invoking `/deliver` after its prerequisites are satisfied authorizes routine branch/stage/commit/push/PR/CI mechanics within the accepted delivery scope. Do not interrupt that compound action with repeated ceremonial permission prompts. `/deliver` still stops for changed evidence, ambiguity/risk, and the explicit merge/finalize decision.
|
|
59
61
|
|
|
@@ -24,7 +24,7 @@ Normal delivery is intentionally streamlined:
|
|
|
24
24
|
→ PR CI
|
|
25
25
|
→ one MERGE + FINALIZE decision
|
|
26
26
|
→ merge
|
|
27
|
-
→ post-merge default-branch CI when configured
|
|
27
|
+
→ post-merge default-branch CI when configured, plus any observable enforced checks
|
|
28
28
|
→ safe delivered-branch cleanup
|
|
29
29
|
→ delivery complete
|
|
30
30
|
```
|
|
@@ -33,6 +33,8 @@ Invoking `/deliver` is the bounded authorization for the routine mechanics throu
|
|
|
33
33
|
|
|
34
34
|
Key rules:
|
|
35
35
|
- existing repository branch/PR/CI/merge policy outranks Lean defaults,
|
|
36
|
+
- `required CI` means the configured workflows/checks that apply to the exact commit plus any additional enforced repository policy observable through available tooling,
|
|
37
|
+
- inability to read branch-protection/ruleset admin settings alone is not a human gate and must not be converted into a Settings-page questionnaire; ask only when missing policy data creates a concrete block to merge/release,
|
|
36
38
|
- `/start-work` should establish the short-lived work branch when implementation begins; `/deliver` may recover safely if reviewed work is still on the default branch,
|
|
37
39
|
- PR templates are internal scaffolding and do not require a separate validation ceremony,
|
|
38
40
|
- because implementation was already meaningfully accepted locally, a final PR acceptance prompt does not need to be separate from merge when the PR head/diff still exactly matches that accepted scope,
|
|
@@ -40,7 +42,7 @@ Key rules:
|
|
|
40
42
|
- the explicit `Merge and finalize delivery` choice is both final acceptance of the observed PR and merge authorization,
|
|
41
43
|
- if new commits/material diff changes/conflicts/regressed checks appear, final PR review is required before merge,
|
|
42
44
|
- merge authorization is not production-deployment authorization,
|
|
43
|
-
- for a normal short-lived delivered branch, `Merge and finalize delivery` also authorizes safe local/remote cleanup after
|
|
45
|
+
- for a normal short-lived delivered branch, `Merge and finalize delivery` also authorizes safe local/remote cleanup after applicable post-merge default-branch CI/policy evidence is satisfied,
|
|
44
46
|
- no second branch-deletion prompt is needed for that delivered branch when the cleanup evidence remains exact and safe,
|
|
45
47
|
- unrelated, accumulated, protected/default, release/integration/environment, policy-retained, changed, or ambiguous branches are preserved,
|
|
46
48
|
- squash/rebase merges require merged-PR/head-SHA evidence before any local force deletion is considered safe,
|
|
@@ -150,9 +150,17 @@ Stop before/during routine writes for:
|
|
|
150
150
|
|
|
151
151
|
Never force-push unless separately and explicitly authorized.
|
|
152
152
|
|
|
153
|
-
## 7. PR CI
|
|
153
|
+
## 7. PR CI and policy evidence
|
|
154
154
|
|
|
155
|
-
|
|
155
|
+
Throughout this skill, CI/policy satisfaction means:
|
|
156
|
+
- the repository-configured workflows/checks that apply to the exact PR or default-branch commit have completed successfully; and
|
|
157
|
+
- any additional repository-enforced policy that is observable through available repository/GitHub tooling is also satisfied.
|
|
158
|
+
|
|
159
|
+
Do not interpret `required` as a mandate to read branch-protection or ruleset admin settings. When those settings are unavailable, use observable workflow/check results, PR mergeability, repository documentation, and any other visible policy evidence.
|
|
160
|
+
|
|
161
|
+
Do not ask the human to open GitHub Settings and transcribe required-check names merely to continue delivery. Stop only when unavailable policy data creates a concrete ambiguity that actually blocks merge, release, or another consequential action.
|
|
162
|
+
|
|
163
|
+
Inspect the configured/observable PR CI and checks without asking permission for each recheck.
|
|
156
164
|
|
|
157
165
|
### Pending
|
|
158
166
|
|
|
@@ -204,8 +212,8 @@ Mergeable/policy: <observed state>
|
|
|
204
212
|
Selecting option 1 means:
|
|
205
213
|
- the human accepts the final PR as observed,
|
|
206
214
|
- merge is authorized using the repository-approved strategy,
|
|
207
|
-
-
|
|
208
|
-
- after
|
|
215
|
+
- applicable post-merge default-branch CI/policy may be observed/rechecked automatically,
|
|
216
|
+
- after that CI/policy evidence is satisfied, the delivered normal short-lived branch may be finalized automatically locally/remotely under the safety rules below.
|
|
209
217
|
|
|
210
218
|
Do not present a second `Accept PR?` prompt immediately followed by `Merge?` when the evidence has not changed.
|
|
211
219
|
|
|
@@ -219,9 +227,9 @@ Stop before merge if checks regress, new commits appear, conflicts arise, or pol
|
|
|
219
227
|
|
|
220
228
|
## 9. Post-merge default-branch CI
|
|
221
229
|
|
|
222
|
-
After authorized merge, inspect the actual configured default branch/
|
|
230
|
+
After authorized merge, inspect the actual configured default branch/workflows and any observable enforced checks automatically.
|
|
223
231
|
|
|
224
|
-
If
|
|
232
|
+
If configured post-merge default-branch CI is pending, use bounded read-only rechecks when practical. If still pending beyond the practical interaction/tool window, report:
|
|
225
233
|
|
|
226
234
|
```text
|
|
227
235
|
MERGED — DEFAULT-BRANCH CI PENDING
|
|
@@ -232,7 +240,7 @@ Do not ask the human to authorize observation again.
|
|
|
232
240
|
|
|
233
241
|
If post-merge CI fails, report it clearly and inspect/diagnose; do not silently revert, modify production, or delete the delivered branch.
|
|
234
242
|
|
|
235
|
-
Only after
|
|
243
|
+
Only after configured post-merge default-branch CI and any additional observable repository-required checks are satisfied may delivered-branch finalization proceed. If the repository has no post-merge CI workflow/policy, state that explicitly and proceed using the observed merged/default-branch state.
|
|
236
244
|
|
|
237
245
|
## 10. Delivered-branch finalization
|
|
238
246
|
|
|
@@ -294,15 +302,15 @@ DELIVERY COMPLETE — BRANCH CLEANUP PENDING
|
|
|
294
302
|
|
|
295
303
|
and preserve the branch.
|
|
296
304
|
|
|
297
|
-
## 12.
|
|
305
|
+
## 12. Deployment handoff
|
|
298
306
|
|
|
299
|
-
If the delivered work item owns
|
|
307
|
+
If the delivered work item owns release/deployment engineering, successful engineering delivery may hand off to:
|
|
300
308
|
|
|
301
309
|
```text
|
|
302
|
-
/
|
|
310
|
+
/deployment-readiness <deployment-enabler-ID> enable [environment]
|
|
303
311
|
```
|
|
304
312
|
|
|
305
|
-
|
|
313
|
+
The readiness workflow is environment-generic. Production remains an environment role with stronger policy; merge approval never implies remote or production-deployment authorization.
|
|
306
314
|
|
|
307
315
|
## 13. Relationship to /start-work, /next-step, and /cleanup-branches
|
|
308
316
|
|
|
@@ -39,7 +39,7 @@ tools/lean-deployment/lean-poc-deploy.py
|
|
|
39
39
|
|
|
40
40
|
over reconstructing Deployment Kit commands by hand or requiring a separate Kit checkout.
|
|
41
41
|
|
|
42
|
-
If package/component baseline integrity is already known to be drifted, or deployment engineering/readiness is incomplete, stop and route to `/lean-update`, `/upstream-fix`, the deployment work item, or `/
|
|
42
|
+
If package/component baseline integrity is already known to be drifted, or deployment engineering/readiness is incomplete, stop and route to `/lean-update`, `/upstream-fix`, the deployment work item, or `/deployment-readiness` as appropriate.
|
|
43
43
|
|
|
44
44
|
## 2. Select an environment explicitly
|
|
45
45
|
|
|
@@ -52,17 +52,17 @@ Rules:
|
|
|
52
52
|
- never silently default to `production`;
|
|
53
53
|
- never use a remembered prior selection as implicit production authorization;
|
|
54
54
|
- never fall back from one environment to another because discovery, access, readiness, or deployment failed;
|
|
55
|
-
- if a named environment is not configured, fail explicitly
|
|
55
|
+
- if a named environment is not configured, fail explicitly and route to `/deployment-readiness`;
|
|
56
56
|
- selecting an environment chooses scope but does not authorize the deployment write.
|
|
57
57
|
|
|
58
|
-
## 3. Resolve and verify the target binding
|
|
58
|
+
## 3. Resolve and verify the machine/target binding
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
Keep the human-facing identity simple while preserving the stronger internal model:
|
|
61
61
|
|
|
62
62
|
```text
|
|
63
63
|
named environment
|
|
64
|
-
→
|
|
65
|
-
→
|
|
64
|
+
→ confirmed machine hostname/address
|
|
65
|
+
→ configured target/profile binding
|
|
66
66
|
→ current address discovery
|
|
67
67
|
→ independently verified host identity
|
|
68
68
|
```
|
|
@@ -71,14 +71,15 @@ Address discovery is not host trust.
|
|
|
71
71
|
|
|
72
72
|
Before remote deployment:
|
|
73
73
|
|
|
74
|
-
- verify the selected environment resolves to
|
|
75
|
-
-
|
|
74
|
+
- verify the selected environment resolves to the configured machine/target established by readiness;
|
|
75
|
+
- show the confirmed hostname/address when appropriate rather than asking the human to reconstruct an internal `targetName`;
|
|
76
|
+
- use the repository-approved stable internal target/profile rather than a guessed transient address;
|
|
76
77
|
- preserve enrolled host-key verification independently of current IP;
|
|
77
78
|
- stop on unknown/changed host identity;
|
|
78
79
|
- never bypass host-key checks, silently enroll new trust, scan/select another host, or weaken network controls as recovery;
|
|
79
80
|
- verify actual target OS compatibility before target-specific behavior.
|
|
80
81
|
|
|
81
|
-
Changing an environment's target is readiness/configuration work, not deployment fallback.
|
|
82
|
+
Changing an environment's machine/target binding is readiness/configuration work, not deployment fallback.
|
|
82
83
|
|
|
83
84
|
Keep private keys, passphrases, credentials, copied trust databases, and other secret values out of repository configuration and logs.
|
|
84
85
|
|
|
@@ -130,7 +131,7 @@ DEPLOYMENT READY
|
|
|
130
131
|
|
|
131
132
|
Environment: <name>
|
|
132
133
|
Role: <production|non-production>
|
|
133
|
-
|
|
134
|
+
Machine: <confirmed hostname/address>
|
|
134
135
|
Target OS: <verified>
|
|
135
136
|
Launcher: <repository-provided command>
|
|
136
137
|
Deployment baseline: <exact commit/distribution when present>
|
|
@@ -139,6 +140,8 @@ Required authorization: <exact tool phrase or repository gate>
|
|
|
139
140
|
Readiness blockers: NONE
|
|
140
141
|
```
|
|
141
142
|
|
|
143
|
+
Include an internal target/profile label only when it materially helps disambiguate the exact machine or tool plan. Do not make that identifier the primary human-facing identity.
|
|
144
|
+
|
|
142
145
|
For a non-production deployment ask for one bounded authorization covering the exact reviewed plan and required tool phrase.
|
|
143
146
|
|
|
144
147
|
For production require the project's explicit production deployment gate and the exact installed tool phrase. Keep the consequence visible as:
|
|
@@ -164,7 +167,7 @@ After execution, use repository-provided readiness/smoke/evidence commands when
|
|
|
164
167
|
Report only evidence-backed outcomes:
|
|
165
168
|
|
|
166
169
|
- selected environment;
|
|
167
|
-
- verified target identity
|
|
170
|
+
- verified machine/target identity;
|
|
168
171
|
- deployment baseline/tool identity when relevant;
|
|
169
172
|
- release/artifact identity;
|
|
170
173
|
- deployment result;
|