@mriekki/project-forge 2.1.0 → 3.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.
Files changed (39) hide show
  1. package/assets/components.json +3 -3
  2. package/assets/deployment/distribution.json +1 -1
  3. package/assets/generated/ASSEMBLY.json +40 -40
  4. package/assets/generated/core/core/agents/reviewer.agent.md +1 -1
  5. package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +5 -1
  6. package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +1 -1
  7. package/assets/generated/core/core/process/GUIDED_NEXT_STEPS.md +22 -6
  8. package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +31 -1
  9. package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +3 -3
  10. package/assets/generated/core/core/process/PROJECT_FORGE_ENGINEERING_GUIDE.md +14 -14
  11. package/assets/generated/core/core/skills/cleanup-branches/SKILL.md +6 -10
  12. package/assets/generated/core/core/skills/code-walkthrough/SKILL.md +12 -8
  13. package/assets/generated/core/core/skills/core-sync/SKILL.md +17 -11
  14. package/assets/generated/core/core/skills/define-feature/SKILL.md +9 -18
  15. package/assets/generated/core/core/skills/deliver/SKILL.md +12 -8
  16. package/assets/generated/core/core/skills/deploy/SKILL.md +3 -3
  17. package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +1 -1
  18. package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +6 -8
  19. package/assets/generated/core/core/skills/next-step/SKILL.md +10 -11
  20. package/assets/generated/core/core/skills/progress/SKILL.md +1 -1
  21. package/assets/generated/core/core/skills/project-forge-update/SKILL.md +10 -6
  22. package/assets/generated/core/core/skills/pull-latest/SKILL.md +16 -10
  23. package/assets/generated/core/core/skills/refine-requirements/SKILL.md +37 -16
  24. package/assets/generated/core/core/skills/setup/SKILL.md +25 -22
  25. package/assets/generated/core/core/skills/start-work/SKILL.md +11 -9
  26. package/assets/generated/core/core/skills/tear-down/SKILL.md +4 -4
  27. package/assets/generated/deployment/docs/DEVELOPER_ENVIRONMENTS.md +11 -11
  28. package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +2 -2
  29. package/assets/generated/deployment/docs/WORKSPACE_INSTANCES.md +1 -1
  30. package/assets/generated/deployment/docs/images/developer-environment-journey.svg +2 -2
  31. package/assets/generated/deployment/docs/images/{poc-environment-model.svg → project-environment-model.svg} +4 -4
  32. package/assets/generated/deployment/src/project_forge_deployment/cli.py +1 -1
  33. package/assets/generated/deployment/src/project_forge_deployment/entrypoint.py +1 -1
  34. package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +2 -2
  35. package/assets/generated/deployment/src/project_forge_deployment/route_registry.py +2 -2
  36. package/assets/generated/deployment/src/project_forge_deployment/teardown.py +7 -7
  37. package/assets/generated/deployment/src/project_forge_deployment/teardown_cli.py +6 -6
  38. package/assets/generated/deployment/src/project_forge_deployment/teardown_remote.py +6 -6
  39. package/package.json +1 -1
@@ -58,6 +58,8 @@ Deep — important methods/blocks, state/data flow, dependencies, edge cases,
58
58
 
59
59
  Depth may vary by file. Treat trivial configuration lightly unless it materially affects behavior; spend more depth on implementation anchors.
60
60
 
61
+ If the human needs to choose a depth, use host-native **single-select structured choice UI** when available. Do not recommend a depth unless the requested learning goal or change complexity clearly supports one; `Focused` is a descriptive default, not permission to manufacture a recommendation.
62
+
61
63
  ## 4. Build the walkthrough plan
62
64
 
63
65
  Before explaining the first file:
@@ -125,13 +127,15 @@ Group trivial generated/configuration changes when that improves learning, but d
125
127
 
126
128
  Default to one file or one tightly related file group at a time. Do not dump the whole implementation at once.
127
129
 
128
- At a natural file boundary, show a compact navigation cue such as:
130
+ At a natural file boundary, a compact navigation cue may be shown:
129
131
 
130
132
  ```text
131
133
  NEXT: <suggested file>
132
134
  Use: next | deeper | explain this | trace | why this design | diagram | quiz | debug | interview | skip | stop
133
135
  ```
134
136
 
137
+ When the host exposes structured choice UI and the human is being asked to choose among these navigation actions, prefer a relevant **single-select** subset rather than forcing the human to type a token. Keep free-text commands valid. Do not turn the full command vocabulary into a large mandatory selector when the next action is already obvious.
138
+
135
139
  Interpret these naturally:
