@mriekki/project-forge 2.1.0 → 2.2.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,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@mriekki/project-forge",
4
- "version": "2.1.0",
4
+ "version": "2.2.0",
5
5
  "defaultProfile": "greenfield-project",
6
6
  "profiles": {
7
7
  "greenfield-project": {
@@ -14,7 +14,7 @@
14
14
  "components": {
15
15
  "core": {
16
16
  "repository": "mriekki/project-forge-core",
17
- "commit": "fd071b9516cb40093f30be41ab695139eb16bb4c",
17
+ "commit": "d4487e07e732db4129bd092f86f6ceab36b02c15",
18
18
  "version": "3.3.0",
19
19
  "distribution": "greenfield-workspace",
20
20
  "descriptor": "assets/core/distribution.json",
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "package": "@mriekki/project-forge",
4
- "version": "2.1.0",
4
+ "version": "2.2.0",
5
5
  "components": {
6
6
  "core": {
7
7
  "repository": "mriekki/project-forge-core",
8
- "commit": "fd071b9516cb40093f30be41ab695139eb16bb4c",
8
+ "commit": "d4487e07e732db4129bd092f86f6ceab36b02c15",
9
9
  "version": "3.3.0",
10
10
  "distribution": "greenfield-workspace",
11
11
  "files": [
@@ -17,7 +17,7 @@
17
17
  {
18
18
  "source": "core/agents/reviewer.agent.md",
19
19
  "destination": ".github/agents/reviewer.agent.md",
20
- "sha256": "ad00d8d0fad932687a8c7372e70993ba0f40f3f763a8b41fd9b6ee03a9a70df0"
20
+ "sha256": "94255c72a6c875722ebaf8b0cb328fe019856c01443b550ca6e2f6c422da983e"
21
21
  },
22
22
  {
23
23
  "source": "core/agents/coach.agent.md",
@@ -27,7 +27,7 @@
27
27
  {
28
28
  "source": "core/instructions/project-forge-workflow.instructions.md",
29
29
  "destination": ".github/instructions/project-forge-workflow.instructions.md",
30
- "sha256": "1cd1677a5692d00c252a3b38a07e7ae1b70edc0bd23436b8c2c424efb62217e1"
30
+ "sha256": "aa03af8ef23d32d90a85adaeb549873e4de32798c58bfdaf7fe4183a549b1a17"
31
31
  },
32
32
  {
33
33
  "source": "core/instructions/project-forge-docs.instructions.md",
@@ -37,7 +37,7 @@
37
37
  {
38
38
  "source": "core/skills/define-feature/SKILL.md",
39
39
  "destination": ".github/skills/define-feature/SKILL.md",
40
- "sha256": "1efa4c18d41deb4b26f132d440d881310864f8b0d37423d6b23431efeedb2e78"
40
+ "sha256": "c9f85d76a701b3d1af5c70cd74b19ce119b5735cf3537e2618159d58394ffd02"
41
41
  },
42
42
  {
43
43
  "source": "core/skills/grill-me/SKILL.md",
@@ -47,22 +47,22 @@
47
47
  {
48
48
  "source": "core/skills/grill-with-docs/SKILL.md",
49
49
  "destination": ".github/skills/grill-with-docs/SKILL.md",
50
- "sha256": "c2c24089f5f5437de1702777dc60e794e26a1a0919eba7e39c32d137fdf23471"
50
+ "sha256": "facdfecee977ab01bbe908f6f122e483ea27c98a8f1562973f59f9266b63323e"
51
51
  },
52
52
  {
53
53
  "source": "core/skills/refine-requirements/SKILL.md",
54
54
  "destination": ".github/skills/refine-requirements/SKILL.md",
55
- "sha256": "70ee4dcf4fd3568c835428dae4b2a830604793d3d486e1c903c26e100fab6e64"
55
+ "sha256": "ee5085ac6bbf8fb33ab5f6b52e0ac954c164fd3ea51f90965c9bde86adc88def"
56
56
  },
57
57
  {
58
58
  "source": "core/skills/start-work/SKILL.md",
59
59
  "destination": ".github/skills/start-work/SKILL.md",
60
- "sha256": "edc58cdd20c3401ee20a725e18063e604830396f6b88f9bf2555b3f043362c7f"
60
+ "sha256": "5f4d46323d19bb7a1d4e64f233ae64aae8e1874da072d38cb344d3d834bdea8e"
61
61
  },
62
62
  {
63
63
  "source": "core/skills/setup/SKILL.md",
64
64
  "destination": ".github/skills/setup/SKILL.md",
65
- "sha256": "e700e914afc291ffb1153bb796a8ef150c624c5b54032e29d3abda221260285f"
65
+ "sha256": "c295193b341accf03a35105e2e4defdf11aee0198b1e24b74ab371f3a6824985"
66
66
  },
67
67
  {
68
68
  "source": "core/skills/build/SKILL.md",
@@ -92,32 +92,32 @@
92
92
  {
93
93
  "source": "core/skills/next-step/SKILL.md",
94
94
  "destination": ".github/skills/next-step/SKILL.md",
95
- "sha256": "68c05ad11f9c9fad7b0bc122995ca259fd54c523cb1fa5ac0e105ae523ef9d86"
95
+ "sha256": "7c24a15b9069dcc5218319ab7fb72231e48efd2ebd325d8ff250e142cb3aa813"
96
96
  },
97
97
  {
98
98
  "source": "core/skills/deliver/SKILL.md",
99
99
  "destination": ".github/skills/deliver/SKILL.md",
100
- "sha256": "ffe9dbc862f83828b3acd8f8bf49ea912b7998dc0c844655bf83dfafcf7f4434"
100
+ "sha256": "238d6c81a7253c4241e4cf8588be5a5986b406b7e3a56cac115fc47a46071c71"
101
101
  },
102
102
  {
103
103
  "source": "core/skills/cleanup-branches/SKILL.md",
104
104
  "destination": ".github/skills/cleanup-branches/SKILL.md",
105
- "sha256": "99b082f5a6eb183161bc6dc2f40e383e744a4443e6e3c56615ca9d010845eaf8"
105
+ "sha256": "b44af82b8e21693fcc600cb9628c50f49a117c7cfb7840af0f2ccedad2f96dc7"
106
106
  },
107
107
  {
108
108
  "source": "core/skills/pull-latest/SKILL.md",
109
109
  "destination": ".github/skills/pull-latest/SKILL.md",
110
- "sha256": "ca7dc6669c6eb81fd3a7961dc123cc9822fcccb7da3e86e3391f5f92b15fe093"
110
+ "sha256": "709471b55c41ec72fe0ca4eb87af0740ab9a947ef0b31c36f8cf51afc58d3ccb"
111
111
  },
112
112
  {
113
113
  "source": "core/skills/project-forge-update/SKILL.md",
114
114
  "destination": ".github/skills/project-forge-update/SKILL.md",
115
- "sha256": "70170e57a77f143c719a8c349161c580e339397e782d28133d9f3734f6625847"
115
+ "sha256": "3463a68171fa30ef10f1ca514424236317ec364f015c5446f49911a1a3c9bb12"
116
116
  },
117
117
  {
118
118
  "source": "core/skills/core-sync/SKILL.md",
119
119
  "destination": ".github/skills/core-sync/SKILL.md",
120
- "sha256": "97accdf58527f51c0e5f5b8e6a75468d9d687bc2c07dcd9ab6ff1bef9f103c58"
120
+ "sha256": "cbc498597cea7a48004fc507f9a6efc130544e57f347c0efdbb073f71f14965e"
121
121
  },
122
122
  {
123
123
  "source": "core/skills/upstream-fix/SKILL.md",
@@ -142,7 +142,7 @@
142
142
  {
143
143
  "source": "core/skills/deploy/SKILL.md",
144
144
  "destination": ".github/skills/deploy/SKILL.md",
145
- "sha256": "7bacd366014bf8c890328ec2b78412a39a0abff2f6b44dd53ca129102a7a30c8"
145
+ "sha256": "a2092940eea537223abcd4ed1cbea20dccdead538b21841b305f243686715af0"
146
146
  },
147
147
  {
148
148
  "source": "core/skills/tear-down/SKILL.md",
@@ -172,7 +172,7 @@
172
172
  {
173
173
  "source": "core/skills/code-walkthrough/SKILL.md",
174
174
  "destination": ".github/skills/code-walkthrough/SKILL.md",
175
- "sha256": "0391f98dac6dfd41882c330425567ae595fde01fce63de521563c95647d2b889"
175
+ "sha256": "34cb60680a3effc6af3a5ec22fe0c20d4b9b8064b8b808afed673be988b0f210"
176
176
  },
177
177
  {
178
178
  "source": "core/skills/learning-review/SKILL.md",
@@ -202,12 +202,12 @@
202
202
  {
203
203
  "source": "core/process/GUIDED_NEXT_STEPS.md",
204
204
  "destination": "docs/process/GUIDED_NEXT_STEPS.md",
205
- "sha256": "3a6ec8523fdb1c4f4e357b13fc712bd7f732ea9cd25754ae4f8c84fb438f2452"
205
+ "sha256": "f25f08e6b2e904f44652fb7ea78b9f576f544a55950d63741b6f4806e4ee3287"
206
206
  },
207
207
  {
208
208
  "source": "core/process/INTERACTIVE_SESSION_GUIDE.md",
209
209
  "destination": "docs/process/INTERACTIVE_SESSION_GUIDE.md",
210
- "sha256": "15d47509919e83786ada6df1e5482bd9f73ca4955cda66287f6d6b1f9722c853"
210
+ "sha256": "c35f2f4bc1b52746b205eab65982b32d9a2fe58f1c750f9744ddfdd320c3f52c"
211
211
  },
212
212
  {
213
213
  "source": "core/process/COACHING_GUIDE.md",
@@ -72,7 +72,7 @@ READY / CHANGES REQUIRED / INSUFFICIENT EVIDENCE
72
72
 
73
73
  ## Guided ending
74
74
 
75
- After findings use CURRENT STATE, RECOMMENDED NEXT STEP, and a small OPTIONS menu. Reviewer itself does not commit, push, create/merge PRs, or deploy.
75
+ After findings use CURRENT STATE, RECOMMENDED NEXT STEP, and a small set of relevant action choices. When the host exposes structured question controls, render mutually exclusive actions through **single-select** UI following `INTERACTIVE_SESSION_GUIDE.md`; in VS Code use the native question surface such as `vscode_askQuestions`. Use a numbered text menu only when structured choice UI is unavailable. Reviewer itself does not commit, push, create/merge PRs, or deploy.
76
76
 
77
77
  When implementation is READY and the human accepts the meaningful local diff, explicitly recommend:
78
78
 
@@ -20,7 +20,11 @@ For implementation, establish the repository-appropriate short-lived work branch
20
20
 
21
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
- 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.
23
+ During interactive questioning, prefer concise choice-first options for genuinely bounded human decisions, including `Other / specify` and `Not sure — recommend one` when appropriate. When the host exposes native structured question controls, use them instead of a plain numbered chat list. In VS Code, use the host's structured question surface such as `vscode_askQuestions` when available: single-select for mutually exclusive decisions/actions and multi-select only when several simultaneous selections are valid. A textual numbered menu is only the fallback when structured choice UI is unavailable.
24
+
25
+ Make a recommendation only when current evidence, repository policy, or a clear engineering tradeoff supports one. Mark exactly one supported choice with the host's `recommended` indicator when available and give a brief rationale. If no option is clearly better, do not mark any option recommended. A recommendation is advice, not approval: record only the human's selected/confirmed answer. If the human asks for no recommendation on one decision, honor that for that decision only; later questions may still include evidence-backed recommendations.
26
+
27
+ 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
28
 
25
29
  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
30
 
@@ -11,18 +11,34 @@ CURRENT STATE
11
11
  RECOMMENDED NEXT STEP
12
12
  <one action and why>
13
13
 
14
- OPTIONS
14
+ CHOICES
15
+ <only the relevant bounded actions, rendered through host structured choice UI when available>
16
+
17
+ RECOMMENDED PATH
18
+ <only when multiple future steps are useful>
19
+ ```
20
+
21
+ For the current choice, follow `INTERACTIVE_SESSION_GUIDE.md`:
22
+
23
+ - use the host's structured choice UI when available; in VS Code use the native question surface such as `vscode_askQuestions`;
24
+ - action menus are normally **single-select** because the developer is choosing one next action;
25
+ - use multi-select only when the workflow explicitly permits several simultaneous selections;
26
+ - make the recommended choice visible when evidence supports one;
27
+ - include `Other / specify` or free-text when the action space may be incomplete;
28
+ - keep genuinely open-ended questions open-ended.
29
+
30
+ A textual numbered menu is only the documented fallback when no structured choice UI is available. Fallback shape:
31
+
32
+ ```text
33
+ OPTIONS — TEXT FALLBACK ONLY
15
34
  1. ... [READ ONLY]
16
35
  2. ... [MODIFIES DOCS]
17
36
  3. ... [MODIFIES FILES]
18
37
  4. ... [GIT + GITHUB WRITE]
19
38
  5. Stop [NO ACTION]
20
-
21
- RECOMMENDED PATH
22
- <only when multiple future steps are useful>
23
39
  ```
24
40
 
25
- Show only relevant options.
41
+ Show only relevant choices.
26
42
 
27
43
  Standard action labels include:
28
44
 
@@ -41,7 +57,7 @@ Standard action labels include:
41
57
  [NO ACTION]
42
58
  ```
43
59
 
44
- A selected option authorizes only the bounded action described, except where a skill explicitly defines a continuous session or compound mechanical action.
60
+ A selected choice authorizes only the bounded action described, except where a skill explicitly defines a continuous session or compound mechanical action.
45
61
 
46
62
  A manually invoked compound action skill may itself be the bounded authorization for its routine mechanics. `/deliver`, for example, may proceed through safe short-lived-branch setup/recovery, staging, commit, push, PR creation/update, and CI inspection without inserting separate options for each mechanical step. It still stops at its explicit merge/finalize gate and whenever evidence becomes ambiguous or unsafe.
47
63
 
@@ -27,12 +27,42 @@ Choose the question shape based on what the interaction is trying to learn or de
27
27
  When a material question has a reasonable bounded answer space and the human is choosing or confirming a decision, prefer a concise choice-first presentation:
28
28
 
29
29
  - offer a small set of plausible choices, normally 3-6;
30
- - mark a materially preferred option as `RECOMMENDED` when current evidence or repository guidance justifies it;
31
30
  - include `Other / specify` when the choices are not exhaustive;
32
31
  - include `Not sure — recommend one` when the human can reasonably delegate the choice;
33
32
  - accept a choice label/text or a free-form answer;
34
33
  - treat choices as interaction aids, not additional requirements.
35
34
 
35
+ ### Host-native structured choice UI
36
+
37
+ When the current host exposes a structured question/choice UI, use it for bounded choices instead of rendering a plain numbered chat menu. In VS Code, use the native question surface exposed by the host, such as `vscode_askQuestions` when available.
38
+
39
+ Presentation rules:
40
+
41
+ - use **single-select** when the choices are mutually exclusive or one action is being authorized;
42
+ - use **multi-select** only when selecting several choices at the same time is semantically valid;
43
+ - preserve one-material-question-at-a-time cadence whenever practical even if the host can batch questions;
44
+ - keep consequence/action labels such as `[READ ONLY]`, `[REQUIREMENTS GATE]`, or `[GIT + GITHUB WRITE]` visible when they matter to authorization;
45
+ - include `Other / specify` or host-supported free-text input when the option set may be incomplete; after `Other / specify`, collect the missing value without forcing another invented menu;
46
+ - accept equivalent free-text answers even when a structured selector is shown, unless the host UI itself requires a selection;
47
+ - map the returned structured value to the same semantic choice the workflow would have accepted by label/text.
48
+
49
+ ### Recommendations inside choices
50
+
51
+ A recommendation is optional advice, not a required field and not an accepted decision.
52
+
53
+ - mark **exactly one** choice as `RECOMMENDED` only when current evidence, repository policy, or a clear engineering tradeoff supports it;
54
+ - use the host's `recommended` indicator/metadata when available and add a brief rationale in the choice description or surrounding prompt;
55
+ - do not mark multiple choices recommended;
56
+ - do not invent a preference merely to populate recommendation metadata;
57
+ - when no option is clearly better, present the choices with **no recommendation**;
58
+ - if the human asks for no recommendation on a specific decision, omit the recommendation for that question only; later questions may still include evidence-backed recommendations;
59
+ - the human may select a different option or answer free-form;
60
+ - record only the human's selected/confirmed answer as the requirement, action, or decision. Never record the recommendation itself as accepted state.
61
+
62
+ A structured selector is presentation, not extra authorization. Selecting a choice authorizes only the action/session that the workflow says that choice authorizes.
63
+
64
+ When the host has no structured question UI, use a concise textual fallback. A numbered list is acceptable **only as this fallback**; keep the same labels/recommendation/consequence tags and accept the number, label, or a free-form answer. Do not use a plain numbered list as the normal VS Code interaction when native structured choice UI is available.
65
+
36
66
  Keep questions open-ended when predefined choices would weaken the purpose of the interaction. This includes:
37
67
 
38
68
  - user-authored problem/outcome/workflow framing where the human's own wording matters;
@@ -114,18 +114,14 @@ If no branch is safely deletable, stop after the preview.
114
114
 
115
115
  ## 5. Cleanup gate
116
116
 
117
- For a non-empty verified-safe set, present one bounded destructive gate:
117
+ For a non-empty verified-safe set, present one bounded destructive gate using the host-native **single-select structured choice UI** when available; in VS Code use the native question surface such as `vscode_askQuestions`. Offer:
118
118
 
119
- ```text
120
- BRANCH CLEANUP READY
121
-
122
- 1. Delete verified-safe local + remote branches [GIT + GITHUB WRITE] — recommended
123
- 2. Delete verified-safe remote branches only [GITHUB WRITE]
124
- 3. Delete verified-safe local branches only [GIT WRITE]
125
- 4. Stop [NO ACTION]
126
- ```
119
+ - `Delete verified-safe local + remote branches` `[GIT + GITHUB WRITE]` — `RECOMMENDED`
120
+ - `Delete verified-safe remote branches only` `[GITHUB WRITE]`
121
+ - `Delete verified-safe local branches only` `[GIT WRITE]`
122
+ - `Stop` `[NO ACTION]`
127
123
 
128
- Only the selected option authorizes the corresponding deletions. Do not include REVIEW REQUIRED branches in the bounded action.
124
+ Use a numbered text menu only when structured choice UI is unavailable. Only the selected choice authorizes the corresponding deletions. Do not include REVIEW REQUIRED branches in the bounded action.
129
125
 
130
126
  ## 6. Revalidate before deletion
131
127
 
@@ -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
 
@@ -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
 
@@ -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.
@@ -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
 
@@ -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
 
@@ -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
 
@@ -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
@@ -111,16 +111,16 @@ Explain why the level was chosen.
111
111
 
112
112
  ## 4. Optional learning checkpoint
113
113
 
114
- For STANDARD/ELEVATED work, once requirements are ready, coaching may be offered but is never required:
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
- ```text
117
- 1. Continue without coaching — recommended default
118
- 2. /coach for a short pre-build concept review
119
- 3. /grill-me for challenge rather than teaching
120
- 4. Stop
121
- ```
116
+ Relevant choices are:
122
117
 
123
- For LIGHT work, do not interrupt with coaching unless requested.
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`
122
+
123
+ Use a numbered text list only when structured choice UI is unavailable. For LIGHT work, do not interrupt with coaching unless requested.
124
124
 
125
125
  ## 5. Planning rules
126
126
 
@@ -185,6 +185,8 @@ Return:
185
185
  - requirement readiness,
186
186
  - branch state / expected short-lived branch when implementation is about to begin,
187
187
  - RECOMMENDED NEXT STEP,
188
- - a small numbered OPTIONS menu with action labels.
188
+ - a small set of relevant action choices.
189
+
190
+ Render mutually exclusive next actions through the host's **single-select structured choice UI** when available, following `INTERACTIVE_SESSION_GUIDE.md`. In VS Code, use the native question surface such as `vscode_askQuestions`. Make the recommended action visible when evidence supports one, include `Other / specify` or free-text only when the action set may be incomplete, and use a numbered text menu only as the no-structured-UI fallback.
189
191
 
190
192
  Do not skip an unresolved requirement/plan gate merely because implementation is technically possible. Once implementation is selected/approved, do not insert a separate ceremonial branch-creation gate when the branch setup is safe and deterministic.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mriekki/project-forge",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "Public consumer distribution and updater for Project Forge engineering assets.",
5
5
  "type": "module",
6
6
  "bin": {