@mriekki/project-forge 3.0.0 → 4.0.0

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.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: setup
3
- description: "Guide and execute setup for this workstation/workspace instance, including optional named deployment-environment onboarding and disposable deployment-path proof."
3
+ description: "Guide and execute setup for this workstation/workspace instance, including verified local runtime convergence, optional remote-enabled capability, named deployment-environment onboarding, and disposable deployment-path proof."
4
4
  argument-hint: "[status|repair|local|remote|<environment>]"
5
5
  user-invocable: true
6
6
  disable-model-invocation: true
@@ -8,7 +8,7 @@ disable-model-invocation: true
8
8
 
9
9
  # Setup
10
10
 
11
- Purpose: give the developer one obvious entry point after cloning/opening a Project Forge workspace, whether this is the first workstation for the project or an additional independent workstation for an existing Project.
11
+ Purpose: give the developer one obvious entry point after cloning/opening a Project Forge workspace and whenever this workstation later needs local or remote environment preparation.
12
12
 
13
13
  Normal first use is simply:
14
14
 
@@ -16,7 +16,26 @@ Normal first use is simply:
16
16
  /setup
17
17
  ```
18
18
 
19
- The skill is the conversational/orchestration layer. Repository-local setup scripts and Deployment Kit commands remain the deterministic machine implementations. Do not duplicate installer, SSH, Docker, deployment, or profile mechanics in the skill when the repository already provides them.
19
+ Supported focused forms include:
20
+
21
+ ```text
22
+ /setup status
23
+ /setup repair
24
+ /setup local
25
+ /setup remote
26
+ /setup <environment>
27
+ ```
28
+
29
+ `/setup` is the conversational/orchestration layer. Repository-local setup scripts and Deployment Kit commands remain the deterministic machine implementations. Do not duplicate installer, SSH, Docker, deployment, or profile mechanics in the skill when the repository already provides them.
30
+
31
+ The governing readiness invariant is:
32
+
33
+ ```text
34
+ REQUESTED MODE != ready state
35
+ READY = verified operational evidence
36
+ ```
37
+
38
+ A requested local/remote capability becomes ready only after its applicable readiness contract passes. Preserve the prior ready state when convergence fails.
20
39
 
21
40
  ## 1. Resolve this workspace instance
22
41
 
@@ -29,12 +48,12 @@ From the repository root inspect only what is needed:
29
48
  - `.github/project-forge-workspace.json` and Project Forge/component baselines when present;
30
49
  - `scripts/setup.ps1` on Windows or `scripts/setup.sh` on macOS;
31
50
  - current Git branch/status/upstream evidence so setup does not overwrite unrelated work;
32
- - workstation-local developer-environment evidence when present;
33
- - the actual workstation OS/platform and machine-local identity needed to describe this workspace instance.
51
+ - workstation-local setup/readiness evidence when present;
52
+ - actual workstation OS/platform and machine-local identity needed to describe this workspace instance.
34
53
 
35
54
  If package-managed Project Forge files are drifted, route that problem to `/project-forge-update`; do not silently replace managed files during setup.
36
55
 
37
- A **workspace instance** is one checkout of one Project Forge project on one developer workstation. Multiple workspace instances for the same project are normal and may be active at the same time.
56
+ A **workspace instance** is one checkout of one Project Forge project on one developer workstation. Multiple workstations may work on the same project concurrently, and multiple workspace instances are normal.
38
57
 
39
58
  When project provenance/configuration exists but this computer has no local readiness evidence for the checkout, treat the situation as:
40
59
 
@@ -44,23 +63,33 @@ EXISTING PROJECT — NEW WORKSTATION
44
63
 
45
64
  Do not require another workstation to be online and do not treat another computer as the project's primary machine.
46
65
 
47
- Detect the current OS automatically. Do not ask the developer which setup launcher to use when the platform can be observed. Prefer a compact preflight such as:
66
+ Detect the current OS automatically. Do not ask the developer which setup launcher to use when the platform can be observed.
67
+
68
+ A workspace instance owns machine-local state such as local runtime/data, SSH private keys/trust, credential-manager entries, Docker state, and repository-scoped readiness evidence. Git/GitHub is the shared source-code coordination boundary. Never invent a central workstation registry merely to coordinate another computer.
69
+
70
+ ## 2. `status` is read-only
71
+
72
+ `/setup status` performs no setup writes. Inspect current workstation evidence and live prerequisites, then report local workspace/runtime readiness plus any configured remote capabilities.
73
+
74
+ Prefer a compact result such as:
48
75
 
49
76
  ```text
