@entelligentsia/forgecli 0.1.0 → 0.3.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/CHANGELOG.md +138 -0
- package/README.md +177 -38
- package/dist/bin/argv.js +5 -0
- package/dist/bin/argv.js.map +1 -1
- package/dist/bin/forge.js +1 -0
- package/dist/bin/forge.js.map +1 -1
- package/dist/extensions/forgecli/ask-user-tool.d.ts +17 -0
- package/dist/extensions/forgecli/ask-user-tool.js +139 -0
- package/dist/extensions/forgecli/ask-user-tool.js.map +1 -0
- package/dist/extensions/forgecli/forge-commands.d.ts +21 -0
- package/dist/extensions/forgecli/forge-commands.js +141 -0
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-init.d.ts +26 -0
- package/dist/extensions/forgecli/forge-init.js +948 -0
- package/dist/extensions/forgecli/forge-init.js.map +1 -0
- package/dist/extensions/forgecli/health-check.d.ts +18 -0
- package/dist/extensions/forgecli/health-check.js +154 -0
- package/dist/extensions/forgecli/health-check.js.map +1 -0
- package/dist/extensions/forgecli/hook-dispatcher.d.ts +34 -1
- package/dist/extensions/forgecli/hook-dispatcher.js +237 -3
- package/dist/extensions/forgecli/hook-dispatcher.js.map +1 -1
- package/dist/extensions/forgecli/index.js +28 -11
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/init-context.d.ts +99 -0
- package/dist/extensions/forgecli/init-context.js +163 -0
- package/dist/extensions/forgecli/init-context.js.map +1 -0
- package/dist/extensions/forgecli/init-progress.d.ts +39 -0
- package/dist/extensions/forgecli/init-progress.js +117 -0
- package/dist/extensions/forgecli/init-progress.js.map +1 -0
- package/dist/extensions/forgecli/refresh-kb-links.d.ts +18 -0
- package/dist/extensions/forgecli/refresh-kb-links.js +228 -0
- package/dist/extensions/forgecli/refresh-kb-links.js.map +1 -0
- package/dist/extensions/forgecli/store-validator.d.ts +13 -0
- package/dist/extensions/forgecli/store-validator.js +35 -0
- package/dist/extensions/forgecli/store-validator.js.map +1 -0
- package/dist/extensions/forgecli/transition-guard.d.ts +20 -0
- package/dist/extensions/forgecli/transition-guard.js +125 -0
- package/dist/extensions/forgecli/transition-guard.js.map +1 -0
- package/dist/forge-payload/.base-pack/commands/approve.md +22 -0
- package/dist/forge-payload/.base-pack/commands/collate.md +22 -0
- package/dist/forge-payload/.base-pack/commands/commit.md +22 -0
- package/dist/forge-payload/.base-pack/commands/enhance.md +37 -0
- package/dist/forge-payload/.base-pack/commands/fix-bug.md +22 -0
- package/dist/forge-payload/.base-pack/commands/implement.md +22 -0
- package/dist/forge-payload/.base-pack/commands/plan.md +22 -0
- package/dist/forge-payload/.base-pack/commands/quiz-agent.md +22 -0
- package/dist/forge-payload/.base-pack/commands/retrospective.md +22 -0
- package/dist/forge-payload/.base-pack/commands/review-code.md +22 -0
- package/dist/forge-payload/.base-pack/commands/review-plan.md +22 -0
- package/dist/forge-payload/.base-pack/commands/run-sprint.md +22 -0
- package/dist/forge-payload/.base-pack/commands/run-task.md +22 -0
- package/dist/forge-payload/.base-pack/commands/sprint-intake.md +22 -0
- package/dist/forge-payload/.base-pack/commands/sprint-plan.md +22 -0
- package/dist/forge-payload/.base-pack/commands/validate.md +22 -0
- package/dist/forge-payload/.claude-plugin/plugin.json +15 -0
- package/dist/forge-payload/.init/discovery/discover-database.md +32 -0
- package/dist/forge-payload/.init/discovery/discover-processes.md +31 -0
- package/dist/forge-payload/.init/discovery/discover-routing.md +31 -0
- package/dist/forge-payload/.init/discovery/discover-stack.md +33 -0
- package/dist/forge-payload/.init/discovery/discover-testing.md +34 -0
- package/dist/forge-payload/.init/generation/generate-kb-doc.md +60 -0
- package/dist/forge-payload/.schemas/bug.schema.json +53 -0
- package/dist/forge-payload/.schemas/collation-state.schema.json +16 -0
- package/dist/forge-payload/.schemas/event-sidecar.schema.json +22 -0
- package/dist/forge-payload/.schemas/event.schema.json +32 -0
- package/dist/forge-payload/.schemas/feature.schema.json +22 -0
- package/dist/forge-payload/.schemas/progress-entry.schema.json +16 -0
- package/dist/forge-payload/.schemas/project-context.schema.json +167 -0
- package/dist/forge-payload/.schemas/project-overlay.schema.json +25 -0
- package/dist/forge-payload/.schemas/sprint.schema.json +27 -0
- package/dist/forge-payload/.schemas/structure-versions.schema.json +57 -0
- package/dist/forge-payload/.schemas/task.schema.json +58 -0
- package/dist/forge-payload/.tools/banners.cjs +435 -0
- package/dist/forge-payload/.tools/build-context-pack.cjs +290 -0
- package/dist/forge-payload/.tools/build-init-context.cjs +322 -0
- package/dist/forge-payload/.tools/build-overlay.cjs +326 -0
- package/dist/forge-payload/.tools/build-persona-pack.cjs +226 -0
- package/dist/forge-payload/.tools/collate.cjs +1041 -0
- package/dist/forge-payload/.tools/generation-manifest.cjs +311 -0
- package/dist/forge-payload/.tools/lib/forge-root.cjs +59 -0
- package/dist/forge-payload/.tools/lib/paths.cjs +29 -0
- package/dist/forge-payload/.tools/lib/pricing.cjs +165 -0
- package/dist/forge-payload/.tools/lib/project-root.cjs +32 -0
- package/dist/forge-payload/.tools/lib/result.js +40 -0
- package/dist/forge-payload/.tools/lib/validate.js +131 -0
- package/dist/forge-payload/.tools/manage-config.cjs +340 -0
- package/dist/forge-payload/.tools/manage-versions.cjs +365 -0
- package/dist/forge-payload/.tools/seed-store.cjs +237 -0
- package/dist/forge-payload/.tools/store-cli.cjs +1123 -0
- package/dist/forge-payload/.tools/store.cjs +315 -0
- package/dist/forge-payload/.tools/substitute-placeholders.cjs +625 -0
- package/dist/forge-payload/.tools/validate-store.cjs +522 -0
- package/package.json +1 -1
- /package/dist/forge-payload/{personas → .base-pack/personas}/architect.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/bug-fixer.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/collator.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/engineer.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/librarian.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/orchestrator.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/product-manager.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/qa-engineer.md +0 -0
- /package/dist/forge-payload/{personas → .base-pack/personas}/supervisor.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/architect-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/bug-fixer-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/collator-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/engineer-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/generic-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/librarian-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/qa-engineer-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/store-custodian-skills.md +0 -0
- /package/dist/forge-payload/{skills → .base-pack/skills}/supervisor-skills.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/CODE_REVIEW_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/COST_REPORT_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/PLAN_REVIEW_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/PLAN_SUMMARY_TEMPLATE.json +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/PLAN_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/PROGRESS_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/RETROSPECTIVE_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/SPRINT_MANIFEST_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/SPRINT_REQUIREMENTS_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{templates → .base-pack/templates}/TASK_PROMPT_TEMPLATE.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/context-injection.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/event-emission-schema.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/finalize.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/_fragments/progress-reporting.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_approve.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_review_sprint_completion.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_sprint_intake.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/architect_sprint_plan.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/collator_agent.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/commit_task.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/fix_bug.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/implement_plan.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/migrate_structural.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/orchestrate_task.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/plan_task.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/quiz_agent.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/review_code.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/review_plan.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/run_sprint.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/sprint_retrospective.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/update_implementation.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/update_plan.md +0 -0
- /package/dist/forge-payload/{workflows → .base-pack/workflows}/validate_task.md +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "project-context.schema.json",
|
|
4
|
+
"title": "Project Context",
|
|
5
|
+
"description": "Machine-readable bridge file produced by the Discover phase (Phase 2) of the Forge init flow. Governs project-context.json written by the Phase 2 Discover agent and read by the T03 substitution tool. Distinct from project-overlay.schema.json, which is a per-spawn runtime context overlay; this schema captures persistent project metadata discovered at init/migrate time.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["project"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"project": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"required": ["name", "prefix"],
|
|
13
|
+
"additionalProperties": false,
|
|
14
|
+
"properties": {
|
|
15
|
+
"name": { "type": "string", "description": "Human-readable project name" },
|
|
16
|
+
"prefix": { "type": "string", "description": "Short identifier prefix (e.g. MYAPP)" },
|
|
17
|
+
"description": { "type": "string", "description": "Brief project description", "default": "" },
|
|
18
|
+
"stack": {
|
|
19
|
+
"type": "array",
|
|
20
|
+
"items": { "type": "string" },
|
|
21
|
+
"description": "Technology stack in display order (e.g. [\"Express 4.22\", \"MongoDB 7\"])",
|
|
22
|
+
"default": []
|
|
23
|
+
},
|
|
24
|
+
"commands": {
|
|
25
|
+
"type": "object",
|
|
26
|
+
"additionalProperties": false,
|
|
27
|
+
"description": "Primary project lifecycle commands",
|
|
28
|
+
"properties": {
|
|
29
|
+
"test": { "type": "string", "default": "" },
|
|
30
|
+
"build": { "type": "string", "default": "" },
|
|
31
|
+
"deploy": { "type": "string", "default": "" }
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
"architecture": {
|
|
37
|
+
"type": "object",
|
|
38
|
+
"additionalProperties": false,
|
|
39
|
+
"properties": {
|
|
40
|
+
"frameworks": {
|
|
41
|
+
"type": "object",
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"x-placeholder": "STACK_SUMMARY",
|
|
44
|
+
"description": "Primary frameworks by tier. Rendered as 'backend + frontend + database' string by T03 substitution tool.",
|
|
45
|
+
"properties": {
|
|
46
|
+
"backend": { "type": "string", "default": "" },
|
|
47
|
+
"frontend": { "type": "string", "default": "" },
|
|
48
|
+
"database": { "type": "string", "default": "" }
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
"dataAccess": {
|
|
52
|
+
"type": "string",
|
|
53
|
+
"description": "Data access pattern (e.g. 'Mongoose ODM')",
|
|
54
|
+
"default": ""
|
|
55
|
+
},
|
|
56
|
+
"deployment": {
|
|
57
|
+
"type": "string",
|
|
58
|
+
"description": "Deployment target summary (e.g. 'AWS ECS')",
|
|
59
|
+
"default": ""
|
|
60
|
+
},
|
|
61
|
+
"keyDirectories": {
|
|
62
|
+
"type": "array",
|
|
63
|
+
"items": { "type": "string" },
|
|
64
|
+
"x-placeholder": "KEY_DIRECTORIES",
|
|
65
|
+
"description": "Key source directories joined to 'routes/, admin-app/, ...' by T03.",
|
|
66
|
+
"default": []
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"entities": {
|
|
71
|
+
"type": "array",
|
|
72
|
+
"items": { "type": "string" },
|
|
73
|
+
"description": "Domain entity names (e.g. [\"User\", \"Order\", \"Product\"])",
|
|
74
|
+
"default": []
|
|
75
|
+
},
|
|
76
|
+
"conventions": {
|
|
77
|
+
"type": "object",
|
|
78
|
+
"additionalProperties": false,
|
|
79
|
+
"properties": {
|
|
80
|
+
"branching": {
|
|
81
|
+
"type": "string",
|
|
82
|
+
"x-placeholder": "BRANCHING_CONVENTION",
|
|
83
|
+
"description": "Branching strategy description (e.g. 'feature/TASK-ID-slug'). Direct string substitution by T03.",
|
|
84
|
+
"default": ""
|
|
85
|
+
},
|
|
86
|
+
"taskIdFormat": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "Task ID format pattern (e.g. 'PROJ-###')",
|
|
89
|
+
"default": ""
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
"impactCategories": {
|
|
94
|
+
"type": "array",
|
|
95
|
+
"items": { "type": "string" },
|
|
96
|
+
"x-placeholder": "IMPACT_CATEGORIES",
|
|
97
|
+
"description": "Impact/risk category labels joined to comma-separated string by T03.",
|
|
98
|
+
"default": []
|
|
99
|
+
},
|
|
100
|
+
"technicalDebt": {
|
|
101
|
+
"type": "array",
|
|
102
|
+
"items": { "type": "string" },
|
|
103
|
+
"x-placeholder": "TECHNICAL_DEBT",
|
|
104
|
+
"description": "Known technical debt items joined to comma-separated string by T03.",
|
|
105
|
+
"default": []
|
|
106
|
+
},
|
|
107
|
+
"deployment": {
|
|
108
|
+
"type": "object",
|
|
109
|
+
"additionalProperties": false,
|
|
110
|
+
"properties": {
|
|
111
|
+
"environments": {
|
|
112
|
+
"type": "array",
|
|
113
|
+
"x-placeholder": "DEPLOYMENT_ENVIRONMENTS",
|
|
114
|
+
"description": "Deployment environment definitions rendered as a markdown table by T03.",
|
|
115
|
+
"items": {
|
|
116
|
+
"type": "object",
|
|
117
|
+
"additionalProperties": false,
|
|
118
|
+
"properties": {
|
|
119
|
+
"name": { "type": "string", "default": "" },
|
|
120
|
+
"frontend": { "type": "string", "default": "" },
|
|
121
|
+
"backend": { "type": "string", "default": "" },
|
|
122
|
+
"region": { "type": "string", "default": "" }
|
|
123
|
+
}
|
|
124
|
+
},
|
|
125
|
+
"default": []
|
|
126
|
+
},
|
|
127
|
+
"impactNotes": {
|
|
128
|
+
"type": "string",
|
|
129
|
+
"description": "Freeform deployment impact notes",
|
|
130
|
+
"default": ""
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
"verification": {
|
|
135
|
+
"type": "object",
|
|
136
|
+
"x-placeholder": "VERIFICATION_COMMANDS",
|
|
137
|
+
"additionalProperties": false,
|
|
138
|
+
"description": "Full verification command suite. Rendered as 'npm run type-check, npm test, npm run build' by T03.",
|
|
139
|
+
"properties": {
|
|
140
|
+
"typeCheck": { "type": "string", "default": "" },
|
|
141
|
+
"lint": { "type": "string", "default": "" },
|
|
142
|
+
"test": { "type": "string", "default": "" },
|
|
143
|
+
"build": { "type": "string", "default": "" },
|
|
144
|
+
"infraBuild": { "type": "string", "default": "" }
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
"skillWiring": {
|
|
148
|
+
"type": "array",
|
|
149
|
+
"x-placeholder": "SKILL_DIRECTIVES",
|
|
150
|
+
"description": "Skill-to-persona wiring. Rendered as 'skill → persona1, persona2' lines by T03. Mirrors config.json skillWiring so T03 has a single source.",
|
|
151
|
+
"items": {
|
|
152
|
+
"type": "object",
|
|
153
|
+
"additionalProperties": false,
|
|
154
|
+
"required": ["skill"],
|
|
155
|
+
"properties": {
|
|
156
|
+
"skill": { "type": "string" },
|
|
157
|
+
"personas": {
|
|
158
|
+
"type": "array",
|
|
159
|
+
"items": { "type": "string" },
|
|
160
|
+
"default": []
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"default": []
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "project-overlay.schema.json",
|
|
4
|
+
"title": "Project Overlay",
|
|
5
|
+
"description": "Per-spawn context overlay materialized by the orchestrator. Budget: ≤1kB JSON.",
|
|
6
|
+
"version": "1.0.0",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["projectPrefix", "storeRoot", "indexSlice"],
|
|
9
|
+
"additionalProperties": false,
|
|
10
|
+
"properties": {
|
|
11
|
+
"version": { "type": "string", "description": "Schema version string. Read by manage-versions.cjs to populate overlayToolVersion at init time.", "default": "1.0.0" },
|
|
12
|
+
"projectPrefix": { "type": "string", "pattern": "^[A-Z][A-Z0-9-]+$" },
|
|
13
|
+
"sprintId": { "type": "string" },
|
|
14
|
+
"sprintDir": { "type": "string" },
|
|
15
|
+
"taskId": { "type": "string" },
|
|
16
|
+
"taskDir": { "type": "string" },
|
|
17
|
+
"taskStatus": { "type": "string" },
|
|
18
|
+
"bugId": { "type": "string" },
|
|
19
|
+
"bugDir": { "type": "string" },
|
|
20
|
+
"storeRoot": { "type": "string" },
|
|
21
|
+
"indexSlice": { "type": "string", "maxLength": 800 },
|
|
22
|
+
"toolCommands": { "type": "object" },
|
|
23
|
+
"lastPhaseSummary": { "type": "object" }
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forge/sprint.schema.json",
|
|
4
|
+
"title": "Sprint",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["sprintId", "title", "status", "taskIds", "createdAt"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"sprintId": { "type": "string" },
|
|
9
|
+
"feature_id": { "type": ["string", "null"] },
|
|
10
|
+
"title": { "type": "string" },
|
|
11
|
+
"description": { "type": "string" },
|
|
12
|
+
"goal": { "type": "string" },
|
|
13
|
+
"status": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": ["planning", "active", "completed", "retrospective-done", "blocked", "partially-completed", "abandoned"]
|
|
16
|
+
},
|
|
17
|
+
"taskIds": { "type": "array", "items": { "type": "string" } },
|
|
18
|
+
"dependencies": { "type": "object" },
|
|
19
|
+
"executionMode": { "type": "string", "enum": ["sequential", "wave-parallel", "full-parallel"] },
|
|
20
|
+
"createdAt": { "type": "string", "format": "date-time" },
|
|
21
|
+
"completedAt": { "type": "string", "format": "date-time" },
|
|
22
|
+
"path": { "type": "string" },
|
|
23
|
+
"humanEstimates": { "type": "object" },
|
|
24
|
+
"features": { "type": "array", "items": { "type": "string" } }
|
|
25
|
+
},
|
|
26
|
+
"additionalProperties": false
|
|
27
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "structure-versions.schema.json",
|
|
4
|
+
"title": "Structure Versions",
|
|
5
|
+
"description": "Tracks versioned structural snapshots of .forge/ elements. Lives at .forge/structure-versions.json (NOT under .forge/store/). Composition model: Working Artifact = base@pluginVersion + snapshot@currentSnapshot + user_enhancements. Snapshot-array invariant: snapshots is ordered ascending by index; currentSnapshot always equals snapshots[snapshots.length - 1].index. Idempotency: manage-versions.cjs init is a no-op if the file already exists.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["basePackVersion", "overlayToolVersion", "currentSnapshot", "snapshots"],
|
|
8
|
+
"additionalProperties": false,
|
|
9
|
+
"properties": {
|
|
10
|
+
"basePackVersion": {
|
|
11
|
+
"type": "string",
|
|
12
|
+
"description": "Plugin version at materialization time. Ties the snapshot set to a specific base-pack release."
|
|
13
|
+
},
|
|
14
|
+
"overlayToolVersion": {
|
|
15
|
+
"type": "string",
|
|
16
|
+
"description": "Version of project-overlay.schema.json at materialization time. Independent of structural drift; lets /forge:update detect runtime-contract drift."
|
|
17
|
+
},
|
|
18
|
+
"currentSnapshot": {
|
|
19
|
+
"type": "integer",
|
|
20
|
+
"minimum": 0,
|
|
21
|
+
"description": "Index of the snapshot that produced the current .forge/ working set. Always equals snapshots[snapshots.length - 1].index."
|
|
22
|
+
},
|
|
23
|
+
"snapshots": {
|
|
24
|
+
"type": "array",
|
|
25
|
+
"description": "Ordered list of snapshots, ascending by index. Index 0 is always the base-pack snapshot.",
|
|
26
|
+
"items": {
|
|
27
|
+
"type": "object",
|
|
28
|
+
"required": ["index", "createdAt", "source"],
|
|
29
|
+
"additionalProperties": false,
|
|
30
|
+
"properties": {
|
|
31
|
+
"index": {
|
|
32
|
+
"type": "integer",
|
|
33
|
+
"minimum": 0
|
|
34
|
+
},
|
|
35
|
+
"createdAt": {
|
|
36
|
+
"type": "string",
|
|
37
|
+
"format": "date-time"
|
|
38
|
+
},
|
|
39
|
+
"source": {
|
|
40
|
+
"type": "string",
|
|
41
|
+
"description": "Origin of the snapshot: 'base-pack', 'post-init', 'post-sprint:SPRINT_ID', 'manual'"
|
|
42
|
+
},
|
|
43
|
+
"enhancedElements": {
|
|
44
|
+
"type": "array",
|
|
45
|
+
"items": { "type": "string" },
|
|
46
|
+
"description": "Relative paths of .forge/ elements modified in this snapshot. Empty for snapshot 0.",
|
|
47
|
+
"default": []
|
|
48
|
+
},
|
|
49
|
+
"archivePath": {
|
|
50
|
+
"type": ["string", "null"],
|
|
51
|
+
"description": "Path to the archive directory for this snapshot, e.g. .forge/archive/snap-1/. Null for snapshot 0 (nothing to archive before first enhancement)."
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forge/task.schema.json",
|
|
4
|
+
"title": "Task",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["taskId", "sprintId", "title", "status", "path"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"taskId": { "type": "string" },
|
|
9
|
+
"feature_id": { "type": ["string", "null"] },
|
|
10
|
+
"sprintId": { "type": "string" },
|
|
11
|
+
"title": { "type": "string" },
|
|
12
|
+
"description": { "type": "string" },
|
|
13
|
+
"status": {
|
|
14
|
+
"type": "string",
|
|
15
|
+
"enum": [
|
|
16
|
+
"draft", "planned", "plan-approved", "implementing",
|
|
17
|
+
"implemented", "review-approved", "approved", "committed",
|
|
18
|
+
"plan-revision-required", "code-revision-required", "blocked", "escalated", "abandoned"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"path": { "type": "string" },
|
|
22
|
+
"estimate": { "type": "string", "enum": ["S", "M", "L", "XL"] },
|
|
23
|
+
"dependencies": { "type": "array", "items": { "type": "string" } },
|
|
24
|
+
"knowledgeUpdates": { "type": "array" },
|
|
25
|
+
"planIterations": { "type": "integer", "minimum": 0 },
|
|
26
|
+
"codeReviewIterations": { "type": "integer", "minimum": 0 },
|
|
27
|
+
"assignedModel": { "type": "string" },
|
|
28
|
+
"pipeline": { "type": "string" },
|
|
29
|
+
"summaries": {
|
|
30
|
+
"type": "object",
|
|
31
|
+
"description": "Terse structured summaries of phase artifacts. Optional; full artifacts on disk remain authoritative.",
|
|
32
|
+
"properties": {
|
|
33
|
+
"plan": { "$ref": "#/$defs/phaseSummary" },
|
|
34
|
+
"review_plan": { "$ref": "#/$defs/phaseSummary" },
|
|
35
|
+
"implementation": { "$ref": "#/$defs/phaseSummary" },
|
|
36
|
+
"code_review": { "$ref": "#/$defs/phaseSummary" },
|
|
37
|
+
"validation": { "$ref": "#/$defs/phaseSummary" }
|
|
38
|
+
},
|
|
39
|
+
"additionalProperties": false
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"additionalProperties": false,
|
|
43
|
+
"$defs": {
|
|
44
|
+
"phaseSummary": {
|
|
45
|
+
"type": "object",
|
|
46
|
+
"required": ["objective", "written_at"],
|
|
47
|
+
"properties": {
|
|
48
|
+
"objective": { "type": "string", "maxLength": 280 },
|
|
49
|
+
"key_changes": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 12 },
|
|
50
|
+
"findings": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 12 },
|
|
51
|
+
"verdict": { "type": "string", "enum": ["approved", "revision", "n/a"] },
|
|
52
|
+
"written_at": { "type": "string", "format": "date-time" },
|
|
53
|
+
"artifact_ref":{ "type": "string", "description": "Relative path to the full artifact" }
|
|
54
|
+
},
|
|
55
|
+
"additionalProperties": false
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|