@entelligentsia/forgecli 1.0.10 → 1.0.20
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/CHANGELOG.md +191 -0
- package/dist/CHANGELOG-forge-plugin.md +211 -0
- package/dist/bin/forge.js +0 -0
- package/dist/extensions/forgecli/config-layer.js.map +1 -1
- package/dist/extensions/forgecli/context-governor-compaction.d.ts +83 -0
- package/dist/extensions/forgecli/context-governor-compaction.js +302 -0
- package/dist/extensions/forgecli/context-governor-compaction.js.map +1 -0
- package/dist/extensions/forgecli/context-governor.d.ts +173 -0
- package/dist/extensions/forgecli/context-governor.js +618 -0
- package/dist/extensions/forgecli/context-governor.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/component.d.ts +105 -0
- package/dist/extensions/forgecli/dashboard/component.js +861 -0
- package/dist/extensions/forgecli/dashboard/component.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/register.d.ts +2 -0
- package/dist/extensions/forgecli/dashboard/register.js +31 -0
- package/dist/extensions/forgecli/dashboard/register.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/theme.d.ts +27 -0
- package/dist/extensions/forgecli/dashboard/theme.js +91 -0
- package/dist/extensions/forgecli/dashboard/theme.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/view-model.d.ts +35 -0
- package/dist/extensions/forgecli/dashboard/view-model.js +54 -0
- package/dist/extensions/forgecli/dashboard/view-model.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.js +126 -7
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.js +2 -1
- package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
- package/dist/extensions/forgecli/forge-commands.js +1 -0
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/phase4-register.js +53 -0
- package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.d.ts +20 -1
- package/dist/extensions/forgecli/forge-subagent.js +23 -7
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.js +3 -1
- package/dist/extensions/forgecli/forge-tools.js.map +1 -1
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +3 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +37 -3
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/index.js +38 -1
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/lib/halt-advisor.d.ts +59 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js +113 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -0
- package/dist/extensions/forgecli/migration-engine.js +25 -12
- package/dist/extensions/forgecli/migration-engine.js.map +1 -1
- package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +26 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js +213 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -0
- package/dist/extensions/forgecli/orchestrator-tree.d.ts +96 -0
- package/dist/extensions/forgecli/orchestrator-tree.js +390 -0
- package/dist/extensions/forgecli/orchestrator-tree.js.map +1 -0
- package/dist/extensions/forgecli/project-orientation.js +12 -8
- package/dist/extensions/forgecli/project-orientation.js.map +1 -1
- package/dist/extensions/forgecli/regenerate.d.ts +16 -0
- package/dist/extensions/forgecli/regenerate.js +110 -0
- package/dist/extensions/forgecli/regenerate.js.map +1 -1
- package/dist/extensions/forgecli/run-sprint.d.ts +3 -1
- package/dist/extensions/forgecli/run-sprint.js +34 -3
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +66 -1
- package/dist/extensions/forgecli/run-task.js +323 -12
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/thread-switcher.d.ts +4 -1
- package/dist/extensions/forgecli/thread-switcher.js +118 -762
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/viewport-events.js +32 -0
- package/dist/extensions/forgecli/viewport-events.js.map +1 -1
- package/dist/forge-payload/.base-pack/commands/fix-bug.md +1 -1
- package/dist/forge-payload/.base-pack/commands/run-sprint.md +1 -1
- package/dist/forge-payload/.base-pack/commands/run-task.md +1 -1
- package/dist/forge-payload/.base-pack/personas/architect.md +1 -1
- package/dist/forge-payload/.base-pack/personas/bug-fixer.md +1 -1
- package/dist/forge-payload/.base-pack/personas/collator.md +3 -3
- package/dist/forge-payload/.base-pack/personas/engineer.md +1 -1
- package/dist/forge-payload/.base-pack/personas/librarian.md +1 -1
- package/dist/forge-payload/.base-pack/personas/orchestrator.md +1 -1
- package/dist/forge-payload/.base-pack/personas/product-manager.md +1 -1
- package/dist/forge-payload/.base-pack/personas/qa-engineer.md +1 -1
- package/dist/forge-payload/.base-pack/personas/supervisor.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/event-emission-schema.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/progress-reporting.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +11 -2
- package/dist/forge-payload/.base-pack/workflows/architect_approve.md +6 -7
- package/dist/forge-payload/.base-pack/workflows/architect_review_sprint_completion.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/architect_sprint_intake.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/architect_sprint_plan.md +5 -5
- package/dist/forge-payload/.base-pack/workflows/collator_agent.md +4 -6
- package/dist/forge-payload/.base-pack/workflows/commit_task.md +5 -6
- package/dist/forge-payload/.base-pack/workflows/enhance.md +5 -5
- package/dist/forge-payload/.base-pack/workflows/implement_plan.md +15 -7
- package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +12 -13
- package/dist/forge-payload/.base-pack/workflows/plan_task.md +12 -6
- package/dist/forge-payload/.base-pack/workflows/review_code.md +12 -11
- package/dist/forge-payload/.base-pack/workflows/review_plan.md +12 -11
- package/dist/forge-payload/.base-pack/workflows/sprint_retrospective.md +3 -3
- package/dist/forge-payload/.base-pack/workflows/triage.md +12 -9
- package/dist/forge-payload/.base-pack/workflows/update_implementation.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/update_plan.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/validate_task.md +9 -9
- package/dist/forge-payload/.base-pack/workflows-js/wfl-fix-bug.js +490 -0
- package/dist/forge-payload/.base-pack/workflows-js/wfl-run-sprint.js +416 -0
- package/dist/forge-payload/.base-pack/workflows-js/wfl-run-task.js +608 -0
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/config.schema.json +2 -3
- package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/.schemas/event.schema.json +16 -0
- package/dist/forge-payload/.schemas/migrations.json +359 -18
- package/dist/forge-payload/commands/health.md +29 -0
- package/dist/forge-payload/commands/rebuild.md +143 -15
- package/dist/forge-payload/commands/update.md +28 -27
- package/dist/forge-payload/hooks/preflight-session.cjs +99 -0
- package/dist/forge-payload/init/phases/phase-3-materialize.md +18 -5
- package/dist/forge-payload/integrity.json +7 -6
- package/dist/forge-payload/meta/fragments/tool-discipline.md +1 -1
- package/dist/forge-payload/meta/personas/meta-architect.md +1 -1
- package/dist/forge-payload/meta/personas/meta-bug-fixer.md +1 -1
- package/dist/forge-payload/meta/personas/meta-collator.md +7 -7
- package/dist/forge-payload/meta/personas/meta-engineer.md +1 -1
- package/dist/forge-payload/meta/personas/meta-orchestrator.md +1 -1
- package/dist/forge-payload/meta/personas/meta-supervisor.md +1 -1
- package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +2 -2
- package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +11 -2
- package/dist/forge-payload/meta/workflows/meta-approve.md +6 -7
- package/dist/forge-payload/meta/workflows/meta-bug-triage.md +12 -9
- package/dist/forge-payload/meta/workflows/meta-collate.md +5 -7
- package/dist/forge-payload/meta/workflows/meta-commit.md +5 -6
- package/dist/forge-payload/meta/workflows/meta-enhance.md +5 -5
- package/dist/forge-payload/meta/workflows/meta-fix-bug.md +35 -11
- package/dist/forge-payload/meta/workflows/meta-implement.md +15 -7
- package/dist/forge-payload/meta/workflows/meta-migrate.md +13 -14
- package/dist/forge-payload/meta/workflows/meta-new-sprint.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-orchestrate.md +138 -39
- package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +6 -6
- package/dist/forge-payload/meta/workflows/meta-plan-task.md +12 -6
- package/dist/forge-payload/meta/workflows/meta-retro.md +4 -4
- package/dist/forge-payload/meta/workflows/meta-retrospective.md +4 -4
- package/dist/forge-payload/meta/workflows/meta-review-implementation.md +12 -11
- package/dist/forge-payload/meta/workflows/meta-review-plan.md +12 -11
- package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +6 -6
- package/dist/forge-payload/meta/workflows/meta-update-implementation.md +2 -2
- package/dist/forge-payload/meta/workflows/meta-update-plan.md +2 -2
- package/dist/forge-payload/meta/workflows/meta-validate.md +9 -9
- package/dist/forge-payload/schemas/config.schema.json +2 -3
- package/dist/forge-payload/schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/schemas/event.schema.json +16 -0
- package/dist/forge-payload/schemas/structure-manifest.json +75 -73
- package/dist/forge-payload/skills/refresh-kb-links/SKILL.md +14 -7
- package/dist/forge-payload/tools/banners.cjs +29 -10
- package/dist/forge-payload/tools/check-structure.cjs +88 -7
- package/dist/forge-payload/tools/collate.cjs +48 -2
- package/dist/forge-payload/tools/manage-config.cjs +5 -7
- package/dist/forge-payload/tools/parse-gates.cjs +73 -1
- package/dist/forge-payload/tools/postflight-gate.cjs +298 -0
- package/dist/forge-payload/tools/preflight-gate.cjs +47 -0
- package/dist/forge-payload/tools/substitute-placeholders.cjs +5 -4
- package/dist/forge-payload/tools/verify-phase.cjs +17 -0
- package/package.json +2 -2
- package/dist/bin/forgecli.d.ts +0 -2
- package/dist/bin/forgecli.js +0 -6
- package/dist/bin/forgecli.js.map +0 -1
- package/dist/extensions/forgecli/config-tui/index.d.ts +0 -5
- package/dist/extensions/forgecli/config-tui/index.js +0 -5
- package/dist/extensions/forgecli/config-tui/index.js.map +0 -1
- package/dist/extensions/forgecli/loaders/persona-skill-loader.d.ts +0 -45
- package/dist/extensions/forgecli/loaders/persona-skill-loader.js +0 -227
- package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +0 -1
- package/dist/extensions/forgecli/loaders/template-render.d.ts +0 -20
- package/dist/extensions/forgecli/loaders/template-render.js +0 -85
- package/dist/extensions/forgecli/loaders/template-render.js.map +0 -1
- package/dist/extensions/forgecli/loaders/workflow-loader.d.ts +0 -41
- package/dist/extensions/forgecli/loaders/workflow-loader.js +0 -164
- package/dist/extensions/forgecli/loaders/workflow-loader.js.map +0 -1
- package/dist/forge-payload/.base-pack/workflows/fix_bug.md +0 -446
- package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +0 -928
- package/dist/forge-payload/.base-pack/workflows/run_sprint.md +0 -225
|
@@ -27,7 +27,7 @@ deps:
|
|
|
27
27
|
|
|
28
28
|
- Evaluate the plan against what the task actually requires, not against what the plan claims to deliver. Plans routinely understate complexity, omit edge cases, or skip security steps. Your job is adversarial review, not approval.
|
|
29
29
|
- Read `.forge/personas/supervisor.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
|
|
30
|
-
- All store I/O via `forge_store` (or `node
|
|
30
|
+
- All store I/O via `forge_store` (or `node .forge/tools/store-cli.cjs`). Never edit `.forge/store/*.json` directly.
|
|
31
31
|
|
|
32
32
|
## Store-Write Verification
|
|
33
33
|
|
|
@@ -38,9 +38,8 @@ deps:
|
|
|
38
38
|
```
|
|
39
39
|
|
|
40
40
|
0a. Pre-flight Gate Check:
|
|
41
|
-
- Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
|
|
42
41
|
- **Entity-mode resolution:** read the kickoff arguments. `--task {id}` → `entity_kind = "task"`, `record_id = {id}`. `--bug {id}` → `entity_kind = "bug"`, `record_id = {id}`. All store-cli calls below substitute `{entity_kind}` and `{record_id}` for the literal "task"/{taskId} placeholders.
|
|
43
|
-
- Run: `node
|
|
42
|
+
- Run: `node .forge/tools/preflight-gate.cjs --phase review-plan --{entity_kind} {record_id}`
|
|
44
43
|
- Exit 1 (gate failed) → print stderr and HALT. Do not proceed; do not attempt to produce the artifact.
|
|
45
44
|
- Exit 2 (misconfiguration) → print stderr and HALT.
|
|
46
45
|
- Exit 0 → continue.
|
|
@@ -49,7 +48,7 @@ deps:
|
|
|
49
48
|
- If `--force` is present in the invocation arguments, skip this step entirely.
|
|
50
49
|
- If `entity_kind == "bug"`, skip this step entirely (bug state is managed by meta-fix-bug.md).
|
|
51
50
|
- Read current task state:
|
|
52
|
-
`node
|
|
51
|
+
`node .forge/tools/store-cli.cjs read task {record_id} --json`
|
|
53
52
|
- Extract the `status` field from the JSON output.
|
|
54
53
|
- Allowed states for this phase: `planned`.
|
|
55
54
|
- If the current status is NOT in the allowed set:
|
|
@@ -61,9 +60,10 @@ deps:
|
|
|
61
60
|
- If present, extract:
|
|
62
61
|
- `Iteration: N of M` — current attempt number and the configured limit
|
|
63
62
|
- `Is final iteration: true/false`
|
|
64
|
-
- If absent (user-invoked, not orchestrated): treat as iteration 1
|
|
65
|
-
read from
|
|
66
|
-
|
|
63
|
+
- If absent (user-invoked, not orchestrated): treat as `iteration 1`, no limit — do
|
|
64
|
+
NOT read any iteration cap from config. The orchestrator owns loop budgets; a human
|
|
65
|
+
standalone re-run is the escape hatch for stuck items (forge-engineering#34).
|
|
66
|
+
- Include `(iteration N of M)` (orchestrated) or `(standalone review)` in the opening line of the `PLAN_REVIEW.md` artifact.
|
|
67
67
|
- If this is the final iteration (`N == M`) and the verdict is `Revision Required`,
|
|
68
68
|
append a `### Next Steps` section to the artifact showing:
|
|
69
69
|
```
|
|
@@ -96,7 +96,7 @@ deps:
|
|
|
96
96
|
- Approved → `plan-approved`
|
|
97
97
|
- Revision Required → `plan-revision-required`
|
|
98
98
|
- Out-of-band escapes (any state): `code-revision-required`, `blocked`, `escalated`, `abandoned`
|
|
99
|
-
Update status: `node
|
|
99
|
+
Update status: `node .forge/tools/store-cli.cjs update-status task {taskId} status plan-approved` (if Approved) or `... status plan-revision-required` (if Revision Required)
|
|
100
100
|
- **Bug mode** — NO status write. The bug remains `in-progress`. The verdict signal travels through `summaries.review_plan.verdict` (read by `read-verdict.cjs § BUG_PHASE_VERDICT_SOURCE`), not `bug.status`. Writing `bug.status` here violates `meta-fix-bug.md § Iron Laws #2`.
|
|
101
101
|
- **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
102
102
|
|
|
@@ -114,13 +114,14 @@ deps:
|
|
|
114
114
|
```
|
|
115
115
|
- Call (task mode):
|
|
116
116
|
```
|
|
117
|
-
forge_store({ command:"set-summary",
|
|
117
|
+
forge_store({ command:"set-summary", args:["{record_id}", "review_plan"] })
|
|
118
118
|
```
|
|
119
119
|
Or (bug mode):
|
|
120
120
|
```
|
|
121
|
-
forge_store({ command:"set-bug-summary",
|
|
121
|
+
forge_store({ command:"set-bug-summary", args:["{record_id}", "review_plan"] })
|
|
122
122
|
```
|
|
123
|
-
|
|
123
|
+
`args[1]` is the LITERAL phase key `review_plan`, never the record id; `forge_store` has no `entity`/`id`/`phase` field (see `_fragments/store-cli-verbs.md`).
|
|
124
|
+
- If set-summary exits non-zero (guard: `expected summary key 'review_plan'`), `args[1]` was wrong — fix it to `review_plan` and retry. Do not return without a valid summary; the orchestrator halts as "verdict missing" if `summaries.review_plan` is absent.
|
|
124
125
|
```
|
|
125
126
|
|
|
126
127
|
<!-- See _fragments/generation-instructions.md for Generation Instructions template -->
|
|
@@ -42,10 +42,10 @@ Verify that all tasks in a sprint have been completed, committed, and validated
|
|
|
42
42
|
4. Finalize:
|
|
43
43
|
- If step-3 verdict is `Approved`:
|
|
44
44
|
- Update sprint status to `completed` via
|
|
45
|
-
`node
|
|
45
|
+
`node .forge/tools/store-cli.cjs update-status sprint {sprintId} status completed`
|
|
46
46
|
- If step-3 verdict is `Revision Required` and orchestrator passed `mode=partial`:
|
|
47
47
|
- Update sprint status to `partially-completed` via
|
|
48
|
-
`node
|
|
48
|
+
`node .forge/tools/store-cli.cjs update-status sprint {sprintId} status partially-completed`
|
|
49
49
|
- If step-3 verdict is `Revision Required` and orchestrator passed `mode=complete`:
|
|
50
50
|
- Do NOT transition status. Leave the sprint at its current status and exit;
|
|
51
51
|
the orchestrator will surface the verdict to the user.
|
|
@@ -64,5 +64,5 @@ Verify that all tasks in a sprint have been completed, committed, and validated
|
|
|
64
64
|
(Claude Code only); on any other runtime treat as unavailable and proceed.
|
|
65
65
|
Do NOT shell out to a `cost-cli.cjs` — there is no such tool.
|
|
66
66
|
2. Parse: `inputTokens`, `outputTokens`, `cacheReadTokens`, `cacheWriteTokens`, `estimatedCostUSD`.
|
|
67
|
-
3. Write the usage sidecar via `node
|
|
67
|
+
3. Write the usage sidecar via `node .forge/tools/store-cli.cjs emit {sprintId} '{sidecar-json}' --sidecar`.
|
|
68
68
|
- **Event Emission:** Ensure the "complete" event includes the `eventId` passed by the orchestrator.
|
|
@@ -23,7 +23,7 @@ Capture sprint requirements via a structured interview and document them for pla
|
|
|
23
23
|
|
|
24
24
|
- Capture requirements accurately; do not editorialize or pre-select options on the user's behalf. The product manager documents what the user says, not what the agent thinks is best.
|
|
25
25
|
- Read `.forge/personas/product-manager.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
|
|
26
|
-
- All store I/O via `forge_store` (or `node
|
|
26
|
+
- All store I/O via `forge_store` (or `node .forge/tools/store-cli.cjs`). Never edit `.forge/store/*.json` directly.
|
|
27
27
|
|
|
28
28
|
## Algorithm
|
|
29
29
|
|
|
@@ -56,7 +56,7 @@ Capture sprint requirements via a structured interview and document them for pla
|
|
|
56
56
|
- Ensure all deliverables are measurable and testable
|
|
57
57
|
|
|
58
58
|
5. Finalize:
|
|
59
|
-
- Update sprint status via `node
|
|
59
|
+
- Update sprint status via `node .forge/tools/store-cli.cjs update-status sprint {sprintId} status planning`
|
|
60
60
|
- **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
61
61
|
```
|
|
62
62
|
|
|
@@ -79,6 +79,6 @@ Capture sprint requirements via a structured interview and document them for pla
|
|
|
79
79
|
- Set token fields to `null`: `"inputTokens": null, "outputTokens": null, "estimatedCostUSD": null`.
|
|
80
80
|
- Add `"source": "missing"` to sidecar JSON.
|
|
81
81
|
- Log: "Token data unavailable (cost probe failed). Backfill later via estimate-usage.cjs."
|
|
82
|
-
4. Write the usage sidecar via `node
|
|
82
|
+
4. Write the usage sidecar via `node .forge/tools/store-cli.cjs emit {sprintId} '{sidecar-json}' --sidecar`.
|
|
83
83
|
5. **NEVER skip sidecar write.** Always emit (reported or placeholder with nulls).
|
|
84
84
|
- **Event Emission:** Ensure the "complete" event includes the `eventId` passed by the orchestrator.
|
|
@@ -31,8 +31,8 @@ Break sprint requirements into a set of estimated tasks with a dependency graph.
|
|
|
31
31
|
1. Load Context:
|
|
32
32
|
- Query the store to orient on current project state before reading docs:
|
|
33
33
|
```sh
|
|
34
|
-
node
|
|
35
|
-
node
|
|
34
|
+
node .forge/tools/store-cli.cjs nlp "latest sprint"
|
|
35
|
+
node .forge/tools/store-cli.cjs nlp "open bugs"
|
|
36
36
|
```
|
|
37
37
|
Use results (titles, statuses, excerpts, file refs) to skip manual MASTER_INDEX.md navigation where sufficient.
|
|
38
38
|
- Read SPRINT_REQUIREMENTS.md
|
|
@@ -52,11 +52,11 @@ Break sprint requirements into a set of estimated tasks with a dependency graph.
|
|
|
52
52
|
|
|
53
53
|
4. Documentation:
|
|
54
54
|
- Write SPRINT_PLAN.md to `engineering/sprints/{sprintId}/SPRINT_PLAN.md`
|
|
55
|
-
- Create each task via `node
|
|
55
|
+
- Create each task via `node .forge/tools/store-cli.cjs write task '{task-json}'`.
|
|
56
56
|
If the command exits non-zero or the PreToolUse hook blocks the write:
|
|
57
57
|
parse the error, correct the JSON, and retry (see Store-Write Verification).
|
|
58
58
|
Do not proceed to the next task until this write succeeds.
|
|
59
|
-
- Update the sprint record with all new task IDs via `node
|
|
59
|
+
- Update the sprint record with all new task IDs via `node .forge/tools/store-cli.cjs write sprint '{updated-sprint-json}'` (the sprint JSON must include the complete `taskIds` array with all newly created task IDs).
|
|
60
60
|
If the command exits non-zero or the PreToolUse hook blocks the write:
|
|
61
61
|
parse the error, correct the JSON, and retry (see Store-Write Verification).
|
|
62
62
|
Do not proceed until this write succeeds.
|
|
@@ -64,7 +64,7 @@ Break sprint requirements into a set of estimated tasks with a dependency graph.
|
|
|
64
64
|
* Folder: `engineering/sprints/{sprintId}/{taskId}/`
|
|
65
65
|
* File: `TASK_PROMPT.md` — populate from `.forge/templates/TASK_PROMPT_TEMPLATE.md`
|
|
66
66
|
filling in title, objective, acceptance criteria, entities, DSL/CLI changes, and operational impact
|
|
67
|
-
- Update sprint status via `node
|
|
67
|
+
- Update sprint status via `node .forge/tools/store-cli.cjs update-status sprint {sprintId} status active`.
|
|
68
68
|
If the command exits non-zero, parse the error and retry
|
|
69
69
|
(see Store-Write Verification). Do not proceed until this write succeeds.
|
|
70
70
|
|
|
@@ -141,7 +141,7 @@ environment variable is reserved for emergency operator repair only.
|
|
|
141
141
|
- Set token fields to `null`: `"inputTokens": null, "outputTokens": null, "estimatedCostUSD": null`.
|
|
142
142
|
- Add `"source": "missing"` to sidecar JSON.
|
|
143
143
|
- Log: "Token data unavailable (cost probe failed). Backfill later via estimate-usage.cjs."
|
|
144
|
-
4. Write the usage sidecar via `node
|
|
144
|
+
4. Write the usage sidecar via `node .forge/tools/store-cli.cjs emit {sprintId} '{sidecar-json}' --sidecar`.
|
|
145
145
|
5. **NEVER skip sidecar write.** Always emit (reported or placeholder with nulls).
|
|
146
146
|
- **Event Emission:** Ensure the "complete" event includes the `eventId` passed by the orchestrator.
|
|
147
147
|
- **Store-Write Verification:** The generated workflow MUST include the "Store-Write
|
|
@@ -31,7 +31,7 @@ Update the implementation of a task based on a "Revision Required" verdict from
|
|
|
31
31
|
|
|
32
32
|
- Address every "Revision Required" item from the review artifact at the correct code location; do not paper over them with comments. If a finding is wrong, escalate rather than ignore.
|
|
33
33
|
- Read `.forge/personas/engineer.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
|
|
34
|
-
- All store I/O via `forge_store` (or `node
|
|
34
|
+
- All store I/O via `forge_store` (or `node .forge/tools/store-cli.cjs`). Never edit `.forge/store/*.json` directly.
|
|
35
35
|
|
|
36
36
|
## Store-Write Verification
|
|
37
37
|
|
|
@@ -55,7 +55,7 @@ Update the implementation of a task based on a "Revision Required" verdict from
|
|
|
55
55
|
- Update PROGRESS.md with a summary of the revisions
|
|
56
56
|
|
|
57
57
|
4. Finalize:
|
|
58
|
-
- Update task status via `node
|
|
58
|
+
- Update task status via `node .forge/tools/store-cli.cjs update-status task {taskId} status implemented`
|
|
59
59
|
- **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
60
60
|
```
|
|
61
61
|
|
|
@@ -31,7 +31,7 @@ Update the implementation plan of a task based on a "Revision Required" verdict
|
|
|
31
31
|
|
|
32
32
|
- Address every numbered finding in the review artifact. Do not silently drop items; if a finding is wrong, note the reason in the revised plan rather than ignoring it.
|
|
33
33
|
- Read `.forge/personas/architect.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
|
|
34
|
-
- All store I/O via `forge_store` (or `node
|
|
34
|
+
- All store I/O via `forge_store` (or `node .forge/tools/store-cli.cjs`). Never edit `.forge/store/*.json` directly.
|
|
35
35
|
|
|
36
36
|
## Store-Write Verification
|
|
37
37
|
|
|
@@ -55,7 +55,7 @@ Update the implementation plan of a task based on a "Revision Required" verdict
|
|
|
55
55
|
- Update the "Operational Impact" or "Testing Strategy" if the revision changed them
|
|
56
56
|
|
|
57
57
|
4. Finalize:
|
|
58
|
-
- Update task status via `node
|
|
58
|
+
- Update task status via `node .forge/tools/store-cli.cjs update-status task {taskId} status planned`
|
|
59
59
|
- **Do NOT emit a phase event yourself.** The orchestrator (or kickoff handler) owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
60
60
|
```
|
|
61
61
|
|
|
@@ -31,7 +31,7 @@ The Supervisor performs a final validation of the implementation against the acc
|
|
|
31
31
|
|
|
32
32
|
- Validate against the acceptance criteria as written; do not soften, expand, or reinterpret them. The validator's job is to catch what the implementer optimistically considered "done".
|
|
33
33
|
- Read `.forge/personas/qa-engineer.md` first; print the persona identity line (emoji, name, tagline) to stdout before any other tool use.
|
|
34
|
-
- All store I/O via `forge_store` (or `node
|
|
34
|
+
- All store I/O via `forge_store` (or `node .forge/tools/store-cli.cjs`). Never edit `.forge/store/*.json` directly.
|
|
35
35
|
|
|
36
36
|
## Store-Write Verification
|
|
37
37
|
|
|
@@ -42,9 +42,8 @@ The Supervisor performs a final validation of the implementation against the acc
|
|
|
42
42
|
```
|
|
43
43
|
|
|
44
44
|
0a. Pre-flight Gate Check:
|
|
45
|
-
- Resolve FORGE_ROOT (`node -e "console.log(require('./.forge/config.json').paths.forgeRoot)"`).
|
|
46
45
|
- **Entity-mode resolution:** read the kickoff arguments. `--task {id}` → `entity_kind = "task"`, `record_id = {id}`. `--bug {id}` → `entity_kind = "bug"`, `record_id = {id}`. All store-cli calls below substitute `{entity_kind}` and `{record_id}` for the literal "task"/{taskId} placeholders.
|
|
47
|
-
- Run: `node
|
|
46
|
+
- Run: `node .forge/tools/preflight-gate.cjs --phase validate --{entity_kind} {record_id}`
|
|
48
47
|
- Exit 1 (gate failed) → print stderr and HALT. Do not proceed; do not attempt to produce the artifact.
|
|
49
48
|
- Exit 2 (misconfiguration) → print stderr and HALT.
|
|
50
49
|
- Exit 0 → continue.
|
|
@@ -53,7 +52,7 @@ The Supervisor performs a final validation of the implementation against the acc
|
|
|
53
52
|
- If `--force` is present in the invocation arguments, skip this step entirely.
|
|
54
53
|
- If `entity_kind == "bug"`, skip this step entirely (bug state is managed by meta-fix-bug.md).
|
|
55
54
|
- Read current task state:
|
|
56
|
-
`node
|
|
55
|
+
`node .forge/tools/store-cli.cjs read task {record_id} --json`
|
|
57
56
|
- Extract the `status` field from the JSON output.
|
|
58
57
|
- Allowed states for this phase: `implemented`, `review-approved`.
|
|
59
58
|
- If the current status is NOT in the allowed set:
|
|
@@ -65,9 +64,10 @@ The Supervisor performs a final validation of the implementation against the acc
|
|
|
65
64
|
- If present, extract:
|
|
66
65
|
- `Iteration: N of M` — current attempt number and the configured limit
|
|
67
66
|
- `Is final iteration: true/false`
|
|
68
|
-
- If absent (user-invoked, not orchestrated): treat as iteration 1
|
|
69
|
-
read from
|
|
70
|
-
|
|
67
|
+
- If absent (user-invoked, not orchestrated): treat as `iteration 1`, no limit — do
|
|
68
|
+
NOT read any iteration cap from config. The orchestrator owns loop budgets; a human
|
|
69
|
+
standalone re-run is the escape hatch for stuck items (forge-engineering#34).
|
|
70
|
+
- Include `(iteration N of M)` (orchestrated) or `(standalone review)` in the opening line of the `VALIDATION_REPORT.md` artifact.
|
|
71
71
|
- If this is the final iteration (`N == M`) and the verdict is `Revision Required`,
|
|
72
72
|
append a `### Next Steps` section to the artifact showing:
|
|
73
73
|
```
|
|
@@ -99,7 +99,7 @@ The Supervisor performs a final validation of the implementation against the acc
|
|
|
99
99
|
- See step 1 for iteration header and final-iteration Next Steps requirements.
|
|
100
100
|
|
|
101
101
|
5. Finalize:
|
|
102
|
-
- Update task status via `node
|
|
102
|
+
- Update task status via `node .forge/tools/store-cli.cjs update-status task {taskId} status review-approved` (if Approved) or `node .forge/tools/store-cli.cjs update-status task {taskId} status code-revision-required` (if Revision Required)
|
|
103
103
|
- **Do NOT emit a phase event yourself.** The orchestrator owns event emission — it composes the canonical event from runtime telemetry (model, provider, tokens, wall times) plus the SUMMARY you write in the next step. Subagents that call `store-cli emit` for phase events hallucinate runtime facts (see Plan 11 / Slice 2). Write the SUMMARY and return.
|
|
104
104
|
|
|
105
105
|
6. Emit Summary Sidecar:
|
|
@@ -117,7 +117,7 @@ The Supervisor performs a final validation of the implementation against the acc
|
|
|
117
117
|
```
|
|
118
118
|
- Call (the sidecar path is auto-resolved from the task record's `path` — never pass it):
|
|
119
119
|
```
|
|
120
|
-
node
|
|
120
|
+
node .forge/tools/store-cli.cjs set-summary {task_id} validation
|
|
121
121
|
```
|
|
122
122
|
- If set-summary exits non-zero, fix the sidecar JSON and retry. Do not proceed without a valid summary.
|
|
123
123
|
```
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
},
|
|
62
62
|
"paths": {
|
|
63
63
|
"type": "object",
|
|
64
|
-
"required": ["engineering", "store"
|
|
64
|
+
"required": ["engineering", "store"],
|
|
65
65
|
"properties": {
|
|
66
66
|
"engineering": { "type": "string", "default": "engineering" },
|
|
67
67
|
"store": { "type": "string", "default": ".forge/store" },
|
|
@@ -69,8 +69,7 @@
|
|
|
69
69
|
"commands": { "type": "string", "default": ".claude/commands" },
|
|
70
70
|
"templates": { "type": "string", "default": ".forge/templates" },
|
|
71
71
|
"customCommands": { "type": "string", "default": "engineering/commands", "description": "Directory for project-specific custom pipeline phase commands. Files here are workflow scripts invoked directly by the orchestrator via the phase workflow field." },
|
|
72
|
-
"
|
|
73
|
-
"forgeRef": { "type": "string", "description": "Pinned Forge plugin reference (tag or commit) the project was generated against." }
|
|
72
|
+
"forgeRef": { "type": "string", "description": "Pinned Forge plugin reference (tag or commit) the project was generated against. Used to resolve the plugin root via cache lookup." }
|
|
74
73
|
}
|
|
75
74
|
},
|
|
76
75
|
"pipeline": {
|
|
@@ -55,8 +55,10 @@
|
|
|
55
55
|
"task-approved",
|
|
56
56
|
"task-validated",
|
|
57
57
|
"task-committed",
|
|
58
|
+
"sprint-start",
|
|
58
59
|
"sprint-complete",
|
|
59
60
|
"sprint-halted",
|
|
61
|
+
"task-dispatch",
|
|
60
62
|
"bug-fixed",
|
|
61
63
|
|
|
62
64
|
"bug-triaged", "fix-planned", "fix-review-passed", "fix-review-failed",
|
|
@@ -135,6 +137,20 @@
|
|
|
135
137
|
},
|
|
136
138
|
"then": { "required": ["bugId", "phase", "iteration"] }
|
|
137
139
|
},
|
|
140
|
+
{
|
|
141
|
+
"if": { "properties": { "type": { "const": "sprint-start" } }, "required": ["type"] },
|
|
142
|
+
"then": {
|
|
143
|
+
"required": [
|
|
144
|
+
"eventId", "sprintId", "role", "action",
|
|
145
|
+
"startTimestamp", "endTimestamp", "durationMinutes",
|
|
146
|
+
"model", "provider",
|
|
147
|
+
"taskCount"
|
|
148
|
+
],
|
|
149
|
+
"properties": {
|
|
150
|
+
"taskCount": { "type": "integer", "minimum": 0 }
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
},
|
|
138
154
|
{
|
|
139
155
|
"if": { "properties": { "type": { "const": "sprint-complete" } }, "required": ["type"] },
|
|
140
156
|
"then": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.
|
|
3
|
-
"generatedAt": "2026-
|
|
2
|
+
"version": "1.2.13",
|
|
3
|
+
"generatedAt": "2026-06-03T05:20:45.625Z",
|
|
4
4
|
"generatedByTool": "build-manifest.cjs",
|
|
5
5
|
"namespaces": {
|
|
6
6
|
"personas": {
|
|
@@ -38,15 +38,12 @@
|
|
|
38
38
|
"architect_sprint_plan.md",
|
|
39
39
|
"collator_agent.md",
|
|
40
40
|
"commit_task.md",
|
|
41
|
-
"fix_bug.md",
|
|
42
41
|
"implement_plan.md",
|
|
43
42
|
"migrate_structural.md",
|
|
44
|
-
"orchestrate_task.md",
|
|
45
43
|
"plan_task.md",
|
|
46
44
|
"quiz_agent.md",
|
|
47
45
|
"review_code.md",
|
|
48
46
|
"review_plan.md",
|
|
49
|
-
"run_sprint.md",
|
|
50
47
|
"sprint_retrospective.md",
|
|
51
48
|
"triage.md",
|
|
52
49
|
"update_implementation.md",
|
|
@@ -106,6 +103,15 @@
|
|
|
106
103
|
"store-write-verification.md"
|
|
107
104
|
]
|
|
108
105
|
},
|
|
106
|
+
"workflows-js": {
|
|
107
|
+
"logicalKey": "workflows-js",
|
|
108
|
+
"dir": ".claude/workflows",
|
|
109
|
+
"files": [
|
|
110
|
+
"wfl-fix-bug.js",
|
|
111
|
+
"wfl-run-sprint.js",
|
|
112
|
+
"wfl-run-task.js"
|
|
113
|
+
]
|
|
114
|
+
},
|
|
109
115
|
"schemas": {
|
|
110
116
|
"logicalKey": "schemas",
|
|
111
117
|
"dir": ".forge/schemas",
|
|
@@ -126,6 +132,70 @@
|
|
|
126
132
|
"structure-versions.schema.json",
|
|
127
133
|
"task.schema.json"
|
|
128
134
|
]
|
|
135
|
+
},
|
|
136
|
+
"tools": {
|
|
137
|
+
"logicalKey": "tools",
|
|
138
|
+
"dir": ".forge/tools",
|
|
139
|
+
"files": [
|
|
140
|
+
"artifact-store.cjs",
|
|
141
|
+
"artifact.cjs",
|
|
142
|
+
"backfill-provider.cjs",
|
|
143
|
+
"banners.cjs",
|
|
144
|
+
"build-base-pack.cjs",
|
|
145
|
+
"build-context-pack.cjs",
|
|
146
|
+
"build-enum-catalog.cjs",
|
|
147
|
+
"build-init-context.cjs",
|
|
148
|
+
"build-manifest.cjs",
|
|
149
|
+
"build-overlay.cjs",
|
|
150
|
+
"build-persona-pack.cjs",
|
|
151
|
+
"check-no-skipped-tests.cjs",
|
|
152
|
+
"check-structure.cjs",
|
|
153
|
+
"collate.cjs",
|
|
154
|
+
"compression-gate.cjs",
|
|
155
|
+
"delete-candidate-detector.cjs",
|
|
156
|
+
"estimate-usage.cjs",
|
|
157
|
+
"forge-preflight.cjs",
|
|
158
|
+
"friction-emit.cjs",
|
|
159
|
+
"gen-integrity.cjs",
|
|
160
|
+
"generation-manifest.cjs",
|
|
161
|
+
"judge-proposal.cjs",
|
|
162
|
+
"manage-config.cjs",
|
|
163
|
+
"manage-versions.cjs",
|
|
164
|
+
"migrate-slug-maxlen.cjs",
|
|
165
|
+
"parse-gates.cjs",
|
|
166
|
+
"postflight-gate.cjs",
|
|
167
|
+
"preflight-gate.cjs",
|
|
168
|
+
"proposal-normalize.cjs",
|
|
169
|
+
"query-logger.cjs",
|
|
170
|
+
"queue-drain.cjs",
|
|
171
|
+
"read-verdict.cjs",
|
|
172
|
+
"replay-scoring.cjs",
|
|
173
|
+
"rewrite-plugin-urls.cjs",
|
|
174
|
+
"seed-store.cjs",
|
|
175
|
+
"store-cli.cjs",
|
|
176
|
+
"store-query.cjs",
|
|
177
|
+
"store.cjs",
|
|
178
|
+
"substitute-placeholders.cjs",
|
|
179
|
+
"token-forensics.cjs",
|
|
180
|
+
"validate-store.cjs",
|
|
181
|
+
"verify-apply.cjs",
|
|
182
|
+
"verify-integrity.cjs",
|
|
183
|
+
"verify-phase.cjs",
|
|
184
|
+
"lib/artifact-kinds.cjs",
|
|
185
|
+
"lib/forge-root.cjs",
|
|
186
|
+
"lib/frontmatter.cjs",
|
|
187
|
+
"lib/fsutil.cjs",
|
|
188
|
+
"lib/json-io.cjs",
|
|
189
|
+
"lib/paths.cjs",
|
|
190
|
+
"lib/pricing.cjs",
|
|
191
|
+
"lib/project-root.cjs",
|
|
192
|
+
"lib/schema-loader.cjs",
|
|
193
|
+
"lib/slug.cjs",
|
|
194
|
+
"lib/store-facade.cjs",
|
|
195
|
+
"lib/store-nlp.cjs",
|
|
196
|
+
"lib/store-query-exec.cjs",
|
|
197
|
+
"lib/suggest.cjs"
|
|
198
|
+
]
|
|
129
199
|
}
|
|
130
200
|
},
|
|
131
201
|
"edges": {
|
|
@@ -200,41 +270,6 @@
|
|
|
200
270
|
"paths.engineering"
|
|
201
271
|
]
|
|
202
272
|
},
|
|
203
|
-
"fix_bug": {
|
|
204
|
-
"personas": [
|
|
205
|
-
".forge/personas/bug-fixer.md",
|
|
206
|
-
".forge/personas/supervisor.md",
|
|
207
|
-
".forge/personas/architect.md",
|
|
208
|
-
".forge/personas/engineer.md",
|
|
209
|
-
".forge/personas/collator.md"
|
|
210
|
-
],
|
|
211
|
-
"skills": [
|
|
212
|
-
".forge/skills/bug-fixer-skills.md",
|
|
213
|
-
".forge/skills/supervisor-skills.md",
|
|
214
|
-
".forge/skills/architect-skills.md",
|
|
215
|
-
".forge/skills/engineer-skills.md",
|
|
216
|
-
".forge/skills/generic-skills.md"
|
|
217
|
-
],
|
|
218
|
-
"templates": [
|
|
219
|
-
".forge/templates/PROGRESS_TEMPLATE.md"
|
|
220
|
-
],
|
|
221
|
-
"sub_workflows": [
|
|
222
|
-
".forge/workflows/plan_task.md",
|
|
223
|
-
".forge/workflows/implement_plan.md",
|
|
224
|
-
".forge/workflows/review_plan.md",
|
|
225
|
-
".forge/workflows/review_code.md",
|
|
226
|
-
".forge/workflows/architect_approve.md",
|
|
227
|
-
".forge/workflows/commit_task.md"
|
|
228
|
-
],
|
|
229
|
-
"kb_docs": [
|
|
230
|
-
"{KB_PATH}/architecture/stack.md",
|
|
231
|
-
"{KB_PATH}/architecture/routing.md"
|
|
232
|
-
],
|
|
233
|
-
"config_fields": [
|
|
234
|
-
"commands.test",
|
|
235
|
-
"paths.engineering"
|
|
236
|
-
]
|
|
237
|
-
},
|
|
238
273
|
"implement_plan": {
|
|
239
274
|
"personas": [
|
|
240
275
|
".forge/personas/engineer.md"
|
|
@@ -258,39 +293,6 @@
|
|
|
258
293
|
"paths.engineering"
|
|
259
294
|
]
|
|
260
295
|
},
|
|
261
|
-
"orchestrate_task": {
|
|
262
|
-
"personas": [
|
|
263
|
-
".forge/personas/architect.md",
|
|
264
|
-
".forge/personas/engineer.md",
|
|
265
|
-
".forge/personas/supervisor.md",
|
|
266
|
-
".forge/personas/bug-fixer.md",
|
|
267
|
-
".forge/personas/collator.md",
|
|
268
|
-
".forge/personas/qa-engineer.md"
|
|
269
|
-
],
|
|
270
|
-
"skills": [
|
|
271
|
-
".forge/skills/architect-skills.md",
|
|
272
|
-
".forge/skills/engineer-skills.md",
|
|
273
|
-
".forge/skills/supervisor-skills.md",
|
|
274
|
-
".forge/skills/generic-skills.md"
|
|
275
|
-
],
|
|
276
|
-
"templates": [],
|
|
277
|
-
"sub_workflows": [
|
|
278
|
-
".forge/workflows/plan_task.md",
|
|
279
|
-
".forge/workflows/implement_plan.md",
|
|
280
|
-
".forge/workflows/review_plan.md",
|
|
281
|
-
".forge/workflows/review_code.md",
|
|
282
|
-
".forge/workflows/fix_bug.md",
|
|
283
|
-
".forge/workflows/architect_approve.md",
|
|
284
|
-
".forge/workflows/commit_task.md",
|
|
285
|
-
".forge/workflows/validate_task.md"
|
|
286
|
-
],
|
|
287
|
-
"kb_docs": [
|
|
288
|
-
"{KB_PATH}/architecture/stack.md"
|
|
289
|
-
],
|
|
290
|
-
"config_fields": [
|
|
291
|
-
"paths.engineering"
|
|
292
|
-
]
|
|
293
|
-
},
|
|
294
296
|
"plan_task": {
|
|
295
297
|
"personas": [
|
|
296
298
|
".forge/personas/architect.md"
|
|
@@ -89,14 +89,21 @@ Personas live in `.forge/personas/`.
|
|
|
89
89
|
|
|
90
90
|
Only include rows for workflow files that actually exist on disk. Check each:
|
|
91
91
|
|
|
92
|
+
Atomic workflows (LLM-generated markdown in `.forge/workflows/`):
|
|
93
|
+
|
|
92
94
|
- `.forge/workflows/plan_task.md` → "Research codebase → implementation plan"
|
|
93
95
|
- `.forge/workflows/implement_plan.md` → "Execute approved plan → code changes"
|
|
94
|
-
- `.forge/workflows/fix_bug.md` → "Triage → fix → verify"
|
|
95
|
-
- `.forge/workflows/orchestrate_task.md` → "Full task pipeline (plan → implement → review → commit)"
|
|
96
|
-
- `.forge/workflows/run_sprint.md` → "Full sprint orchestration"
|
|
97
96
|
- `.forge/workflows/architect_sprint_plan.md` → "Sprint planning and task decomposition"
|
|
98
97
|
- `.forge/workflows/architect_sprint_intake.md` → "Sprint intake and requirements elicitation"
|
|
99
98
|
|
|
99
|
+
Orchestration is deterministic JS, not prose. The LLM orchestration workflows
|
|
100
|
+
(`orchestrate_task` / `run_sprint` / `fix_bug`) are **retired** — link the JS
|
|
101
|
+
drivers in `.claude/workflows/` instead (only include rows where the file exists):
|
|
102
|
+
|
|
103
|
+
- `.claude/workflows/wfl-run-task.js` → "Full task pipeline (plan → implement → review → approve → commit)"
|
|
104
|
+
- `.claude/workflows/wfl-run-sprint.js` → "Full sprint orchestration"
|
|
105
|
+
- `.claude/workflows/wfl-fix-bug.js` → "Triage → fix → verify"
|
|
106
|
+
|
|
100
107
|
```markdown
|
|
101
108
|
<!-- forge-workflow-links: managed by Forge — do not edit manually -->
|
|
102
109
|
## Forge Workflows
|
|
@@ -105,13 +112,13 @@ Only include rows for workflow files that actually exist on disk. Check each:
|
|
|
105
112
|
|----------|---------|
|
|
106
113
|
| [Plan](.forge/workflows/plan_task.md) | Research codebase → implementation plan |
|
|
107
114
|
| [Implement](.forge/workflows/implement_plan.md) | Execute approved plan → code changes |
|
|
108
|
-
| [
|
|
109
|
-
| [Run
|
|
110
|
-
| [
|
|
115
|
+
| [Run task](.claude/workflows/wfl-run-task.js) | Full task pipeline (plan → implement → review → approve → commit) |
|
|
116
|
+
| [Run sprint](.claude/workflows/wfl-run-sprint.js) | Full sprint orchestration |
|
|
117
|
+
| [Fix bug](.claude/workflows/wfl-fix-bug.js) | Triage → fix → verify |
|
|
111
118
|
<!-- /forge-workflow-links -->
|
|
112
119
|
```
|
|
113
120
|
|
|
114
|
-
(Only include rows where the referenced
|
|
121
|
+
(Only include rows where the referenced file exists on disk.)
|
|
115
122
|
|
|
116
123
|
## KB Integrity Check
|
|
117
124
|
|