@ogygie/cli 0.13.0 → 0.13.1
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/dist/cli.js
CHANGED
|
@@ -15836,6 +15836,18 @@ var governedChecksumsByVersion = {
|
|
|
15836
15836
|
"scripts/verify-specs.ts": "04289dbeeb029703779757a2d8b58852c6b16414ab7503bf3223cfe4e9a4d45e",
|
|
15837
15837
|
"tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
|
|
15838
15838
|
},
|
|
15839
|
+
"0.13.1": {
|
|
15840
|
+
".github/workflows/ogygie-gates.yml": "48c40efe9fe66dd0f9c3b94287026d80eae9afd6782b5833fdf8846d8662babf",
|
|
15841
|
+
"AGENTS.md": "74725a71e531502d4d4898518bad68e610a370bd410058b58e11220532dc327f",
|
|
15842
|
+
"CLAUDE.md": "785ee8d90e368806d8cf0b4d84a15f29d1dc961168bda86cf1a6c60a923c8c9b",
|
|
15843
|
+
"scripts/lint-interdits.ts": "20c32a6f3af4aa68b24fe37b25a2989f58e77fd96808c3853dc6fd98f4c9af84",
|
|
15844
|
+
"scripts/ogygie-design-brief.ts": "aba1585717b30808dd0bc8930a37a1ad2d83ee6869f969dbd06ca595e37a4a89",
|
|
15845
|
+
"scripts/ogygie-impact.ts": "f06cc8b4a46ddfbcfb32ba747c2454548ca49918123d04ab13d210b4a89c1fb9",
|
|
15846
|
+
"scripts/verify-contracts.ts": "9cd64c88dcc3b54b65bf1e1b7a68eb00353ee16f2a9ce8bca3c49ba063c2a08b",
|
|
15847
|
+
"scripts/verify-manifest.ts": "4e9caa31323442f7a5429e9cc2ae0a4d6407db6261b5744f51415c291236fb97",
|
|
15848
|
+
"scripts/verify-specs.ts": "03d58baa11822ad7ae67080f990f7a82f4f94d223b12777728b8b9ddd7ebd843",
|
|
15849
|
+
"tsconfig.base.json": "0f8919e9ed8bbc88e0308fa2fa91471dabb18d1df721bd78c04076597eba89a2"
|
|
15850
|
+
},
|
|
15839
15851
|
"0.2.0": {
|
|
15840
15852
|
".github/workflows/ogygie-gates.yml": "48c40efe9fe66dd0f9c3b94287026d80eae9afd6782b5833fdf8846d8662babf",
|
|
15841
15853
|
"AGENTS.md": "ca73ab619d8c55fac11858d815bf5fbab6537ecebe7ae4123cbdeb3e3e36bf1a",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ogygie/cli",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"description": "Ogygie framework CLI: deterministic scaffolding (init), governed-file upgrades (upgrade) and lockstep verification (check) for Ogygie products.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@ogygie/core": "0.13.
|
|
20
|
+
"@ogygie/core": "0.13.1",
|
|
21
21
|
"@types/node": "^24.0.0",
|
|
22
22
|
"esbuild": "^0.28.0",
|
|
23
23
|
"tsx": "^4.20.0",
|
|
@@ -162,6 +162,13 @@ for (const feature of manifest.features) {
|
|
|
162
162
|
}
|
|
163
163
|
|
|
164
164
|
for (const dependency of feature.dependsOn) {
|
|
165
|
+
// A `package:<name>` dependency is resolved by the SCHEMA itself
|
|
166
|
+
// (superRefine, with its mutation test): by the time this loop runs the
|
|
167
|
+
// manifest has parsed, so such a dependency is known to name a declared
|
|
168
|
+
// package. Comparing it to FEATURE names instead would refuse a perfectly
|
|
169
|
+
// legal map — what a consumer project hit the day its first feature
|
|
170
|
+
// depended on a package.
|
|
171
|
+
if (dependency.startsWith("package:")) continue;
|
|
165
172
|
if (!featureNames.has(dependency)) {
|
|
166
173
|
report({
|
|
167
174
|
code: "MANIFEST_UNKNOWN_DEPENDENCY",
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
parseKnownDecisionIds,
|
|
30
30
|
} from "@ogygie/core/decision-refs";
|
|
31
31
|
import { OgygieManifestSchema } from "@ogygie/core/manifest";
|
|
32
|
-
import { findSpecOwner, SPEC_OWNER_FIX } from "@ogygie/core/manifest-owners";
|
|
32
|
+
import { findSpecOwner, hasImplementation, SPEC_OWNER_FIX } from "@ogygie/core/manifest-owners";
|
|
33
33
|
import { ogygieError, type OgygieError } from "@ogygie/core/errors";
|
|
34
34
|
|
|
35
35
|
const ROOT = new URL("..", import.meta.url).pathname;
|
|
@@ -130,9 +130,11 @@ for (const fileName of specFiles) {
|
|
|
130
130
|
const ownerDir = owner?.folder === null || owner === undefined ? null : join(ROOT, owner.folder);
|
|
131
131
|
|
|
132
132
|
if (frontmatter.status === "draft") {
|
|
133
|
+
// What counts as an implementation is the core's rule, not this script's:
|
|
134
|
+
// a package's folder is REQUIRED by the manifest gate, so its existence
|
|
135
|
+
// proves nothing (see hasImplementation).
|
|
133
136
|
const implemented =
|
|
134
|
-
|
|
135
|
-
(ownerDir !== null && existsSync(ownerDir));
|
|
137
|
+
owner !== undefined && hasImplementation(owner, ownerDir !== null && existsSync(ownerDir));
|
|
136
138
|
if (implemented) {
|
|
137
139
|
report({
|
|
138
140
|
code: "SPEC_DRAFT_ALREADY_IMPLEMENTED",
|