136
140
  - `next` — continue to the suggested next file;
137
141
  - `deeper` — increase depth for the current file/topic;
@@ -185,13 +189,13 @@ When the planned change set is covered or the human stops, summarize:
185
189
  - learning gaps or topics worth revisiting,
186
190
  - optional next learning actions.
187
191
 
188
- Offer only relevant next choices, such as:
192
+ When offering bounded next actions, use host-native **single-select structured choice UI** when available. Relevant choices may include:
189
193
 
190
- ```text
191
- 1. /learning-review <same scope> [READ ONLY]
192
- 2. /coach <specific concept> [READ ONLY]
193
- 3. Return to engineering workflow [NO ACTION]
194
- 4. Stop [NO ACTION]
195
- ```
194
+ - `/learning-review <same scope>` `[READ ONLY]`
195
+ - `/coach <specific concept>` `[READ ONLY]`
196
+ - `Return to engineering workflow` `[NO ACTION]`
197
+ - `Stop` `[NO ACTION]`
198
+
199
+ Recommend at most one only when the walkthrough evidence shows a clear learning gap or the engineering workflow is clearly the better next step; otherwise present the choices without a recommendation. Use a numbered text menu only when structured choice UI is unavailable.
196
200
 
197
201
  Do not create a new engineering state such as `CODE_WALKTHROUGH_PENDING`. Walkthrough completion is learning evidence, not a delivery gate.
@@ -94,7 +94,9 @@ If the checkout is dirty, ahead, diverged, intentionally pinned, or ambiguous, p
94
94
 
95
95
  ## 5. Present one bounded component-sync choice
96
96
 
97
- For a safe local source:
97
+ Use the host-native **single-select structured choice UI** when available because exactly one next action is authorized. In VS Code use the native question surface such as `vscode_askQuestions`. Preserve the consequence labels and show the recommended choice. Use a numbered text list only when structured choice UI is unavailable.
98
+
99
+ For a safe local source, show the evidence:
98
100
 
99
101
  ```text
100
102
  CORE SYNC READY
@@ -102,13 +104,15 @@ CORE SYNC READY
102
104
  Consumer baseline: <commit/version>
103
105
  Source: LOCAL <core-path>
104
106
  Distribution: <distribution>
105
-
106
- 1. Sync the component-only Core baseline [GIT + FILE WRITE] — recommended
107
- 2. Keep inspecting only [READ ONLY]
108
- 3. Stop [NO ACTION]
109
107
  ```
110
108
 
111
- For a configured remote source:
109
+ Then offer:
110
+
111
+ - `Sync the component-only Core baseline` `[GIT + FILE WRITE]` — `RECOMMENDED`
112
+ - `Keep inspecting only` `[READ ONLY]`
113
+ - `Stop` `[NO ACTION]`
114
+
115
+ For a configured remote source, show:
112
116
 
113
117
  ```text
114
118
  CORE SYNC READY
@@ -116,17 +120,19 @@ CORE SYNC READY
116
120
  Consumer baseline: <commit/version>
117
121
  Source: REMOTE PROVIDER
118
122
  Provider: <provider repository>
119
-
120
- 1. Request remote Core sync [REMOTE WRITE] — recommended
121
- 2. Keep inspecting only [READ ONLY]
122
- 3. Stop [NO ACTION]
123
123
  ```
124
124
 
125
+ Then offer:
126
+
127
+ - `Request remote Core sync` `[REMOTE WRITE]` — `RECOMMENDED`
128
+ - `Keep inspecting only` `[READ ONLY]`
129
+ - `Stop` `[NO ACTION]`
130
+
125
131
  The selected choice does not authorize merge, release publication, or deployment.
126
132
 
127
133
  ## 6. Local component path
128
134
 
129
- After local option 1 is selected:
135
+ After `Sync the component-only Core baseline` is selected:
130
136
 
131
137
  1. Refresh Core remote state.
132
138
  2. Reclassify the accepted/default Core branch.
@@ -63,7 +63,7 @@ Do not create a competing source of truth.
63
63
 
64
64
  Ask one material question at a time when a real decision is unresolved.
65
65
 
66
- For bounded decisions with a small credible answer space, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md`. Keep initial product/problem framing, desired outcomes, workflows, and other answers that need the human's own wording open-ended rather than constraining them to invented options.
66
+ For bounded decisions with a small credible answer space, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md`. When the host exposes structured choice controls, render mutually exclusive alternatives through single-select UI rather than a plain numbered menu; use multi-select only when several simultaneous selections are actually valid. Keep `Other / specify` or free-text available when choices may be incomplete. Keep initial product/problem framing, desired outcomes, workflows, and other answers that need the human's own wording open-ended rather than constraining them to invented options.
67
67
 
