推进 workflow overview 发布 artifact DOM workflow

This commit is contained in:
2026-06-16 10:03:23 +08:00
parent 23f337834b
commit b63669588c
15 changed files with 644 additions and 4 deletions

View File

@@ -18,6 +18,10 @@
<p data-external-overview-embedding-status>waiting</p>
<dl data-external-overview-embedding-rows></dl>
</section>
<section data-external-release-artifact>
<p data-external-release-artifact-status>waiting</p>
<dl data-external-release-artifact-rows></dl>
</section>
<script type="module">
function assertEqual(actual, expected, label) {
if (actual !== expected) {
@@ -342,6 +346,38 @@ TOOL_TABLE = browser-shell-tool.tbl
},
],
}));
const workflowOverviewReleaseArtifactDisplay = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(workflowOverviewReleaseArtifactValidation);
const workflowOverviewReleaseArtifactRenderState = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactRenderState(workflowOverviewReleaseArtifactDisplay);
const workflowOverviewReleaseArtifactDomContract = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactDomContract({
rowDatasetPrefix: "externalReleaseArtifact",
selectors: {
mount: "[data-external-release-artifact]",
status: "[data-external-release-artifact-status]",
rows: "[data-external-release-artifact-rows]",
},
});
const workflowOverviewReleaseArtifactDomReadiness = workflowOverviewApi
.getWorkflowOverviewReleaseReadinessArtifactDomReadiness({
contract: workflowOverviewReleaseArtifactDomContract,
documentRef: document,
});
const workflowOverviewReleaseArtifactRenderResult = workflowOverviewApi
.renderWorkflowOverviewReleaseReadinessArtifactState(
workflowOverviewReleaseArtifactRenderState,
{
contract: workflowOverviewReleaseArtifactDomContract,
documentRef: document,
},
);
const workflowOverviewReleaseArtifactMountResult = workflowOverviewApi
.mountWorkflowOverviewReleaseReadinessArtifactState({
renderState: workflowOverviewReleaseArtifactRenderState,
contract: workflowOverviewReleaseArtifactDomContract,
documentRef: document,
});
const workflowOverviewEmbedding = launchApi.mountWorkflowOverviewEmbedding({
overviewApi: workflowOverviewApi,
});
@@ -413,6 +449,26 @@ TOOL_TABLE = browser-shell-tool.tbl
true,
"shell workflow overview release artifact validation readiness",
);
assertEqual(
workflowOverviewReleaseArtifactDomReadiness.ready,
true,
"shell workflow overview release artifact DOM readiness",
);
assertEqual(
workflowOverviewReleaseArtifactRenderResult.rowCount,
3,
"shell workflow overview release artifact render rows",
);
assertEqual(
workflowOverviewReleaseArtifactMountResult.ready,
true,
"shell workflow overview release artifact mount readiness",
);
assertEqual(
document.querySelector("[data-external-release-artifact-status]").textContent,
"Ready: No blocking reasons",
"shell workflow overview release artifact rendered status",
);
assertEqual(workflowOverviewEmbedding.apiName, "ini-panel-shell-workflow-overview-embedding", "shell workflow overview embedding API");
assertEqual(workflowOverviewEmbedding.renderState.dataset.handoffScope, "workflow", "shell workflow overview embedding scope");
assertEqual(workflowOverviewEmbedding.mountResult.renderResult.rowCount, 8, "shell workflow overview embedding rows");

View File