50
- EXISTING PROJECT — NEW WORKSTATION
77
+ SETUP STATUS
51
78
 
52
- Project ............ <project>
53
- Platform ........... Windows / macOS
54
- Setup launcher ..... <detected launcher>
55
- Personal profile ... FOUND / NOT CONFIGURED / DEFERRED
56
- Local setup ........ READY / NOT CONFIGURED / BLOCKED
57
- ```
79
+ Workspace ......... READY / NOT CONFIGURED / BLOCKED
80
+ Local runtime ..... READY / STALE / NOT APPLICABLE
81
+ Build/tests ....... READY / STALE / BLOCKED
82
+ Local data ........ READY / NOT APPLICABLE / BLOCKED
83
+ Personal profile .. READY / DEFERRED / BLOCKED
84
+ Remote capability . READY / PARTIAL / NOT CONFIGURED
58
85
 
59
- A workspace instance owns machine-local state such as local runtime/data, SSH private keys/trust, credential-manager entries, Docker state, and repository-scoped developer-mode evidence. Those values are not synchronized from another workstation.
86
+ NEXT
87
+ /setup local | /setup remote | /setup <environment> | /next-step
88
+ ```
60
89
 
61
- Git/GitHub is the shared source-code coordination boundary. The personal Project Forge profile is the shared portable non-secret target-definition boundary. Do not invent a central device registry merely to support another workstation.
90
+ Do not silently repair state during `status`.
62
91
 
63
- ## 2. Run the generated local setup for the observed OS
92
+ ## 3. Run generated workstation setup
64
93
 
65
94
  Select the launcher for the actual workstation OS:
66
95
 
@@ -69,25 +98,23 @@ Windows -> .\scripts\setup.ps1
69
98
  macOS -> ./scripts/setup.sh
70
99
  ```
71
100
 
72
- Do not ask the developer to choose an OS launcher when the OS can be observed.
73
-
74
101
  For normal setup, run the launcher with repository restore enabled when supported:
75
102
 
76
103
  ```text
77
104
  setup --restore
78
105
  ```
79
106
 
80
- For `status`, use the script's read-only check mode when supported:
107
+ For a read-only generated setup check, use the script's check mode when supported:
81
108
 
82
109
  ```text
83
110
  setup --check
84
111
  ```
85
112
 
86
- A manually invoked `/setup` authorizes routine, bounded, non-destructive local setup that the generated script already owns: supported tool installation, VS Code extension installation, dependency restore, personal Project Forge profile initialization, and other declared workstation preparation. Do not add another confirmation merely to start those routine actions.
113
+ A manually invoked `/setup` authorizes routine, bounded, non-destructive local setup that the generated script already owns: supported tool installation, VS Code extension installation, dependency restore, personal Project Forge profile initialization, and other declared workstation preparation.
87
114
 
88
115
  Stop before destructive replacement, unrelated machine mutation, secret disclosure, or repair outside the declared setup contract.
89
116
 
90
- ## 3. Reach local workspace readiness first
117
+ ## 4. `/setup local` converges verified local development readiness
91
118
 
92
119
  The first success target is:
93
120
 
@@ -95,88 +122,87 @@ The first success target is:
95
122
  LOCAL WORKSPACE READY
96
123
  ```
97
124
 
98
- Remote environments must not block initial local setup unless the approved project explicitly requires a remote dependency for local development.
125
+ Remote environments must not block local setup unless the approved project explicitly requires a remote dependency for local development.
99
126
 
100
- After the generated setup script passes:
127
+ If application scaffolding is intentionally deferred by `SCAFFOLD_PLAN.json` or approved work-item state, local workspace readiness may be valid without an application runtime. Do not invent source/runtime work merely to make local setup look complete.
101
128
 
102
- - if application source/runtime already exists, use `/developer-env-mode local` to converge and verify local persistence/build/tests/container/health as applicable;
103
- - if `SCAFFOLD_PLAN.json` or the approved work-item plan intentionally defers application scaffolding, report local **workspace** readiness without inventing application runtime work;
104
- - if Docker or another runtime is not required by the current project state, mark it `NOT APPLICABLE`, not failed.
129
+ When application source/runtime exists, converge only the repository-owned local development contract.
105
130
 
106
- Each workstation normally owns independent local development data. Reproduce schema/migrations/seed behavior as the project defines it; do not silently copy mutable local databases or runtime state from another computer.
131
+ ### A. Prerequisites and restore
107
132
 
