@mriekki/project-forge 4.13.1 → 4.13.2
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/assets/components.json +2 -2
- package/assets/generated/ASSEMBLY.json +5 -5
- package/assets/generated/core/core/process/PROJECT_REQUIREMENTS_EXPORT.md +49 -2
- package/assets/generated/core/core/skills/export-requirements/SKILL.md +59 -5
- package/assets/generated/core/core/skills/replatform/SKILL.md +6 -1
- package/package.json +1 -1
package/assets/components.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@mriekki/project-forge",
|
|
4
|
-
"version": "4.13.
|
|
4
|
+
"version": "4.13.2",
|
|
5
5
|
"defaultProfile": "greenfield-project",
|
|
6
6
|
"profiles": {
|
|
7
7
|
"greenfield-project": {
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
},
|
|
14
14
|
"components": {
|
|
15
15
|
"core": {
|
|
16
|
-
"revision": "
|
|
16
|
+
"revision": "51fc0332a7908cf8e3ebe5594e864feb5025e853",
|
|
17
17
|
"version": "4.0.0",
|
|
18
18
|
"distribution": "greenfield-workspace",
|
|
19
19
|
"descriptor": "assets/core/distribution.json",
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 2,
|
|
3
3
|
"package": "@mriekki/project-forge",
|
|
4
|
-
"version": "4.13.
|
|
4
|
+
"version": "4.13.2",
|
|
5
5
|
"components": {
|
|
6
6
|
"core": {
|
|
7
|
-
"revision": "
|
|
7
|
+
"revision": "51fc0332a7908cf8e3ebe5594e864feb5025e853",
|
|
8
8
|
"version": "4.0.0",
|
|
9
9
|
"distribution": "greenfield-workspace",
|
|
10
10
|
"files": [
|
|
@@ -71,12 +71,12 @@
|
|
|
71
71
|
{
|
|
72
72
|
"source": "core/skills/export-requirements/SKILL.md",
|
|
73
73
|
"destination": ".github/skills/export-requirements/SKILL.md",
|
|
74
|
-
"sha256": "
|
|
74
|
+
"sha256": "0206e6c754158e46aaacb9f83a7bf2af85827fe6d60fc90a4874d5633946192a"
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
"source": "core/skills/replatform/SKILL.md",
|
|
78
78
|
"destination": ".github/skills/replatform/SKILL.md",
|
|
79
|
-
"sha256": "
|
|
79
|
+
"sha256": "b663ec40bb9b48f5737d8d2141a60c131196d4c496605d0a8c65285a0e7deb8f"
|
|
80
80
|
},
|
|
81
81
|
{
|
|
82
82
|
"source": "core/skills/progress/SKILL.md",
|
|
@@ -236,7 +236,7 @@
|
|
|
236
236
|
{
|
|
237
237
|
"source": "core/process/PROJECT_REQUIREMENTS_EXPORT.md",
|
|
238
238
|
"destination": "docs/process/PROJECT_REQUIREMENTS_EXPORT.md",
|
|
239
|
-
"sha256": "
|
|
239
|
+
"sha256": "f3e171cf466db69f46798859d9c174c177f5a1cb02bf19a3f02a66a16f5c43df"
|
|
240
240
|
},
|
|
241
241
|
{
|
|
242
242
|
"source": "core/process/APPLICATION_VERSIONING.md",
|
|
@@ -20,6 +20,33 @@ Additional product/domain authorities may include roadmap, system-design/domain
|
|
|
20
20
|
|
|
21
21
|
The export must retain source paths/authority/provenance so a consumer can trace normalized facts back to their repository authorities.
|
|
22
22
|
|
|
23
|
+
## Canonical contract authority
|
|
24
|
+
|
|
25
|
+
Core owns the `/export-requirements` workflow and Human-in-the-Loop gate. Bootstrap owns the accepted portable-requirements schema and validator.
|
|
26
|
+
|
|
27
|
+
At the start of an export session, resolve the current stable Project Forge descriptor:
|
|
28
|
+
|
|
29
|
+
```text
|
|
30
|
+
https://raw.githubusercontent.com/mriekki/project-forge-platform/main/chatgpt/current.json
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Use the exact immutable `generation.bootstrap.revision` selected there. Through authorized Project Forge/GitHub access, inspect that revision's canonical:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
schemas/project-requirements.schema.json
|
|
37
|
+
tools/project_requirements.py
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Do not maintain a competing schema in Core and do not use remembered field shapes, generated examples, or a legacy export as structural authority.
|
|
41
|
+
|
|
42
|
+
If the stable descriptor, exact Bootstrap revision, schema, or validator cannot be resolved, stop before portable-requirements approval with:
|
|
43
|
+
|
|
44
|
+
```text
|
|
45
|
+
PORTABLE REQUIREMENTS VALIDATION REQUIRED
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Unavailability of canonical validation is not permission to infer a compatible shape.
|
|
49
|
+
|
|
23
50
|
## Canonical filename and state
|
|
24
51
|
|
|
25
52
|
Only this filename is canonical:
|
|
@@ -42,7 +69,7 @@ Only `approved` may be consumed as replatform input.
|
|
|
42
69
|
|
|
43
70
|
## Portable content model
|
|
44
71
|
|
|
45
|
-
The export should represent, when present:
|
|
72
|
+
The exact JSON structure comes from the current Bootstrap schema. Within that structure, the export should represent, when present:
|
|
46
73
|
|
|
47
74
|
- project/product identity;
|
|
48
75
|
- problem, users/stakeholders, desired outcomes, scope/non-scope;
|
|
@@ -107,7 +134,7 @@ Examples:
|
|
|
107
134
|
|
|
108
135
|
- a Project Blueprint may contain product/domain facts plus current technology baseline;
|
|
109
136
|
- a System Design may contain portable domain invariants plus React/.NET/SQLite topology;
|
|
110
|
-
- a UX pattern may contain portable interaction behavior plus component-library
|
|
137
|
+
- a UX pattern may contain portable interaction behavior plus component-library detail;
|
|
111
138
|
- an ADR may establish both a product/security consequence and a stack-specific mechanism.
|
|
112
139
|
|
|
113
140
|
Extract the portable fact, retain source traceability, and exclude/reconcile the mechanism.
|
|
@@ -128,6 +155,23 @@ Do not export as portable requirements unless the repository explicitly makes th
|
|
|
128
155
|
- Git/PR/CI evidence;
|
|
129
156
|
- Project Forge/Core/Bootstrap baseline state.
|
|
130
157
|
|
|
158
|
+
## Validation and approval boundary
|
|
159
|
+
|
|
160
|
+
Create or refresh the derived artifact in `state: "review"`, then validate the exact file with the canonical Bootstrap validator from the exact revision resolved for the session.
|
|
161
|
+
|
|
162
|
+
Equivalent validation commands are:
|
|
163
|
+
|
|
164
|
+
```text
|
|
165
|
+
python tools/project_requirements.py PROJECT_REQUIREMENTS.json
|
|
166
|
+
python tools/project_requirements.py PROJECT_REQUIREMENTS.json --require-approved
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
The first is required before the human review/approval gate. The second is required after the bounded approval-state transition.
|
|
170
|
+
|
|
171
|
+
If review-state validation fails, repair only the derived export from existing authorities and the canonical schema, then rerun validation. Do not ask for approval until it passes.
|
|
172
|
+
|
|
173
|
+
If an older or malformed export was previously approved but does not validate now, that earlier approval does not automatically authorize a normalized replacement. Preserve the underlying source authority/maturity/provenance, produce a valid `state: "review"` artifact, and obtain a fresh human approval of that exact artifact.
|
|
174
|
+
|
|
131
175
|
## Replatform relationship
|
|
132
176
|
|
|
133
177
|
The canonical flow is:
|
|
@@ -135,9 +179,12 @@ The canonical flow is:
|
|
|
135
179
|
```text
|
|
136
180
|
project authorities
|
|
137
181
|
→ /export-requirements
|
|
182
|
+
→ current stable Bootstrap contract resolution
|
|
138
183
|
→ PROJECT_REQUIREMENTS.json state=review
|
|
184
|
+
→ canonical Bootstrap validation PASS
|
|
139
185
|
→ human approval
|
|
140
186
|
→ PROJECT_REQUIREMENTS.json state=approved
|
|
187
|
+
→ canonical Bootstrap validation --require-approved PASS
|
|
141
188
|
→ /replatform <target-stack>
|
|
142
189
|
→ current Bootstrap catalog reconciliation
|
|
143
190
|
→ PROJECT_BOOTSTRAP.json state=review
|
|
@@ -28,6 +28,33 @@ It must not answer:
|
|
|
28
28
|
|
|
29
29
|
> Which framework, language, ORM, build tool, folder layout, or CI implementation should the next repository use?
|
|
30
30
|
|
|
31
|
+
## Canonical Bootstrap contract preflight
|
|
32
|
+
|
|
33
|
+
Before constructing or refreshing `PROJECT_REQUIREMENTS.json`, resolve the current stable Project Forge descriptor from:
|
|
34
|
+
|
|
35
|
+
```text
|
|
36
|
+
https://raw.githubusercontent.com/mriekki/project-forge-platform/main/chatgpt/current.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Use the exact `generation.bootstrap.revision` from that descriptor as the Bootstrap contract authority for this export session. Do not use a remembered schema, an older generated example, or this skill's prose as a substitute for the current Bootstrap-owned portable-requirements contract.
|
|
40
|
+
|
|
41
|
+
Through the authorized Project Forge/GitHub access available in the current host, inspect the canonical Bootstrap portable-requirements schema and validator from that exact immutable revision, including:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
schemas/project-requirements.schema.json
|
|
45
|
+
tools/project_requirements.py
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
Bootstrap owns the schema/validator. Core owns this orchestration. Do not copy the Bootstrap schema into Core, invent a parallel validator, or infer a compatibility transform for a shape that the canonical validator rejects.
|
|
49
|
+
|
|
50
|
+
If the stable descriptor, exact Bootstrap revision, canonical schema, or canonical validator cannot be resolved and inspected, stop with:
|
|
51
|
+
|
|
52
|
+
```text
|
|
53
|
+
PORTABLE REQUIREMENTS VALIDATION REQUIRED
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Do not create an approval-ready export and do not ask for portable-requirements approval while canonical validation is unavailable.
|
|
57
|
+
|
|
31
58
|
## Source model
|
|
32
59
|
|
|
33
60
|
Start from the workspace's declared authority model. In a normal generated Project Forge workspace, inspect as applicable:
|
|
@@ -100,15 +127,35 @@ Do not export as portable requirements:
|
|
|
100
127
|
- implementation plans, code, review history, branch/PR/CI evidence;
|
|
101
128
|
- generated Project Forge/Core provenance.
|
|
102
129
|
|
|
103
|
-
##
|
|
130
|
+
## Canonical validation before human review
|
|
131
|
+
|
|
132
|
+
Default `/export-requirements` writes or refreshes `PROJECT_REQUIREMENTS.json` with `state: "review"` and exact source repository/commit provenance, using the current Bootstrap schema as the structural contract.
|
|
133
|
+
|
|
134
|
+
Before presenting any approval question, validate that exact file with the canonical Bootstrap validator from the exact revision resolved during preflight. The equivalent canonical invocation is:
|
|
135
|
+
|
|
136
|
+
```text
|
|
137
|
+
python tools/project_requirements.py <path-to-PROJECT_REQUIREMENTS.json>
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The actual invocation path may differ by host, but the validator implementation and Bootstrap revision must be the same canonical ones resolved during preflight.
|
|
141
|
+
|
|
142
|
+
If validation fails:
|
|
104
143
|
|
|
105
|
-
|
|
144
|
+
1. report the validator errors;
|
|
145
|
+
2. repair only the derived export using existing source authorities and the canonical schema;
|
|
146
|
+
3. preserve source authority, maturity, provenance, open decisions, and non-authorizing roadmap intent;
|
|
147
|
+
4. rerun canonical validation;
|
|
148
|
+
5. do not ask for approval until validation passes.
|
|
106
149
|
|
|
107
|
-
|
|
150
|
+
Do not silently reinterpret a rejected legacy/export shape, rename fields from memory, promote unresolved decisions, or treat prior human approval of structurally different JSON as approval of a normalized replacement.
|
|
151
|
+
|
|
152
|
+
Before calling a valid export approved, present a compact reconciliation summary:
|
|
108
153
|
|
|
109
154
|
```text
|
|
110
155
|
PROJECT REQUIREMENTS EXPORT
|
|
111
156
|
|
|
157
|
+
Bootstrap revision: <exact revision>
|
|
158
|
+
Canonical validation: PASS
|
|
112
159
|
Preserved product/features: ...
|
|
113
160
|
Preserved domain rules: ...
|
|
114
161
|
Preserved UX/cross-cutting constraints: ...
|
|
@@ -120,7 +167,7 @@ Items requiring reconciliation: ...
|
|
|
120
167
|
Then make the artifact itself the PRIMARY review subject. Before asking for approval:
|
|
121
168
|
1. identify `PROJECT_REQUIREMENTS.json` explicitly;
|
|
122
169
|
2. foreground/open the formatted JSON in the best available editor/preview surface when the host supports it;
|
|
123
|
-
3. keep source authorities as CONTEXT/TRACEABILITY rather than opening them all;
|
|
170
|
+
3. keep source authorities and Bootstrap validation evidence as CONTEXT/TRACEABILITY rather than opening them all;
|
|
124
171
|
4. only then ask the approval question.
|
|
125
172
|
|
|
126
173
|
In VS Code, when available, use `projectForge.openReviewArtifact` with `PROJECT_REQUIREMENTS.json`. Opening the file is read-only presentation and never changes its state.
|
|
@@ -133,6 +180,7 @@ HUMAN REVIEW REQUIRED
|
|
|
133
180
|
Gate: PORTABLE REQUIREMENTS APPROVAL
|
|
134
181
|
Primary artifact: PROJECT_REQUIREMENTS.json
|
|
135
182
|
Opened: formatted editor preview / <fallback surface>
|
|
183
|
+
Canonical Bootstrap validation: PASS @ <exact revision>
|
|
136
184
|
Items requiring reconciliation: NONE / list
|
|
137
185
|
|
|
138
186
|
Approve PROJECT_REQUIREMENTS.json as the portable requirements baseline?
|
|
@@ -140,7 +188,13 @@ Approve PROJECT_REQUIREMENTS.json as the portable requirements baseline?
|
|
|
140
188
|
|
|
141
189
|
Only explicit human approval may set `state: "approved"`.
|
|
142
190
|
|
|
143
|
-
`/export-requirements approve` may perform only that bounded finalization after confirming the reviewed content/evidence has not materially changed.
|
|
191
|
+
`/export-requirements approve` may perform only that bounded finalization after confirming the reviewed content/evidence has not materially changed. After changing `state` to `approved`, rerun the same canonical Bootstrap validator with the equivalent of:
|
|
192
|
+
|
|
193
|
+
```text
|
|
194
|
+
python tools/project_requirements.py <path-to-PROJECT_REQUIREMENTS.json> --require-approved
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
If final validation fails, restore/report review state as applicable and do not claim the portable baseline is approved. If the artifact changed materially since review for any reason beyond the bounded approval-state transition, reopen the review surface and require approval again.
|
|
144
198
|
|
|
145
199
|
## Safety and scope
|
|
146
200
|
|
|
@@ -22,6 +22,10 @@ PROJECT_REQUIREMENTS.json
|
|
|
22
22
|
|
|
23
23
|
The file must be `state: "approved"`. Do not accept alternate/legacy requirements-export filenames or infer approval from file existence.
|
|
24
24
|
|
|
25
|
+
Before consuming the export, validate it with the canonical Bootstrap portable-requirements validator from the exact current stable Bootstrap revision. If it fails canonical validation, stop and route back through `/export-requirements`; do not normalize, translate, alias, or repair the input inside `/replatform`.
|
|
26
|
+
|
|
27
|
+
A previously human-approved file that does not validate against the canonical portable contract is not valid replatform input until a canonical `state: "review"` export is produced and explicitly approved again.
|
|
28
|
+
|
|
25
29
|
If the export is missing or stale relative to material source-requirement changes, use `/export-requirements` first.
|
|
26
30
|
|
|
27
31
|
## Target
|
|
@@ -88,7 +92,7 @@ Never:
|
|
|
88
92
|
Use the current canonical Bootstrap replatform tooling when available. The expected deterministic boundary is:
|
|
89
93
|
|
|
90
94
|
```text
|
|
91
|
-
approved PROJECT_REQUIREMENTS.json
|
|
95
|
+
approved + canonically valid PROJECT_REQUIREMENTS.json
|
|
92
96
|
+ requested current catalog recipe/stack
|
|
93
97
|
+ target repository identity
|
|
94
98
|
→ PROJECT_BOOTSTRAP.json state=review
|
|
@@ -104,6 +108,7 @@ Before generation, summarize at minimum:
|
|
|
104
108
|
SOURCE REQUIREMENTS
|
|
105
109
|
source repository/commit
|
|
106
110
|
portable requirements export provenance
|
|
111
|
+
canonical Bootstrap validation evidence
|
|
107
112
|
|
|
108
113
|
PRESERVED
|
|
109
114
|
product/features/domain/UX/cross-cutting intent
|