68
68
  Clarify only what matters, such as:
69
69
  - user/engineering outcome,
@@ -123,22 +123,13 @@ If systematic lower-level coverage is valuable, recommend:
123
123
 
124
124
  ## 7. Guided ending
125
125
 
126
- Use a small evidence-backed menu, for example:
126
+ Use a small evidence-backed set of relevant actions. In VS Code, render them through the host-native **single-select structured choice UI** such as `vscode_askQuestions` when available. Conceptual choices may include:
127
127
 
128
- ```text
129
- CURRENT STATE
130
- <what is defined and what remains open>
131
-
132
- RECOMMENDED NEXT STEP
133
- <one action and why>
134
-
135
- OPTIONS
136
- 1. Review definition [READ ONLY]
137
- 2. Grill unresolved behavior [READ ONLY]
138
- 3. Refine detailed requirements [READ ONLY initially]
139
- 4. Approve requirements/scope when applicable [REQUIREMENTS GATE]
140
- 5. Start work if already ready [READ ONLY]
141
- 6. Stop [NO ACTION]
142
- ```
128
+ - `Review definition` `[READ ONLY]`
129
+ - `Grill unresolved behavior` `[READ ONLY]`
130
+ - `Refine detailed requirements` `[READ ONLY initially]`
131
+ - `Approve requirements/scope` `[REQUIREMENTS GATE]` when applicable
132
+ - `Start work` `[READ ONLY]` when already ready
133
+ - `Stop` `[NO ACTION]`
143
134
 
144
- Only show relevant options. A file-changing choice authorizes only that bounded action/session.
135
+ Make the recommended next action visible when evidence supports one. Use a numbered text menu only when structured choice UI is unavailable. A file-changing choice authorizes only that bounded action/session.
@@ -197,7 +197,7 @@ If a Draft PR was required earlier and all readiness conditions are now satisfie
197
197
 
198
198
  ## 8. Single merge + finalize gate
199
199
 
200
- When PR evidence still matches the accepted implementation and CI/policy are satisfactory, combine final PR acceptance and merge authorization into one meaningful gate:
200
+ When PR evidence still matches the accepted implementation and CI/policy are satisfactory, combine final PR acceptance and merge authorization into one meaningful gate. First show:
201
201
 
202
202
  ```text
203
203
  MERGE READY
@@ -206,13 +206,17 @@ PR CI: GREEN
206
206
  Reviewer: READY
207
207
  PR diff: matches accepted delivery scope
208
208
  Mergeable/policy: <observed state>
209
-
210
- 1. Merge and finalize delivery [HUMAN ACCEPTANCE + GITHUB/GIT WRITE] — recommended
211
- 2. Review final PR diff first [READ ONLY]
212
- 3. Leave PR open [NO ACTION]
213
209
  ```
214
210
 
215
- Selecting option 1 means:
211
+ Then render the mutually exclusive gate through the host-native **single-select structured choice UI** when available. In VS Code use the native question surface such as `vscode_askQuestions`. Offer:
212
+
213
+ - `Merge and finalize delivery` `[HUMAN ACCEPTANCE + GITHUB/GIT WRITE]` — `RECOMMENDED`
214
+ - `Review final PR diff first` `[READ ONLY]`
215
+ - `Leave PR open` `[NO ACTION]`
216
+
217
+ Use a numbered text list only when structured choice UI is unavailable.
218
+
219
+ Selecting `Merge and finalize delivery` means:
216
220
  - the human accepts the final PR as observed,
217
221
  - merge is authorized using the repository-approved strategy,
218
222
  - applicable post-merge default-branch CI/policy may be observed/rechecked automatically,
@@ -247,7 +251,7 @@ Only after configured post-merge default-branch CI and any additional observable
247
251
 
248
252
  ## 10. Delivered-branch finalization
249
253
 
250
- For a normal short-lived delivered branch, option 1 at the merge gate already authorizes finalization. Do not ask a separate `Delete branch?` question.
254
+ For a normal short-lived delivered branch, the `Merge and finalize delivery` gate choice already authorizes finalization. Do not ask a separate `Delete branch?` question.
251
255
 
252
256
  Preserve by default:
253
257
  - the configured default branch,
@@ -394,4 +398,4 @@ The optional learning handoff does not block or replace deployment readiness whe
394
398
 
