@mriekki/project-forge 3.0.0 → 4.1.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 +4 -4
- package/assets/core/distribution.json +0 -4
- package/assets/deployment/distribution.json +1 -0
- package/assets/generated/ASSEMBLY.json +22 -37
- package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +8 -2
- package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +1 -2
- package/assets/generated/core/core/process/OPERATION_JOURNAL.md +1 -2
- package/assets/generated/core/core/skills/grill-me/SKILL.md +84 -46
- package/assets/generated/core/core/skills/project-forge-update/SKILL.md +3 -3
- package/assets/generated/core/core/skills/setup/SKILL.md +149 -199
- package/assets/generated/core/core/skills/start-work/SKILL.md +5 -6
- package/assets/generated/deployment/docs/DEVELOPER_ENVIRONMENTS.md +52 -12
- package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +56 -6
- package/assets/generated/deployment/src/project_forge_deployment/app_runtime_workstation.py +103 -42
- package/assets/generated/deployment/src/project_forge_deployment/environment_cli.py +41 -4
- package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +152 -79
- package/assets/generated/deployment/src/project_forge_deployment/environment_setup.py +241 -0
- package/assets/generated/deployment/src/project_forge_deployment/image_transfer.py +51 -11
- package/package.json +1 -1
- package/assets/generated/core/core/agents/coach.agent.md +0 -69
- package/assets/generated/core/core/skills/core-sync/SKILL.md +0 -184
- package/assets/generated/core/core/skills/developer-env-mode/SKILL.md +0 -231
- package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +0 -88
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: Coach
|
|
3
|
-
description: Optional guided engineering-learning agent using actual repository context for concepts, code walkthroughs, debugging, coding/SQL/system-design drills, interviews, diagrams, and resources.
|
|
4
|
-
user-invocable: true
|
|
5
|
-
disable-model-invocation: true
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Coach
|
|
9
|
-
|
|
10
|
-
You are the optional engineering-learning perspective.
|
|
11
|
-
|
|
12
|
-
Coaching is never required to start, continue, review, accept, deliver, merge, or complete engineering work.
|
|
13
|
-
|
|
14
|
-
## Core behavior
|
|
15
|
-
|
|
16
|
-
- Do not edit production code or implement fixes for the developer.
|
|
17
|
-
- Do not invoke subagents.
|
|
18
|
-
- Do not silently broaden product scope.
|
|
19
|
-
- Do not pin/request/switch to a premium model automatically.
|
|
20
|
-
- Read minimum relevant context.
|
|
21
|
-
- Use actual repository code, requirements, tests, diffs, incidents, and decisions when useful.
|
|
22
|
-
- Ask one material question at a time.
|
|
23
|
-
- Continue automatically until stop/natural completion.
|
|
24
|
-
- Adapt difficulty to demonstrated understanding.
|
|
25
|
-
- Challenge shallow explanations.
|
|
26
|
-
- Distinguish actual implementation/understanding from AI-generated work or study.
|
|
27
|
-
|
|
28
|
-
## Depth and levels
|
|
29
|
-
|
|
30
|
-
Depth: Light, Focused, Deep, Broad, or Coach recommends.
|
|
31
|
-
|
|
32
|
-
Levels:
|
|
33
|
-
|
|
34
|
-
```text
|
|
35
|
-
L1 Recognize
|
|
36
|
-
L2 Explain
|
|
37
|
-
L3 Trace
|
|
38
|
-
L4 Apply / Debug
|
|
39
|
-
L5 Defend / Design
|
|
40
|
-
L6 Interview Ready
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
Do not inflate mastery.
|
|
44
|
-
|
|
45
|
-
## Modes
|
|
46
|
-
|
|
47
|
-
Support concept learning, real-code walkthroughs, debugging, coding/DSA, SQL/database, design defense, system design, interview drills, gap assessment, learning paths, diagrams, and optional external resources.
|
|
48
|
-
|
|
49
|
-
For a structured walkthrough of a changed implementation across a Git/PR/commit change set, route to `/code-walkthrough` when available. Use Coach directly for ad-hoc code explanation or deeper concept exploration.
|
|
50
|
-
|
|
51
|
-
Use installed learning assets when present; otherwise coach directly from the repository/context.
|
|
52
|
-
|
|
53
|
-
## Adaptive questioning
|
|
54
|
-
|
|
55
|
-
Weak answer → teach/simplify/own-words explanation.
|
|
56
|
-
|
|
57
|
-
Solid answer → application/edge case.
|
|
58
|
-
|
|
59
|
-
Strong answer → tradeoff/debug/design.
|
|
60
|
-
|
|
61
|
-
Very strong answer → scale/change assumptions/interviewer pressure.
|
|
62
|
-
|
|
63
|
-
## Resources and progress
|
|
64
|
-
|
|
65
|
-
Prefer official documentation and a small number of current high-quality tutorials/resources. External material is optional.
|
|
66
|
-
|
|
67
|
-
Only update an optional learning-progress tracker with explicit human choice.
|
|
68
|
-
|
|
69
|
-
Never turn study or personal-project understanding into false claims of professional experience.
|
|
@@ -1,184 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: core-sync
|
|
3
|
-
description: Direct Core-to-consumer synchronization for component-only consumers; package-managed consumers are routed to /project-forge-update so umbrella and component baselines remain coherent.
|
|
4
|
-
argument-hint: "[optional local Core path]"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Core Sync
|
|
10
|
-
|
|
11
|
-
`/core-sync` is the direct component synchronization path for consumers that are managed directly by `CORE_BASELINE.json` **without** an umbrella `PROJECT_FORGE_BASELINE.json`.
|
|
12
|
-
|
|
13
|
-
For package-managed consumers, `/project-forge-update` is authoritative.
|
|
14
|
-
|
|
15
|
-
Invocation starts read-only. Direct component synchronization must never make a package-managed consumer disagree with its recorded Project Forge package provenance.
|
|
16
|
-
|
|
17
|
-
## 1. Classify the consumer before doing anything else
|
|
18
|
-
|
|
19
|
-
From the consumer repository read, when present:
|
|
20
|
-
|
|
21
|
-
- `PROJECT_FORGE_BASELINE.json`;
|
|
22
|
-
- `CORE_BASELINE.json`;
|
|
23
|
-
- `.github/project-forge-workspace.json`;
|
|
24
|
-
- `.github/project-forge-core-sync.json`;
|
|
25
|
-
- current Git status, branch, remotes, and default branch when observable.
|
|
26
|
-
|
|
27
|
-
### Package-managed consumer
|
|
28
|
-
|
|
29
|
-
If `PROJECT_FORGE_BASELINE.json` exists:
|
|
30
|
-
|
|
31
|
-
```text
|
|
32
|
-
PACKAGE-MANAGED PROJECT FORGE CONSUMER
|
|
33
|
-
Direct Core sync: NOT PERMITTED
|
|
34
|
-
Next: /project-forge-update
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
Stop before refreshing a Core checkout, running `tools/package/sync.py`, creating a sync branch, or sending a remote `[sync-core]` request.
|
|
38
|
-
|
|
39
|
-
The umbrella package updates Core and Deployment components together and refreshes `PROJECT_FORGE_BASELINE.json`, `CORE_BASELINE.json`, and `DEPLOYMENT_BASELINE.json` coherently. A Core-only sync would bypass that contract.
|
|
40
|
-
|
|
41
|
-
### Component-only Core consumer
|
|
42
|
-
|
|
43
|
-
If `PROJECT_FORGE_BASELINE.json` is absent and a valid `CORE_BASELINE.json` exists, continue with the component-managed path below.
|
|
44
|
-
|
|
45
|
-
If neither baseline exists, report `CORE SYNC BLOCKED`; do not invent provenance or initialize a consumer implicitly.
|
|
46
|
-
|
|
47
|
-
## 2. Establish the component-only Core baseline
|
|
48
|
-
|
|
49
|
-
Run the repository-local integrity check before planning an update:
|
|
50
|
-
|
|
51
|
-
```text
|
|
52
|
-
python tools/project-forge-core/check-core-baseline.py --root .
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
Stop if the managed overlay has unexplained local drift, missing managed files, or invalid baseline metadata.
|
|
56
|
-
|
|
57
|
-
Resolve from `CORE_BASELINE.json`:
|
|
58
|
-
|
|
59
|
-
- canonical Core repository;
|
|
60
|
-
- currently accepted Core commit/version;
|
|
61
|
-
- distribution name;
|
|
62
|
-
- managed-path ownership/hashes.
|
|
63
|
-
|
|
64
|
-
## 3. Resolve the Core source safely
|
|
65
|
-
|
|
66
|
-
Check local candidates in this order:
|
|
67
|
-
|
|
68
|
-
1. an explicit Core path supplied by the human;
|
|
69
|
-
2. an already-open workspace folder that unambiguously resolves to the recorded Core repository;
|
|
70
|
-
3. the sibling checkout derived from the Core repository name, normally `../project-forge-core`.
|
|
71
|
-
|
|
72
|
-
Do not broadly scan the filesystem. A local Core checkout is an optimization, not a prerequisite.
|
|
73
|
-
|
|
74
|
-
A local candidate is usable only when it is the recorded Git repository and its state can be inspected safely.
|
|
75
|
-
|
|
76
|
-
If no usable local Core checkout exists, use the configured remote provider from `.github/project-forge-core-sync.json` when available. Do not ask the developer to clone Core merely to satisfy `/core-sync`.
|
|
77
|
-
|
|
78
|
-
## 4. Classify a local Core checkout
|
|
79
|
-
|
|
80
|
-
Before modifying a local Core checkout inspect:
|
|
81
|
-
|
|
82
|
-
```text
|
|
83
|
-
git -C <core-path> status --short --branch
|
|
84
|
-
git -C <core-path> branch --show-current
|
|
85
|
-
git -C <core-path> remote -v
|
|
86
|
-
git -C <core-path> branch -vv
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
It may be refreshed automatically only when clean, on its normal accepted/default branch, backed by an unambiguous upstream, and fast-forward-safe.
|
|
90
|
-
|
|
91
|
-
Never auto-stash, merge, rebase, reset, clean, force-update, or discard Core work.
|
|
92
|
-
|
|
93
|
-
If the checkout is dirty, ahead, diverged, intentionally pinned, or ambiguous, preserve it unchanged and prefer the configured remote provider when available.
|
|
94
|
-
|
|
95
|
-
## 5. Present one bounded component-sync choice
|
|
96
|
-
|
|
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:
|
|
100
|
-
|
|
101
|
-
```text
|
|
102
|
-
CORE SYNC READY
|
|
103
|
-
|
|
104
|
-
Consumer baseline: <commit/version>
|
|
105
|
-
Source: LOCAL <core-path>
|
|
106
|
-
Distribution: <distribution>
|
|
107
|
-
```
|
|
108
|
-
|
|
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:
|
|
116
|
-
|
|
117
|
-
```text
|
|
118
|
-
CORE SYNC READY
|
|
119
|
-
|
|
120
|
-
Consumer baseline: <commit/version>
|
|
121
|
-
Source: REMOTE PROVIDER
|
|
122
|
-
Provider: <provider repository>
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
Then offer:
|
|
126
|
-
|
|
127
|
-
- `Request remote Core sync` `[REMOTE WRITE]` — `RECOMMENDED`
|
|
128
|
-
- `Keep inspecting only` `[READ ONLY]`
|
|
129
|
-
- `Stop` `[NO ACTION]`
|
|
130
|
-
|
|
131
|
-
The selected choice does not authorize merge, release publication, or deployment.
|
|
132
|
-
|
|
133
|
-
## 6. Local component path
|
|
134
|
-
|
|
135
|
-
After `Sync the component-only Core baseline` is selected:
|
|
136
|
-
|
|
137
|
-
1. Refresh Core remote state.
|
|
138
|
-
2. Reclassify the accepted/default Core branch.
|
|
139
|
-
3. Fast-forward it only when safe.
|
|
140
|
-
4. Run canonical Core sync preview using the distribution recorded by the baseline.
|
|
141
|
-
5. Stop on `LOCAL_DRIFT`, `CONFLICT`, `LOCAL_MISSING`, `UNTRACKED_CONFLICT`, or an unaccepted `RETIRED_PATH`.
|
|
142
|
-
6. If the consumer is on its default branch, create/switch to a short-lived branch such as `chore/sync-core-<version-or-short-sha>`.
|
|
143
|
-
7. Apply only safe Core additions/updates and refresh `CORE_BASELINE.json` using canonical `tools/package/sync.py`.
|
|
144
|
-
|
|
145
|
-
Do not manually copy managed files as a substitute for the canonical tool.
|
|
146
|
-
|
|
147
|
-
## 7. Remote component path
|
|
148
|
-
|
|
149
|
-
Remote orchestration is consumer configuration. Read `.github/project-forge-core-sync.json` and require its configured provider contract, for example `github-issue-control-plane` with an owner/repository title template and an empty body.
|
|
150
|
-
|
|
151
|
-
Create exactly the configured request. Do not put product requirements, baseline JSON, source code, secrets, or other private consumer details into a public request.
|
|
152
|
-
|
|
153
|
-
The provider is expected to validate target authorization, obtain its own short-lived credentials, run canonical Core sync, refuse unsafe drift/conflicts, publish a short-lived consumer branch/PR, and observe consumer CI.
|
|
154
|
-
|
|
155
|
-
If the provider cannot satisfy that contract, report `REMOTE SYNC UNAVAILABLE`; do not silently clone Core or invent another synchronization mechanism.
|
|
156
|
-
|
|
157
|
-
## 8. Verification
|
|
158
|
-
|
|
159
|
-
For a local apply run:
|
|
160
|
-
|
|
161
|
-
```text
|
|
162
|
-
python tools/project-forge-core/check-core-baseline.py --root .
|
|
163
|
-
git status --short --branch
|
|
164
|
-
git diff --stat
|
|
165
|
-
git diff -- CORE_BASELINE.json
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Confirm exact Core provenance, managed hashes, consumer-owned preservation, and intended branch scope. Present the meaningful diff and recommend `/deliver` after human acceptance.
|
|
169
|
-
|
|
170
|
-
For a remote path, report the resulting PR and exact Core commit when observed. Merge remains the normal explicit final gate.
|
|
171
|
-
|
|
172
|
-
## 9. Boundaries
|
|
173
|
-
|
|
174
|
-
`/core-sync` never:
|
|
175
|
-
|
|
176
|
-
- directly synchronizes Core when `PROJECT_FORGE_BASELINE.json` exists;
|
|
177
|
-
- uses direct Core sync as a substitute for `/project-forge-update`;
|
|
178
|
-
- modifies ambiguous local Core state;
|
|
179
|
-
- treats managed consumer drift as disposable;
|
|
180
|
-
- publishes Core or Project Forge package releases/tags;
|
|
181
|
-
- merges the consumer sync PR;
|
|
182
|
-
- deploys production.
|
|
183
|
-
|
|
184
|
-
If reusable Core behavior itself is wrong, fix Core canonically through `/upstream-fix`; then adopt it through the update channel appropriate to the consumer's provenance model.
|
|
@@ -1,231 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: developer-env-mode
|
|
3
|
-
description: "Converge and verify the developer workstation for local-only or remote-enabled work. Mode changes become effective only after the selected readiness contract passes."
|
|
4
|
-
argument-hint: "status|local|remote"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Developer Environment Mode
|
|
10
|
-
|
|
11
|
-
`/developer-env-mode` manages the current workstation's operational development mode. It is not a deployment command and it does not weaken Staging or Production gates.
|
|
12
|
-
|
|
13
|
-
Supported intents:
|
|
14
|
-
|
|
15
|
-
```text
|
|
16
|
-
/developer-env-mode status
|
|
17
|
-
/developer-env-mode local
|
|
18
|
-
/developer-env-mode remote
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
The governing invariant is:
|
|
22
|
-
|
|
23
|
-
```text
|
|
24
|
-
MODE != preference
|
|
25
|
-
MODE = verified operational state
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
Never record a requested mode as ready until its readiness contract passes. If convergence fails, preserve the prior ready mode when one exists and report the blocker.
|
|
29
|
-
|
|
30
|
-
## 1. Resolve repository and package provenance read-only
|
|
31
|
-
|
|
32
|
-
From the repository root inspect, when present:
|
|
33
|
-
|
|
34
|
-
- `PROJECT_BOOTSTRAP.json`;
|
|
35
|
-
- `PROJECT_FORGE_BASELINE.json` and component baselines;
|
|
36
|
-
- `DEV_ENVIRONMENT.json`;
|
|
37
|
-
- application setup/build/test commands and project-owned persistence configuration;
|
|
38
|
-
- deployment topology and generated deployment tooling;
|
|
39
|
-
- Git status so unrelated work is preserved.
|
|
40
|
-
|
|
41
|
-
For package-managed consumers, verify managed files are coherent before relying on distributed Core or Deployment tooling. Route managed drift to `/project-forge-update` rather than overwriting it.
|
|
42
|
-
|
|
43
|
-
Do not require a Bootstrap/Core/Deployment Kit source checkout for normal consumer use.
|
|
44
|
-
|
|
45
|
-
## 2. Keep current mode state workstation-local
|
|
46
|
-
|
|
47
|
-
Mode state is user/workstation state, not repository authority. Store it outside the repository under the user-scoped Project Forge directory, using a repository-scoped location such as:
|
|
48
|
-
|
|
49
|
-
```text
|
|
50
|
-
~/.project-forge/workspaces/<owner>/<repo>/developer-environment.json
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
Do not commit this state. Do not store credentials, private keys, target trust stores, database contents, or secret values in it.
|
|
54
|
-
|
|
55
|
-
Record enough non-secret evidence to distinguish requested mode from readiness, for example:
|
|
56
|
-
|
|
57
|
-
- mode;
|
|
58
|
-
- ready/not-ready;
|
|
59
|
-
- verification timestamp;
|
|
60
|
-
- source revision when available;
|
|
61
|
-
- build/test state or fingerprint;
|
|
62
|
-
- local database state when applicable;
|
|
63
|
-
- local runtime health when applicable;
|
|
64
|
-
- remote target/access readiness summary when applicable.
|
|
65
|
-
|
|
66
|
-
A later `status` check must be allowed to report that the recorded mode is no longer ready when Docker stops, tools drift, the build becomes stale, the local database is missing/incompatible, or remote access disappears.
|
|
67
|
-
|
|
68
|
-
## 3. `status` is read-only
|
|
69
|
-
|
|
70
|
-
`/developer-env-mode status` performs no setup writes. Inspect current workstation evidence and live prerequisites, then report both the selected mode and current readiness.
|
|
71
|
-
|
|
72
|
-
Prefer a compact result such as:
|
|
73
|
-
|
|
74
|
-
```text
|
|
75
|
-
DEVELOPER ENVIRONMENT
|
|
76
|
-
|
|
77
|
-
Selected mode: LOCAL
|
|
78
|
-
Readiness: NOT READY
|
|
79
|
-
|
|
80
|
-
Docker ........ READY
|
|
81
|
-
Build ......... STALE
|
|
82
|
-
Tests ......... READY
|
|
83
|
-
SQLite ........ READY
|
|
84
|
-
Runtime ....... HEALTHY
|
|
85
|
-
Remote access . UNAVAILABLE
|
|
86
|
-
|
|
87
|
-
NEXT
|
|
88
|
-
/developer-env-mode local
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Do not silently repair state during `status`.
|
|
92
|
-
|
|
93
|
-
## 4. `local` means converge a complete local development environment
|
|
94
|
-
|
|
95
|
-
Selecting `local` authorizes bounded, non-destructive workstation setup needed to make the current repository usable locally. It does not authorize destructive database reset, deletion of unrelated Docker state, remote publication, remote deployment, or Production writes.
|
|
96
|
-
|
|
97
|
-
Converge in this order.
|
|
98
|
-
|
|
99
|
-
### A. Workstation prerequisites
|
|
100
|
-
|
|
101
|
-
Verify the current OS is supported by repository configuration. Use repository setup/doctor tooling when present to verify required tools and versions.
|
|
102
|
-
|
|
103
|
-
For Docker-based local execution require a working Docker CLI/engine. Prefer repository-distributed Deployment Kit commands when `DEPLOYMENT_BASELINE.json` proves they are installed.
|
|
104
|
-
|
|
105
|
-
### B. Dependencies and restore
|
|
106
|
-
|
|
107
|
-
Run repository-defined dependency restore/setup commands when missing or stale. Preserve pinned versions and project conventions. Do not substitute arbitrary global tooling when the repository defines a supported path.
|
|
108
|
-
|
|
109
|
-
### C. Local persistence
|
|
110
|
-
|
|
111
|
-
If the application uses SQLite for local development:
|
|
112
|
-
|
|
113
|
-
1. resolve the project-owned database filename/container path and migration/initialization contract from repository configuration/docs/code;
|
|
114
|
-
2. prefer the installed Deployment Kit local SQLite ensure/status primitive when available for workstation-owned persistent storage;
|
|
115
|
-
3. when the database is absent, create the owned local SQLite file/directory non-destructively;
|
|
116
|
-
4. run the repository-provided migration/schema initialization needed to make that database usable;
|
|
117
|
-
5. verify the resulting database can be opened and that the application-required schema/migration state is current when the repository provides such a check.
|
|
118
|
-
|
|
119
|
-
If an existing SQLite database is corrupt, incompatible, or has unexpected ownership/schema state, **STOP**. Never delete, replace, reset, or migrate destructively merely to make mode convergence pass. Present the exact recovery/reset decision separately.
|
|
120
|
-
|
|
121
|
-
Do not assume every project uses SQLite. Other persistence requires an explicit repository-owned local setup contract.
|
|
122
|
-
|
|
123
|
-
### D. Build and tests
|
|
124
|
-
|
|
125
|
-
Run the repository's required local build and test commands. A missing or stale build is a normal convergence condition; rebuild it.
|
|
126
|
-
|
|
127
|
-
If build or required tests fail, report `LOCAL MODE NOT READY` and do not mark the mode ready.
|
|
128
|
-
|
|
129
|
-
When the project policy says application validation is local-only, GitHub publication/PR activity does not replace this local build/test evidence.
|
|
130
|
-
|
|
131
|
-
### E. Local immutable Docker artifact
|
|
132
|
-
|
|
133
|
-
When the local runtime is Docker-based, build the application image locally using repository-owned commands. Resolve an immutable local image identity.
|
|
134
|
-
|
|
135
|
-
The standard Deployment Kit workstation adapter may accept either:
|
|
136
|
-
|
|
137
|
-
- an exact registry digest (`name@sha256:...`), or
|
|
138
|
-
- a local Docker image ID (`sha256:<64 hex>`) for workstation-only execution.
|
|
139
|
-
|
|
140
|
-
Never use a mutable tag as the final deployed identity. A local image ID is valid only for workstation placement and is not remote-release evidence.
|
|
141
|
-
|
|
142
|
-
### F. Workstation runtime
|
|
143
|
-
|
|
144
|
-
Converge the local application runtime through the repository-distributed workstation adapter when available:
|
|
145
|
-
|
|
146
|
-
```text
|
|
147
|
-
placement: workstation
|
|
148
|
-
isolation: container
|
|
149
|
-
exposure: loopback
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Keep exposure loopback-only. Mount the project-owned local SQLite persistence directory when required. Verify the declared health endpoint and any required local smoke check.
|
|
153
|
-
|
|
154
|
-
Do not resolve SSH targets, publish images, create public routes, or deploy Staging/Production while entering local mode.
|
|
155
|
-
|
|
156
|
-
### G. Commit local mode only after readiness passes
|
|
157
|
-
|
|
158
|
-
Only after prerequisites, persistence, build, tests, runtime, and health requirements pass, write the workstation-local mode state as ready.
|
|
159
|
-
|
|
160
|
-
A successful summary should distinguish local evidence from remote evidence:
|
|
161
|
-
|
|
162
|
-
```text
|
|
163
|
-
LOCAL DEVELOPER ENVIRONMENT READY
|
|
164
|
-
|
|
165
|
-
Build ........ READY
|
|
166
|
-
Tests ........ READY
|
|
167
|
-
Docker ....... READY
|
|
168
|
-
SQLite ....... READY / NOT APPLICABLE
|
|
169
|
-
Application .. HEALTHY
|
|
170
|
-
Remote deploy. DISABLED BY MODE
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
## 5. `remote` means verify remote-enabled capability, not deploy
|
|
174
|
-
|
|
175
|
-
Selecting `remote` authorizes bounded, non-destructive checks/setup needed to prove that the current workstation can work with the repository's configured remote non-Production environment(s). It does **not** publish an artifact or deploy an application.
|
|
176
|
-
|
|
177
|
-
Verify as applicable:
|
|
178
|
-
|
|
179
|
-
- normal local developer prerequisites still needed to build/test the project;
|
|
180
|
-
- repository deployment topology contains a non-deferred remote environment;
|
|
181
|
-
- exact target/provider binding exists when required;
|
|
182
|
-
- workstation-to-target trust/access is valid;
|
|
183
|
-
- target OS/runtime/platform readiness is valid;
|
|
184
|
-
- persistence/readiness prerequisites can be inspected safely;
|
|
185
|
-
- GitHub/registry access needed for a later release/publish step is available;
|
|
186
|
-
- repository release/deployment tooling and baselines are coherent.
|
|
187
|
-
|
|
188
|
-
For the standard remote-SSH path preserve strict host identity. Unknown or changed host identity is a stop condition. Never fall back to another environment or host.
|
|
189
|
-
|
|
190
|
-
Do not require a Production target merely to enter remote mode. Do not weaken Production authorization because remote mode is ready.
|
|
191
|
-
|
|
192
|
-
Only after the selected remote readiness checks pass, record `remote` as ready.
|
|
193
|
-
|
|
194
|
-
Then report the next explicit operation, typically:
|
|
195
|
-
|
|
196
|
-
```text
|
|
197
|
-
/deployment-readiness <environment>
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
A later `/deploy <environment>` remains separately gated.
|
|
201
|
-
|
|
202
|
-
## 6. Fail closed on destructive or ambiguous repair
|
|
203
|
-
|
|
204
|
-
Automatic convergence may safely create missing local directories, dependency caches, build outputs, a new owned SQLite file, migrations that the project defines as normal forward initialization, and a new owned local application container.
|
|
205
|
-
|
|
206
|
-
Stop for a separate explicit decision before:
|
|
207
|
-
|
|
208
|
-
- deleting/resetting an existing database;
|
|
209
|
-
- destructive migration or rollback;
|
|
210
|
-
- replacing unexplained persistent data;
|
|
211
|
-
- deleting unrelated containers/images/volumes;
|
|
212
|
-
- publishing an artifact remotely;
|
|
213
|
-
- rebinding a target;
|
|
214
|
-
- weakening host verification;
|
|
215
|
-
- deploying Staging or Production;
|
|
216
|
-
- changing public/LAN exposure.
|
|
217
|
-
|
|
218
|
-
## 7. Relationship to other Project Forge commands
|
|
219
|
-
|
|
220
|
-
`/developer-env-mode` prepares a workstation and establishes current operational readiness.
|
|
221
|
-
|
|
222
|
-
It does not replace:
|
|
223
|
-
|
|
224
|
-
- `/project-forge-update` for managed Project Forge package changes;
|
|
225
|
-
- project setup/doctor tooling;
|
|
226
|
-
- `/start-work` for implementation authorization;
|
|
227
|
-
- `/deployment-readiness` for environment-specific pre-deploy evidence;
|
|
228
|
-
- `/deploy` for deployment authorization/execution;
|
|
229
|
-
- `/tear-down` for destructive cleanup.
|
|
230
|
-
|
|
231
|
-
Mode switching never implies merge, release publication, Staging deployment, or Production deployment.
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: grill-with-docs
|
|
3
|
-
description: Continuously challenge requirements/design and reconcile resolved decisions into permitted authoritative/supplemental documents or proposed external-work-item updates.
|
|
4
|
-
argument-hint: "<work-item ID, external key, document, plan, or topic>"
|
|
5
|
-
user-invocable: true
|
|
6
|
-
disable-model-invocation: true
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Grill With Docs
|
|
10
|
-
|
|
11
|
-
This is the documentation-aware form of `/grill-me`.
|
|
12
|
-
|
|
13
|
-
## 1. Resolve authority
|
|
14
|
-
|
|
15
|
-
Read `.github/project-forge-workspace.json` when present.
|
|
16
|
-
|
|
17
|
-
Determine:
|
|
18
|
-
- authoritative work-item source,
|
|
19
|
-
- which local documents are authoritative/supplemental/read-only/not-used,
|
|
20
|
-
- whether an external write integration is actually available and permitted.
|
|
21
|
-
|
|
22
|
-
Never assume Product/Feature Briefs exist. Never assume `Jira Epic == Feature Brief`.
|
|
23
|
-
|
|
24
|
-
## 2. Continuous grilling
|
|
25
|
-
|
|
26
|
-
Ask one material question at a time and challenge:
|
|
27
|
-
- ambiguous outcomes,
|
|
28
|
-
- missing domain/engineering rules,
|
|
29
|
-
- contradictory requirements,
|
|
30
|
-
- lifecycle/destructive behavior,
|
|
31
|
-
- data integrity/concurrency,
|
|
32
|
-
- failure behavior,
|
|
33
|
-
- accessibility/UX implications when relevant,
|
|
34
|
-
- architecture/operational tradeoffs,
|
|
35
|
-
- testability.
|
|
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. 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
|
-
|
|
39
|
-
Cadence:
|
|
40
|
-
|
|
41
|
-
```text
|
|
42
|
-
question
|
|
43
|
-
→ human answer
|
|
44
|
-
→ challenge/analyze
|
|
45
|
-
→ reconcile the resolved decision when already authorized
|
|
46
|
-
→ next material question
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
Do not ask whether to continue after every answer.
|
|
50
|
-
|
|
51
|
-
## 3. Reconcile to the right authority
|
|
52
|
-
|
|
53
|
-
When a decision is resolved:
|
|
54
|
-
- update an existing permitted local authority/supplement only when the current session authorizes document edits;
|
|
55
|
-
- if Jira/GitHub/another external system is authoritative and no permitted write integration is available, accumulate a concise `PROPOSED EXTERNAL WORK-ITEM UPDATE`;
|
|
56
|
-
- if a permitted external write integration exists, require an explicit `[EXTERNAL WRITE]` choice before writing externally;
|
|
57
|
-
- never create a competing local source merely to store an answer.
|
|
58
|
-
|
|
59
|
-
For local-document models, common homes are:
|
|
60
|
-
- brief: high-level scope/outcome/major rule,
|
|
61
|
-
- combined requirements: detailed user/engineering behavior and testable scenarios,
|
|
62
|
-
- decisions: resolved work-item decision/basis,
|
|
63
|
-
- ADR: only a meaningful cross-cutting architecture decision.
|
|
64
|
-
|
|
65
|
-
## 4. Editing authorization
|
|
66
|
-
|
|
67
|
-
Invocation alone does not imply broad document-write permission.
|
|
68
|
-
|
|
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
|
-
|
|
71
|
-
- `Continue grilling only` `[READ ONLY]`
|
|
72
|
-
- `Reconcile resolved decisions during this session` `[MODIFIES DOCS]`
|
|
73
|
-
- `Stop` `[NO ACTION]`
|
|
74
|
-
|
|
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.
|
|
76
|
-
|
|
77
|
-
Pause only when a new answer would change higher-level approved scope, contradict another authority/ADR, or require a new cross-cutting decision.
|
|
78
|
-
|
|
79
|
-
## 5. Stop boundary
|
|
80
|
-
|
|
81
|
-
Do not implement production code.
|
|
82
|
-
|
|
83
|
-
At natural completion summarize:
|
|
84
|
-
- decisions resolved,
|
|
85
|
-
- documents/proposed external updates changed,
|
|
86
|
-
- remaining conflicts/open items.
|
|
87
|
-
|
|
88
|
-
If systematic detailed coverage is still needed, recommend `/refine-requirements`.
|