108
- ## 4. Establish/sync the developer's personal Project Forge profile
133
+ Verify supported tools/versions using repository setup/doctor tooling when present. Run repository-defined dependency restore/setup commands when missing or stale. Preserve pinned versions and project conventions.
109
134
 
110
- When the installed Deployment Kit exposes personal-profile operations, `/setup` should establish the authenticated developer's portable non-secret profile as routine setup state. This repo is per developer, not per Project or workstation.
135
+ ### B. Local persistence
111
136
 
112
- First inspect profile status and authenticated GitHub login. If the expected private repository is missing, tell the developer what will happen before writing:
137
+ For SQLite local development, resolve the project-owned database path and migration/initialization contract from repository evidence. Prefer installed Deployment Kit local SQLite ensure/status primitives when available.
113
138
 
114
- ```text
115
- Project Forge will create a private GitHub repository for your portable environment definitions:
139
+ When the database is absent, creating the owned local SQLite file/directory and running normal forward initialization/migrations may be routine setup.
116
140
 
117
- <login>/project-forge-profile
141
+ If an existing database is corrupt, incompatible, has unexpected ownership/schema state, or recovery would be destructive, stop. **Never delete, replace, reset, or migrate destructively** merely to make setup pass. Other persistence engines require their own explicit repository-owned setup contract.
118
142
 
119
- It stores only non-secret target definitions and preferences. SSH private keys,
120
- passwords, PATs, known-host contents, and machine-local state stay on this computer.
121
- ```
143
+ Each workstation normally owns independent local development data; do not silently copy mutable local databases or runtime state from another computer.
144
+
145
+ ### C. Build and tests
122
146
 
123
- Then invoke the repository-provided deterministic operation within the already-authorized `/setup` action:
147
+ Run the repository's required local build and test commands. A missing/stale build is a normal convergence condition; rebuild it. If required build/tests fail, report:
124
148
 
125
149
  ```text
126
- python tools/project-forge-deployment/project-forge-deploy.py environment profile ensure --yes
150
+ LOCAL MODE NOT READY
127
151
  ```
128
152
 
129
- If the repo already exists and is verified private, reuse it. On an additional workstation, sync/apply the validated portable profile using the repository-provided profile operation when supported, while preserving valid non-conflicting machine-local definitions.
153
+ and do not record local runtime readiness.
130
154
 
131
- Never import another workstation's private key, known-host contents, PAT, password, local database, Docker credential state, or readiness claim.
155
+ ### D. Local immutable runtime artifact
132
156
 
133
- If automatic profile creation cannot proceed, use the explicit Bootstrap-like fallback: ask the developer to create the exact private `<login>/project-forge-profile`, reply `created`, then re-verify owner/name/privacy before deterministic initialization. Never ask the developer to paste credentials into chat.
157
+ When local execution is Docker-based, build/acquire the application image through repository-owned commands and resolve an immutable identity. A repository-supported workstation adapter may accept an exact registry digest or a local Docker image ID (`sha256:<64 hex>`) for workstation-only execution. Never treat a mutable tag as final runtime identity.
134
158
 
135
- If GitHub is temporarily unavailable, otherwise-ready local development remains valid. Report profile portability as `DEFERRED`.
159
+ ### E. Local runtime and health
136
160
 
137
- ## 5. Present a guided environment setup selection
161
+ Converge the project-owned local application runtime through the repository-distributed workstation adapter when available. Current reusable workstation-container topology remains loopback-only:
138
162
 
139
- After local readiness/profile state is understood, show the environments that this workstation can be prepared to use.
163
+ ```text
164
+ placement: workstation
165
+ isolation: container
166
+ exposure: loopback
167
+ ```
140
168
 
141
- This is an intentionally **multi-select** decision because preparing the workstation for several environments in one setup session is valid. When the host exposes structured choice UI, use its native multi-select control; in VS Code use the question surface such as `vscode_askQuestions`. Do not emulate checkboxes as ordinary chat text when native multi-select is available.
169
+ Mount only project-owned local persistence as required. Verify the declared health endpoint/smoke check when the project defines one. Do not resolve SSH targets, publish images, create public routes, or deploy Staging/Production while preparing local development.
142
170
 
143
- Conceptual choices are:
171
+ Only after applicable prerequisites, persistence, build/tests, runtime, and health checks pass should local readiness be recorded as ready.
144
172
 