395
399
  `/deliver` takes reviewed/accepted work through routine branch/commit/push/PR/CI mechanics automatically, then stops once for the merge-and-finalize decision. After successful engineering completion it may prepare disposable learning workbenches and shows an optional learning handoff without creating another gate.
396
400
 
397
- `/cleanup-branches` is the standalone preview-first path for accumulated, previously retained, unrelated, or otherwise out-of-band branch housekeeping.
401
+ `/cleanup-branches` is the standalone preview-first path for accumulated, previously retained, unrelated, or otherwise out-of-band branch housekeeping.
@@ -33,7 +33,7 @@ Resolve exact configured name, purpose/Production classification, placement, iso
33
33
 
34
34
  If `demo` exists, `/deploy demo` targets exactly `demo`. If `prod-east` has purpose `production`, `/deploy prod-east` remains a Production deployment even though the literal name differs.
35
35
 
36
- If no environment is named, enumerate configured environments and ask the human to choose; never silently default to Production. The deployment workflow must never fall back to another environment/placement/host/provider because deployment fails.
36
+ If no environment is named, enumerate configured environments and ask the human to choose through host-native **single-select structured choice UI** when available; in VS Code use the native question surface such as `vscode_askQuestions`; never silently default to Production. Do not recommend an environment unless current project evidence or the user's stated deployment goal clearly supports one. The deployment workflow must never fall back to another environment/placement/host/provider because deployment fails.
37
37
 
38
38
  If the requested environment is missing or ambiguous, route to `/setup` rather than guessing.
39
39
 
@@ -48,7 +48,7 @@ Read only what is needed, including when present:
48
48
  - fresh setup-time environment-proof evidence for this workstation;
49
49
  - established application deployment facts.
50
50
 
51
- For package-managed generated POCs, prefer the repository-distributed launcher:
51
+ For package-managed generated Projects, prefer the repository-distributed launcher:
52
52
 
53
53
  ```text
54
54
  tools/project-forge-deployment/project-forge-deploy.py
@@ -73,7 +73,7 @@ immutable application image/release policy
73
73
  smoke validation
74
74
  ```
75
75
 
76
- When a bounded choice is useful, provide a small recommended menu plus `Other / specify` and `Not sure — recommend one`.
76
+ When a bounded choice is useful, follow `INTERACTIVE_SESSION_GUIDE.md`: use host-native structured choice UI when available, single-select for mutually exclusive values and multi-select only when several simultaneous selections are valid. Keep `Other / specify` or free-text available when the choices may be incomplete. Recommend at most one option, only when evidence or a clear engineering tradeoff supports it, and explain why briefly; otherwise show the choices without a recommendation. Record only the human's selected/confirmed answer.
77
77
 
78
78
  Once these facts are durably established, later deployments should be routine rather than repeating onboarding.
79
79
 
@@ -171,7 +171,7 @@ select exact project-defined environment
171
171
  → /deploy <environment>
172
172
  ```
173
173
 
174
- For remote placement, reuse valid existing target access rather than creating duplicate credentials simply because another POC/environment uses the same machine.
174
+ For remote placement, reuse valid existing target access rather than creating duplicate credentials simply because another Project/environment uses the same machine.
175
175
 
176
176
  ## 6. Read-only status
177
177
 
@@ -34,7 +34,7 @@ Ask one material question at a time and challenge:
34
34
  - architecture/operational tradeoffs,
35
35
  - testability.
36
36
 
37
- When the challenge is a bounded decision with a small credible option set, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md` and explain important tradeoffs. When the purpose is to expose or strengthen the human's reasoning, ask open-ended first; introduce options or hints later only when useful as scaffolding.
37
+ When the challenge is a bounded decision with a small credible option set, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md` and explain important tradeoffs. Use host-native single-select UI for mutually exclusive alternatives when available, and multi-select only when several choices may be valid together. When the purpose is to expose or strengthen the human's reasoning, ask open-ended first; introduce options or hints later only when useful as scaffolding.
38
38
 
39
39
  Cadence:
40
40
 
@@ -66,15 +66,13 @@ For local-document models, common homes are:
66
66
 
67
67
  Invocation alone does not imply broad document-write permission.
68
68
 
69
- When document changes are needed, present a bounded choice such as:
69
+ When document changes are needed, present a bounded **single-select structured choice** through the host UI when available. In VS Code use the native question surface such as `vscode_askQuestions`. Relevant choices are:
70
70
 
71
- ```text
72
- 1. Continue grilling only [READ ONLY]
73
- 2. Reconcile resolved decisions during this session [MODIFIES DOCS]
74
- 3. Stop [NO ACTION]
75
- ```
71
+ - `Continue grilling only` `[READ ONLY]`
72
+ - `Reconcile resolved decisions during this session` `[MODIFIES DOCS]`
73
+ - `Stop` `[NO ACTION]`
76
74
 
77
- After option 2 is selected, focused updates to the permitted current work-item documents are authorized for the active session. Do not ask again after each answer.
75
+ Use a numbered text list only when structured choice UI is unavailable. After `Reconcile resolved decisions during this session` is selected, focused updates to the permitted current work-item documents are authorized for the active session. Do not ask again after each answer.
78
76
 
79
77
  Pause only when a new answer would change higher-level approved scope, contradict another authority/ADR, or require a new cross-cutting decision.
80
78
 
@@ -70,7 +70,7 @@ When deterministic setup passes but human workspace acceptance is still needed,
70
70
 
71
71
  When the workspace is accepted and the first approved work item is clear, recommend `/start-work <ID>`.
72
72
 
73
- If the developer wants the broader status instead of one action, offer `/progress` as a read-only option.
73
+ If the developer wants the broader status instead of one action, offer `/progress` as a read-only choice.
74
74
 
75
75
  ## 3. Engineering/delivery states
76
76
 
@@ -111,14 +111,13 @@ CURRENT STATE
111
111
  RECOMMENDED NEXT STEP
112
112
  <one action and why>
113
113
 
114
- OPTIONS
115
- 1. ... [READ ONLY]
116
- 2. ... [MODIFIES FILES]
117
- 3. ... [GIT + GITHUB WRITE]
118
- 4. Stop [NO ACTION]
114
+ CHOICES
115
+ <only relevant bounded actions, rendered through structured choice UI when available>
119
116
  ```
