@entelligentsia/forgecli 0.20.0 → 0.20.3

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 (24) hide show
  1. package/CHANGELOG.md +51 -0
  2. package/dist/extensions/forgecli/forge-init/phase4-register.js +19 -0
  3. package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
  4. package/dist/forge-payload/commands/update.md +23 -1
  5. package/dist/forge-payload/schemas/_defs/phaseSummary.schema.json +18 -0
  6. package/dist/forge-payload/schemas/bug.schema.json +40 -0
  7. package/dist/forge-payload/schemas/collation-state.schema.json +16 -0
  8. package/dist/forge-payload/schemas/config.schema.json +215 -0
  9. package/dist/forge-payload/schemas/enum-catalog.json +71 -0
  10. package/dist/forge-payload/schemas/event-sidecar.schema.json +22 -0
  11. package/dist/forge-payload/schemas/event.schema.json +184 -0
  12. package/dist/forge-payload/schemas/feature.schema.json +22 -0
  13. package/dist/forge-payload/schemas/progress-entry.schema.json +16 -0
  14. package/dist/forge-payload/schemas/project-context.schema.json +167 -0
  15. package/dist/forge-payload/schemas/project-overlay.schema.json +25 -0
  16. package/dist/forge-payload/schemas/proposal.schema.json +40 -0
  17. package/dist/forge-payload/schemas/sprint.schema.json +27 -0
  18. package/dist/forge-payload/schemas/structure-versions.schema.json +57 -0
  19. package/dist/forge-payload/schemas/task.schema.json +43 -0
  20. package/dist/forge-payload/schemas/transitions/bug.json +31 -0
  21. package/dist/forge-payload/schemas/transitions/sprint.json +46 -0
  22. package/dist/forge-payload/schemas/transitions/task.json +109 -0
  23. package/dist/forge-payload/tools/manage-config.cjs +120 -2
  24. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -7,6 +7,57 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.20.3] — 2026-05-25