145
- - `Local development`
146
- - each existing project-defined environment from current topology
147
- - `Other / define another environment`
173
+ ## 5. Establish/sync the personal Project Forge profile
148
174
 
149
- Recommend/select `Local development` by default only because Project Forge's local-first setup policy makes it the normal initial capability and remote environments must not block local coding. Surface that rationale briefly. Do not automatically mark any additional environment recommended without project-specific evidence.
175
+ When installed Deployment Kit exposes personal-profile operations, `/setup` should establish the authenticated developer's portable non-secret profile as routine setup state. This repo is per developer, not per Project or workstation.
150
176
 
151
- If the host has no structured multi-select UI, a checkbox-like or concise textual list is the documented fallback. Free-form selection remains valid.
177
+ If the expected private profile repository is missing, explain the intended creation before writing. It stores only non-secret target definitions/preferences. SSH private keys, passwords, PATs, known-host contents, mutable local databases, Docker credentials, and machine-local readiness remain local.
152
178
 
153
- Rules:
179
+ Use repository-provided deterministic profile operations when supported. If GitHub is unavailable, otherwise-ready local development remains valid; report profile portability as `DEFERRED`.
154
180
 
155
- - Existing named environments come from the project's current deployment topology, not a hard-coded Staging/Production list.
156
- - Show each environment's purpose/role compactly when the name alone is ambiguous.
157
- - Selecting an environment means **prepare this workstation for that environment**; it does not deploy the project's real application.
158
- - Do not force the developer to configure every environment in one session. `/setup` can be rerun later to add another capability.
159
- - The recorded setup scope comes from the developer's actual selections, not from any recommended/default choice.
181
+ Never ask the developer to paste credentials into chat.
160
182
 
161
- ### Topology source of truth
183
+ ## 6. Present guided environment setup selection
162
184
 
163
- Prefer project-owned mutable deployment topology:
185
+ After local readiness/profile state is understood, show the environments this workstation can be prepared to use.
164
186
 
165
- ```text
166
- DEPLOYMENT_TOPOLOGY.json
167
- ```
187
+ This is an intentionally **multi-select** decision because preparing the workstation for several environments in one setup session is valid. When the host exposes structured choice UI, use native multi-select; in VS Code use a question surface such as `vscode_askQuestions`.
168
188
 
169
- Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback.
170
-
171
- `PROJECT_BOOTSTRAP.json` is generation/provenance evidence and should not be casually rewritten merely because a developer adds an environment later.
189
+ Conceptual choices are:
190
+ - `Local development`;
191
+ - each existing project-defined environment from current topology;
192
+ - `Other / define another environment`.
172
193
 
173
- If an older Project has no `DEPLOYMENT_TOPOLOGY.json` and the developer chooses to add/change a logical environment, first materialize the currently approved deployment topology into the project-owned file, then make the scoped project configuration change there. Preserve the original Bootstrap provenance file.
194
+ Recommend/select `Local development` by default only because Project Forge is local-first. Do not automatically recommend additional environments without project-specific evidence.
174
195
 
175
- A topology entry should keep logical identity distinct from purpose and placement. A name such as `demo`, `qa`, or `prod-east` is the command-facing environment identity. Its purpose remains one of the project-supported semantic roles such as development/demo/staging/production.
196
+ Rules:
197
+ - existing names come from `DEPLOYMENT_TOPOLOGY.json`, falling back to Bootstrap topology only for the initial topology;
198
+ - selecting an environment means **prepare this workstation for that environment**, not deploy the project application;
199
+ - do not force every environment to be configured in one session;
200
+ - the recorded setup scope comes from the developer's actual selections;
201
+ - later environment changes belong in mutable project topology, not casual rewrites of Bootstrap provenance.
176
202
 
177
- ### Other / define another environment
203
+ ### Define another environment
178
204
 
179
- When the developer chooses **Other**, guide only the material choices needed to create a durable environment definition, normally:
205
+ For `Other / define another environment`, collect only material durable facts, normally:
180
206
 
181
207
  ```text
182
208
  Name ............ demo
@@ -187,11 +213,12 @@ Isolation ....... <project/catalog-supported option>
187
213
  Exposure ........ <project/catalog-supported option>
188
214
  ```
189
215
 
190
- Use host-native single-select controls for bounded mutually exclusive fields such as purpose/placement/isolation/exposure when available. Keep names, targets, and other factual values open-ended. Recommend at most one option only when current topology/catalog evidence or a clear engineering tradeoff supports it; otherwise show the bounded choices without a recommendation. Always allow `Other / specify` or `Not sure — recommend one` where appropriate.
216
+ Use structured single-select controls for bounded mutually exclusive fields when available. Keep names/targets open-ended. Persist the approved logical environment definition before claiming it is configured.
191
217
 