120
117
 
121
- Only show relevant options. `/next-step` orients; it does not become another workflow database.
118
+ When there is more than one relevant action, use the host's native **single-select structured choice UI** following `INTERACTIVE_SESSION_GUIDE.md`. In VS Code, use the question surface such as `vscode_askQuestions` when available. Keep consequence labels visible, mark the recommended choice where evidence supports one, and include `Other / specify` or free-text only when the action space may be incomplete. Use multi-select only for an explicitly multi-action workflow; ordinary `/next-step` choices are mutually exclusive.
119
+
120
+ A textual numbered `OPTIONS` list is only the fallback when no structured choice UI is available. Only show relevant choices. `/next-step` orients; it does not become another workflow database.
122
121
 
123
122
  For an unprepared generated workspace, a good result is simply:
124
123
 
@@ -128,12 +127,10 @@ Local setup has not been completed on this computer.
128
127
 
129
128
  RECOMMENDED NEXT STEP
130
129
  /setup
131
-
132
- OPTIONS
133
- 1. /progress [READ ONLY]
134
- 2. Stop [NO ACTION]
135
130
  ```
136
131
 
132
+ If useful, offer `/progress` `[READ ONLY]` and `Stop` `[NO ACTION]` through the structured selector; do not print a numbered menu in normal VS Code use.
133
+
137
134
  ## 5. Optional documentation and learning choices
138
135
 
139
136
  When implementation is stable enough to understand or document, `/next-step` may offer these choices without making them gates:
@@ -147,6 +144,8 @@ When implementation is stable enough to understand or document, `/next-step` may
147
144
  /system-lab [changes <work-item>]
148
145
  ```
149
146
 
147
+ If the human is being asked to select one of these bounded next actions, use the same single-select structured-choice rule. The command list above is descriptive, not a required numbered menu.
148
+
150
149
  Prefer `/docs` for the coherent project briefing/document map, `/code-walkthrough` for implementation flow, `/db-lab` for concrete schema/query/index/ORM evidence, and `/system-lab` for architecture/runtime/failure/scale evidence.
151
150
 
152
151
  Safe generated projections may be prepared automatically. Do not silently rewrite project-owned prose, accept an ADR, or make learning mandatory before `/deliver` unless the approved work item explicitly requires it.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: progress
3
- description: "Read-only developer-facing progress view across POC creation, this workspace instance, work-item/delivery state, and exact project-defined environment capabilities."
3
+ description: "Read-only developer-facing progress view across Project creation, this workspace instance, work-item/delivery state, and exact project-defined environment capabilities."
4
4
  argument-hint: "[optional work-item ID or environment]"
5
5
  user-invocable: true
6
6
  disable-model-invocation: true
@@ -124,7 +124,7 @@ For a Bootstrap-generated consumer, also preview the companion generated-consume
124
124
 
125
125
  ## 5. Present one bounded update choice
126
126
 