@@ -35,6 +35,12 @@
!workflowApi?.getWorkflowOverviewApiSurfaceInventory ||
!workflowApi?.getWorkflowOverviewPersistenceSummary ||
!workflowApi?.validateWorkflowOverviewReleaseReadinessArtifactJson ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactRenderState ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactDomContract ||
!workflowApi?.getWorkflowOverviewReleaseReadinessArtifactDomReadiness ||
!workflowApi?.renderWorkflowOverviewReleaseReadinessArtifactState ||
!workflowApi?.mountWorkflowOverviewReleaseReadinessArtifactState ||
!workflowApi?.getWorkflowOverviewDomContract ||
!workflowApi?.getWorkflowOverviewDomReadiness ||
!workflowApi?.renderWorkflowOverview ||
@@ -95,6 +101,14 @@
},
],
}));
const releaseArtifactDisplay = workflowApi.getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(
releaseArtifactValidation,
);
const releaseArtifactRenderState = workflowApi.getWorkflowOverviewReleaseReadinessArtifactRenderState(
releaseArtifactDisplay,
);
const releaseArtifactDomContract = workflowApi.getWorkflowOverviewReleaseReadinessArtifactDomContract();
const releaseArtifactDomReadinessMissing = workflowApi.getWorkflowOverviewReleaseReadinessArtifactDomReadiness();
const domContract = workflowApi.getWorkflowOverviewDomContract();
const domReadiness = workflowApi.getWorkflowOverviewDomReadiness();
const renderResult = workflowApi.renderWorkflowOverview();
@@ -147,6 +161,19 @@
);
assertEqual(releaseArtifactValidation.ready, true, "workflow overview release artifact validation readiness");
assertEqual(releaseArtifactValidation.gateCount, 9, "workflow overview release artifact validation gates");
assertEqual(releaseArtifactDisplay.statusText, "Ready", "workflow overview release artifact display status");
assertEqual(releaseArtifactRenderState.statusLine, "Ready: No blocking reasons", "workflow overview release artifact render status");
assertEqual(
releaseArtifactRenderState.dataset.handoffScope,
"workflow-overview-release-readiness-artifact",
"workflow overview release artifact render scope",
);
assertEqual(
releaseArtifactDomContract.selectors.mount,
"[data-workflow-overview-release-readiness-artifact]",
"workflow overview release artifact DOM mount selector",
);
assertEqual(releaseArtifactDomReadinessMissing.ready, false, "workflow overview release artifact missing DOM readiness");
assertEqual(displayViewModel.title, "Shell handoff workflow", "workflow overview display title");
assertEqual(renderState.renderStateVersion, 1, "workflow overview render-state version");
assertEqual(renderState.dataset.handoffScope, "workflow", "workflow overview render-state scope");
@@ -229,6 +256,27 @@
assertEqual(embeddingMountDomMount.renderResult.rowCount, 7, "workflow overview embedding mount DOM mount row count");
assertEqual(embeddingMountDomMount.error, null, "workflow overview embedding mount DOM mount error");
assertEqual(embeddingMountStatus.textContent, embeddingMountRenderState.statusLine, "workflow overview embedding mount rendered status");
const releaseArtifactNode = workflowDoc.createElement("section");
releaseArtifactNode.dataset.workflowOverviewReleaseReadinessArtifact = "";
const releaseArtifactStatus = workflowDoc.createElement("p");
releaseArtifactStatus.dataset.workflowOverviewReleaseReadinessArtifactStatus = "";
const releaseArtifactRows = workflowDoc.createElement("dl");
releaseArtifactRows.dataset.workflowOverviewReleaseReadinessArtifactRows = "";
releaseArtifactNode.append(releaseArtifactStatus, releaseArtifactRows);
workflowDoc.body.append(releaseArtifactNode);
const releaseArtifactDomReadinessReady = workflowApi.getWorkflowOverviewReleaseReadinessArtifactDomReadiness();
const releaseArtifactRenderResult = workflowApi.renderWorkflowOverviewReleaseReadinessArtifactState(
releaseArtifactRenderState,
);
const releaseArtifactMountResult = workflowApi.mountWorkflowOverviewReleaseReadinessArtifactState({
renderState: releaseArtifactRenderState,
});
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(releaseArtifactMountResult.ready, true, "workflow overview release artifact mount readiness");
assertEqual(releaseArtifactMountResult.renderResult.rowCount, 3, "workflow overview release artifact mount rows");
assertEqual(releaseArtifactStatus.textContent, releaseArtifactRenderState.statusLine, "workflow overview release artifact rendered status");
assertEqual(
workflowDoc.querySelector("[data-handoff-workflow]").dataset.handoffScope,
"workflow",

View File

@@ -35,6 +35,8 @@ for (const phrase of [
"parseProjectReleaseReadinessArtifactJson()",
"createProjectReleaseReadinessArtifactValidation()",
"validateWorkflowOverviewReleaseReadinessArtifactJson()",
"render-state",
"DOM readiness",
"createIniPanelShellApiSurfaceInventory()",
"createIniPanelShellSessionReadinessWorkflowReport()",
"workflow overview embedding mount DOM",

View File

@@ -22,6 +22,10 @@ import {
createIniPanelShellWorkflowOverviewContract,
createIniPanelShellWorkflowOverviewEmbeddingMountDomContract,
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createLinuxCncIniSdk,
createLinuxCncInterpSdk,
createMachineSessionSnapshotPayload,
@@ -50,12 +54,14 @@ import {
machineFilePaths,
machineIniPath,
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
normalizeOpfsPath,
parameterFilePath,
planIniFileContextStaging,
planSimConfigStaging,
readMachineSessionReadiness,
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
restoreMachineParametersFromOpfs,
saveMachineSessionSnapshot,
saveMachineTextFiles,
@@ -141,14 +147,38 @@ const requiredExports = [
"createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness",
createIniPanelShellWorkflowOverviewEmbeddingMountDomReadiness,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
],
[
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness",
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
],
[
"renderIniPanelShellWorkflowOverviewEmbeddingMountState",
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
],
[
"renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState",
renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
],
[
"mountIniPanelShellWorkflowOverviewEmbeddingMountState",
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
],
[
"mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState",
mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
],
];
for (const [name, value] of requiredExports) {
@@ -250,6 +280,19 @@ assert.equal(
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify(releaseReadinessArtifact)).ready,
true,
);
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson(JSON.stringify(releaseReadinessArtifact)),
),
).dataset.handoffScope,
"workflow-overview-release-readiness-artifact",
);
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract().selectors.rows,
"[data-workflow-overview-release-readiness-artifact-rows]",
);
assert.equal(createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness().ready, false);
assert.equal(
createProjectReleaseReadinessReport({
observedOutputs: ["project_release_gate=ok"],

View File

@@ -54,6 +54,12 @@ import {
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
renderIniPanelShellSessionHandoffMountState,
@@ -156,6 +162,12 @@ const requiredShellExports = [
"renderIniPanelShellWorkflowOverviewEmbeddingMountState",
"mountIniPanelShellWorkflowOverviewEmbeddingMountState",
"validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract",
"createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness",
"renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState",
"mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState",
"renderIniPanelShellSessionHandoffWorkflowState",
"mountIniPanelShellSessionHandoffWorkflow",
"renderIniPanelShellSessionHandoffMountState",

View File

@@ -52,6 +52,12 @@ import {
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
createIniPanelShellSessionHandoffPackageReport,
@@ -782,6 +788,12 @@ assert.deepEqual(createIniPanelShellWorkflowOverviewContract(), {
"getWorkflowOverviewApiSurfaceInventory",
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
"getWorkflowOverviewReleaseReadinessArtifactDomReadiness",
"renderWorkflowOverviewReleaseReadinessArtifactState",
"mountWorkflowOverviewReleaseReadinessArtifactState",
"getWorkflowOverviewDomContract",
"getWorkflowOverviewDomReadiness",
"renderWorkflowOverview",
@@ -820,6 +832,12 @@ assert.equal(typeof createIniPanelShellWorkflowOverviewEmbeddingMountDomReadines
assert.equal(typeof renderIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
assert.equal(typeof mountIniPanelShellWorkflowOverviewEmbeddingMountState, "function");
assert.equal(typeof validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract, "function");
assert.equal(typeof createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness, "function");
assert.equal(typeof renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState, "function");
assert.equal(typeof mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState, "function");
assert.equal(
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{}").apiName,
"ini-panel-shell-workflow-overview-release-readiness-artifact-validation",
@@ -837,6 +855,12 @@ assert.deepEqual(
"getWorkflowOverviewSummary",
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
"getWorkflowOverviewReleaseReadinessArtifactDomReadiness",
"renderWorkflowOverviewReleaseReadinessArtifactState",
"mountWorkflowOverviewReleaseReadinessArtifactState",
"getWorkflowOverviewDomContract",
"getWorkflowOverviewDomReadiness",
"renderWorkflowOverview",

View File

@@ -52,6 +52,12 @@ import {
renderIniPanelShellWorkflowOverviewEmbeddingMountState,
mountIniPanelShellWorkflowOverviewEmbeddingMountState,
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
renderIniPanelShellSessionHandoffWorkflowState,
mountIniPanelShellSessionHandoffWorkflow,
renderIniPanelShellSessionHandoffMountState,
@@ -676,6 +682,12 @@ assert.deepEqual(shellViewModel.shellWorkflowOverviewContract, {
"getWorkflowOverviewApiSurfaceInventory",
"getWorkflowOverviewPersistenceSummary",
"validateWorkflowOverviewReleaseReadinessArtifactJson",
"getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel",
"getWorkflowOverviewReleaseReadinessArtifactRenderState",
"getWorkflowOverviewReleaseReadinessArtifactDomContract",
"getWorkflowOverviewReleaseReadinessArtifactDomReadiness",
"renderWorkflowOverviewReleaseReadinessArtifactState",
"mountWorkflowOverviewReleaseReadinessArtifactState",
"getWorkflowOverviewDomContract",
"getWorkflowOverviewDomReadiness",
"renderWorkflowOverview",
@@ -1313,6 +1325,56 @@ assert.equal(
assert.equal(releaseArtifactValidation.ready, true);
assert.equal(releaseArtifactValidation.validation.ready, true);
assert.equal(releaseArtifactValidation.gateCount, 9);
const releaseArtifactDisplay = createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDisplayViewModel(
releaseArtifactValidation,
);
const releaseArtifactRenderState = createIniPanelShellWorkflowOverviewReleaseReadinessArtifactRenderState(
releaseArtifactDisplay,
);
assert.equal(releaseArtifactDisplay.statusText, "Ready");
assert.equal(releaseArtifactRenderState.statusLine, "Ready: No blocking reasons");
assert.equal(releaseArtifactRenderState.dataset.handoffScope, "workflow-overview-release-readiness-artifact");
assert.equal(
createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract().selectors.mount,
"[data-workflow-overview-release-readiness-artifact]",
);
assert.equal(createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness().ready, false);
const releaseArtifactMountNode = mountDocument.createElement("section");
releaseArtifactMountNode.dataset.workflowOverviewReleaseReadinessArtifact = "";
const releaseArtifactStatusNode = mountDocument.createElement("p");
releaseArtifactStatusNode.dataset.workflowOverviewReleaseReadinessArtifactStatus = "";
const releaseArtifactRowsNode = {
...mountDocument.createElement("dl"),
children: [],
replaceChildren() {
this.children = [];
},
append(...nodes) {
this.children.push(...nodes);
},
};
releaseArtifactRowsNode.dataset.workflowOverviewReleaseReadinessArtifactRows = "";
const releaseArtifactRenderResult = renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState(
releaseArtifactRenderState,
{
documentRef: mountDocument,
mountNode: releaseArtifactMountNode,
statusNode: releaseArtifactStatusNode,
rowsNode: releaseArtifactRowsNode,
},
);
const releaseArtifactMountResult = mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState({
renderState: releaseArtifactRenderState,
documentRef: mountDocument,
mountNode: releaseArtifactMountNode,
statusNode: releaseArtifactStatusNode,
rowsNode: releaseArtifactRowsNode,
});
assert.equal(releaseArtifactRenderResult.rendered, true);
assert.equal(releaseArtifactRenderResult.rowCount, 3);
assert.equal(releaseArtifactRenderResult.dataset.handoffScope, "workflow-overview-release-readiness-artifact");
assert.equal(releaseArtifactMountResult.ready, true);
assert.equal(releaseArtifactMountResult.renderResult.rowCount, 3);
assert.deepEqual(
validateIniPanelShellWorkflowOverviewReleaseReadinessArtifactJson("{").missing,
["artifact-json"],
@@ -1333,6 +1395,12 @@ const workflowOverviewApi = {
getWorkflowOverviewApiSurfaceInventory: () => shellViewModel.shellApiSurfaceInventory,
getWorkflowOverviewPersistenceSummary: () => shellViewModel.shellPersistenceSummary,
validateWorkflowOverviewReleaseReadinessArtifactJson: () => ({ ready: true }),
getWorkflowOverviewReleaseReadinessArtifactDisplayViewModel: () => releaseArtifactDisplay,
getWorkflowOverviewReleaseReadinessArtifactRenderState: () => releaseArtifactRenderState,
getWorkflowOverviewReleaseReadinessArtifactDomContract: createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomContract,
getWorkflowOverviewReleaseReadinessArtifactDomReadiness: createIniPanelShellWorkflowOverviewReleaseReadinessArtifactDomReadiness,
renderWorkflowOverviewReleaseReadinessArtifactState: renderIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
mountWorkflowOverviewReleaseReadinessArtifactState: mountIniPanelShellWorkflowOverviewReleaseReadinessArtifactState,
getWorkflowOverviewDomContract: createIniPanelShellSessionHandoffWorkflowDomContract,
getWorkflowOverviewDomReadiness: createIniPanelShellSessionHandoffWorkflowDomReadiness,
renderWorkflowOverview: renderIniPanelShellSessionHandoffWorkflowState,