@mriekki/project-forge 4.13.1 → 4.13.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.
- 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 +62 -5
- package/assets/generated/core/core/skills/replatform/SKILL.md +10 -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.3",
|
|
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": "13efbc5c8e368704a780c88bba6d42165664a74a",
|
|
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.3",
|
|
5
5
|
"components": {
|
|
6
6
|
"core": {
|
|
7
|
-
"revision": "
|
|
7
|
+
"revision": "13efbc5c8e368704a780c88bba6d42165664a74a",
|
|
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": "05d2ce830b2924f3508641f6bfa056f577862f27d236526f5a217a790d1ad490"
|
|
75
75
|
},
|
|
76
76
|
{
|
|
77
77
|
"source": "core/skills/replatform/SKILL.md",
|
|
78
78
|
"destination": ".github/skills/replatform/SKILL.md",
|
|
79
|
-
"sha256": "
|
|
79
|
+
"sha256": "f2d7e8d0b940fabeae15150d80a758c8b2980a54b0bc47040d07e9703a4cf044"
|
|
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,36 @@ 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
|
+
The stable descriptor must provide `generation.bootstrap.portableRequirements` with public immutable locators for the canonical schema and validator. Require all of the following before continuing:
|
|
42
|
+
|
|
43
|
+
- `portableRequirements.bootstrapRevision` exactly equals `generation.bootstrap.revision`;
|
|
44
|
+
- `portableRequirements.schema.path` equals `schemas/project-requirements.schema.json`;
|
|
45
|
+
- `portableRequirements.validator.path` equals `tools/project_requirements.py`;
|
|
46
|
+
- both locator URLs resolve from an immutable public Platform commit rather than a mutable branch;
|
|
47
|
+
- both advertised SHA-256 values match the retrieved bytes.
|
|
48
|
+
|
|
49
|
+
Fetch and inspect the schema and validator through those public locators. Do not infer or expose the private foundational repository from the bare Bootstrap revision, and do not substitute similarly named files discovered through code search.
|
|
50
|
+
|
|
51
|
+
Bootstrap owns the schema/validator. Platform publishes the reviewed public immutable mirrors/locators. 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.
|
|
52
|
+
|
|
53
|
+
If the stable descriptor, exact Bootstrap revision, public locator metadata, canonical schema, canonical validator, or digest verification cannot be resolved and inspected, stop with:
|
|
54
|
+
|
|
55
|
+
```text
|
|
56
|
+
PORTABLE REQUIREMENTS VALIDATION REQUIRED
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Do not create an approval-ready export and do not ask for portable-requirements approval while canonical validation is unavailable.
|
|
60
|
+
|
|
31
61
|
## Source model
|
|
32
62
|
|
|
33
63
|
Start from the workspace's declared authority model. In a normal generated Project Forge workspace, inspect as applicable:
|
|
@@ -100,15 +130,35 @@ Do not export as portable requirements:
|
|
|
100
130
|
- implementation plans, code, review history, branch/PR/CI evidence;
|
|
101
131
|
- generated Project Forge/Core provenance.
|
|
102
132
|
|
|
103
|
-
##
|
|
133
|
+
## Canonical validation before human review
|
|
104
134
|
|
|
105
|
-
Default `/export-requirements` writes or refreshes `PROJECT_REQUIREMENTS.json` with `state: "review"` and exact source repository/commit provenance.
|
|
135
|
+
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.
|
|
106
136
|
|
|
107
|
-
Before
|
|
137
|
+
Before presenting any approval question, validate that exact file with the canonical Bootstrap validator retrieved and digest-verified from the public locator for the exact revision resolved during preflight. The equivalent canonical source-layout invocation is:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
python tools/project_requirements.py <path-to-PROJECT_REQUIREMENTS.json>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
The actual local path may differ by host, but the validator bytes and Bootstrap revision must be the same canonical ones resolved and verified during preflight.
|
|
144
|
+
|
|
145
|
+
If validation fails:
|
|
146
|
+
|
|
147
|
+
1. report the validator errors;
|
|
148
|
+
2. repair only the derived export using existing source authorities and the canonical schema;
|
|
149
|
+
3. preserve source authority, maturity, provenance, open decisions, and non-authorizing roadmap intent;
|
|
150
|
+
4. rerun canonical validation;
|
|
151
|
+
5. do not ask for approval until validation passes.
|
|
152
|
+
|
|
153
|
+
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.
|
|
154
|
+
|
|
155
|
+
Before calling a valid export approved, present a compact reconciliation summary:
|
|
108
156
|
|
|
109
157
|
```text
|
|
110
158
|
PROJECT REQUIREMENTS EXPORT
|
|
111
159
|
|
|
160
|
+
Bootstrap revision: <exact revision>
|
|
161
|
+
Canonical validation: PASS
|
|
112
162
|
Preserved product/features: ...
|
|
113
163
|
Preserved domain rules: ...
|
|
114
164
|
Preserved UX/cross-cutting constraints: ...
|
|
@@ -120,7 +170,7 @@ Items requiring reconciliation: ...
|
|
|
120
170
|
Then make the artifact itself the PRIMARY review subject. Before asking for approval:
|
|
121
171
|
1. identify `PROJECT_REQUIREMENTS.json` explicitly;
|
|
122
172
|
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;
|
|
173
|
+
3. keep source authorities and Bootstrap validation evidence as CONTEXT/TRACEABILITY rather than opening them all;
|
|
124
174
|
4. only then ask the approval question.
|
|
125
175
|
|
|
126
176
|
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 +183,7 @@ HUMAN REVIEW REQUIRED
|
|
|
133
183
|
Gate: PORTABLE REQUIREMENTS APPROVAL
|
|
134
184
|
Primary artifact: PROJECT_REQUIREMENTS.json
|
|
135
185
|
Opened: formatted editor preview / <fallback surface>
|
|
186
|
+
Canonical Bootstrap validation: PASS @ <exact revision>
|
|
136
187
|
Items requiring reconciliation: NONE / list
|
|
137
188
|
|
|
138
189
|
Approve PROJECT_REQUIREMENTS.json as the portable requirements baseline?
|
|
@@ -140,7 +191,13 @@ Approve PROJECT_REQUIREMENTS.json as the portable requirements baseline?
|
|
|
140
191
|
|
|
141
192
|
Only explicit human approval may set `state: "approved"`.
|
|
142
193
|
|
|
143
|
-
`/export-requirements approve` may perform only that bounded finalization after confirming the reviewed content/evidence has not materially changed.
|
|
194
|
+
`/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:
|
|
195
|
+
|
|
196
|
+
```text
|
|
197
|
+
python tools/project_requirements.py <path-to-PROJECT_REQUIREMENTS.json> --require-approved
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
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
201
|
|
|
145
202
|
## Safety and scope
|
|
146
203
|
|
|
@@ -22,6 +22,14 @@ 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 resolved from the current stable Project Forge descriptor and its `generation.bootstrap.portableRequirements` metadata. Require `portableRequirements.bootstrapRevision` to equal `generation.bootstrap.revision`, fetch the canonical validator from the advertised immutable public locator, verify its advertised SHA-256, and validate the export with that exact validator using `--require-approved`.
|
|
26
|
+
|
|
27
|
+
Do not infer or expose the private foundational repository from the Bootstrap revision, and do not substitute similarly named files discovered through code search. If the public locator metadata, canonical validator, digest verification, or exact Bootstrap revision cannot be resolved, stop with `PORTABLE REQUIREMENTS VALIDATION REQUIRED`.
|
|
28
|
+
|
|
29
|
+
If canonical validation fails, stop and route back through `/export-requirements`; do not normalize, translate, alias, or repair the input inside `/replatform`.
|
|
30
|
+
|
|
31
|
+
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.
|
|
32
|
+
|
|
25
33
|
If the export is missing or stale relative to material source-requirement changes, use `/export-requirements` first.
|
|
26
34
|
|
|
27
35
|
## Target
|
|
@@ -88,7 +96,7 @@ Never:
|
|
|
88
96
|
Use the current canonical Bootstrap replatform tooling when available. The expected deterministic boundary is:
|
|
89
97
|
|
|
90
98
|
```text
|
|
91
|
-
approved PROJECT_REQUIREMENTS.json
|
|
99
|
+
approved + canonically valid PROJECT_REQUIREMENTS.json
|
|
92
100
|
+ requested current catalog recipe/stack
|
|
93
101
|
+ target repository identity
|
|
94
102
|
→ PROJECT_BOOTSTRAP.json state=review
|
|
@@ -104,6 +112,7 @@ Before generation, summarize at minimum:
|
|
|
104
112
|
SOURCE REQUIREMENTS
|
|
105
113
|
source repository/commit
|
|
106
114
|
portable requirements export provenance
|
|
115
|
+
canonical Bootstrap validation evidence
|
|
107
116
|
|
|
108
117
|
PRESERVED
|
|
109
118
|
product/features/domain/UX/cross-cutting intent
|