11
+
12
+ ### Fixed
13
+
14
+ - **update.md Row 1: config refresh always runs.** Row 1 ("up to date, no
15
+ pending migrations") previously said "exit" — causing the agent to skip
16
+ Step 4 entirely, including the config refresh (forgeRoot, forgeRef,
17
+ backfill). Missing config fields accumulate across version boundaries;
18
+ backfill ensures the config stays structurally complete after every
19
+ `/forge:update` invocation. Row 1 now executes Step 4 config refresh
20
+ before proceeding to Step 5.
21
+
22
+ ## [0.20.2] — 2026-05-25
23
+
24
+ ### Added
25
+
26
+ - **`manage-config backfill` subcommand** — schema-validated config field backfill.
27
+ Reads `$FORGE_ROOT/schemas/config.schema.json`, compares against current
28
+ `.forge/config.json`, and writes defaults for any missing fields with
29
+ schema-defined defaults. Also stamps the top-level `version` field from
30
+ the bundled plugin version. Supports `--dry-run` for preview.
31
+ Fixes the root cause of `/forge:health` config-incompleteness findings:
32
+ the update flow now deterministically backfills missing config fields
33
+ instead of relying on the LLM agent to compose them manually.
34
+
35
+ ### Changed
36
+
37
+ - **update.md Step 4** — calls `manage-config backfill` after writing
38
+ `paths.forgeRoot`/`paths.forgeRef`, ensuring all schema-required and
39
+ schema-defaulted fields are present after every update.
40
+ - **forge-init Phase 4** — now writes `paths.forgeRef` (FR-010) and calls
41
+ `manage-config backfill` after `paths.forgeRoot`, ensuring fresh inits
42
+ also have complete config fields.
43
+ - **`parseArgs` in manage-config.cjs** — boolean flags (e.g. `--dry-run`)
44
+ without a following value are now treated as `true` instead of being
45
+ silently dropped.
46
+
47
+ ## [0.20.1] — 2026-05-25
48
+
49
+ ### Fixed
50
+
51
+ - **build-payload: expand schemas/ (dotless) to mirror full forge/forge/schemas/.**
52
+ Previously only structure-manifest.json was copied to the dotless schemas/
53
+ dir. Plugin command files (health.md, etc.) that reference
54
+ `$FORGE_ROOT/schemas/config.schema.json` at runtime couldn't find it — the
55
+ file only existed in `.schemas/` (dotted). The build now recursively copies
56
+ all `.json` files from forge/forge/schemas/ into schemas/ (skipping
57
+ `__tests__`), including enum-catalog.json, transitions/*.json, and all
58
+ schema files. This resolves /forge:health config-validation failures in
59
+ forge-cli projects.
60
+
10
61
  ## [0.20.0] — 2026-05-25
11
62
 
12
63
  ### Changed
@@ -16,6 +16,18 @@ import * as path from "node:path";
16
16
  import { deleteInitProgress } from "../init-progress.js";
17
17
  import { execFileAsync, runToolAdvisory } from "../lib/exec-helpers.js";
18
18
  import { getRefreshKbLinksHandler } from "../refresh-kb-links.js";
19
+ /** Read the bundled forge version from .claude-plugin/plugin.json */
20
+ function getBundledForgeVersion(bundleRoot) {
21
+ try {
22
+ const pluginPath = path.join(bundleRoot, ".claude-plugin", "plugin.json");
23
+ const raw = fs.readFileSync(pluginPath, "utf8");
24
+ const plugin = JSON.parse(raw);
25
+ return typeof plugin.version === "string" ? plugin.version : "0.0.0";
26
+ }
27
+ catch {
28
+ return "0.0.0";
29
+ }
30
+ }
19
31
  // ── Private helpers ────────────────────────────────────────────────────────
20
32
  function updateGitignore(cwd, ctx) {
21
33
  const gitignorePath = path.join(cwd, ".gitignore");
@@ -175,6 +187,13 @@ export async function runPhase4(ctx4) {
175
187
  forgeRootToStamp = bundleRoot;
176
188
  }
177
189
  await runToolAdvisory(manageConfigTool, ["set", "paths.forgeRoot", forgeRootToStamp], cwd, ctx, "step 4-1 paths.forgeRoot");
190
+ // Write paths.forgeRef (FR-010) — the bundled plugin version
191
+ const bundledVersion = getBundledForgeVersion(bundleRoot);
192
+ if (bundledVersion && bundledVersion !== "0.0.0") {
193
+ await runToolAdvisory(manageConfigTool, ["set", "paths.forgeRef", bundledVersion], cwd, ctx, "step 4-1 paths.forgeRef");
194
+ }
195
+ // Backfill missing config fields from schema defaults (version, paths.*, etc.)
196
+ await runToolAdvisory(manageConfigTool, ["backfill", "--forge-root", bundleRoot], cwd, ctx, "step 4-1 config backfill");
178
197
  }
179
198
  const schemasSrc = path.join(bundleRoot, ".schemas");
180
199
  const schemasDest = path.join(cwd, ".forge", "schemas");
@@ -1 +1 @@
1
- {"version":3,"file":"phase4-register.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/phase4-register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phase4-register.js","sourceRoot":"","sources":["../../../../src/extensions/forgecli/forge-init/phase4-register.ts"],"names":[],"mappings":"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"}
@@ -244,7 +244,7 @@ Now evaluate — **stop at the first matching row and follow only that row's act
244
244
 
245
245
  | # | Condition | Action |
246
246
  |---|-----------|--------|
247
- | 1 | `REMOTE_VERSION` == `LOCAL_VERSION` and `LOCAL_VERSION` == baseline | Print "Forge {LOCAL_VERSION} — up to date. No pending migrations." and **exit**. |
247
+ | 1 | `REMOTE_VERSION` == `LOCAL_VERSION` and `LOCAL_VERSION` == baseline | Print "Forge {LOCAL_VERSION} — up to date. No pending migrations." Then execute **Step 4 config refresh** (paths.forgeRoot, paths.forgeRef, backfill) and proceed to **Step 5**. |
248
248
  | 2 | `REMOTE_VERSION` == `LOCAL_VERSION` and `LOCAL_VERSION` != baseline | Jump to **Step 2B** (project migration — no install needed). |
249
249
  | 3 | `IS_CANARY` is true | Jump to **Step 2B** (canary — no install needed). |
250
250
  | 4 | `LOCAL_VERSION` > `REMOTE_VERSION` | Print "Local version ({LOCAL_VERSION}) is ahead of the release channel ({REMOTE_VERSION}). No install needed — applying any pending project migrations." then jump to **Step 2B**. |
@@ -469,6 +469,13 @@ node "$FORGE_ROOT/tools/banners.cjs" --phase 4 7 "Apply migrations" forge \
469
469
  > before any migration targets or regeneration commands execute. This ensures all
470
470
  > subsequent tool invocations in Step 4 (including `build-init-context.cjs` called
471
471
  > by regeneration sub-steps) use the current, correct plugin path.
472
+ >
473
+ > **Config refresh always runs.** The Step 4 header section (forgeRoot, forgeRef,
474
+ > backfill) executes regardless of whether migrations are pending — even Row 1
475
+ > ("up to date") proceeds through this section before skipping to Step 5. The
476
+ > "skip to Step 5" directive skips only the migration chain walk and regeneration.
477
+ > Missing config fields can accumulate across version boundaries; backfill ensures
478
+ > the config stays structurally complete after every `/forge:update` invocation.
472
479
 
473
480
  **Refresh `paths.forgeRoot` before applying migrations:**
474
481
 
@@ -485,6 +492,21 @@ LOCAL_VERSION=$(node -e "console.log(require('$FORGE_ROOT/.claude-plugin/plugin.
485
492
  node "$FORGE_ROOT/tools/manage-config.cjs" set paths.forgeRef "$LOCAL_VERSION"
486
493
  ```
487
494
 
495
+ **Backfill missing config fields:** Config schema evolves across versions — new
496
+ required or recommended fields may have been added since the project was last
497
+ initialized. `manage-config backfill` reads the config schema, compares it
498
+ against the current `.forge/config.json`, and writes defaults for any missing
499
+ fields with schema-defined defaults. It also stamps the top-level `version`
500
+ field from the bundled plugin version. Run after setting forgeRoot/forgeRef:
501
+
502
+ ```sh
503
+ node "$FORGE_ROOT/tools/manage-config.cjs" backfill --forge-root "$FORGE_ROOT"
504
+ ```
505
+
506
+ If the project was recently initialized and all fields are already present, the
507
+ command prints `〇 No missing fields to backfill.` and exits cleanly —
508
+ no changes, no side effects.
509
+
488
510
  Determine the baseline version:
489
511
  - Use `migratedFrom` from `CACHE_FILE` (set in Step 1)
490
512
  - Or the `--from <version>` argument if provided
@@ -0,0 +1,18 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/_defs/phaseSummary.schema.json",
4
+ "title": "PhaseSummary",
5
+ "description": "Shared shape for terse structured summaries of phase artifacts. Single-sourced under _defs/ and $ref'd from task.schema.json and bug.schema.json. Optional bug-only `route` field is permitted on every $ref site but only meaningful on the triage phase summary written by meta-fix-bug.md.",
6
+ "type": "object",
7
+ "required": ["objective", "written_at"],
8
+ "properties": {
9
+ "objective": { "type": "string", "maxLength": 280 },
10
+ "key_changes": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 12 },
11
+ "findings": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 12 },
12
+ "verdict": { "type": "string", "enum": ["approved", "revision", "n/a"] },
13
+ "written_at": { "type": "string", "format": "date-time" },
14
+ "artifact_ref":{ "type": "string", "description": "Relative path to the full artifact" },
15
+ "route": { "type": "string", "enum": ["A", "B"], "description": "Fix-bug pipeline route decision. Only set on the triage phase summary by meta-fix-bug.md. A = short-circuit (skip plan-fix + review-plan); B = full loop (default). Optional and meaningless on non-triage phases — see meta-fix-bug.md § Triage Judgement." }
16
+ },
17
+ "additionalProperties": false
18
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/bug.schema.json",
4
+ "title": "Bug",
5
+ "type": "object",
6
+ "required": ["bugId", "title", "severity", "status", "path", "reportedAt"],
7
+ "properties": {
8
+ "bugId": { "type": "string" },
9
+ "title": { "type": "string" },
10
+ "description": { "type": "string" },
11
+ "severity": { "type": "string", "enum": ["critical", "major", "minor"] },
12
+ "status": { "type": "string", "enum": ["reported", "triaged", "in-progress", "fixed"] },
13
+ "path": { "type": "string" },
14
+ "rootCauseCategory": {
15
+ "type": "string",
16
+ "enum": ["validation", "auth", "business-rule", "data-integrity", "race-condition", "integration", "configuration", "regression"]
17
+ },
18
+ "similarBugs": { "type": "array", "items": { "type": "string" } },
19
+ "checklistItemAdded": { "type": "boolean" },
20
+ "businessRuleUpdated": { "type": "boolean" },
21
+ "githubIssue": { "type": "string", "format": "uri" },
22
+ "reportedAt": { "type": "string", "format": "date-time" },
23
+ "resolvedAt": { "type": "string", "format": "date-time" },
24
+ "summaries": {
25
+ "type": "object",
26
+ "description": "Terse structured summaries of phase artifacts. Optional; full artifacts on disk remain authoritative.",
27
+ "properties": {
28
+ "plan": { "$ref": "_defs/phaseSummary.schema.json" },
29
+ "triage": { "$ref": "_defs/phaseSummary.schema.json" },
30
+ "review_plan": { "$ref": "_defs/phaseSummary.schema.json" },
31
+ "implementation": { "$ref": "_defs/phaseSummary.schema.json" },
32
+ "code_review": { "$ref": "_defs/phaseSummary.schema.json" },
33
+ "validation": { "$ref": "_defs/phaseSummary.schema.json" },
34
+ "approve": { "$ref": "_defs/phaseSummary.schema.json" }
35
+ },
36
+ "additionalProperties": false
37
+ }
38
+ },
39
+ "additionalProperties": false
40
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/collation-state.schema.json",
4
+ "title": "Collation State",
5
+ "description": "Last-collation watermark written to .forge/store/COLLATION_STATE.json",
6
+ "type": "object",
7
+ "required": ["collatedAt", "featureCount", "sprintCount", "taskCount", "bugCount"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "collatedAt": { "type": "string", "format": "date-time" },
11
+ "featureCount": { "type": "integer", "minimum": 0 },
12
+ "sprintCount": { "type": "integer", "minimum": 0 },
13
+ "taskCount": { "type": "integer", "minimum": 0 },
14
+ "bugCount": { "type": "integer", "minimum": 0 }
15
+ }
16
+ }
@@ -0,0 +1,215 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://github.com/Entelligentsia/agentic-skills/forge/config.schema.json",
4
+ "title": "ForgeConfig",
5
+ "description": "Schema for .forge/config.json — the per-project Forge configuration file. Canonical single-source schema (FORGE-S25-T12 reconciled sdlc-config.schema.json into this file and deleted the sibling). Generated by /forge:init and refreshed by /forge:update.",
6
+ "type": "object",
7
+ "required": ["version", "project", "paths"],
8
+ "properties": {
9
+ "version": {
10
+ "type": "string",
11
+ "description": "Config schema version (e.g. '1.0'). Used for migration support."
12
+ },
13
+ "project": {
14
+ "type": "object",
15
+ "required": ["prefix", "name"],
16
+ "properties": {
17
+ "prefix": {
18
+ "type": "string",
19
+ "description": "Short prefix for task/sprint/bug IDs (e.g. ACME)"
20
+ },
21
+ "name": {
22
+ "type": "string",
23
+ "description": "Human-readable project name"
24
+ },
25
+ "description": {
26
+ "type": "string",
27
+ "description": "One-line project description"
28
+ }
29
+ }
30
+ },
31
+ "stack": {
32
+ "type": "object",
33
+ "description": "Detected/declared project technology stack. Optional fields nullable because not every project ships e.g. a frontend or task queue.",
34
+ "properties": {
35
+ "languages": {
36
+ "type": "array",
37
+ "items": { "type": "string" },
38
+ "description": "Primary languages detected"
39
+ },
40
+ "framework": { "type": ["string", "null"], "description": "Primary backend framework" },
41
+ "frontendFramework": { "type": ["string", "null"], "description": "Frontend framework if detected" },
42
+ "database": { "type": ["string", "null"], "description": "Primary database" },
43
+ "taskQueue": { "type": ["string", "null"], "description": "Task queue if detected (celery, sidekiq, etc.)" },
44
+ "containerisation": { "type": ["string", "null"], "description": "Container tooling if detected" }
45
+ }
46
+ },
47
+ "commands": {
48
+ "type": "object",
49
+ "description": "Resolved project tooling commands. Workflows reference these via {COMMAND_TEST} / {LINT_COMMAND} placeholders.",
50
+ "properties": {
51
+ "test": { "type": "string" },
52
+ "build": { "type": "string" },
53
+ "lint": { "type": "string" },
54
+ "syntaxCheck": {
55
+ "type": "object",
56
+ "additionalProperties": { "type": "string" }
57
+ },
58
+ "migrate": { "type": "string" },
59
+ "migrateCheck": { "type": "string" }
60
+ }
61
+ },
62
+ "paths": {
63
+ "type": "object",
64
+ "required": ["engineering", "store", "forgeRoot"],
65
+ "properties": {
66
+ "engineering": { "type": "string", "default": "engineering" },
67
+ "store": { "type": "string", "default": ".forge/store" },
68
+ "workflows": { "type": "string", "default": ".forge/workflows" },
69
+ "commands": { "type": "string", "default": ".claude/commands" },
70
+ "templates": { "type": "string", "default": ".forge/templates" },
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
+ "forgeRoot": { "type": "string", "description": "Absolute path to the installed Forge plugin root. Set at init time and refreshed by /forge:update. Used by generated workflows to invoke Forge tools without requiring $CLAUDE_PLUGIN_ROOT in subagent contexts." },
73
+ "forgeRef": { "type": "string", "description": "Pinned Forge plugin reference (tag or commit) the project was generated against." }
74
+ }
75
+ },
76
+ "pipeline": {
77
+ "type": "object",
78
+ "description": "Optional pipeline customisation for the default pipeline",
79
+ "properties": {
80
+ "skipPhases": {
81
+ "type": "array",
82
+ "items": { "type": "string" }
83
+ },
84
+ "maxReviewIterations": {
85
+ "type": "integer",
86
+ "minimum": 1,
87
+ "default": 3
88
+ },
89
+ "includeTokenDataInBugReports": {
90
+ "type": "boolean",
91
+ "description": "If set, silently opt in (true) or out (false) of appending sprint token usage data to Forge bug reports. When absent, the user is prompted at report time."
92
+ }
93
+ }
94
+ },
95
+ "pipelines": {
96
+ "type": "object",
97
+ "description": "Named pipeline definitions. Each key is a pipeline name that tasks can reference via their `pipeline` field. The `default` pipeline is used when a task has no `pipeline` field. Projects define custom pipelines to route tasks to specialized agent commands.",
98
+ "additionalProperties": {
99
+ "type": "object",
100
+ "required": ["phases"],
101
+ "properties": {
102
+ "description": {
103
+ "type": "string",
104
+ "description": "Human-readable description of when to use this pipeline"
105
+ },
106
+ "phases": {
107
+ "type": "array",
108
+ "description": "Ordered list of pipeline phases. Each phase maps to a slash command.",
109
+ "items": {
110
+ "type": "object",
111
+ "required": ["command", "role"],
112
+ "properties": {
113
+ "command": {
114
+ "type": "string",
115
+ "description": "Slash command name (without /) to invoke for this phase"
116
+ },
117
+ "role": {
118
+ "type": "string",
119
+ "enum": ["plan", "review-plan", "implement", "review-code", "validate", "approve", "commit"],
120
+ "description": "Semantic role of this phase in the pipeline lifecycle"
121
+ },
122
+ "model": {
123
+ "type": "string",
124
+ "description": "Optional model override for this phase"
125
+ },
126
+ "maxIterations": {
127
+ "type": "integer",
128
+ "description": "Max revision loop iterations for review phases",
129
+ "default": 3
130
+ },
131
+ "on_revision": {
132
+ "type": "string",
133
+ "description": "Command name of the phase to re-invoke on 'Revision Required'. Defaults to the nearest preceding non-review phase if omitted."
134
+ },
135
+ "workflow": {
136
+ "type": "string",
137
+ "description": "Optional path to a workflow file. When set, the orchestrator reads and follows this file directly instead of deriving the workflow from the command name. Use for custom phase commands in engineering/commands/."
138
+ }
139
+ }
140
+ }
141
+ }
142
+ }
143
+ }
144
+ },
145
+ "installedSkills": {
146
+ "type": "array",
147
+ "items": { "type": "string" },
148
+ "description": "Marketplace skill names installed during forge:init or recommended by forge:health. Used to wire skill invocations into generated personas and workflows.",
149
+ "examples": ["vue-best-practices", "stripe-integration", "claude-api"]
150
+ },
151
+ "sprint": {
152
+ "type": "object",
153
+ "description": "Optional sprint execution configuration",
154
+ "properties": {
155
+ "execution": {
156
+ "type": "object",
157
+ "properties": {
158
+ "mode": {
159
+ "type": "string",
160
+ "enum": ["sequential", "wave-parallel", "full-parallel"],
161
+ "default": "sequential"
162
+ },
163
+ "maxConcurrentAgents": {
164
+ "type": "integer",
165
+ "default": 3
166
+ }
167
+ }
168
+ }
169
+ }
170
+ },
171
+ "calibrationBaseline": {
172
+ "type": "object",
173
+ "description": "Calibration baseline written by /forge:init after skill generation. Records the state at calibration time so /forge:calibrate can detect drift.",
174
+ "properties": {
175
+ "lastCalibrated": { "type": "string", "description": "ISO date (YYYY-MM-DD) of the last calibration run" },
176
+ "version": { "type": "string", "description": "Plugin version string at calibration time (e.g. 0.9.3)" },
177
+ "masterIndexHash": { "type": "string", "description": "SHA-256 hex digest of the semantic content of engineering/MASTER_INDEX.md at calibration time" },
178
+ "sprintsCovered": { "type": "array", "items": { "type": "string" }, "description": "Sprint IDs whose tasks and outcomes were included in the calibration baseline" }
179
+ }
180
+ },
181
+ "calibrationHistory": {
182
+ "type": "array",
183
+ "description": "Audit trail of calibration runs. Each entry records the drift categories detected and the patches applied.",
184
+ "items": {
185
+ "type": "object",
186
+ "required": ["date", "version", "categories", "patches"],
187
+ "additionalProperties": false,
188
+ "properties": {
189
+ "date": { "type": "string", "description": "ISO date (YYYY-MM-DD) of this calibration run" },
190
+ "version": { "type": "string", "description": "Plugin version at calibration time" },
191
+ "categories": { "type": "array", "items": { "type": "string" }, "description": "Drift categories detected: technical, business, retrospective, acceptance-criteria" },
192
+ "patches": {
193
+ "type": "array",
194
+ "items": {
195
+ "type": "object",
196
+ "required": ["target", "type", "applied"],
197
+ "additionalProperties": false,
198
+ "properties": {
199
+ "target": { "type": "string", "description": "Regeneration target (e.g. personas:engineer, skills:supervisor-skills)" },
200
+ "type": { "type": "string", "enum": ["regenerate"], "description": "Patch type (currently only 'regenerate' is supported)" },
201
+ "applied": { "type": "boolean", "description": "Whether this patch was applied (true if approved and succeeded, false if skipped or failed)" }
202
+ }
203
+ }
204
+ }
205
+ }
206
+ }
207
+ },
208
+ "mode": {
209
+ "type": "string",
210
+ "enum": ["full", "fast"],
211
+ "description": "Init mode. 'fast' means scaffolding was generated by /forge:init --fast (stubs present, heavy artifacts deferred to first use). 'full' means all artifacts are generated. Absent on pre-0.12 projects — treated as 'full' by all readers. Flipped to 'full' by /forge:regenerate (default) or /forge:materialize --all."
212
+ }
213
+ },
214
+ "additionalProperties": false
215
+ }
@@ -0,0 +1,71 @@
1
+ {
2
+ "version": "0.51.1",
3
+ "generated": "2026-05-23",
4
+ "note": "Authoritative enum catalog. Source: build-enum-catalog.cjs. Regenerate via node forge/tools/build-manifest.cjs.",
5
+ "enums": {
6
+ "task.status": [
7
+ "draft",
8
+ "planned",
9
+ "plan-approved",
10
+ "implementing",
11
+ "implemented",
12
+ "review-approved",
13
+ "approved",
14
+ "committed",
15
+ "plan-revision-required",
16
+ "code-revision-required",
17
+ "blocked",
18
+ "escalated",
19
+ "abandoned"
20
+ ],
21
+ "sprint.status": [
22
+ "planning",
23
+ "active",
24
+ "completed",
25
+ "retrospective-done",
26
+ "blocked",
27
+ "partially-completed",
28
+ "abandoned"
29
+ ],
30
+ "bug.status": [
31
+ "reported",
32
+ "triaged",
33
+ "in-progress",
34
+ "fixed"
35
+ ]
36
+ },
37
+ "commandNames": [
38
+ "forge:sprint-intake",
39
+ "forge:plan",
40
+ "forge:review-plan",
41
+ "forge:implement",
42
+ "forge:review-code",
43
+ "forge:fix-bug",
44
+ "forge:sprint-plan",
45
+ "forge:run-task",
46
+ "forge:run-sprint",
47
+ "forge:collate",
48
+ "forge:retrospective",
49
+ "forge:approve",
50
+ "forge:commit",
51
+ "forge:enhance",
52
+ "forge:quiz-agent",
53
+ "forge:validate",
54
+ "forge:init",
55
+ "forge:health",
56
+ "forge:regenerate",
57
+ "forge:update",
58
+ "forge:add-task",
59
+ "forge:add-pipeline",
60
+ "forge:calibrate",
61
+ "forge:materialize",
62
+ "forge:remove",
63
+ "forge:report-bug",
64
+ "forge:store-query",
65
+ "forge:store-repair",
66
+ "forge:config",
67
+ "forge:ask",
68
+ "forge:store-custodian",
69
+ "forge:refresh-kb-links"
70
+ ]
71
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "forge/event-sidecar.schema.json",
4
+ "title": "Event Sidecar",
5
+ "description": "Subset of event schema — token/cost/duration fields written by agents before canonical merge. All fields other than eventId are optional; presence enforcement happens on the canonical event, not the sidecar.",
6
+ "type": "object",
7
+ "required": ["eventId"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "eventId": { "type": "string", "minLength": 1 },
11
+ "inputTokens": { "type": "integer", "minimum": 0 },
12
+ "outputTokens": { "type": "integer", "minimum": 0 },
13
+ "cacheReadTokens": { "type": "integer", "minimum": 0 },
14
+ "cacheWriteTokens": { "type": "integer", "minimum": 0 },
15
+ "model": { "type": "string", "maxLength": 120 },
16
+ "provider": { "type": "string", "maxLength": 60 },
17
+ "durationMinutes": { "type": "number", "minimum": 0 },
18
+ "startTimestamp": { "type": "string", "format": "date-time" },
19
+ "endTimestamp": { "type": "string", "format": "date-time" },
20
+ "tokenSource": { "type": "string", "enum": ["reported", "estimated"] }
21
+ }
22
+ }