@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.
Files changed (117) hide show
  1. package/README.md +134 -2
  2. package/assets/components.json +33 -0
  3. package/assets/core/distribution.json +66 -0
  4. package/assets/deployment/distribution.json +54 -0
  5. package/assets/generated/ASSEMBLY.json +557 -0
  6. package/assets/generated/core/core/agents/coach.agent.md +69 -0
  7. package/assets/generated/core/core/agents/reviewer.agent.md +85 -0
  8. package/assets/generated/core/core/instructions/project-forge-docs.instructions.md +45 -0
  9. package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +79 -0
  10. package/assets/generated/core/core/learning/CODING_DRILLS.md +35 -0
  11. package/assets/generated/core/core/learning/DIAGRAM_GUIDE.md +59 -0
  12. package/assets/generated/core/core/learning/ENGINEERING_LEARNING_WORKBOOK.md +108 -0
  13. package/assets/generated/core/core/learning/LEARNING_MAP.md +108 -0
  14. package/assets/generated/core/core/learning/LEARNING_PROGRESS.md +39 -0
  15. package/assets/generated/core/core/learning/RESOURCE_CATALOG.md +25 -0
  16. package/assets/generated/core/core/learning/SQL_DRILLS.md +90 -0
  17. package/assets/generated/core/core/learning/SYSTEM_DESIGN_DRILLS.md +301 -0
  18. package/assets/generated/core/core/process/COACHING_GUIDE.md +92 -0
  19. package/assets/generated/core/core/process/DATABASE_LEARNING_WORKBENCH.md +397 -0
  20. package/assets/generated/core/core/process/DEPLOYMENT_ENABLEMENT.md +166 -0
  21. package/assets/generated/core/core/process/GUIDED_NEXT_STEPS.md +48 -0
  22. package/assets/generated/core/core/process/HUMAN_GATES.md +83 -0
  23. package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +64 -0
  24. package/assets/generated/core/core/process/PROJECT_DOCUMENTATION_FRAMEWORK.md +326 -0
  25. package/assets/generated/core/core/process/PROJECT_FORGE_ENGINEERING_GUIDE.md +308 -0
  26. package/assets/generated/core/core/process/PR_WORKFLOW.md +55 -0
  27. package/assets/generated/core/core/process/SETUP_ACCEPTANCE_CHECKLIST.md +72 -0
  28. package/assets/generated/core/core/process/SYSTEM_DESIGN_LEARNING_WORKBENCH.md +520 -0
  29. package/assets/generated/core/core/process/WORK_ITEM_MODEL.md +56 -0
  30. package/assets/generated/core/core/skills/cleanup-branches/SKILL.md +190 -0
  31. package/assets/generated/core/core/skills/coach/SKILL.md +174 -0
  32. package/assets/generated/core/core/skills/code-walkthrough/SKILL.md +197 -0
  33. package/assets/generated/core/core/skills/core-sync/SKILL.md +178 -0
  34. package/assets/generated/core/core/skills/db-lab/SKILL.md +245 -0
  35. package/assets/generated/core/core/skills/define-feature/SKILL.md +144 -0
  36. package/assets/generated/core/core/skills/deliver/SKILL.md +397 -0
  37. package/assets/generated/core/core/skills/deploy/SKILL.md +188 -0
  38. package/assets/generated/core/core/skills/deployment-readiness/SKILL.md +234 -0
  39. package/assets/generated/core/core/skills/developer-env-mode/SKILL.md +231 -0
  40. package/assets/generated/core/core/skills/docs/SKILL.md +116 -0
  41. package/assets/generated/core/core/skills/grill-me/SKILL.md +77 -0
  42. package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +90 -0
  43. package/assets/generated/core/core/skills/learning-review/SKILL.md +90 -0
  44. package/assets/generated/core/core/skills/next-step/SKILL.md +221 -0
  45. package/assets/generated/core/core/skills/progress/SKILL.md +207 -0
  46. package/assets/generated/core/core/skills/project-forge-update/SKILL.md +228 -0
  47. package/assets/generated/core/core/skills/pull-latest/SKILL.md +166 -0
  48. package/assets/generated/core/core/skills/refine-requirements/SKILL.md +207 -0
  49. package/assets/generated/core/core/skills/setup/SKILL.md +362 -0
  50. package/assets/generated/core/core/skills/start-work/SKILL.md +190 -0
  51. package/assets/generated/core/core/skills/system-lab/SKILL.md +333 -0
  52. package/assets/generated/core/core/skills/tear-down/SKILL.md +140 -0
  53. package/assets/generated/core/core/skills/upstream-fix/SKILL.md +221 -0
  54. package/assets/generated/core/core/skills/wait-what/SKILL.md +86 -0
  55. package/assets/generated/core/core/templates/ADR_TEMPLATE.md +41 -0
  56. package/assets/generated/core/core/templates/FEATURE_BRIEF_TEMPLATE.md +27 -0
  57. package/assets/generated/core/core/templates/PRODUCT_BRIEF_TEMPLATE.md +27 -0
  58. package/assets/generated/core/core/templates/PULL_REQUEST_TEMPLATE.md +37 -0
  59. package/assets/generated/core/core/templates/REQUIREMENTS_TEMPLATE.md +17 -0
  60. package/assets/generated/core/profiles/greenfield/project-forge-workspace.json +12 -0
  61. package/assets/generated/core/tools/db_lab/sqlite_workbench.py +463 -0
  62. package/assets/generated/core/tools/docs_site/docs_site.py +512 -0
  63. package/assets/generated/core/tools/package/check_baseline.py +102 -0
  64. package/assets/generated/core/tools/package/check_upstream.py +171 -0
  65. package/assets/generated/core/tools/system_lab/system_workbench.py +243 -0
  66. package/assets/generated/deployment/distribution/project-forge-deploy.py +8 -0
  67. package/assets/generated/deployment/docs/DEVELOPER_ENVIRONMENTS.md +335 -0
  68. package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +95 -0
  69. package/assets/generated/deployment/docs/WORKSPACE_INSTANCES.md +154 -0
  70. package/assets/generated/deployment/docs/images/developer-environment-journey.svg +56 -0
  71. package/assets/generated/deployment/docs/images/personal-environment-architecture.svg +54 -0
  72. package/assets/generated/deployment/docs/images/poc-environment-model.svg +61 -0
  73. package/assets/generated/deployment/src/project_forge_deployment/__init__.py +3 -0
  74. package/assets/generated/deployment/src/project_forge_deployment/__main__.py +3 -0
  75. package/assets/generated/deployment/src/project_forge_deployment/app_cli.py +163 -0
  76. package/assets/generated/deployment/src/project_forge_deployment/app_runtime.py +455 -0
  77. package/assets/generated/deployment/src/project_forge_deployment/app_runtime_remote.py +416 -0
  78. package/assets/generated/deployment/src/project_forge_deployment/app_runtime_workstation.py +136 -0
  79. package/assets/generated/deployment/src/project_forge_deployment/box_platform.py +208 -0
  80. package/assets/generated/deployment/src/project_forge_deployment/box_platform_assets.py +100 -0
  81. package/assets/generated/deployment/src/project_forge_deployment/box_platform_remote.py +271 -0
  82. package/assets/generated/deployment/src/project_forge_deployment/cli.py +437 -0
  83. package/assets/generated/deployment/src/project_forge_deployment/doctor.py +121 -0
  84. package/assets/generated/deployment/src/project_forge_deployment/entrypoint.py +37 -0
  85. package/assets/generated/deployment/src/project_forge_deployment/environment_cli.py +271 -0
  86. package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +228 -0
  87. package/assets/generated/deployment/src/project_forge_deployment/errors.py +5 -0
  88. package/assets/generated/deployment/src/project_forge_deployment/home_lab.py +328 -0
  89. package/assets/generated/deployment/src/project_forge_deployment/image_transfer.py +105 -0
  90. package/assets/generated/deployment/src/project_forge_deployment/keys.py +171 -0
  91. package/assets/generated/deployment/src/project_forge_deployment/local_cli.py +189 -0
  92. package/assets/generated/deployment/src/project_forge_deployment/local_runtime.py +526 -0
  93. package/assets/generated/deployment/src/project_forge_deployment/local_spec.py +82 -0
  94. package/assets/generated/deployment/src/project_forge_deployment/local_sqlite.py +205 -0
  95. package/assets/generated/deployment/src/project_forge_deployment/portable_profile.py +181 -0
  96. package/assets/generated/deployment/src/project_forge_deployment/profile_migration.py +70 -0
  97. package/assets/generated/deployment/src/project_forge_deployment/profile_repository.py +348 -0
  98. package/assets/generated/deployment/src/project_forge_deployment/profiles.py +204 -0
  99. package/assets/generated/deployment/src/project_forge_deployment/registry_access.py +114 -0
  100. package/assets/generated/deployment/src/project_forge_deployment/registry_cli.py +51 -0
  101. package/assets/generated/deployment/src/project_forge_deployment/route_registry.py +367 -0
  102. package/assets/generated/deployment/src/project_forge_deployment/route_registry_remote.py +443 -0
  103. package/assets/generated/deployment/src/project_forge_deployment/security.py +290 -0
  104. package/assets/generated/deployment/src/project_forge_deployment/sqlite_adapter.py +335 -0
  105. package/assets/generated/deployment/src/project_forge_deployment/sqlite_adapter_remote.py +340 -0
  106. package/assets/generated/deployment/src/project_forge_deployment/sqlite_cli.py +86 -0
  107. package/assets/generated/deployment/src/project_forge_deployment/sqlite_import_recovery.py +437 -0
  108. package/assets/generated/deployment/src/project_forge_deployment/ssh.py +119 -0
  109. package/assets/generated/deployment/src/project_forge_deployment/teardown.py +300 -0
  110. package/assets/generated/deployment/src/project_forge_deployment/teardown_cli.py +139 -0
  111. package/assets/generated/deployment/src/project_forge_deployment/teardown_remote.py +100 -0
  112. package/assets/generated/deployment/src/project_forge_deployment/trust.py +278 -0
  113. package/bin/project-forge.mjs +9 -0
  114. package/package.json +31 -4
  115. package/src/cli.mjs +150 -0
  116. package/src/engine.mjs +243 -0
  117. 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.