192
- Persist the approved logical environment definition before claiming it is configured. Normalize the command-facing name to the repository-supported safe slug form. Once saved, all normal environment commands use that exact name, for example:
218
+ Normal commands then use that exact name, for example:
193
219
 
194
220
  ```text
221
+ /setup demo
195
222
  /deployment-readiness demo
196
223
  /deploy demo
197
224
  /tear-down demo
@@ -199,54 +226,43 @@ Persist the approved logical environment definition before claiming it is config
199
226
 
200
227
  Do not create an environment whose required placement/adapter is unsupported; report the concrete `CATALOG GAP` or deferred state instead.
201
228
 
202
- ## 6. Prepare selected remote environments
229
+ ## 7. `/setup remote` and `/setup <environment>` prepare remote-enabled capability
203
230
 
204
- For each selected non-local environment, reuse the project's topology plus the developer's portable target/profile definition and establish this workstation's machine-specific capability as far as supported:
231
+ Remote setup proves that this workstation can later work with the configured non-Production or Production-class environment under its normal safety contract. It does **not** publish an artifact or deploy the real application.
205
232
 
206
- ```text
207
- logical environment
208
- → target/profile definition
209
- → this-workstation SSH identity/trust when applicable
210
- → target access
211
- → host/platform prerequisites/readiness
212
- → deployment-path proof when supported
213
- ```
233
+ Verify as applicable:
234
+ - local developer prerequisites still needed to build/test;
235
+ - project topology contains the selected non-deferred environment;
236
+ - exact target/provider binding exists when required;
237
+ - workstation-to-target identity/trust/access is valid;
238
+ - target OS/runtime/platform prerequisites are valid;
239
+ - persistence/readiness prerequisites can be inspected safely;
240
+ - GitHub/registry access needed for a later release/publish step is available;
241
+ - repository deployment tooling/baselines are coherent.
214
242
 
215
- Never copy SSH private keys/trust from another workstation. Another workstation's successful readiness is useful project context, not proof that this workstation can deploy.
243
+ For remote SSH preserve strict host identity. Unknown/changed host identity is a stop condition. Never copy SSH private keys/trust from another workstation and never fall back to another target/provider simply to make setup pass.
216
244
 
217
- If host prerequisites cannot yet be prepared automatically, report the exact preparation gap instead of weakening `sudo`, trust, or credential boundaries.
245
+ Remote readiness does not require configuring Production when the selected environment is non-Production. Production classification remains project topology/policy, not a literal-name check.
218
246
 
219
- ## 7. Prove the deployment path with a disposable Project Forge probe
247
+ ## 8. Prove supported remote mechanics with a disposable Project Forge probe
220
248
 
221
249
  When the installed Deployment Kit exposes environment proof operations, a selected remote environment should normally be taken through an end-to-end **environment proof deployment** during setup.
222
250
 
223
- The proof is not the Project application. It is a tiny disposable Project Forge-owned probe that should:
251
+ The proof is not the Project application. It is a tiny disposable Project Forge-owned probe:
224
252
 
225
253
  ```text
226
- acquire a small stable probe image on this workstation
227
- → resolve its exact immutable digest
228
- → transfer that exact image using the real workstation-mediated path
229
- → deploy under a reserved probe identity
254
+ acquire a stable probe image locally
255
+ → resolve exact immutable digest
256
+ → transfer using the real workstation-mediated path
257
+ → deploy under reserved probe identity
230
258
  → verify runtime/HTTP health
231
- → remove the probe
259
+ → remove probe
232
260
  → verify cleanup
233
261
  ```
234
262
 
235
- For the current standard Deployment Kit, use the repository-distributed command when available, conceptually:
236
-
237
- ```text
238
- python tools/project-forge-deployment/project-forge-deploy.py environment proof plan \
239
- <target> --owner-repo <owner/repo> --environment <name>
240
-
241
- python tools/project-forge-deployment/project-forge-deploy.py environment proof run \
242
- <target> --owner-repo <owner/repo> --environment <name> --yes
243
- ```
244
-
245
- Use the actual installed command/help contract rather than blindly copying examples.
246
-
247
- A successful proof demonstrates this workstation can use the real image-transfer/application-runtime/health path. It must not create project data or claim the project's application has been deployed.
263
+ Use the actual installed command/help contract. Never claim the Project application is deployed because the probe succeeds.
248
264
 
249
- Preferred state after proof:
265
+ Preferred evidence:
250
266
 
251
267
  ```text
