@mriekki/project-forge 2.0.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.
- package/assets/components.json +3 -3
- package/assets/core/distribution.json +7 -0
- package/assets/generated/ASSEMBLY.json +55 -20
- package/assets/generated/core/core/agents/reviewer.agent.md +1 -1
- package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +5 -1
- package/assets/generated/core/core/process/APPLICATION_VERSIONING.md +137 -0
- package/assets/generated/core/core/process/GUIDED_NEXT_STEPS.md +22 -6
- package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +31 -1
- package/assets/generated/core/core/process/OPERATION_JOURNAL.md +140 -0
- package/assets/generated/core/core/process/PROJECT_REQUIREMENTS_EXPORT.md +165 -0
- package/assets/generated/core/core/skills/build/SKILL.md +70 -0
- package/assets/generated/core/core/skills/cleanup-branches/SKILL.md +6 -10
- package/assets/generated/core/core/skills/code-walkthrough/SKILL.md +12 -8
- package/assets/generated/core/core/skills/core-sync/SKILL.md +17 -11
- package/assets/generated/core/core/skills/define-feature/SKILL.md +9 -18
- package/assets/generated/core/core/skills/deliver/SKILL.md +12 -8
- package/assets/generated/core/core/skills/deploy/SKILL.md +2 -2
- package/assets/generated/core/core/skills/export-requirements/SKILL.md +132 -0
- package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +6 -8
- package/assets/generated/core/core/skills/next-step/SKILL.md +10 -11
- package/assets/generated/core/core/skills/project-forge-update/SKILL.md +10 -6
- package/assets/generated/core/core/skills/pull-latest/SKILL.md +16 -10
- package/assets/generated/core/core/skills/refine-requirements/SKILL.md +37 -16
- package/assets/generated/core/core/skills/replatform/SKILL.md +122 -0
- package/assets/generated/core/core/skills/run/SKILL.md +75 -0
- package/assets/generated/core/core/skills/setup/SKILL.md +20 -17
- package/assets/generated/core/core/skills/start-work/SKILL.md +11 -9
- package/package.json +1 -1
|
@@ -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
|
|
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
|
-
|
|
115
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
|
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
|
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: replatform
|
|
3
|
+
description: "Create a new implementation proposal from approved PROJECT_REQUIREMENTS.json and a requested target stack without rewriting the source project in place."
|
|
4
|
+
argument-hint: "<target-stack-or-recipe>"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Replatform
|
|
10
|
+
|
|
11
|
+
`/replatform` creates a new implementation proposal for the same product/system intent using a different technology stack.
|
|
12
|
+
|
|
13
|
+
It never rewrites the source application in place.
|
|
14
|
+
|
|
15
|
+
## Required input
|
|
16
|
+
|
|
17
|
+
Use only the canonical portable export:
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
PROJECT_REQUIREMENTS.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
The file must be `state: "approved"`. Do not accept alternate/legacy requirements-export filenames or infer approval from file existence.
|
|
24
|
+
|
|
25
|
+
If the export is missing or stale relative to material source-requirement changes, use `/export-requirements` first.
|
|
26
|
+
|
|
27
|
+
## Target
|
|
28
|
+
|
|
29
|
+
The invocation supplies a target stack or current Bootstrap recipe, for example:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
/replatform angular java
|
|
33
|
+
/replatform java-angular-sqlite
|
|
34
|
+
/replatform blazor sqlite
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Resolve support against the current canonical Project Forge Bootstrap catalog. General model knowledge may explain an uncataloged technology, but label it `CATALOG GAP` and do not fabricate Bootstrap automation/support.
|
|
38
|
+
|
|
39
|
+
## Output boundary
|
|
40
|
+
|
|
41
|
+
The operation produces a new `PROJECT_BOOTSTRAP.json` proposal with `state: "review"` for a new target repository.
|
|
42
|
+
|
|
43
|
+
It must record derivation provenance back to the approved requirements export/source repository and identify the selected current Bootstrap catalog/protocol and Project Forge package provenance.
|
|
44
|
+
|
|
45
|
+
Do not generate application source or mutate the target repository until the normal Bootstrap manifest review/approval gate is complete.
|
|
46
|
+
|
|
47
|
+
## Reconciliation rules
|
|
48
|
+
|
|
49
|
+
Preserve from the approved requirements export:
|
|
50
|
+
|
|
51
|
+
- product problem/goals/users/outcomes;
|
|
52
|
+
- Product Feature intent and target maturity;
|
|
53
|
+
- approved functional/domain requirements and acceptance criteria;
|
|
54
|
+
- domain concepts, relationships, invariants, lifecycle/state semantics, and business rules;
|
|
55
|
+
- portable security/privacy/reliability/data constraints;
|
|
56
|
+
- portable design, accessibility, responsive, and interaction intent;
|
|
57
|
+
- roadmap maturity (`committed`, `planned`, `directional`);
|
|
58
|
+
- explicitly preserved learning intent.
|
|
59
|
+
|
|
60
|
+
Re-derive for the requested stack:
|
|
61
|
+
|
|
62
|
+
- Engineering Enablers;
|
|
63
|
+
- framework/application shell work;
|
|
64
|
+
- implementation architecture/topology;
|
|
65
|
+
- persistence/ORM implementation;
|
|
66
|
+
- API/client implementation choices;
|
|
67
|
+
- build/run/test commands and package tooling;
|
|
68
|
+
- stack-specific ADRs;
|
|
69
|
+
- CI implementation details;
|
|
70
|
+
- deployment mechanics that depend on the new architecture.
|
|
71
|
+
|
|
72
|
+
Do not automatically preserve source Engineering Enabler IDs. Product Feature IDs may remain traceable when the semantic Feature is unchanged; record source IDs even when the new implementation re-slices or renumbers work.
|
|
73
|
+
|
|
74
|
+
## New-repository rule
|
|
75
|
+
|
|
76
|
+
Replatforming requires a new target repository identity. The source repository is read-only evidence.
|
|
77
|
+
|
|
78
|
+
Never:
|
|
79
|
+
|
|
80
|
+
- overwrite the source repository;
|
|
81
|
+
- replace its `PROJECT_BOOTSTRAP.json`;
|
|
82
|
+
- delete or rewrite source implementation history;
|
|
83
|
+
- copy source application code by default;
|
|
84
|
+
- copy secrets, production data, credentials, machine bindings, or execution evidence.
|
|
85
|
+
|
|
86
|
+
## Bootstrap execution
|
|
87
|
+
|
|
88
|
+
Use the current canonical Bootstrap replatform tooling when available. The expected deterministic boundary is:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
approved PROJECT_REQUIREMENTS.json
|
|
92
|
+
+ requested current catalog recipe/stack
|
|
93
|
+
+ target repository identity
|
|
94
|
+
→ PROJECT_BOOTSTRAP.json state=review
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
If canonical Bootstrap replatform tooling/current catalog evidence is unavailable in the current environment, stop with `REPLATFORM HANDOFF REQUIRED`. Do not invent a manifest from stale remembered catalog facts.
|
|
98
|
+
|
|
99
|
+
## Human gate
|
|
100
|
+
|
|
101
|
+
Before generation, summarize at minimum:
|
|
102
|
+
|
|
103
|
+
```text
|
|
104
|
+
SOURCE REQUIREMENTS
|
|
105
|
+
source repository/commit
|
|
106
|
+
portable requirements export provenance
|
|
107
|
+
|
|
108
|
+
PRESERVED
|
|
109
|
+
product/features/domain/UX/cross-cutting intent
|
|
110
|
+
roadmap maturity
|
|
111
|
+
|
|
112
|
+
RE-DERIVED
|
|
113
|
+
stack-specific architecture and Engineering Enablers
|
|
114
|
+
|
|
115
|
+
TARGET STACK
|
|
116
|
+
resolved current catalog recipe and support state
|
|
117
|
+
|
|
118
|
+
OUTPUT
|
|
119
|
+
PROJECT_BOOTSTRAP.json — REVIEW
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Then use the normal material Bootstrap manifest approval gate. Approval of replatform intent is not approval to merge, release, or deploy the resulting implementation.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: run
|
|
3
|
+
description: "Run the current project locally through its repository-owned runtime command without conflating local execution with deployment."
|
|
4
|
+
argument-hint: "[target|all]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Run
|
|
10
|
+
|
|
11
|
+
`/run` is the normal convenience entry point for starting the project locally. It resolves and delegates to repository-owned runtime commands rather than requiring the developer to remember framework-specific launch syntax.
|
|
12
|
+
|
|
13
|
+
## Contract
|
|
14
|
+
|
|
15
|
+
Invoking `/run` authorizes one bounded local start attempt for the requested target. It does not authorize setup, source edits, deployment, release publication, Production access, or persistent background services outside the repository's normal local-development contract.
|
|
16
|
+
|
|
17
|
+
Resolve the local runtime command from current repository evidence in this order:
|
|
18
|
+
|
|
19
|
+
1. an explicit repository-owned run/dev wrapper or documented command;
|
|
20
|
+
2. an explicit package/task script whose purpose is local run/dev;
|
|
21
|
+
3. an unambiguous ecosystem-native local entry point already present in the repository.
|
|
22
|
+
|
|
23
|
+
Do not guess. If the repository has multiple independent runtimes and no documented default, require a target such as `/run web`, `/run api`, or `/run all`.
|
|
24
|
+
|
|
25
|
+
## Preconditions
|
|
26
|
+
|
|
27
|
+
Before starting:
|
|
28
|
+
|
|
29
|
+
- identify repository root and current Git state;
|
|
30
|
+
- inspect `PROJECT_BOOTSTRAP.json` and scaffold/readiness evidence when present;
|
|
31
|
+
- verify the selected runtime entry point exists;
|
|
32
|
+
- inspect any documented local ports/health endpoints;
|
|
33
|
+
- do not create an intentionally deferred scaffold merely to make `/run` succeed.
|
|
34
|
+
|
|
35
|
+
If runtime source is intentionally deferred or absent, return `RUN NOT AVAILABLE` and identify the owning work item or missing marker when repository evidence provides it.
|
|
36
|
+
|
|
37
|
+
If workstation tools or dependencies are missing, recommend `/setup` instead of silently installing them.
|
|
38
|
+
|
|
39
|
+
## Execution
|
|
40
|
+
|
|
41
|
+
Start the process in an observable developer-controlled terminal/process surface. Do not hide a long-running application in an unexplained background process.
|
|
42
|
+
|
|
43
|
+
Report:
|
|
44
|
+
|
|
45
|
+
- target;
|
|
46
|
+
- resolved command identity;
|
|
47
|
+
- process/startup result;
|
|
48
|
+
- effective application release/build identity when the running application exposes it;
|
|
49
|
+
- local URL/port or health evidence only when repository/runtime evidence establishes it;
|
|
50
|
+
- how to stop the process.
|
|
51
|
+
|
|
52
|
+
When `/run all` is explicitly supported, start only the repository-defined set of local components and make each process/endpoint visible.
|
|
53
|
+
|
|
54
|
+
When the project implements `docs/process/APPLICATION_VERSIONING.md`, prefer runtime-observed version evidence over a source-file guess. Do not synthesize a build number or claim that a static source label proves the running artifact's identity.
|
|
55
|
+
|
|
56
|
+
## Operation journal
|
|
57
|
+
|
|
58
|
+
`/run` may write a concise sanitized startup receipt under `.project-forge/logs/run/` following `docs/process/OPERATION_JOURNAL.md`.
|
|
59
|
+
|
|
60
|
+
Record startup command identity, target, timestamps, startup/health result, observed application version/build identity, and endpoint when established. Do not duplicate or continuously capture unbounded application stdout/stderr into the Project Forge journal.
|
|
61
|
+
|
|
62
|
+
## Deployment boundary
|
|
63
|
+
|
|
64
|
+
`/run` is not `/deploy local`.
|
|
65
|
+
|
|
66
|
+
It must not:
|
|
67
|
+
|
|
68
|
+
- mutate remote environments;
|
|
69
|
+
- publish images/packages/releases;
|
|
70
|
+
- change deployment bindings;
|
|
71
|
+
- infer Production configuration;
|
|
72
|
+
- bump or rewrite release version state;
|
|
73
|
+
- stage, commit, push, merge, or clean branches.
|
|
74
|
+
|
|
75
|
+
A successful `/run` proves only that the requested local runtime started with the evidence observed in that session.
|
|
@@ -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
|
-
|
|
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
|
-
|
|
144
|
-
SET UP THIS WORKSTATION FOR
|
|
143
|
+
Conceptual choices are:
|
|
145
144
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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.
|