127
- When the exact target package plan and any generated-consumer companion plan are safe, present:
127
+ When the exact target package plan and any generated-consumer companion plan are safe, show the reviewed evidence:
128
128
 
129
129
  ```text
130
130
  PROJECT FORGE UPDATE READY
@@ -137,13 +137,17 @@ Core: <old> → <new>
137
137
  Deployment: <old> → <new> / unchanged
138
138
  Generated consumer metadata: <not present / coherent update planned>
139
139
  Managed drift/conflicts: NONE
140
-
141
- 1. Apply the exact Project Forge package update [GIT + FILE WRITE] — recommended
142
- 2. Keep inspecting only [READ ONLY]
143
- 3. Stop [NO ACTION]
144
140
  ```
145
141
 
146
- Choosing option 1 authorizes only:
142
+ Then use the host-native **single-select structured choice UI** when available; in VS Code use the native question surface such as `vscode_askQuestions`. Offer:
143
+
144
+ - `Apply the exact Project Forge package update` `[GIT + FILE WRITE]` — `RECOMMENDED`
145
+ - `Keep inspecting only` `[READ ONLY]`
146
+ - `Stop` `[NO ACTION]`
147
+
148
+ Use a numbered text menu only when structured choice UI is unavailable.
149
+
150
+ Choosing `Apply the exact Project Forge package update` authorizes only:
147
151
 
148
152
  - creation/switch to one repository-appropriate short-lived update branch when needed;
149
153
  - exact target package apply;
@@ -49,21 +49,25 @@ Never use `reset --hard`, force-push, merge, or rebase as part of `/pull-latest`
49
49
 
50
50
  ## 3. Choose the update target
51
51
 
52
+ When the user must choose an update action, use the host-native **single-select structured choice UI** when available; in VS Code use the native question surface such as `vscode_askQuestions`. Use a numbered text menu only when structured choice UI is unavailable.
53
+
52
54
  If the human supplied a branch, use that branch as the requested target when it can be resolved safely.
53
55
 
54
- If no branch was supplied and the current branch is the default branch, present:
56
+ If no branch was supplied and the current branch is the default branch, show:
55
57
 
56
58
  ```text
57
59
  PULL LATEST READY
58
60
 
59
61
  Current branch: <branch>
60
62
  Working tree: CLEAN
61
-
62
- 1. Refresh remote state and pull latest <branch> [GIT WRITE] — recommended
63
- 2. Stop [NO ACTION]
64
63
  ```
65
64
 
66
- If no branch was supplied and the current branch is a non-default branch, present:
65
+ Then offer:
66
+
67
+ - `Refresh remote state and pull latest <branch>` `[GIT WRITE]` — `RECOMMENDED`
68
+ - `Stop` `[NO ACTION]`
69
+
70
+ If no branch was supplied and the current branch is a non-default branch, show:
67
71
 
68
72
  ```text
69
73
  PULL LATEST READY
@@ -71,13 +75,15 @@ PULL LATEST READY
71
75
  Current branch: <branch>
72
76
  Default branch: <default>
73
77
  Working tree: CLEAN
74
-
75
- 1. Refresh and pull the current branch [GIT WRITE]
76
- 2. Switch to the default branch and pull latest [GIT WRITE] — recommended for returning to baseline
77
- 3. Stop [NO ACTION]
78
78
  ```
79
79
 
80
- Only the selected option authorizes fetch/switch/pull mechanics for the selected branch.
80
+ Then offer:
81
+
82
+ - `Refresh and pull the current branch` `[GIT WRITE]`
83
+ - `Switch to the default branch and pull latest` `[GIT WRITE]` — `RECOMMENDED` when returning to baseline
84
+ - `Stop` `[NO ACTION]`
85
+
86
+ Only the selected choice authorizes fetch/switch/pull mechanics for the selected branch.
81
87
 
82
88
  ## 4. Refresh remote state
83
89
 
@@ -113,22 +113,24 @@ STATUS
113
113
  <DRAFT / APPROVED / external status / not represented locally>