252
268
  Environment ........... demo
@@ -256,110 +272,44 @@ Deployment path ....... PROVEN
256
272
  Project application ... NOT YET DEPLOYED
257
273
  ```
258
274
 
259
- If cleanup fails, report `PROOF PASSED — CLEANUP ACTION NEEDED`; do not claim a clean setup.
260
-
261
- ### Authorization during setup
262
-
263
- For a selected **non-Production** environment, the developer's explicit `/setup` selection plus a clear preview of the disposable proof may cover the bounded proof write. Use the deterministic tool's exact authorization contract and do not add multiple ceremonial prompts.
264
-
265
- For any environment whose resolved purpose is **production**, keep one explicit consequential gate before the proof writes to it. Render this gate through host-native **single-select** structured choice UI when available:
266
-
267
- ```text
268
- PRODUCTION ENVIRONMENT PROOF
269
-
270
- Project Forge is ready to temporarily deploy a disposable environment probe to <name>,
271
- verify it, and remove it. No project application or project data will be deployed.
272
- ```
273
-
274
- Choices:
275
-
276
- - `Run Production environment proof`
277
- - `Verify access/readiness only`
278
- - `Skip this environment for now`
279
-
280
- Do not mark a choice recommended merely because a recommendation field exists. Recommend `Run Production environment proof` only when the selected setup goal and current evidence make end-to-end proof the clearly preferred next step, and explain why. Use a numbered text fallback only when structured choice UI is unavailable.
281
-
282
- A custom Production name such as `prod-east` remains Production because of its resolved purpose/classification. Never downgrade Production safety based on the literal environment string.
283
-
284
- ## 8. First real application deployment remains streamlined
285
-
286
- Environment proof should intentionally answer environment/mechanics questions once. Later, the first `/deploy <environment>` with real application code should ask only application-specific questions that are still unresolved, such as exact health contract, persistence, exposure/route, or immutable application artifact policy.
287
-
288
- Do not repeat already-proven target/access/transport setup unless evidence changed.
289
-
290
- Environment proof never authorizes a later real application deployment, and Production proof never authorizes Production application deployment.
291
-
292
- ## 9. Human workspace acceptance remains meaningful
293
-
294
- Machine success is evidence, not human acceptance.
295
-
296
- When selected setup work passes, report what is ready and hand off to `/next-step` for remaining human editor/workspace acceptance and work-item navigation.
297
-
298
- Preferred completion shape:
299
-
300
- ```text
301
- SETUP COMPLETE
302
-
303
- Workspace instance .... <machine/platform or local friendly name>
304
- Workstation tools ...... READY
305
- Personal profile ....... READY / DEFERRED
306
- Project dependencies ... READY / DEFERRED
307
- Local runtime .......... READY / DEFERRED / NOT APPLICABLE
308
- Workspace checks ....... READY
309
-
310
- ENVIRONMENT CAPABILITIES
311
- Local .................. READY
312
- Demo ................... PROVEN / READY / NOT CONFIGURED
313
- Staging ................ PROVEN / READY / NOT CONFIGURED
314
- Production ............. PROVEN / ACCESS READY / NOT CONFIGURED
315
-
316
- Next:
317
- /next-step
318
- ```
319
-
320
- Do not silently mark editor/agent discovery accepted on the developer's behalf.
321
-
322
- ## 10. Concurrent workspace rules
323
-
324
- Multiple workstations may work on the same project concurrently.
325
-
326
- Prefer independent short-lived branches for independent workstreams. If this checkout uses a branch another workspace may also update, inspect upstream/remote divergence before branch-changing, delivery, or history-sensitive actions. A remote branch advancing from another workstation is normal evidence, not corruption.
275
+ For a Production-class environment, keep the proof explicitly labeled as a **PRODUCTION ENVIRONMENT PROOF** only when topology says the selected environment is Production-class. The disposable proof still does not authorize real Production deployment.
327
276
 
328
- Stop before force/reset/rebase or silent loss of local work; route reconciliation through the normal Git/work-item flow.
329
-
330
- `/setup` itself does not commit, push, merge, switch work-item branches, copy worktree changes between computers, or use stash as cross-workstation storage.
331
-
332
- Shared remote environment mutations remain protected by the Deployment Kit's environment/application locking and readiness contracts.
333
-
334
- ## 11. `status`, `repair`, local, remote, and named-environment options
277
+ If cleanup fails, report `PROOF PASSED — CLEANUP ACTION NEEDED`; do not claim a clean setup.
335
278
 
336
- `/setup status` is read-only. Report current setup/readiness for **this workspace instance** and all project-defined environments without mutating them.
279
+ ## 9. `repair` is bounded and fail-closed
337
280
 
338
- `/setup repair` repairs only missing/safely reproducible state. Preserve valid tools, keys, trust, databases, Docker state, and project files.
281
+ `/setup repair` may re-run safe deterministic setup/readiness operations after classifying the blocker. It may create missing local directories/caches, restore dependencies, rebuild outputs, create a new owned local database, run normal forward initialization, or recreate an owned disposable/local runtime when the repository contract permits those actions.
339
282
 
340
- `/setup local` targets local workstation convergence.
283
+ Stop for a separate explicit decision before:
284
+ - deleting/resetting an existing database;
285
+ - destructive migration or rollback;
286
+ - replacing unexplained persistent data;
287
+ - deleting unrelated containers/images/volumes;
288
+ - publishing an artifact remotely;
289
+ - rebinding a target;
290
+ - weakening host verification;
291
+ - changing public/LAN exposure;
292
+ - deploying Staging or Production.
341
293
 
342
- `/setup remote` presents the guided named-environment selector rather than assuming only Staging/Production.
294
+ ## 10. Relationship to deployment readiness
343
295
 
344
- `/setup <environment>` may directly select one existing project-defined environment (for example `/setup demo`) and run the same readiness/proof flow. It must resolve the name from project topology and never invent or silently fall back to another environment.
296
+ `/setup` establishes workstation/workspace capability and may prove reusable environment mechanics.
345
297
 
346
- When the installed Deployment Kit exposes profile migration and this workstation already has valid target definitions but no personal profile model, prefer the deterministic migration command. Migration may publish only sanitized target definitions and preserve existing keys/trust; it must not deploy applications or delete old credentials automatically.
298
+ `/deployment-readiness <environment>` remains the later pre-deployment check for one exact environment. It reuses fresh setup-time proof where valid, then verifies application-specific prerequisites for the real deployment.
347
299
 
348
- ## 12. Credential boundary
300
+ `/setup` never implies `/deploy`. A successful setup/proof does not authorize a remote or Production application write.
349
301
 
350
- Never ask the developer to paste passwords, PATs, private SSH keys, or other credentials into chat.
302
+ ## 11. Completion and handoff
351
303
 
352
- When a repository/tool needs a credential, direct the deterministic local tool to prompt in the local terminal using a hidden/secure prompt. Secrets remain workstation-local and must not be committed to the Project repository or portable profile.
304
+ After setup, report evidence rather than inferring human acceptance.
353
305
 
354
- ## 13. Relationship to other Project Forge commands
306
+ A generated setup/doctor/proof success is machine evidence. Human workspace acceptance remains distinct.
355
307
 
356
- - `/setup` — prepare this workstation/workspace instance and selected named environment capabilities.
357
- - `/progress` — read-only lifecycle/workspace/environment status.
358
- - `/next-step` — one sensible next action after current evidence is known.
359
- - `/developer-env-mode` — direct/advanced local-vs-remote operational readiness command.
360
- - `/start-work <ID>` — implementation authorization after workspace acceptance.
361
- - `/deployment-readiness <environment>` — readiness for any exact project-defined environment.
362
- - `/deploy <environment>` — deploy the real application to any exact project-defined environment, with Production classification preserved.
363
- - `/tear-down <environment>` — destructively clean only the exact named environment after its own authorization gates.
308
+ Useful next actions include:
309
+ - `/next-step` — one sensible next action after current evidence is known;
310
+ - `/start-work <ID>` — implementation authorization after workspace acceptance;
311
+ - `/deployment-readiness <environment>` — final pre-deploy evidence for a prepared environment;
312
+ - `/deploy <environment>` — only after readiness and its own authorization contract;
313
+ - `/tear-down <scope>` — destructive cleanup under its separate gate.
364
314
 
365
- Keep setup focused: one front door, automatic OS detection, project-defined environment names, deterministic tooling underneath, disposable proof where supported, and stronger Production gates only where they materially matter.
315
+ Do not create a second top-level developer-environment-mode workflow. Local/remote workstation convergence belongs here.
@@ -41,7 +41,7 @@ If local requirements exist, are they DRAFT or APPROVED?
41
41
  Are material decisions unresolved?
42
42
  ```
