Skip to content

Commit 222eab7

Browse files
committed
Support for lifecycle stages to stations. Organized api audit checklist and reporting to lifecycle stages and stations. Improved audit and design labels.
1 parent a5fd142 commit 222eab7

19 files changed

Lines changed: 1831 additions & 863 deletions

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
"release:create-apiops:publish": "npm publish --workspace packages/create-apiops --access public",
3636
"check:packaging:skills": "node scripts/check-packaging-skills.mjs",
3737
"check:package:contents": "node scripts/check-package-contents.mjs",
38-
"test:create-apiops": "node scripts/test-create-apiops-scaffold.mjs && node scripts/test-method-cli.mjs"
38+
"test:create-apiops": "node scripts/test-create-apiops-scaffold.mjs && node scripts/test-method-cli.mjs && node scripts/test-run-design-audit.mjs"
3939
},
4040
"devDependencies": {
4141
"@changesets/cli": "^2.29.7",

packages/create-apiops/template/scripts/run-design-audit.js

Lines changed: 316 additions & 118 deletions
Large diffs are not rendered by default.

scripts/test-method-content-integrity.mjs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const linesJson = readJson("src/data/method/lines.json");
1010
const resourcesJson = readJson("src/data/method/resources.json");
1111
const criteriaJson = readJson("src/data/method/criteria.json");
1212
const stakeholdersJson = readJson("src/data/method/stakeholders.json");
13+
const stationCriteriaJson = readJson("src/data/method/station-criteria.json");
1314
const canvasDataJson = readJson("src/data/canvas/canvasData.json");
1415
const localizedCanvasDataJson = readJson("src/data/canvas/localizedData.json");
1516
const knownResourceIds = new Set((resourcesJson.resources || []).map((resource) => resource.id));
@@ -23,6 +24,7 @@ const localeDirs = readdirSync("src/data/method", { withFileTypes: true })
2324
.filter((entry) => entry.isDirectory())
2425
.map((entry) => entry.name);
2526
const findings = [];
27+
const lifecycleStages = new Set(["strategy", "architecture", "design", "delivery", "publishing", "improving"]);
2628

2729
function collectMatchingStringValues(node, pattern, results = new Set()) {
2830
if (typeof node === "string") {
@@ -104,6 +106,22 @@ for (const station of stationGroups) {
104106
);
105107
}
106108
}
109+
110+
if (station.group === "core-stations") {
111+
if (!lifecycleStages.has(station.lifecycleStage)) {
112+
findings.push(`Core station ${station.id} is missing a valid lifecycleStage.`);
113+
}
114+
115+
const expectedCriteria = stationCriteriaJson[station.id] || [];
116+
const actualCriteria = station.stationCriteria || [];
117+
if (JSON.stringify(actualCriteria) !== JSON.stringify(expectedCriteria)) {
118+
findings.push(`Core station ${station.id} stationCriteria does not match station-criteria.json.`);
119+
}
120+
121+
if (!Array.isArray(station.expectedEvidenceTags) || station.expectedEvidenceTags.length === 0) {
122+
findings.push(`Core station ${station.id} must define expectedEvidenceTags.`);
123+
}
124+
}
107125
}
108126

109127
for (const line of linesJson.lines?.items || []) {

scripts/test-print-method-snippet.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ try {
4242
const auditSnippet = renderSnippet("api-audit-checklist", "en", { forceUnicode: true });
4343
assert(auditSnippet.includes("\"profiles\""), "Expected api-audit-checklist to render the JSON checklist snippet.");
4444
assert(auditSnippet.includes("\"read-only\""), "Expected api-audit-checklist JSON snippet to include the read-only profile.");
45+
assert(auditSnippet.includes("\"stages\""), "Expected api-audit-checklist JSON snippet to include lifecycle stages.");
46+
assert(auditSnippet.includes("\"producedByStation\""), "Expected api-audit-checklist JSON snippet to include station ownership links.");
4547

4648
const styleSnippet = renderSnippet("api-design-principles", "en", { forceAscii: true });
4749
assert(styleSnippet.includes("\"guidelines\""), "Expected api-design-principles to render the JSON style snippet.");

0 commit comments

Comments
 (0)