114
114
  ```
115
115
 
116
- Then present only relevant choices, for example:
116
+ Then present only relevant actions as a **single-select structured choice** when the host supports it. In VS Code, use the native question surface such as `vscode_askQuestions` rather than printing a numbered menu. Conceptual choices may include:
117
117
 
118
- ```text
119
- 1. Review outcomes [READ ONLY]
120
- 2. Review rules [READ ONLY]
121
- 3. Review acceptance scenarios [READ ONLY]
122
- 4. Refine identified gaps [MODIFIES DOCS or PROPOSED EXTERNAL UPDATE]
123
- 5. Grill an unresolved decision [READ ONLY]
124
- 6. Review full requirements/work item [READ ONLY]
125
- 7. Approve local requirements when applicable [REQUIREMENTS GATE]
126
- 8. Stop [NO ACTION]
127
- ```
118
+ - `Review outcomes` `[READ ONLY]`
119
+ - `Review rules` `[READ ONLY]`
120
+ - `Review acceptance scenarios` `[READ ONLY]`
121
+ - `Refine identified gaps` `[MODIFIES DOCS or PROPOSED EXTERNAL UPDATE]`
122
+ - `Grill an unresolved decision` `[READ ONLY]`
123
+ - `Review full requirements/work item` `[READ ONLY]`
124
+ - `Approve local requirements` `[REQUIREMENTS GATE]` when applicable
125
+ - `Stop` `[NO ACTION]`
126
+
127
+ Make a recommendation only when current requirement evidence or a clear engineering tradeoff supports one. If so, mark exactly one choice with the host's `recommended` indicator and briefly explain why. If there is no clear basis, show the choices without a recommendation. The selected answer, not the recommendation, controls what the session does or records.
128
+
129
+ If the host has no structured choice UI, present the same relevant choices as a concise numbered text fallback and accept the number, label, or free-form intent. Do not use the numbered fallback as the normal VS Code path.
128
130
 
129
131
  ## 5. Active refinement session
130
132
 
131
- Once the human selects a modifying refinement option, enter a bounded continuous session:
133
+ Once the human selects a modifying refinement choice, enter a bounded continuous session:
132
134
 
133
135
  ```text
134
136
  ask one material requirement question
@@ -139,7 +141,26 @@ ask one material requirement question
139
141
  → next material question
140
142
  ```
141
143
 
142
- For bounded requirement decisions such as lifecycle policy, validation behavior, destructive/reversible handling, or a small set of credible alternatives, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md`. Keep outcome wording, workflow descriptions, acceptance intent, and other human-authored framing open-ended when predefined choices would constrain the requirement.
144
+ For bounded requirement decisions such as lifecycle policy, validation behavior, destructive/reversible handling, or a small set of credible alternatives, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md`. Render mutually exclusive alternatives through host-native **single-select** controls when available. Use multi-select only when the requirement genuinely permits multiple simultaneous selections. Keep `Other / specify` or free-text available when the option set may be incomplete. Keep outcome wording, workflow descriptions, acceptance intent, and other human-authored framing open-ended when predefined choices would constrain the requirement.
145
+
146
+ Recommendation behavior follows the shared guide: recommend at most one option, only when evidence/tradeoffs support it; give a concise rationale; never record the recommendation as accepted until the human selects or confirms it; and honor a `no recommendation` request for that question only.
147
+
148
+ Example of a supported recommendation:
149
+
150
+ ```text
151
+ Decision: How should a browser-to-real-SQLite path be proven for a narrowly scoped work item?
152
+
153
+ Choices:
154
+ - Integration test against real SQLite
155
+ - Browser smoke check through the API
156
+ - Both
157
+ - Other / specify
158
+
159
+ Recommendation: Both
160
+ Why: one real-SQLite integration test proves the persistence path and one browser smoke check proves the browser/API path without implying a broad end-to-end suite.
161
+ ```
162
+
163
+ Treat this as advice for the human to accept, change, or replace. Do not record `Both` as a requirement until the human selects or confirms it.
143
164
 
144
165
  Do not ask after each answer whether to update.
145
166
 
@@ -162,7 +183,7 @@ Stop automatic reconciliation when an answer would:
162
183
  - require a cross-cutting architecture decision,
163
184
  - remain too ambiguous to record faithfully.
164
185
 
165
- Then present a small explicit choice.
186
+ Then present a small explicit choice using the same host-native structured-choice rule. Keep the question open-ended instead when the human needs to explain or reframe the conflict in their own words.
166
187
 
167
188
  ## 7. Approval gate
168
189
 
@@ -175,7 +196,7 @@ APPROVED
175
196
 
176
197
  Human approval is explicit. Do not infer approval from review/planning/implementation.
177
198
 
178
- Before approval report coverage and open material decisions. Only an explicit `[REQUIREMENTS GATE]` choice may change local status to `APPROVED`.
199
+ Before approval report coverage and open material decisions. Only an explicit `[REQUIREMENTS GATE]` choice may change local status to `APPROVED`. When the host offers structured choices, render this approval gate as a single-select action, not a numbered chat menu.
179
200
 
180
201
  External work-item status/approval follows the external team's conventions; Project Forge must not fabricate a local approval state.
181
202
 
@@ -198,7 +219,7 @@ Authority/status:
198
219
  <source and status>
199
220
  ```