43
43
 
44
- If detailed precision is warranted but incomplete, recommend `/refine-requirements`, `/grill-me`, or `/grill-with-docs` rather than silently inventing behavior.
44
+ If detailed precision is warranted but incomplete, recommend `/refine-requirements` or `/grill-me` rather than silently inventing behavior. `/grill-me` may remain read-only or, when the human selects its session-level reconciliation option, write resolved decisions into permitted authorities.
45
45
 
46
46
  If local requirements are DRAFT and carry material behavior, human approval is the gate before substantive planning/implementation.
47
47
 
@@ -114,11 +114,10 @@ Explain why the level was chosen.
114
114
  For STANDARD/ELEVATED work, once requirements are ready, coaching may be offered but is never required. When the human needs to choose, render a **single-select structured choice** through the host UI when available; in VS Code use the native question surface such as `vscode_askQuestions`.
115
115
 
116
116
  Relevant choices are:
117
-
118
- - `Continue without coaching` — `RECOMMENDED` default
119
- - `/coach` for a short pre-build concept review
120
- - `/grill-me` for challenge rather than teaching
121
- - `Stop`
117
+ - `Continue without coaching` — `RECOMMENDED` default;
118
+ - `/coach` for a short pre-build concept review;
119
+ - `/grill-me` for challenge rather than teaching;
120
+ - `Stop`.
122
121
 
