@mriekki/project-forge 0.0.0-stage → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +134 -2
- package/assets/components.json +33 -0
- package/assets/core/distribution.json +66 -0
- package/assets/deployment/distribution.json +54 -0
- package/assets/generated/ASSEMBLY.json +557 -0
- package/assets/generated/core/core/agents/coach.agent.md +69 -0
- package/assets/generated/core/core/agents/reviewer.agent.md +85 -0
- package/assets/generated/core/core/instructions/project-forge-docs.instructions.md +45 -0
- package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +79 -0
- package/assets/generated/core/core/learning/CODING_DRILLS.md +35 -0
- package/assets/generated/core/core/learning/DIAGRAM_GUIDE.md +59 -0
- package/assets/generated/core/core/learning/ENGINEERING_LEARNING_WORKBOOK.md +108 -0
- package/assets/generated/core/core/learning/LEARNING_MAP.md +108 -0
- package/assets/generated/core/core/learning/LEARNING_PROGRESS.md +39 -0
- package/assets/generated/core/core/learning/RESOURCE_CATALOG.md +25 -0
- package/assets/generated/core/core/learning/SQL_DRILLS.md +90 -0
- package/assets/generated/core/core/learning/SYSTEM_DESIGN_DRILLS.md +301 -0
- package/assets/generated/core/core/process/COACHING_GUIDE.md +92 -0
- package/assets/generated/core/core/process/DATABASE_LEARNING_WORKBENCH.md +397 -0
- package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +166 -0
- package/assets/generated/core/core/process/GUIDED_NEXT_STEPS.md +48 -0
- package/assets/generated/core/core/process/HUMAN_GATES.md +83 -0
- package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +64 -0
- package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +326 -0
- package/assets/generated/core/core/process/PROJECT_FORGE_ENGINEERING_GUIDE.md +308 -0
- package/assets/generated/core/core/process/PR_WORKFLOW.md +55 -0
- package/assets/generated/core/core/process/SETUP_ACCEPTANCE_CHECKLIST.md +72 -0
- package/assets/generated/core/core/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md +520 -0
- package/assets/generated/core/core/process/WORK_ITEM_MODEL.md +56 -0
- package/assets/generated/core/core/skills/cleanup-branches/SKILL.md +190 -0
- package/assets/generated/core/core/skills/coach/SKILL.md +174 -0
- package/assets/generated/core/core/skills/code-walkthrough/SKILL.md +197 -0
- package/assets/generated/core/core/skills/core-sync/SKILL.md +178 -0
- package/assets/generated/core/core/skills/db-lab/SKILL.md +245 -0
- package/assets/generated/core/core/skills/define-feature/SKILL.md +144 -0
- package/assets/generated/core/core/skills/deliver/SKILL.md +397 -0
- package/assets/generated/core/core/skills/deploy/SKILL.md +188 -0
- package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +234 -0
- package/assets/generated/core/core/skills/developer-env-mode/SKILL.md +231 -0
- package/assets/generated/core/core/skills/docs/SKILL.md +116 -0
- package/assets/generated/core/core/skills/grill-me/SKILL.md +77 -0
- package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +90 -0
- package/assets/generated/core/core/skills/learning-review/SKILL.md +90 -0
- package/assets/generated/core/core/skills/next-step/SKILL.md +221 -0
- package/assets/generated/core/core/skills/progress/SKILL.md +207 -0
- package/assets/generated/core/core/skills/project-forge-update/SKILL.md +228 -0
- package/assets/generated/core/core/skills/pull-latest/SKILL.md +166 -0
- package/assets/generated/core/core/skills/refine-requirements/SKILL.md +207 -0
- package/assets/generated/core/core/skills/setup/SKILL.md +362 -0
- package/assets/generated/core/core/skills/start-work/SKILL.md +190 -0
- package/assets/generated/core/core/skills/system-lab/SKILL.md +333 -0
- package/assets/generated/core/core/skills/tear-down/SKILL.md +140 -0
- package/assets/generated/core/core/skills/upstream-fix/SKILL.md +221 -0
- package/assets/generated/core/core/skills/wait-what/SKILL.md +86 -0
- package/assets/generated/core/core/templates/ADR_TEMPLATE.md +41 -0
- package/assets/generated/core/core/templates/FEATURE_BRIEF_TEMPLATE.md +27 -0
- package/assets/generated/core/core/templates/PRODUCT_BRIEF_TEMPLATE.md +27 -0
- package/assets/generated/core/core/templates/PULL_REQUEST_TEMPLATE.md +37 -0
- package/assets/generated/core/core/templates/REQUIREMENTS_TEMPLATE.md +17 -0
- package/assets/generated/core/profiles/greenfield/project-forge-workspace.json +12 -0
- package/assets/generated/core/tools/db_lab/sqlite_workbench.py +463 -0
- package/assets/generated/core/tools/docs_site/docs_site.py +512 -0
- package/assets/generated/core/tools/package/check_baseline.py +102 -0
- package/assets/generated/core/tools/package/check_upstream.py +171 -0
- package/assets/generated/core/tools/system_lab/system_workbench.py +243 -0
- package/assets/generated/deployment/distribution/project-forge-deploy.py +8 -0
- package/assets/generated/deployment/docs/DEVELOPER_ENVIRONMENTS.md +335 -0
- package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +95 -0
- package/assets/generated/deployment/docs/WORKSPACE_INSTANCES.md +154 -0
- package/assets/generated/deployment/docs/images/developer-environment-journey.svg +56 -0
- package/assets/generated/deployment/docs/images/personal-environment-architecture.svg +54 -0
- package/assets/generated/deployment/docs/images/poc-environment-model.svg +61 -0
- package/assets/generated/deployment/src/project_forge_deployment/__init__.py +3 -0
- package/assets/generated/deployment/src/project_forge_deployment/__main__.py +3 -0
- package/assets/generated/deployment/src/project_forge_deployment/app_cli.py +163 -0
- package/assets/generated/deployment/src/project_forge_deployment/app_runtime.py +455 -0
- package/assets/generated/deployment/src/project_forge_deployment/app_runtime_remote.py +416 -0
- package/assets/generated/deployment/src/project_forge_deployment/app_runtime_workstation.py +136 -0
- package/assets/generated/deployment/src/project_forge_deployment/box_platform.py +208 -0
- package/assets/generated/deployment/src/project_forge_deployment/box_platform_assets.py +100 -0
- package/assets/generated/deployment/src/project_forge_deployment/box_platform_remote.py +271 -0
- package/assets/generated/deployment/src/project_forge_deployment/cli.py +437 -0
- package/assets/generated/deployment/src/project_forge_deployment/doctor.py +121 -0
- package/assets/generated/deployment/src/project_forge_deployment/entrypoint.py +37 -0
- package/assets/generated/deployment/src/project_forge_deployment/environment_cli.py +271 -0
- package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +228 -0
- package/assets/generated/deployment/src/project_forge_deployment/errors.py +5 -0
- package/assets/generated/deployment/src/project_forge_deployment/home_lab.py +328 -0
- package/assets/generated/deployment/src/project_forge_deployment/image_transfer.py +105 -0
- package/assets/generated/deployment/src/project_forge_deployment/keys.py +171 -0
- package/assets/generated/deployment/src/project_forge_deployment/local_cli.py +189 -0
- package/assets/generated/deployment/src/project_forge_deployment/local_runtime.py +526 -0
- package/assets/generated/deployment/src/project_forge_deployment/local_spec.py +82 -0
- package/assets/generated/deployment/src/project_forge_deployment/local_sqlite.py +205 -0
- package/assets/generated/deployment/src/project_forge_deployment/portable_profile.py +181 -0
- package/assets/generated/deployment/src/project_forge_deployment/profile_migration.py +70 -0
- package/assets/generated/deployment/src/project_forge_deployment/profile_repository.py +348 -0
- package/assets/generated/deployment/src/project_forge_deployment/profiles.py +204 -0
- package/assets/generated/deployment/src/project_forge_deployment/registry_access.py +114 -0
- package/assets/generated/deployment/src/project_forge_deployment/registry_cli.py +51 -0
- package/assets/generated/deployment/src/project_forge_deployment/route_registry.py +367 -0
- package/assets/generated/deployment/src/project_forge_deployment/route_registry_remote.py +443 -0
- package/assets/generated/deployment/src/project_forge_deployment/security.py +290 -0
- package/assets/generated/deployment/src/project_forge_deployment/sqlite_adapter.py +335 -0
- package/assets/generated/deployment/src/project_forge_deployment/sqlite_adapter_remote.py +340 -0
- package/assets/generated/deployment/src/project_forge_deployment/sqlite_cli.py +86 -0
- package/assets/generated/deployment/src/project_forge_deployment/sqlite_import_recovery.py +437 -0
- package/assets/generated/deployment/src/project_forge_deployment/ssh.py +119 -0
- package/assets/generated/deployment/src/project_forge_deployment/teardown.py +300 -0
- package/assets/generated/deployment/src/project_forge_deployment/teardown_cli.py +139 -0
- package/assets/generated/deployment/src/project_forge_deployment/teardown_remote.py +100 -0
- package/assets/generated/deployment/src/project_forge_deployment/trust.py +278 -0
- package/bin/project-forge.mjs +9 -0
- package/package.json +31 -4
- package/src/cli.mjs +150 -0
- package/src/engine.mjs +243 -0
- package/src/package-data.mjs +18 -0
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: deployment-readiness
|
|
3
|
+
description: Guided readiness for any exact project-defined deployment environment. Resolves logical topology first, reuses valid setup-time proof, and verifies only placement-relevant prerequisites.
|
|
4
|
+
argument-hint: "[environment] | status [environment]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Deployment Readiness
|
|
10
|
+
|
|
11
|
+
`/deployment-readiness` prepares one exact named logical environment for later real application deployment.
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
/deployment-readiness <environment>
|
|
15
|
+
/deployment-readiness status [environment]
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Examples include `/deployment-readiness demo`, `/deployment-readiness qa`, and `/deployment-readiness prod-east`.
|
|
19
|
+
|
|
20
|
+
Production is a resolved purpose/policy classification with stronger gates, not a literal-name test. Do not silently default to Production.
|
|
21
|
+
|
|
22
|
+
Logical environment purpose/role, placement, isolation, exposure, and concrete target/provider binding are separate facts.
|
|
23
|
+
|
|
24
|
+
## 1. Resolve topology before machine questions
|
|
25
|
+
|
|
26
|
+
Prefer the project-owned mutable topology:
|
|
27
|
+
|
|
28
|
+
```text
|
|
29
|
+
DEPLOYMENT_TOPOLOGY.json
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Use `PROJECT_BOOTSTRAP.json` deployment topology only as the initial topology fallback. Do not rewrite Bootstrap provenance merely because a later environment changes.
|
|
33
|
+
|
|
34
|
+
Resolve the exact configured environment name plus, when present:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
purpose / role
|
|
38
|
+
placement
|
|
39
|
+
isolation
|
|
40
|
+
exposure
|
|
41
|
+
binding state
|
|
42
|
+
adapter
|
|
43
|
+
target/provider binding
|
|
44
|
+
failure domain
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
If the requested name is absent, route to `/setup` to define/configure it. Never guess a similar environment or fall back to another one.
|
|
48
|
+
|
|
49
|
+
Do not assume:
|
|
50
|
+
|
|
51
|
+
- a second computer exists;
|
|
52
|
+
- the developer is on a trusted/home LAN;
|
|
53
|
+
- Staging or Production exists;
|
|
54
|
+
- Staging and Production use different physical machines;
|
|
55
|
+
- deployment uses SSH;
|
|
56
|
+
- a remote target exists;
|
|
57
|
+
- a managed provider is supported;
|
|
58
|
+
- a deferred binding is broken configuration.
|
|
59
|
+
|
|
60
|
+
A custom name such as `prod-east` remains Production when its resolved purpose is Production.
|
|
61
|
+
|
|
62
|
+
## 2. Reuse fresh setup-time environment proof
|
|
63
|
+
|
|
64
|
+
When `/setup` already completed a disposable environment proof from this workstation for the exact environment/target and material topology/trust/platform evidence is unchanged, reuse that proof.
|
|
65
|
+
|
|
66
|
+
It may establish:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
verified target access
|
|
70
|
+
ready shared host platform
|
|
71
|
+
workstation-mediated exact-image transfer
|
|
72
|
+
remote application-runtime mechanics
|
|
73
|
+
HTTP health verification
|
|
74
|
+
disposable probe cleanup
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
It does not prove final application artifact identity, persistence/migration behavior, route/exposure, project secrets, application health contract, or release policy.
|
|
78
|
+
|
|
79
|
+
If topology, target binding, host trust, platform state, or another material fact changes, treat the proof as stale and reverify the affected prerequisite.
|
|
80
|
+
|
|
81
|
+
## 3. Placement branches
|
|
82
|
+
|
|
83
|
+
### A. Workstation placement
|
|
84
|
+
|
|
85
|
+
For a supported `workstation-container` topology, inspect local Docker/runtime, immutable application image when available, ports/health, collision ownership, persistence prerequisites, and resolved Production policy.
|
|
86
|
+
|
|
87
|
+
Current reusable topology remains:
|
|
88
|
+
|
|
89
|
+
```text
|
|
90
|
+
placement: workstation
|
|
91
|
+
isolation: container
|
|
92
|
+
exposure: loopback
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Do **not** ask for hostname, SSH user, SSH port, host keys, Caddy routes, or target profiles for a workstation environment. Current reusable workstation deployment is loopback-only and must not widen it to LAN/public exposure.
|
|
96
|
+
|
|
97
|
+
A ready result may be:
|
|
98
|
+
|
|
99
|
+
```text
|
|
100
|
+
ENVIRONMENT READY TO DEPLOY
|
|
101
|
+
|
|
102
|
+
Environment: Demo
|
|
103
|
+
Purpose: demo
|
|
104
|
+
Placement: workstation
|
|
105
|
+
Docker: READY
|
|
106
|
+
Application-specific blockers: NONE
|
|
107
|
+
|
|
108
|
+
POST-DEPLOY VALIDATION PENDING
|
|
109
|
+
|
|
110
|
+
NEXT
|
|
111
|
+
/deploy demo
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### B. Remote-target placement
|
|
115
|
+
|
|
116
|
+
Keep these separate:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
named environment
|
|
120
|
+
→ logical target binding
|
|
121
|
+
→ current hostname or IP address
|
|
122
|
+
→ SSH/deployment user
|
|
123
|
+
→ independently verified host identity
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
The current address is connectivity information, not trusted identity. Preserve strict host identity verification and stop when unknown/changed host identity fails closed.
|
|
127
|
+
|
|
128
|
+
Before asking questions, inspect existing non-secret profile/target evidence. Classify the workstation's target setup as `CONFIGURED`, `PARTIAL`, or `NOT CONFIGURED` and ask only for the smallest missing fact.
|
|
129
|
+
|
|
130
|
+
Only after explicit `[REMOTE READ ONLY]` authorization under the installed/repository contract may new remote checks occur. Never scan/select another host or weaken host-key verification merely to get a green result.
|
|
131
|
+
|
|
132
|
+
### C. Managed-service placement
|
|
133
|
+
|
|
134
|
+
Use only a repository/catalog-provided provider adapter. If none exists, report:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
DEPLOYMENT BINDING NOT YET SUPPORTED
|
|
138
|
+
Status: CATALOG GAP / PLANNED
|
|
139
|
+
No provider credentials requested.
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
Do not provision infrastructure, guess a provider, or invent provider commands from general model knowledge.
|
|
143
|
+
|
|
144
|
+
### D. Deferred placement
|
|
145
|
+
|
|
146
|
+
Deferred placement/binding is intentional state:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
DEPLOYMENT INTENTIONALLY DEFERRED
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
Do not mark workspace readiness failed. Route to `/setup <environment>` or `/setup remote` if the developer later wants to bind it.
|
|
153
|
+
|
|
154
|
+
## 4. Shared failure domains / colocated environments
|
|
155
|
+
|
|
156
|
+
Multiple logical environments may share physical failure domains, but they remain independently targetable and independently authorized. If environments share physical failure, state it explicitly.
|
|
157
|
+
|
|
158
|
+
Colocation does not demonstrate host-level Production isolation. Never infer readiness for one logical environment from another merely because they share hardware.
|
|
159
|
+
|
|
160
|
+
## 5. State-driven cadence
|
|
161
|
+
|
|
162
|
+
Normal cadence is:
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
select exact project-defined environment
|
|
166
|
+
→ read current topology
|
|
167
|
+
→ reuse fresh environment-proof evidence when valid
|
|
168
|
+
→ rediscover placement-relevant local state
|
|
169
|
+
→ verify/repair only missing prerequisites under exact gates
|
|
170
|
+
→ ENVIRONMENT READY TO DEPLOY
|
|
171
|
+
→ /deploy <environment>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
For remote placement, reuse valid existing target access rather than creating duplicate credentials simply because another POC/environment uses the same machine.
|
|
175
|
+
|
|
176
|
+
## 6. Read-only status
|
|
177
|
+
|
|
178
|
+
`/deployment-readiness status [environment]` performs no remote writes. Without a specific environment, summarize all known environments from project topology, including Placement and deferred state where evidenced.
|
|
179
|
+
|
|
180
|
+
Example:
|
|
181
|
+
|
|
182
|
+
```text
|
|
183
|
+
Environment Purpose Placement This-workstation proof Readiness
|
|
184
|
+
Demo demo remote-target PROVEN READY
|
|
185
|
+
Staging staging remote-target NOT PROVEN PARTIAL
|
|
186
|
+
prod-east production remote-target PROVEN READY
|
|
187
|
+
Archive demo deferred NOT APPLICABLE DEFERRED
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
Do not manufacture target/provider facts for deferred environments.
|
|
191
|
+
|
|
192
|
+
## 7. Bounded readiness writes
|
|
193
|
+
|
|
194
|
+
A missing prerequisite is not authorization to change it. Use the repository/tool's exact authorization phrase for key/trust/platform/provider mutations.
|
|
195
|
+
|
|
196
|
+
Do not hide the real application deployment inside readiness. Readiness may rely on the disposable setup-time proof, but it must not start/replace the real project runtime, register the final application route, perform release-specific migration, or claim project-release smoke validation.
|
|
197
|
+
|
|
198
|
+
## 8. Pre-deploy versus post-deploy evidence
|
|
199
|
+
|
|
200
|
+
Readiness asks whether `/deploy <name>` can safely perform the real application deployment now.
|
|
201
|
+
|
|
202
|
+
Pre-deploy evidence may include topology, adapter availability, binding, local/remote identity and access, target platform, fresh proof evidence, artifact policy, route/port availability, persistence/backup/migration prerequisites, lock/recovery capability, and Production-specific safeguards.
|
|
203
|
+
|
|
204
|
+
Do not require first-deployment live route, deployed-release identity, application health, or smoke evidence before the application has ever been deployed. Those are post-deploy validation evidence owned by `/deploy`.
|
|
205
|
+
|
|
206
|
+
## 9. Production policy
|
|
207
|
+
|
|
208
|
+
Production is logical policy, not hardware count and not the literal name `production`. A named environment such as `prod-east` with purpose `production` must retain Production readiness and later deployment gates.
|
|
209
|
+
|
|
210
|
+
Readiness never authorizes Production application deployment.
|
|
211
|
+
|
|
212
|
+
## 10. Final handoff
|
|
213
|
+
|
|
214
|
+
When pre-deploy requirements are satisfied:
|
|
215
|
+
|
|
216
|
+
```text
|
|
217
|
+
ENVIRONMENT READY TO DEPLOY
|
|
218
|
+
|
|
219
|
+
Environment: <exact name>
|
|
220
|
+
Purpose: <purpose>
|
|
221
|
+
Placement: <...>
|
|
222
|
+
Binding: VERIFIED / LOCAL / provider-specific
|
|
223
|
+
This-workstation environment proof: PROVEN / NOT REQUIRED / NOT AVAILABLE
|
|
224
|
+
Platform prerequisites: READY
|
|
225
|
+
Application-specific prerequisites: READY / <remaining items>
|
|
226
|
+
Security blockers: NONE
|
|
227
|
+
|
|
228
|
+
POST-DEPLOY VALIDATION PENDING
|
|
229
|
+
|
|
230
|
+
NEXT
|
|
231
|
+
/deploy <exact-name>
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
This is evidence, not deployment authorization. `/deploy` owns the real application write gate for the exact named environment, resolved Production classification, placement, target/provider, artifact, and current evidence.
|
|
@@ -0,0 +1,231 @@
|
|
|
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.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs
|
|
3
|
+
description: "Open or inspect the repository's current Project Forge project documentation site, ownership/authority map, and DB/System evidence freshness without creating a new workflow gate."
|
|
4
|
+
argument-hint: "[open|check|build]"
|
|
5
|
+
user-invocable: true
|
|
6
|
+
disable-model-invocation: true
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Project Docs
|
|
10
|
+
|
|
11
|
+
`/docs` is the front door to repository documentation. It is read-only with respect to project prose unless the human explicitly asks to edit documentation.
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Use `/docs` to:
|
|
16
|
+
|
|
17
|
+
- open the local project documentation site;
|
|
18
|
+
- inspect documentation ownership/authority;
|
|
19
|
+
- find the correct product, architecture, engineering, operations, learning, or ADR document;
|
|
20
|
+
- see whether disposable System/DB evidence views are current, stale, unknown, or absent;
|
|
21
|
+
- keep `/db-lab` and `/system-lab` easy to discover.
|
|
22
|
+
|
|
23
|
+
Markdown remains canonical. The site is a generated local projection.
|
|
24
|
+
|
|
25
|
+
## Default behavior
|
|
26
|
+
|
|
27
|
+
When invoked without a mode:
|
|
28
|
+
|
|
29
|
+
1. Read `docs/project-forge-docs.json` when present.
|
|
30
|
+
2. Verify the documentation viewer exists at `tools/project-forge-docs/docs-site.py`.
|
|
31
|
+
3. If it exists, use the repository-local Python/runtime convention to run:
|
|
32
|
+
|
|
33
|
+
```text
|
|
34
|
+
python tools/project-forge-docs/docs-site.py serve --root .
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
The viewer binds to loopback only and writes disposable output under `.project-forge/`.
|
|
38
|
+
|
|
39
|
+
If the tool is unavailable, do not invent installation support. Fall back to a concise documentation map from repository Markdown and mention that the local viewer is unavailable in the current accepted baseline.
|
|
40
|
+
|
|
41
|
+
## Modes
|
|
42
|
+
|
|
43
|
+
### `/docs open`
|
|
44
|
+
|
|
45
|
+
Equivalent to the default behavior.
|
|
46
|
+
|
|
47
|
+
### `/docs check`
|
|
48
|
+
|
|
49
|
+
Do not open a browser. Inspect:
|
|
50
|
+
|
|
51
|
+
- `docs/project-forge-docs.json` validity when present;
|
|
52
|
+
- missing listed documents;
|
|
53
|
+
- ownership/authority declarations;
|
|
54
|
+
- current Git commit;
|
|
55
|
+
- System Lab cache freshness when evidence exists;
|
|
56
|
+
- DB Lab cache availability/freshness only when evidence supports a conclusion.
|
|
57
|
+
|
|
58
|
+
Do not treat a missing optional Project Forge-managed document as project corruption when Bootstrap generation and reusable-package application are still distinct phases.
|
|
59
|
+
|
|
60
|
+
### `/docs build`
|
|
61
|
+
|
|
62
|
+
Generate the disposable site without serving it:
|
|
63
|
+
|
|
64
|
+
```text
|
|
65
|
+
python tools/project-forge-docs/docs-site.py build --root . --out .project-forge/docs-site
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This is a local derived artifact and should not normally be committed.
|
|
69
|
+
|
|
70
|
+
## Current-by-default evidence
|
|
71
|
+
|
|
72
|
+
System Lab can reconstruct architecture from repository evidence. The docs viewer may best-effort prepare the current System Lab projection when it starts and the tool is present.
|
|
73
|
+
|
|
74
|
+
Database Lab is stricter: do not guess a database path. Show an existing DB projection or hand off to `/db-lab`; automatic generation is allowed only when a safe local development/test database path is already explicit.
|
|
75
|
+
|
|
76
|
+
Never create a database, apply migrations, mutate application data, or inspect Production merely to populate documentation.
|
|
77
|
+
|
|
78
|
+
## Ownership
|
|
79
|
+
|
|
80
|
+
Respect `docs/project-forge-docs.json`:
|
|
81
|
+
|
|
82
|
+
- `project` — project-owned prose and ADRs;
|
|
83
|
+
- `project-forge` — reusable managed reference/process material;
|
|
84
|
+
- `generated-evidence` — disposable projections.
|
|
85
|
+
|
|
86
|
+
Do not silently rewrite `project` documents during `/docs` just because code changed. Surface likely documentation impact instead.
|
|
87
|
+
|
|
88
|
+
## ADR behavior
|
|
89
|
+
|
|
90
|
+
If current evidence reveals a consequential architecture choice that lacks a durable decision record, `/docs` may recommend creating an ADR from `docs/templates/ADR_TEMPLATE.md`.
|
|
91
|
+
|
|
92
|
+
Recommendation is not approval. Do not invent or accept the decision for the human.
|
|
93
|
+
|
|
94
|
+
## Output when not opening the site
|
|
95
|
+
|
|
96
|
+
Prefer a compact result such as:
|
|
97
|
+
|
|
98
|
+
```text
|
|
99
|
+
PROJECT DOCS
|
|
100
|
+
|
|
101
|
+
Entry: PROJECT_BRIEF.md
|
|
102
|
+
Product authority: docs/product/PRODUCT_BRIEF.md
|
|
103
|
+
Work-item authority: docs/work-items/...
|
|
104
|
+
Current commit: abc1234
|
|
105
|
+
|
|
106
|
+
System evidence: CURRENT / STALE / NOT GENERATED
|
|
107
|
+
Database evidence: CURRENT / STALE / AVAILABLE-FRESHNESS-UNKNOWN / NOT GENERATED
|
|
108
|
+
|
|
109
|
+
Useful:
|
|
110
|
+
- /system-lab
|
|
111
|
+
- /db-lab
|
|
112
|
+
- /code-walkthrough
|
|
113
|
+
- /learning-review
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Documentation status is not a delivery gate unless an approved work item explicitly requires documentation as acceptance evidence.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: grill-me
|
|
3
|
+
description: Continuously challenge requirements, architecture, plans, implementation assumptions, or work-item coverage without editing files.
|
|
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 Me
|
|
10
|
+
|
|
11
|
+
Purpose: improve reasoning by challenging the highest-value uncertainty without adding process overhead.
|
|
12
|
+
|
|
13
|
+
## Rules
|
|
14
|
+
|
|
15
|
+
- Read `.github/project-forge-workspace.json` when present and only the minimum relevant context.
|
|
16
|
+
- Ask one material question at a time.
|
|
17
|
+
- Explain briefly why the question matters.
|
|
18
|
+
- Challenge vague answers, hidden scope, contradictions, and weak assumptions.
|
|
19
|
+
- Recommend an answer or 2–3 options with tradeoffs when useful.
|
|
20
|
+
- Do not edit files.
|
|
21
|
+
- Do not invoke subagents.
|
|
22
|
+
- Do not create artifacts merely because grilling occurred.
|
|
23
|
+
- Do not claim external Jira/Issue content was read unless it was actually available.
|
|
24
|
+
|
|
25
|
+
Challenge areas may include:
|
|
26
|
+
- missing acceptance behavior,
|
|
27
|
+
- cross-work-item/Epic gaps,
|
|
28
|
+
- domain/business rules,
|
|
29
|
+
- lifecycle/state transitions,
|
|
30
|
+
- validation/failure behavior,
|
|
31
|
+
- data integrity,
|
|
32
|
+
- concurrency/transactions,
|
|
33
|
+
- destructive/reversible actions,
|
|
34
|
+
- architecture assumptions,
|
|
35
|
+
- security/operational risk,
|
|
36
|
+
- testability.
|
|
37
|
+
|
|
38
|
+
## Cadence
|
|
39
|
+
|
|
40
|
+
```text
|
|
41
|
+
QUESTION
|
|
42
|
+
<one focused question>
|
|
43
|
+
|
|
44
|
+
WHY IT MATTERS
|
|
45
|
+
<short explanation>
|
|
46
|
+
|
|
47
|
+
RECOMMENDATION
|
|
48
|
+
<recommended answer/options when useful>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
After the human answers:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
analyze/challenge the answer
|
|
55
|
+
→ explain implications when useful
|
|
56
|
+
→ ask the next material question
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Do not ask `Do you want to continue?` after each answer. The human already entered a continuous grilling mode.
|
|
60
|
+
|
|
61
|
+
Stop only when:
|
|
62
|
+
- the human says stop/done/pause,
|
|
63
|
+
- no material issues remain,
|
|
64
|
+
- a true scope/decision/action gate appears,
|
|
65
|
+
- the human switches workflow.
|
|
66
|
+
|
|
67
|
+
## Natural completion
|
|
68
|
+
|
|
69
|
+
Summarize once:
|
|
70
|
+
- decisions strengthened,
|
|
71
|
+
- unresolved issues,
|
|
72
|
+
- recommended next workflow.
|
|
73
|
+
|
|
74
|
+
Typical next workflows:
|
|
75
|
+
- `/grill-with-docs` to reconcile resolved decisions,
|
|
76
|
+
- `/refine-requirements` for systematic detailed coverage,
|
|
77
|
+
- `/start-work` when the item is ready.
|