@warpgogol/forge 1.2.2 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -1
- package/README.md +55 -89
- package/README.uk.md +55 -89
- package/package.json +1 -1
- package/profiles/forge-shell.yaml +122 -1
- package/profiles/godot-csharp.yaml +467 -10
- package/profiles/phaser-turborepo.yaml +139 -3
- package/skills/_shared/fo-pipeline-conventions.md +55 -0
- package/skills/fo/fo-doc-audit/SKILL.md +2 -2
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +2 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +7 -3
- package/skills/fo/fo-idea-implement/SKILL.md +50 -46
- package/skills/fo/fo-session-retro/SKILL.md +2 -2
- package/src/onboarding/templates/behavioral-layer-core.md +4 -5
- package/src/onboarding/templates/root-agents-business.md +1 -1
- package/src/onboarding/templates/root-agents-creative.md +1 -1
- package/profiles/astro-typescript-turborepo.yaml +0 -231
|
@@ -7,15 +7,18 @@ detect:
|
|
|
7
7
|
- package.json
|
|
8
8
|
workspace:
|
|
9
9
|
dirs:
|
|
10
|
-
-
|
|
10
|
+
- apps
|
|
11
11
|
- packages
|
|
12
12
|
- services
|
|
13
13
|
- scripts
|
|
14
|
+
- tools
|
|
15
|
+
- missions
|
|
16
|
+
- systems-cache
|
|
14
17
|
files:
|
|
15
18
|
- path: pnpm-workspace.yaml
|
|
16
19
|
content: |
|
|
17
20
|
packages:
|
|
18
|
-
- "
|
|
21
|
+
- "apps/*"
|
|
19
22
|
- "packages/*"
|
|
20
23
|
- "services/*"
|
|
21
24
|
- path: turbo.json
|
|
@@ -201,10 +204,143 @@ workspace:
|
|
|
201
204
|
}
|
|
202
205
|
|
|
203
206
|
console.log(`Cleaned ${toDelete.length} directories.`);
|
|
207
|
+
- path: tools/kernel.config.ts
|
|
208
|
+
content: |
|
|
209
|
+
import { defineKernelConfig } from "@warpgogol/werkstatt/kernel/types";
|
|
210
|
+
import { werkstattGamePlugin } from "@warpgogol/werkstatt-game";
|
|
211
|
+
|
|
212
|
+
export default defineKernelConfig({
|
|
213
|
+
name: "__PROJECT_NAME__",
|
|
214
|
+
description: "__PROJECT_NAME__ workshop",
|
|
215
|
+
moduleLoaders: {
|
|
216
|
+
"forge-core": async () => (await import("@warpgogol/forge/os/core")).forgeCoreModule,
|
|
217
|
+
"forge-rfc": async () => (await import("@warpgogol/forge/os/rfc-module")).forgeRfcModule,
|
|
218
|
+
"forge-adr": async () => (await import("@warpgogol/forge/os/adr-module")).forgeAdrModule,
|
|
219
|
+
"forge-plan": async () => (await import("@warpgogol/forge/os/plan-module")).forgePlanModule,
|
|
220
|
+
"forge-audit": async () => (await import("@warpgogol/forge/os/audit-module")).forgeAuditModule,
|
|
221
|
+
"forge-compass": async () => (await import("@warpgogol/forge/os/compass")).forgeCompassModule,
|
|
222
|
+
"forge-naming": async () => (await import("@warpgogol/forge/os/naming-module")).forgeNamingModule,
|
|
223
|
+
"forge-workflow": async () => (await import("@warpgogol/forge/os/workflow-module")).forgeWorkflowModule,
|
|
224
|
+
"forge-session": async () => (await import("@warpgogol/forge/os/session-module")).forgeSessionModule,
|
|
225
|
+
"forge-mission": async () => (await import("@warpgogol/forge/os/mission-module")).forgeMissionModule,
|
|
226
|
+
"forge-spec": async () => (await import("@warpgogol/forge/os/spec-module")).forgeSpecModule,
|
|
227
|
+
"forge-exploration": async () => (await import("@warpgogol/forge/os/exploration")).forgeExplorationModule,
|
|
228
|
+
"forge-program": async () => (await import("@warpgogol/forge/os/program")).forgeProgramModule,
|
|
229
|
+
"forge-werkstatt": async () => (await import("@warpgogol/forge/os/werkstatt")).forgeWerkstattModule,
|
|
230
|
+
mission: async () => (await import("@warpgogol/werkstatt/mission-module")).createMissionModule(),
|
|
231
|
+
sternsystem: async () => (await import("@warpgogol/werkstatt/sternsystem-module")).createSternsystemModule(),
|
|
232
|
+
bordbuch: async () => (await import("@warpgogol/werkstatt/bordbuch-module")).createBordbuchModule(),
|
|
233
|
+
"artifact-store": async () => (await import("@warpgogol/werkstatt/artifact-store-module")).createArtifactStoreModule(),
|
|
234
|
+
release: async () => (await import("@warpgogol/werkstatt/release-module")).createReleaseModule(),
|
|
235
|
+
leitstand: async () => (await import("@warpgogol/werkstatt/leitstand-module")).createLeitstandModule(),
|
|
236
|
+
notausgang: async () => (await import("@warpgogol/werkstatt/notausgang-module")).createNotausgangModule(),
|
|
237
|
+
evidence: async () => (await import("@warpgogol/werkstatt/evidence-module")).createEvidenceModule(),
|
|
238
|
+
"werkstatt-plugin": async () => (await import("@warpgogol/werkstatt/os/werkstatt-plugin-module")).forgeWerkstattPluginModule,
|
|
239
|
+
"werkstatt-autonomy": async () => (await import("@warpgogol/werkstatt/os/werkstatt-autonomy-module")).werkstattAutonomyModule,
|
|
240
|
+
"__PROJECT_NAME__-plugin": async () => werkstattGamePlugin,
|
|
241
|
+
},
|
|
242
|
+
});
|
|
243
|
+
- path: .npmrc
|
|
244
|
+
content: |
|
|
245
|
+
# @warpgogol scoped registry — replace YOUR_NPM_TOKEN with a valid npm read token
|
|
246
|
+
@warpgogol:registry=https://registry.npmjs.org/
|
|
247
|
+
//registry.npmjs.org/:_authToken=YOUR_NPM_TOKEN
|
|
248
|
+
# Auto-approve build scripts so operators aren't prompted during install
|
|
249
|
+
dangerously-allow-all-builds=true
|
|
250
|
+
- path: eslint.config.js
|
|
251
|
+
content: |
|
|
252
|
+
export default [
|
|
253
|
+
{
|
|
254
|
+
rules: {},
|
|
255
|
+
},
|
|
256
|
+
];
|
|
257
|
+
- path: .prettierrc.mjs
|
|
258
|
+
content: |
|
|
259
|
+
export default {
|
|
260
|
+
semi: true,
|
|
261
|
+
singleQuote: false,
|
|
262
|
+
trailingComma: "all",
|
|
263
|
+
printWidth: 100,
|
|
264
|
+
tabWidth: 2,
|
|
265
|
+
};
|
|
266
|
+
- path: .gitattributes
|
|
267
|
+
content: |
|
|
268
|
+
# No LFS patterns for this stack
|
|
269
|
+
- path: hooks/pre-commit
|
|
270
|
+
content: |
|
|
271
|
+
#!/bin/sh
|
|
272
|
+
# Platform-scope pre-commit guard
|
|
273
|
+
# Runs werkstatt autonomy and plugin validation before commits
|
|
274
|
+
echo "Pre-commit: running platform checks..."
|
|
275
|
+
pnpm exec werkstatt run werkstatt.autonomy.validate || exit 1
|
|
276
|
+
pnpm exec werkstatt run werkstatt.plugin.validate || exit 1
|
|
277
|
+
- path: systems-cache/.gitkeep
|
|
278
|
+
content: |
|
|
279
|
+
# Sternsystem cache directory (RFC-0790)
|
|
280
|
+
# Per-system config and state files live in systems-cache/<id>/
|
|
281
|
+
- path: missions/.gitkeep
|
|
282
|
+
content: ""
|
|
283
|
+
- path: .forge/pinned.yaml
|
|
284
|
+
content: |
|
|
285
|
+
# Pinned foundation files (DNA-62, RFC-0733)
|
|
286
|
+
# Protect mode: warns on delete/move. Freeze mode: blocks modify too.
|
|
287
|
+
entries:
|
|
288
|
+
- path: tools/kernel.config.ts
|
|
289
|
+
mode: protect
|
|
290
|
+
- path: forge.yaml
|
|
291
|
+
mode: protect
|
|
292
|
+
- path: pnpm-workspace.yaml
|
|
293
|
+
mode: protect
|
|
294
|
+
- path: turbo.json
|
|
295
|
+
mode: protect
|
|
296
|
+
- path: tsconfig.base.json
|
|
297
|
+
mode: protect
|
|
298
|
+
- path: systems-cache/.gitkeep
|
|
299
|
+
mode: protect
|
|
300
|
+
- path: README.md
|
|
301
|
+
content: |
|
|
302
|
+
# __PROJECT_NAME__
|
|
303
|
+
|
|
304
|
+
A Warpgogol workshop powered by the Werkstatt engine and the @warpgogol/werkstatt-game plugin.
|
|
305
|
+
|
|
306
|
+
## Prerequisites
|
|
307
|
+
|
|
308
|
+
- Node.js 24+
|
|
309
|
+
- pnpm 10+
|
|
310
|
+
|
|
311
|
+
## Setup
|
|
312
|
+
|
|
313
|
+
### 1. Configure npm token
|
|
314
|
+
|
|
315
|
+
This workshop depends on private @warpgogol packages. Edit `.npmrc` and replace `YOUR_NPM_TOKEN` with a valid npm read token:
|
|
316
|
+
|
|
317
|
+
```sh
|
|
318
|
+
sed -i 's/YOUR_NPM_TOKEN/your_actual_token/' .npmrc
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### 2. Install dependencies
|
|
322
|
+
|
|
323
|
+
```sh
|
|
324
|
+
pnpm install
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 3. Verify the workshop
|
|
328
|
+
|
|
329
|
+
```sh
|
|
330
|
+
pnpm exec werkstatt run forge.doctor
|
|
331
|
+
pnpm exec werkstatt run werkstatt.plugin.validate
|
|
332
|
+
pnpm exec werkstatt run werkstatt.autonomy.validate
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## Stack
|
|
336
|
+
|
|
337
|
+
- Engine: @warpgogol/werkstatt
|
|
338
|
+
- Plugin: @warpgogol/werkstatt-game
|
|
339
|
+
- Stack profile: phaser-turborepo
|
|
204
340
|
install:
|
|
205
341
|
- pnpm add -D typescript turbo @warpgogol/forge @warpgogol/werkstatt @warpgogol/werkstatt-shared @warpgogol/werkstatt-game prettier
|
|
206
342
|
firstWorkspace:
|
|
207
|
-
path:
|
|
343
|
+
path: apps/my-game
|
|
208
344
|
files:
|
|
209
345
|
- path: package.json
|
|
210
346
|
content: |
|
|
@@ -164,6 +164,61 @@ When the operator says any session-end trigger phrase (e.g. "Завершаем
|
|
|
164
164
|
|
|
165
165
|
The `fo-session-retro` skill IS the session-end protocol — it runs transcript save, temp cleanup, docs.archive, clean tree check, RFC verification, insight triage, and produces the closing block. Do not substitute it with a manual summary. The closing block comes from `fo-session-retro`, not from the agent directly.
|
|
166
166
|
|
|
167
|
+
## Pre-pipeline checkpoint
|
|
168
|
+
|
|
169
|
+
When a pipeline skill (`fo-idea-i-just-want-to-see-the-result`, `fo-idea-i-just-want-to-see-the-plan`, `fo-idea-implement`) is invoked after substantial pre-existing session context — discussion, code exploration, document creation, debugging — the agent performs a pre-pipeline checkpoint to release that context before the pipeline starts. The pipeline is self-sufficient: it reads the RFC/ADR, plan, AGENTS.md, and DNA invariants fresh. Pre-existing session context is no longer actionable once the pipeline begins.
|
|
170
|
+
|
|
171
|
+
### When to emit
|
|
172
|
+
|
|
173
|
+
Emit the pre-pipeline checkpoint when **both** conditions are met:
|
|
174
|
+
|
|
175
|
+
1. **Pre-existing context exists** — the session has accumulated context from prior work (discussion, file reads, search results, document creation, debugging). If the skill is invoked at the start of a session with no prior context, skip the checkpoint — there is nothing to release.
|
|
176
|
+
2. **The skill runs a pipeline** — `fo-idea-i-just-want-to-see-the-result` (full or `stopAfter: plan`), `fo-idea-i-just-want-to-see-the-plan`, or `fo-idea-implement`. Skills that perform a single action (e.g. `fo-idea-audit`, `fo-idea-enhance`) do not need this checkpoint.
|
|
177
|
+
|
|
178
|
+
**Double-checkpoint guard:** If a pre-pipeline checkpoint was already emitted by a calling orchestrator (e.g. `fo-idea-i-just-want-to-see-the-result` emitted one, then invoked `fo-idea-implement`), the called skill MUST skip its own checkpoint — the context was already released. Scan conversation output for an existing `checkpoint: pre-pipeline` block before emitting a new one.
|
|
179
|
+
|
|
180
|
+
**Wrapper skills:** `fo-idea-i-just-want-to-see-the-plan` delegates to `fo-idea-i-just-want-to-see-the-result` and does not emit its own checkpoint — the orchestrator handles it.
|
|
181
|
+
|
|
182
|
+
### How to emit
|
|
183
|
+
|
|
184
|
+
1. **Emit pre-pipeline checkpoint block** — output a YAML-formatted block in conversation output with the following fields:
|
|
185
|
+
|
|
186
|
+
```yaml
|
|
187
|
+
---
|
|
188
|
+
checkpoint: pre-pipeline
|
|
189
|
+
documents:
|
|
190
|
+
- id: RFC-XXXX
|
|
191
|
+
type: RFC
|
|
192
|
+
status: accepted
|
|
193
|
+
operatorConstraints:
|
|
194
|
+
- "explicit constraints from the operator not captured in the document"
|
|
195
|
+
aiLanguage: uk
|
|
196
|
+
sessionSummary: >
|
|
197
|
+
1-3 sentences capturing key decisions, edge cases, and mental models
|
|
198
|
+
from the pre-pipeline discussion that are not in the document text.
|
|
199
|
+
---
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
2. **Preserve critical fields** — the following must survive the context release:
|
|
203
|
+
- `documents` — id, type, and status of each document to process (needed by the pipeline's step 0 detection)
|
|
204
|
+
- `operatorConstraints` — explicit constraints or preferences the operator stated in conversation that are not written into the RFC/ADR (e.g. "don't touch packages/foo", "use approach Y"). Empty if none.
|
|
205
|
+
- `aiLanguage` — the operator's AI language preference (to avoid re-reading `PREFERENCES.md`)
|
|
206
|
+
- `sessionSummary` — 1-3 freeform sentences capturing key decisions, edge cases, and mental models from the discussion. This mitigates the session-affinity risk: the `fo-idea-implement` skill warns that "session context contains edge cases and mental models not fully captured in the plan text." The summary preserves the most important ones.
|
|
207
|
+
|
|
208
|
+
3. **Release pre-existing context** — explicitly treat all detailed context from before the checkpoint as no longer actionable: discussion text, codebase search results, file reads, edit operations, intermediate reasoning, debug output. Retain only the checkpoint block and `PREFERENCES.md` settings.
|
|
209
|
+
|
|
210
|
+
4. **Fresh start** — begin the pipeline with a fresh read phase: re-read the RFC/ADR file and all related documents (amends, supersedes, related RFCs, DNA invariants, AGENTS.md sections).
|
|
211
|
+
|
|
212
|
+
### What NOT to release
|
|
213
|
+
|
|
214
|
+
- **`PREFERENCES.md` settings** — `aiLanguage`, `documentationLanguage`, and other preferences remain active.
|
|
215
|
+
- **The checkpoint block itself** — it is the resume marker and the only link to pre-pipeline context.
|
|
216
|
+
- **Operator constraints** — if the operator said "don't touch X" or "use approach Y" in conversation, these must be respected throughout the pipeline.
|
|
217
|
+
|
|
218
|
+
### Resume behavior
|
|
219
|
+
|
|
220
|
+
When resuming an interrupted session, scan conversation output for the last pre-pipeline checkpoint block. If found, extract `documents`, `operatorConstraints`, `aiLanguage`, and `sessionSummary` to restore the pre-pipeline context without re-reading the full conversation history. Then proceed with the pipeline's own resume logic (detecting completed steps via git log, file inspection, frontmatter status).
|
|
221
|
+
|
|
167
222
|
## Context checkpoint between batch items
|
|
168
223
|
|
|
169
224
|
When the orchestrator skill processes multiple documents (>=2), perform a context checkpoint after completing one document and before starting the next:
|
|
@@ -249,8 +249,8 @@ Skills that delegate to `fo-doc-audit`:
|
|
|
249
249
|
|
|
250
250
|
- **`fo-fix`** step 5 ("Documentation audit") — invokes `fo-doc-audit`.
|
|
251
251
|
- **`fo-fix`** merge conflict resolution step 4 ("Documentation audit") — invokes `fo-doc-audit`.
|
|
252
|
-
- **`fo-idea-implement`** step
|
|
253
|
-
- **`fo-idea-implement`** ADR-FLOW step
|
|
252
|
+
- **`fo-idea-implement`** step 4.9 ("Documentation audit") — invokes `fo-doc-audit`.
|
|
253
|
+
- **`fo-idea-implement`** ADR-FLOW step 5.6 ("Documentation audit") — invokes `fo-doc-audit`.
|
|
254
254
|
|
|
255
255
|
## Constraints
|
|
256
256
|
|
|
@@ -19,6 +19,8 @@ See `_shared/fo-pipeline-conventions.md` §Language policy.
|
|
|
19
19
|
|
|
20
20
|
Thin wrapper around `fo-idea-i-just-want-to-see-the-result`. Invokes the orchestrator with `stopAfter: plan`, which runs steps 0–3 only (idea → audit → enhance → plan). Step 4 (implement, which includes review and fix) is not run.
|
|
21
21
|
|
|
22
|
+
The orchestrator handles the pre-pipeline checkpoint per `_shared/fo-pipeline-conventions.md` §Pre-pipeline checkpoint — no separate checkpoint is needed in this wrapper.
|
|
23
|
+
|
|
22
24
|
## ADR documents
|
|
23
25
|
|
|
24
26
|
ADRs skip audit, enhance, and plan. The orchestrator stops after step 0 (idea creation) with the message: "ADR does not require a plan. Run `/fo-idea-implement` to implement."
|
|
@@ -50,7 +50,11 @@ Determine whether the operator provided a raw idea or a document id:
|
|
|
50
50
|
|
|
51
51
|
Record the document id(s) and type(s) (RFC or ADR). If multiple documents were created in a series, process them in dependency order — the same order `fo-idea` created them.
|
|
52
52
|
|
|
53
|
-
### 1.
|
|
53
|
+
### 1. Pre-pipeline checkpoint
|
|
54
|
+
|
|
55
|
+
Before starting the pipeline, perform a pre-pipeline checkpoint per `_shared/fo-pipeline-conventions.md` §Pre-pipeline checkpoint. If pre-existing session context exists (discussion, document creation, debugging), emit the checkpoint block, release pre-existing context, and start the pipeline with a fresh read phase. If the session has no prior context, skip the checkpoint.
|
|
56
|
+
|
|
57
|
+
### 2. Run the pipeline
|
|
54
58
|
|
|
55
59
|
For each document, run the full pipeline inline. The pipeline differs for RFCs and ADRs.
|
|
56
60
|
|
|
@@ -120,7 +124,7 @@ Do not invoke `fo-review` or `fo-fix` separately — they are built into `fo-ide
|
|
|
120
124
|
|
|
121
125
|
This fallback ensures review and fix are never skipped, even if `fo-idea-implement` failed to execute them internally.
|
|
122
126
|
|
|
123
|
-
###
|
|
127
|
+
### 3. Report and stop
|
|
124
128
|
|
|
125
129
|
After the pipeline is complete (or if it was interrupted and resumed), present a single summary in `aiLanguage`. **Translate all labels and headings to `aiLanguage`** — the template below is structural only. Only identifiers (RFC-XXXX, ADR-XXXX, file paths) stay untranslated.
|
|
126
130
|
|
|
@@ -142,7 +146,7 @@ If multiple documents were processed, present one summary block per document.
|
|
|
142
146
|
|
|
143
147
|
**Stop.** Do not invoke `/grilling` or any other skill after the pipeline is complete. The operator asked to "just see the result" — the result is the summary above.
|
|
144
148
|
|
|
145
|
-
###
|
|
149
|
+
### 4. Resume if interrupted
|
|
146
150
|
|
|
147
151
|
If the session was interrupted (agent stopped, context limit, crash, checkpoint summary) and the operator re-invokes this skill or continues the session:
|
|
148
152
|
|
|
@@ -41,15 +41,19 @@ Determine the document type by:
|
|
|
41
41
|
|
|
42
42
|
If the type cannot be determined, ask the user.
|
|
43
43
|
|
|
44
|
-
### 3.
|
|
44
|
+
### 3. Pre-pipeline checkpoint
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
Before starting implementation, perform a pre-pipeline checkpoint per `_shared/fo-pipeline-conventions.md` §Pre-pipeline checkpoint. If pre-existing session context exists (discussion, document creation, debugging, prior pipeline steps), emit the checkpoint block, release pre-existing context, and start implementation with a fresh read phase. If the session has no prior context (e.g. this skill was invoked at the start of a session), skip the checkpoint. If a pre-pipeline checkpoint was already emitted by a calling orchestrator (e.g. `fo-idea-i-just-want-to-see-the-result`), skip this step — the checkpoint was already done.
|
|
47
|
+
|
|
48
|
+
### 4. RFC implementation flow
|
|
49
|
+
|
|
50
|
+
#### 4.1. Prerequisite checks (per RFC)
|
|
47
51
|
|
|
48
52
|
The pipeline is: create → audit → enhance → plan → implement. Audit, enhance, and a plan are **mandatory** — no RFC may proceed to implementation without all three being completed. The RFC must also be `accepted` — this skill does not transition `draft` to `accepted`; that is the responsibility of `fo-idea-plan`.
|
|
49
53
|
|
|
50
54
|
Before running the implementation on each RFC, perform these checks **in order**. If any check fails, record the RFC as **skipped** in the batch summary with the reason, and immediately proceed to the next RFC in the batch. Do not stop the entire batch — skip and report.
|
|
51
55
|
|
|
52
|
-
1. **Prefix check** — if the id starts with `ADR-`, this is not an RFC. Skip with message: `ADR-XXXX is an ADR, not an RFC. Use the ADR implementation flow (step
|
|
56
|
+
1. **Prefix check** — if the id starts with `ADR-`, this is not an RFC. Skip with message: `ADR-XXXX is an ADR, not an RFC. Use the ADR implementation flow (step 5 below) for ADR-XXXX.`
|
|
53
57
|
2. **RFC file exists** — look for `docs/rfcs/rfc-XXXX-*.md`. If no file is found, skip with message: `RFC-XXXX not found in docs/rfcs/. Run /fo-idea-create-rfc first.`
|
|
54
58
|
3. **Terminal status check** — read the RFC's `status` frontmatter. If the status is `implemented`, skip with message: `RFC-XXXX is already implemented. Nothing to do.` If the status is `rejected` or `superseded`, skip with message: `RFC-XXXX is <status> (terminal). Terminal RFCs cannot be implemented. To change this decision, create a new RFC with supersedes: [RFC-XXXX] via /fo-idea-create-rfc.`
|
|
55
59
|
4. **Audit check** — look for `docs/audits/audit-rfc-XXXX-*.md`. If no audit file exists, skip with message: `No audit report found for RFC-XXXX in docs/audits/. Run /fo-idea-audit RFC-XXXX first. The pipeline is: create → audit → enhance → plan → implement.`
|
|
@@ -57,15 +61,15 @@ Before running the implementation on each RFC, perform these checks **in order**
|
|
|
57
61
|
6. **Accepted status check** — if the status is not `accepted` (e.g. `draft` or `reviewing`), skip with message: `RFC-XXXX is <status>, not accepted. Run /fo-idea-plan RFC-XXXX first — it will transition the RFC to accepted and create the plan. The pipeline is: create → audit → enhance → plan → implement.`
|
|
58
62
|
7. **Plan check** — look for `docs/plans/plan-rfc-XXXX-*.md`. If no plan file exists, skip with message: `No plan file found for RFC-XXXX in docs/plans/. Run /fo-idea-plan RFC-XXXX first. The pipeline is: create → audit → enhance → plan → implement.`
|
|
59
63
|
|
|
60
|
-
If all checks pass, proceed to step
|
|
64
|
+
If all checks pass, proceed to step 4.2.
|
|
61
65
|
|
|
62
|
-
####
|
|
66
|
+
#### 4.2. Read the RFC and related context
|
|
63
67
|
|
|
64
68
|
Read the RFC fully and all RFCs listed in its `amends[]`, `related[]`, and `supersedes[]`. Read the plan fully. Read the closest `AGENTS.md` for each impacted package. Read `ref(forge.yaml bindings.paths.invariantsFile)` entries for every DNA invariant in `satisfies[]`.
|
|
65
69
|
|
|
66
70
|
If the plan or RFC has genuine ambiguities that would cause wrong implementation, ask the user **before starting implementation**. Use `ask_user_question` with a recommended option first. Once implementation begins, stop asking — make autonomous decisions.
|
|
67
71
|
|
|
68
|
-
####
|
|
72
|
+
#### 4.3. Implement step by step
|
|
69
73
|
|
|
70
74
|
Execute the plan's step sequence in order. For each step:
|
|
71
75
|
|
|
@@ -96,7 +100,7 @@ Stage only the files touched by this step. Do not stage unrelated changes — an
|
|
|
96
100
|
- **Compass scaffolding.** New non-trivial source files in `apps/` or `packages/` must carry `MODULE_CONTRACT` and `CHANGE_SUMMARY` scaffolding. Check the project's invariants file for the canonical Compass markup rule.
|
|
97
101
|
- **Compass terminology.** Use Compass (not GRACE) in all new code, documentation, and log messages.
|
|
98
102
|
|
|
99
|
-
####
|
|
103
|
+
#### 4.4. Run heavy checks
|
|
100
104
|
|
|
101
105
|
After **all** plan steps are complete, run the heavy validation suite in order:
|
|
102
106
|
|
|
@@ -122,9 +126,9 @@ Use the `packagesImpacted` and `appsImpacted` frontmatter lists to determine whi
|
|
|
122
126
|
|
|
123
127
|
**Do not run a full root `root build` or `turbo run build`.** The success criterion is that all impacted workspaces pass their scoped checks, not that the entire ecosystem builds. See root AGENTS.md §Build verification discipline.
|
|
124
128
|
|
|
125
|
-
####
|
|
129
|
+
#### 4.5. Fix errors
|
|
126
130
|
|
|
127
|
-
If any check in step
|
|
131
|
+
If any check in step 4.4 fails, fix every error:
|
|
128
132
|
|
|
129
133
|
1. Read the error output.
|
|
130
134
|
2. Identify the root cause.
|
|
@@ -142,7 +146,7 @@ If any check in step 3.4 fails, fix every error:
|
|
|
142
146
|
|
|
143
147
|
Continue until all impacted checks pass.
|
|
144
148
|
|
|
145
|
-
####
|
|
149
|
+
#### 4.6. Check acceptance criteria
|
|
146
150
|
|
|
147
151
|
Read the RFC's `## Acceptance criteria` section. For each checkbox:
|
|
148
152
|
|
|
@@ -153,9 +157,9 @@ Read the RFC's `## Acceptance criteria` section. For each checkbox:
|
|
|
153
157
|
5. **If a criterion cannot be met** (e.g., requires an external dependency not yet available, requires a pilot that is not registered), do NOT mark it `[x]` and do NOT stamp `implemented`. Instead, split the deferred work into a follow-up RFC via `rfc.supersede.propose`. An RFC with unchecked `[ ]` criteria cannot transition to `implemented` — this is enforced by V-26.
|
|
154
158
|
6. **Ensure `reviewers` is non-empty** — `rfc.validate` enforces V-25: implemented RFCs with an empty `reviewers` field fail validation. Add at least one reviewer (e.g. `human:<name>`) before stamping `implemented`.
|
|
155
159
|
|
|
156
|
-
Do not proceed to step
|
|
160
|
+
Do not proceed to step 4.7 until every acceptance criterion checkbox is checked with evidence.
|
|
157
161
|
|
|
158
|
-
####
|
|
162
|
+
#### 4.7. Run acceptance probes and emit evidence
|
|
159
163
|
|
|
160
164
|
If the RFC declares `acceptance:` probes in frontmatter:
|
|
161
165
|
|
|
@@ -181,7 +185,7 @@ Emit per-RFC verification evidence for RFC-XXXX implementation.
|
|
|
181
185
|
|
|
182
186
|
Stage `docs/rfcs/verification/rfc-xxxx.generated.json`.
|
|
183
187
|
|
|
184
|
-
####
|
|
188
|
+
#### 4.8. Stamp implemented
|
|
185
189
|
|
|
186
190
|
Transition the RFC to `implemented` using the `rfc.implement.stamp` command. Direct edits to `status`, `implementedAt`, and `updatedAt` are prohibited for all actors.
|
|
187
191
|
|
|
@@ -208,7 +212,7 @@ Transition the RFC to `implemented` using the `rfc.implement.stamp` command. Dir
|
|
|
208
212
|
|
|
209
213
|
Stage only the RFC file. The implementation commit and the stamp commit MUST be separate.
|
|
210
214
|
|
|
211
|
-
####
|
|
215
|
+
#### 4.8b. Regenerate command manifest (MANDATORY)
|
|
212
216
|
|
|
213
217
|
If the RFC added, changed, or removed commands (check `commands.added`, `commands.changed`, `commands.removed` in the RFC frontmatter), regenerate the command manifest so that `rfc.validate` does not report `RFC-CMD-02` (command listed but not registered):
|
|
214
218
|
|
|
@@ -228,26 +232,26 @@ If the RFC has no `commands.*` changes (e.g. it only changes schemas, docs, or i
|
|
|
228
232
|
|
|
229
233
|
This step is MANDATORY for any RFC with `commands.added`, `commands.changed`, or `commands.removed`. A stale manifest causes `RFC-CMD-02` violations that block `rfc.validate` for all implemented RFCs.
|
|
230
234
|
|
|
231
|
-
####
|
|
235
|
+
#### 4.9. Documentation audit (fo-doc-audit)
|
|
232
236
|
|
|
233
237
|
After implementation is complete and all checks pass, invoke `fo-doc-audit` via the `skill` tool. It analyzes the session's changes, checks all documentation surfaces (AGENTS.md, README, Compass XML, architecture-dna.md, templates, generated artifacts, COMMANDS.md/PACKAGE_GRAPH.md), applies needed updates, and commits them separately. Wait for it to complete.
|
|
234
238
|
|
|
235
239
|
If `fo-doc-audit` reports that no updates are needed, proceed to the next step.
|
|
236
240
|
|
|
237
|
-
####
|
|
241
|
+
#### 4.10. Code review (fo-review)
|
|
238
242
|
|
|
239
243
|
After the documentation audit, invoke `fo-review` via the `skill` tool. It performs a cross-session fitness check of the code diff against Forge standards (DNA, forward-only, Compass, agent clarity, pragmatism). The review covers all code changes made in this session since the first implementation commit.
|
|
240
244
|
|
|
241
245
|
1. Determine the diff range: `git diff <merge-base-of-session>...HEAD` — where merge-base is the commit before the first `implement:` commit for this RFC.
|
|
242
246
|
2. Invoke `fo-review` with the diff range. Wait for it to complete (persist + commit the review report in `docs/reviews/code/`).
|
|
243
|
-
3. Read the review report. If the verdict is `approved` **and** the report contains zero findings across all axes, proceed to step
|
|
244
|
-
4. If the review has **any** findings — even a single cosmetic observation on any axis — proceed to step
|
|
247
|
+
3. Read the review report. If the verdict is `approved` **and** the report contains zero findings across all axes, proceed to step 4.12.
|
|
248
|
+
4. If the review has **any** findings — even a single cosmetic observation on any axis — proceed to step 4.11 (fix). Do not interpret an `approved` verdict as "no findings" — read the axis sections and count every finding, including ones labelled "minor" or "cosmetic".
|
|
245
249
|
|
|
246
250
|
**This step is MANDATORY.** Do not skip it, even if the implementation seems clean. The review is the quality gate that catches DNA misalignment, forward-only violations, Compass drift, and agent clarity issues that implementation authors miss.
|
|
247
251
|
|
|
248
|
-
####
|
|
252
|
+
#### 4.11. Fix review findings (fo-fix)
|
|
249
253
|
|
|
250
|
-
If `fo-review` (step
|
|
254
|
+
If `fo-review` (step 4.10) reported **any** findings (even cosmetic ones on axes A/C/F/G), invoke `fo-fix` via the `skill` tool. It applies the review findings iteratively: fix → typecheck → commit → re-check.
|
|
251
255
|
|
|
252
256
|
1. Invoke `fo-fix` with the review report. Wait for it to complete.
|
|
253
257
|
2. After `fo-fix` returns, re-run `fo-review` to confirm all findings are resolved.
|
|
@@ -256,18 +260,18 @@ If `fo-review` (step 3.10) reported **any** findings (even cosmetic ones on axes
|
|
|
256
260
|
|
|
257
261
|
If `fo-review` reported truly zero findings (the report explicitly states "No issues." on every axis), skip this step. An `approved` verdict with any finding text on any axis does NOT qualify as zero findings.
|
|
258
262
|
|
|
259
|
-
####
|
|
263
|
+
#### 4.11b. Implementation status gate (RFC)
|
|
260
264
|
|
|
261
265
|
Before reporting completion, verify the RFC has been stamped as `implemented`:
|
|
262
266
|
|
|
263
267
|
1. Read the RFC frontmatter — confirm `status: implemented` and `implementedAt` is set.
|
|
264
268
|
2. Run `ref(forge.yaml bindings.commands.validateRfc) --id RFC-XXXX --json` — confirm zero errors.
|
|
265
|
-
3. If status is not `implemented`, go back to step
|
|
269
|
+
3. If status is not `implemented`, go back to step 4.8 (Stamp implemented) and run the stamp command.
|
|
266
270
|
4. If `rfc.validate` reports errors, fix them before proceeding.
|
|
267
271
|
|
|
268
|
-
This gate is MANDATORY. Do not proceed to step
|
|
272
|
+
This gate is MANDATORY. Do not proceed to step 4.12 (report) until the RFC is `implemented`.
|
|
269
273
|
|
|
270
|
-
####
|
|
274
|
+
#### 4.12. RFC report
|
|
271
275
|
|
|
272
276
|
After implementation is complete, report in `aiLanguage`. **Translate all labels and headings to `aiLanguage`** — the template below is structural only. Only identifiers (RFC-XXXX, file paths, skill names) stay untranslated.
|
|
273
277
|
|
|
@@ -284,11 +288,11 @@ After implementation is complete, report in `aiLanguage`. **Translate all labels
|
|
|
284
288
|
### Status: implemented (<date>)
|
|
285
289
|
```
|
|
286
290
|
|
|
287
|
-
###
|
|
291
|
+
### 5. ADR implementation flow
|
|
288
292
|
|
|
289
293
|
Execute this flow when the document is an ADR (prefix `ADR-`, or file in `docs/adrs/`).
|
|
290
294
|
|
|
291
|
-
####
|
|
295
|
+
#### 5.1. Read the ADR
|
|
292
296
|
|
|
293
297
|
Read the ADR file. Extract:
|
|
294
298
|
|
|
@@ -298,7 +302,7 @@ Read the ADR file. Extract:
|
|
|
298
302
|
- **Consequences** — what the decision implies for the codebase.
|
|
299
303
|
- **Related** — any RFCs, ADRs, or DNA invariants referenced.
|
|
300
304
|
|
|
301
|
-
####
|
|
305
|
+
#### 5.2. Transition to accepted (if needed)
|
|
302
306
|
|
|
303
307
|
If the ADR is `proposed` or `reviewing`, transition it to `accepted`:
|
|
304
308
|
|
|
@@ -317,7 +321,7 @@ If the ADR is `proposed` or `reviewing`, transition it to `accepted`:
|
|
|
317
321
|
|
|
318
322
|
If the ADR is already `accepted`, proceed directly.
|
|
319
323
|
|
|
320
|
-
####
|
|
324
|
+
#### 5.3. Implement the decision
|
|
321
325
|
|
|
322
326
|
Read the `## Decision` section and implement it in code. **For each decision point, verify whether the code already exists** — ADRs may declare fields or extensions that related RFCs did not fully implement. Do not assume associated RFCs covered everything; check each decision against the actual codebase and implement any gaps. Follow the same principles as RFC implementation:
|
|
323
327
|
|
|
@@ -335,7 +339,7 @@ Read the `## Decision` section and implement it in code. **For each decision poi
|
|
|
335
339
|
|
|
336
340
|
- If a tool call fails with a recoverable error, recover autonomously: split content, use `edit`/`multi_edit`, decompose files, and retry immediately.
|
|
337
341
|
|
|
338
|
-
####
|
|
342
|
+
#### 5.4. Run scoped build checks
|
|
339
343
|
|
|
340
344
|
After implementation is complete, run heavy checks for the impacted workspaces only:
|
|
341
345
|
|
|
@@ -359,7 +363,7 @@ After implementation is complete, run heavy checks for the impacted workspaces o
|
|
|
359
363
|
|
|
360
364
|
**MUST NOT run a full root `root build` or `turbo run build`.** Only check the workspaces this ADR touches. See root AGENTS.md §Build verification discipline.
|
|
361
365
|
|
|
362
|
-
####
|
|
366
|
+
#### 5.5. Fix errors
|
|
363
367
|
|
|
364
368
|
If any check fails, fix every error:
|
|
365
369
|
|
|
@@ -377,26 +381,26 @@ If any check fails, fix every error:
|
|
|
377
381
|
|
|
378
382
|
Continue until all impacted checks pass.
|
|
379
383
|
|
|
380
|
-
####
|
|
384
|
+
#### 5.6. Documentation audit (fo-doc-audit)
|
|
381
385
|
|
|
382
386
|
After implementation is complete and all checks pass, invoke `fo-doc-audit` via the `skill` tool. It analyzes the session's changes, checks all documentation surfaces, applies needed updates, and commits them separately. Wait for it to complete.
|
|
383
387
|
|
|
384
388
|
If `fo-doc-audit` reports that no updates are needed, proceed to the next step.
|
|
385
389
|
|
|
386
|
-
####
|
|
390
|
+
#### 5.7. Code review (fo-review)
|
|
387
391
|
|
|
388
392
|
After the documentation audit, invoke `fo-review` via the `skill` tool. It performs a cross-session fitness check of the code diff against Forge standards. The review covers all code changes made in this session.
|
|
389
393
|
|
|
390
394
|
1. Determine the diff range: `git diff <merge-base-of-session>...HEAD`.
|
|
391
395
|
2. Invoke `fo-review` with the diff range. Wait for it to complete (persist + commit the review report).
|
|
392
|
-
3. Read the review report. If the verdict is `approved` **and** the report contains zero findings across all axes, proceed to step
|
|
393
|
-
4. If the review has **any** findings — even a single cosmetic observation on any axis — proceed to step
|
|
396
|
+
3. Read the review report. If the verdict is `approved` **and** the report contains zero findings across all axes, proceed to step 5.9.
|
|
397
|
+
4. If the review has **any** findings — even a single cosmetic observation on any axis — proceed to step 5.8 (fix). Do not interpret an `approved` verdict as "no findings" — read the axis sections and count every finding.
|
|
394
398
|
|
|
395
399
|
**This step is MANDATORY.** Do not skip it.
|
|
396
400
|
|
|
397
|
-
####
|
|
401
|
+
#### 5.8. Fix review findings (fo-fix)
|
|
398
402
|
|
|
399
|
-
If `fo-review` (step
|
|
403
|
+
If `fo-review` (step 5.7) reported **any** findings (even cosmetic ones), invoke `fo-fix` via the `skill` tool.
|
|
400
404
|
|
|
401
405
|
1. Invoke `fo-fix` with the review report. Wait for it to complete.
|
|
402
406
|
2. After `fo-fix` returns, re-run `fo-review` to confirm all findings are resolved.
|
|
@@ -405,7 +409,7 @@ If `fo-review` (step 4.7) reported **any** findings (even cosmetic ones), invoke
|
|
|
405
409
|
|
|
406
410
|
If `fo-review` reported truly zero findings (the report explicitly states "No issues." on every axis), skip this step. An `approved` verdict with any finding text on any axis does NOT qualify as zero findings.
|
|
407
411
|
|
|
408
|
-
####
|
|
412
|
+
#### 5.9. ADR code-trace
|
|
409
413
|
|
|
410
414
|
Before stamping `implemented`, verify that the ADR is mentioned in the codebase — this leaves a trace linking code back to the decision record, just as RFCs leave traces.
|
|
411
415
|
|
|
@@ -413,7 +417,7 @@ Before stamping `implemented`, verify that the ADR is mentioned in the codebase
|
|
|
413
417
|
- **COMPASS block comments** — `MODULE_CONTRACT`, `CHANGE_SUMMARY`, or other Compass scaffolding comments that reference the ADR id.
|
|
414
418
|
- **Inline code mentions** — comments, docstrings, or annotations in source files that reference the ADR id.
|
|
415
419
|
|
|
416
|
-
2. **If mentions are found** — the trace exists. Proceed to step
|
|
420
|
+
2. **If mentions are found** — the trace exists. Proceed to step 5.10.
|
|
417
421
|
|
|
418
422
|
3. **If no mentions are found** — attempt to find the most relevant file(s) where the decision was implemented. If the file(s) can be identified:
|
|
419
423
|
- Add a Compass block comment referencing the ADR id to the file's `MODULE_CONTRACT` or `CHANGE_SUMMARY` section. For example: `<item>ADR-XXXX: <brief note on what this ADR decided for this module.</item>`
|
|
@@ -426,13 +430,13 @@ Before stamping `implemented`, verify that the ADR is mentioned in the codebase
|
|
|
426
430
|
Add ADR-XXXX reference to <file> to link the decision to the code.
|
|
427
431
|
```
|
|
428
432
|
|
|
429
|
-
- Proceed to step
|
|
433
|
+
- Proceed to step 5.10.
|
|
430
434
|
|
|
431
435
|
4. **If the relevant file(s) cannot be identified** — ask the operator: `ADR-XXXX was implemented but no code mention was found. Please point to the file(s) where this ADR's decision was applied so I can add a trace reference.` After the operator provides the file(s), add the trace as described in step 3, commit, and proceed.
|
|
432
436
|
|
|
433
437
|
**For already-implemented ADRs** (if this step is reached for an ADR that was already `implemented`): this check is informational — attempt to find the trace and add it if missing, but do not block on it.
|
|
434
438
|
|
|
435
|
-
####
|
|
439
|
+
#### 5.10. Stamp implemented
|
|
436
440
|
|
|
437
441
|
After all checks pass and documentation is updated, transition the ADR to `implemented` using `adr.implement.stamp` as required by the ADR lifecycle contract. Direct edits to ADR `status`, `implementedAt`, and `updatedAt` are prohibited — use the stamp command instead.
|
|
438
442
|
|
|
@@ -456,18 +460,18 @@ After all checks pass and documentation is updated, transition the ADR to `imple
|
|
|
456
460
|
|
|
457
461
|
Stage only the ADR file. The implementation commit and the stamp commit MUST be separate.
|
|
458
462
|
|
|
459
|
-
####
|
|
463
|
+
#### 5.10b. Implementation status gate (ADR)
|
|
460
464
|
|
|
461
465
|
Before reporting completion, verify the ADR has been transitioned to `implemented`:
|
|
462
466
|
|
|
463
467
|
1. Read the ADR frontmatter — confirm `status: implemented` and `implementedAt` is set.
|
|
464
468
|
2. Run `ref(forge.yaml bindings.commands.validateAdr) --id ADR-XXXX --json` — confirm zero errors.
|
|
465
|
-
3. If status is not `implemented`, go back to step
|
|
469
|
+
3. If status is not `implemented`, go back to step 5.10 (Stamp implemented) and run `adr.implement.stamp`.
|
|
466
470
|
4. If `adr.validate` reports errors, fix them before proceeding.
|
|
467
471
|
|
|
468
|
-
This gate is MANDATORY. Do not proceed to step
|
|
472
|
+
This gate is MANDATORY. Do not proceed to step 5.11 (report) until the ADR is `implemented`.
|
|
469
473
|
|
|
470
|
-
####
|
|
474
|
+
#### 5.11. Report
|
|
471
475
|
|
|
472
476
|
After implementation is complete, report in `aiLanguage`. **Translate all labels and headings to `aiLanguage`** — the template below is structural only.
|
|
473
477
|
|
|
@@ -482,7 +486,7 @@ After implementation is complete, report in `aiLanguage`. **Translate all labels
|
|
|
482
486
|
### Status: implemented (<date>)
|
|
483
487
|
```
|
|
484
488
|
|
|
485
|
-
###
|
|
489
|
+
### 6. Batch summary
|
|
486
490
|
|
|
487
491
|
If multiple documents were processed, present a single batch summary at the very end in `aiLanguage`. **Translate all labels, headings, and column names to `aiLanguage`** — the template below is structural only.
|
|
488
492
|
|
|
@@ -518,5 +522,5 @@ When an RFC was planned in this session, prefer implementing it in this session
|
|
|
518
522
|
- **Do not weaken DNA invariants.** If implementation reveals an invariant conflict, escalate via `rfc.supersede.propose` instead of working around it.
|
|
519
523
|
- **Compass scaffolding on new files.** Non-trivial new source files in `apps/` or `packages/` must carry `MODULE_CONTRACT` and `CHANGE_SUMMARY`. Check the project's invariants file for the canonical Compass markup rule.
|
|
520
524
|
- **Compass terminology, not GRACE.** Use Compass in all new code, docs, and log messages.
|
|
521
|
-
- **Review and fix are MANDATORY.** After implementation and doc-audit, always run `fo-review` (step
|
|
525
|
+
- **Review and fix are MANDATORY.** After implementation and doc-audit, always run `fo-review` (step 4.10 / 5.7) and `fo-fix` (step 4.11 / 5.8) if **any** findings exist in the review report — including cosmetic or minor findings. Do not stamp `implemented` without a review report in `docs/reviews/code/`. An `approved` verdict does NOT mean "skip fix" — read every axis section and count every finding. This is the quality gate that catches DNA misalignment, forward-only violations, and Compass drift.
|
|
522
526
|
- **No `draft → accepted` transition for RFCs.** This skill requires RFC `status: accepted` and does not transition RFCs. Use `/fo-idea-plan` for that transition.
|
|
@@ -178,10 +178,10 @@ For each identified RFC, read the frontmatter `status` field from `docs/rfcs/rfc
|
|
|
178
178
|
|
|
179
179
|
| Option | Description |
|
|
180
180
|
| --- | --- |
|
|
181
|
-
| Complete now | The agent proceeds to finish the remaining `fo-idea-implement` steps (
|
|
181
|
+
| Complete now | The agent proceeds to finish the remaining `fo-idea-implement` steps (4.6–4.8: check acceptance criteria with evidence, stamp implemented). This may require running validators, fixing errors, and committing the stamp. |
|
|
182
182
|
| Leave as-is | The operator explicitly acknowledges the RFC remains in its current non-terminal status with unchecked acceptance criteria. No further action is taken on the RFC. |
|
|
183
183
|
|
|
184
|
-
If the operator chooses "Complete now", execute `fo-idea-implement` steps
|
|
184
|
+
If the operator chooses "Complete now", execute `fo-idea-implement` steps 4.6–4.8 for that RFC before proceeding. If multiple RFCs are in this state, ask about each one (or present them as a batch with `allowMultiple: true`).
|
|
185
185
|
|
|
186
186
|
**4d. Report:**
|
|
187
187
|
|
|
@@ -76,7 +76,7 @@ The agent updates `.agents/operator-profile.md` immediately when the operator ex
|
|
|
76
76
|
The current register is **{{register}}**.
|
|
77
77
|
|
|
78
78
|
- **Business register:** core behavioral layer only — professional, efficient communication.
|
|
79
|
-
- **Creative register:** core + extended behavioral layer
|
|
79
|
+
- **Creative register:** core + extended behavioral layer — creative partnership, emotional support, companion mode.
|
|
80
80
|
- The register can be changed at any time via live operator feedback. The change takes effect immediately.
|
|
81
81
|
|
|
82
82
|
### Pushback policy
|
|
@@ -110,7 +110,7 @@ The agent handles performance, accessibility, SEO, and optimization automaticall
|
|
|
110
110
|
|
|
111
111
|
### First creation moment
|
|
112
112
|
|
|
113
|
-
The first creation moment is special — the agent celebrates the operator's first creation and sets a welcoming tone.
|
|
113
|
+
The first creation moment is special — the agent celebrates the operator's first creation and sets a welcoming tone.
|
|
114
114
|
|
|
115
115
|
### Creative health and time awareness
|
|
116
116
|
|
|
@@ -152,8 +152,7 @@ Everything the operator creates belongs to them. The agent makes ownership expli
|
|
|
152
152
|
In the creative register, the agent commits all changes automatically after each completed logical step (e.g. after implementing a feature, after fixing a bug, after creating a file). The operator is never asked about git, commits, or version control. No dirty files remain at any pause point. In the business register, the agent asks before committing.
|
|
153
153
|
|
|
154
154
|
- **Auto-commit does not skip verification** — the agent still runs typecheck/build before committing. Auto-commit means the agent does not ask for permission, not that it skips quality checks.
|
|
155
|
-
- **Auto-commit does not fire in companion mode**
|
|
156
|
-
- **Auto-commit applies to forge projects** (bootstrapped projects using `forge create`).
|
|
157
|
-
- **RFC implementation preserves separate commits** — the separate implementation commit and RFC stamp commit pattern is preserved. Auto-commit fires after the implementation step, and the stamp is a separate commit.
|
|
155
|
+
- **Auto-commit does not fire in companion mode** — companion mode is pure creative exploration without code changes, so there is nothing to commit.
|
|
156
|
+
- **Auto-commit applies to forge projects** (bootstrapped projects using `forge create`).
|
|
158
157
|
|
|
159
158
|
{{extendedLayer}}<!-- forge:end behavioral-layer -->
|