123
122
  Use a numbered text list only when structured choice UI is unavailable. For LIGHT work, do not interrupt with coaching unless requested.
124
123
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mriekki/project-forge",
3
- "version": "3.0.0",
3
+ "version": "4.0.0",
4
4
  "description": "Public consumer distribution and updater for Project Forge engineering assets.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,69 +0,0 @@
1
- ---
2
- name: Coach
3
- description: Optional guided engineering-learning agent using actual repository context for concepts, code walkthroughs, debugging, coding/SQL/system-design drills, interviews, diagrams, and resources.
4
- user-invocable: true
5
- disable-model-invocation: true
6
- ---
7
-
8
- # Coach
9
-
10
- You are the optional engineering-learning perspective.
11
-
12
- Coaching is never required to start, continue, review, accept, deliver, merge, or complete engineering work.
13
-
14
- ## Core behavior
15
-
16
- - Do not edit production code or implement fixes for the developer.
17
- - Do not invoke subagents.
18
- - Do not silently broaden product scope.
19
- - Do not pin/request/switch to a premium model automatically.
20
- - Read minimum relevant context.
21
- - Use actual repository code, requirements, tests, diffs, incidents, and decisions when useful.
22
- - Ask one material question at a time.
23
- - Continue automatically until stop/natural completion.
24
- - Adapt difficulty to demonstrated understanding.
25
- - Challenge shallow explanations.
26
- - Distinguish actual implementation/understanding from AI-generated work or study.
27
-
28
- ## Depth and levels
29
-
30
- Depth: Light, Focused, Deep, Broad, or Coach recommends.
31
-
32
- Levels:
33
-
34
- ```text
35
- L1 Recognize
36
- L2 Explain
37
- L3 Trace
38
- L4 Apply / Debug
39
- L5 Defend / Design
40
- L6 Interview Ready
41
- ```
42
-
43
- Do not inflate mastery.
44
-
45
- ## Modes
46
-
47
- Support concept learning, real-code walkthroughs, debugging, coding/DSA, SQL/database, design defense, system design, interview drills, gap assessment, learning paths, diagrams, and optional external resources.
48
-
49
- For a structured walkthrough of a changed implementation across a Git/PR/commit change set, route to `/code-walkthrough` when available. Use Coach directly for ad-hoc code explanation or deeper concept exploration.
50
-
51
- Use installed learning assets when present; otherwise coach directly from the repository/context.
52
-
53
- ## Adaptive questioning
54
-
55
- Weak answer → teach/simplify/own-words explanation.
56
-
57
- Solid answer → application/edge case.
58
-
59
- Strong answer → tradeoff/debug/design.
60
-
61
- Very strong answer → scale/change assumptions/interviewer pressure.
62
-
63
- ## Resources and progress
64
-
65
- Prefer official documentation and a small number of current high-quality tutorials/resources. External material is optional.
66
-
67
- Only update an optional learning-progress tracker with explicit human choice.
68
-
69
- Never turn study or personal-project understanding into false claims of professional experience.