200
221
 
201
- Then offer review, more grilling/refinement, approval when applicable, or stop.
222
+ Then offer review, more grilling/refinement, approval when applicable, or stop using the same structured-choice-first rule.
202
223
 
203
224
  ## 9. Stop boundary
204
225
 
@@ -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 POC.
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.
12
12
 
13
13
  Normal first use is simply:
14
14
 
@@ -107,7 +107,7 @@ Each workstation normally owns independent local development data. Reproduce sch
107
107
 
108
108
  ## 4. Establish/sync the developer's personal Project Forge profile
109
109
 
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 POC or workstation.
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.
111
111
 
112
112
  First inspect profile status and authenticated GitHub login. If the expected private repository is missing, tell the developer what will happen before writing:
113
113
 
@@ -138,26 +138,25 @@ If GitHub is temporarily unavailable, otherwise-ready local development remains
138
138
 
139
139
  After local readiness/profile state is understood, show the environments that this workstation can be prepared to use.
140
140
 
141
- Prefer a multi-select/checkbox-style interaction when the surface supports it. The conceptual shape is:
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.
142
142
 
143
- ```text
144
- SET UP THIS WORKSTATION FOR
143
+ Conceptual choices are:
145
144
 
146
- [x] Local development — recommended
147
- [ ] Staging
148
- [ ] Production
149
- [ ] <other project-defined environment, e.g. Demo>
150
- [ ] Other / define another environment
151
- ```
145
+ - `Local development`
146
+ - each existing project-defined environment from current topology
147
+ - `Other / define another environment`
148
+
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.
150
+
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.
152
152
 
153
153
  Rules:
154
154
 
155
- - Local development is the recommended/default initial selection.
156
155
  - Existing named environments come from the project's current deployment topology, not a hard-coded Staging/Production list.
157
156
  - Show each environment's purpose/role compactly when the name alone is ambiguous.
158
- - Free-form selection remains valid when checkbox UI is unavailable.
159
157
  - Selecting an environment means **prepare this workstation for that environment**; it does not deploy the project's real application.
160
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.
161
160
 
162
161
  ### Topology source of truth
163
162
 
@@ -171,7 +170,7 @@ Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fa
171
170
 
172
171
  `PROJECT_BOOTSTRAP.json` is generation/provenance evidence and should not be casually rewritten merely because a developer adds an environment later.
173
172
 
174
- If an older POC 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.
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.
175
174
 
176
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.
177
176
 
@@ -188,7 +187,7 @@ Isolation ....... <project/catalog-supported option>
188
187
  Exposure ........ <project/catalog-supported option>
189
188
  ```
190
189
 
191
- Provide recommended choices from the existing project topology/catalog and always allow `Other / specify` or `Not sure — recommend one` where appropriate.
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.
192
191
 
193
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:
194
193
 
@@ -221,7 +220,7 @@ If host prerequisites cannot yet be prepared automatically, report the exact pre
221
220
 
222
221
  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.
223
222
 
224
- The proof is not the POC application. It is a tiny disposable Project Forge-owned probe that should:
223
+ The proof is not the Project application. It is a tiny disposable Project Forge-owned probe that should:
225
224
 
226
225
  ```text
227
226
  acquire a small stable probe image on this workstation
@@ -263,19 +262,23 @@ If cleanup fails, report `PROOF PASSED — CLEANUP ACTION NEEDED`; do not claim
263
262
 
264
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.
265
264
 
266
- For any environment whose resolved purpose is **production**, keep one explicit consequential gate before the proof writes to it:
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:
267
266
 
268
267
  ```text
269
268
  PRODUCTION ENVIRONMENT PROOF
270
269
 
271
270
  Project Forge is ready to temporarily deploy a disposable environment probe to <name>,
272
271
  verify it, and remove it. No project application or project data will be deployed.
273
-
274
- 1. Run Production environment proof
275
- 2. Verify access/readiness only
276
- 3. Skip this environment for now
277
272
  ```
278
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
+
279
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.
280
283
 
281
284
  ## 8. First real application deployment remains streamlined
@@ -346,7 +349,7 @@ When the installed Deployment Kit exposes profile migration and this workstation
346
349
 
347
350
  Never ask the developer to paste passwords, PATs, private SSH keys, or other credentials into chat.
348
351
 
349
- 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 POC repository or portable profile.
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.
350
353
 
351
354
  ## 13. Relationship to other Project Forge commands
352
355