@mriekki/lean 0.2.0 → 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 CHANGED
@@ -8,10 +8,10 @@ Canonical engineering remains in the private platform repositories. Before publi
8
8
 
9
9
  The current profile bundles:
10
10
 
11
- - Lean Agentic Core `1.11.0` from commit `5b2f13bb188f74fa0d7b6b8d7985fe3abfc543f9`, distribution `greenfield-workspace`;
11
+ - Lean Agentic Core `1.11.1` from commit `e3a8a994d1e95923d629af7640d3b3a0a4f098d4`, distribution `greenfield-workspace`;
12
12
  - Lean POC Deployment Kit commit `4c23140576b39608a3ef285cad4abe53dccb9c47`, distribution `greenfield-poc`.
13
13
 
14
- Core `1.11.0` adds the package-aware `/lean-update` workflow for `LEAN_BASELINE.json` consumers, keeps `/core-sync` as a compatibility/router path for component-only Core consumers, and aligns `/upstream-fix` and `/deploy` with the package and generated Deployment Kit boundaries.
14
+ Core `1.11.1` tightens `/lean-update` for Bootstrap-generated package-managed consumers: it keeps `POC_BOOTSTRAP.json`, umbrella/component baselines, exact registry integrity, and generated package-verification surfaces coherent while retaining `/core-sync` as the compatibility/router path for component-only Core consumers.
15
15
 
16
16
  ## Developer experience
17
17
 
@@ -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 this repository and requires an explicit release action.
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
- The public source repository intentionally does not commit generated private-source snapshots. Prepare an auditable release candidate from clean exact canonical checkouts:
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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@mriekki/lean",
4
- "version": "0.2.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": "5b2f13bb188f74fa0d7b6b8d7985fe3abfc543f9",
18
- "version": "1.11.0",
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/production-readiness/SKILL.md","destination":".github/skills/production-readiness/SKILL.md"},
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/PRODUCTION_ENABLEMENT.md","destination":"docs/process/PRODUCTION_ENABLEMENT.md"},
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.2.0",
4
+ "version": "0.3.1",
5
5
  "components": {
6
6
  "core": {
7
7
  "repository": "mriekki/lean-agentic-core",
8
- "commit": "5b2f13bb188f74fa0d7b6b8d7985fe3abfc543f9",
9
- "version": "1.11.0",
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": "7a2c1b52dfb75a2d71da1b82c6d186330b596473689712d65e51a3a9c390a25c"
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": "ef6fcd56c5959cfe61a815b8edaabceaa6ca9b7eb4eb7bf8166eb2ea727fb98d"
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": "dfdb038560871752e7a9e223efec8a807afb786c5f83dc2b46699470d05c883b"
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": "c8b3bc84dbf3f126aa35e5dbc48fd6985de91d9c0f981ec47777e515c01b63ef"
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": "f5a16438406571c34cc876242a2aa4d593b028509b78bdeb2b2942529b1a9b6d"
70
+ "sha256": "bb31e292a57372c6f64f627035652632b474f1ebcaab604eded57d730825af8a"
71
71
  },
72
72
  {
73
73
  "source": "core/skills/cleanup-branches/SKILL.md",
@@ -82,7 +82,7 @@
82
82
  {
83
83
  "source": "core/skills/lean-update/SKILL.md",
84
84
  "destination": ".github/skills/lean-update/SKILL.md",
85
- "sha256": "b9534533c2b612f2787ce4b9d40494bd5a3554ccb646f500610fb899be8113d2"
85
+ "sha256": "8b4bce53b109a5959e862924b0a4afd931233a5094a1aef43c2f3672199108bb"
86
86
  },
87
87
  {
88
88
  "source": "core/skills/core-sync/SKILL.md",
@@ -100,14 +100,14 @@
100
100
  "sha256": "9b5968158992681837071b60465682a887540b1fdab510861ed739ffa996fbdb"
101
101
  },
102
102
  {
103
- "source": "core/skills/production-readiness/SKILL.md",
104
- "destination": ".github/skills/production-readiness/SKILL.md",
105
- "sha256": "adc45c556902f039b918f20bf484a05f9213103d5875b1ba7fa9c58dd0dca4d6"
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": "e9dcf7232505d684c1d8f39b0937c5026223e745df023c84295457e22da1b52a"
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": "8d1bcabf6d1b72705ca9e7e0cd348b71102805b041dba601fa6dd93d5063b1ed"
140
+ "sha256": "78859425a8f6efadf33fd2708e940ae2aebe2ce0f4d02d63c8ec0cbdf60f6b20"
141
141
  },
142
142
  {
143
- "source": "core/process/PRODUCTION_ENABLEMENT.md",
144
- "destination": "docs/process/PRODUCTION_ENABLEMENT.md",
145
- "sha256": "d2580b76144fad0e7d429802f8cdaba3ed022b4580c2e311c01f81b9a5a09bab"
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": "cc8f5c01f7c5ac1c745a87f810493eb9d1a3b1c76b46b64ed27830dd5838f33c"
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": "12c19b70924087824ae49369fdbe7bfb79b699e17285ada27d2f5cd4a5820098"
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 production deployment, successful engineering delivery may later hand off to `/production-readiness <deployment-enabler-ID> enable`; Reviewer readiness never authorizes production deployment.
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 `/production-readiness` continue until stopped or naturally complete.
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, required PR CI is green, and repository policy/mergeability are satisfactory, final PR acceptance and merge authorization may be combined into one meaningful choice:
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 required post-merge default-branch CI,
63
- - safe finalization of that delivered short-lived branch after required post-merge CI is green.
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
- /production-readiness
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 production-readiness documentation, one explicit session-level authorization may cover focused updates within the defined scope; do not re-ask after every answer.
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/required
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 required post-merge default-branch CI is observed green,
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
- Inspect repository-required PR checks without asking permission for each recheck.
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
- - required post-merge default-branch CI may be observed/rechecked automatically,
208
- - after required post-merge CI is green, the delivered normal short-lived branch may be finalized automatically locally/remotely under the safety rules below.
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/workflow automatically.
230
+ After authorized merge, inspect the actual configured default branch/workflows and any observable enforced checks automatically.
223
231
 
224
- If required post-merge CI is pending, use bounded read-only rechecks when practical. If still pending beyond the practical interaction/tool window, report:
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 required post-merge CI is observed green may delivered-branch finalization proceed. If the repository has no post-merge CI policy, state that explicitly and proceed using the observed merged/default-branch state.
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. Production handoff
305
+ ## 12. Deployment handoff
298
306
 
299
- If the delivered work item owns production release/deployment, successful engineering delivery may hand off to:
307
+ If the delivered work item owns release/deployment engineering, successful engineering delivery may hand off to:
300
308
 
301
309
  ```text
302
- /production-readiness <deployment-enabler-ID> enable
310
+ /deployment-readiness <deployment-enabler-ID> enable [environment]
303
311
  ```
304
312
 
305
- Merge approval never implies production-deployment authorization.
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 `/production-readiness` as appropriate.
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
- Treat these as separate concepts:
60
+ Keep the human-facing identity simple while preserving the stronger internal model:
61
61
 
62
62
  ```text
63
63
  named environment
64
- → configured target binding
65
- → stable logical/SSH identity
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 its configured target;
75
- - use the repository-approved stable logical target rather than a guessed transient address;
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
- Target: <verified logical target>
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/label;
170
+ - verified machine/target identity;
168
171
  - deployment baseline/tool identity when relevant;
169
172
  - release/artifact identity;
170
173
  - deployment result;