暴露 workflow overview artifact summary 浏览器 API

This commit is contained in:
2026-06-16 11:22:12 +08:00
parent 82bb02de15
commit 61779cad55
16 changed files with 171 additions and 72 deletions

View File

@@ -167,6 +167,10 @@ Use `loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl()` or
`linuxCncIniPanelWorkflowOverviewApi.loadWorkflowOverviewReleaseReadinessArtifactUrl()`
when the shell should fetch the artifact JSON URL, validate it, and optionally
mount the render-state into caller-owned DOM without executing gates.
Use `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel()` or
`linuxCncIniPanelWorkflowOverviewApi.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel()`
when the shell needs stable artifact validation status text and dashboard rows
without interpreting validation flags itself.
Use `createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract()`,

View File

@@ -45,6 +45,7 @@ import {
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createLinuxCncIniSdk,
createLinuxCncInterpSdk,
createMachineSessionPersistenceDisplayViewModel,
@@ -301,6 +302,7 @@ for external browser shells:
optionally mount the resulting render-state into caller-owned DOM.
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract()`,
`createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness()`,
`renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState()`, and

View File

@@ -102,6 +102,7 @@ export {
createIniPanelShellWorkflowOverviewEmbeddingMountRenderState,
createIniPanelShellWorkflowOverviewEmbeddingRenderState,
createIniPanelShellWorkflowOverviewEmbeddingReport,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,

View File

@@ -300,6 +300,9 @@
loadWorkflowOverviewReleaseReadinessArtifactUrl: (options) => (
shellViewModel.loadWorkflowOverviewReleaseReadinessArtifactUrl(options)
),
getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel: (validation) => (
shellViewModel.createWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(validation)
),
getWorkflowOverviewEmbeddingReport: (embeddingResult, contract) => (
shellViewModel.createWorkflowOverviewEmbeddingReport(embeddingResult, contract)
),

View File

@@ -33,6 +33,7 @@ import {
} from "./panel-state-summary.js";
import {
createProjectReleaseReadinessArtifactValidation,
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
parseProjectReleaseReadinessArtifactJson,
} from "../../sdk/src/project-release-readiness.js";
export {
@@ -78,6 +79,7 @@ export {
} from "./panel-state-summary.js";
export {
createProjectReleaseReadinessArtifactValidation,
createProjectReleaseReadinessArtifactValidationSummaryViewModel,
parseProjectReleaseReadinessArtifactJson,
} from "../../sdk/src/project-release-readiness.js";
@@ -195,6 +197,7 @@ export function createIniPanelLaunchApiManifest(entries = getVisibleIniPanelEntr
"getWorkflowOverviewReadiness",
"mountWorkflowOverviewEmbedding",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewEmbeddingReport",
"getWorkflowOverviewEmbeddingDisplayViewModel",
"getWorkflowOverviewEmbeddingRenderState",
@@ -1876,6 +1879,7 @@ export function createIniPanelShellWorkflowOverviewContract() {
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
@@ -2058,6 +2062,14 @@ export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDispl
};
}
export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(
validation = validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{}"),
) {
return createProjectReleaseReadinessArtifactValidationSummaryViewModel(
validation?.validation ?? validation,
);
}
export function createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState(
displayViewModel = createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(),
) {
@@ -3270,6 +3282,8 @@ export function createIniPanelShellViewModel(entries = getVisibleIniPanelEntries
mountShellSessionHandoffWorkflow: mountIniPanelShellSessionHandoffWorkflow,
createWorkflowOverviewContract: createIniPanelShellWorkflowOverviewContract,
createWorkflowOverviewReadiness: createIniPanelShellWorkflowOverviewReadiness,
createWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel:
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
loadWorkflowOverviewReleaseReadinessArtifactUrl:
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
mountWorkflowOverviewEmbedding: mountIniPanelShellWorkflowOverviewEmbedding,

View File

@@ -107,6 +107,7 @@
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
@@ -147,6 +148,9 @@
loadWorkflowOverviewReleaseReadinessArtifactUrl: (options) => (
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl(options)
),
getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel: (validation) => (
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(validation)
),
getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel: (validation) => (
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(validation)
),

View File

@@ -116,6 +116,7 @@ TOOL_TABLE = browser-shell-tool.tbl
!launchApi?.getWorkflowOverviewReadiness ||
!launchApi?.mountWorkflowOverviewEmbedding ||
!launchApi?.loadWorkflowOverviewReleaseReadinessArtifactUrl ||
!launchApi?.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel ||
!launchApi?.getWorkflowOverviewEmbeddingReport ||
!launchApi?.getWorkflowOverviewEmbeddingDisplayViewModel ||
!launchApi?.getWorkflowOverviewEmbeddingRenderState ||
@@ -314,39 +315,18 @@ TOOL_TABLE = browser-shell-tool.tbl
const workflowOverviewReadiness = launchApi.getWorkflowOverviewReadiness({
overviewApi: workflowOverviewApi,
});
const workflowOverviewReleaseArtifactJson = await fetch("../../tests/fixtures/project-release-readiness-ready.json")
.then((response) => response.text());
const workflowOverviewReleaseArtifactValidation = workflowOverviewApi
.validateWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify({
apiName: "project-release-readiness-report",
reportVersion: 1,
phase: "ready",
ready: true,
missing: [],
releaseGate: {
command: "wasm-port/tests/host/verify_project_release_gate.sh",
passed: true,
expectedOutput: "project_release_gate=ok",
},
simConfigInventory: {
executed: 28,
passed: 28,
skipped: 131,
unexpectedFail: 0,
},
blockedRuntimeFamilies: [
"L4-USER-M-PROCESS",
"L4-TOOL-DB",
"L4-PYTHON-REMAP",
],
promotedBlockedFamilies: [],
gates: Array.from({ length: 10 }, (_, index) => ({ id: `gate-${index}`, passed: true })),
rows: [
{
id: "project-release-gate",
label: "Project release gate",
value: "passed",
},
],
}));
.validateWorkflowOverviewReleaseReadinessArtifactJson(workflowOverviewReleaseArtifactJson);
const workflowOverviewReleaseArtifactSummary = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(
workflowOverviewReleaseArtifactValidation,
);
const launchReleaseArtifactSummary = launchApi
.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(
workflowOverviewReleaseArtifactValidation,
);
const workflowOverviewReleaseArtifactDisplay = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(workflowOverviewReleaseArtifactValidation);
const workflowOverviewReleaseArtifactRenderState = workflowOverviewApi
@@ -463,6 +443,16 @@ TOOL_TABLE = browser-shell-tool.tbl
true,
"shell workflow overview release artifact validation readiness",
);
assertEqual(
workflowOverviewReleaseArtifactSummary.statusLine,
"Ready: Artifact evidence complete",
"shell workflow overview release artifact validation summary",
);
assertEqual(
launchReleaseArtifactSummary.statusLine,
workflowOverviewReleaseArtifactSummary.statusLine,
"launch release artifact validation summary",
);
assertEqual(
workflowOverviewReleaseArtifactDomReadiness.ready,
true,

View File

@@ -36,6 +36,7 @@
!workflowApi?.getWorkflowOverviewPersistenceSummary ||
!workflowApi?.validateWorkflowOverviewReleaseReadinessArtifactJson ||
!workflowApi?.loadWorkflowOverviewReleaseReadinessArtifactUrl ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactRenderState ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactDomContract ||
@@ -70,38 +71,13 @@
const sessionReadinessReport = workflowApi.getWorkflowOverviewSessionReadinessReport();
const apiSurfaceInventory = workflowApi.getWorkflowOverviewApiSurfaceInventory();
const persistenceSummary = workflowApi.getWorkflowOverviewPersistenceSummary();
const releaseArtifactValidation = workflowApi.validateWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify({
apiName: "project-release-readiness-report",
reportVersion: 1,
phase: "ready",
ready: true,
missing: [],
releaseGate: {
command: "wasm-port/tests/host/verify_project_release_gate.sh",
passed: true,
expectedOutput: "project_release_gate=ok",
},
simConfigInventory: {
executed: 28,
passed: 28,
skipped: 131,
unexpectedFail: 0,
},
blockedRuntimeFamilies: [
"L4-USER-M-PROCESS",
"L4-TOOL-DB",
"L4-PYTHON-REMAP",
],
promotedBlockedFamilies: [],
gates: Array.from({ length: 10 }, (_, index) => ({ id: `gate-${index}`, passed: true })),
rows: [
{
id: "project-release-gate",
label: "Project release gate",
value: "passed",
},
],
}));
const releaseArtifactJson = await fetch("../../tests/fixtures/project-release-readiness-ready.json")
.then((response) => response.text());
const releaseArtifactValidation = workflowApi.validateWorkflowOverviewReleaseReadinessArtifactJson(
releaseArtifactJson,
);
const releaseArtifactValidationSummary = workflowApi
.getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(releaseArtifactValidation);
const releaseArtifactDisplay = workflowApi.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(
releaseArtifactValidation,
);
@@ -162,6 +138,11 @@
);
assertEqual(releaseArtifactValidation.ready, true, "workflow overview release artifact validation readiness");
assertEqual(releaseArtifactValidation.gateCount, 10, "workflow overview release artifact validation gates");
assertEqual(
releaseArtifactValidationSummary.statusLine,
"Ready: Artifact evidence complete",
"workflow overview release artifact validation summary",
);
assertEqual(releaseArtifactDisplay.statusText, "Ready", "workflow overview release artifact display status");
assertEqual(releaseArtifactRenderState.statusLine, "Ready: No blocking reasons", "workflow overview release artifact render status");
assertEqual(
@@ -278,9 +259,9 @@
});
assertEqual(releaseArtifactDomReadinessReady.ready, true, "workflow overview release artifact DOM readiness");
assertEqual(releaseArtifactRenderResult.rendered, true, "workflow overview release artifact render result");
assertEqual(releaseArtifactRenderResult.rowCount, 3, "workflow overview release artifact render row count");
assertEqual(releaseArtifactRenderResult.rowCount, 6, "workflow overview release artifact render row count");
assertEqual(releaseArtifactMountResult.ready, true, "workflow overview release artifact mount readiness");
assertEqual(releaseArtifactMountResult.renderResult.rowCount, 3, "workflow overview release artifact mount rows");
assertEqual(releaseArtifactMountResult.renderResult.rowCount, 6, "workflow overview release artifact mount rows");
assertEqual(releaseArtifactUrlWorkflow.ready, true, "workflow overview release artifact URL workflow readiness");
assertEqual(releaseArtifactUrlWorkflow.httpStatus, 200, "workflow overview release artifact URL workflow status");
assertEqual(releaseArtifactUrlWorkflow.mountResult.ready, true, "workflow overview release artifact URL workflow mount");

View File

@@ -66,7 +66,7 @@
assertEqual(readyWorkflow.validation.gateCount, 10, "ready workflow gate count");
assertEqual(readyWorkflow.renderState.statusLine, "Ready: No blocking reasons", "ready workflow status");
assertEqual(readyWorkflow.mountResult.ready, true, "ready workflow mount readiness");
assertEqual(readyWorkflow.mountResult.renderResult.rowCount, 3, "ready workflow mount rows");
assertEqual(readyWorkflow.mountResult.renderResult.rowCount, 6, "ready workflow mount rows");
assertEqual(
releaseArtifactStatus.textContent,
"Ready: No blocking reasons",

View File

@@ -26,6 +26,7 @@ import {
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createLinuxCncIniSdk,
createLinuxCncInterpSdk,
createMachineSessionSnapshotPayload,
@@ -165,6 +166,10 @@ const requiredExports = [
"createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness",
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,

View File

@@ -164,6 +164,7 @@ const requiredShellExports = [
"mountIniPanelShellWorkflowOverviewEmbeddingMountState",
"validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson",
"loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract",

View File

@@ -83,6 +83,7 @@ assert.deepEqual(manifest, {
"getWorkflowOverviewReadiness",
"mountWorkflowOverviewEmbedding",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewEmbeddingReport",
"getWorkflowOverviewEmbeddingDisplayViewModel",
"getWorkflowOverviewEmbeddingRenderState",
@@ -243,6 +244,7 @@ assert.match(launchText, /\bgetWorkflowOverviewContract\b/);
assert.match(launchText, /\bgetWorkflowOverviewReadiness\b/);
assert.match(launchText, /\bmountWorkflowOverviewEmbedding\b/);
assert.match(launchText, /\bloadWorkflowOverviewReleaseReadinessArtifactUrl\b/);
assert.match(launchText, /\bgetWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingReport\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingDisplayViewModel\b/);
assert.match(launchText, /\bgetWorkflowOverviewEmbeddingRenderState\b/);

View File

@@ -53,6 +53,7 @@ import {
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
@@ -187,7 +188,7 @@ assert.deepEqual(readiness, {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 59,
launchMethods: 60,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -250,7 +251,7 @@ assert.deepEqual(handoffSummary, {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 59,
launchMethods: 60,
controlPageMethods: 11,
persistenceCapabilities: 3,
},
@@ -790,6 +791,7 @@ assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), {
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
@@ -835,6 +837,7 @@ assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "fun
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
assert.equal(typeof validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson, "function");
assert.equal(typeof loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract, "function");
@@ -845,6 +848,10 @@ assert.equal(
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{}").apiName,
"ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
);
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel().phase,
"blocked",
);
assert.deepEqual(
createIniPanelShellWorkflowOverviewReadiness({
overviewApi: {
@@ -859,6 +866,7 @@ assert.deepEqual(
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
@@ -1284,7 +1292,7 @@ assert.deepEqual(createIniPanelShellIntegrationReadiness(blockedManifest), {
counts: {
pages: 3,
launcherLinks: 3,
launchMethods: 59,
launchMethods: 60,
controlPageMethods: 11,
persistenceCapabilities: 3,
},

View File

@@ -58,6 +58,7 @@ import {
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
@@ -689,6 +690,7 @@ assert.deepEqual(shellViewModel.shellWorkflowOverviewContract, {
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"loadWorkflowOverviewReleaseReadinessArtifactUrl",
"getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
@@ -1303,6 +1305,19 @@ assert.equal(
assert.equal(releaseArtifactValidation.ready, true);
assert.equal(releaseArtifactValidation.validation.ready, true);
assert.equal(releaseArtifactValidation.gateCount, 10);
const releaseArtifactValidationSummary =
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel(
releaseArtifactValidation,
);
assert.equal(
releaseArtifactValidationSummary.apiName,
"project-release-readiness-artifact-validation-summary-view-model",
);
assert.equal(releaseArtifactValidationSummary.statusLine, "Ready: Artifact evidence complete");
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel().phase,
"blocked",
);
const releaseArtifactDisplay = createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(
releaseArtifactValidation,
);
@@ -1428,6 +1443,7 @@ const workflowOverviewApi = {
getWorkflowOverviewPersistenceSummary: () => shellViewModel.shellPersistenceSummary,
validateWorkflowOverviewReleaseReadinessArtifactJson: () => ({ ready: true }),
loadWorkflowOverviewReleaseReadinessArtifactUrl: loadIniPanelShellWorkflowOverviewReleaseReadinessArtifactUrl,
getWorkflowOverviewReleaseReadinessArtifactValidationSummaryViewModel: () => releaseArtifactValidationSummary,
getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel: () => releaseArtifactDisplay,
getWorkflowOverviewReleaseReadinessArtifactRenderState: () => releaseArtifactRenderState,
getWorkflowOverviewReleaseReadinessArtifactDomContract: createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,